diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 12bb3ab6097b..c5e57df7794c 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -81,6 +81,7 @@ add: new lavaland elite mob - **bugfix:** если Вы исправили некий баг - **code_imp:** если имплементируете новое для билда, не меняя при этом ничего в самой игре. - **config:** если меняете перестановку конфигов или меняете работу SQL. (По этому поводу обращаться стоит с хосту) +- **map** если вы меняете только карту - **imageadd:** если просто поменяли спрайты, без затрагивания кода - **soundadd:** если просто добавили новые звуки, без затрагивания кода - **spellcheck:** если исправляете грамматику в коде. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 08bf2fefc9f2..c572710e85aa 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -3,17 +3,19 @@ ## Описание - + -## Ссылка на предложение/Причина создания ПР +## Причина создания ПР / Почему это хорошо для игры - - + + + + ## Демонстрация изменений - + ## Тесты - + diff --git a/.github/assets/60-percent-of-the-time-works-every-time.svg b/.github/assets/60-percent-of-the-time-works-every-time.svg new file mode 100644 index 000000000000..6a81f0368179 --- /dev/null +++ b/.github/assets/60-percent-of-the-time-works-every-time.svg @@ -0,0 +1,37 @@ + + 60-percent-of-the-time-works-every-time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.github/assets/fuck-it-ship-it.svg b/.github/assets/fuck-it-ship-it.svg new file mode 100644 index 000000000000..97baa31cd3f4 --- /dev/null +++ b/.github/assets/fuck-it-ship-it.svg @@ -0,0 +1,23 @@ + + fuck-it-ship-it + + + + + + + + + + + + + + + + + + + + + diff --git a/.github/assets/made-in-byond.gif b/.github/assets/made-in-byond.gif new file mode 100644 index 000000000000..aed1b7ca243c Binary files /dev/null and b/.github/assets/made-in-byond.gif differ diff --git a/.github/assets/ss1984.gif b/.github/assets/ss1984.gif new file mode 100644 index 000000000000..dd798025214b Binary files /dev/null and b/.github/assets/ss1984.gif differ diff --git a/.github/workflows/testmerge.yml b/.github/workflows/testmerge.yml index ecc9206c8517..177bc370ab02 100644 --- a/.github/workflows/testmerge.yml +++ b/.github/workflows/testmerge.yml @@ -150,6 +150,15 @@ jobs: git commit -m "Automatic changelog generation" fi + # Generate TGUI bundle + ./tgui/bin/tgui + CHANGES=$(git diff --name-only --cached | wc -l) + if [ "$CHANGES" -gt 0 ] ; then + git config --local user.email "action@github.com" + git config --local user.name "TGUI bundle Generation" + git commit -m "Testmerge TGUI bundle build generation" + fi + git push -f origin ${{ env.TESTMERGE_BRANCH }} # Output the list of merged PRs diff --git a/.gitignore b/.gitignore index 2de803a5dca8..0a0cedc01072 100644 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,5 @@ stddef.dm #Ignore cached sound files. /sound/tts_cache/**/* /sound/tts_scrambled/**/* +.vscode/launch.json +.gitignore diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 000000000000..3289ddee14e1 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Используйте IntelliSense, чтобы узнать о возможных атрибутах. + // Наведите указатель мыши, чтобы просмотреть описания существующих атрибутов. + // Для получения дополнительной информации посетите: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "byond", + "request": "launch", + "name": "Launch DreamSeeker", + "preLaunchTask": "dm: build - ${command:CurrentDME}", + "dmb": "${workspaceFolder}/${command:CurrentDMB}" + } + ] +} diff --git a/README.md b/README.md index e8d0c9e5fead..94972af00c45 100644 --- a/README.md +++ b/README.md @@ -1,55 +1,79 @@ -# Paradise -[![CI](https://github.com/ss220-space/Paradise/workflows/CI/badge.svg)](https://github.com/ParadiseSS13/Paradise/actions?query=workflow%3ACI) -[![Render Nanomaps](https://github.com/ss220-space/Paradise/workflows/Render%20Nanomaps/badge.svg)](https://github.com/ParadiseSS13/Paradise/actions?query=workflow%3A%22Render+Nanomaps%22) -[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/ss220-space/paradise.svg)](http://isitmaintained.com/project/paradisess13/paradise "Average time to resolve an issue") -[![Percentage of issues still open](http://isitmaintained.com/badge/open/ss220-space/paradise.svg)](http://isitmaintained.com/project/paradisess13/paradise "Percentage of issues still open") +#

Буквально SS1984

+Буквально SS1984 -[![forthebadge](http://forthebadge.com/images/badges/60-percent-of-the-time-works-every-time.svg)](http://forthebadge.com) -[![forthebadge](http://forthebadge.com/images/badges/contains-technical-debt.svg)](http://forthebadge.com) -[![forthebadge](http://forthebadge.com/images/badges/fuck-it-ship-it.svg)](http://forthebadge.com) +

+ CI + Render Nanomaps +

-# Ссылки -- [Website](https://ss220.space/) +

+ 60% Works + Made in BYOND + Fuck it, Ship it +

+ +# Ссылки SS1984 + +- [Вебсайт](https://ss220.space/) - [Discord](https://discord.ss220.space) -# Original useful Links +# Апстрим проект Paradise -- [Website](https://www.paradisestation.org/) -- [Discord](https://discordapp.com/invite/YJDsXFE) -- [Documentation](https://codedocs.paradisestation.org) +- [Github](https://github.com/ParadiseSS13/Paradise) +- [Вебсайт](https://www.paradisestation.org/) +- [Документация](https://devdocs.paradisestation.org) -# Useful Documents +# Полезная документация (Устарело) - [Installation Guide](.github/DOWNLOADING.md) - [Contribution Guide](.github/CONTRIBUTING.md) - [Autodocumentation Guide](.github/AUTODOC_GUIDE.md) ---- +> [!TIP] +> Больше всего информации находиться у нас в Discord сервере в закрытых каналах
+> Для получения доступа, обратитесь к каналу [#информация](https://discord.com/channels/617003227182792704/628271712097665025). Там указаны какие есть роли, что они дают и как их получить.
+> Альтернативно, вы можете прочитать документарию апстрим Paradise [Getting Started Guide](https://devdocs.paradisestation.org/contributing/getting_started/) +--- ### LICENSE -Paradise is licensed under the GNU Affero General Public License version 3. -As of 5th January 2015 any new contributions are licensed under the AGPL as well, -if you wish to submit code under the GPL v3 then commits and files must be marked as such -in comments. If you wish to use our code in a closed source manner you may use anything -before commit 445615b8439bf606ff204a42c8e7b6b69d983255, -which is licensed under GPL v3. -The major change here is that if you host a server using any code licensed under AGPL you -are required to provide full source code for your servers users as well, -including addons and modifications you have made. - -See [this](https://www.gnu.org/licenses/why-affero-gpl.html) for more information. - -Any files located in the -`Paradise/goon`, -`Paradise/icons/goonstation`, or -`Paradise/sound/goonstation` -directories, or any subdirectories of mentioned directories are licensed under the -Creative Commons 3.0 BY-NC-SA license -(https://creativecommons.org/licenses/by-nc-sa/3.0) - -All other assets including icons and sound files are licensed under the -Creative Commons 3.0 BY-SA license (https://creativecommons.org/licenses/by-sa/3.0/), -unless otherwise indicated. +> [!CAUTION] +> If you wish to use our code in a closed source manner (i.e. not make it available to the public and/or those who connect to services you offer using this code) you must **only** use code prior to commit [1af3ddef2af85937251e24384c2173c4b6c3222b on 2015/01/05 22:04 GMT](https://github.com/ParadiseSS13/Paradise/commit/1af3ddef2af85937251e24384c2173c4b6c3222b), which is licenced under GPLv3. + +### Click each banner for further information + +--- + +
+AGPLv3 license + +>All code after and including commit [1af3ddef2af85937251e24384c2173c4b6c3222b on 2015/01/05 22:04 GMT](https://github.com/ParadiseSS13/Paradise/commit/1af3ddef2af85937251e24384c2173c4b6c3222b) is licensed under the [GNU Affero General Public License version 3](https://www.gnu.org/licenses/agpl-3.0.en.html) unless otherwise specified within the folder or file. +
+ +
+GPLv3 license + +>All code prior to commit [1af3ddef2af85937251e24384c2173c4b6c3222b on 2015/01/05 22:04 GMT](https://github.com/ParadiseSS13/Paradise/commit/1af3ddef2af85937251e24384c2173c4b6c3222b) is licensed under the [GPL General Public License version 3](https://www.gnu.org/licenses/gpl-3.0.en.html) +
+ +
+MIT license + +>Some files are licenced under the [MIT license](https://opensource.org/license/MIT), these files will clearly specify this licence at the head of each file. +
+ +
+Creative Commons 3.0 BY-NC-SA + +>Any files with the ancestor directories [`Paradise/icons/goonstation`](icons/goonstation) or [`Paradise/sound/goonstation`](sound/goonstation) are licensed under the [Creative Commons 3.0 BY-NC-SA license](https://creativecommons.org/licenses/by-nc-sa/3.0). +> +>Further files or folders may also fall under this licence, and any such instances will be specified within the folder or file. +
+ +
+Creative Commons 3.0 BY-SA + +>All other non-code assets, including icons and sound files, are licensed under the [Creative Commons 3.0 BY-SA license](https://creativecommons.org/licenses/by-sa/3.0/), unless otherwise specified within the folder or file. +
diff --git a/SQL/paradise_schema.sql b/SQL/paradise_schema.sql index e883090be14c..10d9514eabf7 100644 --- a/SQL/paradise_schema.sql +++ b/SQL/paradise_schema.sql @@ -652,3 +652,96 @@ CREATE TABLE `budget` PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; /*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `poll_question` +-- +DROP TABLE IF EXISTS `poll_question`; +CREATE TABLE IF NOT EXISTS `poll_question` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `polltype` enum('Single Option','Text Reply','Rating','Multiple Choice') NOT NULL, + `created_datetime` datetime NOT NULL, + `starttime` datetime NOT NULL, + `endtime` datetime NOT NULL, + `question` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `subtitle` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `adminonly` tinyint(1) unsigned NOT NULL, + `multiplechoiceoptions` int(2) DEFAULT NULL, + `createdby_ckey` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, + `dontshow` tinyint(1) unsigned NOT NULL, + `minimum_playtime` int(4) NOT NULL, + `allow_revoting` tinyint(1) unsigned NOT NULL, + `deleted` tinyint(1) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `idx_pquest_question_time_ckey` (`question`,`starttime`,`endtime`,`createdby_ckey`), + KEY `idx_pquest_time_deleted_id` (`starttime`,`endtime`, `deleted`, `id`), + KEY `idx_pquest_id_time_type_admin` (`id`,`starttime`,`endtime`,`polltype`,`adminonly`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Table structure for table `poll_option` +-- +DROP TABLE IF EXISTS `poll_option`; +CREATE TABLE IF NOT EXISTS `poll_option` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `pollid` int(11) NOT NULL, + `text` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `minval` int(3) DEFAULT NULL, + `maxval` int(3) DEFAULT NULL, + `descmin` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `descmid` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `descmax` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `default_percentage_calc` tinyint(1) unsigned NOT NULL DEFAULT '1', + `deleted` tinyint(1) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `idx_pop_pollid` (`pollid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Table structure for table `poll_textreply` +-- +DROP TABLE IF EXISTS `poll_textreply`; +CREATE TABLE IF NOT EXISTS `poll_textreply` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `datetime` datetime NOT NULL, + `pollid` int(11) NOT NULL, + `ckey` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, + `replytext` varchar(2048) COLLATE utf8mb4_unicode_ci NOT NULL, + `adminrank` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, + `deleted` tinyint(1) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `idx_ptext_pollid_ckey` (`pollid`,`ckey`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Table structure for table `poll_vote` +-- +DROP TABLE IF EXISTS `poll_vote`; +CREATE TABLE IF NOT EXISTS `poll_vote` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `datetime` datetime NOT NULL, + `pollid` int(11) NOT NULL, + `optionid` int(11) NOT NULL, + `ckey` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, + `adminrank` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, + `rating` int(2) DEFAULT NULL, + `deleted` tinyint(1) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `idx_pvote_pollid_ckey` (`pollid`,`ckey`), + KEY `idx_pvote_optionid_ckey` (`optionid`,`ckey`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +DELIMITER $$ +DROP PROCEDURE IF EXISTS `set_poll_deleted`; +CREATE PROCEDURE `set_poll_deleted`( + IN `poll_id` INT +) +SQL SECURITY INVOKER +BEGIN +UPDATE `poll_question` SET deleted = 1 WHERE id = poll_id; +UPDATE `poll_option` SET deleted = 1 WHERE pollid = poll_id; +UPDATE `poll_vote` SET deleted = 1 WHERE pollid = poll_id; +UPDATE `poll_textreply` SET deleted = 1 WHERE pollid = poll_id; +END +$$ +DELIMITER ; diff --git a/SQL/updates/33-34.sql b/SQL/updates/33-34.sql new file mode 100644 index 000000000000..596c1c7902a7 --- /dev/null +++ b/SQL/updates/33-34.sql @@ -0,0 +1,93 @@ +# Adds poll related. Poll question as body, options inside body, textreply and vote as player answers +-- +-- Table structure for table `poll_question` +-- +DROP TABLE IF EXISTS `poll_question`; +CREATE TABLE IF NOT EXISTS `poll_question` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `polltype` enum('Single Option','Text Reply','Rating','Multiple Choice') NOT NULL, + `created_datetime` datetime NOT NULL, + `starttime` datetime NOT NULL, + `endtime` datetime NOT NULL, + `question` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `subtitle` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `adminonly` tinyint(1) unsigned NOT NULL, + `multiplechoiceoptions` int(2) DEFAULT NULL, + `createdby_ckey` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, + `dontshow` tinyint(1) unsigned NOT NULL, + `minimum_playtime` int(4) NOT NULL, + `allow_revoting` tinyint(1) unsigned NOT NULL, + `deleted` tinyint(1) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `idx_pquest_question_time_ckey` (`question`,`starttime`,`endtime`,`createdby_ckey`), + KEY `idx_pquest_time_deleted_id` (`starttime`,`endtime`, `deleted`, `id`), + KEY `idx_pquest_id_time_type_admin` (`id`,`starttime`,`endtime`,`polltype`,`adminonly`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Table structure for table `poll_option` +-- +DROP TABLE IF EXISTS `poll_option`; +CREATE TABLE IF NOT EXISTS `poll_option` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `pollid` int(11) NOT NULL, + `text` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `minval` int(3) DEFAULT NULL, + `maxval` int(3) DEFAULT NULL, + `descmin` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `descmid` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `descmax` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `default_percentage_calc` tinyint(1) unsigned NOT NULL DEFAULT '1', + `deleted` tinyint(1) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `idx_pop_pollid` (`pollid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Table structure for table `poll_textreply` +-- +DROP TABLE IF EXISTS `poll_textreply`; +CREATE TABLE IF NOT EXISTS `poll_textreply` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `datetime` datetime NOT NULL, + `pollid` int(11) NOT NULL, + `ckey` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, + `replytext` varchar(2048) COLLATE utf8mb4_unicode_ci NOT NULL, + `adminrank` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, + `deleted` tinyint(1) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `idx_ptext_pollid_ckey` (`pollid`,`ckey`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Table structure for table `poll_vote` +-- +DROP TABLE IF EXISTS `poll_vote`; +CREATE TABLE IF NOT EXISTS `poll_vote` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `datetime` datetime NOT NULL, + `pollid` int(11) NOT NULL, + `optionid` int(11) NOT NULL, + `ckey` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, + `adminrank` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, + `rating` int(2) DEFAULT NULL, + `deleted` tinyint(1) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `idx_pvote_pollid_ckey` (`pollid`,`ckey`), + KEY `idx_pvote_optionid_ckey` (`optionid`,`ckey`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +DELIMITER $$ +DROP PROCEDURE IF EXISTS `set_poll_deleted`; +CREATE PROCEDURE `set_poll_deleted`( + IN `poll_id` INT +) +SQL SECURITY INVOKER +BEGIN +UPDATE `poll_question` SET deleted = 1 WHERE id = poll_id; +UPDATE `poll_option` SET deleted = 1 WHERE pollid = poll_id; +UPDATE `poll_vote` SET deleted = 1 WHERE pollid = poll_id; +UPDATE `poll_textreply` SET deleted = 1 WHERE pollid = poll_id; +END +$$ +DELIMITER ; diff --git a/_build_dependencies.sh b/_build_dependencies.sh index a1292ad3e186..194d7f5c50b4 100644 --- a/_build_dependencies.sh +++ b/_build_dependencies.sh @@ -8,9 +8,9 @@ export STABLE_BYOND_MAJOR=515 # Stable Byond Minor export STABLE_BYOND_MINOR=1642 # Beta Byond Major -export BETA_BYOND_MAJOR=515 +export BETA_BYOND_MAJOR=516 # Beta Byond Minor -export BETA_BYOND_MINOR=1642 +export BETA_BYOND_MINOR=1648 # For the RUSTG library. Not actually installed by CI but kept as a reference export RUSTG_VERSION=3.3.0-ss220 #For DMJIT librarry diff --git a/_maps/__MAP_DEFINES.dm b/_maps/__MAP_DEFINES.dm index 416d116e3796..1a5a8132f238 100644 --- a/_maps/__MAP_DEFINES.dm +++ b/_maps/__MAP_DEFINES.dm @@ -31,6 +31,8 @@ #define SPAWN_RUINS "Spawn Ruins" // Ghost role Taipan z-level. #define TAIPAN "RaMSS Taipan" + // Reserved z-level used only by shuttles + #define RESERVED_LEVEL "Transit/Reserved" // Level names #define CENTCOMM "CentComm" @@ -41,9 +43,13 @@ #define EMPTY_AREA "Empty Area" #define AWAY_MISSION "Away Mission" #define RAMSS_TAIPAN "RAMSS Taipan" + #define RESERVED_ZONE "Transit/Reserved" /* -2024-01-14, the typical z-levels for a single-level station are: +You can change orders for z-level(from 3 to last cause centcom and admin are compiled right into) and everything shouldn't break +If something breaks due to z order change, it means it's hardcoded and then it means someone fucked up in coding. + +2024-06-18, the typical z-levels for a single-level station are: 1: CentCom 2: Admin Zone 3: Station @@ -51,6 +57,7 @@ 5: Taipan 6: Away mission 7-11: Randomized space +last: Transit */ // Whether this z level is linked up/down. Bool. @@ -81,3 +88,6 @@ #define PLACE_LAVA_RUIN "lavaland" #define MAX_RUIN_SIZE_VALUE 170 // Which ruin should be considered large and create a separate level of space for it. + +//Reserved/Transit turf type +#define RESERVED_TURF_TYPE /turf/space diff --git a/_maps/map_files/Delta/Lavaland.dmm b/_maps/map_files/Delta/Lavaland.dmm index 4a4b3b477510..be9110b37f9c 100644 --- a/_maps/map_files/Delta/Lavaland.dmm +++ b/_maps/map_files/Delta/Lavaland.dmm @@ -5280,6 +5280,10 @@ }, /turf/simulated/floor/plasteel, /area/mine/laborcamp) +"Ea" = ( +/obj/ash_walker_landmark, +/turf/template_noop, +/area/lavaland/surface/outdoors/necropolis) "Ef" = ( /obj/structure/stone_tile/block{ dir = 1 @@ -60973,9 +60977,9 @@ Ct Ct Ct aj -ab aj -ab +aj +aj ab ab ab @@ -62262,7 +62266,7 @@ aj aj aj aj -aj +ab ab ab ab @@ -63034,7 +63038,7 @@ aj aj aj aj -ab +aj ab ab Vh @@ -63276,13 +63280,14 @@ RD Ct Ct Ct -Ct -Ct -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Zx +Zx +Zx +Zx +aj aj aj aj @@ -63291,7 +63296,6 @@ aj aj aj aj -ab ab ab Vh @@ -63533,13 +63537,15 @@ RD Ct Ct Ct -Ct -Ct -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Zx +Zx +Zx +Zx +aj +aj aj aj aj @@ -63548,8 +63554,6 @@ aj aj aj aj -ab -ab ab Vh Vh @@ -63790,13 +63794,15 @@ jK gU Ct Ct -Ct -Ct -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Zx +Zx +Zx +Zx +aj +aj aj aj aj @@ -63805,8 +63811,6 @@ aj aj aj aj -ab -ab ab Vh Vh @@ -64047,13 +64051,15 @@ jK jK jK Ct -Ct -Ct -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Ea +Zx +Zx +Zx +aj +aj aj aj aj @@ -64062,8 +64068,6 @@ aj aj aj aj -ab -ab ab Vh Vh @@ -64304,13 +64308,15 @@ jK jK jK jK -jK -Ct -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Zx +Zx +Zx +Zx +aj +aj aj aj aj @@ -64319,8 +64325,6 @@ aj aj aj aj -ab -ab ab Vh Vh @@ -64561,13 +64565,15 @@ jK jK jK jK -jK -jK -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Zx +Zx +Zx +Zx +aj +aj aj aj aj @@ -64576,8 +64582,6 @@ aj aj aj aj -ab -ab ab Vh Vh @@ -64818,13 +64822,14 @@ jK jK jK jK -jK -jK -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Zx +Zx +Zx +Zx +aj aj aj aj @@ -64833,7 +64838,6 @@ aj aj aj aj -ab ab ab Vh @@ -65603,7 +65607,7 @@ aj aj aj aj -aj +ab ab ab ab @@ -66111,10 +66115,10 @@ Ct Ct Ct Ct -Ct +zW +aj aj aj -ab ab ab Vh diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm index 7888e455df4f..fb568ed4401f 100644 --- a/_maps/map_files/Delta/delta.dmm +++ b/_maps/map_files/Delta/delta.dmm @@ -18,7 +18,9 @@ /area/space) "aaf" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, @@ -143,14 +145,19 @@ /turf/space, /area/space) "aar" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/carpet/green, -/area/crew_quarters/mrchangs) +/obj/machinery/door/window/westright{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5 + }, +/area/maintenance/trading) "aas" = ( /obj/docking_port/stationary{ dir = 2; @@ -462,6 +469,28 @@ /obj/effect/decal/remains/human, /turf/simulated/floor/engine, /area/toxins/sm_test_chamber) +"aeg" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/vending/cigarette, +/obj/item/clothing/gloves/color/yellow, +/obj/structure/safe/floor, +/obj/item/crowbar/red{ + desc = "..."; + force = 20; + name = "Легендарная монтировка" + }, +/obj/item/weaponcrafting/revolverbarrel/steel, +/obj/item/stack/sheet/cardboard{ + amount = 20 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "aeG" = ( /obj/machinery/door/airlock/external{ frequency = 1379; @@ -584,6 +613,23 @@ icon_state = "darkbluecorners" }, /area/bridge) +"agb" = ( +/obj/item/ai_module/protect_station{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/ai_module/nanotrasen{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/structure/table/glass, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) "agp" = ( /turf/simulated/wall/r_wall, /area/hallway/secondary/entry/westarrival) @@ -895,20 +941,6 @@ icon_state = "brown" }, /area/quartermaster/delivery) -"ajG" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/decal/warning_stripes/east, -/turf/simulated/floor/plating/airless, -/area/space) "ajM" = ( /obj/structure/spacepoddoor{ luminosity = 3 @@ -1204,13 +1236,6 @@ /obj/machinery/disposal, /turf/simulated/floor/plasteel, /area/engineering/mechanic_workshop/expedition) -"amL" = ( -/obj/structure/computerframe, -/obj/structure/sign/poster/contraband/random{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel/grimy, -/area/civilian/vacantoffice) "amN" = ( /obj/structure/cable{ icon_state = "1-2" @@ -1302,6 +1327,7 @@ }, /obj/structure/closet/emcloset, /obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/station_map/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whitepurple" @@ -1373,21 +1399,12 @@ }, /turf/simulated/wall/r_wall, /area/engineering/mechanic_workshop/expedition) -"aoe" = ( -/obj/structure/chair/office/dark{ - dir = 8 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/trading) "aof" = ( /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkbluecorners" }, -/area/construction/hallway) +/area/aisat/aihallway) "aon" = ( /obj/structure/table/wood, /obj/machinery/fishtank/bowl{ @@ -1470,6 +1487,19 @@ }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"apg" = ( +/obj/machinery/camera{ + c_tag = "Research Central Hallway"; + network = list("Research","SS13") + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/research/nhallway) "aph" = ( /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel, @@ -1590,12 +1620,11 @@ /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/eastarrival) "apJ" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/structure/extinguisher_cabinet{ - pixel_x = 28 - }, -/obj/machinery/light, -/turf/simulated/floor/wood, +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen, +/obj/item/book/random, +/turf/simulated/floor/plasteel/grimy, /area/civilian/vacantoffice) "apM" = ( /obj/effect/decal/cleanable/dirt, @@ -1660,12 +1689,6 @@ /obj/structure/girder, /turf/simulated/floor/plating, /area/maintenance/fore) -"aqe" = ( -/obj/effect/landmark/start/trainee_engineer, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/engineering/engine) "aqf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -1697,6 +1720,16 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/kitchen) +"aqk" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/decal/warning_stripes/east, +/turf/simulated/floor/plating/airless, +/area/space) "aqq" = ( /obj/structure/rack, /obj/item/clothing/shoes/magboots{ @@ -2793,6 +2826,27 @@ icon_state = "purplecorner" }, /area/hallway/primary/aft) +"aze" = ( +/obj/effect/turf_decal{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/obj/machinery/vending/wallmed{ + pixel_y = -30 + }, +/obj/machinery/disposal/deliveryChute{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "azf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -2924,23 +2978,14 @@ }, /area/hallway/secondary/entry/additional) "aAt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +/obj/effect/turf_decal/siding/wood, +/obj/effect/decal/cleanable/dust, +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/structure/cable{ - icon_state = "0-4" - }, +/obj/effect/landmark/event/xeno_spawn, /turf/simulated/floor/plating, /area/maintenance/banya) -"aAv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/remains/human, -/turf/simulated/floor/carpet/black, -/area/maintenance/casino) "aAw" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/cans/beer{ @@ -3060,19 +3105,6 @@ icon_state = "yellow" }, /area/engineering/mechanic_workshop) -"aBb" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "aBc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ @@ -3154,11 +3186,19 @@ }, /area/engineering/mechanic_workshop/hangar) "aBr" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 +/obj/machinery/door/airlock/maintenance, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/barricade/wooden, /turf/simulated/floor/plating, -/area/maintenance/trading) +/area/maintenance/fpmaint) "aBs" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3438,15 +3478,6 @@ icon_state = "redfull" }, /area/crew_quarters/kitchen) -"aDm" = ( -/obj/structure/chair/office/dark{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small, -/obj/effect/spawner/random_spawners/blood_5, -/turf/simulated/floor/wood/fancy/oak, -/area/maintenance/trading) "aDx" = ( /obj/structure/sign/vacuum{ pixel_x = -32 @@ -3581,14 +3612,10 @@ /turf/simulated/floor/plating, /area/maintenance/fore) "aEm" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/light/small, -/obj/item/restraints/handcuffs/cable/zipties/used, -/turf/simulated/floor/plating, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood, /area/maintenance/casino) "aEn" = ( /obj/structure/cable/yellow{ @@ -3605,8 +3632,8 @@ /turf/simulated/floor/plasteel, /area/engineering/controlroom) "aEo" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/disposalpipe/junction{ + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -3614,8 +3641,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/disposalpipe/junction{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -4048,9 +4075,12 @@ /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/eastarrival) "aHu" = ( -/obj/structure/table/wood/fancy/royalblack, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/carpet/black, +/obj/structure/chair/office/dark, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/carpet/red, /area/maintenance/casino) "aHw" = ( /obj/item/twohanded/required/kirbyplants, @@ -4086,11 +4116,12 @@ /area/crew_quarters/bar) "aHF" = ( /obj/effect/decal/cleanable/dust, -/obj/item/reagent_containers/food/snacks/oliviersalad, +/obj/machinery/light/small, /obj/structure/table/wood, -/turf/simulated/floor/wood/fancy/oak{ - icon_state = "fancy-wood-oak-broken4" +/obj/effect/mapping_helpers/table_flip{ + dir = 4 }, +/turf/simulated/floor/wood/fancy/oak, /area/maintenance/banya) "aHG" = ( /obj/structure/cable{ @@ -4270,13 +4301,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/brig) -"aJb" = ( -/obj/machinery/door/airlock/public/glass, -/obj/structure/barricade/wooden, -/turf/simulated/floor/plasteel{ - icon_state = "showroomfloor" - }, -/area/maintenance/banya) "aJg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -4451,8 +4475,17 @@ /area/hallway/secondary/entry/eastarrival) "aKe" = ( /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/glass/reinforced, -/area/maintenance/trading) +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-cherry" + }, +/area/crew_quarters/trading) "aKg" = ( /obj/structure/sign/securearea{ desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; @@ -5037,6 +5070,21 @@ /mob/living/simple_animal/cow/Betsy, /turf/simulated/floor/grass, /area/hydroponics) +"aNu" = ( +/obj/item/whetstone, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/grille/broken, +/obj/item/trash/raisins{ + pixel_x = 3; + pixel_y = 8 + }, +/obj/item/shard, +/obj/structure/curtain/black, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/commercial) "aNv" = ( /obj/structure/closet/body_bag, /obj/item/storage/pill_bottle/random_drug_bottle, @@ -5060,13 +5108,8 @@ }, /area/engineering/mechanic_workshop) "aNG" = ( -/obj/structure/chair/office/light{ - dir = 8 - }, -/obj/item/radio/intercom{ - pixel_y = -28 - }, -/turf/simulated/floor/wood, +/obj/structure/bookcase/random, +/turf/simulated/floor/plating, /area/civilian/vacantoffice) "aNI" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, @@ -5082,6 +5125,14 @@ }, /turf/simulated/floor/carpet, /area/hallway/secondary/entry/lounge) +"aNP" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/serviceyard) "aNS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -5214,12 +5265,6 @@ /obj/structure/lattice/catwalk, /turf/space, /area/solar/auxport) -"aOL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "aON" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -5309,12 +5354,6 @@ icon_state = "dark" }, /area/engineering/mechanic_workshop/hangar) -"aOY" = ( -/obj/machinery/door/airlock/maintenance{ - req_access = list(12) - }, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "aPd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -5333,6 +5372,10 @@ icon_state = "arrival" }, /area/hallway/secondary/entry/commercial) +"aPj" = ( +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "aPk" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -5425,36 +5468,6 @@ icon_state = "darkblue" }, /area/security/detectives_office) -"aPY" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/turf/simulated/floor/carpet/green, -/area/crew_quarters/mrchangs) -"aQb" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/simulated/floor/wood/fancy/oak{ - icon_state = "fancy-wood-oak-broken4" - }, -/area/maintenance/trading) "aQe" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment, @@ -5508,6 +5521,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, /area/maintenance/fore) +"aQv" = ( +/obj/machinery/door/airlock/public/glass, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plating, +/area/maintenance/banya) "aQx" = ( /obj/machinery/light{ dir = 8 @@ -5585,22 +5604,6 @@ /obj/machinery/atmospherics/meter, /turf/simulated/floor/plasteel, /area/atmos) -"aQR" = ( -/obj/structure/table/wood, -/obj/item/phone, -/obj/item/reagent_containers/food/drinks/cans/beer{ - pixel_x = -8; - pixel_y = 12 - }, -/obj/effect/spawner/lootdrop/maintenance/tripple, -/obj/structure/sign/poster/contraband/syndicate_recruitment{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkred" - }, -/area/hallway/secondary/entry/commercial) "aQS" = ( /obj/effect/decal/warning_stripes/north, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -5732,13 +5735,11 @@ /turf/simulated/floor/plating, /area/maintenance/fore) "aSh" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/carpet/blue, -/area/crew_quarters/trading) +/obj/structure/table/wood, +/obj/effect/decal/cleanable/cobweb2, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/commercial) "aSl" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -5949,30 +5950,11 @@ icon_state = "darkyellow" }, /area/engineering/mechanic_workshop/hangar) -"aTA" = ( -/obj/structure/closet, -/obj/item/crowbar/red{ - desc = "..."; - force = 20; - name = "Легендарная монтировка" - }, -/obj/item/clothing/gloves/color/yellow, -/obj/item/multitool, -/obj/item/clothing/glasses/welding, -/obj/item/storage/toolbox/electrical, -/turf/simulated/floor/wood/fancy/oak{ - icon_state = "fancy-wood-oak-broken7" - }, -/area/maintenance/trading) "aTB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-2" +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/turf/simulated/floor/plating, -/area/crew_quarters/trading) +/area/hallway/secondary/entry/commercial) "aTC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ @@ -6091,20 +6073,6 @@ icon_state = "freezerfloor" }, /area/crew_quarters/kitchen) -"aUv" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/wood/fancy/oak{ - icon_state = "fancy-wood-oak-broken5" - }, -/area/maintenance/trading) "aUx" = ( /obj/machinery/camera{ c_tag = "Fore Hallway South 2"; @@ -6410,17 +6378,6 @@ icon_state = "whitegreenfull" }, /area/medical/virology/lab) -"aWw" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Vacant Office" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plasteel, -/area/civilian/vacantoffice) "aWx" = ( /obj/structure/cable{ icon_state = "4-8" @@ -6620,36 +6577,16 @@ icon_state = "neutralfull" }, /area/hallway/secondary/entry/westarrival) -"aXC" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/carpet/green, -/area/crew_quarters/mrchangs) "aXF" = ( /turf/simulated/floor/wood, /area/crew_quarters/bar/atrium) -"aXI" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal, -/turf/simulated/floor/carpet/green, -/area/crew_quarters/mrchangs) "aXJ" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/machinery/newscaster{ - pixel_y = 30 - }, -/turf/simulated/floor/wood, -/area/civilian/vacantoffice) +/obj/item/clothing/gloves/color/yellow/fake, +/obj/structure/closet, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/carpet, +/area/maintenance/trading) "aXK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 @@ -7316,15 +7253,6 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central/north) -"bcd" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "bce" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -7346,18 +7274,6 @@ /obj/structure/falsewall, /turf/simulated/floor/plating, /area/maintenance/banya) -"bci" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/status_display{ - pixel_x = -32 - }, -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/crew_quarters/serviceyard) "bck" = ( /obj/effect/decal/warning_stripes/red, /obj/structure/closet/firecloset, @@ -7375,21 +7291,16 @@ }, /area/hallway/primary/fore) "bco" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - density = 1; - dir = 1; - icon_state = "closed"; - id_tag = "Traiders Windows"; - name = "Traiders Privacy Shutters"; - opacity = 1 +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/door/window/westright{ - dir = 2; - name = "Front Desk" +/obj/machinery/door/airlock/wood/glass{ + name = "Mr. Chang's" }, -/turf/simulated/floor/plating, -/area/crew_quarters/trading) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) "bct" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -7611,12 +7522,6 @@ /obj/structure/lattice/catwalk, /turf/space, /area/space) -"bev" = ( -/obj/machinery/newscaster{ - pixel_y = -30 - }, -/turf/simulated/floor/carpet, -/area/crew_quarters/serviceyard) "bew" = ( /obj/structure/chair/sofa/left{ dir = 4 @@ -7682,14 +7587,6 @@ icon_state = "purple" }, /area/janitor) -"bfc" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/maintenance/trading) "bfl" = ( /turf/simulated/floor/plating, /area/maintenance/consarea_virology) @@ -7727,14 +7624,9 @@ /turf/simulated/floor/shuttle, /area/shuttle/arrival/station) "bfQ" = ( -/obj/structure/sign/poster/contraband/random{ - pixel_x = -32 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/effect/decal/remains/mouse, -/turf/simulated/floor/plating, +/obj/structure/table/wood/fancy/royalblack, +/obj/item/storage/fancy/cigcase, +/turf/simulated/floor/carpet/red, /area/maintenance/casino) "bfU" = ( /obj/effect/decal/warning_stripes/yellow, @@ -8182,14 +8074,13 @@ /turf/simulated/floor/engine, /area/engineering/supermatter) "bhE" = ( -/obj/structure/toilet{ - dir = 8 - }, -/obj/item/bikehorn/rubberducky, -/turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 }, -/area/hallway/secondary/entry/commercial) +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) "bhF" = ( /obj/machinery/alarm{ dir = 1; @@ -8199,52 +8090,26 @@ /turf/simulated/floor/wood, /area/crew_quarters/bar/atrium) "bhJ" = ( -/obj/machinery/door/airlock/maintenance, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) +/obj/effect/spawner/random_spawners/wall_rusted_30, +/turf/simulated/wall, +/area/crew_quarters/trading) "bhM" = ( -/obj/machinery/door/airlock/maintenance{ - req_access = list(12) +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/structure/curtain/black, +/obj/machinery/door/window/westright{ + dir = 4 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-2" +/turf/simulated/floor/plasteel{ + dir = 5 }, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) +/area/maintenance/trading) "bhN" = ( /turf/simulated/floor/plasteel{ dir = 1; icon_state = "arrival" }, /area/hallway/secondary/entry) -"bhY" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/westright{ - dir = 2; - name = "Front Desk" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - density = 1; - dir = 1; - icon_state = "closed"; - id_tag = "Traiders Windows"; - name = "Traiders Privacy Shutters"; - opacity = 1 - }, -/turf/simulated/floor/plating, -/area/crew_quarters/trading) "bia" = ( /obj/structure/closet/wardrobe/miner, /obj/machinery/vending/wallmed{ @@ -8262,6 +8127,15 @@ icon_state = "dark" }, /area/engineering/mechanic_workshop/hangar) +"bic" = ( +/obj/machinery/door/airlock/wood/glass{ + name = "Mr. Chang's" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) "bie" = ( /obj/machinery/mineral/equipment_vendor, /obj/structure/sign/poster/official/dig{ @@ -8289,12 +8163,9 @@ }, /area/crew_quarters/bar) "biq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/random{ - pixel_y = 32 - }, +/obj/structure/falsewall, /turf/simulated/floor/plating, -/area/maintenance/fpmaint) +/area/maintenance/trading) "biv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -8307,12 +8178,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/kitchen) -"bix" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/wood, -/area/civilian/vacantoffice) "biC" = ( /obj/machinery/light/small{ dir = 8 @@ -8354,10 +8219,17 @@ }, /area/crew_quarters/hor) "biQ" = ( +/obj/structure/chair/office/light{ + dir = 4; + pixel_y = 3 + }, /obj/structure/cable{ - icon_state = "2-8" + icon_state = "1-2" }, -/turf/simulated/floor/wood, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plasteel/grimy, /area/civilian/vacantoffice) "biS" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ @@ -8367,8 +8239,19 @@ /turf/simulated/floor/engine, /area/engineering/supermatter) "biU" = ( -/obj/machinery/photocopier, -/turf/simulated/floor/wood, +/obj/machinery/computer/library/public, +/obj/structure/table/wood, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = 32 + }, +/obj/machinery/camera{ + c_tag = "Vacant Office"; + dir = 8 + }, +/turf/simulated/floor/plasteel/grimy, /area/civilian/vacantoffice) "biW" = ( /obj/effect/decal/warning_stripes/southwest, @@ -8521,6 +8404,12 @@ dir = 4 }, /obj/machinery/hologram/holopad, +/obj/machinery/power/apc{ + pixel_y = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, /turf/simulated/floor/plasteel{ icon_state = "arrival" }, @@ -8542,21 +8431,6 @@ /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel, /area/quartermaster/miningdock) -"bjF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -26 - }, -/turf/simulated/floor/plasteel{ - icon_state = "arrival" - }, -/area/hallway/secondary/entry/commercial) "bjH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -8569,6 +8443,12 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "arrival" }, @@ -8585,6 +8465,9 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, /turf/simulated/floor/plasteel{ icon_state = "arrival" }, @@ -8688,10 +8571,6 @@ icon_state = "caution" }, /area/maintenance/bar) -"bjW" = ( -/obj/effect/spawner/random_spawners/blood_5, -/turf/simulated/floor/plating, -/area/maintenance/casino) "bkf" = ( /obj/machinery/newscaster/security_unit{ pixel_x = -28 @@ -9016,11 +8895,6 @@ }, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/commercial) -"blZ" = ( -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/plasteel, -/area/security/permahallway) "bmb" = ( /obj/structure/cable{ icon_state = "4-8" @@ -9159,11 +9033,6 @@ /obj/effect/spawner/window/reinforced/plasma, /turf/simulated/floor/plating, /area/engineering/supermatter) -"bmX" = ( -/obj/effect/decal/cleanable/dust, -/obj/item/bikehorn/rubberducky, -/turf/simulated/floor/plating, -/area/maintenance/banya) "bmZ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -9212,18 +9081,19 @@ }, /area/hallway/secondary/entry) "bnk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/suit/hooded/wintercoat/medical, -/obj/item/clothing/suit/hooded/wintercoat/hydro, -/obj/item/clothing/suit/hooded/wintercoat/security, -/obj/item/clothing/suit/hooded/wintercoat/engineering, -/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos, -/obj/structure/closet/crate, -/obj/item/stack/spacecash/c100, -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-cherry" +/obj/item/twohanded/required/kirbyplants, +/obj/item/coin/iron, +/obj/item/paper{ + desc = "Paper attached to freezer"; + info = "Валере
Мы заметили что наш асистуха Олег, горит одной мыслёй. Выпивая рюмку бахуса, он бормочит что то про перестройку техов карго, говорит мол там скучно. По этому он понабрал материалов и инструментов, дабы перестраивать техтонели. Сообщаем это по той причине.. Однако причины нет, просто на всякий случай, вдруг понадобится Олег.



-Скопления Жаждущих Найти Идею."; + name = "Записка"; + pixel_y = -8 }, -/area/crew_quarters/trading) +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/hallway/secondary/entry/commercial) "bnm" = ( /obj/machinery/vending/coffee, /turf/simulated/floor/plasteel{ @@ -9388,32 +9258,25 @@ /turf/simulated/wall/r_wall, /area/engineering/supermatter) "boU" = ( -/obj/structure/table/wood/fancy/royalblack, -/obj/item/stack/spacechips/c5000, -/obj/item/trash/candle, -/turf/simulated/floor/carpet/black, -/area/maintenance/casino) -"bpf" = ( -/obj/machinery/light_switch{ - pixel_x = -24 - }, -/obj/structure/table/wood/fancy/green, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = -2; - pixel_y = 4 +/obj/structure/chair/office/dark{ + dir = 8 }, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_x = 2; - pixel_y = 6 +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/obj/item/kitchen/utensil/fork{ - pixel_x = 7 +/obj/structure/cable{ + icon_state = "2-4" }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 +/obj/item/pen, +/turf/simulated/floor/carpet/red, +/area/maintenance/casino) +"bpf" = ( +/obj/structure/flora/grass/jungle/b, +/obj/machinery/light/small{ + dir = 8 }, -/turf/simulated/floor/carpet/green, -/area/crew_quarters/mrchangs) +/turf/simulated/floor/grass, +/area/maintenance/fpmaint) "bpg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -9536,25 +9399,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint2) -"bpU" = ( -/obj/machinery/door/airlock/maintenance{ - req_access = list(12) - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/barricade/wooden, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) -"bpZ" = ( -/obj/item/flag/species/human{ - icon_state = "humanflag_rolled" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/crew_quarters/trading) "bqc" = ( /obj/structure/grille, /turf/space, @@ -9668,15 +9512,22 @@ /turf/simulated/floor/plasteel, /area/engineering/supermatter) "bqN" = ( +/obj/item/deck/cards/syndicate, /turf/simulated/floor/carpet/black, /area/maintenance/casino) "bqO" = ( -/obj/structure/railing{ - dir = 5 +/obj/effect/decal/cleanable/dust, +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "showroomfloor" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/oak{ + icon_state = "fancy-wood-oak-broken5" }, /area/maintenance/banya) "bri" = ( @@ -9860,17 +9711,6 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/serviceyard) -"bsb" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced, -/obj/structure/grille, -/turf/simulated/floor/plating, -/area/maintenance/trading) "bsd" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance/tripple, @@ -9878,18 +9718,9 @@ icon_state = "dark" }, /area/engineering/mechanic_workshop/hangar) -"bsi" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/turf/simulated/floor/plasteel/grimy, -/area/civilian/vacantoffice) "bsq" = ( -/turf/simulated/floor/wood, +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel/grimy, /area/civilian/vacantoffice) "bst" = ( /obj/machinery/camera{ @@ -9955,6 +9786,28 @@ icon_state = "yellowfull" }, /area/engineering/controlroom) +"bsz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 4; + icon_state = "grass_edge_medium" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "bsB" = ( /obj/structure/cable{ icon_state = "1-8" @@ -10037,6 +9890,20 @@ /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/plasteel, /area/storage/eva) +"bsS" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/machinery/flasher/portable, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/securearmory) "bsW" = ( /obj/structure/cable{ icon_state = "1-2" @@ -10092,8 +9959,20 @@ /turf/simulated/floor/plasteel, /area/atmos) "btk" = ( -/obj/structure/chair/comfy/black, -/turf/simulated/floor/plasteel/grimy, +/obj/structure/table/wood, +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 + }, +/obj/item/stack/tape_roll{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/stack/tape_roll, +/obj/item/stack/tape_roll{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/simulated/floor/wood, /area/civilian/vacantoffice) "btm" = ( /obj/structure/cable{ @@ -10273,20 +10152,12 @@ /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/serviceyard) "btQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, +/obj/item/stack/sheet/cardboard, /turf/simulated/floor/plating, -/area/maintenance/trading) +/area/maintenance/fpmaint) "btR" = ( /obj/machinery/status_display{ pixel_x = -32 @@ -10761,15 +10632,12 @@ }, /area/atmos) "bvV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/alarm{ - dir = 1; - pixel_y = -22 - }, -/obj/machinery/light/small, -/turf/simulated/floor/plasteel{ - icon_state = "showroomfloor" - }, +/obj/effect/decal/cleanable/dust, +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/clothing/mask/cigarette/syndicate, +/obj/item/trash/tastybread, +/turf/simulated/floor/wood/fancy/oak, /area/maintenance/banya) "bwc" = ( /obj/structure/chair/office/dark{ @@ -11031,23 +10899,20 @@ /turf/simulated/wall/r_wall, /area/storage/tech) "bxi" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Mr. Chang's"; - dir = 8 +/obj/machinery/door/airlock/maintenance, +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/wooden, +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/structure/table/wood/fancy/green, -/obj/item/paper/deltainfo, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/item/radio/intercom{ - pixel_x = 28 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/turf/simulated/floor/carpet/green, -/area/crew_quarters/mrchangs) +/turf/simulated/floor/plating, +/area/maintenance/trading) "bxj" = ( /obj/structure/cable{ icon_state = "2-8" @@ -11064,16 +10929,17 @@ /turf/simulated/floor/wood, /area/crew_quarters/serviceyard) "bxk" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/machinery/alarm{ - dir = 1; - pixel_y = -22 +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/structure/sign/poster/contraband/random{ - pixel_x = -32 +/obj/item/reagent_containers/glass/beaker{ + pixel_x = 19 }, -/turf/simulated/floor/wood, -/area/civilian/vacantoffice) +/obj/structure/disposalpipe/broken{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/trading) "bxn" = ( /obj/structure/table/reinforced, /obj/machinery/computer/security/telescreen/research{ @@ -11096,30 +10962,9 @@ icon_state = "darkpurple" }, /area/bridge) -"bxp" = ( -/obj/structure/table/reinforced, -/obj/item/folder/red, -/obj/machinery/door/window/brigdoor/northleft{ - locked = 1 - }, -/turf/simulated/floor/plating, -/area/maintenance/trading) "bxq" = ( /turf/simulated/floor/plasteel/grimy, /area/civilian/vacantoffice) -"bxr" = ( -/obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 7 - }, -/obj/item/pen, -/obj/item/pen{ - pixel_x = 4; - pixel_y = 4 - }, -/turf/simulated/floor/plasteel/grimy, -/area/civilian/vacantoffice) "bxs" = ( /obj/structure/cable{ icon_state = "1-2" @@ -11150,29 +10995,15 @@ /turf/simulated/floor/plasteel, /area/quartermaster/delivery) "bxx" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp, -/turf/simulated/floor/plasteel/grimy, -/area/civilian/vacantoffice) -"bxy" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/wood, -/area/civilian/vacantoffice) -"bxz" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/arcade, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" }, -/turf/simulated/floor/plasteel/grimy, -/area/civilian/vacantoffice) +/area/maintenance/trading) "bxB" = ( -/obj/structure/chair/comfy/black{ - dir = 1 - }, +/obj/machinery/papershredder, /turf/simulated/floor/plasteel/grimy, /area/civilian/vacantoffice) "bxD" = ( @@ -11189,18 +11020,14 @@ /area/quartermaster/storage) "bxE" = ( /obj/structure/table/wood, -/obj/item/toner{ - pixel_y = 6 - }, -/obj/item/toner{ - pixel_y = 4 +/obj/machinery/light{ + dir = 4 }, -/obj/item/toner{ - pixel_y = 2 +/obj/machinery/photocopier{ + pixel_y = 10 }, -/obj/item/toner, -/obj/item/toner{ - pixel_y = -2 +/obj/machinery/newscaster{ + pixel_x = 30 }, /turf/simulated/floor/plasteel/grimy, /area/civilian/vacantoffice) @@ -11496,6 +11323,21 @@ icon_state = "dark" }, /area/bridge) +"byX" = ( +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_x = 26 + }, +/obj/structure/filingcabinet/chestdrawer, +/obj/item/radio/intercom{ + pixel_x = 0; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whitepurple" + }, +/area/toxins/explab) "bzb" = ( /obj/machinery/door/airlock/medical{ autoclose = 0; @@ -11555,6 +11397,14 @@ icon_state = "dark" }, /area/atmos) +"bzj" = ( +/obj/effect/decal/warning_stripes/north, +/obj/machinery/flasher/portable, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/securearmory) "bzl" = ( /obj/structure/table/reinforced, /obj/item/wrench, @@ -11663,15 +11513,6 @@ }, /turf/simulated/floor/plasteel, /area/engineering/gravitygenerator) -"bzF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "bzG" = ( /obj/structure/cable{ icon_state = "1-4" @@ -11783,22 +11624,6 @@ icon_state = "neutralfull" }, /area/storage/tech) -"bAa" = ( -/obj/machinery/access_button{ - command = "cycle_exterior"; - frequency = 1379; - master_tag = "port5"; - name = "exterior access button"; - pixel_x = -24; - pixel_y = 4 - }, -/obj/machinery/door/airlock/external{ - frequency = 1379; - id_tag = "port5_outer"; - locked = 1 - }, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "bAe" = ( /obj/structure/cable{ icon_state = "1-2" @@ -11825,26 +11650,6 @@ icon_state = "neutral" }, /area/hallway/secondary/entry/lounge) -"bAn" = ( -/obj/machinery/computer/arcade, -/obj/effect/decal/cleanable/cobweb2, -/turf/simulated/floor/carpet, -/area/maintenance/casino) -"bAo" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/carpet/green, -/area/crew_quarters/mrchangs) "bAr" = ( /obj/machinery/embedded_controller/radio/airlock/access_controller{ frequency = 1449; @@ -12078,19 +11883,8 @@ }, /area/quartermaster/delivery) "bBf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "showroomfloor" - }, +/obj/effect/decal/cleanable/fungus, +/turf/simulated/wall, /area/maintenance/banya) "bBi" = ( /obj/structure/cable{ @@ -12149,6 +11943,18 @@ /obj/effect/decal/warning_stripes/southeast, /turf/simulated/floor/plasteel, /area/security/range) +"bBx" = ( +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/maintenance/trading) "bBy" = ( /obj/structure/cable{ icon_state = "1-4" @@ -12179,10 +11985,6 @@ icon_state = "yellow" }, /area/engineering/break_room) -"bBB" = ( -/obj/effect/spawner/random_spawners/blood_5, -/turf/simulated/floor/glass/reinforced, -/area/maintenance/trading) "bBC" = ( /obj/structure/closet/emcloset, /turf/simulated/floor/plating, @@ -12287,13 +12089,8 @@ /turf/simulated/floor/plating, /area/maintenance/disposal) "bBV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/spawner/random_spawners/blood_5, -/turf/simulated/floor/carpet, +/obj/effect/decal/cleanable/fungus, +/turf/simulated/wall, /area/maintenance/casino) "bCc" = ( /obj/effect/decal/cleanable/dirt, @@ -12387,27 +12184,6 @@ icon_state = "darkbluecorners" }, /area/bridge) -"bCm" = ( -/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - id_tag = "port5"; - pixel_x = 25; - pixel_y = -4; - tag_airpump = "port5_pump"; - tag_chamber_sensor = "port5_sensor"; - tag_exterior_door = "port5_outer"; - tag_interior_door = "port5_inner" - }, -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - frequency = 1379; - id_tag = "port5_pump" - }, -/obj/machinery/airlock_sensor{ - id_tag = "port5_sensor"; - pixel_x = 25; - pixel_y = 5 - }, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "bCn" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -12446,17 +12222,8 @@ }, /area/bridge) "bCv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet, -/obj/item/clothing/under/rank/security/formal, -/obj/item/clothing/under/rank/warden/formal, -/obj/item/clothing/under/rank/head_of_security/formal, -/obj/item/clothing/under/officeruniform, -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-cherry" - }, -/area/crew_quarters/trading) +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/commercial) "bCy" = ( /obj/effect/spawner/window/reinforced, /obj/structure/disposalpipe/segment, @@ -12470,31 +12237,18 @@ }, /turf/simulated/floor/plasteel, /area/security/processing) -"bCC" = ( -/obj/structure/table/reinforced, -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/suit/ghost_sheet, -/obj/item/paper/deltainfo, -/obj/machinery/light_construct, -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-cherry" - }, -/area/crew_quarters/trading) "bCI" = ( /obj/structure/grille, /obj/structure/lattice, /turf/space, /area/space) "bCJ" = ( -/obj/structure/table/reinforced, /obj/effect/decal/cleanable/dirt, -/obj/item/coin/iron, -/obj/machinery/alarm{ - dir = 1; - pixel_y = -22 +/obj/structure/table/reinforced, +/obj/structure/decorative_structures/flammable/grandfather_clock, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-cherry" }, -/obj/item/stack/spacecash, -/turf/simulated/floor/plating, /area/crew_quarters/trading) "bCK" = ( /obj/effect/decal/cleanable/dirt, @@ -12512,6 +12266,37 @@ }, /turf/simulated/floor/plating, /area/crew_quarters/theatre) +"bCM" = ( +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Magazines for SMG" + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/ammo_box/magazine/wt550m9, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "bCO" = ( /obj/machinery/firealarm{ dir = 4; @@ -12536,31 +12321,27 @@ icon_state = "neutralcorner" }, /area/hallway/primary/fore) -"bCU" = ( -/obj/structure/sign/vacuum{ - pixel_y = 32 - }, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "bCV" = ( /obj/structure/lattice, /obj/effect/spawner/random_spawners/fungus_70, /turf/simulated/wall, /area/maintenance/kitchen) "bDb" = ( -/obj/structure/table/reinforced, /obj/effect/decal/cleanable/dirt, -/obj/item/folder, -/obj/effect/spawner/lootdrop/officetoys, -/turf/simulated/floor/plating, +/obj/machinery/power/apc/worn_out{ + cell_type = 0; + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/item/flag/species/human, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-cherry" + }, /area/crew_quarters/trading) "bDd" = ( -/obj/structure/table/reinforced, -/obj/effect/decal/cleanable/dirt, -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 7 - }, /turf/simulated/floor/wood{ icon_state = "fancy-wood-cherry" }, @@ -12581,22 +12362,17 @@ }, /area/hydroponics) "bDg" = ( -/obj/item/target/syndicate, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkred" - }, -/area/hallway/secondary/entry/commercial) -"bDh" = ( -/obj/structure/sign/chinese{ - pixel_y = -32 +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/item/clothing/suit/jacket, +/obj/item/clothing/suit/pirate_brown, +/obj/item/clothing/suit/soldiercoat, +/obj/machinery/alarm{ + pixel_y = 22 }, -/turf/simulated/floor/carpet/green, -/area/crew_quarters/mrchangs) -"bDi" = ( -/obj/structure/bookcase, -/turf/simulated/floor/wood, -/area/civilian/vacantoffice) +/obj/item/clothing/under/rank/security/formal, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) "bDj" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -12737,7 +12513,7 @@ pixel_y = -26 }, /obj/structure/cable, -/turf/simulated/floor/wood, +/turf/simulated/floor/plasteel/grimy, /area/civilian/vacantoffice) "bDW" = ( /obj/structure/cable{ @@ -12841,7 +12617,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "bEr" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -13086,23 +12862,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/fore) -"bFw" = ( -/obj/machinery/access_button{ - command = "cycle_interior"; - frequency = 1379; - master_tag = "port5"; - name = "exterior access button"; - pixel_x = -24; - pixel_y = -4 - }, -/obj/machinery/door/airlock/external{ - frequency = 1379; - id_tag = "port5_inner"; - locked = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "bFy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ @@ -13301,21 +13060,6 @@ icon_state = "neutralfull" }, /area/quartermaster/qm) -"bGw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) -"bGy" = ( -/obj/structure/sign/poster/official/random{ - pixel_x = -32 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/wood, -/area/crew_quarters/serviceyard) "bGz" = ( /turf/simulated/wall/r_wall, /area/crew_quarters/chief) @@ -13399,25 +13143,6 @@ icon_state = "dark" }, /area/storage/tech) -"bGW" = ( -/obj/effect/decal/warning_stripes/southwestcorner, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/simulated/floor/engine, -/area/toxins/sm_test_chamber) "bGY" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -13447,12 +13172,6 @@ icon_state = "caution" }, /area/atmos) -"bHf" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/double, -/obj/effect/decal/cleanable/cobweb, -/turf/simulated/floor/plating, -/area/maintenance/trading) "bHj" = ( /turf/simulated/wall/r_wall, /area/bridge/meeting_room) @@ -13486,20 +13205,32 @@ }, /area/engineering/controlroom) "bHr" = ( -/obj/structure/chair/stool, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 +/obj/machinery/light/small{ + dir = 1 }, -/turf/simulated/floor/carpet, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/wood, /area/maintenance/casino) "bHu" = ( -/obj/structure/cable{ - icon_state = "1-8" +/obj/machinery/door_control{ + id = "Traiders Windows"; + name = "Traiders Privacy Shutters"; + pixel_x = -6; + pixel_y = -26 }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/glass/reinforced, -/area/maintenance/trading) +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/trading) "bHv" = ( /obj/structure/table/wood, /obj/item/storage/ashtray/glass{ @@ -13801,6 +13532,15 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/locker/locker_toilet) +"bJo" = ( +/obj/machinery/computer/aiupload/cyborg, +/obj/item/radio/intercom/private{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) "bJp" = ( /obj/machinery/computer/mech_bay_power_console, /turf/simulated/floor/plasteel{ @@ -13822,6 +13562,21 @@ icon_state = "blue" }, /area/bridge/checkpoint/north) +"bJx" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/lattice/catwalk, +/turf/space, +/area/space) "bJy" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -14020,6 +13775,16 @@ }, /turf/simulated/floor/plating, /area/maintenance/disposal) +"bKL" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/effect/decal/warning_stripes/northeast, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "bKN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -14058,17 +13823,11 @@ }, /area/storage/eva) "bLb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/sunnybush{ + pixel_y = 10 }, -/obj/effect/landmark/tiles/burnturf, -/turf/simulated/floor/plating, +/turf/simulated/floor/grass, /area/maintenance/casino) "bLc" = ( /obj/item/twohanded/required/kirbyplants, @@ -14181,6 +13940,11 @@ /obj/structure/grille, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"bLS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/fried_vox, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "bLT" = ( /obj/structure/cable{ icon_state = "0-4" @@ -14360,6 +14124,9 @@ /obj/machinery/computer/crew{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "blue" @@ -14370,6 +14137,15 @@ /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/engine, /area/engineering/controlroom) +"bME" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "bMG" = ( /obj/structure/bookcase, /obj/item/book/manual/sop_command, @@ -14390,13 +14166,6 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central/nw) -"bMJ" = ( -/obj/machinery/atmospherics/unary/portables_connector{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister/air, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "bMM" = ( /turf/simulated/floor/plasteel{ dir = 10; @@ -14410,19 +14179,6 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/captain/bedroom) -"bMP" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/glass/reinforced, -/area/maintenance/trading) "bMQ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -14481,22 +14237,6 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central/ne) -"bNd" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance, -/turf/simulated/floor/plating, -/area/maintenance/trading) "bNk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -14586,16 +14326,6 @@ icon_state = "caution" }, /area/maintenance/bar) -"bNK" = ( -/obj/machinery/alarm{ - dir = 4; - pixel_x = -22 - }, -/obj/structure/chair/wood{ - dir = 1 - }, -/turf/simulated/floor/carpet/green, -/area/crew_quarters/mrchangs) "bNL" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable, @@ -14620,7 +14350,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "bNS" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -14652,23 +14382,6 @@ }, /turf/simulated/floor/plating, /area/crew_quarters/chief) -"bOb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/extinguisher_cabinet{ - pixel_y = -28 - }, -/turf/simulated/floor/plasteel{ - icon_state = "arrival" - }, -/area/hallway/secondary/entry/commercial) "bOf" = ( /obj/structure/cable{ icon_state = "4-8" @@ -14818,16 +14531,6 @@ icon_state = "dark" }, /area/crew_quarters/bar) -"bOG" = ( -/obj/item/aiModule/reset, -/obj/structure/table/glass, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/ai_upload) "bOI" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -14861,9 +14564,12 @@ }, /area/engineering/controlroom) "bOP" = ( -/obj/structure/table/wood/fancy/royalblack, -/obj/item/deck/cards/syndicate, -/turf/simulated/floor/plating, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dust, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/carpet/red, /area/maintenance/casino) "bOQ" = ( /obj/structure/sign/poster/official/random{ @@ -15109,7 +14815,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "bPU" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 4 @@ -15148,15 +14854,26 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "bQd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "1-2" +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Magazines for SP-91-RC"; + req_access = list(1) }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 +/obj/item/ammo_box/magazine/sp91rc{ + pixel_x = 8 }, -/turf/simulated/floor/carpet, -/area/maintenance/casino) +/obj/item/ammo_box/magazine/sp91rc{ + pixel_x = 4 + }, +/obj/item/ammo_box/magazine/sp91rc, +/obj/item/ammo_box/magazine/sp91rc{ + pixel_x = -4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "bQe" = ( /obj/item/twohanded/required/kirbyplants, /obj/machinery/light_switch{ @@ -15275,11 +14992,6 @@ /obj/effect/decal/warning_stripes/east, /turf/simulated/floor/engine, /area/engineering/controlroom) -"bQx" = ( -/obj/structure/mopbucket/full, -/obj/item/mop, -/turf/simulated/floor/plating, -/area/maintenance/trading) "bQB" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/engine, @@ -15300,11 +15012,9 @@ }, /area/aisat) "bQE" = ( -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/wood/fancy/oak{ - icon_state = "fancy-wood-oak-broken5" - }, -/area/maintenance/trading) +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/trading) "bQF" = ( /obj/machinery/light/small, /turf/simulated/floor/engine, @@ -15361,14 +15071,6 @@ icon_state = "dark" }, /area/hydroponics) -"bQU" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger{ - pixel_x = 1; - pixel_y = 3 - }, -/turf/simulated/floor/plating, -/area/maintenance/trading) "bQW" = ( /obj/structure/cable{ icon_state = "4-8" @@ -15549,7 +15251,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "bRF" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/emitter{ @@ -15594,7 +15296,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "bRT" = ( /obj/structure/cable{ icon_state = "1-2" @@ -15725,6 +15427,13 @@ /obj/structure/plasticflaps, /turf/simulated/floor/plating, /area/hydroponics) +"bSy" = ( +/obj/effect/decal/warning_stripes/east, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel, +/area/engineering/controlroom) "bSA" = ( /obj/structure/sink{ pixel_y = 22 @@ -15756,11 +15465,17 @@ }, /area/quartermaster/miningdock) "bSI" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "4-8" }, -/turf/simulated/floor/plating, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood, /area/maintenance/casino) "bSJ" = ( /obj/machinery/light{ @@ -15777,13 +15492,6 @@ icon_state = "brown" }, /area/quartermaster/qm) -"bSM" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/obj/effect/landmark/event/blobstart, -/turf/simulated/floor/wood/fancy/oak, -/area/maintenance/trading) "bSN" = ( /obj/structure/table/wood, /obj/machinery/door/window{ @@ -15857,9 +15565,6 @@ }, /turf/simulated/floor/plating, /area/aisat/maintenance) -"bTv" = ( -/turf/simulated/floor/plating, -/area/maintenance/trading) "bTy" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -15884,25 +15589,16 @@ }, /area/turret_protected/aisat) "bTE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/shower{ - dir = 1; - layer = 5; - pixel_y = -5 - }, -/obj/effect/turf_decal/siding/wideplating/end{ +/obj/effect/decal/cleanable/dust, +/obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, -/obj/structure/curtain/open/shower{ - anchored = 1 - }, -/obj/effect/decal/remains/human, -/turf/simulated/floor/plasteel{ - icon_state = "Dark" +/obj/machinery/light_construct/small, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = 9; + pixel_y = 3 }, +/turf/simulated/floor/plating, /area/maintenance/banya) "bTG" = ( /obj/machinery/newscaster{ @@ -16003,6 +15699,13 @@ }, /turf/simulated/floor/wood/fancy/light, /area/ntrep) +"bUb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille/broken, +/obj/structure/rack, +/obj/item/trash/spacetwinkie, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "bUc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -16145,16 +15848,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/engineering) -"bUC" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/pie_smudge, -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-cherry" - }, -/area/crew_quarters/trading) "bUD" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -16427,43 +16120,10 @@ }, /area/turret_protected/aisat) "bVU" = ( -/obj/machinery/power/apc/worn_out{ - cell_type = 0; - dir = 1; - pixel_y = 26 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/simulated/floor/plating, -/area/maintenance/trading) -"bVZ" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/grenade/barrier{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/grenade/barrier, -/obj/item/grenade/barrier{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/grenade/barrier{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/trading) "bWb" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -17002,6 +16662,10 @@ "bYM" = ( /turf/simulated/wall, /area/magistrateoffice) +"bYT" = ( +/obj/structure/flora/junglebush, +/turf/simulated/floor/grass, +/area/maintenance/fpmaint) "bYW" = ( /obj/structure/cable{ icon_state = "1-2" @@ -17115,6 +16779,16 @@ }, /turf/simulated/floor/plasteel, /area/engineering/engine) +"bZx" = ( +/obj/item/storage/box/large{ + pixel_x = 9; + pixel_y = 17 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "neutral" + }, +/area/maintenance/trading) "bZz" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -17252,21 +16926,6 @@ }, /turf/simulated/floor/plasteel, /area/maintenance/bar) -"bZY" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/machinery/alarm{ - dir = 4; - pixel_x = -22 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "cac" = ( /obj/structure/window/reinforced{ dir = 1; @@ -17308,7 +16967,7 @@ "cag" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green, -/obj/item/card/id/captains_spare, +/obj/item/storage/secure/briefcase/captian, /obj/item/radio/intercom{ pixel_y = 28 }, @@ -17368,20 +17027,6 @@ }, /turf/simulated/floor/plasteel, /area/maintenance/bar) -"cam" = ( -/obj/effect/decal/warning_stripes/east, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel, -/area/engineering/controlroom) "cas" = ( /obj/structure/table/reinforced, /obj/machinery/reagentgrinder{ @@ -17456,6 +17101,19 @@ /obj/machinery/portable_atmospherics/pump, /turf/simulated/floor/plating, /area/crew_quarters/locker) +"caI" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/trading) "caK" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ @@ -17897,13 +17555,11 @@ }, /area/quartermaster/storage) "ccv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/random{ - pixel_x = -32 +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5 }, -/obj/effect/landmark/ninja_teleport, -/turf/simulated/floor/carpet/black, -/area/maintenance/casino) +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "ccx" = ( /obj/effect/decal/warning_stripes/east, /obj/machinery/firealarm{ @@ -17965,17 +17621,9 @@ }, /area/bridge/vip) "ccJ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/maintenance/casino) -"ccK" = ( /obj/structure/table/wood/fancy/royalblack, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/item/pen, -/turf/simulated/floor/plating, +/obj/item/stack/spacechips/c5000, +/turf/simulated/floor/carpet/red, /area/maintenance/casino) "ccO" = ( /obj/structure/chair/sofa/right, @@ -17983,10 +17631,14 @@ icon_state = "dark" }, /area/crew_quarters/serviceyard) -"ccW" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) +"ccU" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/decal/warning_stripes/northeastcorner, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "ccY" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /obj/machinery/door/airlock/highsecurity{ @@ -17998,30 +17650,17 @@ /turf/simulated/floor/engine, /area/toxins/sm_test_chamber) "cdb" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/carpet, -/area/maintenance/casino) -"cdd" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; +/obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/decal/warning_stripes/south, /obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 + dir = 4 }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) -"cdj" = ( -/obj/structure/table/reinforced, -/obj/item/pen, -/obj/machinery/door/window/brigdoor/northleft{ - dir = 8; - locked = 1 +/turf/simulated/floor/wood{ + broken = 1; + icon_state = "wood-broken" }, -/turf/simulated/floor/plating, -/area/maintenance/trading) +/area/maintenance/casino) "cdk" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel{ @@ -18041,30 +17680,31 @@ /obj/effect/landmark/start/civilian, /turf/simulated/floor/carpet, /area/crew_quarters/bar/atrium) -"cdp" = ( +"cdn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /obj/structure/cable{ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry) "cds" = ( /obj/machinery/vending/cola, /turf/simulated/floor/wood, /area/crew_quarters/serviceyard) "cdt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc/worn_out{ - cell_type = 0; - dir = 8; - pixel_x = -26 - }, -/turf/simulated/floor/plating, +/obj/structure/table/wood/fancy/royalblack, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/carpet/red, /area/maintenance/casino) "cdw" = ( /obj/effect/spawner/lootdrop/maintenance, @@ -18097,14 +17737,6 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/carpet, /area/bridge/meeting_room) -"cdF" = ( -/obj/machinery/door/window/brigdoor/northleft{ - dir = 4; - locked = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/maintenance/trading) "cdN" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -18247,11 +17879,6 @@ icon_state = "neutralfull" }, /area/hallway/primary/starboard/east) -"cei" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "cem" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -18375,21 +18002,6 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/quartermaster/miningdock) -"ceZ" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "cfb" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ @@ -18530,12 +18142,9 @@ }, /area/atmos) "cfD" = ( -/obj/effect/spawner/random_spawners/blood_5, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dust, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "0-4" }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) @@ -18591,11 +18200,35 @@ icon_state = "green" }, /area/hallway/secondary/exit) +"cfY" = ( +/obj/machinery/station_map/directional/east, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) "cga" = ( /obj/machinery/atmospherics/unary/portables_connector, /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/engineering/controlroom) +"cgc" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/storage/lockbox/mindshield, +/obj/item/storage/box/chemimp{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/storage/box/trackimp, +/obj/item/lock_buster, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "cge" = ( /turf/simulated/floor/engine/n2, /area/atmos) @@ -18604,13 +18237,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/brig) -"cgk" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/carpet/blue, -/area/crew_quarters/trading) "cgm" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -18812,11 +18438,7 @@ /turf/simulated/floor/plasteel, /area/engineering/controlroom) "chd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/alarm{ - dir = 4; - pixel_x = -22 - }, +/obj/structure/girder, /turf/simulated/floor/plating, /area/maintenance/casino) "che" = ( @@ -18863,6 +18485,28 @@ icon_state = "dark" }, /area/security/permabrig) +"chB" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/rack/gunrack, +/obj/item/gun/projectile/automatic/sp91rc{ + pixel_x = 7 + }, +/obj/item/gun/projectile/automatic/sp91rc{ + pixel_x = 2 + }, +/obj/item/gun/projectile/automatic/sp91rc{ + pixel_x = -2 + }, +/obj/item/gun/projectile/automatic/sp91rc{ + pixel_x = -7 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "chC" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -18889,13 +18533,6 @@ icon_state = "neutralcorner" }, /area/crew_quarters/locker) -"chJ" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/effect/decal/cleanable/dust, -/turf/simulated/floor/plating, -/area/maintenance/banya) "chL" = ( /obj/docking_port/stationary{ dir = 8; @@ -18932,17 +18569,10 @@ /turf/simulated/floor/plating, /area/maintenance/fore) "cie" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dust, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/wood/fancy/oak{ - icon_state = "fancy-wood-oak-broken4" - }, +/obj/effect/spawner/random_spawners/rodent, +/obj/effect/turf_decal/siding/wood/pallet, +/turf/simulated/floor/plating, /area/maintenance/banya) "cij" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -19061,68 +18691,11 @@ icon_state = "blue" }, /area/hydroponics) -"ciR" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/aiModule/crewsimov, -/obj/item/aiModule/freeformcore, -/obj/item/aiModule/corp, -/obj/item/aiModule/paladin, -/obj/item/aiModule/robocop, -/obj/structure/table/glass, -/obj/machinery/door/window{ - base_state = "right"; - dir = 2; - icon_state = "right"; - name = "Core Modules"; - req_access = list(20) - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/ai_upload) "ciS" = ( /turf/simulated/floor/wood/fancy/light{ color = "orange" }, /area/crew_quarters/courtroom) -"ciT" = ( -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Magazines for SMG" - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/ammo_box/magazine/wt550m9, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = 4; - pixel_y = -4 - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = 6; - pixel_y = -6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "ciZ" = ( /obj/machinery/firealarm{ pixel_y = 26 @@ -19167,21 +18740,8 @@ }, /area/security/warden) "cjn" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/turf/simulated/floor/plating, +/obj/effect/spawner/random_spawners/fungus_30, +/turf/simulated/wall, /area/maintenance/fpmaint) "cjp" = ( /obj/item/twohanded/required/kirbyplants, @@ -19203,22 +18763,6 @@ icon_state = "dark" }, /area/chapel/main) -"cjv" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "cjD" = ( /obj/machinery/light_switch{ pixel_x = -24; @@ -19472,14 +19016,9 @@ /turf/simulated/floor/plasteel, /area/engineering/controlroom) "ckN" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/carpet/black, -/area/maintenance/casino) -"ckQ" = ( -/obj/structure/chair/stool, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/remains/human, -/turf/simulated/floor/plating, +/obj/effect/decal/cleanable/dust, +/obj/structure/chair/office/dark, +/turf/simulated/floor/carpet/red, /area/maintenance/casino) "ckS" = ( /obj/machinery/light{ @@ -19529,11 +19068,6 @@ }, /turf/space, /area/space) -"clp" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/landmark/tiles/burnturf, -/turf/simulated/floor/wood/fancy/oak, -/area/maintenance/trading) "clq" = ( /obj/structure/cable{ icon_state = "2-8" @@ -19597,17 +19131,23 @@ /turf/simulated/floor/plasteel, /area/atmos) "clF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, +/obj/structure/flora/grass/jungle/b, /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/cable{ - icon_state = "1-8" - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/carpet/green, -/area/crew_quarters/mrchangs) +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/grass, +/area/maintenance/fpmaint) +"clG" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/gun/energy/ionrifle, +/obj/structure/rack/gunrack, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "clH" = ( /obj/effect/decal/warning_stripes/east, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -19726,9 +19266,6 @@ }, /turf/simulated/floor/plating, /area/hallway/secondary/exit/maint) -"cmh" = ( -/turf/simulated/floor/glass/reinforced, -/area/maintenance/trading) "cmi" = ( /obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/wall/r_wall, @@ -19746,28 +19283,16 @@ /obj/machinery/portable_atmospherics/scrubber, /turf/simulated/floor/plasteel, /area/engineering/controlroom) -"cmk" = ( -/obj/effect/decal/cleanable/dust, -/obj/effect/decal/remains/mouse, -/turf/simulated/floor/plating, -/area/maintenance/banya) -"cml" = ( -/obj/machinery/vending/autodrobe, -/turf/simulated/floor/plasteel{ - icon_state = "bar" - }, -/area/clownoffice) "cmm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/window/westleft, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/obj/effect/decal/cleanable/dust, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/reagent_containers/food/drinks/bottle/vodka{ + pixel_y = 13 }, -/obj/structure/cable, -/turf/simulated/floor/plating, +/turf/simulated/floor/wood/fancy/oak, /area/maintenance/banya) "cmn" = ( /obj/machinery/light{ @@ -19845,38 +19370,6 @@ icon_state = "dark" }, /area/chapel/office) -"cmL" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) -"cmO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/hologram/holopad, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/storage/secure) "cmP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -19884,32 +19377,13 @@ icon_state = "green" }, /area/hydroponics) -"cmR" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/effect/decal/warning_stripes/east, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) -"cmV" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/sign/fire{ - pixel_x = 32 - }, +"cmU" = ( +/obj/structure/closet/secure_closet/medical4, /turf/simulated/floor/plasteel{ - icon_state = "neutralfull" + dir = 1; + icon_state = "whiteblue" }, -/area/storage/secure) +/area/medical/surgery/north) "cmX" = ( /obj/structure/cable{ icon_state = "1-2" @@ -19919,10 +19393,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, /area/maintenance/asmaint3) -"cmZ" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/maintenance/trading) "cna" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/structure/dispenser, @@ -19938,23 +19408,13 @@ /obj/structure/grille/broken, /turf/simulated/floor/plating, /area/maintenance/engineering) -"cnf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/safe/floor, -/obj/item/pneumatic_cannon/ghetto, -/obj/item/tank/internals/oxygen, -/obj/item/clothing/gloves/color/yellow, -/obj/machinery/door/window/brigdoor/northleft{ - dir = 2; - locked = 1 - }, -/turf/simulated/floor/wood/fancy/oak{ - icon_state = "fancy-wood-oak-broken7" - }, -/area/maintenance/trading) "cng" = ( -/turf/simulated/wall/rust, -/area/crew_quarters/mrchangs) +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) "cnj" = ( /obj/structure/cable{ icon_state = "1-2" @@ -19984,33 +19444,11 @@ icon_state = "neutralcorner" }, /area/hallway/primary/fore) -"cno" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "cnp" = ( /obj/effect/turf_decal/box, /obj/item/storage/box/mousetraps, /turf/simulated/floor/plasteel, /area/quartermaster/sorting) -"cnq" = ( -/obj/machinery/camera{ - c_tag = "Clown Office" - }, -/obj/structure/bed, -/obj/item/bedsheet/clown, -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "bar" - }, -/area/clownoffice) "cnx" = ( /obj/structure/table/reinforced, /obj/effect/decal/warning_stripes/yellow, @@ -20028,17 +19466,6 @@ }, /turf/simulated/floor/plasteel, /area/quartermaster/office) -"cnB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/warning_stripes/east, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plasteel, -/area/storage/secure) "cnD" = ( /obj/structure/cable, /obj/structure/cable{ @@ -20161,6 +19588,10 @@ dir = 4 }, /obj/machinery/light, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, /turf/simulated/floor/plasteel{ icon_state = "arrival" }, @@ -20241,6 +19672,29 @@ }, /turf/space, /area/space) +"coD" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/storage/box/flashbangs, +/obj/item/storage/box/flashbangs{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/flashbang{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/flashbang{ + pixel_x = 6; + pixel_y = -6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "coE" = ( /obj/structure/lattice, /turf/space, @@ -20257,11 +19711,10 @@ /turf/simulated/floor/plasteel, /area/engineering/controlroom) "coL" = ( -/obj/structure/chair/office/dark{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/carpet/black, +/obj/structure/table/wood/fancy/royalblack, +/obj/effect/decal/cleanable/dust, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/carpet/red, /area/maintenance/casino) "coN" = ( /obj/structure/cable, @@ -20404,17 +19857,6 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/storage/secure) -"cpo" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/storage/secure) "cpr" = ( /obj/machinery/power/emitter, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -20454,10 +19896,14 @@ }, /area/quartermaster/storage) "cpD" = ( -/obj/item/soap/syndie, -/obj/structure/falsewall, -/turf/simulated/floor/plating, -/area/hallway/secondary/entry/commercial) +/obj/structure/chair/wood{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) "cpJ" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -20470,6 +19916,7 @@ pixel_x = 32; pixel_y = 32 }, +/obj/machinery/station_map/directional/east, /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" }, @@ -20624,15 +20071,6 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/storage/secure) -"cqW" = ( -/obj/item/shard, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced, -/obj/structure/grille, -/turf/simulated/floor/plating, -/area/maintenance/trading) "cqX" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/machinery/power/tesla_coil, @@ -20733,10 +20171,6 @@ icon_state = "caution" }, /area/atmos) -"crr" = ( -/obj/machinery/suit_storage_unit/blueshield, -/turf/simulated/floor/wood/fancy/light, -/area/blueshield) "crv" = ( /obj/structure/table/reinforced, /obj/item/clipboard, @@ -20755,18 +20189,16 @@ /turf/simulated/floor/plating, /area/maintenance/engineering) "crA" = ( -/obj/structure/railing{ - dir = 1 +/obj/structure/cable{ + icon_state = "1-4" }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sink{ - dir = 8; - pixel_x = -12 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 }, -/mob/living/simple_animal/frog, -/turf/simulated/floor/plasteel{ - icon_state = "showroomfloor" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 }, +/turf/simulated/floor/plating, /area/maintenance/banya) "crB" = ( /obj/structure/table/reinforced, @@ -20781,11 +20213,18 @@ }, /area/crew_quarters/bar) "crE" = ( -/obj/effect/decal/cleanable/dust, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "rampbottom" +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/wood, +/obj/structure/barricade/wooden, +/turf/simulated/floor/wood/fancy/oak, /area/maintenance/banya) "crF" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -20793,10 +20232,6 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/bar/atrium) -"crI" = ( -/obj/machinery/vending/crittercare, -/turf/simulated/floor/carpet, -/area/crew_quarters/serviceyard) "crJ" = ( /obj/structure/plasticflaps, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -20823,10 +20258,10 @@ }, /area/atmos) "crN" = ( -/obj/machinery/light/small{ - dir = 4 - }, /obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) "crW" = ( @@ -20839,13 +20274,9 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "csa" = ( -/obj/structure/chair/office/dark{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small, -/turf/simulated/floor/plating, -/area/maintenance/trading) +/obj/effect/spawner/random_spawners/wall_rusted_30, +/turf/simulated/wall, +/area/maintenance/fpmaint) "cse" = ( /obj/structure/table/wood, /obj/item/stack/tape_roll, @@ -20899,11 +20330,6 @@ icon_state = "white" }, /area/crew_quarters/kitchen) -"css" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/slot_machine, -/turf/simulated/floor/plating, -/area/maintenance/casino) "cst" = ( /obj/structure/curtain/open/shower/security{ alpha = 255; @@ -20925,19 +20351,11 @@ /turf/simulated/floor/plating, /area/quartermaster/sorting) "csz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/spiderling_remains, -/turf/simulated/floor/plating, -/area/crew_quarters/trading) -"csC" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 +/obj/structure/toilet{ + dir = 8 }, /turf/simulated/floor/plasteel{ - icon_state = "arrival" + icon_state = "freezerfloor" }, /area/hallway/secondary/entry/commercial) "csF" = ( @@ -21151,17 +20569,6 @@ /obj/machinery/status_display, /turf/simulated/wall, /area/hydroponics) -"ctV" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/plasteel{ - icon_state = "yellowfull" - }, -/area/engineering/controlroom) "cua" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -21503,15 +20910,6 @@ icon_state = "dark" }, /area/gateway) -"cvI" = ( -/obj/effect/decal/warning_stripes/east, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/plasteel, -/area/engineering/controlroom) "cvJ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/hydroponics/soil, @@ -21610,9 +21008,6 @@ icon_state = "grimy" }, /area/crew_quarters/cabin1) -"cwa" = ( -/turf/simulated/wall, -/area/civilian/barber) "cwd" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -21755,12 +21150,18 @@ }, /area/mimeoffice) "cwC" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, /turf/simulated/floor/plasteel{ icon_state = "arrival" }, @@ -21775,23 +21176,6 @@ icon_state = "dark" }, /area/turret_protected/ai) -"cwH" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/power/apc{ - pixel_y = -26 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/simulated/floor/plasteel{ - icon_state = "arrival" - }, -/area/hallway/secondary/entry/commercial) "cwI" = ( /obj/machinery/door/poddoor/shutters/preopen{ id_tag = "Clown"; @@ -21817,7 +21201,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "cwL" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -21899,6 +21283,28 @@ icon_state = "dark" }, /area/hydroponics) +"cxk" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Riot shotguns" + }, +/obj/item/gun/projectile/shotgun/riot{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/gun/projectile/shotgun/riot, +/obj/item/gun/projectile/shotgun/riot{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "cxn" = ( /turf/simulated/wall, /area/crew_quarters/locker/locker_toilet) @@ -22297,10 +21703,15 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, /turf/simulated/floor/plasteel{ icon_state = "arrival" }, @@ -22415,11 +21826,11 @@ }, /area/quartermaster/delivery) "czv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "1-4" +/obj/structure/chair/office/dark{ + dir = 4 }, -/turf/simulated/floor/carpet/black, +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/carpet/red, /area/maintenance/casino) "czw" = ( /obj/machinery/field/generator{ @@ -22436,14 +21847,11 @@ }, /area/security/permabrig) "czy" = ( -/obj/machinery/door/window/westright{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-2" }, -/turf/simulated/floor/carpet/black, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/carpet/red, /area/maintenance/casino) "czz" = ( /obj/machinery/ai_status_display, @@ -22494,16 +21902,9 @@ /turf/simulated/floor/plasteel, /area/gateway) "czM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/official/random{ - pixel_y = -32 - }, +/obj/effect/decal/cleanable/blood, /turf/simulated/floor/plating, /area/maintenance/casino) -"czN" = ( -/obj/machinery/slot_machine, -/turf/simulated/floor/carpet, -/area/maintenance/casino) "czO" = ( /obj/structure/table, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -22606,11 +22007,19 @@ /turf/simulated/wall/r_wall, /area/atmos) "cAf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/space_heater, -/turf/simulated/floor/wood/fancy/oak{ - icon_state = "fancy-wood-oak-broken7" +/obj/effect/decal/cleanable/dust, +/obj/structure/sign/nosmoking_1{ + pixel_y = 32 + }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, /area/maintenance/banya) "cAg" = ( /obj/structure/closet/secure_closet/personal, @@ -22619,22 +22028,6 @@ icon_state = "neutralcorner" }, /area/crew_quarters/locker) -"cAh" = ( -/obj/structure/closet, -/obj/item/vending_refill/hydroseeds, -/obj/item/reagent_containers/spray/plantbgone{ - pixel_x = -5; - pixel_y = 6 - }, -/obj/item/reagent_containers/glass/bucket, -/obj/item/cultivator, -/obj/item/clothing/glasses/hud/hydroponic, -/obj/item/clothing/gloves/botanic_leather, -/obj/item/storage/bag/plants/portaseeder, -/turf/simulated/floor/wood/fancy/oak{ - icon_state = "fancy-wood-oak-broken4" - }, -/area/maintenance/trading) "cAj" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -22709,10 +22102,6 @@ "cAr" = ( /turf/simulated/wall/rust, /area/maintenance/asmaint2) -"cAt" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/simulated/floor/plating, -/area/maintenance/trading) "cAv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -22728,20 +22117,6 @@ icon_state = "arrival" }, /area/hallway/secondary/entry) -"cAy" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "cAz" = ( /turf/simulated/wall, /area/maintenance/trading) @@ -22768,10 +22143,6 @@ icon_state = "dark" }, /area/engineering/hardsuitstorage) -"cAK" = ( -/obj/machinery/door/airlock/maintenance, -/turf/simulated/floor/plating, -/area/maintenance/trading) "cAM" = ( /obj/machinery/photocopier, /obj/machinery/light{ @@ -22857,24 +22228,15 @@ /turf/simulated/floor/plasteel, /area/bridge/vip) "cBo" = ( -/obj/structure/chair/sofa/pew{ - dir = 4 - }, -/obj/item/trash/semki, +/obj/effect/turf_decal/siding/wood, /obj/effect/decal/cleanable/dust, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, /turf/simulated/floor/wood/fancy/oak{ - icon_state = "fancy-wood-oak-broken4" + icon_state = "fancy-wood-oak-broken7" }, /area/maintenance/banya) "cBq" = ( /obj/machinery/door/poddoor{ - id_tag = "QMLoaddoor"; + id_tag = "QMLoaddoor2"; name = "supply dock loading door" }, /obj/machinery/conveyor{ @@ -23098,11 +22460,6 @@ /obj/machinery/portable_atmospherics/canister/nitrogen, /turf/simulated/floor/plasteel, /area/engineering/controlroom) -"cCn" = ( -/obj/machinery/door/airlock/maintenance, -/obj/structure/barricade/wooden, -/turf/simulated/floor/plating, -/area/maintenance/casino) "cCp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -23112,15 +22469,12 @@ }, /area/engineering/engine) "cCt" = ( -/obj/machinery/door/airlock/maintenance, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-2" +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 }, /turf/simulated/floor/plating, -/area/maintenance/trading) +/area/maintenance/fpmaint) "cCu" = ( /obj/item/twohanded/required/kirbyplants, /obj/structure/sign/poster/contraband/missing_gloves{ @@ -23178,7 +22532,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "cCE" = ( /turf/simulated/wall/rust, /area/space) @@ -23234,15 +22588,9 @@ }, /area/maintenance/turbine) "cCO" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/effect/decal/cleanable/dust, -/obj/machinery/light/small{ - dir = 1 - }, +/obj/machinery/slot_machine, /turf/simulated/floor/plating, -/area/maintenance/banya) +/area/maintenance/casino) "cCP" = ( /obj/structure/cable{ icon_state = "1-8" @@ -23383,9 +22731,17 @@ /turf/simulated/floor/plasteel, /area/engineering/controlroom) "cDk" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, /obj/effect/decal/cleanable/dust, -/obj/item/trash/can, -/obj/effect/decal/remains/mouse, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/table/wood, +/obj/effect/mapping_helpers/table_flip{ + dir = 4 + }, /turf/simulated/floor/plating, /area/maintenance/banya) "cDl" = ( @@ -23417,6 +22773,10 @@ icon_state = "neutralcorner" }, /area/hallway/primary/fore) +"cDr" = ( +/obj/effect/spawner/airlock/s_to_n, +/turf/simulated/wall, +/area/maintenance/fpmaint) "cDs" = ( /turf/simulated/wall, /area/space) @@ -23652,20 +23012,6 @@ icon_state = "neutralfull" }, /area/hallway/primary/central/south) -"cEh" = ( -/obj/structure/barricade/wooden, -/obj/machinery/door/airlock/wood, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/maintenance/banya) "cEi" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 5 @@ -23698,6 +23044,17 @@ icon_state = "neutralfull" }, /area/hallway/primary/central/se) +"cEm" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + icon_state = "grass_edge_medium" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "cEn" = ( /obj/structure/chair/office/dark{ dir = 1 @@ -23740,14 +23097,17 @@ /turf/simulated/floor/greengrid, /area/security/nuke_storage) "cED" = ( +/obj/machinery/status_display{ + pixel_x = -32 + }, /obj/structure/disposalpipe/segment{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 }, /obj/structure/cable{ icon_state = "2-4" @@ -24028,6 +23388,7 @@ /area/bridge) "cFL" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/crew_quarters/trading) "cFO" = ( @@ -24067,9 +23428,12 @@ }, /area/quartermaster/delivery) "cFU" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -26 +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/newscaster{ + pixel_y = -30 }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -24132,6 +23496,9 @@ icon_state = "neutral" }, /area/hallway/secondary/entry/lounge) +"cGh" = ( +/turf/simulated/floor/carpet, +/area/crew_quarters/serviceyard) "cGj" = ( /obj/structure/chair/sofa/right{ dir = 1 @@ -24231,13 +23598,11 @@ /turf/simulated/floor/plating, /area/engineering/controlroom) "cGF" = ( -/obj/effect/turf_decal/siding/white{ - dir = 9 - }, +/obj/machinery/slot_machine, +/obj/machinery/light/small, /obj/effect/decal/cleanable/dust, -/mob/living/simple_animal/hostile/lizard/croco/Gena, -/turf/simulated/floor/plating, -/area/maintenance/banya) +/turf/simulated/floor/carpet/black, +/area/maintenance/casino) "cGM" = ( /obj/machinery/door/airlock{ id_tag = "cabin3"; @@ -24351,6 +23716,15 @@ icon_state = "redfull" }, /area/crew_quarters/kitchen) +"cHj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) "cHm" = ( /obj/structure/table/reinforced, /obj/machinery/newscaster{ @@ -24381,20 +23755,6 @@ icon_state = "whitepurple" }, /area/medical/research) -"cHz" = ( -/obj/structure/bed, -/obj/item/bedsheet/mime, -/obj/machinery/camera{ - c_tag = "Mime Office" - }, -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "tranquillite" - }, -/area/mimeoffice) "cHC" = ( /obj/item/twohanded/required/kirbyplants, /obj/structure/cable{ @@ -24462,15 +23822,6 @@ icon_state = "dark" }, /area/bridge) -"cHK" = ( -/obj/machinery/door/airlock{ - name = "Toilet" - }, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/hallway/secondary/entry/commercial) "cHN" = ( /obj/structure/chair/comfy/teal, /obj/item/radio/intercom{ @@ -24481,16 +23832,6 @@ icon_state = "whiteblue" }, /area/medical/reception) -"cHP" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall, -/area/civilian/barber) -"cHT" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/trading) "cHU" = ( /obj/structure/closet/secure_closet/security, /obj/effect/decal/warning_stripes/red/hollow, @@ -24919,11 +24260,6 @@ icon_state = "darkblue" }, /area/security/detectives_office) -"cJA" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/tripple, -/turf/simulated/floor/carpet/black, -/area/maintenance/casino) "cJB" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/dirt, @@ -25129,9 +24465,9 @@ }, /area/hallway/primary/central/nw) "cKz" = ( -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) +/obj/effect/spawner/random_spawners/fungus_30, +/turf/simulated/wall, +/area/maintenance/trading) "cKC" = ( /obj/structure/chair/comfy/red{ dir = 1 @@ -25610,10 +24946,6 @@ icon_state = "dark" }, /area/bridge) -"cNg" = ( -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/maintenance/trading) "cNh" = ( /obj/machinery/atmospherics/pipe/manifold/visible{ dir = 8 @@ -25627,14 +24959,6 @@ /obj/item/book/manual/experimentor, /turf/simulated/floor/plasteel, /area/toxins/explab) -"cNn" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/effect/decal/cleanable/dust, -/obj/effect/decal/remains/mouse, -/turf/simulated/floor/plating, -/area/maintenance/banya) "cNt" = ( /obj/item/twohanded/required/kirbyplants, /obj/structure/extinguisher_cabinet{ @@ -26056,20 +25380,6 @@ icon_state = "neutralfull" }, /area/quartermaster/storage) -"cOT" = ( -/obj/machinery/vending/wallmed{ - name = "Emergency NanoMed"; - pixel_x = 26 - }, -/obj/structure/filingcabinet/chestdrawer, -/obj/item/radio/intercom{ - pixel_y = -28 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "whitepurple" - }, -/area/toxins/explab) "cOU" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/simple/heat_exchanging, @@ -26288,13 +25598,14 @@ }, /area/maintenance/turbine) "cPJ" = ( -/obj/machinery/light/small{ - dir = 4 +/obj/effect/decal/cleanable/dust, +/obj/effect/turf_decal/siding/white{ + dir = 5 }, -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/tripple, -/turf/simulated/floor/plating, -/area/maintenance/casino) +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/maintenance/banya) "cPK" = ( /obj/effect/decal/warning_stripes/south, /obj/machinery/atmospherics/pipe/simple/visible, @@ -26363,10 +25674,14 @@ /turf/simulated/floor/plasteel, /area/engineering/engine) "cQb" = ( -/obj/effect/turf_decal/siding/white{ - dir = 10 +/obj/machinery/power/apc/worn_out{ + cell_type = 0; + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" }, -/obj/effect/decal/cleanable/dust, /turf/simulated/floor/plating, /area/maintenance/banya) "cQc" = ( @@ -26385,8 +25700,16 @@ /turf/simulated/floor/carpet/arcade, /area/crew_quarters/fitness) "cQk" = ( -/obj/effect/turf_decal/siding/white, -/obj/effect/decal/cleanable/dust, +/obj/structure/closet/hydrant{ + pixel_x = 32 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/light/small{ + dir = 1 + }, /turf/simulated/floor/plating, /area/maintenance/banya) "cQm" = ( @@ -26455,18 +25778,6 @@ /obj/item/clothing/head/beret, /turf/simulated/floor/plating, /area/maintenance/library) -"cQu" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "cQv" = ( /obj/structure/table/reinforced, /obj/machinery/computer/security/telescreen/test_chamber{ @@ -26673,17 +25984,6 @@ icon_state = "whiteyellow" }, /area/medical/chemistry) -"cRi" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/item/storage/belt/medical, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/regular, -/obj/item/reagent_containers/food/drinks/mug/med, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "whiteblue" - }, -/area/medical/biostorage) "cRj" = ( /obj/effect/decal/warning_stripes/blue, /obj/structure/rack{ @@ -26815,18 +26115,6 @@ /obj/machinery/atmospherics/meter, /turf/simulated/floor/plasteel, /area/engineering/controlroom) -"cRT" = ( -/obj/machinery/atmospherics/pipe/simple/visible{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/northeastcorner, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/plasteel, -/area/engineering/controlroom) "cRU" = ( /obj/effect/decal/warning_stripes/northeast, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -26872,16 +26160,6 @@ icon_state = "purplefull" }, /area/toxins/test_chamber) -"cSa" = ( -/obj/machinery/atmospherics/pipe/manifold/visible, -/obj/effect/decal/warning_stripes/north, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/plasteel, -/area/engineering/controlroom) "cSb" = ( /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel{ @@ -27075,6 +26353,14 @@ icon_state = "whiteyellowfull" }, /area/medical/chemistry) +"cSP" = ( +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 + }, +/obj/structure/closet/cardboard, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "cTc" = ( /obj/structure/window/reinforced, /obj/machinery/arcade/claw, @@ -27092,6 +26378,9 @@ "cTj" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -27242,14 +26531,12 @@ }, /area/toxins/xenobiology) "cTQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair{ - dir = 1 - }, -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-cherry" +/obj/structure/cable{ + icon_state = "1-2" }, -/area/crew_quarters/trading) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) "cTR" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel{ @@ -27804,23 +27091,6 @@ icon_state = "whitepurple" }, /area/medical/research/shallway) -"cWa" = ( -/obj/item/aiModule/protectStation{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/aiModule/nanotrasen{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/structure/table/glass, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/ai_upload) "cWb" = ( /obj/effect/decal/cleanable/dirt, /obj/item/chair/wood/wings, @@ -28141,19 +27411,6 @@ icon_state = "white" }, /area/medical/chemistry) -"cXs" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet{ - pixel_y = -28 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "whiteyellow" - }, -/area/medical/chemistry) "cXv" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -28234,14 +27491,17 @@ }, /area/engineering/aienter) "cXQ" = ( -/obj/structure/bed, -/obj/item/bedsheet/syndie, -/mob/living/simple_animal/moth, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkred" +/obj/effect/decal/cleanable/dirt, +/obj/structure/coatrack, +/obj/structure/closet/walllocker/emerglocker/east, +/obj/item/radio{ + pixel_x = 5 }, -/area/hallway/secondary/entry/commercial) +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-cherry" + }, +/area/crew_quarters/trading) "cXR" = ( /obj/machinery/camera{ c_tag = "Chief Engineer's Office"; @@ -28406,6 +27666,11 @@ icon_state = "whitepurple" }, /area/toxins/lab) +"cYI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "cYJ" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -28509,14 +27774,14 @@ /area/crew_quarters/bar/atrium) "cYX" = ( /obj/machinery/door_control{ - id = "QMLoaddoor2"; + id = "QMLoaddoor"; layer = 4; name = "Loading Doors"; pixel_x = 24; pixel_y = 8 }, /obj/machinery/door_control{ - id = "QMLoaddoor"; + id = "QMLoaddoor2"; layer = 4; name = "Loading Doors"; pixel_x = 24; @@ -28718,11 +27983,6 @@ /obj/structure/window/reinforced, /turf/space, /area/space) -"cZP" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "cZQ" = ( /obj/structure/window/reinforced{ dir = 8 @@ -28737,7 +27997,7 @@ dir = 9; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "cZU" = ( /obj/item/trash/pistachios, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -28792,7 +28052,7 @@ dir = 5; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "daj" = ( /obj/structure/window/reinforced{ dir = 8 @@ -29006,10 +28266,21 @@ }, /area/bridge/vip) "dbm" = ( -/obj/structure/table/wood, -/obj/effect/spawner/lootdrop/maintenance/double, -/turf/simulated/floor/carpet/black, -/area/maintenance/casino) +/obj/machinery/shower{ + dir = 4; + pixel_y = 4; + tag = "icon-shower (EAST)" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/obj/effect/turf_decal/siding/white{ + dir = 10 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/maintenance/banya) "dbn" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance, @@ -29045,12 +28316,8 @@ }, /area/hallway/primary/central/ne) "dbs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc{ - pixel_y = -26 - }, -/obj/structure/cable{ - icon_state = "0-8" +/obj/structure/chair/office{ + dir = 4 }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) @@ -29262,10 +28529,22 @@ /turf/simulated/floor/plasteel, /area/security/lobby) "dcC" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/double, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/toy/crayon/spraycan, /turf/simulated/floor/glass/reinforced, -/area/maintenance/trading) +/area/maintenance/fpmaint) "dcD" = ( /obj/machinery/door/airlock/maintenance{ name = "Medbay Maintenance"; @@ -29327,17 +28606,17 @@ }, /area/crew_quarters/kitchen) "dcQ" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/wood/glass{ - name = "Mr. Chang's" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ icon_state = "1-2" }, -/turf/simulated/floor/carpet/green, -/area/crew_quarters/mrchangs) +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) "dcR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -29661,9 +28940,12 @@ /turf/simulated/floor/plasteel, /area/teleporter) "deq" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/simulated/floor/glass/reinforced, -/area/maintenance/trading) +/obj/machinery/conveyor_switch/oneway{ + id = "comdel" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "des" = ( /obj/structure/cable{ icon_state = "1-2" @@ -29713,7 +28995,7 @@ dir = 1; icon_state = "darkbluecorners" }, -/area/construction/hallway) +/area/aisat/aihallway) "deB" = ( /obj/structure/cable{ icon_state = "1-2" @@ -29850,7 +29132,7 @@ dir = 4; icon_state = "darkbluecorners" }, -/area/construction/hallway) +/area/aisat/aihallway) "deX" = ( /obj/effect/decal/cleanable/dirt, /mob/living/simple_animal/moth, @@ -30292,6 +29574,17 @@ icon_state = "neutralfull" }, /area/quartermaster/storage) +"dgX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/rack, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "dgY" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/atmospherics/pipe/simple/visible/universal{ @@ -30455,7 +29748,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dhw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -30599,6 +29892,18 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/security/medbay) +"dib" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + icon_state = "grass_edge_medium_corner" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "die" = ( /obj/structure/cable{ icon_state = "4-8" @@ -30680,6 +29985,17 @@ icon_state = "dark" }, /area/medical/cloning) +"diw" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/conveyor{ + id = "comdel" + }, +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "dix" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -30786,7 +30102,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "diY" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -31410,7 +30726,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dlL" = ( /obj/structure/cable{ icon_state = "0-8" @@ -31508,6 +30824,25 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/hor) +"dmd" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/warning_stripes/west, +/obj/machinery/door/poddoor/preopen{ + id_tag = "Singularity"; + name = "Singularity Blast Doors" + }, +/turf/simulated/floor/plating, +/area/engineering/engine) "dmj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -31592,13 +30927,6 @@ icon_state = "whiteblue" }, /area/medical/surgery/north) -"dmt" = ( -/obj/structure/railing{ - dir = 9 - }, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/simulated/floor/grass, -/area/maintenance/trading) "dmv" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/dirt, @@ -31614,7 +30942,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dmB" = ( /obj/machinery/access_button{ command = "cycle_exterior"; @@ -31919,16 +31247,10 @@ /turf/simulated/floor/plasteel, /area/engineering/controlroom) "dnB" = ( -/obj/structure/chair/sofa/pew/right{ - dir = 4 - }, /obj/effect/decal/cleanable/dust, -/obj/effect/decal/remains/human, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/wood/fancy/oak{ - icon_state = "fancy-wood-oak-broken7" - }, +/obj/effect/turf_decal/siding/wood/pallet, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating, /area/maintenance/banya) "dnD" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -31949,12 +31271,6 @@ icon_state = "dark" }, /area/medical/genetics) -"dnG" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "showroomfloor" - }, -/area/maintenance/banya) "dnI" = ( /obj/effect/decal/warning_stripes/west, /obj/machinery/atmospherics/pipe/simple/visible/yellow{ @@ -32053,17 +31369,6 @@ icon_state = "neutralcorner" }, /area/crew_quarters/fitness) -"dod" = ( -/obj/structure/closet/cabinet, -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/shoes/sandal/white, -/obj/item/clothing/under/pants/white, -/obj/item/clothing/accessory/scarf/white, -/obj/structure/sign/nosmoking_1{ - pixel_y = 32 - }, -/turf/simulated/floor/plating, -/area/maintenance/banya) "dog" = ( /obj/structure/table/reinforced, /obj/effect/decal/warning_stripes/northeastcorner, @@ -32151,17 +31456,6 @@ icon_state = "yellowcorner" }, /area/hallway/primary/port) -"dox" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/structure/mirror{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/crew_quarters/serviceyard) "doy" = ( /obj/machinery/hologram/holopad, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -32210,12 +31504,11 @@ /turf/simulated/floor/plasteel, /area/assembly/chargebay) "doO" = ( -/obj/structure/sink{ - layer = 4; - pixel_y = 26 +/obj/structure/mirror{ + pixel_y = 32 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 +/obj/structure/sink{ + pixel_y = 22 }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -32494,7 +31787,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "dpR" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -32711,6 +32004,26 @@ }, /turf/simulated/floor/plasteel, /area/quartermaster/storage) +"drl" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/window/westright{ + dir = 1; + name = "Front Desk" + }, +/obj/item/trash/candle, +/obj/item/trash/pistachios{ + pixel_x = 12 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = -5; + pixel_y = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "hydrofloor" + }, +/area/maintenance/trading) "drp" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 5 @@ -32956,7 +32269,7 @@ dir = 10; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "dsz" = ( /obj/machinery/papershredder, /obj/machinery/newscaster{ @@ -32994,6 +32307,26 @@ }, /turf/simulated/floor/plasteel, /area/engineering/mechanic_workshop/expedition) +"dsN" = ( +/obj/machinery/door_control{ + desiredstate = 1; + id = "toilet3"; + name = "Toilet Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/obj/structure/toilet, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/serviceyard) "dsO" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/atmos/glass{ @@ -33031,7 +32364,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "dsR" = ( /obj/item/radio/intercom{ pixel_x = -28 @@ -33120,7 +32453,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "dte" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp, @@ -33140,14 +32473,6 @@ }, /turf/simulated/floor/plating, /area/atmos) -"dtj" = ( -/obj/machinery/flasher/portable, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "vault" - }, -/area/security/securearmory) "dtm" = ( /obj/structure/table/glass, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, @@ -33224,21 +32549,20 @@ }, /area/maintenance/kitchen) "dtE" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "2-8" +/obj/structure/railing{ + dir = 10 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 +/obj/structure/flora/junglebush, +/obj/structure/closet/walllocker{ + pixel_y = 28 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 +/obj/item/soap/homemade_apple, +/obj/item/storage/fancy/cigarettes/cigpack_robust, +/obj/item/stack/tickets{ + amount = 100 }, -/turf/simulated/floor/plating, +/obj/item/stack/sheet/cardboard, +/turf/simulated/floor/grass, /area/maintenance/fpmaint) "dtF" = ( /obj/structure/sink{ @@ -33320,13 +32644,16 @@ /turf/simulated/floor/plasteel, /area/engineering/controlroom) "dtZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/bottle/vodka, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, -/turf/simulated/floor/wood/fancy/oak{ - icon_state = "fancy-wood-oak-broken7" +/obj/effect/decal/cleanable/dust, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/turf_decal/siding/wood/pallet{ + dir = 1 }, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/turf/simulated/floor/plating, /area/maintenance/banya) "duf" = ( /obj/effect/decal/warning_stripes/northwest, @@ -33439,23 +32766,6 @@ icon_state = "dark" }, /area/security/permabrig) -"duO" = ( -/obj/machinery/power/terminal, -/obj/effect/decal/warning_stripes/south, -/obj/structure/cable/yellow, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/turf/simulated/floor/plasteel, -/area/engineering/controlroom) "duT" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -33684,6 +32994,20 @@ }, /turf/simulated/floor/engine/co2, /area/atmos) +"dvO" = ( +/obj/structure/bed, +/obj/item/bedsheet/mime, +/obj/machinery/camera{ + c_tag = "Mime Office" + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) "dvP" = ( /obj/structure/cable{ icon_state = "4-8" @@ -33691,11 +33015,6 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/structure/cable{ - icon_state = "1-8" - }, /turf/simulated/floor/wood, /area/crew_quarters/serviceyard) "dvR" = ( @@ -33758,6 +33077,21 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/bar/atrium) +"dwp" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "engineering_east_airlock"; + name = "exterior access button"; + pixel_x = 20; + pixel_y = 20; + req_access = list(10,13) + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "dws" = ( /obj/machinery/recharge_station, /turf/simulated/floor/plasteel{ @@ -33942,8 +33276,7 @@ }, /area/quartermaster/storage) "dxa" = ( -/obj/structure/table/wood/fancy/royalblack, -/obj/item/storage/fancy/cigcase, +/obj/structure/barricade/wooden, /turf/simulated/floor/plating, /area/maintenance/casino) "dxb" = ( @@ -34001,6 +33334,11 @@ }, /turf/simulated/floor/plasteel, /area/toxins/storage) +"dxk" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/curtain/black, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/commercial) "dxs" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -34141,7 +33479,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dxT" = ( /obj/structure/cable{ icon_state = "1-2" @@ -34185,7 +33523,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dyn" = ( /obj/structure/cable{ icon_state = "0-4" @@ -34282,19 +33620,6 @@ icon_state = "whitepurple" }, /area/medical/research/shallway) -"dyD" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/effect/landmark/tiles/burnturf, -/turf/simulated/floor/plating, -/area/maintenance/trading) "dyG" = ( /obj/machinery/r_n_d/server/robotics, /obj/machinery/atmospherics/pipe/simple/hidden{ @@ -34801,17 +34126,6 @@ /obj/effect/decal/cleanable/blood/oil/streak, /turf/simulated/floor/plating, /area/maintenance/asmaint2) -"dBe" = ( -/obj/structure/chair/wood, -/obj/machinery/power/apc{ - dir = 8; - pixel_x = -26 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/simulated/floor/carpet/green, -/area/crew_quarters/mrchangs) "dBg" = ( /obj/machinery/door/airlock/maintenance{ req_access = list(12) @@ -34861,13 +34175,6 @@ }, /turf/simulated/floor/plating, /area/security/permabrig) -"dBp" = ( -/obj/effect/decal/warning_stripes/south, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "dBr" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -34979,19 +34286,6 @@ icon_state = "grimy" }, /area/library) -"dBN" = ( -/obj/structure/table/reinforced, -/obj/structure/mirror{ - pixel_x = 28 - }, -/obj/item/razor, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "dBO" = ( /obj/effect/spawner/window/reinforced/polarized{ id = "vir2" @@ -35082,18 +34376,6 @@ }, /turf/simulated/floor/plating, /area/security/permabrig) -"dCv" = ( -/obj/structure/table/reinforced, -/obj/item/book/manual/engineering_guide{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/book/manual/engineering_particle_accelerator, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "yellow" - }, -/area/engineering/engine) "dCw" = ( /obj/structure/table, /obj/machinery/computer/library/public, @@ -35206,12 +34488,6 @@ icon_state = "white" }, /area/teleporter/abandoned) -"dCM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plating, -/area/crew_quarters/trading) "dCP" = ( /obj/machinery/light{ dir = 8 @@ -35303,22 +34579,6 @@ /obj/structure/sign/fire, /turf/simulated/wall/r_wall/coated, /area/maintenance/turbine) -"dDf" = ( -/obj/machinery/door/airlock/maintenance, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/maintenance/trading) "dDi" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -35490,22 +34750,6 @@ }, /turf/simulated/floor/plating, /area/teleporter/abandoned) -"dDU" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor/carpet/blue, -/area/crew_quarters/trading) "dDW" = ( /obj/structure/cable{ icon_state = "4-8" @@ -35579,9 +34823,6 @@ }, /turf/simulated/floor/engine/o2, /area/atmos) -"dEs" = ( -/turf/simulated/floor/plasteel, -/area/engineering/engine) "dEt" = ( /turf/simulated/wall, /area/maintenance/banya) @@ -35692,10 +34933,6 @@ icon_state = "grimy" }, /area/bridge/meeting_room) -"dFe" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/civilian/barber) "dFg" = ( /turf/simulated/wall, /area/maintenance/library) @@ -35860,17 +35097,6 @@ "dFG" = ( /turf/simulated/wall/rust, /area/maintenance/asmaint) -"dFH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/ash, -/obj/item/flag/nt{ - icon_state = "ntflag_rolled"; - rolled = 1 - }, -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-cherry" - }, -/area/crew_quarters/trading) "dFK" = ( /obj/structure/table/wood, /obj/item/paper/deltainfo, @@ -35953,22 +35179,20 @@ /turf/simulated/floor/plasteel, /area/bridge/checkpoint/south) "dGi" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 +/obj/machinery/door/poddoor/shutters/preopen{ + density = 1; + dir = 2; + icon_state = "closed"; + id_tag = "Traiders Windows"; + name = "Traiders Privacy Shutters"; + opacity = 1 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ +/obj/structure/table/reinforced, +/obj/machinery/door/window/westright{ dir = 1 }, -/obj/effect/spawner/random_spawners/blood_5, -/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, -/area/maintenance/trading) +/area/crew_quarters/trading) "dGk" = ( /obj/structure/railing{ dir = 1 @@ -36026,10 +35250,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) -"dGH" = ( -/obj/structure/chair/wood, -/turf/simulated/floor/carpet/green, -/area/crew_quarters/mrchangs) "dGI" = ( /turf/simulated/floor/plasteel{ icon_state = "browncorner" @@ -36751,20 +35971,6 @@ }, /turf/simulated/floor/engine, /area/maintenance/turbine) -"dJh" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/space) "dJi" = ( /obj/machinery/field/generator{ anchored = 1; @@ -37139,6 +36345,7 @@ pixel_x = -7; pixel_y = -10 }, +/obj/effect/spawner/random_spawners/blood_5, /turf/simulated/floor/plating, /area/maintenance/fpmaint) "dLg" = ( @@ -37191,10 +36398,6 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/sign/poster/official/random{ - pixel_x = -32; - pixel_y = 32 - }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) "dLx" = ( @@ -37661,6 +36864,30 @@ /obj/effect/decal/warning_stripes/southeast, /turf/simulated/floor/plasteel, /area/quartermaster/storage) +"dNt" = ( +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + dir = 4; + icon_state = "grass_edge_medium_corner" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/disposalpipe/junction/reversed, +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "dNv" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -37985,18 +37212,6 @@ /obj/structure/lattice/catwalk, /turf/space, /area/space) -"dOM" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/effect/decal/warning_stripes/northwest, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "dON" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden{ @@ -38011,19 +37226,6 @@ icon_state = "grimy" }, /area/chapel/main) -"dOX" = ( -/obj/machinery/door/airlock{ - locked = 1; - name = "Trading room"; - welded = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/firedoor, -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-cherry" - }, -/area/crew_quarters/trading) "dOY" = ( /obj/structure/cable{ icon_state = "1-2" @@ -38169,10 +37371,6 @@ icon_state = "dark" }, /area/crew_quarters/bar) -"dPH" = ( -/obj/structure/closet/toolcloset, -/turf/simulated/floor/plating, -/area/maintenance/trading) "dPL" = ( /obj/machinery/atmospherics/unary/heat_reservoir/heater{ dir = 1 @@ -38369,13 +37567,6 @@ }, /turf/simulated/floor/plating, /area/engineering/engine) -"dQA" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/east, -/turf/simulated/floor/plating, -/area/engineering/engine) "dQB" = ( /obj/machinery/light{ dir = 4 @@ -38433,25 +37624,6 @@ icon_state = "neutralfull" }, /area/quartermaster/miningdock) -"dQQ" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/item/twohanded/required/kirbyplants, -/obj/effect/decal/warning_stripes/west, -/obj/machinery/computer/security/telescreen/singularity{ - dir = 8; - pixel_x = -32 - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "dQR" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/drinks/bottle/vodka{ @@ -38463,39 +37635,6 @@ icon_state = "brown" }, /area/quartermaster/storage) -"dQS" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/landmark/start/engineer, -/turf/simulated/floor/plasteel{ - icon_state = "yellowfull" - }, -/area/engineering/engine) -"dQT" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/hologram/holopad, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/engineering/engine) "dQV" = ( /turf/simulated/floor/plasteel{ dir = 9; @@ -38531,30 +37670,6 @@ /obj/effect/decal/cleanable/blood, /turf/simulated/floor/plating, /area/maintenance/asmaint2) -"dRd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/storage/secure) -"dRe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/storage/secure) "dRf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -38654,11 +37769,6 @@ icon_state = "dark" }, /area/chapel/office) -"dRw" = ( -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/storage/secure) "dRB" = ( /obj/machinery/alarm{ dir = 4; @@ -38727,13 +37837,6 @@ /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel, /area/storage/eva) -"dRM" = ( -/obj/structure/closet/hydrant{ - pixel_x = 32 - }, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/maintenance/banya) "dRO" = ( /obj/machinery/door/airlock/public/glass{ id = "departureprivate"; @@ -38873,28 +37976,6 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/locker/locker_toilet) -"dSy" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/effect/decal/warning_stripes/east, -/turf/simulated/floor/plating, -/area/engineering/engine) -"dSz" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/door/poddoor/preopen{ - id_tag = "Singularity"; - name = "Singularity Blast Doors" - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "dSA" = ( /obj/item/radio/intercom{ pixel_x = -28 @@ -38909,18 +37990,6 @@ /obj/item/flashlight/lamp, /turf/simulated/floor/plating, /area/maintenance/library) -"dSC" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/effect/decal/warning_stripes/southwest, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "dSD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -39336,6 +38405,24 @@ /obj/structure/lattice/catwalk, /turf/space, /area/space) +"dUn" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp{ + pixel_x = -2; + pixel_y = 15 + }, +/obj/item/paper{ + pixel_x = -5 + }, +/obj/item/pen{ + pixel_x = 10; + pixel_y = 3 + }, +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/turf/simulated/floor/wood, +/area/civilian/vacantoffice) "dUo" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -39380,21 +38467,6 @@ }, /turf/simulated/floor/plasteel, /area/quartermaster/miningdock) -"dUA" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/warning_stripes/south, -/turf/simulated/floor/plating, -/area/engineering/engine) "dUC" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -39512,6 +38584,10 @@ }, /turf/simulated/floor/engine, /area/maintenance/turbine) +"dUT" = ( +/obj/machinery/door/airlock/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "dUX" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -39649,11 +38725,12 @@ }, /area/atmos) "dVx" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/newscaster{ - pixel_y = -30 +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -39759,15 +38836,6 @@ icon_state = "green" }, /area/hydroponics) -"dVW" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/effect/decal/warning_stripes/northwest, -/turf/simulated/floor/plating, -/area/engineering/engine) "dVX" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -39826,21 +38894,6 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/bar/atrium) -"dWf" = ( -/obj/machinery/hologram/holopad, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/turf/simulated/floor/carpet/green, -/area/crew_quarters/mrchangs) "dWg" = ( /obj/machinery/atmospherics/pipe/simple/insulated{ dir = 10 @@ -39960,15 +39013,6 @@ icon_state = "white" }, /area/crew_quarters/kitchen) -"dWC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, -/obj/effect/spawner/lootdrop/maintenance, -/obj/structure/table/wood, -/turf/simulated/floor/carpet, -/area/maintenance/casino) "dWD" = ( /obj/structure/cable{ icon_state = "1-8" @@ -40194,20 +39238,6 @@ icon_state = "white" }, /area/medical/medbay) -"dXn" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/decal/warning_stripes/north, -/turf/simulated/floor/plating, -/area/engineering/engine) "dXo" = ( /obj/structure/cable/yellow{ d1 = 2; @@ -40401,6 +39431,22 @@ icon_state = "whiteblue" }, /area/medical/biostorage) +"dXP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1; + scrub_Toxins = 0 + }, +/obj/item/camera_assembly, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -8; + pixel_y = 18 + }, +/obj/item/trash/cheesie{ + pixel_x = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/trading) "dXR" = ( /obj/structure/table, /obj/item/reagent_containers/spray/cleaner/medical{ @@ -40478,7 +39524,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dYd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -40563,7 +39609,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dYz" = ( /obj/effect/decal/warning_stripes/south, /obj/machinery/atmospherics/pipe/simple/visible{ @@ -40749,7 +39795,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dZk" = ( /obj/structure/lattice/catwalk, /obj/structure/disposalpipe/segment{ @@ -40786,21 +39832,11 @@ }, /area/maintenance/brig) "dZt" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/structure/window/reinforced, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/storage/box/teargas, -/obj/item/storage/box/teargas{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) +/obj/effect/decal/cleanable/dust, +/obj/structure/rack, +/obj/random/tool, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "dZu" = ( /obj/structure/window/reinforced{ dir = 4 @@ -41177,20 +40213,6 @@ icon_state = "neutralfull" }, /area/quartermaster/storage) -"ebY" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/machinery/light/small, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "ecb" = ( /obj/machinery/atmospherics/binary/pump{ desc = "Подаёт дыхательную смесь для смешивания с другими газами"; @@ -41236,16 +40258,6 @@ }, /turf/simulated/floor/plasteel, /area/engineering/engine) -"ecz" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/simulated/floor/carpet/blue, -/area/crew_quarters/trading) "ecF" = ( /obj/structure/table/reinforced, /obj/structure/extinguisher_cabinet{ @@ -41421,6 +40433,24 @@ icon_state = "green" }, /area/hallway/secondary/exit) +"eez" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dust, +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + icon_state = "grass_edge_medium_corner" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "eeD" = ( /obj/structure/cable{ icon_state = "1-4" @@ -41467,7 +40497,11 @@ }, /area/security/prisonershuttle) "eeL" = ( -/turf/simulated/wall/rust, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/carpet/black, /area/maintenance/casino) "efb" = ( /turf/simulated/floor/plasteel{ @@ -41777,21 +40811,20 @@ }, /area/toxins/explab) "eiC" = ( -/obj/structure/cable{ - icon_state = "2-4" +/obj/structure/flora/junglebush/c, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "1-4" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/junction/reversed, -/turf/simulated/floor/plating, +/turf/simulated/floor/grass, /area/maintenance/fpmaint) "eiH" = ( /obj/structure/curtain/black, @@ -41800,6 +40833,18 @@ icon_state = "caution" }, /area/maintenance/bar) +"eiQ" = ( +/obj/structure/closet/crate/can, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/item/trash/can{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/trading) "ejf" = ( /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/plasteel{ @@ -41927,6 +40972,14 @@ icon_state = "whitepurple" }, /area/medical/research/restroom) +"eki" = ( +/obj/machinery/door/window/eastleft{ + dir = 1; + req_access = list(10) + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "ekj" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment, @@ -42008,6 +41061,10 @@ icon_state = "escape" }, /area/hallway/secondary/exit/maint) +"ekT" = ( +/obj/structure/chair/stool, +/turf/simulated/floor/plating, +/area/maintenance/casino) "ekW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -42202,6 +41259,28 @@ icon_state = "darkblue" }, /area/turret_protected/ai) +"eoD" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable{ + color = "yellow"; + icon = 'icons/effects/crayondecal.dmi'; + icon_state = "w"; + pixel_x = -4; + pixel_y = 7 + }, +/turf/simulated/floor/glass/reinforced, +/area/maintenance/fpmaint) "eoF" = ( /obj/machinery/door/poddoor/shutters/preopen{ dir = 8; @@ -42249,11 +41328,6 @@ /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/carpet/purple, /area/crew_quarters/hor) -"epg" = ( -/obj/structure/closet/cardboard, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "epv" = ( /obj/structure/cable{ icon_state = "1-4" @@ -42345,16 +41419,13 @@ }, /area/maintenance/bar) "eqp" = ( -/obj/structure/computerframe, -/obj/machinery/light_switch{ - pixel_x = 24; - pixel_y = 24 - }, -/obj/machinery/light{ +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ dir = 1 }, -/turf/simulated/floor/plasteel/grimy, -/area/civilian/vacantoffice) +/obj/item/flag/species/vox, +/turf/simulated/floor/plating, +/area/maintenance/trading) "eqA" = ( /obj/structure/sign/securearea{ desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; @@ -42399,7 +41470,7 @@ /area/security/podbay) "eqQ" = ( /obj/machinery/door/poddoor{ - id_tag = "QMLoaddoor2"; + id_tag = "QMLoaddoor"; name = "supply dock loading door" }, /obj/machinery/conveyor{ @@ -42678,6 +41749,16 @@ }, /turf/simulated/floor/plating, /area/crew_quarters/hor) +"ett" = ( +/obj/item/ai_module/reset, +/obj/structure/table/glass, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) "etF" = ( /obj/effect/decal/cleanable/blood, /obj/machinery/atmospherics/pipe/simple/visible/universal{ @@ -42764,7 +41845,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "evo" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -42861,6 +41942,21 @@ }, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/courtroom) +"ewQ" = ( +/obj/random/tool, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkyellow" + }, +/area/maintenance/fpmaint) +"exf" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/decal/warning_stripes/northwest, +/turf/simulated/floor/plating, +/area/engineering/engine) "exh" = ( /obj/machinery/door/airlock/maintenance{ req_access = list(47) @@ -43116,6 +42212,18 @@ }, /turf/simulated/floor/carpet, /area/maintenance/tourist) +"eAh" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/warning_stripes/north, +/turf/simulated/floor/plating, +/area/engineering/engine) "eAm" = ( /obj/machinery/camera/motion{ c_tag = "Minisat AI Core North"; @@ -43144,6 +42252,13 @@ icon_state = "redcorner" }, /area/security/main) +"eAF" = ( +/obj/item/ai_module/quarantine, +/obj/structure/table/glass, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) "eAH" = ( /obj/effect/decal/warning_stripes/south, /obj/structure/cable{ @@ -43240,6 +42355,21 @@ icon_state = "dark" }, /area/chapel/office) +"eBA" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dust, +/obj/structure/grille/broken, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "eBI" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -43284,6 +42414,13 @@ icon_state = "neutral" }, /area/crew_quarters/locker) +"eCN" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/maintenance/casino) "eCO" = ( /obj/machinery/firealarm{ dir = 4; @@ -43303,6 +42440,26 @@ icon_state = "neutralfull" }, /area/crew_quarters/locker) +"eCV" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 4; + icon_state = "grass_edge_medium" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/simulated/floor/glass/reinforced, +/area/maintenance/fpmaint) "eCY" = ( /obj/machinery/camera{ c_tag = "Holodeck South"; @@ -43474,11 +42631,11 @@ /turf/simulated/floor/plasteel, /area/security/range) "eFo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/double, -/turf/simulated/floor/plasteel{ - icon_state = "showroomfloor" +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood/fancy/oak{ + icon_state = "fancy-wood-oak-broken7" }, /area/maintenance/banya) "eFr" = ( @@ -43587,6 +42744,26 @@ icon_state = "neutral" }, /area/hallway/secondary/exit) +"eGw" = ( +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Security SMG's" + }, +/obj/item/gun/projectile/automatic/wt550{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/projectile/automatic/wt550, +/obj/item/gun/projectile/automatic/wt550{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "eGz" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -43651,14 +42828,6 @@ icon_state = "whiteblue" }, /area/medical/reception) -"eHz" = ( -/obj/machinery/alarm{ - pixel_y = 22 - }, -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/double, -/turf/simulated/floor/wood/fancy/oak, -/area/maintenance/trading) "eHM" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -43929,6 +43098,14 @@ icon_state = "bar" }, /area/crew_quarters/theatre) +"eJQ" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/item/reagent_containers/food/drinks/mug/med, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/biostorage) "eJR" = ( /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" @@ -44077,18 +43254,6 @@ }, /turf/simulated/floor/plasteel, /area/atmos) -"eLU" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/warning_stripes/south, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "eMg" = ( /obj/machinery/door/airlock/glass{ name = "Cabin" @@ -44364,16 +43529,6 @@ icon_state = "neutralfull" }, /area/hallway/primary/central/sw) -"eOd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "eOr" = ( /obj/structure/table/wood, /obj/item/folder/red, @@ -44640,10 +43795,6 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central/sw) -"eSm" = ( -/obj/structure/table/wood, -/turf/simulated/floor/plasteel/grimy, -/area/civilian/vacantoffice) "eSo" = ( /obj/item/soap/syndie, /obj/item/toy/figure/syndie, @@ -44696,14 +43847,6 @@ /obj/structure/grille/broken, /turf/simulated/floor/plating, /area/maintenance/asmaint4) -"eSU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/wood, -/area/crew_quarters/serviceyard) "eTb" = ( /obj/machinery/door/airlock/glass{ id = "privateroom"; @@ -44765,7 +43908,7 @@ dir = 10; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "eTz" = ( /obj/structure/grille, /obj/effect/decal/cleanable/dirt, @@ -44782,6 +43925,23 @@ }, /turf/simulated/floor/plating, /area/maintenance/kitchen) +"eTC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "eTH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -45324,15 +44484,6 @@ icon_state = "whitebluefull" }, /area/medical/paramedic) -"eYX" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/turf/simulated/floor/carpet, -/area/crew_quarters/serviceyard) "eYY" = ( /obj/structure/cable{ icon_state = "1-2" @@ -45963,6 +45114,17 @@ icon_state = "dark" }, /area/security/permabrig) +"fhP" = ( +/obj/structure/table/wood, +/obj/effect/mapping_helpers/table_flip{ + dir = 1 + }, +/obj/item/seeds/grass{ + pixel_x = -6; + pixel_y = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "fhY" = ( /obj/structure/chair{ dir = 4 @@ -46235,7 +45397,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "fkX" = ( /obj/effect/decal/warning_stripes/east, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -46243,6 +45405,13 @@ }, /turf/simulated/floor/plasteel, /area/engineering/engine) +"flm" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) "flo" = ( /obj/structure/table/reinforced, /obj/machinery/light{ @@ -46291,6 +45460,13 @@ icon_state = "grimy" }, /area/hallway/secondary/entry/lounge) +"fme" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/lattice/catwalk, +/turf/space, +/area/space) "fmw" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -46316,7 +45492,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "fmF" = ( /obj/effect/decal/warning_stripes/north, /obj/machinery/hologram/holopad, @@ -46521,6 +45697,19 @@ icon_state = "tranquillite" }, /area/maintenance/kitchen) +"fpb" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 1; + icon_state = "grass_edge_medium" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/wood, +/obj/effect/mapping_helpers/table_flip{ + dir = 1 + }, +/turf/simulated/floor/glass/reinforced, +/area/maintenance/fpmaint) "fpl" = ( /turf/simulated/floor/plasteel{ dir = 6; @@ -46649,6 +45838,21 @@ "frD" = ( /turf/simulated/wall/r_wall, /area/atmos/control) +"frF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/green{ + color = ""; + icon_state = "grass_edge_medium" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "frJ" = ( /obj/machinery/atmospherics/unary/outlet_injector/on{ dir = 8; @@ -46871,17 +46075,6 @@ }, /turf/simulated/floor/plasteel, /area/quartermaster/office) -"fui" = ( -/obj/structure/cable/yellow{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/power/smes{ - charge = 2e+006 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "fuj" = ( /obj/structure/chair/comfy/brown{ dir = 8 @@ -46939,24 +46132,6 @@ /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plating, /area/toxins/launch) -"fvs" = ( -/obj/structure/table/wood, -/obj/item/clothing/mask/cigarette/cigar{ - pixel_x = -2; - pixel_y = 3 - }, -/obj/item/clothing/mask/cigarette/cigar{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/lighter/zippo{ - pixel_x = 8 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/plasteel/grimy, -/area/civilian/vacantoffice) "fvt" = ( /obj/structure/window/full/reinforced, /obj/structure/marker_beacon{ @@ -47077,6 +46252,25 @@ icon_state = "grimy" }, /area/maintenance/detectives_office) +"fwZ" = ( +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + dir = 8; + icon_state = "grass_edge_medium_corner" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/turf/simulated/floor/glass/reinforced, +/area/maintenance/fpmaint) "fxc" = ( /obj/machinery/atmospherics/unary/portables_connector{ dir = 1 @@ -47117,6 +46311,18 @@ /obj/item/clothing/head/welding, /turf/simulated/floor/bluegrid, /area/tcommsat/chamber) +"fxD" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/lattice/catwalk, +/turf/space, +/area/space) "fxR" = ( /obj/effect/decal/warning_stripes/red/hollow, /obj/structure/table/reinforced, @@ -47211,17 +46417,6 @@ icon_state = "red" }, /area/security/customs) -"fyJ" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/toxins/sm_test_chamber) "fzv" = ( /obj/structure/cable{ icon_state = "2-4" @@ -47445,6 +46640,23 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint3) +"fCr" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/clothing/shoes/combat/riot, +/obj/item/clothing/shoes/combat/riot, +/obj/item/clothing/shoes/combat/riot, +/obj/item/clothing/shoes/combat/riot, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "fCs" = ( /obj/structure/cable{ icon_state = "2-4" @@ -47764,6 +46976,21 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/locker/locker_toilet) +"fFG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable{ + icon = 'icons/effects/crayondecal.dmi'; + icon_state = "uboas" + }, +/obj/structure/table/wood, +/obj/effect/mapping_helpers/table_flip{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "neutral" + }, +/area/maintenance/trading) "fFM" = ( /obj/structure/cable{ icon_state = "1-2" @@ -47845,13 +47072,6 @@ }, /turf/simulated/floor/plating, /area/security/reception) -"fHb" = ( -/obj/structure/railing{ - dir = 5 - }, -/obj/structure/flora/ausbushes/genericbush, -/turf/simulated/floor/grass, -/area/maintenance/trading) "fHi" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -47883,20 +47103,6 @@ icon_state = "dark" }, /area/security/podbay) -"fHA" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/rodent, -/turf/simulated/floor/plating, -/area/maintenance/trading) "fHE" = ( /obj/structure/table/wood, /obj/item/toy/russian_revolver, @@ -47953,21 +47159,6 @@ }, /turf/space, /area/turret_protected/ai) -"fId" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor{ - id_tag = "engstorage"; - name = "Secure Storage Blast Doors" - }, -/obj/effect/decal/warning_stripes/west, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plasteel, -/area/storage/secure) "fIg" = ( /obj/machinery/light/small{ dir = 1 @@ -48033,6 +47224,18 @@ }, /turf/simulated/wall/r_wall, /area/tcommsat/chamber) +"fIM" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/lattice/catwalk, +/turf/space, +/area/space) "fIS" = ( /obj/machinery/light/small{ dir = 8 @@ -48070,6 +47273,14 @@ icon_state = "purple" }, /area/toxins/sm_test_chamber) +"fJU" = ( +/obj/structure/table/wood, +/obj/item/book/random, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/hallway/secondary/entry/commercial) "fKf" = ( /obj/machinery/portable_atmospherics/canister/carbon_dioxide{ anchored = 1 @@ -48195,7 +47406,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "fLz" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/atmospherics/pipe/simple/visible/yellow{ @@ -48476,12 +47687,6 @@ icon_state = "neutralfull" }, /area/engineering/engine) -"fPD" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/plasteel{ - icon_state = "yellowfull" - }, -/area/engineering/engine) "fPF" = ( /obj/structure/closet/secure_closet/security, /obj/effect/decal/warning_stripes/red/hollow, @@ -48541,11 +47746,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) -"fQv" = ( -/turf/simulated/floor/plasteel{ - icon_state = "yellowfull" - }, -/area/engineering/engine) "fQD" = ( /obj/structure/chair/comfy/red{ dir = 4 @@ -48640,10 +47840,10 @@ /turf/simulated/floor/plasteel, /area/medical/virology/lab) "fRL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small, -/obj/effect/landmark/tiles/damageturf, -/turf/simulated/floor/plating, +/obj/effect/turf_decal/siding/wood, +/obj/effect/spawner/random_spawners/rodent, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/carpet/red, /area/maintenance/casino) "fRS" = ( /obj/structure/disposalpipe/segment, @@ -48669,16 +47869,6 @@ icon_state = "neutralfull" }, /area/quartermaster/office) -"fSj" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/grille, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "fSo" = ( /obj/spacepod/sec{ dir = 4 @@ -48749,14 +47939,6 @@ /mob/living/simple_animal/cock/Commandor, /turf/simulated/floor/grass, /area/hydroponics) -"fTp" = ( -/obj/machinery/door/window/brigdoor/northleft{ - dir = 8; - locked = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/maintenance/trading) "fTs" = ( /obj/machinery/computer/security/telescreen/entertainment, /turf/simulated/wall, @@ -48808,21 +47990,15 @@ }, /area/turret_protected/aisat) "fTL" = ( -/obj/effect/spawner/random_spawners/rodent, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, +/obj/item/destTagger, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 + dir = 4 }, -/obj/structure/cable{ - icon_state = "2-4" +/turf/simulated/floor/plasteel{ + icon_state = "darkyellow" }, -/turf/simulated/floor/plating, -/area/maintenance/trading) +/area/maintenance/fpmaint) "fTY" = ( /obj/machinery/firealarm{ dir = 8; @@ -48859,14 +48035,10 @@ /turf/simulated/floor/plating, /area/hallway/secondary/exit) "fUo" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-cherry" +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" }, -/area/crew_quarters/trading) +/area/hallway/secondary/entry/commercial) "fUr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -48958,6 +48130,14 @@ icon_state = "yellow" }, /area/maintenance/electrical) +"fVz" = ( +/obj/item/trash/can{ + pixel_x = 6; + pixel_y = -6 + }, +/mob/living/simple_animal/moth, +/turf/simulated/floor/carpet, +/area/maintenance/trading) "fVA" = ( /obj/structure/table/wood, /obj/item/paicard, @@ -49110,6 +48290,13 @@ }, /turf/simulated/floor/plating, /area/security/hos) +"fWv" = ( +/obj/structure/table/reinforced, +/obj/item/clipboard, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) "fWz" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -49190,17 +48377,6 @@ icon_state = "dark" }, /area/security/podbay) -"fXc" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/double, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "fXj" = ( /obj/structure/table/reinforced, /obj/item/paper_bin{ @@ -49413,6 +48589,14 @@ /obj/item/radio/beacon/engine/tesling, /turf/simulated/floor/plating/airless, /area/space) +"fZE" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) "fZK" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/carpet/royalblack, @@ -49675,6 +48859,13 @@ icon_state = "wood-broken" }, /area/maintenance/kitchen) +"gcY" = ( +/obj/effect/decal/warning_stripes/northeastcorner, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/securearmory) "gds" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/machinery/hologram/holopad, @@ -49732,12 +48923,6 @@ icon_state = "wood-broken3" }, /area/maintenance/kitchen) -"geb" = ( -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "yellow" - }, -/area/engineering/engine) "geg" = ( /obj/machinery/newscaster{ pixel_y = 30 @@ -49832,6 +49017,15 @@ icon_state = "brown" }, /area/quartermaster/qm) +"gfs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "gfO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -49958,6 +49152,10 @@ }, /turf/simulated/floor/plating, /area/security/prisonershuttle) +"ghT" = ( +/obj/effect/spawner/random_spawners/wall_rusted_30, +/turf/simulated/wall, +/area/maintenance/banya) "ghY" = ( /obj/machinery/door_control{ desiredstate = 1; @@ -50261,6 +49459,30 @@ /obj/effect/landmark/start/security_officer, /turf/simulated/floor/plasteel, /area/security/customs) +"gmf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) +"gmi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/camera{ + c_tag = "Secure Armory West"; + dir = 4; + network = list("SS13","Security") + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securearmory) "gmk" = ( /obj/structure/cable{ icon_state = "1-2" @@ -50276,6 +49498,21 @@ icon_state = "grimy" }, /area/library) +"gml" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/vending_refill/custom{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/vending_refill/custom{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/hand_labeler, +/obj/item/stack/packageWrap, +/turf/simulated/floor/plasteel, +/area/storage/primary) "gmq" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small, @@ -50300,23 +49537,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint3) -"gmI" = ( -/obj/machinery/camera{ - c_tag = "Engine Room South"; - dir = 1; - network = list("Engineering","SS13") - }, -/obj/effect/decal/warning_stripes/south, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/mob/living/simple_animal/possum/Poppy, -/obj/structure/bed/dogbed/pet, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "gmO" = ( /turf/simulated/floor/plasteel{ icon_state = "redfull" @@ -50470,25 +49690,6 @@ /obj/machinery/light/small, /turf/simulated/floor/plating, /area/maintenance/asmaint3) -"goI" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/space) "goM" = ( /obj/structure/flora/grass/jungle, /turf/simulated/floor/grass, @@ -50673,6 +49874,18 @@ icon_state = "dark" }, /area/engineering/hardsuitstorage) +"gqz" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Vacant Office" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor, +/turf/simulated/floor/wood, +/area/civilian/vacantoffice) "gqS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -50696,6 +49909,14 @@ icon_state = "whitebluecorner" }, /area/medical/sleeper) +"grb" = ( +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "gre" = ( /obj/structure/bookcase, /turf/simulated/floor/wood{ @@ -50776,6 +49997,19 @@ /obj/effect/landmark/start/scientist, /turf/simulated/floor/plasteel, /area/toxins/xenobiology) +"gsm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "gss" = ( /obj/item/flag/nt, /obj/machinery/status_display{ @@ -50835,6 +50069,16 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plating, /area/maintenance/asmaint4) +"gtz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "gtC" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/hidden{ @@ -51001,6 +50245,16 @@ icon_state = "dark" }, /area/atmos) +"gwf" = ( +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/obj/machinery/flasher/portable, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/securearmory) "gwg" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/tiles/damageturf, @@ -51038,6 +50292,13 @@ }, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/courtroom) +"gwB" = ( +/obj/machinery/station_map/directional/east, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore) "gwH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -51127,6 +50388,20 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/library) +"gxx" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/clothing/gloves/combat/riot, +/obj/item/clothing/gloves/combat/riot, +/obj/item/clothing/gloves/combat/riot, +/obj/item/clothing/gloves/combat/riot, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "gxI" = ( /obj/structure/table, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -51275,6 +50550,13 @@ icon_state = "grimy" }, /area/chapel/office) +"gzM" = ( +/obj/effect/decal/warning_stripes/northeastcorner, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "gzO" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/window/reinforced{ @@ -51300,29 +50582,6 @@ /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/plasteel, /area/toxins/storage) -"gzX" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/warning_stripes/west, -/obj/machinery/door/poddoor/preopen{ - id_tag = "Singularity"; - name = "Singularity Blast Doors" - }, -/turf/simulated/floor/plating, -/area/engineering/engine) "gAB" = ( /obj/effect/spawner/window/reinforced, /obj/structure/disposalpipe/segment, @@ -51525,14 +50784,6 @@ icon_state = "dark" }, /area/medical/cryo) -"gCI" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/hallway/secondary/entry/commercial) "gDm" = ( /obj/structure/cable{ icon_state = "1-2" @@ -51545,6 +50796,23 @@ icon_state = "white" }, /area/medical/medbay) +"gDu" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "gDy" = ( /obj/structure/flora/ausbushes/ppflowers, /obj/structure/window/reinforced{ @@ -51556,16 +50824,12 @@ /turf/simulated/floor/grass, /area/hydroponics) "gDz" = ( -/obj/structure/chair/sofa/pew/left{ - dir = 4 - }, /obj/effect/decal/cleanable/dust, -/obj/machinery/atmospherics/unary/vent_pump/on{ +/obj/effect/turf_decal/siding/wood/pallet{ dir = 1 }, -/turf/simulated/floor/wood/fancy/oak{ - icon_state = "fancy-wood-oak-broken7" - }, +/obj/item/reagent_containers/food/snacks/oliviersalad, +/turf/simulated/floor/plating, /area/maintenance/banya) "gDB" = ( /turf/simulated/wall, @@ -51582,16 +50846,6 @@ }, /turf/simulated/floor/plating, /area/toxins/xenobiology) -"gDQ" = ( -/obj/structure/grille, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/decal/warning_stripes/southwest, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "gDV" = ( /obj/machinery/alarm{ dir = 1; @@ -51636,6 +50890,10 @@ icon_state = "white" }, /area/medical/medbay) +"gEp" = ( +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/maintenance/banya) "gEq" = ( /obj/structure/table, /obj/item/storage/toolbox/mechanical, @@ -51885,6 +51143,13 @@ color = "orange" }, /area/crew_quarters/courtroom) +"gGP" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/carpet/black, +/area/maintenance/casino) "gGZ" = ( /obj/machinery/door_control{ id = "SecMedPrivOutside"; @@ -52299,23 +51564,6 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/wood/fancy/cherry, /area/lawoffice) -"gLd" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - density = 1; - dir = 1; - icon_state = "closed"; - id_tag = "Traiders Windows"; - name = "Traiders Privacy Shutters"; - opacity = 1 - }, -/obj/machinery/door/window/westright{ - dir = 2; - name = "Front Desk" - }, -/obj/item/stack/spacecash/c20, -/turf/simulated/floor/plating, -/area/crew_quarters/trading) "gLn" = ( /turf/simulated/floor/plasteel{ icon_state = "redcorner" @@ -53002,6 +52250,20 @@ icon_state = "dark" }, /area/turret_protected/ai) +"gQU" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/sign/fire{ + pixel_x = 32 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) "gQV" = ( /obj/structure/grille, /turf/simulated/floor/plating, @@ -53029,6 +52291,20 @@ icon_state = "neutral" }, /area/maintenance/consarea_virology) +"gRA" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "gRN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -53238,6 +52514,19 @@ }, /turf/simulated/floor/engine/o2, /area/atmos) +"gUf" = ( +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + icon_state = "grass_edge_medium_corner" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/glass/reinforced, +/area/maintenance/fpmaint) "gUN" = ( /obj/structure/closet/firecloset, /turf/simulated/floor/plating, @@ -53413,10 +52702,33 @@ icon_state = "dark" }, /area/toxins/xenobiology) +"gWn" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "gWq" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/carpet, /area/crew_quarters/bar/atrium) +"gWu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "gWz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -53447,6 +52759,19 @@ }, /turf/simulated/floor/plating, /area/crew_quarters/courtroom) +"gWT" = ( +/obj/structure/table/reinforced, +/obj/item/ai_module/reset, +/obj/item/flash, +/obj/item/flash, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/requests_console{ + department = "Tech Storage"; + name = "Tech Storage Requests Console"; + pixel_y = 32 + }, +/turf/simulated/floor/plasteel, +/area/storage/tech) "gXb" = ( /turf/simulated/floor/plasteel{ icon_state = "whitepurple" @@ -53472,7 +52797,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, -/area/construction/hallway) +/area/aisat/aihallway) "gXk" = ( /obj/structure/cable{ icon_state = "1-2" @@ -53586,6 +52911,24 @@ icon_state = "white" }, /area/medical/medbay) +"gYo" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) "gYp" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -53663,6 +53006,26 @@ icon_state = "bluecorner" }, /area/hallway/primary/central/south) +"gZt" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "gZC" = ( /obj/structure/morgue, /obj/effect/decal/warning_stripes/northwest, @@ -53724,6 +53087,11 @@ icon_state = "greencorner" }, /area/hallway/secondary/exit) +"haN" = ( +/obj/item/chair, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "haO" = ( /obj/machinery/computer/podtracker, /obj/machinery/light{ @@ -53871,22 +53239,6 @@ icon_state = "neutralfull" }, /area/quartermaster/office) -"hdk" = ( -/obj/structure/table/glass, -/obj/item/storage/box/gloves{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/masks, -/obj/item/reagent_containers/spray/cleaner/medical{ - desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; - name = "Surgery Cleaner" - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whiteblue" - }, -/area/medical/surgery/south) "hdm" = ( /obj/structure/cable{ icon_state = "1-2" @@ -54030,7 +53382,7 @@ name = "Escape Pod Airlock" }, /turf/simulated/floor/plating, -/area/construction/hallway) +/area/aisat/aihallway) "heZ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -54046,6 +53398,13 @@ icon_state = "whitebluefull" }, /area/medical/reception) +"hfl" = ( +/obj/effect/decal/warning_stripes/northwest, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "hfp" = ( /obj/effect/spawner/window/reinforced/plasma, /obj/structure/cable, @@ -54148,6 +53507,12 @@ }, /turf/simulated/floor/plating, /area/security/warden) +"hgP" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "hgQ" = ( /obj/structure/table, /obj/item/folder/yellow, @@ -54234,11 +53599,13 @@ }, /area/hallway/primary/central/north) "hhI" = ( -/obj/machinery/newscaster{ - pixel_x = -30 +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random_spawners/rodent, +/obj/item/storage/fancy/glowsticks_box, +/turf/simulated/floor/plasteel{ + icon_state = "hydrofloor" }, -/turf/simulated/floor/plasteel/grimy, -/area/civilian/vacantoffice) +/area/maintenance/trading) "hhQ" = ( /obj/structure/rack, /obj/item/tank/internals/oxygen, @@ -54327,12 +53694,6 @@ icon_state = "neutralcorner" }, /area/maintenance/asmaint4) -"hjN" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, -/turf/simulated/floor/plasteel/grimy, -/area/civilian/vacantoffice) "hjT" = ( /obj/effect/mapping_helpers/airlock/unres{ dir = 1 @@ -54981,6 +54342,21 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/maintenance/disposal) +"hrK" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 1; + icon_state = "grass_edge_medium" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/disposalpipe/broken{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "hrL" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -54997,6 +54373,15 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/locker/locker_toilet) +"hrP" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 4; + icon_state = "grass_edge_medium" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "hrW" = ( /obj/item/radio/intercom{ pixel_y = 28 @@ -55060,6 +54445,21 @@ icon_state = "blue" }, /area/bridge/checkpoint/south) +"hsk" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 8; + icon_state = "grass_edge_medium" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/glass/reinforced, +/area/maintenance/fpmaint) "hsp" = ( /turf/simulated/wall, /area/maintenance/tourist) @@ -55180,18 +54580,11 @@ /turf/simulated/floor/plating, /area/maintenance/asmaint2) "huw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/structure/flora/ausbushes, +/obj/structure/railing{ + dir = 1 }, -/obj/effect/landmark/tiles/burnturf, -/turf/simulated/floor/carpet, +/turf/simulated/floor/grass, /area/maintenance/casino) "huC" = ( /obj/structure/chair/stool, @@ -55406,16 +54799,6 @@ /obj/structure/grille/broken, /turf/simulated/floor/plating, /area/maintenance/engineering) -"hxk" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor/northleft{ - locked = 1 - }, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/wood/fancy/oak{ - icon_state = "fancy-wood-oak-broken7" - }, -/area/maintenance/trading) "hxp" = ( /obj/effect/decal/warning_stripes/northwest, /obj/machinery/vending/plasmaresearch, @@ -55553,6 +54936,38 @@ icon_state = "bluefull" }, /area/bridge/checkpoint/south) +"hzg" = ( +/obj/machinery/light, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/obj/structure/closet/secure_closet/quartermaster, +/obj/item/fulton_core, +/obj/item/extraction_pack, +/obj/item/flash, +/obj/item/megaphone, +/obj/item/gps{ + desc = "A positioning system designed to keep an eye on your fellow workers."; + gpstag = "CARG0"; + icon_state = "gps-m" + }, +/obj/item/cartridge/quartermaster{ + pixel_x = -1; + pixel_y = 7 + }, +/obj/item/cartridge/quartermaster{ + pixel_x = -3 + }, +/obj/item/cartridge/quartermaster{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/clipboard, +/obj/item/mining_voucher, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/qm) "hzk" = ( /obj/structure/cable{ icon_state = "4-8" @@ -55615,6 +55030,15 @@ /obj/effect/decal/warning_stripes/southwestcorner, /turf/simulated/floor/plating, /area/maintenance/disposal) +"hAy" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engineering/engine) "hAC" = ( /obj/machinery/atmospherics/pipe/manifold/visible{ desc = "Труба содержит газ для обработки и после возвращает его обратно в трубу смешивания"; @@ -55643,12 +55067,6 @@ /obj/item/extinguisher/mini, /turf/simulated/floor/plasteel, /area/atmos) -"hAY" = ( -/obj/structure/table/wood, -/obj/item/taperecorder, -/obj/effect/spawner/lootdrop/officetoys, -/turf/simulated/floor/plasteel/grimy, -/area/civilian/vacantoffice) "hBg" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -55666,22 +55084,6 @@ icon_state = "neutralcorner" }, /area/maintenance/asmaint4) -"hBD" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/spawner/random_spawners/blood_5, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "hBH" = ( /obj/machinery/atmospherics/unary/outlet_injector/on{ dir = 8; @@ -55887,6 +55289,20 @@ icon_state = "bar" }, /area/clownoffice) +"hDj" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "hDv" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/chair/wood{ @@ -56069,9 +55485,10 @@ /turf/simulated/floor/plasteel, /area/storage/eva) "hFX" = ( -/obj/machinery/hologram/holopad, -/turf/simulated/floor/wood, -/area/civilian/vacantoffice) +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/carpet, +/area/maintenance/trading) "hGm" = ( /obj/structure/chair/office/light{ dir = 4 @@ -56088,6 +55505,15 @@ }, /turf/simulated/floor/carpet, /area/medical/psych) +"hGy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable{ + color = "771919"; + icon = 'icons/effects/crayondecal.dmi'; + icon_state = "i" + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "hGI" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/writing, @@ -56258,10 +55684,21 @@ }, /turf/simulated/floor/plasteel, /area/hallway/secondary/exit) -"hJA" = ( -/obj/machinery/computer/arcade, -/turf/simulated/floor/carpet, -/area/maintenance/casino) +"hJr" = ( +/obj/machinery/power/terminal, +/obj/effect/decal/warning_stripes/south, +/obj/structure/cable/yellow, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plasteel, +/area/engineering/controlroom) "hJC" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/snacks/mint, @@ -56425,6 +55862,16 @@ icon_state = "neutralfull" }, /area/crew_quarters/locker) +"hKK" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "hKL" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/green{ @@ -56722,6 +56169,11 @@ icon_state = "neutralfull" }, /area/quartermaster/storage) +"hOI" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkredfull" + }, +/area/security/securearmory) "hOJ" = ( /obj/structure/chair/wood{ dir = 4 @@ -56819,6 +56271,16 @@ }, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/courtroom) +"hPZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "hQg" = ( /obj/structure/cable{ icon_state = "1-2" @@ -56988,9 +56450,16 @@ }, /area/quartermaster/miningdock) "hRC" = ( -/obj/structure/table/wood, -/obj/item/storage/briefcase, -/turf/simulated/floor/plasteel/grimy, +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/simulated/floor/wood, /area/civilian/vacantoffice) "hRD" = ( /obj/structure/bed, @@ -57021,15 +56490,6 @@ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' }, /area/toxins/test_area) -"hSo" = ( -/obj/machinery/newscaster{ - pixel_x = -30 - }, -/obj/structure/dresser, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "hSs" = ( /obj/structure/chair/comfy/brown, /obj/effect/landmark/start/detective, @@ -57222,6 +56682,10 @@ "hUX" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance/double, +/obj/structure/cable, +/obj/machinery/power/apc{ + pixel_y = -26 + }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) "hVe" = ( @@ -57236,6 +56700,17 @@ icon_state = "blue" }, /area/bridge/checkpoint/south) +"hVu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "hVw" = ( /obj/structure/closet/crate/medical, /obj/item/reagent_containers/spray/cleaner{ @@ -57306,30 +56781,6 @@ }, /turf/simulated/floor/plasteel, /area/engineering/engine) -"hWb" = ( -/obj/effect/decal/warning_stripes/red/hollow, -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/obj/machinery/door/window{ - dir = 1; - name = "Secure Armory"; - req_access = list(1) - }, -/obj/item/clothing/suit/armor/laserproof, -/obj/item/gun/energy/ionrifle, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "hWd" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -57529,6 +56980,13 @@ icon_state = "red" }, /area/security/processing) +"hYR" = ( +/obj/machinery/vending/crittercare, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/serviceyard) "hZa" = ( /obj/structure/table/reinforced, /obj/item/paicard, @@ -57625,6 +57083,13 @@ icon_state = "caution" }, /area/maintenance/asmaint4) +"iaH" = ( +/obj/effect/decal/warning_stripes/west, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "ibj" = ( /obj/structure/cable{ icon_state = "0-8" @@ -58027,24 +57492,6 @@ icon_state = "whitebluecorner" }, /area/medical/biostorage) -"igH" = ( -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Security SMG's" - }, -/obj/item/gun/projectile/automatic/wt550{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/projectile/automatic/wt550, -/obj/item/gun/projectile/automatic/wt550{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "igL" = ( /obj/machinery/light/small{ dir = 8 @@ -58320,16 +57767,6 @@ icon_state = "grimy" }, /area/chapel/office) -"ike" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-cherry" - }, -/area/crew_quarters/trading) "ikf" = ( /obj/item/flag/nt, /obj/structure/cable{ @@ -58822,18 +58259,6 @@ }, /turf/simulated/floor/plasteel, /area/hydroponics) -"ipV" = ( -/obj/structure/closet/crate, -/obj/item/reagent_containers/food/snacks/carpmeat, -/obj/item/reagent_containers/food/snacks/carpmeat, -/obj/effect/decal/cleanable/cobweb2, -/obj/item/clothing/gloves/color/yellow, -/obj/item/stack/spacecash/c50, -/obj/effect/decal/remains/mouse, -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-cherry" - }, -/area/crew_quarters/trading) "iqb" = ( /obj/machinery/firealarm{ dir = 8; @@ -59013,15 +58438,6 @@ icon_state = "darkblue" }, /area/bridge) -"irI" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/maintenance/trading) "irJ" = ( /turf/simulated/wall/r_wall, /area/engineering/mechanic_workshop/expedition) @@ -59055,6 +58471,18 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"isc" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/lattice/catwalk, +/turf/space, +/area/space) "iso" = ( /obj/structure/chair{ dir = 4 @@ -59266,6 +58694,19 @@ }, /turf/simulated/floor/plating, /area/maintenance/disposal) +"iuJ" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 8; + icon_state = "grass_edge_medium" + }, +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + dir = 1; + icon_state = "grass_edge_medium_corner" + }, +/turf/simulated/floor/glass/reinforced, +/area/maintenance/fpmaint) "iuQ" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -59508,18 +58949,6 @@ icon_state = "darkred" }, /area/security/evidence) -"ixm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/camera{ - c_tag = "Secure Armory West"; - dir = 4; - network = list("SS13","Security") - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkred" - }, -/area/security/securearmory) "ixo" = ( /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel{ @@ -59591,6 +59020,15 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/courtroom) +"izn" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/toxins/sm_test_chamber) "izC" = ( /obj/structure/rack{ dir = 8; @@ -59936,6 +59374,19 @@ }, /turf/simulated/floor/plating, /area/maintenance/kitchen) +"iEB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 + }, +/obj/item/paper/deltainfo, +/obj/effect/decal/cleanable{ + color = "771919"; + icon = 'icons/effects/crayondecal.dmi'; + icon_state = "face" + }, +/turf/simulated/floor/carpet, +/area/maintenance/trading) "iEY" = ( /obj/effect/decal/warning_stripes/yellow, /obj/machinery/disposal, @@ -60663,13 +60114,6 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/engineering/engine) -"iNh" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/structure/closet/walllocker/emerglocker/east, -/turf/simulated/floor/plating, -/area/maintenance/trading) "iNk" = ( /obj/machinery/atmospherics/pipe/simple/visible/green{ desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; @@ -60753,9 +60197,10 @@ }, /area/chapel/office) "iNJ" = ( -/obj/structure/table/wood, -/obj/item/camera, -/turf/simulated/floor/plasteel/grimy, +/obj/structure/chair/office/light{ + dir = 1 + }, +/turf/simulated/floor/wood, /area/civilian/vacantoffice) "iNR" = ( /obj/effect/decal/cleanable/dirt, @@ -60789,6 +60234,42 @@ icon_state = "neutralcorner" }, /area/security/lobby) +"iOl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/closet/firecloset, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) +"iOo" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/ai_module/oxygen, +/obj/item/ai_module/one_crew_member, +/obj/item/ai_module/purge, +/obj/item/ai_module/antimov, +/obj/structure/table/glass, +/obj/machinery/door/window{ + base_state = "right"; + dir = 2; + icon_state = "right"; + name = "Core Modules"; + req_access = list(20) + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) "iOv" = ( /obj/structure/cable{ icon_state = "2-4" @@ -60835,15 +60316,6 @@ "iOD" = ( /turf/simulated/wall/r_wall, /area/security/checkpoint/south) -"iOH" = ( -/obj/structure/chair/stool, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/landmark/event/xeno_spawn, -/turf/simulated/floor/carpet, -/area/maintenance/casino) "iOJ" = ( /obj/structure/window/reinforced{ dir = 1; @@ -60882,13 +60354,6 @@ icon_state = "neutralfull" }, /area/atmos) -"iOV" = ( -/obj/effect/decal/warning_stripes/red, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkred" - }, -/area/security/securearmory) "iPd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -60988,6 +60453,11 @@ icon_state = "whitepurple" }, /area/medical/research) +"iRb" = ( +/obj/structure/flora/ausbushes, +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/grass, +/area/maintenance/fpmaint) "iRd" = ( /obj/machinery/camera{ c_tag = "Research Lobby"; @@ -61033,6 +60503,30 @@ icon_state = "neutralcorner" }, /area/maintenance/asmaint4) +"iSJ" = ( +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + dir = 4; + icon_state = "grass_edge_medium_corner" + }, +/obj/effect/spawner/random_spawners/rodent, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + dir = 1; + icon_state = "grass_edge_medium_corner" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "iSO" = ( /turf/simulated/wall/rust, /area/maintenance/tourist) @@ -61474,12 +60968,20 @@ /obj/effect/decal/warning_stripes/northwest, /turf/simulated/floor/plating, /area/maintenance/portsolar) -"iYh" = ( +"iYj" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, /obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/obj/effect/turf_decal/siding/white{ + dir = 6 + }, /turf/simulated/floor/plasteel{ - icon_state = "neutralfull" + icon_state = "showroomfloor" }, -/area/storage/secure) +/area/maintenance/banya) "iYl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -61732,6 +61234,17 @@ icon_state = "purple" }, /area/quartermaster/miningdock) +"jbg" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "jby" = ( /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/plasteel, @@ -61810,26 +61323,6 @@ icon_state = "neutralcorner" }, /area/maintenance/asmaint4) -"jct" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/grille, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) -"jcB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/crew_quarters/trading) "jcR" = ( /obj/structure/cable{ icon_state = "4-8" @@ -61852,6 +61345,25 @@ }, /turf/simulated/floor/plating, /area/medical/reception) +"jdc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/mob/living/simple_animal/hostile/lizard/croco/Gena, +/obj/machinery/shower{ + dir = 4; + pixel_y = 4; + tag = "icon-shower (EAST)" + }, +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/maintenance/banya) "jdn" = ( /obj/structure/table/wood, /obj/machinery/recharger{ @@ -61960,6 +61472,20 @@ }, /turf/simulated/floor/plating, /area/maintenance/engineering) +"jeu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/east, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "jev" = ( /obj/structure/chair/comfy/red{ dir = 8 @@ -62015,6 +61541,23 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint4) +"jfi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/mask/cigarette/richard{ + pixel_x = 13; + pixel_y = -12 + }, +/obj/item/reagent_containers/glass/bottle/nutrient/rh{ + pixel_x = 11; + pixel_y = -12 + }, +/obj/effect/decal/cleanable{ + color = "771919"; + icon = 'icons/effects/crayondecal.dmi'; + icon_state = "e" + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "jfj" = ( /obj/machinery/firealarm{ dir = 8; @@ -62135,22 +61678,6 @@ /obj/structure/grille, /turf/space, /area/space) -"jhc" = ( -/obj/effect/decal/warning_stripes/southeast, -/obj/machinery/r_n_d/circuit_imprinter{ - pixel_x = -1; - pixel_y = 3 - }, -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Research Request Console"; - pixel_x = 30 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/toxins/lab) "jhm" = ( /obj/effect/decal/warning_stripes/southwest, /turf/simulated/floor/plasteel, @@ -62385,6 +61912,13 @@ }, /turf/simulated/floor/engine, /area/toxins/test_chamber) +"jjF" = ( +/obj/item/ai_module/freeform, +/obj/structure/table/glass, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) "jjT" = ( /obj/machinery/dna_scannernew, /turf/simulated/floor/plasteel{ @@ -62505,6 +62039,33 @@ icon_state = "darkblue" }, /area/turret_protected/ai) +"jlr" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/ai_module/crewsimov, +/obj/item/ai_module/freeformcore, +/obj/item/ai_module/corp, +/obj/item/ai_module/paladin, +/obj/item/ai_module/robocop, +/obj/structure/table/glass, +/obj/machinery/door/window{ + base_state = "right"; + dir = 2; + icon_state = "right"; + name = "Core Modules"; + req_access = list(20) + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) "jlz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -62557,6 +62118,26 @@ icon_state = "solarpanel" }, /area/solar/starboard) +"jmF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "purplefull" + }, +/area/medical/research/nhallway) "jmK" = ( /obj/structure/girder, /obj/effect/decal/cleanable/dirt, @@ -62610,6 +62191,32 @@ icon_state = "bar" }, /area/maintenance/tourist) +"jng" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/structure/sign/poster/random{ + pixel_y = -32 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor{ + dir = 8; + id = "comdel" + }, +/obj/structure/closet/cardboard, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) +"jnj" = ( +/obj/machinery/station_map/directional/south, +/turf/simulated/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/crew_quarters/locker) "jnn" = ( /obj/structure/cable{ icon_state = "2-4" @@ -62710,9 +62317,6 @@ icon_state = "dark" }, /area/security/permabrig) -"joB" = ( -/turf/simulated/wall/r_wall, -/area/security/permahallway) "joM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -62907,6 +62511,10 @@ icon_state = "darkred" }, /area/security/permabrig) +"jqt" = ( +/obj/effect/spawner/random_spawners/wall_rusted_30, +/turf/simulated/wall, +/area/maintenance/casino) "jqE" = ( /obj/machinery/porta_turret, /obj/machinery/ai_status_display{ @@ -63169,6 +62777,23 @@ icon_state = "grimy" }, /area/maintenance/library) +"jtq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/random/tool, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/maintenance/trading) "jtr" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -63246,6 +62871,13 @@ icon_state = "caution" }, /area/atmos) +"jue" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/carpet, +/area/crew_quarters/serviceyard) "juf" = ( /obj/effect/decal/warning_stripes/south, /obj/machinery/newscaster{ @@ -63264,9 +62896,26 @@ "jun" = ( /turf/simulated/floor/wood/fancy/cherry, /area/lawoffice) +"juw" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/clothing/head/helmet/alt, +/obj/item/clothing/head/helmet/alt, +/obj/item/clothing/head/helmet/alt, +/obj/item/clothing/head/helmet/alt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "juy" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/tripple, +/obj/machinery/light/small, +/obj/machinery/slot_machine, /turf/simulated/floor/plating, /area/maintenance/casino) "juL" = ( @@ -63563,7 +63212,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "jxT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -63860,15 +63509,6 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel, /area/bridge/vip) -"jBm" = ( -/obj/effect/decal/warning_stripes/north, -/obj/item/radio/intercom{ - pixel_x = 28 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "jBs" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -64069,13 +63709,6 @@ icon_state = "redfull" }, /area/crew_quarters/kitchen) -"jDw" = ( -/obj/structure/closet/l3closet/security, -/obj/effect/decal/warning_stripes/red, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "jDz" = ( /obj/structure/sign/nosmoking_1{ pixel_y = 32 @@ -64161,6 +63794,16 @@ icon_state = "brown" }, /area/quartermaster/office) +"jEO" = ( +/obj/machinery/flasher/portable, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/securearmory) "jFc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/decal/cleanable/dirt, @@ -64310,17 +63953,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, /area/maintenance/tourist) -"jHA" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/spawner/random_spawners/rodent, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "jHC" = ( /turf/simulated/wall/r_wall/rust, /area/toxins/launch) @@ -64692,14 +64324,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/brig) -"jKY" = ( -/obj/structure/table/reinforced, -/obj/item/clipboard, -/obj/item/mining_voucher, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/bridge) "jLc" = ( /obj/structure/cable{ icon_state = "4-8" @@ -64926,23 +64550,6 @@ icon_state = "darkred" }, /area/space) -"jPK" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/head/helmet/alt, -/obj/item/clothing/shoes/jackboots/armored, -/obj/item/clothing/gloves/color/black/ballistic, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "jPU" = ( /obj/structure/chair/e_chair{ dir = 1 @@ -65747,6 +65354,13 @@ /obj/effect/spawner/random_spawners/rodent, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"jZW" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central/south) "jZY" = ( /obj/item/storage/fancy/cigarettes/cigpack_robust, /obj/item/lighter, @@ -65776,25 +65390,6 @@ icon_state = "dark" }, /area/crew_quarters/theatre) -"kaB" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/ammo_box/shotgun/beanbag, -/obj/item/ammo_box/shotgun/beanbag{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/ammo_box/shotgun/tranquilizer{ - pixel_x = -6; - pixel_y = 6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "kaE" = ( /obj/structure/sign/securearea, /turf/simulated/wall/r_wall, @@ -65824,6 +65419,13 @@ "kaX" = ( /turf/simulated/floor/mech_bay_recharge_floor, /area/assembly/chargebay) +"kbF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "kbT" = ( /obj/structure/cable, /obj/effect/spawner/window/reinforced/polarized{ @@ -66095,23 +65697,6 @@ icon_state = "dark" }, /area/security/permabrig) -"kfr" = ( -/obj/machinery/access_button{ - command = "cycle_exterior"; - frequency = 1379; - master_tag = "engineering_west_airlock"; - name = "exterior access button"; - pixel_x = 20; - pixel_y = 20; - req_access = list(10,13) - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "kfS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -66157,37 +65742,6 @@ /obj/structure/closet/radiation, /turf/simulated/floor/engine, /area/toxins/sm_test_chamber) -"kgy" = ( -/obj/machinery/light, -/obj/machinery/newscaster{ - pixel_y = -30 - }, -/obj/structure/closet/secure_closet/quartermaster, -/obj/item/fulton_core, -/obj/item/extraction_pack, -/obj/item/flash, -/obj/item/megaphone, -/obj/item/gps{ - desc = "A positioning system designed to keep an eye on your fellow workers."; - gpstag = "CARG0"; - icon_state = "gps-m" - }, -/obj/item/cartridge/quartermaster{ - pixel_x = -1; - pixel_y = 7 - }, -/obj/item/cartridge/quartermaster{ - pixel_x = -3 - }, -/obj/item/cartridge/quartermaster{ - pixel_x = 5; - pixel_y = 3 - }, -/obj/item/clipboard, -/turf/simulated/floor/plasteel{ - icon_state = "brown" - }, -/area/quartermaster/qm) "kgz" = ( /obj/structure/girder, /turf/simulated/floor/plating, @@ -66323,6 +65877,25 @@ icon_state = "browncorner" }, /area/hallway/primary/fore) +"kiM" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/ammo_box/shotgun/buck{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/shotgun/buck, +/obj/item/ammo_box/shotgun{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Lethal Bullets" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "kji" = ( /obj/structure/table/reinforced, /obj/item/radio, @@ -66467,6 +66040,22 @@ icon_state = "bar" }, /area/maintenance/tourist) +"kkW" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + icon_state = "grass_edge_medium" + }, +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 1; + icon_state = "grass_edge_medium" + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_containers/glass/bottle/nutrient/l4z{ + pixel_y = 13 + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "klb" = ( /obj/structure/grille, /obj/effect/decal/warning_stripes/south, @@ -66692,7 +66281,7 @@ dir = 4; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "knb" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -66748,6 +66337,13 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/starboard) +"knT" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/southwest, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "knU" = ( /obj/machinery/door/window/brigdoor{ dir = 2; @@ -66774,17 +66370,6 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central/north) -"kox" = ( -/obj/structure/table/wood, -/obj/machinery/fishtank/bowl{ - pixel_y = 5 - }, -/obj/item/reagent_containers/glass/bucket, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = -32 - }, -/turf/simulated/floor/carpet, -/area/crew_quarters/serviceyard) "koy" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -66968,16 +66553,6 @@ /obj/structure/noticeboard, /turf/simulated/wall, /area/quartermaster/storage) -"krc" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 26 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "krh" = ( /obj/effect/turf_decal/siding/brown{ dir = 4 @@ -67319,19 +66894,18 @@ }, /area/medical/medbay2) "kwq" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/machinery/door/airlock{ + locked = 1; + name = "Trading room"; + welded = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/glass/reinforced, -/area/maintenance/trading) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) "kwr" = ( /turf/simulated/floor/plasteel{ icon_state = "white" @@ -67349,6 +66923,22 @@ /obj/effect/decal/remains/human, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"kwQ" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/door_control{ + desiredstate = 1; + id = "toilet_arriv"; + name = "Toilet Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/hallway/secondary/entry/commercial) "kxq" = ( /obj/structure/table/reinforced, /obj/item/storage/box/flashbangs{ @@ -67592,6 +67182,15 @@ /obj/effect/landmark/start/security_officer, /turf/simulated/floor/plasteel, /area/security/main) +"kzR" = ( +/obj/effect/decal/cleanable/dust, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/maintenance/banya) "kzU" = ( /obj/machinery/recharge_station, /obj/effect/decal/cleanable/dirt, @@ -67735,16 +67334,33 @@ "kBv" = ( /turf/simulated/wall, /area/maintenance/asmaint3) -"kBD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced, -/obj/item/decorations/sticky_decorations/flammable/ghost, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 26 +"kBw" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 }, -/turf/simulated/floor/plating, -/area/crew_quarters/trading) +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/power/apc{ + pixel_y = -26 + }, +/obj/structure/cable, +/obj/item/storage/box/barrier, +/obj/item/storage/box/barrier{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/barrier{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/barrier{ + pixel_x = 6; + pixel_y = -6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "kBJ" = ( /obj/effect/decal/remains/human, /obj/effect/landmark/event/xeno_spawn, @@ -67904,6 +67520,13 @@ icon_state = "darkblue" }, /area/crew_quarters/theatre) +"kDB" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/grille/broken, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "kDH" = ( /obj/structure/cable{ icon_state = "0-4" @@ -68024,6 +67647,27 @@ }, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/heads/hop) +"kFf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/decal/cleanable{ + color = "yellow"; + icon = 'icons/effects/crayondecal.dmi'; + icon_state = "n"; + pixel_x = -15; + pixel_y = 8 + }, +/turf/simulated/floor/glass/reinforced, +/area/maintenance/fpmaint) "kFz" = ( /obj/structure/reagent_dispensers/fueltank, /obj/effect/decal/warning_stripes/southeast, @@ -68107,19 +67751,6 @@ icon_state = "grimy" }, /area/chapel/office) -"kGQ" = ( -/obj/structure/table/reinforced, -/obj/item/aiModule/reset, -/obj/item/flash, -/obj/item/flash, -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/requests_console{ - department = "Tech Storage"; - name = "Tech Storage Requests Console"; - pixel_y = 32 - }, -/turf/simulated/floor/plasteel, -/area/storage/tech) "kGW" = ( /obj/structure/table/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -68149,27 +67780,6 @@ icon_state = "white" }, /area/medical/research/restroom) -"kHa" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/double, -/turf/simulated/floor/plating, -/area/maintenance/trading) -"kHo" = ( -/obj/structure/grille, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/warning_stripes/north, -/obj/machinery/light, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "kHz" = ( /obj/structure/cable{ icon_state = "4-8" @@ -68263,6 +67873,19 @@ icon_state = "bar" }, /area/clownoffice) +"kIL" = ( +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/research/nhallway) "kJi" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ @@ -68314,6 +67937,9 @@ icon_state = "green" }, /area/hallway/secondary/exit) +"kJt" = ( +/turf/simulated/floor/grass, +/area/maintenance/fpmaint) "kJu" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/grille/broken, @@ -68411,6 +68037,13 @@ icon_state = "chapel" }, /area/chapel/main) +"kKE" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/lattice/catwalk, +/turf/space, +/area/space) "kKR" = ( /obj/machinery/light/small, /turf/simulated/floor/plasteel{ @@ -68492,6 +68125,22 @@ }, /turf/simulated/floor/plasteel, /area/assembly/robotics) +"kMe" = ( +/obj/effect/decal/warning_stripes/southeast, +/obj/machinery/r_n_d/circuit_imprinter{ + pixel_x = -1; + pixel_y = 3 + }, +/obj/machinery/requests_console{ + department = "Research"; + departmentType = 2; + name = "Research Request Console"; + pixel_x = 30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/toxins/lab) "kMl" = ( /obj/structure/cable{ icon_state = "4-8" @@ -68564,16 +68213,6 @@ icon_state = "whitered" }, /area/security/medbay) -"kMK" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/item/storage/box/bodybags, -/obj/item/clothing/suit/apron/surgical, -/obj/item/storage/box/bodybags/biohazard, -/obj/item/storage/belt/medical/surgery/loaded, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue" - }, -/area/medical/surgery/south) "kNe" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -68738,6 +68377,23 @@ icon_state = "darkblue" }, /area/maintenance/detectives_office) +"kPe" = ( +/obj/structure/plasticflaps, +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + dir = 4; + icon_state = "grass_edge_medium_corner" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "ops" + }, +/obj/machinery/conveyor{ + id = "comdel" + }, +/obj/item/reagent_containers/glass/bucket, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "kPn" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -68870,6 +68526,16 @@ icon_state = "freezerfloor" }, /area/crew_quarters/locker/locker_toilet) +"kRn" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/landmark/ninja_teleport, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) "kRz" = ( /obj/structure/cable{ icon_state = "1-2" @@ -69132,6 +68798,15 @@ icon_state = "vault" }, /area/aisat/maintenance) +"kVT" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/serviceyard) "kWc" = ( /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -69154,6 +68829,20 @@ icon_state = "dark" }, /area/chapel/office) +"kWx" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/clothing/gloves/color/black/ballistic, +/obj/item/clothing/gloves/color/black/ballistic, +/obj/item/clothing/gloves/color/black/ballistic, +/obj/item/clothing/gloves/color/black/ballistic, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "kWH" = ( /obj/structure/sign/nosmoking_1, /turf/simulated/wall, @@ -69229,6 +68918,20 @@ icon_state = "redcorner" }, /area/hallway/primary/starboard/east) +"kYE" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/biostorage) "kYM" = ( /obj/structure/cable{ icon_state = "2-8" @@ -69322,17 +69025,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/wall, /area/toxins/test_chamber) -"kZJ" = ( -/obj/structure/grille, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/decal/warning_stripes/north, -/obj/machinery/light, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "kZL" = ( /obj/structure/table/wood, /obj/machinery/status_display{ @@ -69992,6 +69684,23 @@ /obj/structure/lattice, /turf/simulated/wall/r_wall, /area/security/podbay) +"lif" = ( +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + dir = 4; + icon_state = "grass_edge_medium_corner" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "lij" = ( /obj/effect/decal/warning_stripes/northwestcorner, /turf/simulated/floor/plasteel{ @@ -70019,6 +69728,22 @@ icon_state = "bluecorner" }, /area/hallway/primary/central/south) +"liY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/reagent_containers/glass/bottle/nutrient/killer/weedkiller{ + pixel_y = 17 + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "liZ" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -70120,12 +69845,6 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/carpet/arcade, /area/crew_quarters/fitness) -"lko" = ( -/obj/machinery/dye_generator, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "lkA" = ( /obj/structure/chair/office/dark{ dir = 1 @@ -70271,11 +69990,6 @@ /obj/effect/decal/cleanable/blood/oil/streak, /turf/simulated/floor/plating, /area/maintenance/asmaint2) -"lmz" = ( -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-cherry" - }, -/area/crew_quarters/trading) "lmG" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -71256,12 +70970,6 @@ icon_state = "darkred" }, /area/security/warden) -"lyE" = ( -/obj/structure/table/wood/fancy/royalblack, -/obj/item/clipboard, -/obj/item/folder/red, -/turf/simulated/floor/plating, -/area/maintenance/casino) "lyM" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -71313,15 +71021,6 @@ /obj/item/lighter/zippo/rd, /turf/simulated/floor/plasteel, /area/crew_quarters/hor) -"lzm" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plating, -/area/maintenance/trading) "lzu" = ( /obj/effect/spawner/window/reinforced/polarized{ id = "qm" @@ -71431,6 +71130,16 @@ /obj/structure/window/reinforced, /turf/simulated/floor/plating, /area/maintenance/asmaint4) +"lAK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random_spawners/rodent, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "lAO" = ( /obj/structure/cable{ icon_state = "4-8" @@ -72314,10 +72023,8 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/sign/restroom{ + pixel_x = -32 }, /turf/simulated/floor/wood, /area/crew_quarters/serviceyard) @@ -72580,6 +72287,24 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/carpet/arcade, /area/crew_quarters/fitness) +"lPI" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor{ + id_tag = "engstorage"; + name = "Secure Storage Blast Doors" + }, +/obj/effect/decal/warning_stripes/west, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "lPJ" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /obj/machinery/camera{ @@ -72733,17 +72458,6 @@ icon_state = "neutralfull" }, /area/bridge/vip) -"lRE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door_control{ - id = "Traiders Windows"; - name = "Traiders Privacy Shutters"; - pixel_x = 26; - pixel_y = 6 - }, -/obj/effect/decal/cleanable/blood, -/turf/simulated/floor/plating, -/area/crew_quarters/trading) "lRT" = ( /obj/effect/decal/cleanable/dirt, /obj/item/toy/crayon/rainbow, @@ -72756,25 +72470,6 @@ icon_state = "green" }, /area/medical/virology/lab) -"lSA" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/structure/window/reinforced, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/storage/box/flashbangs, -/obj/item/storage/box/flashbangs{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "lSG" = ( /turf/simulated/floor/plasteel{ icon_state = "darkblue" @@ -72912,6 +72607,21 @@ icon_state = "dark" }, /area/security/permabrig) +"lUn" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) "lUL" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ @@ -73148,6 +72858,16 @@ }, /turf/simulated/floor/engine, /area/toxins/misc_lab) +"lXc" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/spray/cleaner/medical{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner" + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/surgery/north) "lXr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 @@ -73622,6 +73342,26 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/wall, /area/maintenance/starboard) +"mdq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/obj/structure/closet, +/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos, +/obj/item/clothing/suit/hooded/wintercoat/cargo, +/obj/item/clothing/suit/hooded/wintercoat/miner, +/obj/item/clothing/suit/hooded/wintercoat/medical, +/obj/item/clothing/suit/hooded/wintercoat/security, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/stack/sheet/cardboard, +/obj/item/clothing/under/rank/warden/formal, +/obj/item/clothing/under/officeruniform, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) "mdr" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -73667,15 +73407,6 @@ icon_state = "darkredfull" }, /area/security/warden) -"meo" = ( -/obj/machinery/alarm{ - pixel_y = 22 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/mech_bay_recharge_floor, -/area/security/securearmory) "mep" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /obj/structure/table, @@ -74013,6 +73744,27 @@ icon_state = "browncorner" }, /area/hallway/primary/fore) +"mip" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "miq" = ( /obj/structure/closet/secure_closet/brig/evidence, /obj/structure/window/reinforced{ @@ -74043,6 +73795,11 @@ icon_state = "neutralfull" }, /area/library) +"miR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/spacetwinkie, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "miT" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -74068,6 +73825,15 @@ }, /turf/simulated/wall, /area/quartermaster/office) +"mjo" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/decal/warning_stripes/north, +/obj/machinery/light, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "mjr" = ( /obj/structure/cable{ icon_state = "1-4" @@ -74655,7 +74421,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "mpt" = ( /obj/structure/cable{ icon_state = "4-8" @@ -74911,7 +74677,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "mss" = ( /obj/item/chair/wood/wings{ dir = 1 @@ -74924,6 +74690,13 @@ /obj/structure/window/reinforced, /turf/simulated/floor/carpet/arcade, /area/crew_quarters/fitness) +"msK" = ( +/obj/machinery/station_map/directional/south, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port) "msV" = ( /obj/structure/table/wood, /obj/item/pen/multi{ @@ -75109,7 +74882,7 @@ dir = 5; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "muV" = ( /obj/machinery/door_control{ id = "RnDChem"; @@ -75137,6 +74910,22 @@ icon_state = "whitepurple" }, /area/toxins/test_chamber) +"mvm" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/applicator/burn, +/obj/item/reagent_containers/glass/bottle/charcoal, +/obj/machinery/requests_console{ + department = "Genetics"; + departmentType = 1; + name = "Genetics Requests Console"; + pixel_x = -2; + pixel_y = 25 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) "mvI" = ( /obj/machinery/door_timer/cell_1{ dir = 1; @@ -75202,6 +74991,12 @@ icon_state = "grimy" }, /area/crew_quarters/heads/hop) +"mww" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "mwB" = ( /obj/structure/cable{ icon_state = "2-8" @@ -75271,6 +75066,26 @@ /obj/structure/lattice/catwalk, /turf/space, /area/solar/port) +"mxh" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/hologram/holopad, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) "mxr" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, @@ -75382,6 +75197,13 @@ icon_state = "grimy" }, /area/maintenance/library) +"myK" = ( +/obj/structure/barricade/wooden, +/obj/effect/decal/cleanable/dust, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood/fancy/oak, +/area/maintenance/banya) "myO" = ( /obj/item/radio/intercom{ pixel_y = 28 @@ -75800,15 +75622,14 @@ /area/security/securehallway) "mCN" = ( /obj/effect/decal/cleanable/dust, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/effect/turf_decal/siding/wood/pallet{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +/obj/structure/table/wood, +/obj/effect/mapping_helpers/table_flip{ dir = 4 }, -/turf/simulated/floor/wood/fancy/oak{ - icon_state = "fancy-wood-oak-broken7" - }, +/turf/simulated/floor/plating, /area/maintenance/banya) "mCW" = ( /turf/simulated/floor/plasteel{ @@ -75854,6 +75675,14 @@ /obj/structure/sign/science, /turf/simulated/wall, /area/medical/research) +"mDp" = ( +/obj/structure/sign/poster/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/hallway/secondary/entry/commercial) "mDr" = ( /obj/item/twohanded/required/kirbyplants{ pixel_y = 12; @@ -76001,22 +75830,6 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /turf/simulated/floor/plating, /area/maintenance/asmaint4) -"mEl" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "mEr" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/glass/beaker/large{ @@ -76169,19 +75982,6 @@ icon_state = "whiteblue" }, /area/medical/medbay2) -"mGs" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/engineering/engine) "mGt" = ( /obj/structure/table/glass, /obj/item/storage/toolbox/surgery{ @@ -76248,6 +76048,23 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/quartermaster/storage) +"mHR" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/clothing/shoes/jackboots/armored, +/obj/item/clothing/shoes/jackboots/armored, +/obj/item/clothing/shoes/jackboots/armored, +/obj/item/clothing/shoes/jackboots/armored, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "mHX" = ( /turf/simulated/floor/plasteel{ icon_state = "whitepurplecorner" @@ -76370,6 +76187,15 @@ icon_state = "grimy" }, /area/maintenance/library) +"mJD" = ( +/obj/effect/landmark/start/trainee_engineer, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) "mJH" = ( /obj/structure/cable{ icon_state = "1-8" @@ -76535,13 +76361,6 @@ icon_state = "white" }, /area/medical/research/nhallway) -"mLd" = ( -/obj/effect/turf_decal/siding/white{ - dir = 5 - }, -/obj/effect/decal/cleanable/dust, -/turf/simulated/floor/plating, -/area/maintenance/banya) "mLo" = ( /obj/structure/table/reinforced, /obj/item/storage/bible, @@ -76705,6 +76524,13 @@ icon_state = "darkblue" }, /area/aisat/maintenance) +"mMD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/sheet/cardboard, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "mME" = ( /obj/structure/plasticflaps, /obj/machinery/conveyor{ @@ -76887,19 +76713,12 @@ }, /area/bridge/meeting_room) "mOA" = ( -/obj/structure/mirror{ - pixel_x = 26; - pixel_y = -2 - }, -/obj/structure/sink{ - layer = 4; - pixel_y = 26 - }, -/obj/effect/landmark/ninja_teleport, -/turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/area/hallway/secondary/entry/commercial) +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) "mPg" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -77371,6 +77190,26 @@ /obj/effect/decal/warning_stripes/red/hollow, /turf/simulated/floor/plasteel, /area/security/main) +"mVu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dust, +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 10; + icon_state = "grass_edge_medium" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "mVH" = ( /obj/item/radio/intercom{ pixel_x = 28 @@ -77514,6 +77353,25 @@ }, /turf/simulated/floor/plating, /area/maintenance/detectives_office) +"mXh" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/gloves/color/yellow, +/obj/item/weaponcrafting/revolverbarrel/steel, +/obj/item/clothing/glasses/welding, +/obj/structure/safe/floor, +/obj/machinery/door/poddoor/shutters/preopen{ + density = 1; + dir = 2; + icon_state = "closed"; + id_tag = "Traiders Windows"; + name = "Traiders Privacy Shutters"; + opacity = 1 + }, +/obj/machinery/door/window/westright{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) "mXt" = ( /obj/machinery/space_heater, /turf/simulated/floor/plating, @@ -78178,6 +78036,21 @@ icon_state = "grimy" }, /area/chapel/main) +"nfj" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/rack/gunrack, +/obj/structure/window/reinforced, +/obj/item/gun/energy/gun{ + pixel_x = -6 + }, +/obj/item/gun/energy/gun, +/obj/item/gun/energy/gun{ + pixel_x = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "nfm" = ( /obj/machinery/light/small{ dir = 4 @@ -78196,20 +78069,6 @@ icon_state = "seadeep" }, /area/crew_quarters/fitness) -"nfv" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/space) "nfN" = ( /obj/structure/table/reinforced, /obj/machinery/recharger{ @@ -78276,6 +78135,18 @@ }, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/captain/bedroom) +"ngu" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 8; + icon_state = "grass_edge_medium" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/item/trash/cheesie, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "ngy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ @@ -78446,6 +78317,26 @@ icon_state = "redcorner" }, /area/security/processing) +"niW" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 8; + icon_state = "grass_edge_medium" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9 + }, +/obj/item/storage/bag/trash{ + pixel_x = -16; + pixel_y = -8 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "njf" = ( /obj/structure/table/wood/fancy/royalblue, /obj/item/flashlight/lamp/green{ @@ -78790,15 +78681,6 @@ icon_state = "purplecorner" }, /area/medical/virology/lab) -"nml" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/decal/warning_stripes/southwest, -/turf/simulated/floor/plating, -/area/engineering/engine) "nmp" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/firedoor, @@ -78825,6 +78707,14 @@ /obj/machinery/computer/security, /turf/simulated/floor/wood, /area/security/hos) +"nnh" = ( +/obj/machinery/atmospherics/pipe/manifold/visible, +/obj/effect/decal/warning_stripes/north, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel, +/area/engineering/controlroom) "nnt" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -79112,23 +79002,12 @@ }, /area/medical/reception) "nqG" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/door_control{ - desiredstate = 1; - id = "toilet4"; - name = "Toilet Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - specialfunctions = 4 +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 }, -/obj/effect/landmark/start/civilian, -/obj/structure/sign/poster/contraband/random{ - pixel_y = -32 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -79451,6 +79330,32 @@ /obj/structure/girder, /turf/simulated/floor/plating, /area/maintenance/tourist) +"nta" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/storage/box/teargas, +/obj/item/storage/box/teargas{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/chem_grenade/teargas{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/chem_grenade/teargas{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "nte" = ( /turf/simulated/wall, /area/maintenance/asmaint2) @@ -79458,21 +79363,6 @@ /obj/structure/falsewall, /turf/simulated/floor/plating, /area/maintenance/brig) -"nth" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/engineering/engine) "ntj" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/grille, @@ -79658,6 +79548,25 @@ /obj/machinery/atmospherics/pipe/simple/hidden/universal, /turf/simulated/floor/plating, /area/maintenance/fore) +"nvO" = ( +/obj/effect/turf_decal{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/disposalpipe/broken{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "nvQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 @@ -79928,15 +79837,6 @@ icon_state = "red" }, /area/security/prison/cell_block/A) -"nAz" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/decal/warning_stripes/east, -/turf/simulated/floor/plating, -/area/engineering/engine) "nAA" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/machinery/light{ @@ -80088,6 +79988,14 @@ /obj/structure/girder, /turf/simulated/floor/plating, /area/maintenance/asmaint4) +"nCi" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/poddoor/preopen{ + id_tag = "Singularity"; + name = "Singularity Blast Doors" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "nCm" = ( /obj/machinery/firealarm{ dir = 8; @@ -80140,6 +80048,19 @@ icon_state = "neutralfull" }, /area/hallway/primary/central/se) +"nCu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkyellow" + }, +/area/maintenance/fpmaint) "nCH" = ( /obj/structure/table/wood, /obj/item/storage/fancy/cigarettes/cigpack_random{ @@ -80155,6 +80076,14 @@ icon_state = "dark" }, /area/crew_quarters/bar) +"nCR" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + icon_state = "grass_edge_medium" + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "nCX" = ( /obj/structure/bed, /obj/machinery/flasher{ @@ -80310,24 +80239,15 @@ /turf/simulated/floor/plasteel, /area/security/main) "nEC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/effect/decal/cleanable/spiderling_remains, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/machinery/power/apc/worn_out{ - cell_type = 0; - dir = 8; - pixel_x = -26 +/obj/structure/sign/poster/contraband/syndicate_recruitment{ + pixel_y = 32 }, -/obj/structure/cable{ - icon_state = "0-4" +/obj/item/target/syndicate, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" }, -/turf/simulated/floor/plating, -/area/crew_quarters/trading) +/area/hallway/secondary/entry/commercial) "nEP" = ( /obj/effect/landmark/start/cyborg, /obj/structure/cable{ @@ -80363,6 +80283,21 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel, /area/maintenance/asmaint2) +"nFt" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/camera{ + c_tag = "Secure Armory East"; + dir = 8; + network = list("SS13","Security") + }, +/obj/machinery/newscaster/security_unit{ + pixel_x = 28 + }, +/obj/vehicle/ridden/secway, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "nFA" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -80414,23 +80349,6 @@ icon_state = "green" }, /area/medical/virology/lab) -"nGa" = ( -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/gun/projectile/shotgun/riot{ - pixel_x = -7 - }, -/obj/item/gun/projectile/shotgun/riot{ - pixel_x = 7 - }, -/obj/item/gun/projectile/shotgun/riot, -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Riot shotguns" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "nGg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -80495,27 +80413,24 @@ icon_state = "neutralfull" }, /area/engineering/gravitygenerator) -"nGC" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +"nGs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/space) -"nGG" = ( -/obj/machinery/vending/autodrobe, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "tranquillite" + icon_state = "neutralfull" }, -/area/mimeoffice) +/area/storage/secure) "nGI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -80538,6 +80453,13 @@ icon_state = "white" }, /area/toxins/lab) +"nGT" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/decal/warning_stripes/southeastcorner, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "nGY" = ( /obj/structure/particle_accelerator/particle_emitter/right{ dir = 8 @@ -80623,6 +80545,13 @@ /obj/item/storage/belt/utility, /turf/simulated/floor/bluegrid, /area/tcommsat/chamber) +"nIg" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/storage) "nIm" = ( /obj/machinery/light, /turf/simulated/floor/plasteel{ @@ -80644,19 +80573,6 @@ }, /turf/simulated/floor/carpet/royalblack, /area/maintenance/asmaint3) -"nIr" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/item/storage/belt/medical, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/regular, -/obj/machinery/newscaster{ - pixel_y = 30 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whiteblue" - }, -/area/medical/biostorage) "nIv" = ( /obj/structure/table/glass, /obj/item/book/manual/barman_recipes, @@ -80918,6 +80834,17 @@ icon_state = "darkblue" }, /area/crew_quarters/theatre) +"nLz" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/spawner/random_spawners/grille_50, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "nLE" = ( /obj/structure/table, /obj/machinery/camera{ @@ -81601,6 +81528,15 @@ icon_state = "neutralfull" }, /area/atmos) +"nTs" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) "nTz" = ( /obj/structure/table/reinforced, /obj/machinery/recharger{ @@ -81834,7 +81770,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "nWY" = ( /obj/machinery/atmospherics/unary/portables_connector{ dir = 1 @@ -82196,6 +82132,16 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central/north) +"obT" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/door_assembly/door_assembly_mai, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "obW" = ( /obj/machinery/power/solar{ name = "South-East Solar Panel" @@ -82403,6 +82349,13 @@ icon_state = "dark" }, /area/chapel/office) +"oeQ" = ( +/obj/structure/closet/secure_closet/medical3, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/biostorage) "ofk" = ( /obj/item/storage/toolbox/mechanical, /obj/item/stack/cable_coil/random, @@ -82657,6 +82610,15 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/wood/fancy/light, /area/ntrep) +"ohh" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) "ohk" = ( /obj/structure/cable{ icon_state = "4-8" @@ -83035,6 +82997,19 @@ icon_state = "grimy" }, /area/library) +"olM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "olS" = ( /obj/machinery/light/small{ dir = 4 @@ -83186,6 +83161,27 @@ icon_state = "dark" }, /area/crew_quarters/hor) +"ony" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance, +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 4; + icon_state = "grass_edge_medium" + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "onT" = ( /turf/simulated/wall, /area/maintenance/fsmaint) @@ -83193,6 +83189,13 @@ /obj/structure/sign/nosmoking_1, /turf/simulated/wall, /area/medical/morgue) +"ooo" = ( +/obj/structure/flora/grass/jungle/b, +/obj/item/flashlight/flare/glowstick/yellow{ + on = 1 + }, +/turf/simulated/floor/grass, +/area/maintenance/fpmaint) "oop" = ( /obj/machinery/suit_storage_unit/captain, /obj/effect/decal/warning_stripes/northeast, @@ -83319,19 +83322,6 @@ icon_state = "neutralcorner" }, /area/bridge/vip) -"oqc" = ( -/obj/structure/grille, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/effect/decal/warning_stripes/south, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "oqp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -83388,13 +83378,6 @@ }, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/courtroom) -"oqv" = ( -/obj/structure/table/reinforced, -/obj/item/stack/packageWrap, -/obj/item/hand_labeler, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel, -/area/storage/primary) "oqw" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -83424,6 +83407,10 @@ /obj/structure/window/full/shuttle, /turf/simulated/floor/shuttle/plating, /area/shuttle/arrival/station) +"oqM" = ( +/obj/item/reagent_containers/glass/bottle/nutrient/rh, +/turf/simulated/floor/grass, +/area/maintenance/fpmaint) "oqZ" = ( /obj/machinery/door/airlock/medical/glass{ name = "Paramedic"; @@ -83440,6 +83427,17 @@ icon_state = "white" }, /area/medical/paramedic) +"ora" = ( +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + dir = 8; + icon_state = "grass_edge_medium_corner" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/canister/air, +/obj/machinery/atmospherics/unary/portables_connector, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "orl" = ( /obj/machinery/recharge_station, /turf/simulated/floor/plasteel{ @@ -83474,13 +83472,17 @@ }, /area/medical/virology/lab) "orI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/decorations/sticky_decorations/flammable/spiderweb, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 +/obj/structure/sink{ + dir = 8; + pixel_x = -12 }, -/turf/simulated/floor/plating, -/area/crew_quarters/trading) +/obj/structure/mirror{ + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/hallway/secondary/entry/commercial) "orN" = ( /obj/item/twohanded/required/kirbyplants, /obj/item/radio/intercom{ @@ -83526,6 +83528,23 @@ }, /turf/simulated/floor/plating, /area/maintenance/disposal) +"osi" = ( +/obj/effect/decal/warning_stripes/southwestcorner, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/engine, +/area/toxins/sm_test_chamber) "osl" = ( /obj/machinery/recharge_station, /turf/simulated/floor/plasteel{ @@ -83853,6 +83872,14 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plating, /area/maintenance/asmaint4) +"owx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) "owB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -83922,6 +83949,14 @@ icon_state = "wood-broken" }, /area/maintenance/asmaint4) +"oya" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/decal/warning_stripes/southwest, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "oyq" = ( /obj/structure/cable{ icon_state = "1-8" @@ -84116,6 +84151,14 @@ icon_state = "whitepurple" }, /area/medical/research/restroom) +"ozL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "ozQ" = ( /obj/structure/cable{ icon_state = "2-8" @@ -84200,12 +84243,6 @@ }, /turf/simulated/floor/wood, /area/security/hos) -"oAn" = ( -/obj/structure/table/wood/fancy/royalblack, -/obj/item/clothing/glasses/sunglasses, -/obj/effect/decal/cleanable/cobweb, -/turf/simulated/floor/plating, -/area/maintenance/casino) "oAp" = ( /obj/structure/chair/comfy/brown{ dir = 8 @@ -84238,6 +84275,10 @@ icon_state = "neutralfull" }, /area/hallway/primary/port/west) +"oAE" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/shuttle, +/area/shuttle/arrival/station) "oAM" = ( /obj/structure/cable{ icon_state = "1-8" @@ -84307,16 +84348,6 @@ icon_state = "tranquillite" }, /area/crew_quarters/theatre) -"oBA" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 32 - }, -/obj/item/paper/deltainfo, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "oBH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -84346,16 +84377,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/fpmaint) -"oBM" = ( -/obj/machinery/camera{ - c_tag = "Research Central Hallway"; - network = list("Research","SS13") - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whitepurple" - }, -/area/medical/research/nhallway) "oCc" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -84363,17 +84384,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/electrical) -"oCg" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/item/storage/box/bodybags, -/obj/item/clothing/suit/apron/surgical, -/obj/item/storage/box/bodybags/biohazard, -/obj/item/storage/belt/medical/surgery/loaded, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whiteblue" - }, -/area/medical/surgery/north) "oCk" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs{ @@ -84388,6 +84398,28 @@ }, /turf/simulated/floor/plasteel, /area/security/main) +"oCl" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + icon_state = "grass_edge_medium" + }, +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + dir = 8; + icon_state = "grass_edge_medium_corner" + }, +/obj/item/shard{ + icon_state = "medium"; + pixel_x = -7; + pixel_y = -10 + }, +/obj/effect/spawner/random_spawners/blood_5, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "oCo" = ( /obj/structure/closet/firecloset, /turf/simulated/floor/plasteel{ @@ -84428,6 +84460,20 @@ icon_state = "dark" }, /area/crew_quarters/fitness) +"oDd" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) "oDk" = ( /obj/structure/cable{ icon_state = "1-2" @@ -84450,6 +84496,22 @@ }, /turf/simulated/floor/engine, /area/engineering/controlroom) +"oDt" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "oDx" = ( /obj/machinery/camera/motion{ c_tag = "Vault"; @@ -85079,6 +85141,13 @@ icon_state = "whiteblue" }, /area/medical/medbay2) +"oKO" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/decal/warning_stripes/southwest, +/turf/simulated/floor/plating, +/area/engineering/engine) "oKQ" = ( /obj/machinery/computer/secure_data, /turf/simulated/floor/plasteel{ @@ -85327,6 +85396,21 @@ icon_state = "chapel" }, /area/chapel/main) +"oOf" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "engineering_west_airlock"; + name = "exterior access button"; + pixel_x = 20; + pixel_y = 20; + req_access = list(10,13) + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "oOg" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -85432,29 +85516,15 @@ icon_state = "whitegreencorner" }, /area/medical/virology/lab) -"oPP" = ( -/obj/machinery/camera{ - c_tag = "Dorm Hallway East" - }, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "neutralcorner" - }, -/area/crew_quarters/locker) -"oPR" = ( +"oPM" = ( /obj/structure/rack/gunrack, /obj/effect/decal/warning_stripes/red/hollow, /obj/item/gun/energy/laser{ - pixel_x = -8 - }, -/obj/item/gun/energy/laser{ - pixel_x = 10 + pixel_x = -6 }, +/obj/item/gun/energy/laser, /obj/item/gun/energy/laser{ - pixel_x = 1 + pixel_x = 6 }, /obj/structure/window/reinforced{ dir = 1 @@ -85463,6 +85533,18 @@ icon_state = "dark" }, /area/security/securearmory) +"oPP" = ( +/obj/machinery/camera{ + c_tag = "Dorm Hallway East" + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutralcorner" + }, +/area/crew_quarters/locker) "oPZ" = ( /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -85619,14 +85701,6 @@ icon_state = "vault" }, /area/storage/tech) -"oSa" = ( -/obj/effect/decal/cleanable/cobweb2, -/obj/item/storage/toolbox/fakesyndi, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkred" - }, -/area/hallway/secondary/entry/commercial) "oSy" = ( /obj/machinery/door/morgue{ name = "Confession Booth" @@ -85841,6 +85915,15 @@ icon_state = "tranquillite" }, /area/maintenance/asmaint4) +"oUt" = ( +/obj/effect/decal/cleanable/dust, +/obj/item/chair, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "oUP" = ( /obj/machinery/computer/security, /turf/simulated/floor/plasteel{ @@ -85909,6 +85992,16 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/detectives_office) +"oVt" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/east, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/engineering/engine) "oVx" = ( /obj/structure/table, /obj/item/storage/fancy/donut_box, @@ -85924,6 +86017,18 @@ icon_state = "red" }, /area/security/main) +"oVB" = ( +/obj/machinery/suit_storage_unit/blueshield, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Blueshield"; + departmentType = 5; + name = "Blueshield Requests Console"; + pixel_x = -30; + pixel_y = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/blueshield) "oVM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -85950,23 +86055,6 @@ icon_state = "neutralfull" }, /area/hallway/primary/central/nw) -"oWk" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "purplefull" - }, -/area/medical/research/nhallway) "oWp" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel{ @@ -86025,11 +86113,6 @@ }, /turf/simulated/floor/engine, /area/toxins/test_chamber) -"oWL" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/structure/table, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "oWT" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig Cell Block"; @@ -86299,6 +86382,20 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/security/holding_cell) +"pal" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "pat" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -86359,6 +86456,13 @@ /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/courtroom) +"pbl" = ( +/obj/structure/cable, +/obj/machinery/power/apc/worn_out{ + pixel_y = -26 + }, +/turf/simulated/floor/carpet/black, +/area/maintenance/casino) "pbv" = ( /obj/effect/decal/warning_stripes/west, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -86400,6 +86504,18 @@ icon_state = "whitebluefull" }, /area/medical/medbay) +"pbK" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/fishtank/bowl{ + pixel_y = 5 + }, +/obj/item/stack/tape_roll{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/trading) "pbM" = ( /obj/machinery/firealarm{ pixel_y = 26 @@ -86453,15 +86569,6 @@ icon_state = "chapel" }, /area/crew_quarters/theatre) -"pcJ" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/table/wood, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/decal/remains/mouse, -/turf/simulated/floor/plating, -/area/maintenance/casino) "pcM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -86627,6 +86734,16 @@ icon_state = "white" }, /area/medical/sleeper) +"peo" = ( +/obj/machinery/conveyor{ + dir = 10; + id = "comdel" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "peP" = ( /obj/structure/bed/dogbed/pet, /mob/living/simple_animal/mouse/hamster/Representative, @@ -86647,6 +86764,13 @@ /obj/item/chair/wood/wings, /turf/simulated/floor/carpet/black, /area/crew_quarters/theatre) +"pfb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engineering/engine) "pfs" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -86828,6 +86952,15 @@ icon_state = "dark" }, /area/security/prisonershuttle) +"phc" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 4; + icon_state = "grass_edge_medium" + }, +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "phd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -87048,7 +87181,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "pjD" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -87080,6 +87213,14 @@ }, /turf/simulated/floor/plasteel, /area/security/processing) +"pjX" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "pkc" = ( /obj/structure/bed, /obj/item/bedsheet/brown, @@ -87320,6 +87461,25 @@ }, /turf/simulated/floor/plating, /area/magistrateoffice) +"pnp" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/candy/gummybear/purple{ + name = "Jo"; + pixel_x = 13; + pixel_y = 1 + }, +/obj/item/clothing/mask/cigarette/syndicate{ + pixel_y = 5 + }, +/obj/item/twohanded/required/kirbyplants{ + pixel_y = 12; + tag = "plant-dead" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/maintenance/trading) "pnv" = ( /obj/machinery/teleport/hub, /turf/simulated/floor/plating, @@ -87418,21 +87578,6 @@ icon_state = "brown" }, /area/crew_quarters/chief) -"pof" = ( -/obj/structure/table/glass, -/obj/item/storage/box/gloves{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/masks, -/obj/item/reagent_containers/spray/cleaner/medical{ - desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; - name = "Surgery Cleaner" - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue" - }, -/area/medical/surgery/north) "poi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/carpet, @@ -87540,6 +87685,12 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/captain) +"ppg" = ( +/obj/effect/decal/warning_stripes/northwest, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "ppp" = ( /obj/machinery/computer/card/minor/hos, /turf/simulated/floor/wood, @@ -87698,20 +87849,6 @@ }, /turf/simulated/floor/plating, /area/crew_quarters/hor) -"prr" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "prs" = ( /obj/effect/decal/cleanable/blood, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -87933,15 +88070,18 @@ /obj/effect/spawner/random_spawners/rodent, /turf/simulated/floor/plating, /area/maintenance/garden) -"ptE" = ( +"ptU" = ( /obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + icon_state = "1-4" }, -/obj/effect/decal/warning_stripes/northeastcorner, -/turf/simulated/floor/plasteel, -/area/engineering/engine) +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/lattice/catwalk, +/turf/space, +/area/space) "pua" = ( /obj/structure/cable{ icon_state = "4-8" @@ -87973,23 +88113,6 @@ icon_state = "green" }, /area/maintenance/garden) -"puk" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance{ - req_access = list(12) - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "pus" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/machinery/atmospherics/unary/vent_scrubber/on, @@ -88044,7 +88167,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "puB" = ( /turf/simulated/wall/r_wall, /area/toxins/storage) @@ -88241,7 +88364,9 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/rodent, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) "pyh" = ( @@ -88267,31 +88392,6 @@ icon_state = "neutralfull" }, /area/hallway/primary/central/nw) -"pyk" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/machinery/door/window{ - dir = 2; - name = "Secure Armory"; - req_access = list(1) - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/clothing/suit/armor/riot, -/obj/item/shield/riot, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/head/helmet/riot, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "pyN" = ( /obj/machinery/power/emitter{ anchored = 1; @@ -88338,6 +88438,11 @@ icon_state = "bar" }, /area/crew_quarters/theatre) +"pzD" = ( +/obj/structure/flora/grass/jungle, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/grass, +/area/maintenance/fpmaint) "pzE" = ( /obj/machinery/atmospherics/unary/portables_connector{ dir = 1 @@ -89141,21 +89246,22 @@ }, /area/library/game_zone) "pGp" = ( -/obj/item/shard, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/item/hand_labeler{ + pixel_y = 14 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/item/toy/balloon{ + pixel_x = 7; + pixel_y = -7 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 }, /turf/simulated/floor/plating, -/area/maintenance/trading) +/area/maintenance/fpmaint) "pGu" = ( /obj/machinery/door/airlock{ name = "Unisex Showers" @@ -89789,15 +89895,6 @@ icon_state = "red" }, /area/security/brig) -"pMA" = ( -/obj/structure/table/wood/fancy/royalblack, -/obj/item/storage/briefcase, -/obj/item/paper, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/simulated/floor/plating, -/area/maintenance/casino) "pMH" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -89866,6 +89963,25 @@ icon_state = "dark" }, /area/engineering/mechanic_workshop/hangar) +"pNu" = ( +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + dir = 8; + icon_state = "grass_edge_medium_corner" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/item/shard{ + icon_state = "medium"; + pixel_x = -7; + pixel_y = -10 + }, +/turf/simulated/floor/glass/reinforced, +/area/maintenance/fpmaint) "pNE" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/bot/right, @@ -89891,12 +90007,6 @@ }, /turf/simulated/floor/plasteel, /area/security/securehallway) -"pNI" = ( -/obj/effect/decal/warning_stripes/north, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "pNN" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, @@ -90011,6 +90121,13 @@ icon_state = "dark" }, /area/crew_quarters/serviceyard) +"pPA" = ( +/obj/machinery/station_map/engineering/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engineering/break_room) "pPB" = ( /obj/structure/safe, /obj/item/soap, @@ -90325,6 +90442,27 @@ icon_state = "neutral" }, /area/crew_quarters/fitness) +"pTT" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 6; + icon_state = "grass_edge_medium" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/glass/reinforced, +/area/maintenance/fpmaint) "pUb" = ( /obj/structure/chair/comfy/black{ dir = 8 @@ -90379,7 +90517,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "pUL" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -90397,16 +90535,6 @@ /obj/effect/decal/warning_stripes/east, /turf/simulated/floor/plasteel, /area/assembly/chargebay) -"pUS" = ( -/obj/structure/grille, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/effect/decal/warning_stripes/northwest, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "pVa" = ( /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" @@ -90903,6 +91031,18 @@ }, /turf/simulated/floor/plasteel, /area/toxins/launch) +"pZY" = ( +/obj/effect/decal/warning_stripes/east, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/engineering/controlroom) "qac" = ( /obj/structure/grille/broken, /turf/simulated/floor/plating, @@ -91234,20 +91374,6 @@ /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel, /area/hallway/primary/central/ne) -"qdp" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/head/helmet/alt, -/obj/item/clothing/shoes/jackboots/armored, -/obj/item/clothing/gloves/color/black/ballistic, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "qdz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -91284,6 +91410,10 @@ icon_state = "caution" }, /area/atmos) +"qef" = ( +/obj/structure/falsewall, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) "qeg" = ( /obj/structure/table/wood, /obj/item/storage/box/bodybags{ @@ -91304,6 +91434,18 @@ icon_state = "redcorner" }, /area/security/customs) +"qeI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/rack, +/obj/item/trash/semki, +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/sign/vacuum{ + pixel_y = 32 + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "qeJ" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel{ @@ -91790,38 +91932,30 @@ /obj/structure/window/reinforced, /turf/simulated/floor/plating, /area/maintenance/consarea_virology) -"qjM" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/structure/window/reinforced, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/machinery/power/apc{ - pixel_y = -26 - }, -/obj/structure/cable, -/obj/item/grenade/barrier{ - pixel_x = -3; - pixel_y = 3 +"qjN" = ( +/obj/effect/landmark/ninja_teleport, +/turf/simulated/floor/plating, +/area/maintenance/starboard) +"qjS" = ( +/obj/machinery/door_control{ + desiredstate = 1; + id = "toilet4"; + name = "Toilet Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 }, -/obj/item/grenade/barrier, -/obj/item/grenade/barrier{ - pixel_x = 3; - pixel_y = -3 +/obj/structure/toilet, +/obj/machinery/light/small{ + dir = 1 }, -/obj/item/grenade/barrier{ - pixel_x = 6; - pixel_y = -6 +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "neutralfull" }, -/area/security/securearmory) -"qjN" = ( -/obj/effect/landmark/ninja_teleport, -/turf/simulated/floor/plating, -/area/maintenance/starboard) +/area/crew_quarters/serviceyard) "qjU" = ( /obj/structure/closet/secure_closet/brig/evidence, /obj/effect/decal/cleanable/dirt, @@ -91987,15 +92121,6 @@ icon_state = "darkred" }, /area/security/interrogation) -"qlZ" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/space) "qme" = ( /obj/structure/table/wood, /obj/structure/window/reinforced{ @@ -92061,24 +92186,19 @@ icon_state = "green" }, /area/hallway/secondary/exit) -"qni" = ( -/turf/simulated/wall/r_wall, -/area/turret_protected/aisat_interior) -"qnk" = ( -/obj/machinery/power/apc{ - dir = 1; - pixel_y = 26 - }, -/obj/structure/chair/barber{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-2" +"qng" = ( +/obj/machinery/door/airlock{ + id_tag = "toilet_arriv"; + name = "Toilet" }, +/obj/machinery/door/firedoor, /turf/simulated/floor/plasteel{ - icon_state = "barber" + icon_state = "freezerfloor" }, -/area/civilian/barber) +/area/hallway/secondary/entry/commercial) +"qni" = ( +/turf/simulated/wall/r_wall, +/area/turret_protected/aisat_interior) "qnB" = ( /obj/structure/cable{ icon_state = "4-8" @@ -92197,23 +92317,6 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/kitchen) -"qoy" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/head/helmet/alt, -/obj/item/clothing/shoes/jackboots/armored, -/obj/item/clothing/gloves/color/black/ballistic, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "qoG" = ( /obj/machinery/atmospherics/unary/portables_connector{ dir = 8 @@ -92425,6 +92528,28 @@ icon_state = "darkred" }, /area/security/permabrig) +"qqF" = ( +/obj/structure/table/wood, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/obj/item/paper/crumpled, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "neutral" + }, +/area/maintenance/trading) +"qqM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "qqO" = ( /obj/structure/cable{ icon_state = "4-8" @@ -92622,6 +92747,37 @@ "qsF" = ( /turf/simulated/floor/plating, /area/maintenance/library) +"qsH" = ( +/obj/item/shard{ + icon_state = "small"; + pixel_x = 5; + pixel_y = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/closet/cardboard, +/turf/simulated/floor/plasteel{ + icon_state = "hydrofloor" + }, +/area/maintenance/trading) +"qsK" = ( +/obj/effect/decal/cleanable/dust, +/obj/effect/decal/cleanable{ + color = "yellow"; + icon = 'icons/effects/crayondecal.dmi'; + icon_state = "l"; + pixel_x = -10 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "qsM" = ( /obj/machinery/newscaster{ pixel_y = 30 @@ -92733,6 +92889,33 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/engineering) +"qtt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) +"qtx" = ( +/obj/effect/turf_decal{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "comdel" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "qtz" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, @@ -93356,14 +93539,6 @@ icon_state = "neutralcorner" }, /area/crew_quarters/locker) -"qAX" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/structure/sign/barber{ - pixel_x = 22; - pixel_y = 32 - }, -/turf/simulated/floor/wood, -/area/crew_quarters/serviceyard) "qAY" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -93585,6 +93760,15 @@ icon_state = "neutralcorner" }, /area/maintenance/asmaint4) +"qDe" = ( +/obj/structure/closet/cabinet, +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/shoes/sandal/white, +/obj/item/clothing/under/pants/white, +/obj/item/clothing/accessory/scarf/white, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/banya) "qDm" = ( /obj/machinery/ticket_machine{ layer = 4; @@ -93677,6 +93861,26 @@ }, /turf/simulated/floor/plating, /area/toxins/xenobiology) +"qEB" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced, +/obj/item/ammo_box/shotgun/tranquilizer{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/ammo_box/shotgun/beanbag{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/shotgun/beanbag, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "qEC" = ( /turf/simulated/wall, /area/crew_quarters/fitness) @@ -93689,6 +93893,10 @@ icon_state = "neutral" }, /area/hallway/secondary/exit) +"qEL" = ( +/obj/structure/flora/grass/jungle, +/turf/simulated/floor/grass, +/area/maintenance/fpmaint) "qEP" = ( /obj/structure/closet/secure_closet/brig, /obj/machinery/light{ @@ -94079,6 +94287,12 @@ icon_state = "freezerfloor" }, /area/security/permabrig) +"qKa" = ( +/obj/structure/bookcase/random, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-cherry" + }, +/area/crew_quarters/trading) "qKh" = ( /obj/item/trash/pistachios, /obj/item/trash/can{ @@ -94118,28 +94332,6 @@ icon_state = "tranquillite" }, /area/maintenance/kitchen) -"qKv" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/door_control{ - desiredstate = 1; - id = "toilet3"; - name = "Toilet Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - specialfunctions = 4 - }, -/obj/structure/sign/poster/contraband/random{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/crew_quarters/serviceyard) "qKI" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel{ @@ -94147,6 +94339,14 @@ icon_state = "neutralcorner" }, /area/maintenance/asmaint4) +"qKJ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) "qKK" = ( /obj/machinery/teleport/station, /obj/effect/decal/warning_stripes/south, @@ -94206,16 +94406,6 @@ }, /turf/simulated/floor/plating, /area/security/permahallway) -"qKZ" = ( -/obj/structure/grille, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/effect/decal/warning_stripes/southeastcorner, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "qLa" = ( /obj/structure/cable{ icon_state = "4-8" @@ -94300,6 +94490,13 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central/nw) +"qMv" = ( +/obj/machinery/flasher/portable, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/securearmory) "qMD" = ( /obj/machinery/door/airlock/multi_tile/glass{ dir = 1; @@ -94673,6 +94870,12 @@ icon_state = "neutralcorner" }, /area/maintenance/asmaint4) +"qQs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "qQu" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -94721,10 +94924,6 @@ }, /turf/simulated/floor/carpet/royalblack, /area/ntrep) -"qQX" = ( -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/glass/reinforced, -/area/maintenance/trading) "qRa" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/warning_stripes/east, @@ -94865,6 +95064,16 @@ /obj/structure/sign/greencross, /turf/simulated/wall/r_wall, /area/medical/cmo) +"qTw" = ( +/obj/effect/decal/warning_stripes/red, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/obj/machinery/suit_storage_unit/security, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "qTI" = ( /obj/machinery/door/airlock/external{ frequency = 1379; @@ -94931,6 +95140,16 @@ }, /turf/simulated/floor/plating, /area/engineering/gravitygenerator) +"qUi" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/dispenser/oxygen, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "qUz" = ( /obj/structure/cable{ icon_state = "4-8" @@ -95000,19 +95219,28 @@ icon_state = "whitegreencorner" }, /area/medical/virology) -"qVc" = ( -/obj/structure/table/wood, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -26 +"qUZ" = ( +/obj/effect/decal/cleanable/dust, +/obj/effect/decal/cleanable{ + color = "yellow"; + icon = 'icons/effects/crayondecal.dmi'; + icon_state = "o"; + pixel_x = -14 }, -/obj/item/folder/blue{ - pixel_x = 5; - pixel_y = 5 +/obj/item/clothing/mask/gas/clown_hat/pennywise{ + pixel_x = 9; + pixel_y = -10 }, -/obj/item/folder, -/turf/simulated/floor/wood, -/area/civilian/vacantoffice) +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) +"qVc" = ( +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/maintenance/trading) "qVg" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -95035,15 +95263,15 @@ }, /area/hallway/primary/central/south) "qVr" = ( -/obj/machinery/door/airlock/maintenance{ - req_access = list(12) - }, /obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) "qVB" = ( @@ -95079,6 +95307,15 @@ }, /turf/simulated/floor/engine, /area/toxins/test_chamber) +"qVS" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/controlroom) "qWg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -95538,11 +95775,6 @@ icon_state = "dark" }, /area/security/evidence) -"rbU" = ( -/obj/machinery/vending/cola, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel, -/area/security/permahallway) "rbY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -95589,6 +95821,10 @@ icon_state = "white" }, /area/medical/medbay2) +"rcl" = ( +/obj/item/stack/sheet/cardboard, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "rcm" = ( /obj/effect/landmark/event/blobstart, /turf/simulated/floor/plating, @@ -95779,6 +96015,20 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/captain/bedroom) +"reD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "reH" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/syringe{ @@ -95833,6 +96083,43 @@ icon_state = "tranquillite" }, /area/crew_quarters/theatre) +"rff" = ( +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + dir = 1; + icon_state = "grass_edge_medium_corner" + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/candy, +/obj/effect/decal/cleanable{ + color = "yellow"; + icon = 'icons/effects/crayondecal.dmi'; + icon_state = "c" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) +"rfj" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 4; + icon_state = "grass_edge_medium" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "rfm" = ( /obj/structure/cable{ icon_state = "4-8" @@ -95869,17 +96156,6 @@ icon_state = "whitepurple" }, /area/toxins/xenobiology) -"rfz" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/effect/decal/warning_stripes/south, -/obj/item/twohanded/required/kirbyplants, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "rfA" = ( /obj/structure/table/reinforced, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -96189,6 +96465,15 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/assembly/chargebay) +"rjA" = ( +/obj/structure/table, +/obj/item/clothing/mask/cigarette/menthol, +/obj/item/reagent_containers/food/drinks/coffee{ + pixel_x = 7; + pixel_y = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "rjK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -96331,6 +96616,20 @@ icon_state = "dark" }, /area/medical/cloning) +"rlq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/power/apc/worn_out{ + cell_type = 0; + pixel_y = -26 + }, +/obj/item/hand_labeler, +/obj/structure/closet/toolcloset, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/maintenance/trading) "rlE" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -96352,6 +96651,12 @@ color = "orange" }, /area/crew_quarters/courtroom) +"rlQ" = ( +/obj/effect/landmark/start/engineer, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) "rma" = ( /obj/machinery/vending/cola, /turf/simulated/floor/plasteel{ @@ -96457,23 +96762,6 @@ /obj/item/storage/toolbox/emergency/old, /turf/simulated/floor/plating, /area/maintenance/consarea_virology) -"rnz" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/item/storage/belt/medical, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/regular, -/obj/machinery/power/apc{ - dir = 1; - pixel_y = 26 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whiteblue" - }, -/area/medical/biostorage) "rnH" = ( /obj/structure/table/glass, /obj/effect/decal/warning_stripes/northwestcorner, @@ -96741,6 +97029,12 @@ icon_state = "dark" }, /area/bridge) +"rpS" = ( +/obj/effect/decal/warning_stripes/northeast, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "rpY" = ( /turf/simulated/wall, /area/storage/primary) @@ -96804,17 +97098,6 @@ }, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/courtroom) -"rrl" = ( -/obj/machinery/flasher/portable, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "vault" - }, -/area/security/securearmory) "rrr" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -96968,7 +97251,7 @@ dir = 9; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "rtb" = ( /obj/structure/closet/coffin, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -97051,6 +97334,13 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint) +"rui" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "rum" = ( /obj/structure/cable{ icon_state = "1-2" @@ -97220,6 +97510,24 @@ }, /turf/simulated/floor/plasteel, /area/assembly/chargebay) +"rwD" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable{ + color = "771919"; + icon = 'icons/effects/crayondecal.dmi'; + icon_state = "face" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/trading) "rwM" = ( /obj/structure/table, /obj/item/toy/figure/magistrate{ @@ -97327,6 +97635,19 @@ icon_state = "dark" }, /area/chapel/office) +"ryc" = ( +/obj/effect/spawner/window/reinforced, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/casino) +"ryd" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/securearmory) "ryp" = ( /obj/machinery/vending/coffee, /turf/simulated/floor/plasteel{ @@ -97432,13 +97753,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/brig) -"rzo" = ( -/obj/item/aiModule/quarantine, -/obj/structure/table/glass, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/ai_upload) "rzq" = ( /obj/structure/cable{ icon_state = "1-2" @@ -97487,6 +97801,10 @@ "rzU" = ( /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/captain) +"rAa" = ( +/obj/structure/flora/junglebush/b, +/turf/simulated/floor/grass, +/area/maintenance/fpmaint) "rAh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -97506,13 +97824,6 @@ /obj/item/flashlight/seclite, /turf/simulated/floor/plasteel, /area/security/main) -"rAs" = ( -/obj/effect/decal/warning_stripes/east, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkred" - }, -/area/security/securearmory) "rAA" = ( /obj/item/radio/intercom{ pixel_x = 28 @@ -97531,6 +97842,21 @@ icon_state = "chapel" }, /area/chapel/main) +"rAH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/glass/reinforced, +/area/maintenance/fpmaint) "rAM" = ( /turf/simulated/wall, /area/toxins/xenobiology) @@ -97643,6 +97969,16 @@ icon_state = "whitepurple" }, /area/medical/research/nhallway) +"rCm" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Mr. Chang's"; + dir = 1 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) "rCs" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -97670,6 +98006,16 @@ icon_state = "caution" }, /area/maintenance/bar) +"rCR" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/wood, +/area/civilian/vacantoffice) "rCV" = ( /obj/structure/table/reinforced, /obj/machinery/door_control{ @@ -97755,6 +98101,14 @@ }, /turf/space, /area/space) +"rDo" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) "rDp" = ( /obj/effect/decal/warning_stripes/southwestcorner, /turf/simulated/floor/plasteel/airless, @@ -97810,14 +98164,6 @@ icon_state = "red" }, /area/security/customs) -"rDM" = ( -/obj/machinery/flasher/portable, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "vault" - }, -/area/security/securearmory) "rDP" = ( /obj/machinery/light{ dir = 4 @@ -97990,6 +98336,14 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/fitness) +"rFD" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/decal/warning_stripes/east, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "rFG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -98066,17 +98420,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/starboardsolar) -"rGK" = ( -/obj/machinery/flasher/portable, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "vault" - }, -/area/security/securearmory) "rGM" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -98087,17 +98430,6 @@ icon_state = "purplefull" }, /area/toxins/xenobiology) -"rGO" = ( -/obj/effect/decal/warning_stripes/red, -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/item/radio/intercom{ - pixel_y = 28 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "vault" - }, -/area/security/securearmory) "rHl" = ( /obj/structure/table/reinforced, /obj/item/deck/cards/syndicate/black, @@ -98184,13 +98516,6 @@ icon_state = "red" }, /area/security/reception) -"rHW" = ( -/obj/structure/dispenser/oxygen, -/obj/effect/decal/warning_stripes/red, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "rIt" = ( /obj/structure/chair/office/light{ dir = 8 @@ -98271,16 +98596,6 @@ icon_state = "whitepurple" }, /area/medical/research/nhallway) -"rJG" = ( -/obj/machinery/suit_storage_unit/security, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "rJJ" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/structure/closet/radiation, @@ -98402,16 +98717,6 @@ }, /turf/simulated/floor/plasteel, /area/toxins/lab) -"rLl" = ( -/obj/machinery/suit_storage_unit/security, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "rLo" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -98474,14 +98779,17 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint4) -"rLF" = ( -/obj/effect/decal/warning_stripes/east, -/obj/machinery/suit_storage_unit/security, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"rLE" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 1; + icon_state = "grass_edge_medium" }, -/area/security/securearmory) +/obj/structure/chair{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "rLL" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -98489,6 +98797,15 @@ }, /turf/simulated/floor/plating, /area/security/podbay) +"rLY" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/ausbushes, +/obj/structure/table/wood, +/obj/effect/mapping_helpers/table_flip{ + dir = 4 + }, +/turf/simulated/floor/grass, +/area/maintenance/fpmaint) "rLZ" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -98535,10 +98852,20 @@ }, /area/crew_quarters/locker) "rMn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/decorations/sticky_decorations/flammable/christmas_tree, -/turf/simulated/floor/plating, -/area/crew_quarters/trading) +/obj/structure/table/wood/fancy/green, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/reagent_containers/food/condiment/peppermill, +/obj/item/kitchen/utensil/fork{ + pixel_x = 7 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) "rMp" = ( /obj/structure/closet{ custom_door_overlay = "black"; @@ -98616,6 +98943,16 @@ /obj/structure/reagent_dispensers/watertank, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"rNz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dust, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/glass/reinforced, +/area/maintenance/fpmaint) "rNO" = ( /obj/structure/cable{ icon_state = "1-2" @@ -98692,6 +99029,20 @@ icon_state = "darkred" }, /area/security/execution) +"rPa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/bathhouse{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "rPi" = ( /obj/structure/cable{ icon_state = "1-2" @@ -98854,6 +99205,20 @@ }, /turf/simulated/floor/plating, /area/engineering/engine) +"rQX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) "rRf" = ( /obj/machinery/embedded_controller/radio/airlock/airlock_controller{ id_tag = "engineering_east_airlock"; @@ -98952,6 +99317,18 @@ icon_state = "neutralcorner" }, /area/crew_quarters/locker) +"rRY" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/bottle/whiskey, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/obj/item/reagent_containers/food/drinks/flask/detflask, +/obj/item/lighter/zippo/detective, +/turf/simulated/floor/wood, +/area/security/detectives_office) "rSa" = ( /obj/effect/decal/warning_stripes/north, /obj/machinery/light{ @@ -99025,32 +99402,27 @@ }, /turf/simulated/floor/plating, /area/crew_quarters/fitness) +"rSM" = ( +/obj/item/bedsheet/syndie, +/obj/structure/bed, +/obj/item/clothing/mask/gas, +/obj/item/trash/can{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plating, +/area/maintenance/trading) "rSS" = ( /obj/machinery/constructable_frame/machine_frame, /obj/item/stock_parts/cell, /obj/effect/landmark/tiles/damageturf, /turf/simulated/floor/plating, /area/maintenance/asmaint4) -"rTm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "rTA" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/wall, /area/maintenance/asmaint) -"rTE" = ( -/obj/machinery/computer/borgupload, -/obj/item/radio/intercom/private{ - pixel_y = -28 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/ai_upload) "rTF" = ( /obj/machinery/photocopier, /turf/simulated/floor/plasteel{ @@ -99058,6 +99430,15 @@ icon_state = "whitepurple" }, /area/toxins/lab) +"rTM" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/aisat/aihallway) "rTW" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -99394,6 +99775,18 @@ icon_state = "caution" }, /area/engineering/break_room) +"rZj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "rZo" = ( /obj/item/twohanded/required/kirbyplants, /obj/machinery/alarm{ @@ -99897,11 +100290,17 @@ /turf/simulated/floor/plating, /area/maintenance/asmaint) "seM" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-cherry" +/obj/structure/chair/wood{ + dir = 4 }, -/area/crew_quarters/trading) +/obj/machinery/light_switch{ + pixel_x = -24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) "sfq" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -99968,6 +100367,25 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/maintenance/asmaint4) +"sgj" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/obj/machinery/requests_console{ + department = "Chemistry"; + departmentType = 2; + name = "Chemistry Requests Console"; + pixel_x = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) "sgu" = ( /obj/structure/cable{ icon_state = "4-8" @@ -100187,6 +100605,23 @@ /obj/machinery/status_display, /turf/simulated/wall, /area/storage/primary) +"siP" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + icon_state = "grass_edge_medium" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 1; + icon_state = "grass_edge_medium" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "sja" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -100233,6 +100668,10 @@ "sjs" = ( /turf/simulated/floor/plasteel, /area/maintenance/bar) +"sjy" = ( +/obj/effect/spawner/random_spawners/oil_20, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "sjO" = ( /obj/structure/table/reinforced, /obj/structure/window/reinforced/tinted{ @@ -100264,6 +100703,23 @@ /obj/structure/sign/science, /turf/simulated/wall/r_wall, /area/medical/research/nhallway) +"skn" = ( +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 1; + icon_state = "grass_edge_medium" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "skp" = ( /obj/structure/table/wood, /obj/item/taperecorder, @@ -100647,6 +101103,27 @@ "soL" = ( /turf/simulated/floor/bluegrid, /area/turret_protected/ai_upload) +"soO" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 9; + icon_state = "grass_edge_medium" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/holosign/barrier/engineering, +/turf/simulated/floor/glass/reinforced, +/area/maintenance/fpmaint) "soV" = ( /turf/simulated/floor/plasteel{ dir = 6; @@ -101103,21 +101580,6 @@ icon_state = "whiteblue" }, /area/medical/sleeper) -"stT" = ( -/obj/effect/decal/warning_stripes/red/hollow, -/obj/structure/rack/gunrack, -/obj/item/gun/energy/gun{ - pixel_x = -7 - }, -/obj/item/gun/energy/gun{ - pixel_x = 9 - }, -/obj/structure/window/reinforced, -/obj/item/gun/energy/gun, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "stU" = ( /obj/item/stack/ore/bananium, /turf/space, @@ -101147,24 +101609,6 @@ icon_state = "whitepurple" }, /area/toxins/explab) -"sui" = ( -/obj/structure/grille, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/warning_stripes/south, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "sum" = ( /obj/structure/table/wood, /obj/item/pen/multi{ @@ -101407,6 +101851,19 @@ }, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/captain/bedroom) +"sxl" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/south, +/turf/simulated/floor/plating, +/area/engineering/engine) "sxp" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -101743,7 +102200,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "sAK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -101826,6 +102283,19 @@ "sBL" = ( /turf/simulated/wall/r_wall, /area/security/main) +"sBM" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/trading) "sBX" = ( /obj/machinery/status_display{ pixel_x = -32 @@ -101957,15 +102427,12 @@ icon_state = "darkred" }, /area/security/execution) -"sDo" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor/northleft{ - dir = 8; - locked = 1 +"sDg" = ( +/obj/machinery/vending/autodrobe, +/turf/simulated/floor/plasteel{ + icon_state = "bar" }, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/maintenance/trading) +/area/clownoffice) "sDu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -102009,19 +102476,6 @@ icon_state = "purplefull" }, /area/toxins/test_chamber) -"sDI" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/maintenance/trading) "sDU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ @@ -102163,7 +102617,7 @@ dir = 5; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "sGl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -102199,6 +102653,10 @@ icon_state = "darkbluefull" }, /area/turret_protected/aisat_interior) +"sGP" = ( +/obj/structure/sign/custodian, +/turf/simulated/wall, +/area/maintenance/trading) "sGS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -102265,19 +102723,12 @@ }, /area/toxins/explab) "sIo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/power/apc/worn_out{ - cell_type = 0; - dir = 1; - pixel_y = 26 - }, -/obj/structure/cable{ - icon_state = "0-2" +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 }, -/turf/simulated/floor/plating, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood/fancy/oak, /area/maintenance/banya) "sIs" = ( /obj/machinery/hologram/holopad, @@ -102314,6 +102765,13 @@ /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel, /area/engineering/engine) +"sIJ" = ( +/obj/machinery/suit_storage_unit/security, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "sIL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -102376,6 +102834,22 @@ "sJK" = ( /turf/simulated/floor/greengrid, /area/engineering/gravitygenerator) +"sKc" = ( +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + dir = 8; + icon_state = "grass_edge_medium_corner" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/constructable_frame/machine_frame, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "sKg" = ( /obj/structure/window/reinforced{ dir = 1; @@ -102384,6 +102858,29 @@ /obj/item/flag/nt, /turf/simulated/floor/carpet/royalblue, /area/crew_quarters/captain/bedroom) +"sKk" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/ammo_box/magazine/enforcer/lethal{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/ammo_box/magazine/enforcer/lethal{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/magazine/enforcer/lethal, +/obj/item/ammo_box/magazine/enforcer/lethal{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Lethal Bullets" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "sKv" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 @@ -102472,6 +102969,18 @@ }, /turf/simulated/floor/wood, /area/security/hos) +"sMb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/plasteel{ + icon_state = "darkredfull" + }, +/area/security/securearmory) "sMh" = ( /obj/structure/table, /obj/effect/decal/warning_stripes/red/hollow, @@ -102566,12 +103075,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint2) -"sMP" = ( -/obj/machinery/hologram/holopad, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "sMS" = ( /obj/structure/cable{ icon_state = "1-2" @@ -102611,22 +103114,6 @@ icon_state = "neutral" }, /area/storage/tech) -"sNn" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "sNt" = ( /obj/item/twohanded/required/kirbyplants, /obj/machinery/ai_status_display{ @@ -102642,6 +103129,23 @@ icon_state = "dark" }, /area/library) +"sNI" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 1; + icon_state = "grass_edge_medium" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/wood, +/obj/effect/mapping_helpers/table_flip{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "sNQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -103071,9 +103575,12 @@ /turf/simulated/floor/plating, /area/medical/virology/lab) "sSa" = ( -/obj/effect/spawner/random_spawners/rodent, -/turf/simulated/floor/plating, -/area/maintenance/trading) +/obj/effect/decal/warning_stripes/red, +/obj/structure/closet/l3closet/security, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "sSo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -103082,6 +103589,21 @@ icon_state = "neutralfull" }, /area/bridge/checkpoint/south) +"sSy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) "sSD" = ( /obj/structure/cable{ icon_state = "4-8" @@ -103282,12 +103804,10 @@ }, /area/security/holding_cell) "sVt" = ( -/mob/living/simple_animal/mouse/brown{ - desc = "Совершенно точно и официально уполномоченный следить за состоянием станции непосредственно, как главный архитектор."; - name = "Инспектор Мышь" - }, +/obj/effect/decal/cleanable/dust, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, -/area/maintenance/casino) +/area/maintenance/banya) "sVx" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ @@ -103357,6 +103877,25 @@ "sWs" = ( /turf/simulated/floor/carpet, /area/lawoffice) +"sWw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "sWE" = ( /obj/structure/safe/floor, /obj/item/clothing/mask/cigarette/pipe, @@ -103429,6 +103968,26 @@ }, /turf/simulated/floor/plating, /area/medical/virology/lab) +"sXV" = ( +/obj/item/clothing/suit/armor/laserproof, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/machinery/door/window{ + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "sYb" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_barrier/possibly_welded_airlock, @@ -103437,6 +103996,10 @@ }, /turf/simulated/floor/plating, /area/maintenance/starboard) +"sYp" = ( +/obj/structure/flora/grass/jungle/b, +/turf/simulated/floor/grass, +/area/maintenance/fpmaint) "sYB" = ( /obj/structure/cable{ icon_state = "0-8" @@ -103778,6 +104341,17 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/plasteel, /area/security/brig) +"tcR" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/glass/bucket, +/obj/machinery/fishtank/bowl{ + pixel_y = 5 + }, +/obj/machinery/newscaster{ + pixel_x = 30 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/serviceyard) "tcS" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable, @@ -103895,20 +104469,6 @@ }, /turf/simulated/floor/plating, /area/assembly/robotics) -"tdC" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Barber Shop" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "tdH" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -104044,18 +104604,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/kitchen) -"tfh" = ( -/obj/structure/closet/bombclosetsecurity, -/obj/effect/decal/warning_stripes/red, -/obj/effect/decal/warning_stripes/north, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 26 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "tfk" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -104283,6 +104831,38 @@ }, /turf/simulated/wall/r_wall, /area/security/detectives_office) +"tig" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/shield/riot{ + pixel_x = -6; + pixel_y = -6 + }, +/obj/item/shield/riot{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/shield/riot, +/obj/item/shield/riot{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window{ + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "tii" = ( /obj/structure/chair{ dir = 4 @@ -104894,13 +105474,6 @@ icon_state = "dark" }, /area/security/securearmory) -"toS" = ( -/obj/effect/decal/warning_stripes/northeastcorner, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkredcorners" - }, -/area/security/securearmory) "toW" = ( /obj/machinery/power/terminal{ dir = 1 @@ -104919,13 +105492,15 @@ /turf/simulated/floor/plating, /area/maintenance/detectives_office) "tpo" = ( -/obj/structure/table/reinforced, -/obj/effect/decal/cleanable/dirt, -/obj/structure/decorative_structures/flammable/grandfather_clock, -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-cherry" +/obj/structure/chair/wood{ + dir = 8 }, -/area/crew_quarters/trading) +/obj/machinery/light, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) "tpt" = ( /turf/simulated/floor/plasteel{ icon_state = "redfull" @@ -105198,6 +105773,16 @@ /obj/structure/girder, /turf/simulated/floor/plating, /area/maintenance/consarea_virology) +"ttD" = ( +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/power/smes{ + charge = 2e+006 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "ttY" = ( /obj/structure/table, /obj/item/stack/sheet/cloth/ten, @@ -105262,7 +105847,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "tuS" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light_switch{ @@ -105422,6 +106007,14 @@ icon_state = "whitehall" }, /area/maintenance/tourist) +"twj" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/decal/warning_stripes/northwest, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "two" = ( /obj/machinery/firealarm{ dir = 4; @@ -105701,15 +106294,6 @@ icon_state = "neutralfull" }, /area/engineering/engine) -"tzR" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/landmark/start/barber, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "tzV" = ( /obj/machinery/door/airlock/medical{ glass = 1; @@ -105827,6 +106411,20 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"tBz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) "tBB" = ( /obj/machinery/status_display{ pixel_x = -32 @@ -105972,6 +106570,20 @@ icon_state = "grimy" }, /area/chapel/main) +"tDk" = ( +/obj/machinery/camera{ + c_tag = "Engine Room South"; + dir = 1; + network = list("Engineering","SS13") + }, +/obj/effect/decal/warning_stripes/south, +/obj/structure/window/reinforced{ + dir = 8 + }, +/mob/living/simple_animal/possum/Poppy, +/obj/structure/bed/dogbed/pet, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "tDv" = ( /obj/effect/decal/warning_stripes/south, /obj/machinery/door/airlock/external{ @@ -106009,6 +106621,25 @@ icon_state = "tranquillite" }, /area/maintenance/kitchen) +"tDJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/spacetwinkie{ + pixel_x = -11; + pixel_y = -6 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "hydrofloor" + }, +/area/maintenance/trading) "tDN" = ( /obj/structure/extinguisher_cabinet{ pixel_y = -28 @@ -106066,27 +106697,6 @@ icon_state = "white" }, /area/medical/research/shallway) -"tED" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "yellowfull" - }, -/area/engineering/engine) "tEE" = ( /obj/structure/table/reinforced, /obj/effect/decal/cleanable/dirt, @@ -106368,6 +106978,22 @@ }, /turf/simulated/floor/plasteel, /area/hallway/secondary/exit) +"tHl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_x = 1; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/drinks/coffee{ + list_reagents = list("honey" = 15); + pixel_x = 9; + pixel_y = 5 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-cherry" + }, +/area/crew_quarters/trading) "tHn" = ( /obj/structure/cable{ icon_state = "1-2" @@ -107099,6 +107725,28 @@ icon_state = "red" }, /area/security/reception) +"tNZ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dust, +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 1; + icon_state = "grass_edge_medium" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "tOb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -107149,7 +107797,7 @@ "tOj" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, -/area/construction/hallway) +/area/aisat/aihallway) "tOp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -107347,6 +107995,25 @@ }, /turf/simulated/floor/plating, /area/security/warden) +"tQA" = ( +/obj/structure/flora/ausbushes, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/grass, +/area/maintenance/fpmaint) "tQC" = ( /obj/machinery/door/airlock/multi_tile/glass, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -107393,6 +108060,15 @@ }, /turf/simulated/floor/plating, /area/engineering/hardsuitstorage) +"tQR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 8; + icon_state = "grass_edge_medium" + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "tQX" = ( /obj/machinery/computer/message_monitor, /turf/simulated/floor/bluegrid, @@ -107693,9 +108369,12 @@ /turf/simulated/floor/engine, /area/toxins/mixing) "tVr" = ( -/obj/machinery/status_display, -/turf/simulated/wall, -/area/engineering/break_room) +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/main) "tVu" = ( /obj/structure/cable{ icon_state = "1-2" @@ -107912,6 +108591,19 @@ icon_state = "purple" }, /area/quartermaster/miningdock) +"tXL" = ( +/obj/structure/table/reinforced, +/obj/item/book/manual/engineering_guide{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/book/manual/engineering_particle_accelerator, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engineering/engine) "tXP" = ( /obj/structure/window/reinforced{ dir = 8 @@ -108135,6 +108827,12 @@ icon_state = "darkblue" }, /area/maintenance/detectives_office) +"tZO" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/simulated/wall, +/area/hallway/secondary/entry/commercial) "tZR" = ( /obj/machinery/pipedispenser, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -108149,15 +108847,6 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/toxins/xenobiology) -"ual" = ( -/obj/machinery/alarm{ - pixel_y = 22 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whitepurple" - }, -/area/medical/research/nhallway) "uaF" = ( /obj/machinery/hydroponics/soil, /obj/effect/decal/warning_stripes/yellow, @@ -108187,6 +108876,20 @@ /obj/item/shard, /turf/simulated/floor/plating, /area/maintenance/asmaint4) +"uaW" = ( +/obj/structure/table/wood/fancy/green, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/kitchen/utensil/fork{ + pixel_x = 7 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) "ubg" = ( /turf/simulated/floor/plasteel, /area/security/processing) @@ -108390,6 +109093,25 @@ icon_state = "whitebluefull" }, /area/medical/reception) +"udQ" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + density = 1; + dir = 2; + icon_state = "closed"; + id_tag = "Traiders Windows"; + name = "Traiders Privacy Shutters"; + opacity = 1 + }, +/obj/structure/table/reinforced, +/obj/machinery/door/window/westright{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/crew_quarters/trading) "udT" = ( /obj/machinery/firealarm{ pixel_y = 26 @@ -108516,7 +109238,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "ufo" = ( /obj/structure/cable{ icon_state = "1-2" @@ -109021,6 +109743,26 @@ icon_state = "whiteblue" }, /area/assembly/robotics) +"ulg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/effect/decal/cleanable/dust, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/storage/box/lights/bulbs, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) +"ulk" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 5; + icon_state = "grass_edge_medium" + }, +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + icon_state = "grass_edge_medium_corner" + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "ulo" = ( /obj/structure/chair{ dir = 8 @@ -109111,6 +109853,12 @@ icon_state = "red" }, /area/security/securehallway) +"umE" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/hallway/secondary/entry/commercial) "umL" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/chair/comfy/red{ @@ -109237,6 +109985,13 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint) +"unX" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/warning_stripes/west, +/turf/simulated/floor/plating, +/area/engineering/engine) "uob" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -109263,6 +110018,13 @@ /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/wood, /area/security/hos) +"uou" = ( +/obj/effect/decal/warning_stripes/red, +/obj/machinery/suit_storage_unit/security, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "uoA" = ( /obj/structure/cable{ icon_state = "4-8" @@ -109437,29 +110199,6 @@ icon_state = "darkred" }, /area/security/securearmory) -"uqM" = ( -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Lethal Bullets" - }, -/obj/item/ammo_box/magazine/enforcer/lethal{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/ammo_box/magazine/enforcer/lethal, -/obj/item/ammo_box/magazine/enforcer/lethal{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/ammo_box/magazine/enforcer/lethal{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "uqO" = ( /obj/structure/cable{ icon_state = "0-2" @@ -109472,34 +110211,17 @@ icon_state = "tranquillite" }, /area/maintenance/kitchen) -"urn" = ( -/obj/effect/decal/warning_stripes/red/hollow, -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced, -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Magazines for SP-91-RC"; - req_access = list(1) - }, -/obj/item/ammo_box/magazine/sp91rc{ - pixel_x = 8 - }, -/obj/item/ammo_box/magazine/sp91rc{ - pixel_x = 4 - }, -/obj/item/ammo_box/magazine/sp91rc, -/obj/item/ammo_box/magazine/sp91rc{ - pixel_x = -4 +"urw" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/spray/cleaner/medical{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 1; + icon_state = "whiteblue" }, -/area/security/securearmory) +/area/medical/surgery/south) "urA" = ( /obj/structure/window/reinforced{ dir = 4 @@ -109509,7 +110231,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "urC" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction, /turf/simulated/wall/r_wall/coated, @@ -109646,6 +110368,10 @@ }, /turf/simulated/floor/plating, /area/assembly/robotics) +"uuh" = ( +/obj/effect/spawner/random_spawners/wall_rusted_30, +/turf/simulated/wall, +/area/maintenance/trading) "uul" = ( /obj/machinery/portable_atmospherics/canister/sleeping_agent, /turf/simulated/floor/plasteel{ @@ -109905,7 +110631,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "uwZ" = ( /obj/machinery/ai_slipper, /obj/structure/cable{ @@ -110389,17 +111115,6 @@ "uCn" = ( /turf/simulated/wall, /area/maintenance/asmaint) -"uCs" = ( -/obj/structure/cable/yellow{ - d2 = 2; - icon_state = "0-2" - }, -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/effect/decal/warning_stripes/northeast, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "uCv" = ( /obj/effect/decal/warning_stripes/red/hollow, /obj/machinery/suit_storage_unit/security, @@ -110516,7 +111231,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "uEQ" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -110678,28 +111393,16 @@ icon_state = "vault" }, /area/engineering/mechanic_workshop/hangar) -"uGH" = ( -/obj/structure/chair/wood{ - dir = 1 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 26 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 +"uGV" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/machinery/newscaster{ + pixel_y = 30 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" }, -/turf/simulated/floor/carpet/green, -/area/crew_quarters/mrchangs) +/area/medical/biostorage) "uHf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -110927,23 +111630,6 @@ /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/plasteel, /area/engineering/engine) -"uJj" = ( -/obj/machinery/access_button{ - command = "cycle_exterior"; - frequency = 1379; - master_tag = "engineering_east_airlock"; - name = "exterior access button"; - pixel_x = 20; - pixel_y = 20; - req_access = list(10,13) - }, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "uJo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -110981,12 +111667,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/starboard) -"uJA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/carpet/green, -/area/crew_quarters/mrchangs) "uJJ" = ( /obj/machinery/newscaster{ pixel_y = 30 @@ -111062,6 +111742,19 @@ icon_state = "redcorner" }, /area/security/brig) +"uKB" = ( +/obj/machinery/camera{ + c_tag = "Clown Office" + }, +/obj/structure/bed, +/obj/item/bedsheet/clown, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/clownoffice) "uKK" = ( /turf/simulated/floor/plasteel{ dir = 5; @@ -111127,6 +111820,10 @@ icon_state = "dark" }, /area/crew_quarters/chief) +"uLb" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/banya) "uLk" = ( /obj/effect/decal/warning_stripes/south, /obj/effect/decal/warning_stripes/north, @@ -111236,12 +111933,10 @@ }, /area/maintenance/asmaint4) "uMU" = ( -/obj/structure/sign/poster/random{ - pixel_x = -32 - }, /obj/structure/chair{ dir = 4 }, +/obj/machinery/station_map/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "green" @@ -111254,7 +111949,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "uNn" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -111336,7 +112031,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, -/area/construction/hallway) +/area/aisat/aihallway) "uOt" = ( /turf/simulated/floor/plasteel{ dir = 10; @@ -111440,6 +112135,13 @@ icon_state = "darkred" }, /area/security/permabrig) +"uPg" = ( +/obj/effect/decal/warning_stripes/red, +/obj/structure/closet/bombclosetsecurity, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "uPh" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -111487,15 +112189,13 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint4) -"uPT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light_switch{ - pixel_x = -24 +"uPO" = ( +/obj/effect/decal/warning_stripes/east, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plating, -/area/crew_quarters/trading) +/area/engineering/engine) "uPX" = ( /obj/effect/decal/cleanable/blood/drip, /turf/simulated/floor/plating, @@ -111552,6 +112252,10 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/storage/primary) +"uQJ" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/engineering/break_room) "uQL" = ( /obj/machinery/camera{ c_tag = "Robotics Lab"; @@ -111770,7 +112474,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, -/area/construction/hallway) +/area/aisat/aihallway) "uTj" = ( /obj/structure/table/glass, /obj/effect/decal/warning_stripes/north, @@ -112095,20 +112799,6 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central/ne) -"uXS" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/warning_stripes/north, -/turf/simulated/floor/plating, -/area/engineering/engine) "uXU" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table/wood, @@ -112187,7 +112877,7 @@ dir = 9; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "uYT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -112230,7 +112920,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "uZl" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, @@ -112506,20 +113196,6 @@ /obj/machinery/papershredder, /turf/simulated/floor/wood/fancy/cherry, /area/lawoffice) -"vcS" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/spawner/random_spawners/rodent, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "vcX" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -112551,19 +113227,6 @@ icon_state = "darkblue" }, /area/tcommsat/chamber) -"vdH" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/spawner/random_spawners/rodent, -/turf/simulated/floor/wood/fancy/oak, -/area/maintenance/trading) "vdJ" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=Armory_North"; @@ -112619,7 +113282,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "vfb" = ( /obj/machinery/door/airlock/security/glass{ name = "Briefing Room"; @@ -112902,15 +113565,6 @@ icon_state = "neutralcorner" }, /area/crew_quarters/locker) -"vhR" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/applicator/burn, -/obj/item/reagent_containers/glass/bottle/charcoal, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whitepurple" - }, -/area/medical/genetics) "vhV" = ( /obj/item/twohanded/required/kirbyplants, /obj/effect/decal/warning_stripes/southeast, @@ -113183,14 +113837,12 @@ /turf/simulated/wall/r_wall/coated, /area/toxins/sm_test_chamber) "vlh" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -26 - }, -/turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 }, -/area/hallway/secondary/entry/commercial) +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) "vli" = ( /obj/effect/decal/warning_stripes/northeast, /obj/machinery/newscaster{ @@ -113270,6 +113922,14 @@ /obj/item/storage/box/tapes, /turf/simulated/floor/wood, /area/security/detectives_office) +"vlV" = ( +/obj/effect/decal/cleanable{ + color = "771919"; + icon = 'icons/effects/crayondecal.dmi'; + icon_state = "d" + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "vmb" = ( /obj/machinery/status_display, /turf/simulated/wall/r_wall, @@ -113314,6 +113974,17 @@ icon_state = "whitebluefull" }, /area/medical/medbay) +"vmG" = ( +/obj/effect/decal/cleanable/dust, +/obj/effect/turf_decal/siding/wood/pallet, +/obj/effect/decal/cleanable{ + color = "771919"; + icon = 'icons/effects/crayondecal.dmi'; + icon_state = "face" + }, +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/banya) "vmL" = ( /obj/structure/table/reinforced, /obj/item/clothing/gloves/color/latex, @@ -113329,6 +114000,15 @@ /obj/structure/curtain/black, /turf/simulated/floor/plating, /area/maintenance/asmaint3) +"vmS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/vending_refill/youtool, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "vmX" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -113448,6 +114128,23 @@ /obj/structure/inflatable/door, /turf/simulated/floor/plating, /area/maintenance/starboard) +"voz" = ( +/obj/effect/turf_decal{ + dir = 8 + }, +/obj/machinery/conveyor{ + id = "comdel" + }, +/obj/structure/closet, +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/sheet/cardboard, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "voL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ @@ -113501,34 +114198,6 @@ icon_state = "darkblue" }, /area/medical/surgery/south) -"vpi" = ( -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/ammo_box/shotgun/buck{ - pixel_x = 3 - }, -/obj/item/ammo_box/shotgun/buck{ - pixel_y = 3 - }, -/obj/item/ammo_box/shotgun{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/machinery/camera{ - c_tag = "Secure Armory East"; - dir = 8; - network = list("SS13","Security") - }, -/obj/machinery/newscaster/security_unit{ - pixel_x = 28 - }, -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Lethal Bullets" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "vpu" = ( /obj/structure/cable{ icon_state = "1-2" @@ -113564,7 +114233,7 @@ dir = 10; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "vpK" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/yellow{ @@ -113684,31 +114353,6 @@ }, /turf/simulated/floor/plating, /area/medical/surgery/south) -"vqM" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/machinery/door/window{ - dir = 2; - name = "Secure Armory"; - req_access = list(1) - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/clothing/suit/armor/riot, -/obj/item/shield/riot, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/head/helmet/riot, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "vqY" = ( /turf/simulated/floor/plasteel{ dir = 9; @@ -114001,25 +114645,6 @@ icon_state = "neutralfull" }, /area/assembly/robotics) -"vuE" = ( -/obj/structure/rack/gunrack, -/obj/item/gun/projectile/automatic/sp91rc{ - pixel_x = -7 - }, -/obj/item/gun/projectile/automatic/sp91rc{ - pixel_x = -2 - }, -/obj/item/gun/projectile/automatic/sp91rc{ - pixel_x = 2 - }, -/obj/item/gun/projectile/automatic/sp91rc{ - pixel_x = 7 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/securearmory) "vvh" = ( /obj/structure/bed, /obj/item/radio/intercom/locked/prison{ @@ -114095,6 +114720,12 @@ icon_state = "darkblue" }, /area/medical/morgue) +"vwd" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/mech_bay_recharge_floor, +/area/security/securearmory) "vwo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -114772,20 +115403,6 @@ icon_state = "neutralfull" }, /area/engineering/break_room) -"vCh" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/decal/warning_stripes/east, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "vCj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -114929,6 +115546,24 @@ }, /turf/simulated/floor/carpet/red, /area/maintenance/library) +"vDh" = ( +/obj/effect/turf_decal/siding/green{ + color = ""; + icon_state = "grass_edge_medium" + }, +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 1; + icon_state = "grass_edge_medium" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "vDi" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/official/random{ @@ -115403,12 +116038,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/space, /area/space) -"vLk" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/simulated/floor/wood, -/area/civilian/vacantoffice) "vLq" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate, @@ -115483,6 +116112,14 @@ icon_state = "whiteblue" }, /area/medical/medbay) +"vMn" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/decal/warning_stripes/southeastcorner, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "vMS" = ( /obj/structure/chair/office{ dir = 4 @@ -115606,6 +116243,19 @@ icon_state = "whitepurple" }, /area/medical/genetics) +"vOg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) "vOC" = ( /obj/machinery/conveyor/inverted{ dir = 10; @@ -115896,6 +116546,18 @@ }, /turf/space, /area/space) +"vRz" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/decal/warning_stripes/east, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "vSn" = ( /obj/structure/table/glass, /obj/item/defibrillator/loaded, @@ -115904,31 +116566,6 @@ icon_state = "whiteblue" }, /area/medical/surgery/south) -"vSt" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/machinery/door/window{ - dir = 2; - name = "Secure Armory"; - req_access = list(1) - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/clothing/suit/armor/riot, -/obj/item/shield/riot, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/head/helmet/riot, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "vSA" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -116529,17 +117166,6 @@ /obj/machinery/papershredder, /turf/simulated/floor/carpet, /area/magistrateoffice) -"vYk" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkredfull" - }, -/area/security/securearmory) "vYr" = ( /obj/machinery/light{ dir = 8 @@ -116573,35 +117199,6 @@ icon_state = "grimy" }, /area/chapel/office) -"vYL" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/window{ - dir = 8; - name = "Secure Armory"; - req_access = list(1) - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/storage/lockbox/mindshield, -/obj/item/storage/box/trackimp, -/obj/item/storage/box/chemimp{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/item/lock_buster, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "vYT" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -116687,20 +117284,6 @@ }, /turf/simulated/floor/plating, /area/security/prisonershuttle) -"wav" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/space) "waC" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -116743,6 +117326,25 @@ icon_state = "darkblue" }, /area/chapel/main) +"waO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 6; + icon_state = "grass_edge_medium" + }, +/obj/item/grown/bananapeel, +/obj/item/trash/can{ + pixel_x = -4 + }, +/obj/item/trash/candy, +/obj/effect/spawner/random_spawners/grille_13, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "waQ" = ( /obj/item/radio/intercom{ pixel_y = 28 @@ -116800,6 +117402,12 @@ icon_state = "darkblue" }, /area/turret_protected/aisat) +"wbI" = ( +/obj/structure/closet/secure_closet/medical4, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/surgery/south) "wbO" = ( /obj/item/wirecutters, /turf/simulated/floor/plating, @@ -116866,7 +117474,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "wcr" = ( /obj/structure/lattice/catwalk, /obj/machinery/access_button{ @@ -116892,26 +117500,20 @@ icon_state = "dark" }, /area/engineering/aienter) -"wcz" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/effect/decal/warning_stripes/east, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "wcB" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, /turf/simulated/floor/carpet/black, /area/bridge/vip) +"wcC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/vending/clothing, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "wcE" = ( /obj/structure/window/reinforced{ dir = 8 @@ -117183,7 +117785,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "whc" = ( /obj/structure/cable{ icon_state = "4-8" @@ -117230,6 +117832,19 @@ "whO" = ( /turf/simulated/wall/r_wall/coated, /area/crew_quarters/hor) +"whQ" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/decal/warning_stripes/east, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "wie" = ( /obj/machinery/camera{ c_tag = "Departure Lounge South-West"; @@ -117345,6 +117960,11 @@ icon_state = "whiteblue" }, /area/medical/sleeper) +"wjF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "wjG" = ( /obj/machinery/door/poddoor/shutters/preopen{ dir = 8; @@ -117361,6 +117981,23 @@ "wjI" = ( /turf/simulated/wall/r_wall, /area/maintenance/asmaint2) +"wjO" = ( +/obj/effect/turf_decal{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/obj/machinery/conveyor{ + dir = 8; + id = "comdel" + }, +/obj/random/tool, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "wjU" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -117873,6 +118510,14 @@ icon_state = "cautioncorner" }, /area/storage/primary) +"wpU" = ( +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + dir = 1; + icon_state = "grass_edge_medium_corner" + }, +/turf/simulated/wall, +/area/maintenance/fpmaint) "wpY" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -118137,7 +118782,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "wsN" = ( /obj/structure/window/reinforced{ dir = 4 @@ -118279,6 +118924,11 @@ icon_state = "red" }, /area/security/processing) +"wup" = ( +/obj/item/trash/semki, +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/grass, +/area/maintenance/fpmaint) "wuv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -118287,6 +118937,46 @@ icon_state = "grimy" }, /area/security/hos) +"wuE" = ( +/obj/structure/closet/crate, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/stock_parts/matter_bin{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/stock_parts/matter_bin{ + pixel_x = -5; + pixel_y = -1 + }, +/obj/item/stock_parts/matter_bin{ + pixel_y = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/maintenance/trading) +"wuH" = ( +/obj/item/decorations/sticky_decorations/flammable/ghost, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/item/shard{ + icon_state = "small"; + pixel_x = 5; + pixel_y = -13 + }, +/obj/effect/spawner/random_spawners/rodent, +/obj/structure/statue/chickenstatue, +/obj/item/storage/box/papersack{ + pixel_y = 11 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/maintenance/trading) "wuM" = ( /obj/structure/chair/comfy/teal{ dir = 4 @@ -118312,6 +119002,17 @@ }, /turf/space, /area/space) +"wuV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/maintenance/fpmaint) "wuY" = ( /obj/structure/cable{ icon_state = "4-8" @@ -118336,6 +119037,20 @@ icon_state = "neutralcorner" }, /area/crew_quarters/locker) +"wvh" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/warning_stripes/north, +/obj/machinery/light, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "wvA" = ( /obj/item/radio/intercom{ pixel_y = -28 @@ -118762,12 +119477,13 @@ }, /area/crew_quarters/courtroom) "wAK" = ( -/obj/structure/railing{ - dir = 10 +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "Old_Delivery_Shutt" }, -/obj/structure/flora/ausbushes/reedbush, -/turf/simulated/floor/grass, -/area/maintenance/trading) +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "wAL" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/structure/closet/secure_closet/research_reagents, @@ -118785,6 +119501,16 @@ icon_state = "darkredcorners" }, /area/security/warden) +"wAW" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "wBo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -118914,6 +119640,22 @@ /obj/item/trash/spentcasing, /turf/simulated/floor/plating, /area/maintenance/tourist) +"wCY" = ( +/obj/structure/closet/sechammercabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"wDc" = ( +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + dir = 8; + icon_state = "grass_edge_medium_corner" + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "wDg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -118958,6 +119700,19 @@ icon_state = "neutralfull" }, /area/crew_quarters/fitness) +"wDx" = ( +/obj/effect/decal/warning_stripes/east, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "wDB" = ( /obj/item/twohanded/required/kirbyplants, /obj/machinery/newscaster{ @@ -119029,6 +119784,13 @@ icon_state = "grimy" }, /area/library) +"wEv" = ( +/obj/machinery/station_map/directional/south, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/bridge/vip) "wEA" = ( /obj/structure/rack, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -119147,16 +119909,10 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central/west) -"wFr" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/turf/simulated/floor/plating, +"wFH" = ( +/obj/structure/flora/junglebush/c, +/obj/item/trash/sosjerky, +/turf/simulated/floor/grass, /area/maintenance/fpmaint) "wFJ" = ( /obj/machinery/computer/card, @@ -119420,6 +120176,18 @@ icon_state = "red" }, /area/security/prisonershuttle) +"wJu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/green{ + color = ""; + dir = 4; + icon_state = "grass_edge_medium" + }, +/obj/structure/closet, +/obj/effect/decal/cleanable/cobweb2, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "wJy" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -119517,7 +120285,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "wKB" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -119644,7 +120412,7 @@ dir = 8; icon_state = "vault" }, -/area/construction/hallway) +/area/aisat/aihallway) "wLN" = ( /obj/structure/bed, /obj/effect/decal/cleanable/dirt, @@ -119884,6 +120652,12 @@ /obj/structure/cable, /turf/simulated/floor/carpet, /area/crew_quarters/captain/bedroom) +"wOP" = ( +/obj/machinery/station_map/directional/east, +/turf/simulated/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central/west) "wPi" = ( /obj/structure/table/reinforced, /obj/item/clothing/gloves/color/fyellow, @@ -119947,11 +120721,6 @@ }, /turf/simulated/floor/plasteel, /area/storage/tech) -"wQq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/event/revenantspawn, -/turf/simulated/floor/plating, -/area/crew_quarters/trading) "wQr" = ( /obj/structure/cable{ icon_state = "4-8" @@ -120073,7 +120842,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluecorners" }, -/area/construction/hallway) +/area/aisat/aihallway) "wRH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -120112,6 +120881,26 @@ /obj/effect/decal/warning_stripes/north, /turf/simulated/floor/plating, /area/aisat/maintenance) +"wRV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/obj/item/trash/spacetwinkie{ + pixel_x = -11; + pixel_y = -6 + }, +/obj/item/toy/balloon{ + pixel_x = 7; + pixel_y = -7 + }, +/obj/item/toy/balloon, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/storage/fancy/glowsticks_box{ + pixel_x = -17 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/maintenance/trading) "wRX" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -120247,6 +121036,24 @@ icon_state = "green" }, /area/hallway/secondary/exit) +"wUd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/green/corner{ + color = ""; + dir = 4; + icon_state = "grass_edge_medium_corner" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/structure/chair{ + dir = 4 + }, +/turf/simulated/floor/glass/reinforced, +/area/maintenance/fpmaint) "wUq" = ( /obj/item/clothing/mask/cigarette, /turf/simulated/floor/plating/airless, @@ -120368,7 +121175,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "wVP" = ( /obj/structure/falsewall, /turf/simulated/floor/plating, @@ -120441,7 +121248,16 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, -/area/construction/hallway) +/area/aisat/aihallway) +"wWA" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door_control{ + id = "Old_Delivery_Shutt" + }, +/obj/item/stack/packageWrap, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "wWB" = ( /obj/structure/delta_statue/c, /turf/simulated/floor/plasteel{ @@ -120466,16 +121282,6 @@ icon_state = "white" }, /area/medical/virology) -"wWZ" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/item/storage/belt/medical, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/regular, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whiteblue" - }, -/area/medical/biostorage) "wXd" = ( /obj/structure/cable{ icon_state = "1-2" @@ -120498,17 +121304,6 @@ icon_state = "tranquillite" }, /area/maintenance/kitchen) -"wXm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/door/window/eastleft{ - dir = 1; - req_access = list(10) - }, -/obj/effect/decal/warning_stripes/yellow, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "wXn" = ( /obj/item/storage/box/donkpockets, /turf/simulated/floor/plasteel{ @@ -120544,32 +121339,6 @@ icon_state = "neutralfull" }, /area/quartermaster/storage) -"wXI" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/aiModule/oxygen, -/obj/item/aiModule/oneCrewMember, -/obj/item/aiModule/purge, -/obj/item/aiModule/antimov, -/obj/structure/table/glass, -/obj/machinery/door/window{ - base_state = "right"; - dir = 2; - icon_state = "right"; - name = "Core Modules"; - req_access = list(20) - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/ai_upload) "wXY" = ( /obj/structure/window/reinforced{ dir = 4 @@ -120618,6 +121387,13 @@ icon_state = "red" }, /area/security/customs) +"wYO" = ( +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central/east) "wYX" = ( /obj/structure/chair/comfy/black, /obj/effect/landmark/start/nanotrasen_rep, @@ -120663,17 +121439,16 @@ icon_state = "dark" }, /area/security/permabrig) -"xas" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -26 +"xaq" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 }, -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/bottle/whiskey, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, -/obj/item/reagent_containers/food/drinks/flask/detflask, -/turf/simulated/floor/wood, -/area/security/detectives_office) +/obj/effect/decal/warning_stripes/northeastcorner, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel, +/area/engineering/controlroom) "xat" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -120708,6 +121483,32 @@ icon_state = "showroomfloor" }, /area/maintenance/kitchen) +"xaT" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dust, +/obj/structure/closet/walllocker{ + pixel_y = 28 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/obj/item/clothing/glasses/sunglasses, +/obj/item/stack/spacechips/c10, +/obj/item/storage/wallet/color/black, +/obj/item/toy/russian_revolver/trick_revolver, +/obj/item/shard{ + icon_state = "medium"; + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/trash/sosjerky{ + pixel_x = 5; + pixel_y = 5 + }, +/turf/simulated/floor/carpet/red, +/area/maintenance/casino) "xba" = ( /obj/machinery/atm{ pixel_x = -32 @@ -120740,13 +121541,6 @@ "xbn" = ( /turf/simulated/wall/r_wall/coated, /area/toxins/mixing) -"xbr" = ( -/obj/item/aiModule/freeform, -/obj/structure/table/glass, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/ai_upload) "xbB" = ( /obj/machinery/door/window/brigdoor{ base_state = "rightsecure"; @@ -121075,6 +121869,11 @@ }, /turf/simulated/floor/plasteel, /area/toxins/storage) +"xeN" = ( +/obj/effect/decal/warning_stripes/south, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "xeP" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/coatrack, @@ -121233,6 +122032,14 @@ icon_state = "redcorner" }, /area/security/customs) +"xgj" = ( +/obj/effect/decal/warning_stripes/south, +/obj/item/twohanded/required/kirbyplants, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "xgm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -121259,6 +122066,15 @@ /obj/structure/table/wood, /turf/simulated/floor/carpet, /area/security/detectives_office) +"xgv" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/warning_stripes/west, +/obj/machinery/computer/security/telescreen/singularity{ + dir = 8; + pixel_x = -32 + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "xgy" = ( /obj/machinery/gateway{ dir = 1 @@ -121463,15 +122279,6 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/maintenance/engineering) -"xiR" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/space) "xji" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/chair/comfy/beige{ @@ -121534,7 +122341,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "xkm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -121559,20 +122366,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/kitchen) -"xkw" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/spawner/random_spawners/rodent, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/maintenance/fpmaint) "xkY" = ( /obj/structure/lattice/catwalk, /turf/space, @@ -121843,6 +122636,15 @@ icon_state = "vault" }, /area/security/warden) +"xoI" = ( +/obj/structure/flora/grass/jungle, +/obj/item/seeds/grass, +/obj/item/reagent_containers/glass/bottle/nutrient/rh{ + pixel_x = -10; + pixel_y = 18 + }, +/turf/simulated/floor/grass, +/area/maintenance/fpmaint) "xoK" = ( /obj/structure/window/reinforced{ dir = 8 @@ -122035,23 +122837,6 @@ "xqu" = ( /turf/simulated/wall/r_wall, /area/security/range) -"xqC" = ( -/obj/structure/grille, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/decal/warning_stripes/northeastcorner, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) -"xqE" = ( -/obj/vehicle/ridden/secway, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/securearmory) "xqJ" = ( /obj/structure/grille, /turf/simulated/floor/plating, @@ -122357,6 +123142,21 @@ icon_state = "darkblue" }, /area/chapel/main) +"xul" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) "xun" = ( /obj/structure/table, /obj/item/paper_bin, @@ -122462,12 +123262,21 @@ }, /area/aisat/maintenance) "xuO" = ( -/obj/structure/railing{ - dir = 6 +/obj/structure/table/reinforced, +/obj/item/pen/red, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "Old_Delivery_Shutt" }, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/simulated/floor/grass, -/area/maintenance/trading) +/obj/machinery/door/window/westright{ + dir = 1 + }, +/obj/item/reagent_containers/food/drinks/coffee{ + pixel_x = 7; + pixel_y = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "xuT" = ( /obj/effect/landmark/tiles/damageturf, /turf/simulated/floor/plating, @@ -122677,6 +123486,17 @@ /obj/structure/lattice/catwalk, /turf/space, /area/solar/port) +"xwz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/pen, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "hydrofloor" + }, +/area/maintenance/trading) "xwF" = ( /obj/structure/window/reinforced, /obj/item/twohanded/required/kirbyplants, @@ -122689,7 +123509,17 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) +"xwJ" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/decal/warning_stripes/north, +/turf/simulated/floor/plating, +/area/engineering/engine) "xwL" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/lootdrop/maintenance, @@ -123054,6 +123884,14 @@ }, /turf/simulated/floor/plating, /area/janitor) +"xzD" = ( +/obj/structure/table/wood, +/obj/item/storage/toolbox/fakesyndi, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/hallway/secondary/entry/commercial) "xzK" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/effect/decal/warning_stripes/south, @@ -123177,7 +124015,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "xBS" = ( /obj/effect/decal/warning_stripes/northeastcorner, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -123616,6 +124454,12 @@ /obj/structure/cable, /turf/simulated/floor/plating, /area/security/reception) +"xGC" = ( +/obj/item/flashlight/flare/glowstick/red{ + on = 1 + }, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/commercial) "xGL" = ( /obj/effect/decal/warning_stripes/north, /turf/simulated/floor/plasteel{ @@ -123845,6 +124689,17 @@ icon_state = "neutralcorner" }, /area/crew_quarters/fitness) +"xJd" = ( +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkyellow" + }, +/area/maintenance/fpmaint) "xJf" = ( /obj/structure/disposalpipe/segment, /obj/machinery/hologram/holopad, @@ -124235,6 +125090,15 @@ icon_state = "yellow" }, /area/engineering/engine/monitor) +"xMx" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/grass, +/area/maintenance/fpmaint) "xMC" = ( /obj/effect/spawner/window/reinforced/plasma, /obj/machinery/door/poddoor/preopen{ @@ -124901,7 +125765,7 @@ dir = 8; icon_state = "vault" }, -/area/construction/hallway) +/area/aisat/aihallway) "xTh" = ( /obj/machinery/camera{ c_tag = "Server Room"; @@ -125071,7 +125935,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "xUL" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/cobweb_left_frequent, @@ -125158,21 +126022,6 @@ }, /turf/simulated/floor/plasteel, /area/bridge/checkpoint/south) -"xWn" = ( -/obj/structure/table/reinforced, -/obj/structure/mirror{ - pixel_x = 28 - }, -/obj/machinery/camera{ - c_tag = "Barber Shop" - }, -/obj/item/radio/intercom{ - pixel_y = 28 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "xWx" = ( /obj/effect/decal/warning_stripes/south, /obj/structure/morgue{ @@ -125421,18 +126270,6 @@ }, /turf/simulated/floor/carpet/royalblack, /area/ntrep) -"xYs" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm{ - dir = 4; - pixel_x = -22 - }, -/turf/simulated/floor/plating, -/area/maintenance/trading) "xYt" = ( /obj/effect/landmark/event/revenantspawn, /obj/machinery/atmospherics/unary/vent_pump/on, @@ -125697,7 +126534,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "ybJ" = ( /obj/machinery/power/emitter{ dir = 8 @@ -125738,15 +126575,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/engineering) -"ybT" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/effect/decal/warning_stripes/southeastcorner, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "ybU" = ( /obj/structure/grille, /obj/effect/decal/warning_stripes/west, @@ -125883,6 +126711,14 @@ icon_state = "tranquillite" }, /area/maintenance/kitchen) +"yda" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/civilian/vacantoffice) "ydg" = ( /obj/machinery/door/poddoor/preopen{ id_tag = "BridgeLockdown"; @@ -125941,6 +126777,18 @@ /obj/item/pen/multi, /turf/simulated/floor/plating, /area/maintenance/library) +"ydF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) "ydK" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/rodent, @@ -125988,9 +126836,27 @@ icon_state = "wood-broken6" }, /area/maintenance/kitchen) +"ydR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dust, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/glass/reinforced, +/area/maintenance/fpmaint) "ydS" = ( /turf/simulated/wall, /area/crew_quarters/courtroom) +"ydT" = ( +/obj/machinery/vending/autodrobe, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) "yek" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -126203,6 +127069,15 @@ icon_state = "whitepurple" }, /area/toxins/launch) +"ygq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "ygt" = ( /obj/machinery/vending/boozeomat, /turf/simulated/floor/wood/fancy/light, @@ -126397,7 +127272,7 @@ dir = 5; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "yiC" = ( /obj/structure/cable{ icon_state = "1-2" @@ -126471,7 +127346,7 @@ dir = 10; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "yjA" = ( /obj/structure/particle_accelerator/particle_emitter/left{ dir = 8 @@ -132534,7 +133409,7 @@ aaq aaq dZq cgA -sOt +rTM dtv wKp iGo @@ -132550,7 +133425,7 @@ iGo wKp iGo daj -sOt +rTM bUT dZq aaq @@ -132791,7 +133666,7 @@ aaq aaq dZq oKs -sOt +rTM bXR coE coE @@ -132807,7 +133682,7 @@ coE coE coE oKs -sOt +rTM bXR dZq aaq @@ -133048,7 +133923,7 @@ aaq aaq coE cgA -sOt +rTM bUT aaq coE @@ -133064,7 +133939,7 @@ coE aaq coE cgA -sOt +rTM bUT dZq dZq @@ -133305,7 +134180,7 @@ aaq aaq dZq cgA -sOt +rTM bUT aaq coE @@ -133321,7 +134196,7 @@ coE aaq coE cgA -sOt +rTM dsq dse dxZ @@ -133562,7 +134437,7 @@ coE dZq dZq oKs -sOt +rTM bXR coE coE @@ -133813,13 +134688,13 @@ iGo iGo iGo oJo -sOt +rTM dsq dse dse dxZ cZL -sOt +rTM tSb aaq vtK @@ -133842,7 +134717,7 @@ iGo wKp iGo daj -sOt +rTM bUT dZq aaq @@ -134099,7 +134974,7 @@ coE coE coE oKs -sOt +rTM bXR dZq aaq @@ -134870,7 +135745,7 @@ dEP kNO coE oKs -sOt +rTM tqu coE dZq @@ -137440,7 +138315,7 @@ dEP tKL coE oKs -sOt +rTM wVe coE dZq @@ -137954,7 +138829,7 @@ coE aaq coE cgA -sOt +rTM bUT coE aaq @@ -138211,7 +139086,7 @@ coE coE coE oKs -sOt +rTM bXR dZq aaq @@ -138445,7 +139320,7 @@ wKp wKp iGo daj -sOt +rTM bXR aaq vxh @@ -138468,7 +139343,7 @@ dxZ dse dxZ hDH -sOt +rTM bUT dZq aaq @@ -138702,7 +139577,7 @@ dZq dZq coE oKs -sOt +rTM bXR coE coE @@ -138959,7 +139834,7 @@ aaq aaq coE cgA -sOt +rTM bUT aaq coE @@ -138975,7 +139850,7 @@ coE aaq coE cgA -sOt +rTM uWl wKp iGo @@ -139216,7 +140091,7 @@ aaq aaq dZq cgA -sOt +rTM bUT aaq coE @@ -139232,7 +140107,7 @@ coE aaq coE cgA -sOt +rTM bUT dZq dZq @@ -139473,7 +140348,7 @@ aaq aaq dZq oKs -sOt +rTM bXR coE coE @@ -139489,7 +140364,7 @@ coE coE coE oKs -sOt +rTM bXR dZq aaq @@ -139730,7 +140605,7 @@ aaq aaq dZq cgA -sOt +rTM lwR dse dxZ @@ -139746,7 +140621,7 @@ dxZ dse dxZ hDH -sOt +rTM bUT dZq aaq @@ -144396,7 +145271,7 @@ xXS dON qta pnU -bGW +osi tIx vor cTi @@ -144628,19 +145503,19 @@ bXU cbb rLd aaq -xiR +kKE pnx pnx -dJh +fxD pnx pnx -goI +bJx pnx pnx -nGC +isc pnx pnx -qlZ +fme aaq hdZ cbb @@ -145138,7 +146013,7 @@ coE sPe coE bXU -oqc +jbg qCX lEd aaq @@ -145158,7 +146033,7 @@ efA aaq rfZ pyN -kZJ +mjo bXU wUr pIc @@ -145399,7 +146274,7 @@ bZl cbb lEd coE -wav +fIM dUE coE aaq @@ -145411,7 +146286,7 @@ aaq aaq coE cZc -nfv +ptU coE rfZ cbb @@ -145426,7 +146301,7 @@ cJK lFw uBx tgM -fyJ +izn qbq idK jYB @@ -145653,7 +146528,7 @@ wXY coB bXU keL -gDQ +oya lEd aaq efA @@ -145671,7 +146546,7 @@ dZb efA aaq rfZ -pUS +twj ufl bXU nlR @@ -146170,7 +147045,7 @@ bXU qvF cbb coE -wav +fIM dUE aaq coE @@ -146182,7 +147057,7 @@ acF coE aaq cZc -nfv +ptU coE cbb pBi @@ -146680,7 +147555,7 @@ dgF uSR dnN bXU -qKZ +vMn ffP lEd aaq @@ -146700,7 +147575,7 @@ efA aaq rfZ oak -xqC +ccU bXU ohF nBj @@ -146941,7 +147816,7 @@ bZl cbb lEd coE -wav +fIM dUE coE aaq @@ -146953,7 +147828,7 @@ aaq aaq coE cZc -nfv +ptU coE rfZ cbb @@ -147194,7 +148069,7 @@ sBX dkZ dog bXU -sui +oDt qCX lEd aaq @@ -147214,7 +148089,7 @@ efA aaq rfZ pyN -kHo +wvh bXU aKV pxR @@ -147709,7 +148584,7 @@ uWf dom bXU buf -kfr +oOf kAV aaq bep @@ -147718,7 +148593,7 @@ nsT nsT nsT nsT -ajG +aqk nsT nsT nsT @@ -147727,7 +148602,7 @@ tgT hHu aaq tgf -uJj +dwp gHc bXU dhw @@ -148230,11 +149105,11 @@ cwu cwu cwu cwu -dVW -eQV +exf +unX hWL eQV -nml +oKO cwu cwu cwu @@ -148741,7 +149616,7 @@ wgm bXU rQP mWV -gzX +dmd wNB gcj oON @@ -148751,7 +149626,7 @@ tKz jGo gcj mWV -gzX +dmd wNB rQP bXU @@ -149001,7 +149876,7 @@ tPh dDP jJc tXp -uXS +eAh nnT aIo oFs @@ -149240,7 +150115,7 @@ kLP rZU sMk bPK -tVr +uQJ uOE pqZ cTM @@ -149255,14 +150130,14 @@ fPA bZn gHz wUB -nth +gYo pGB pvn -dXn +xwJ pEz dQz pEz -dUA +sxl pvn pGB ejp @@ -149456,13 +150331,13 @@ ccb bHp bdL caN -cvI -cam -cam +bSy +pZY +pZY cDO cfi cPq -cRT +xaq ctK cxV dnz @@ -149509,16 +150384,16 @@ dor bUg mPg cCp -dBp -dCv -tzM -tzM +xeN +tXL +qKJ +rDo dQD bXU dXo -nAz -dQA -dSy +uPO +oVt +uPO dUC bXU fFR @@ -149526,8 +150401,8 @@ tzM tzM tny uyI -fPD -rfz +fZE +xgj bXU hLD qUe @@ -149769,13 +150644,13 @@ eIu dUI dCy tzM -aqe +mJD dQD bXU bXU -dSz +nCi bXU -dSz +nCi bXU bXU dXr @@ -149783,8 +150658,8 @@ tzM mQp eAb uyI -tzM -wXm +eIu +eki gVN pgt qac @@ -149977,7 +150852,7 @@ tGE cga boL crk -ctV +qVS btC bVk cDV @@ -150026,13 +150901,13 @@ dza dUI dCz egF -egF +hAy xNt dJD pei -dOM -dQQ -dSC +hfl +xgv +knT dUO dVY vUJ @@ -150040,8 +150915,8 @@ egF egF nQt uyI -fQv -gmI +dza +tDk bXU hLD cbC @@ -150283,12 +151158,12 @@ eIu cbc tPh tPh -tPh +iaH tPh tPh tPh rzf -dQS +rlQ dSF tPh tPh @@ -150297,8 +151172,8 @@ tPh tPh tPh cPX -mGs -eLU +lUn +hPZ cCh dVy cbC @@ -150540,12 +151415,12 @@ ryM dXD nkf dXD -nkf +oDd dXD nkf dXD qlu -dQT +mxh dSH dXD nkf @@ -150794,15 +151669,15 @@ cnj oQC xMX iFH -ybT +nGT cbj cbj -wcz +whQ cbj cbj -vCh -ptE -tED +vRz +gzM +rQX cpi tPv etT @@ -151057,9 +151932,9 @@ ehG xsj eeG vtm -fui -uCs -cmR +ttD +bKL +wDx cod cpl mDe @@ -151294,8 +152169,8 @@ frD frD frD frD -jJA -cKe +frD +pPA ofQ oPZ aLM @@ -151308,15 +152183,15 @@ bWn xnf xSn dzm -cdd -geb -dEs +wAW +pfb +hgP eci iTM utt cpm nqL -fId +lPI nqL cpm mDe @@ -151518,7 +152393,7 @@ aCi tGE cga aDe -cSa +nnh aHc aHo bVk @@ -151573,7 +152448,7 @@ iNf utt wQP rSt -cnB +jeu cof cpn mDe @@ -151830,7 +152705,7 @@ bXU utt wUC dWc -cpo +tBz cqU tZR mDe @@ -152036,7 +152911,7 @@ aFl cul aEn aHe -duO +hJr dzx aOg dLe @@ -152087,7 +152962,7 @@ cbn utt igP dOZ -dRd +sSy cpk csm mDe @@ -152344,7 +153219,7 @@ vWF utt wUC dOZ -dRd +sSy cso cso mDe @@ -152601,7 +153476,7 @@ cij dJU lTF xKq -cmO +nGs cso cpr mDe @@ -152858,7 +153733,7 @@ oZH utt uqq pus -dRe +xul rHz cqX mDe @@ -153115,7 +153990,7 @@ jem utt dNd qFn -dRw +owx dWc kpR mDe @@ -153372,7 +154247,7 @@ eir utt qFn teJ -dRw +owx dWc xvB mDe @@ -153554,26 +154429,22 @@ etQ bXO cor etQ +coE aaq aaq coE -moG -gbI +aaq +coE +aaq moG moG +cDr moG mzQ mzQ -mzQ -eeL -mzQ -mzQ -eeL -mzQ -mzQ -mzQ dOE dOE +ryc dOE mzQ dEt @@ -153581,6 +154452,10 @@ dEt dEt dEt dEt +dEt +uLb +dEt +dEt oJx coE uYk @@ -153629,7 +154504,7 @@ dkj utt gxS cna -iYh +cHj aAb tEE mDe @@ -153811,29 +154686,29 @@ etQ aPg bjs etQ +coE aaq aaq coE -bAa -bCm -bFw -bGw -bMJ -mzQ -oAn +aaq +coE +aaq +cbs +cbs +cbs ccv -chd +dxa ckN cdt bfQ czv -cCn -hKB bqN +hKB +bcf sVt -bqN +jdc dbm -dEt +ghT dnB cBo gDz @@ -153886,8 +154761,8 @@ onj utt jtS coh -cmV -dOZ +gQU +gtz ufR mDe smf @@ -154066,31 +154941,31 @@ aaq aaq etQ aPg -bjr -evc -evc -evc -evc -evc -evc -evc -bCU -cZP -eeL -pMA -ccJ -coL -aAv +bjs +etQ +coE +coE +uCN +uCN +dxk +aNu +uCN +uCN +moG +moG +qeI +mzQ +xaT coL ccJ fRL -mzQ +ekT juy -cJA +ghT cPJ -bqN -hKB -bcf +kzR +iYj +gEp cDk mCN aHF @@ -154323,29 +155198,29 @@ aaq uCN uCN bXP -csC -dOX -uPT -ike -dCM +bjr +uCN +uCN +uCN +tZO nEC bnk -evc -aVS -cbs -mzQ -lyE -ccK -dxa +xzD +fJU +uCN +iOl +ora +niW +chd bOP aHu boU czy eeL +pbl dEt dEt -dEt -dEt +aQv dEt dEt cAf @@ -154580,31 +155455,31 @@ coE etQ bOo aPg -gWz -evc -dFH +bjs +qng +kwQ orI -cFL -dDU +uCN +bCv aTB -bpU -ilF -ebY +bCv +mDp +uCN +gfs +sNI +wFH +jqt mzQ -dWC -ccJ -iOH -ckQ bHr cdb czM -mzQ +gGP cGF -cNn +dEt cQb crA eFo -dEt +myK sIo cmm bTE @@ -154837,35 +155712,35 @@ aaq etQ bOm aPg -bjs -bhY +gWz +uCN fUo csz -lmz +uCN aSh +xGC bCv -evc -aOL -xkw -mzQ -pcJ -ccJ +umE +uCN +vmS +fpb +oqM huw bBV -bQd +hKB bSI aEm -mzQ +eCN cCO -bmX +dEt cQk bqO -dnG -aJb -dnG +qDe +dEt +vmG aAt bvV -dEt +ghT ijY nnM cQo @@ -155095,33 +155970,33 @@ etQ bOn aPg bjB -gLd -bUC -cgk -wQq -aSh -bCC +lnB +lnB +lnB +lnB +lnB evc -bBC -cdp -mzQ -bAn -cdb +qef +evc +evc +sKc +iuJ +ulk bLb -bjW -hJA -css -czN -eeL -mLd -chJ -cmk +mzQ +dOE +eYG +dOE +jqt +mzQ +ghT +dEt crE -dnG dEt -dod +ghT +dEt bBf -dRM +dEt dEt dLj aVS @@ -155354,34 +156229,34 @@ aPg cwC bco cTQ -csz +kRn seM -jcB +lnB bCJ -evc -moG +tHl +qKa bhJ -eeL -mzQ -mzQ -eYG -mzQ -mzQ -mzQ -mzQ -mzQ -dEt -dEt -dEt -dEt -dEt -dEt -dEt -cEh -dEt -dEt +rLE +iRb +siP +kJt +bYT +cEm +gsm +wDc +tQR +dib +grb +qQs +liY +rPa +grb +grb +cbs +bJk +cbs dLj -aVS +bUb baF baF baF @@ -155404,7 +156279,7 @@ oNx kcq bxh bxh -kGQ +gWT tdH tdH tdH @@ -155608,35 +156483,35 @@ coE etQ bOo aPg -bjF -evc -bpZ -cFL +cxS +cYg +rDZ +bTM rMn -ecz +lnB bDb -evc -bHf +caI +cFL dGi -aQb -xYs -irI -dyD -clp -bfc -bxp -cAh -cAz -cEj -ceZ -vcS -wFr -cQu -fSj -fXc -mEl -bzF -dVU +rff +eCV +iSJ +bsz +rfj +dNt +mip +tNZ +xMx +mVu +eez +hDj +gZt +eBA +reD +gWn +gWn +eTC +gWu dLu cbs baF @@ -155673,7 +156548,7 @@ wRT bxh qcL ygK -wyy +msK bYj eTP hne @@ -155865,35 +156740,35 @@ aaq uCN uCN bXP -cwH -evc -ipV -lRE +cxS +cYg +hwf +bTM tpo -kBD +lnB bDd -evc +rwD bQE -sDI -bSM -bTv -bTv -bTv -sSa +udQ +qsK +rAH +dZt +moG +cjn aBr -hxk +moG csa -cAz -aVS -cNV -cbs -gbI -rTm -ceP -cbs -aVS -dLg -cbs +sYp +wup +bvG +moG +dUT +moG +iTZ +iTZ +iTZ +iTZ +iTZ cQq bOj baF @@ -156122,34 +156997,34 @@ aaq aaq etQ aPg -bOb -evc -evc -evc -evc -evc -evc -evc +cxS +cYg +aGo +bTM +rCm +lnB +mdq +ohh bVU -fHA -bTv +mXh +qUZ dcC -cmh -cmh -cmh -bQx -cmZ -cdF -cAz -cbs -woa +ulg +moG +xJd +nvO +aeg +moG +ooo +rAa +moG +mMD aVS -gbI dbs iTZ -iTZ -iTZ -iTZ +qjS +nSx +aNP iTZ cQr bvG @@ -156378,37 +157253,37 @@ coE coE coE etQ -aPg -cxS -cHK +bXS +ydF +cYg vlh -gCI -uCN -aQR +bTM +uaW +lnB bDg -uCN +sBM bHu -bMP -cmh -cmh -dmt +evc +cbs +eoD +hVu wAK -cmh -bTv -cNg -cAt -cAK -xQW +wWA +nCu +aze +wpU +hrP +phc cjn +ygq aVS -aVS -cbs +rjA +iTZ iTZ -qKv iTZ nqG iTZ -cQr +sWw aOo baF vPS @@ -156635,35 +157510,35 @@ aaq aaq aaq etQ -bXS +aPg cyN -uCN +bic mOA bhE cpD -oSa +lnB cXQ -uCN +vOg aKe kwq -cmh -cmh -fHb +olM +kFf +gmf xuO -qQX +hKK fTL -lzm -lzm +qtx +moG cCt cfD -cjv -bvG -ccW -bSg +moG +wjF +aVS +haN iTZ +dsN doh -iTZ -nSx +kVT iTZ vnf ctG @@ -156899,31 +157774,31 @@ lnB lnB lnB lnB -lnB +evc cng -eHz -sDI -bTv -bBB -cmh -cmh +bhJ +evc +cCt +rAH +qqM +wAK deq btQ -cmZ -fTp -cAz -ceP -jct -iTZ +wjO +moG +cbs +kDB +bvG +bLS +bvG +cbs iTZ iTZ iTZ -dox -bci dVx iTZ -hBD -cbs +cQr +dGD baF bEt aNr @@ -157150,37 +158025,37 @@ ajn gjM bOU bgB -cZi -cYg -rDZ -dBe +cdn +flm +moG +xoI bpf -bNK -aGo -lnB -dPH -vdH -cHT -cqW -cdj -sDo -cmZ +nCR +oUt +lAK +dgX +bvG +miR +rAH +wuV +cjn +ewQ pGp -bQU -aDm -cAz +jng +moG +gbI +kbF aVS -aBb -iTZ -crI -kox +aPj +cbs +cgR iTZ doO cED aaf qVr -sNn -cbs +lEk +xQW baF ehF bWQ @@ -157409,28 +158284,28 @@ bPr bgF bjI dcQ -aXC +skn clF -dWf -aPY -hwf -lnB -kHa -aUv -iNh -bsb -aTA -aoe -cnf -btQ -cwa -cwa -cwa -cHP -puk -cwa -eYX -bev +pTT +wUd +ydR +rNz +pNu +hsk +gUf +fwZ +ngu +kPe +voz +diw +peo +moG +vlV +ozL +iTZ +iTZ +iTZ +iTZ iTZ cTj aEo @@ -157464,7 +158339,7 @@ rfV scx mIQ nVL -oqv +gml uQy vGw wpP @@ -157508,9 +158383,9 @@ mAn ipb suf wAv -cOT +byX ddi -oBM +apg oUh dpZ isM @@ -157665,28 +158540,28 @@ bEf bOU bgH czb -cYg -aXI -bTM -uJA -bAo -bDh -lnB -cAz -bNd -cAz -cAz -cAz -cAz -cAz -dDf -cwa -lko -hSo -bZY -cAy -dFe -dFW +nTs +moG +wJu +lif +pjX +nLz +cYI +hrK +qEL +oCl +soO +rLY +csa +moG +moG +moG +moG +hGy +bME +iTZ +hYR +cGh dFW iTZ iTZ @@ -157922,30 +158797,30 @@ aFu bPA top bjK -lnB -rDZ -dGH +cAz +cAz +cKz bxi -uGH +uuh aar bhM -bcd +sGP dtE -eOd +vDh eiC -cno -jHA -cno -lEk -cwa -qnk -tzR -prr -cmL -tdC -eSU -eSU -bGy +waO +cbs +cbs +auo +fhP +sjy +jfi +qtt +iTZ +jue +cGh +dFW +dFW lMh dvP dzy @@ -158024,8 +158899,8 @@ cUT cQV aEh uHA -ual -oWk +kIL +jmF dgk iZG kxQ @@ -158179,28 +159054,28 @@ aaq bPA bYY cze -aoo -aoo -aoo -aoo -aoo -aoo -aoo -bEi -cbs -aVS -cNV -aVS -bWL -cbs +cAz +qqF +wuE +jtq +eiQ +bBx +fFG +cAz +pzD +kkW +tQA +frF crN -cwa -xWn -oBA -dBN -krc -dFe -qAX +obT +crN +mww +wcC +rui +rZj +iTZ +tcR +cGh dFW dFW dFW @@ -158436,17 +159311,17 @@ coE acC cfb czi -aoo -amL +cAz +pnp hhI -bxq -bsq +tDJ +drl bxk -aoo -moG -moG +rlq +cAz moG -bvR +cjn +ony moG cEJ cEJ @@ -158693,13 +159568,13 @@ acC bPA bZJ cAv -aoo +cAz eqp -hjN -bxr -bsq -bDi -aoo +rSM +qsH +xwz +dXP +wRV cKz aVS fFl @@ -158950,20 +159825,20 @@ bbV bPD bhN bjK -aoo -eSm -hAY +cAz +iEB +fVz bxx -bsq -bDi -aoo +wuH +pbK +bZx biq -xqJ +rcl eTZ woa cbs cEJ -cHz +dvO gZH cwA dOY @@ -159207,20 +160082,20 @@ acC acC bhN aRQ -aoo +cAz aXJ hFX -bxy -bsq +cAz +cAz qVc -aoo -cbs -cbs -aVS +cAz +uuh +xqJ +auo fOa cgR cEJ -nGG +ydT cFQ baG dpg @@ -159463,16 +160338,16 @@ aRL bcy aRL bgO -cDE -aWw -bsi -hOi -bxz -vLk +aRQ +aoo +aoo +aoo +aoo +aNG aNG aoo -bJk -dGD +cSP +aVS bvG pyb hUX @@ -159532,7 +160407,7 @@ nzZ igj ktI fyj -eJR +wOP umX gtP eJR @@ -159725,16 +160600,16 @@ aoo btk hRC bxB -bix +bxq bsq -aOY -aVS -aVS +aoo +gcK +icv aVS dLf -cei +aVS ckh -cml +sDg dbu cxA kIA @@ -159977,21 +160852,21 @@ coE bcA bQu bhN -aRQ -aoo -btk -bxx -bxB +cDE +gqz +yda +rCR +hOi biQ bDT aoo bJk -aVS +cbs eTZ woa cbs ckh -cnq +uKB bfY bVz gpo @@ -160057,7 +160932,7 @@ ukJ dwM kJL lRu -wrB +wEv csK sMv iOJ @@ -160236,14 +161111,14 @@ bPA bZJ cAv aoo -fvs +dUn iNJ bxE biU apJ aoo -oWL -epg +bJk +cbs dLg cNV aVS @@ -162343,7 +163218,7 @@ aaq bwf ydg bwf -jKY +fWv mYa byW tEy @@ -163044,7 +163919,7 @@ aaq awU bqf bqf -ahC +oAE ahC ayi nlE @@ -163120,10 +163995,10 @@ rlm tIL ugf bJh -ciR +jlr ddG -bOG -rzo +ett +eAF bMV bJh aaq @@ -163163,7 +164038,7 @@ dxF hXm ohz cUZ -jhc +kMe pBD wEb daF @@ -164103,7 +164978,7 @@ jeY bBG bEN qDz -cwd +gwB cwd tav ktz @@ -164152,7 +165027,7 @@ vQn soL bKN bMY -rTE +bJo bJh aaq bIn @@ -164177,7 +165052,7 @@ mgf sYX qEU jPB -rSJ +jZW bAN cIU slb @@ -164662,10 +165537,10 @@ rlm bCp cMY bJh -wXI +iOo hpE -cWa -xbr +agb +jjF bMV bJh aaq @@ -165486,7 +166361,7 @@ vec ueo djS dfv -vhR +mvm vkl dvr drE @@ -166717,7 +167592,7 @@ lVo byU bCr pty -crr +oVB tOA iLo bHx @@ -168277,7 +169152,7 @@ dDv lij deo grv -wML +wYO dPX cBw pJV @@ -168811,7 +169686,7 @@ dzf pfD cKR cMr -cXs +sgj jsJ dix gra @@ -168987,7 +169862,7 @@ uki ujm bFK dmq -daa +nIg ric eZs uAf @@ -169322,7 +170197,7 @@ rPE vgb dKW cJq -cRi +eJQ waC cUk ujQ @@ -169579,7 +170454,7 @@ qrz hGs jiK cJq -nIr +uGV kwr cMs rXo @@ -170093,7 +170968,7 @@ vlN dpA dLY cJq -wWZ +oeQ kwr vCl cNW @@ -170350,7 +171225,7 @@ hEN ibI dMw cJq -rnz +kYE cKX cMt cms @@ -170549,7 +171424,7 @@ dWL bGm aWx duw -kgy +hzg dDb aZp kMn @@ -170621,17 +171496,17 @@ fQE jSg pEC pRj -pof +lXc rpw fIi soV -oCg +cmU tnr -kMK +wbI uKK khe tuv -hdk +urw woE qxs xpU @@ -171916,7 +172791,7 @@ jfK hqS bvF xYg -xYg +cfY oRe xYg xFU @@ -172630,7 +173505,7 @@ rYY eMZ vlU cOt -xas +rRY sTG xux vUF @@ -176772,7 +177647,7 @@ gjh gnf oPP iFR -nRC +jnj lov lNM ovP @@ -179048,15 +179923,15 @@ pBU pLm qhn lhS -rDM -rrl -dtj +uPg +chB +bQd tzh lYj tzh -ciT -igH -lhS +bCM +eGw +sKk lhS kNt tLv @@ -179305,15 +180180,15 @@ nRT tLv tMU lhS -rGK +sSa szM aMD -ixm +gmi uqu sei vXH -iOV -hWb +ryd +cgc lhS mpW tLv @@ -179562,15 +180437,15 @@ hdu pLB bzC lhS -rGO +qTw tHS dIj -oPR -uqM -stT -vYk +oPM +clG +nfj +sMb wCH -bVZ +coD lhS mzW lqG @@ -179819,15 +180694,15 @@ oIn qug mml lhS -rHW +uou tHS iTk -jPK +mHR vNX -vSt +fCr aau nhY -qjM +kBw lhS vcX nHu @@ -180076,15 +180951,15 @@ pbM mqz iUI lhS -rJG +sIJ tHS -sMP -qdp +toP +kWx vNX -pyk +gxx ePU wCH -dZt +nta lhS kih tNf @@ -180333,17 +181208,17 @@ pcc qug mfd lhS -rLl +qUi tHS toP -qdp +pal vNX -pyk +gRA ePU wCH -lSA +wCY lhS -vcX +tVr iHp uZU xFL @@ -180590,15 +181465,15 @@ pdt onq ioU lhS -rLF -rAs -toS -qoy +rFD +gcY +toP +juw vNX -vqM +gDu ePU wCH -pNI +ppg xXC vcX nHu @@ -180847,12 +181722,12 @@ pdP qug mml lhS -lhS xmw tsW -vuE -urn -xqE +hOI +cxk +kiM +qEB vYt wCH myZ @@ -181103,16 +181978,16 @@ xxI oIn qug mml -blZ lhS -meo +vwd gES uTS +uTS vdJ uTS uTS mbY -jBm +rpS eEb vcX nHu @@ -181360,16 +182235,16 @@ wyT pee gBH mml -rbU lhS sBd -tfh -nGa -vpi -kaB -vYL -jDw -lhS +bzj +bsS +sXV +nFt +tig +jEO +qMv +gwf lhS oHJ unN @@ -181617,7 +182492,7 @@ ugN pfE pLF qiv -joB +lhS lhS lhS lhS diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm index 1fad6ae212ca..78917001a25e 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm @@ -243,17 +243,6 @@ }, /turf/simulated/floor/lava, /area/ruin/unpowered/ash_walkers) -"aK" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 8 - }, -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/obj/structure/stone_tile, -/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck, -/turf/simulated/floor/indestructible/boss/indoors, -/area/ruin/unpowered/ash_walkers) "aM" = ( /obj/structure/stone_tile/cracked{ dir = 4 @@ -275,10 +264,6 @@ }, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/ash_walkers) -"aP" = ( -/obj/structure/stone_tile, -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/ruin/unpowered/ash_walkers) "aQ" = ( /obj/structure/stone_tile/block{ dir = 8 @@ -371,19 +356,6 @@ /obj/item/seeds/reishi, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/ash_walkers) -"bc" = ( -/obj/structure/stone_tile/block{ - dir = 4 - }, -/obj/structure/stone_tile{ - dir = 8 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/mob/living/simple_animal/hostile/asteroid/gutlunch/guthen, -/turf/simulated/floor/indestructible/boss/indoors, -/area/ruin/unpowered/ash_walkers) "bd" = ( /obj/structure/stone_tile/surrounding_tile/cracked{ dir = 4 @@ -474,20 +446,6 @@ }, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/ash_walkers) -"bm" = ( -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile, -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/obj/item/rcd/preloaded, -/turf/simulated/floor/indestructible/boss, -/area/ruin/unpowered/ash_walkers) "bn" = ( /obj/structure/closet/crate/radiation, /obj/item/flashlight/lantern, @@ -1099,6 +1057,7 @@ }, /obj/structure/table/wood, /obj/item/twohanded/spear, +/obj/item/clothing/head/shamanash, /turf/simulated/floor/indestructible/boss, /area/ruin/unpowered/ash_walkers) "cN" = ( @@ -1402,6 +1361,51 @@ }, /turf/simulated/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) +"eK" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/effect/mapping_helpers/no_lava, +/obj/effect/decal/cleanable/ashrune, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ic" = ( +/obj/structure/stone_tile, +/obj/item/healthanalyzer/gem_analyzer, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"lA" = ( +/mob/living/simple_animal/hostile/asteroid/gutlunch/guthen, +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"rV" = ( +/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck, +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"zn" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/effect/mapping_helpers/no_lava, +/obj/machinery/smartfridge/drying_rack/ash, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "zz" = ( /obj/effect/mapping_helpers/no_lava, /obj/structure/stone_tile{ @@ -1416,6 +1420,20 @@ }, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"KC" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/item/stack/fireproof_rods/twentyfive, +/turf/simulated/floor/indestructible/boss, +/area/ruin/unpowered/ash_walkers) (1,1,1) = {" aa @@ -1555,9 +1573,9 @@ aa ae as cW -aP +ic aZ -bm +KC by ak bV @@ -1582,7 +1600,7 @@ ba bn bz ak -cb +zn df bX co @@ -1606,7 +1624,7 @@ ak ak cg cb -cg +eK cn bL dr @@ -1688,7 +1706,7 @@ ak au aG aS -bc +lA bp ak ak @@ -1774,7 +1792,7 @@ af ak ak ay -aK +rV aW bg bt diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker_new.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker_new.dmm new file mode 100644 index 000000000000..4a051d8eb8c1 --- /dev/null +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker_new.dmm @@ -0,0 +1,3219 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aq" = ( +/obj/structure/stone_tile/slab/cracked, +/obj/structure/table/wood, +/obj/item/seeds/reishi{ + pixel_x = -5; + pixel_y = -5 + }, +/obj/item/seeds/reishi{ + pixel_x = 9; + pixel_y = 5 + }, +/obj/item/seeds/reishi{ + pixel_x = 8; + pixel_y = -5 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"au" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"aN" = ( +/obj/structure/stone_tile/slab/cracked, +/obj/machinery/kitchen_machine/tribal_oven, +/obj/structure/torch_holder/mapping{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"ba" = ( +/obj/structure/stone_tile/slab, +/obj/structure/torch_holder/mapping{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"bf" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/block, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"bx" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"bS" = ( +/obj/structure/stone_tile/slab/burnt, +/obj/structure/table/wood, +/obj/item/hatchet/wooden, +/obj/item/scythe, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"cx" = ( +/obj/structure/stone_tile/slab/burnt, +/obj/item/twohanded/spear, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"cF" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"da" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile/burnt{ + dir = 1 + }, +/obj/structure/rack/wooden, +/obj/item/malf_upgrade, +/obj/item/rcd{ + pixel_x = 1; + pixel_y = -7 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"dB" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/curtain/open{ + color = "#222222"; + name = "black curtain"; + anchored = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"dM" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ec" = ( +/obj/structure/stone_tile/block/cracked, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"et" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/simulated/floor/lava, +/area/ruin/unpowered/ash_walkers) +"ew" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/center/burnt, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"eK" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile/cracked, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"fC" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/slab/cracked{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"fG" = ( +/obj/structure/stone_tile/slab, +/obj/structure/chair/stool/wooden, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"gd" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/block{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"gi" = ( +/obj/structure/stone_tile/slab, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/grown/ash_flora/fireblossom{ + pixel_y = 4; + pixel_x = -8 + }, +/obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit{ + pixel_y = -5 + }, +/obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit{ + pixel_y = 3; + pixel_x = 6 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"gn" = ( +/obj/structure/stone_tile/slab/cracked, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"gu" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/chair/stool/wooden, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"gv" = ( +/obj/structure/stone_tile/slab, +/obj/structure/ore_box, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"gx" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/template_noop, +/area/lavaland/surface/outdoors) +"gI" = ( +/obj/structure/stone_tile/slab/cracked, +/turf/simulated/floor/lava/lava_land_surface, +/area/lavaland/surface/outdoors) +"gV" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 8 + }, +/obj/effect/mob_spawn/human/corpse/damaged, +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"he" = ( +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/burnt, +/obj/structure/stone_tile/block/burnt{ + dir = 1 + }, +/turf/simulated/floor/lava/lava_land_surface, +/area/lavaland/surface/outdoors) +"hp" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/item/reagent_containers/glass/bucket/wooden, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"hM" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/torch_holder/mapping{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"hY" = ( +/obj/structure/stone_tile/surrounding, +/obj/structure/stone_tile/center/cracked, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ie" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"is" = ( +/obj/structure/stone_tile/slab/burnt, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/meat{ + pixel_x = -10; + pixel_y = -4 + }, +/obj/item/reagent_containers/food/snacks/meat{ + pixel_x = -7; + pixel_y = 9 + }, +/obj/item/reagent_containers/food/snacks/monstermeat/goliath{ + pixel_x = 6; + pixel_y = 3 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"iu" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 5 + }, +/obj/structure/stone_tile/slab/cracked{ + dir = 10 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"iU" = ( +/obj/structure/closet/crate/radiation, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/flare, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"jb" = ( +/obj/structure/stone_tile/block/burnt{ + dir = 4 + }, +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/necropolis_gate/ashwalker, +/obj/structure/fans/tiny/invisible, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"je" = ( +/turf/simulated/wall/mineral/wood, +/area/ruin/unpowered/ash_walkers) +"jq" = ( +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 8 + }, +/obj/effect/rune_fluff_marks, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"jv" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"jC" = ( +/obj/structure/stone_tile/slab/burnt, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/lavaland_food/veggie_meal, +/obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_wing{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_cacti{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_crunchie{ + pixel_y = 6 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"jL" = ( +/obj/structure/stone_tile/surrounding_tile, +/turf/simulated/floor/lava/lava_land_surface, +/area/lavaland/surface/outdoors) +"jO" = ( +/obj/item/reagent_containers/glass/bucket/wooden, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"jU" = ( +/obj/structure/stone_tile/slab, +/obj/structure/table/wood, +/obj/item/healthanalyzer/gem_analyzer{ + pixel_x = -10; + pixel_y = 7 + }, +/obj/item/stack/medical/splint/tribal{ + pixel_x = 7; + pixel_y = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"ks" = ( +/obj/structure/stone_tile/block/burnt{ + dir = 1 + }, +/obj/structure/stone_tile/burnt, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"kQ" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"kS" = ( +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"ld" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/slab/cracked{ + dir = 1 + }, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/structure/closet/crate/miningcar, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"lm" = ( +/turf/template_noop, +/area/lavaland/surface/outdoors) +"ls" = ( +/obj/structure/stone_tile/block/burnt, +/obj/structure/stone_tile/burnt{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"lF" = ( +/obj/effect/mob_spawn/human/corpse/damaged, +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"lT" = ( +/turf/simulated/wall/indestructible/boss, +/area/lavaland/surface/outdoors) +"mb" = ( +/obj/structure/stone_tile/surrounding_tile/cracked, +/obj/effect/rune_fluff_marks, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"mp" = ( +/obj/structure/stone_tile/block, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"ms" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/turf/simulated/floor/lava, +/area/ruin/unpowered/ash_walkers) +"mx" = ( +/obj/structure/stone_tile/slab, +/obj/structure/rack/wooden, +/obj/item/reagent_containers/food/drinks/mushroom_bowl{ + pixel_y = 5; + pixel_x = 2 + }, +/obj/item/reagent_containers/food/drinks/mushroom_bowl{ + pixel_x = -4; + pixel_y = -8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"mF" = ( +/obj/item/shovel/spade/wooden, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"mN" = ( +/obj/item/seeds/aloe, +/obj/structure/closet/crate/wooden, +/obj/item/seeds/aloe, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"mQ" = ( +/obj/structure/stone_tile/slab/cracked, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/meat{ + pixel_x = 8; + pixel_y = -2 + }, +/obj/item/reagent_containers/food/snacks/meat{ + pixel_x = 9; + pixel_y = 6 + }, +/obj/item/reagent_containers/food/snacks/monstermeat/goliath{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/reagent_containers/food/snacks/monstermeat/goliath{ + pixel_x = -10; + pixel_y = -2 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"mV" = ( +/obj/structure/flora/ash/leaf_shroom, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"na" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding_tile, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"nc" = ( +/obj/item/seeds/aloe, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"nt" = ( +/obj/item/cultivator/rake, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"nv" = ( +/obj/structure/stone_tile/slab, +/obj/structure/rack/wooden, +/obj/item/reagent_containers/food/drinks/mushroom_bowl{ + pixel_x = 4; + pixel_y = -7 + }, +/obj/item/reagent_containers/food/drinks/mushroom_bowl{ + pixel_y = 5; + pixel_x = -2 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"ny" = ( +/obj/structure/stone_tile/block/burnt{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"nI" = ( +/obj/structure/flora/ash/cacti, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"oc" = ( +/obj/structure/stone_tile/block/burnt, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"oj" = ( +/obj/structure/stone_tile/block/cracked, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/template_noop, +/area/lavaland/surface/outdoors) +"oz" = ( +/obj/structure/stone_tile/slab/burnt, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"oA" = ( +/obj/structure/table/reinforced/brass, +/obj/structure/stone_tile/block, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/item/toy/plushie/ashwalkerplushie, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"oH" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/turf/simulated/floor/lava/lava_land_surface, +/area/lavaland/surface/outdoors) +"oS" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 4 + }, +/obj/structure/rack/wooden, +/obj/item/stack/sheet/wood{ + amount = 15 + }, +/obj/item/ammo_casing/caseless/arrow, +/obj/item/ammo_casing/caseless/arrow, +/obj/item/ammo_casing/caseless/arrow, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"pc" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf{ + pixel_y = -6; + pixel_x = -9 + }, +/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf{ + pixel_y = -2; + pixel_x = -9 + }, +/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap{ + pixel_x = 2; + pixel_y = -5 + }, +/obj/item/reagent_containers/food/snacks/grown/ash_flora/shavings{ + pixel_x = 11; + pixel_y = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"pg" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/turf/simulated/floor/lava, +/area/ruin/unpowered/ash_walkers) +"pm" = ( +/obj/structure/stone_tile/surrounding_tile/cracked, +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/turf/simulated/floor/lava, +/area/ruin/unpowered/ash_walkers) +"pL" = ( +/obj/effect/decal/ash_rune_centre, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"pR" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/item/flashlight/lantern, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"pW" = ( +/obj/item/storage/bag/plants/portaseeder, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"pX" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"pZ" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/simulated/floor/lava/lava_land_surface, +/area/lavaland/surface/outdoors) +"qb" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"qu" = ( +/obj/structure/stone_tile/surrounding_tile/cracked, +/obj/structure/bed/leather, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"qy" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"qC" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/chair/stool/wooden, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"rd" = ( +/obj/structure/stone_tile/block/burnt, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"rl" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"rn" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 8 + }, +/obj/structure/closet/crate/wooden, +/obj/item/stack/sheet/cloth/ten, +/obj/item/reagent_containers/iv_bag/blood/unathi, +/obj/item/reagent_containers/iv_bag/blood/unathi, +/obj/item/reagent_containers/iv_bag/blood/unathi, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"rB" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/burnt, +/turf/simulated/floor/lava/lava_land_surface, +/area/lavaland/surface/outdoors) +"rG" = ( +/obj/structure/stone_tile/slab, +/obj/structure/curtain/open{ + color = "#222222"; + name = "black curtain"; + anchored = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"rM" = ( +/obj/structure/stone_tile/slab, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/lavaland_food/fine_meal{ + pixel_x = 4; + pixel_y = 14 + }, +/obj/item/reagent_containers/food/snacks/lavaland_food/veggie_meal, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"sd" = ( +/obj/structure/stone_tile/slab/burnt, +/obj/structure/closet/crate/wooden, +/obj/item/clothing/gloves/color/black/goliath, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"so" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4; + pixel_x = -16; + pixel_y = 16 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 8; + pixel_y = -16; + pixel_x = -16 + }, +/obj/structure/torch_holder/mapping{ + dir = 8 + }, +/turf/simulated/floor/lava, +/area/ruin/unpowered/ash_walkers) +"sJ" = ( +/turf/simulated/wall/indestructible/boss, +/area/ruin/unpowered/ash_walkers) +"sK" = ( +/obj/structure/stone_tile/slab, +/obj/structure/bed/wooden, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"sW" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/obj/effect/rune_animation_landmark, +/obj/effect/rune_fluff_marks, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"tm" = ( +/obj/structure/flora/ash/coaltree, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"to" = ( +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/closet/crate/wooden, +/obj/item/clothing/shoes/footwraps/goliath, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"tp" = ( +/obj/structure/stone_tile/center/burnt, +/obj/structure/stone_tile/surrounding/burnt, +/turf/simulated/floor/lava/lava_land_surface, +/area/lavaland/surface/outdoors) +"tw" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"ty" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/template_noop, +/area/lavaland/surface/outdoors) +"tR" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 6 + }, +/obj/structure/stone_tile/center, +/obj/structure/table/wood, +/obj/item/twohanded/spear, +/obj/item/storage/belt/mining/primitive, +/obj/item/clothing/head/shamanash, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"tT" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"ub" = ( +/obj/structure/lavaland/ash_walker, +/turf/simulated/floor/lava, +/area/ruin/unpowered/ash_walkers) +"uw" = ( +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/curtain/black{ + anchored = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"uy" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"uH" = ( +/obj/structure/stone_tile/surrounding_tile/cracked, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"uY" = ( +/obj/structure/stone_tile/slab, +/obj/structure/closet/crate/wooden, +/obj/item/storage/firstaid/adv, +/obj/item/stack/medical/bruise_pack/improvised, +/obj/item/stack/medical/splint/tribal, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"uZ" = ( +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"va" = ( +/obj/structure/stone_tile/block/burnt{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"vb" = ( +/obj/machinery/hydroponics/soil, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"vx" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/chair/stool/wooden, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"vD" = ( +/obj/structure/stone_tile/block/cracked, +/turf/simulated/floor/lava, +/area/ruin/unpowered/ash_walkers) +"vH" = ( +/obj/structure/table/wood, +/obj/item/twohanded/spear, +/obj/item/ammo_casing/caseless/arrow{ + pixel_y = 7; + pixel_x = -4 + }, +/obj/item/ammo_casing/caseless/arrow{ + pixel_x = 7 + }, +/obj/item/ammo_casing/caseless/arrow{ + pixel_y = 10; + pixel_x = -7 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"wb" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile/burnt, +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"wd" = ( +/obj/structure/torch_holder/mapping{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"wm" = ( +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding_tile/burnt, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"wL" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/burnt{ + dir = 8 + }, +/turf/simulated/floor/lava/lava_land_surface, +/area/lavaland/surface/outdoors) +"xj" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/torch_holder/mapping{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"xq" = ( +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 8 + }, +/turf/simulated/floor/lava, +/area/ruin/unpowered/ash_walkers) +"xu" = ( +/obj/structure/stone_tile/slab, +/obj/structure/table/wood, +/obj/item/book/manual/lavaland_scroll, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"xy" = ( +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile/burnt{ + dir = 4 + }, +/turf/simulated/floor/lava/lava_land_surface, +/area/lavaland/surface/outdoors) +"xF" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/turf/simulated/floor/lava, +/area/ruin/unpowered/ash_walkers) +"xG" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 8 + }, +/obj/item/shovel, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"xJ" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"xK" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/burnt{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"yv" = ( +/obj/structure/stone_tile/block/burnt{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"yw" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"yV" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/template_noop, +/area/lavaland/surface/outdoors) +"za" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"zw" = ( +/obj/item/hatchet/wooden, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"zx" = ( +/obj/structure/flora/ash/tall_shroom, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"zD" = ( +/obj/item/pickaxe, +/obj/structure/closet/crate/miningcar, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"zI" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile/block/burnt{ + dir = 1 + }, +/turf/simulated/floor/lava/lava_land_surface, +/area/lavaland/surface/outdoors) +"zK" = ( +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 4 + }, +/obj/item/seeds/cotton, +/obj/item/seeds/cotton, +/obj/item/seeds/cotton, +/obj/structure/closet/crate/wooden, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"zO" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/item/flashlight/lantern, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"Al" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"AL" = ( +/obj/structure/stone_tile/block/burnt{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + pixel_x = 16; + pixel_y = -16 + }, +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 1; + pixel_x = 16; + pixel_y = 15 + }, +/obj/structure/torch_holder/mapping{ + dir = 4 + }, +/turf/simulated/floor/lava, +/area/ruin/unpowered/ash_walkers) +"AM" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/mob/living/simple_animal/hostile/asteroid/gutlunch/guthen, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"AQ" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/mushroom_bowl, +/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap{ + pixel_x = -9; + pixel_y = -7 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"AS" = ( +/obj/structure/barricade/wooden, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Ba" = ( +/obj/structure/stone_tile/surrounding/cracked, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/center/burnt, +/obj/structure/torch_holder/mapping{ + dir = 1 + }, +/obj/machinery/optable, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Bf" = ( +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"BJ" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/statue/bone/rib, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"BK" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/item/cultivator/wooden, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"BR" = ( +/obj/structure/stone_tile/surrounding, +/obj/structure/stone_tile/center/burnt, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"BX" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/stone_tile/block/cracked, +/turf/simulated/floor/lava/lava_land_surface, +/area/lavaland/surface/outdoors) +"Ca" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile, +/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"Cd" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Cg" = ( +/obj/structure/stone_tile/slab, +/obj/structure/closet/crate/wooden, +/obj/item/weldingtool/experimental, +/obj/item/storage/toolbox/syndicate, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Ck" = ( +/obj/structure/stone_tile/slab/burnt, +/obj/structure/chair/stool/wooden, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"CC" = ( +/obj/structure/stone_tile/slab/cracked, +/obj/structure/ore_box, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"CO" = ( +/obj/item/flashlight/lantern, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"CS" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/item/flashlight/lantern, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"CZ" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/slab/cracked{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Da" = ( +/obj/structure/closet/crate/wooden, +/obj/item/seeds/comfrey, +/obj/item/seeds/comfrey, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"De" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile/block/burnt{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Dl" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Dn" = ( +/obj/structure/stone_tile/surrounding/cracked, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit{ + pixel_x = 4; + pixel_y = -1 + }, +/obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit{ + pixel_x = -3; + pixel_y = 5 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Dq" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"DA" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"DS" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Ep" = ( +/obj/structure/stone_tile/slab/cracked, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"EK" = ( +/obj/structure/stone_tile/surrounding_tile/burnt, +/obj/structure/flora/ash/fireblossom, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"EP" = ( +/obj/structure/stone_tile/surrounding_tile/burnt, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"ET" = ( +/obj/structure/stone_tile/burnt{ + dir = 1 + }, +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Fc" = ( +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Ff" = ( +/obj/structure/stone_tile/surrounding_tile, +/turf/simulated/floor/lava, +/area/ruin/unpowered/ash_walkers) +"Fk" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/item/flashlight/lantern, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"Ft" = ( +/obj/structure/stone_tile/block/burnt{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Fu" = ( +/obj/effect/rune_fluff_marks, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"FV" = ( +/obj/structure/stone_tile/surrounding/cracked, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Gh" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/effect/rune_fluff_marks, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Gs" = ( +/obj/structure/stone_tile/surrounding_tile/cracked, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/turf/simulated/floor/lava, +/area/ruin/unpowered/ash_walkers) +"Gw" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/item/flashlight/lantern, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"GD" = ( +/obj/structure/stone_tile/block/burnt, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"GK" = ( +/turf/template_noop, +/area/template_noop) +"GU" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"GZ" = ( +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 4 + }, +/turf/simulated/floor/lava, +/area/ruin/unpowered/ash_walkers) +"HL" = ( +/obj/structure/stone_tile/burnt{ + dir = 4 + }, +/obj/structure/stone_tile/burnt{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Ic" = ( +/obj/structure/stone_tile/slab/cracked, +/obj/structure/table/wood, +/obj/item/twohanded/spear, +/obj/item/clothing/head/helmet/roman/legionaire, +/obj/item/storage/belt/mining/primitive, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Il" = ( +/obj/structure/stone_tile/slab/cracked, +/obj/structure/closet/crate/wooden, +/obj/item/stack/sheet/wood{ + amount = 20 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"IB" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/flora/ash/fireblossom, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"IJ" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/turf/simulated/floor/lava/lava_land_surface, +/area/lavaland/surface/outdoors) +"IO" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/center/cracked, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/turf/simulated/floor/lava, +/area/ruin/unpowered/ash_walkers) +"IV" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile/burnt{ + dir = 4 + }, +/obj/structure/stone_tile/burnt{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Jg" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"Ji" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Jk" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile/burnt{ + dir = 8 + }, +/turf/simulated/floor/lava/lava_land_surface, +/area/lavaland/surface/outdoors) +"Jl" = ( +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Jo" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"Jr" = ( +/obj/structure/stone_tile/slab, +/obj/machinery/the_singularitygen, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"JJ" = ( +/obj/structure/stone_tile/slab/burnt, +/obj/structure/table/wood, +/obj/item/seeds/glowshroom, +/obj/item/seeds/glowshroom{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/seeds/glowshroom{ + pixel_x = 10; + pixel_y = -3 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"JM" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/center/cracked, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"JN" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/obj/structure/stone_tile, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"JY" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 4 + }, +/turf/template_noop, +/area/lavaland/surface/outdoors) +"Kg" = ( +/obj/structure/stone_tile/block/cracked, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Kl" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile/burnt{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/simulated/floor/lava/lava_land_surface, +/area/lavaland/surface/outdoors) +"Kv" = ( +/obj/structure/stone_tile/block/burnt{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"KA" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/turf/simulated/floor/lava/lava_land_surface, +/area/lavaland/surface/outdoors) +"KC" = ( +/obj/structure/stone_tile/slab, +/obj/structure/closet/crate/wooden, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Lr" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 5 + }, +/obj/structure/stone_tile/burnt, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"LJ" = ( +/obj/structure/sink/puddle, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Ms" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"Mz" = ( +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/torch_holder/mapping{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"ME" = ( +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/statue/bone/rib{ + dir = 1 + }, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"MK" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile/burnt, +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 8 + }, +/turf/simulated/floor/lava/lava_land_surface, +/area/lavaland/surface/outdoors) +"Nu" = ( +/obj/structure/stone_tile/slab/burnt, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/lavaland_food/grace_of_lazis{ + pixel_x = 6; + pixel_y = 9 + }, +/obj/item/reagent_containers/food/snacks/monstermeat/spiderleg{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/item/reagent_containers/food/snacks/monstermeat/spiderleg{ + pixel_x = 6; + pixel_y = 2 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Ny" = ( +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"NC" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"NF" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"NG" = ( +/obj/structure/table/wood, +/obj/item/seeds/tower, +/obj/item/cultivator/wooden, +/obj/item/seeds/tower{ + pixel_y = -7; + pixel_x = -10 + }, +/obj/item/seeds/tower{ + pixel_x = 6; + pixel_y = 6 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Of" = ( +/obj/structure/table/wood, +/obj/item/seeds/wheat{ + pixel_x = 9; + pixel_y = 10 + }, +/obj/item/seeds/wheat{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/seeds/wheat{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/shovel/spade/wooden{ + pixel_y = 4; + pixel_x = -1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"OC" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/obj/item/twohanded/spear, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Pq" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Pt" = ( +/obj/structure/flora/ash/cap_shroom, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"PD" = ( +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Qc" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Qk" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/curtain/open{ + color = "#222222"; + name = "black curtain"; + anchored = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Qy" = ( +/obj/structure/closet/crate/miningcar, +/obj/item/pickaxe, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"QT" = ( +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 1 + }, +/turf/simulated/floor/lava, +/area/ruin/unpowered/ash_walkers) +"QW" = ( +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/torch_holder/mapping{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Rj" = ( +/obj/structure/flora/ash/stem_shroom, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Rz" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile/burnt{ + dir = 1 + }, +/obj/structure/stone_tile/block/burnt, +/turf/simulated/floor/lava/lava_land_surface, +/area/lavaland/surface/outdoors) +"Se" = ( +/obj/item/pickaxe, +/obj/item/pickaxe, +/obj/item/pickaxe, +/obj/item/pickaxe, +/obj/item/pickaxe, +/obj/item/pickaxe, +/obj/structure/stone_tile/slab/cracked, +/obj/structure/closet/crate/miningcar, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Sp" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"Sw" = ( +/obj/structure/stone_tile/slab/cracked, +/obj/structure/bed/wicker, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"SV" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Ti" = ( +/obj/structure/stone_tile/slab, +/obj/structure/table/wood, +/obj/item/gun/projectile/bow, +/obj/item/storage/backpack/quiver{ + pixel_x = -7; + pixel_y = 7 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Tl" = ( +/obj/structure/stone_tile/slab/cracked, +/obj/structure/rack/wooden, +/obj/item/grown/cotton, +/obj/item/grown/cotton, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"TB" = ( +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/curtain/black{ + anchored = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"TD" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"TP" = ( +/obj/structure/stone_tile/slab, +/obj/structure/bed/leather, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"TV" = ( +/obj/structure/stone_tile/block/burnt, +/obj/structure/stone_tile/block{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Ue" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"UQ" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"Vh" = ( +/obj/structure/stone_tile/surrounding, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Vk" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/curtain/open{ + color = "#222222"; + name = "black curtain"; + anchored = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Vt" = ( +/obj/structure/fluff/ash_statue{ + special_name = "логово пеплоходцев" + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"VD" = ( +/obj/structure/stone_tile, +/turf/template_noop, +/area/lavaland/surface/outdoors) +"VM" = ( +/obj/structure/stone_tile/block/cracked, +/obj/structure/rack/wooden, +/obj/structure/torch_holder/mapping{ + dir = 1 + }, +/obj/item/stack/rods/twentyfive, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Wh" = ( +/obj/structure/stone_tile/surrounding/burnt, +/obj/structure/stone_tile/center/cracked, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Wp" = ( +/obj/structure/torch_holder/mapping{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"WH" = ( +/obj/structure/stone_tile/surrounding, +/obj/structure/bonfire, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"WI" = ( +/obj/structure/ore_box, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"WT" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"WX" = ( +/obj/structure/stone_tile/slab/cracked, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Xs" = ( +/obj/structure/stone_tile/slab/burnt, +/obj/machinery/smartfridge/drying_rack/ash, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"XK" = ( +/obj/structure/stone_tile/slab, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"XV" = ( +/obj/structure/stone_tile/surrounding_tile, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Yd" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile, +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/indestructible/boss/indoors, +/area/ruin/unpowered/ash_walkers) +"Ye" = ( +/obj/structure/necropolis_gate, +/obj/structure/necropolis_arch, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Yy" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"YC" = ( +/obj/structure/stone_tile/slab/burnt, +/obj/structure/rack/wooden, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Zg" = ( +/obj/structure/stone_tile/slab, +/obj/machinery/iv_drip, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"Zt" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/turf/template_noop, +/area/lavaland/surface/outdoors) +"ZA" = ( +/obj/structure/stone_tile/slab/cracked, +/obj/structure/bed/wicker, +/obj/structure/torch_holder/mapping{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) +"ZJ" = ( +/obj/structure/stone_tile/slab, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/mushroom_bowl{ + pixel_x = 4; + pixel_y = -3 + }, +/obj/item/kitchen/knife/combat/survival/bone{ + pixel_y = 6; + pixel_x = -4 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) + +(1,1,1) = {" +lT +lT +lT +sJ +je +je +sJ +je +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(2,1,1) = {" +lT +lT +je +sJ +je +uY +ZA +sd +je +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(3,1,1) = {" +lT +je +je +KC +sK +Kv +XV +qb +Sw +je +AS +AS +AS +GK +GK +GK +je +je +je +sJ +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(4,1,1) = {" +lT +je +jU +XV +rl +SV +XK +jv +to +sJ +WI +zD +AS +AS +je +sJ +je +rM +aN +jC +je +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(5,1,1) = {" +lT +sJ +Ba +PD +tw +XV +PD +OC +ls +TB +PD +PD +PD +je +je +ZJ +gi +ew +bx +cF +is +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(6,1,1) = {" +lT +je +Zg +DS +XK +PD +Vt +lF +WX +rG +WX +jv +Pt +je +mx +fG +Ck +GD +Jl +rl +xu +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(7,1,1) = {" +lT +je +je +rn +JN +pR +PD +rl +oc +TB +PD +XK +rl +sJ +WT +bx +TD +XV +PD +WX +mQ +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(8,1,1) = {" +lT +lT +je +TP +Ue +GU +XK +Ft +qu +sJ +PD +NF +kQ +WX +PD +XK +rl +qC +ie +Pq +sJ +sJ +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(9,1,1) = {" +lT +lT +je +je +sJ +uw +Vk +uw +sJ +sJ +wd +WX +tT +oz +xJ +Jl +gu +WH +mp +PD +pc +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(10,1,1) = {" +lT +lT +lT +sJ +AS +ie +mV +PD +Pq +Mz +PD +na +PD +sJ +nv +ie +Pq +vx +XV +fG +AQ +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(11,1,1) = {" +lT +lT +lT +sJ +AS +AS +PD +PD +rl +ie +zx +Fc +PD +je +je +Nu +WX +HL +ny +uy +Dn +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(12,1,1) = {" +lT +lT +lT +sJ +sJ +AS +ie +Pt +sJ +XV +PD +IV +PD +PD +je +je +sJ +oz +BR +WX +je +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(13,1,1) = {" +lT +lT +sJ +sJ +sJ +sJ +sJ +Dq +NC +PD +PD +GU +TV +eK +PD +Wp +qb +TD +TD +Qc +sJ +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(14,1,1) = {" +lT +sJ +sJ +GZ +so +xq +sJ +sJ +XK +PD +PD +PD +PD +XK +PD +PD +Rj +PD +PD +sJ +sJ +GK +GK +GK +GK +GK +GK +GK +GK +JY +GK +GK +GK +"} +(15,1,1) = {" +sJ +sJ +Gw +Jg +yw +AM +CS +sJ +sJ +IB +PD +rl +ET +iu +jv +uZ +PD +PD +sJ +sJ +IJ +GK +GK +GK +GK +GK +GK +GK +lT +lT +yV +GK +GK +"} +(16,1,1) = {" +sJ +ME +Sp +pm +ms +IO +hp +sJ +sJ +XK +ie +Cd +mb +Fu +sW +rd +PD +sJ +sJ +sJ +KA +wb +dM +pZ +Rz +xK +DA +De +gn +lT +gx +lm +GK +"} +(17,1,1) = {" +sJ +oA +pX +vD +ub +pg +Ep +UQ +jb +yv +WX +BR +Fu +pL +Fu +Lr +kS +WX +CZ +Ye +wm +gn +Jk +oH +hY +gI +zI +MK +tp +Ji +oj +lm +GK +"} +(18,1,1) = {" +sJ +BJ +Jo +Gs +et +xF +Yd +sJ +sJ +fC +EP +ks +jq +Fu +Gh +Dl +PD +sJ +sJ +sJ +he +wL +Yy +qy +BX +rB +xy +Kl +Kg +lT +ty +lm +GK +"} +(19,1,1) = {" +sJ +sJ +zO +Ca +za +Ms +Fk +sJ +sJ +EK +PD +qb +gd +WX +Ft +uH +PD +PD +sJ +sJ +jL +GK +GK +GK +GK +GK +GK +GK +lT +lT +VD +GK +GK +"} +(20,1,1) = {" +lT +sJ +sJ +QT +AL +Ff +sJ +sJ +WX +PD +Bf +uy +Dq +oz +uy +hM +Dq +PD +PD +sJ +sJ +GK +GK +GK +GK +GK +GK +GK +GK +Zt +GK +GK +GK +"} +(21,1,1) = {" +lT +lT +sJ +sJ +sJ +sJ +sJ +va +EP +PD +yv +sJ +sJ +PD +PD +sJ +sJ +PD +PD +lF +sJ +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(22,1,1) = {" +lT +lT +lT +lT +sJ +AS +Qy +PD +PD +PD +Al +sJ +YC +rl +NC +oS +cx +mp +PD +PD +je +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(23,1,1) = {" +lT +lT +lT +lT +sJ +AS +PD +PD +xj +PD +tT +CZ +WT +Pq +XV +Ny +JM +ec +PD +jO +LJ +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(24,1,1) = {" +lT +lT +lT +lT +je +sJ +Qk +Vk +sJ +QW +yv +bf +au +PD +PD +sJ +sJ +XV +tm +PD +mN +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(25,1,1) = {" +lT +lT +sJ +je +je +ld +PD +PD +dB +PD +tT +sJ +Ti +NC +FV +Ic +sJ +wd +zw +PD +vb +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(26,1,1) = {" +lT +je +je +gv +Jr +iU +uy +ie +dB +NC +Pq +sJ +sJ +vH +tR +sJ +sJ +Of +PD +PD +vb +sJ +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(27,1,1) = {" +lT +sJ +da +WT +PD +tT +Vh +mp +sJ +sJ +PD +PD +sJ +sJ +sJ +sJ +NG +CO +PD +pW +vb +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(28,1,1) = {" +lT +je +VM +PD +CO +Pq +TD +XV +CC +je +PD +PD +PD +Wp +Da +mF +PD +PD +PD +vb +je +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(29,1,1) = {" +lT +je +Tl +Wh +xJ +FV +Xs +ba +Se +je +xG +PD +PD +PD +PD +nI +PD +nc +nt +vb +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(30,1,1) = {" +lT +je +je +je +Il +Cg +je +sJ +je +je +sJ +gV +zK +Dq +BK +ny +vb +vb +vb +je +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(31,1,1) = {" +lT +lT +lT +je +sJ +je +je +lT +lT +lT +sJ +je +je +bS +aq +JJ +je +je +sJ +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(32,1,1) = {" +lT +lT +lT +lT +lT +lT +lT +lT +lT +lT +lT +lT +je +je +sJ +je +je +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} +(33,1,1) = {" +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +GK +"} diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cube.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cube.dmm index 5f12c66b757f..39c5fe42e28d 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cube.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cube.dmm @@ -10,6 +10,7 @@ /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "d" = ( +/obj/effect/mapping_helpers/no_lava, /turf/simulated/wall/indestructible, /area/lavaland/surface/outdoors) "e" = ( diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm index 568844c53bdd..675ecd49b304 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm @@ -80,7 +80,8 @@ height = 30; id = "freegolem"; name = "Free Golem Ship"; - width = 20 + width = 20; + preferred_direction = 4 }, /turf/simulated/floor/pod/dark, /area/shuttle/freegolem) diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm index 77bd3ad6d1c0..d76db3ad54b6 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm @@ -208,6 +208,8 @@ a a a a +a +a s s s @@ -228,6 +230,8 @@ a a a a +a +a s s s @@ -246,6 +250,8 @@ a a a a +a +a s s s @@ -265,6 +271,8 @@ a a a a +a +a s s s @@ -277,6 +285,8 @@ a a a a +a +a b c b @@ -294,6 +304,8 @@ a a a a +a +a b b n @@ -311,6 +323,8 @@ s a a a +a +a b b m @@ -327,6 +341,8 @@ s "} (8,1,1) = {" a +a +a b b b @@ -344,6 +360,8 @@ s s "} (9,1,1) = {" +a +a b b f @@ -362,6 +380,8 @@ s s "} (10,1,1) = {" +a +a b d g @@ -380,6 +400,8 @@ s s "} (11,1,1) = {" +a +a c e h @@ -398,6 +420,8 @@ s s "} (12,1,1) = {" +a +a b b f @@ -417,6 +441,8 @@ E "} (13,1,1) = {" a +a +a b b b @@ -447,6 +473,8 @@ a a a a +a +a F I F @@ -465,6 +493,8 @@ a a a a +a +a G J G @@ -486,4 +516,46 @@ a a a a +a +a +"} +(17,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(18,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +s "} diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_lavalake.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_lavalake.dmm new file mode 100644 index 000000000000..048842c58513 --- /dev/null +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_lavalake.dmm @@ -0,0 +1,904 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"bq" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 8 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/safe_cave) +"cc" = ( +/obj/effect/mapping_helpers/no_lava, +/obj/structure/flora/ausbushes/fullgrass/hell, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"cU" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 10 + }, +/obj/structure/stone_tile/slab/cracked{ + dir = 8 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"dl" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/burnt{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ey" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/safe_cave) +"gQ" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/slab/cracked{ + dir = 10 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/lava/lava_land_surface/lava_only, +/area/lavaland/surface/outdoors) +"gW" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/wall/indestructible/boss, +/area/ruin/unpowered/safe_cave) +"hP" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 10 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/lava/lava_land_surface/lava_only, +/area/lavaland/surface/outdoors) +"im" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 10 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/safe_cave) +"kk" = ( +/obj/structure/stone_tile/slab/cracked, +/obj/structure/table/wood, +/obj/item/flashlight/lantern, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/safe_cave) +"kx" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/wall/mineral/wood, +/area/lavaland/surface/outdoors) +"lN" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"mL" = ( +/obj/structure/stone_tile/slab/cracked, +/obj/structure/bonfire, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/safe_cave) +"mN" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 5 + }, +/obj/structure/stone_tile/slab/cracked{ + dir = 10 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/lava/lava_land_surface/lava_only, +/area/lavaland/surface/outdoors) +"mO" = ( +/obj/structure/stone_tile/slab, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/safe_cave) +"nt" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/center, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/lava/lava_land_surface/lava_only, +/area/lavaland/surface/outdoors) +"nA" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/safe_cave) +"nZ" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/safe_cave) +"oi" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 5 + }, +/obj/structure/stone_tile/slab/cracked{ + dir = 8 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/safe_cave) +"oB" = ( +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/center, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/lava/lava_land_surface/lava_only, +/area/lavaland/surface/outdoors) +"oK" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 5 + }, +/obj/structure/stone_tile/slab/cracked{ + dir = 10 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"pg" = ( +/turf/simulated/mineral/random/volcanic/hard, +/area/lavaland/surface/outdoors) +"pv" = ( +/obj/effect/mapping_helpers/no_lava, +/obj/structure/stone_tile/slab/cracked{ + dir = 10 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"rj" = ( +/obj/structure/stone_tile/slab/cracked, +/obj/structure/table/wood, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/safe_cave) +"rO" = ( +/obj/effect/mapping_helpers/no_lava, +/obj/structure/fluff/ash_statue{ + special_name = "лавовое озеро" + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"tZ" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"uX" = ( +/obj/effect/mapping_helpers/no_lava, +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"yi" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 8 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"yu" = ( +/obj/effect/mapping_helpers/no_lava, +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"yv" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 5 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/lava/lava_land_surface/lava_only, +/area/lavaland/surface/outdoors) +"yY" = ( +/turf/simulated/wall/mineral/wood, +/area/lavaland/surface/outdoors) +"zO" = ( +/turf/simulated/wall/indestructible/boss, +/area/lavaland/surface/outdoors) +"BU" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/wall/mineral/wood, +/area/ruin/unpowered/safe_cave) +"EO" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/slab/cracked{ + dir = 10 + }, +/obj/structure/stone_tile/slab/cracked{ + dir = 8 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/safe_cave) +"Fn" = ( +/obj/effect/mapping_helpers/no_lava, +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Ha" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 5 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Ir" = ( +/obj/effect/mapping_helpers/no_lava, +/obj/structure/flora/ausbushes/fullgrass/hell, +/obj/structure/flora/ausbushes/fullgrass/hell, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Jc" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/table/wood, +/obj/effect/mapping_helpers/no_lava, +/obj/item/shovel/spade/wooden{ + pixel_x = -2; + pixel_y = -8 + }, +/obj/item/shovel/spade/wooden{ + pixel_x = 6; + pixel_y = 1 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/safe_cave) +"KI" = ( +/obj/structure/stone_tile/slab/cracked, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/lava/lava_land_surface/lava_only, +/area/lavaland/surface/outdoors) +"Lg" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/slab/cracked{ + dir = 10 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Lr" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Md" = ( +/obj/structure/stone_tile/slab/cracked, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/safe_cave) +"Mn" = ( +/obj/effect/mapping_helpers/no_lava, +/obj/structure/flora/ausbushes/grassybush/hell, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"OB" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/mineral/random/volcanic/hard, +/area/lavaland/surface/outdoors) +"PJ" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/table/wood, +/obj/effect/mapping_helpers/no_lava, +/obj/item/twohanded/fishing_rod/tribal, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/safe_cave) +"PL" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/wall/indestructible/boss, +/area/lavaland/surface/outdoors) +"Qx" = ( +/obj/structure/stone_tile/cracked, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Rn" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/slab/cracked{ + dir = 8 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/safe_cave) +"Tl" = ( +/obj/effect/mapping_helpers/no_lava, +/obj/structure/flora/ausbushes/genericbush/hell, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"TK" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Un" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/safe_cave) +"Vd" = ( +/obj/effect/mapping_helpers/no_lava, +/obj/structure/flora/firebush, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"VU" = ( +/obj/effect/mapping_helpers/no_lava, +/obj/structure/stone_tile/slab/cracked{ + dir = 5 + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"WH" = ( +/obj/effect/mapping_helpers/no_lava, +/obj/structure/stone_tile/slab/cracked, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Xn" = ( +/obj/effect/mapping_helpers/no_lava, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"XU" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Yd" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/lava/lava_land_surface/lava_only, +/area/lavaland/surface/outdoors) +"Zg" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/center, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/lava/lava_land_surface/lava_only, +/area/lavaland/surface/outdoors) +"ZS" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 5 + }, +/obj/structure/stone_tile/slab/cracked{ + dir = 8 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/lava/lava_land_surface/lava_only, +/area/lavaland/surface/outdoors) + +(1,1,1) = {" +pg +pg +pg +pg +pg +pg +pg +pg +pg +pg +pg +pg +WH +yu +VU +pg +pg +pg +pg +pg +"} +(2,1,1) = {" +pg +tZ +tZ +tZ +tZ +tZ +tZ +tZ +tZ +kx +kx +PL +tZ +cc +tZ +pg +pg +pg +pg +pg +"} +(3,1,1) = {" +pg +tZ +tZ +tZ +Yd +Yd +tZ +Vd +tZ +tZ +rO +tZ +tZ +tZ +tZ +tZ +yY +zO +cc +pg +"} +(4,1,1) = {" +pg +tZ +Yd +Yd +Yd +Yd +Yd +tZ +gQ +tZ +tZ +tZ +Mn +Lr +tZ +tZ +tZ +tZ +tZ +pg +"} +(5,1,1) = {" +pg +tZ +tZ +Yd +Yd +Yd +Yd +Yd +ZS +Tl +tZ +TK +tZ +Yd +Yd +tZ +Tl +tZ +lN +pg +"} +(6,1,1) = {" +uX +Vd +tZ +tZ +Yd +oB +Yd +Yd +Yd +Yd +tZ +Ir +yv +Yd +Yd +Yd +tZ +tZ +tZ +pg +"} +(7,1,1) = {" +VU +tZ +cU +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +KI +tZ +tZ +dl +"} +(8,1,1) = {" +WH +tZ +tZ +yi +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +tZ +tZ +tZ +cU +"} +(9,1,1) = {" +pg +pg +cc +tZ +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +tZ +tZ +tZ +Ha +"} +(10,1,1) = {" +pg +pg +zO +tZ +tZ +hP +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +oK +tZ +Vd +pg +"} +(11,1,1) = {" +pg +pg +zO +zO +tZ +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +nt +Yd +Yd +tZ +tZ +tZ +pg +"} +(12,1,1) = {" +pg +pg +pg +tZ +tZ +Yd +Yd +Yd +Yd +Zg +Yd +Yd +Yd +Yd +Yd +tZ +tZ +tZ +cc +pg +"} +(13,1,1) = {" +pg +pg +pg +tZ +XU +Mn +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Yd +tZ +tZ +cc +gW +BU +BU +"} +(14,1,1) = {" +pg +tZ +zO +tZ +tZ +tZ +Yd +Yd +Yd +Yd +Yd +Yd +Yd +Lg +tZ +tZ +gW +BU +Jc +gW +"} +(15,1,1) = {" +pg +Vd +tZ +tZ +tZ +tZ +tZ +Yd +Yd +mN +Yd +Yd +Yd +Xn +tZ +nA +Md +bq +Un +BU +"} +(16,1,1) = {" +pg +tZ +tZ +tZ +tZ +tZ +lN +Mn +Yd +Yd +Yd +tZ +tZ +tZ +gW +gW +ey +oi +nZ +gW +"} +(17,1,1) = {" +pg +tZ +tZ +Qx +Tl +tZ +tZ +tZ +Ha +tZ +Qx +tZ +tZ +tZ +gW +Md +EO +mL +mO +gW +"} +(18,1,1) = {" +pg +pg +yY +tZ +tZ +tZ +tZ +tZ +tZ +Vd +tZ +tZ +XU +tZ +BU +BU +rj +im +Rn +BU +"} +(19,1,1) = {" +pg +pg +yY +yY +tZ +cc +pg +zO +tZ +tZ +tZ +yY +tZ +cc +OB +BU +gW +PJ +kk +BU +"} +(20,1,1) = {" +pg +pg +pg +pg +pg +pg +pg +pg +pv +Fn +WH +pg +pg +pg +pg +pg +gW +gW +BU +BU +"} diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_legion.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_legion.dmm index 300a5a4983e2..1d18bd27fa6a 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_legion.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_legion.dmm @@ -92,7 +92,7 @@ /obj/item/shield/riot/roman{ name = "battered shield" }, -/obj/item/claymore{ +/obj/item/melee/claymore{ block_chance = 40; desc = "A cracked and blunted sword, clearly weathered over the ages."; force = 30; diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_worldanvil.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_worldanvil.dmm index d3198765f31b..833e4e2b611c 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_worldanvil.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_worldanvil.dmm @@ -346,6 +346,13 @@ }, /turf/simulated/floor/lava/lava_land_surface, /area/ruin/unpowered/misc_lavaruin) +"QC" = ( +/obj/effect/mapping_helpers/no_lava, +/obj/structure/fluff/ash_statue{ + special_name = "мировая кузня" + }, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/misc_lavaruin) "Tw" = ( /obj/structure/stone_tile/slab, /obj/structure/world_anvil, @@ -521,7 +528,7 @@ Nd GD jC wO -Dp +QC FE Wc "} diff --git a/_maps/map_files/RandomRuins/SpaceRuins/old_station_ss1984.dmm b/_maps/map_files/RandomRuins/SpaceRuins/old_station_ss1984.dmm new file mode 100644 index 000000000000..fb99a3d7e11f --- /dev/null +++ b/_maps/map_files/RandomRuins/SpaceRuins/old_station_ss1984.dmm @@ -0,0 +1,29205 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ac" = ( +/obj/structure/closet/crate, +/obj/item/restraints/legcuffs/beartrap, +/obj/item/restraints/legcuffs/beartrap, +/obj/item/restraints/legcuffs/beartrap, +/obj/item/restraints/handcuffs/pinkcuffs, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"af" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"ag" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/westleft{ + dir = 2 + }, +/obj/effect/decal/warning_stripes/south, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/ancientstation/theta_rnd) +"ah" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"aj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/mob/living/simple_animal/hostile/hivebot/rapid, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"ak" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/portables_connector, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"al" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/flag/nt, +/turf/simulated/floor/plasteel{ + icon_state = "redfull" + }, +/area/ruin/space/ancientstation/charlie_sec) +"an" = ( +/obj/structure/flora/rock/lava3, +/turf/simulated/floor/plating/asteroid/ancient, +/area/ruin/space/ancientstation/cowasteroid) +"ao" = ( +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue"; + dir = 8 + }, +/area/ruin/space/ancientstation/beta_surgery1) +"ap" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"ar" = ( +/turf/simulated/floor/engine, +/area/ruin/space/ancientstation/theta_experi) +"as" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 1; + name = "Труба дыхательной смеси" + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"at" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"au" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/storage/ashtray/glass, +/obj/item/paper_bin, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"av" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office{ + dir = 8 + }, +/obj/item/storage/bag/trash, +/obj/item/mop, +/obj/item/reagent_containers/glass/bucket, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"aw" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_engi) +"ax" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"ay" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_punishmentcell) +"aA" = ( +/obj/item/fish_eggs/babycarp{ + pixel_x = -16 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"aE" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 1; + name = "Труба фильтрации" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"aF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"aG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + color = "red"; + dir = 8 + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/storage/box/flashbangs, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/ruin/space/ancientstation/charlie_armory) +"aH" = ( +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_restroom) +"aI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/item/twohanded/required/kirbyplants/dead{ + pixel_y = 13 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_restroom) +"aK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/machinery/recharge_station, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"aL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer{ + desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; + dir = 8; + name = "Broken Computer" + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/ruin/space/ancientstation/charlie_comm) +"aM" = ( +/obj/structure/flora/ausbushes/leafybush, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"aN" = ( +/obj/structure/lattice, +/obj/item/stack/tile/plasteel, +/obj/item/stack/tile/plasteel, +/turf/template_noop, +/area/template_noop) +"aO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel/airless, +/area/template_noop) +"aQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + color = "red"; + dir = 4 + }, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/structure/closet/secure_closet/guncabinet{ + req_access = list(271) + }, +/obj/item/tank/jetpack/void/grey, +/obj/item/clothing/suit/space/nasavoid/syndi, +/obj/item/clothing/head/helmet/space/nasavoid/syndi, +/obj/item/clothing/mask/gas/explorer, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"aR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"aU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm/old{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secintel) +"aV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/cooker/deepfryer, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"aW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window{ + dir = 2; + req_access = list(271); + color = "red" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"aY" = ( +/obj/machinery/power/grounding_rod, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"aZ" = ( +/obj/structure/sign/mining, +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/theta_docks) +"ba" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"bd" = ( +/obj/item/fish_eggs/babycarp{ + pixel_y = 16; + pixel_x = 11 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"be" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/machinery/door/airlock/external{ + req_access = list(271) + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"bg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/clothing/head/hardhat, +/obj/item/tank/internals/emergency_oxygen/empty, +/obj/item/extinguisher, +/obj/structure/closet, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"bh" = ( +/mob/living/simple_animal/hostile/hivebot, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"bj" = ( +/obj/item/shard{ + icon_state = "medium"; + pixel_x = 9; + pixel_y = -9 + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"bl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secintel) +"bm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"bn" = ( +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"bp" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_comm) +"bq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/template_noop) +"br" = ( +/obj/item/fish_eggs/babycarp{ + pixel_y = 16 + }, +/obj/item/fish_eggs/babycarp{ + pixel_x = 16 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"bs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = list(271) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"bt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_prison) +"bv" = ( +/mob/living/simple_animal/hostile/carp/koi, +/turf/template_noop, +/area/template_noop) +"bw" = ( +/turf/simulated/mineral/ancient, +/area/ruin/space/ancientstation/cowasteroid) +"by" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/machinery/light_switch{ + pixel_y = 26 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"bB" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/template_noop, +/area/template_noop) +"bC" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_hydroroom) +"bD" = ( +/obj/item/robot_parts/chest, +/obj/structure/closet/crate, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"bE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"bF" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/transit_tube/horizontal{ + dir = 1 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_comm) +"bG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_restroom) +"bJ" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/theta_exit) +"bK" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_surgery1) +"bM" = ( +/obj/effect/spawner/window/reinforced{ + color = "919191" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"bN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + pixel_y = 26; + name = "miners' locker room power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/obj/structure/chair/stool, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_mine) +"bO" = ( +/obj/item/solar_assembly, +/obj/structure/cable/orange{ + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/template_noop) +"bP" = ( +/obj/structure/closet/crate/secure/weapon, +/obj/item/clothing/suit/bomb_suit/security, +/obj/item/clothing/head/bomb_hood/security, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"bR" = ( +/obj/structure/table/glass, +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue"; + dir = 1 + }, +/area/ruin/space/ancientstation/beta_surgery1) +"bS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/ore_box, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"bT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/biohazard{ + icon_state = "radiation"; + name = "\improper HAZARDOUS RADIATION"; + pixel_y = -32 + }, +/obj/structure/closet, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/mask/gas, +/obj/item/tank/jetpack/void, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"bU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/twohanded/required/kirbyplants/dead, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"bV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_north) +"bY" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/turf/template_noop, +/area/template_noop) +"ca" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_armory) +"cc" = ( +/turf/simulated/wall/r_wall, +/area/ruin/space/ancientstation/hivebot) +"cd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet{ + custom_door_overlay = "white"; + name = "Medical gear"; + opened = 1 + }, +/obj/item/clothing/under/retro/medical, +/obj/item/clothing/under/retro/medical, +/obj/item/clothing/suit/storage/labcoat/fluff, +/obj/item/clothing/suit/storage/labcoat/fluff, +/obj/item/clothing/accessory/armband/med, +/obj/item/clothing/shoes/white, +/obj/item/clothing/shoes/white, +/obj/item/storage/backpack/old, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"ce" = ( +/obj/structure/showcase/machinery/oldpod, +/turf/simulated/floor/plasteel/airless{ + icon_state = "titanium" + }, +/area/template_noop) +"cf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/item/clothing/mask/gas/explorer, +/obj/item/mining_scanner{ + desc = "A scanner that checks surrounding rock for useful minerals, click the button to scan the area around; it can also be used to stop gibtonite detonations. Wear material scanners for optimal results." + }, +/obj/item/shovel, +/obj/item/storage/bag/ore, +/obj/item/clothing/shoes/workboots/mining, +/obj/item/clothing/under/rank/miner, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_mine) +"cg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/orange{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"ch" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_restroom) +"ck" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/northwest, +/obj/machinery/r_n_d/protolathe, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/ancientstation/theta_rnd) +"cm" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/obj/structure/cable/orange{ + icon_state = "2-8" + }, +/turf/template_noop, +/area/template_noop) +"cn" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/orange{ + icon_state = "1-2" + }, +/turf/template_noop, +/area/template_noop) +"cp" = ( +/mob/living/simple_animal/hostile/hivebot/strong, +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"cv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/recharger, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"cw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/reagentgrinder{ + pixel_x = -1; + pixel_y = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"cx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"cy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/cap{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"cA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/medical{ + req_access = list(271); + name = "Medical Storage" + }, +/obj/structure/curtain/medical, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"cB" = ( +/obj/structure/table/wood, +/obj/item/c_tube, +/obj/item/trash/snack_bowl, +/obj/item/storage/ashtray/glass, +/turf/simulated/floor/wood{ + icon_state = "wood-broken5" + }, +/area/ruin/space/ancientstation/charlie_dininghall) +"cC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"cE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + name = "Труба смешивания" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"cF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/binary/pump{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/atmos/glass, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"cH" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/transit_tube/horizontal{ + dir = 1 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_sec) +"cJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_mine) +"cK" = ( +/obj/effect/spawner/random_spawners/grille_13, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"cO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_proto) +"cQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/paper/fluff/ruins/oldstation{ + pixel_x = -9 + }, +/obj/structure/chair/office, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"cS" = ( +/obj/structure/flora/straw_bail/alt_1, +/obj/effect/decal/straw, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"cV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"cW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/mob/living/simple_animal/hostile/hivebot/range, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"cY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/can, +/obj/item/storage/bag/trash, +/obj/item/crowbar/red/sec, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"cZ" = ( +/obj/structure/bookcase, +/obj/item/storage/bag/books, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"da" = ( +/obj/structure/table/wood, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"db" = ( +/obj/structure/transit_tube_pod{ + dir = 4 + }, +/turf/template_noop, +/area/template_noop) +"dc" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"dd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"df" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_exit) +"dg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"dj" = ( +/obj/machinery/door/window{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"dk" = ( +/obj/item/folder/white, +/turf/template_noop, +/area/template_noop) +"do" = ( +/obj/item/circuitboard/sleeper, +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue"; + dir = 1 + }, +/area/template_noop) +"dp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 8; + external_pressure_bound = 0; + external_pressure_bound_default = 0; + frequency = 1441; + id_tag = "o2_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + internal_pressure_bound_default = 4000; + name = "oxygen vent"; + on = 1; + pressure_checks = 2; + pressure_checks_default = 2; + releasing = 0 + }, +/turf/simulated/floor/engine/o2, +/area/ruin/space/ancientstation/beta_atmos) +"dq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_proto) +"dr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + color = "red"; + dir = 8 + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/ammo_box/shotgun/beanbag, +/obj/item/ammo_box/shotgun, +/obj/item/ammo_box/shotgun/buck, +/obj/item/ammo_box/speedloader/shotgun/dart, +/obj/effect/decal/cleanable/cobweb, +/obj/item/ammo_box/speedloader/shotgun/dart, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"dt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = list(271) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"du" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/effect/decal/straw/edge{ + dir = 4 + }, +/obj/machinery/light/small, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"dv" = ( +/turf/simulated/mineral/random/high_chance, +/area/template_noop) +"dw" = ( +/turf/simulated/floor/engine/vacuum, +/area/ruin/space/ancientstation/beta_atmos) +"dx" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "greencorner" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"dy" = ( +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 1 + }, +/turf/simulated/floor/engine/vacuum, +/area/ruin/space/ancientstation/beta_atmos) +"dA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/computer/operating/old_frame, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_surgery) +"dB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/mob/living/simple_animal/hostile/hivebot/range, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_mine) +"dC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "redcorner" + }, +/area/ruin/space/ancientstation/charlie_sec) +"dF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm/old{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"dI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/closet/crate/radiation, +/obj/item/stack/sheet/mineral/uranium{ + amount = 10 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"dL" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/transit_tube/horizontal, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_experi) +"dM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer{ + desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; + dir = 8; + name = "Broken Computer" + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"dN" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/hivebot/strong, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"dP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/machinery/light_construct/small, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"dT" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "titanium" + }, +/area/template_noop) +"dU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/trinary/mixer{ + desc = "Смешивает кислород и азот, создавая смесь для дыхания на станции"; + dir = 1; + name = "Дыхательный смеситель"; + node1_concentration = 0.8; + node2_concentration = 0.2; + on = 1; + target_pressure = 4500 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"dV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/rdconsole/experiment{ + req_access = list(271) + }, +/obj/machinery/light_construct/small{ + dir = 1 + }, +/turf/simulated/floor/engine, +/area/ruin/space/ancientstation/theta_experi) +"dW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/science{ + name = "Research and Development" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom" + }, +/area/ruin/space/ancientstation/theta_experi) +"dX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"dY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/security{ + name = "Intirrogation" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secintel) +"ea" = ( +/obj/machinery/power/solar, +/obj/structure/cable/orange, +/turf/simulated/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/template_noop) +"eb" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Corral" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating/asteroid/ancient, +/area/ruin/space/ancientstation/charlie_hydroroom) +"ec" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"eg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"eh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"ei" = ( +/obj/effect/decal/remains/xeno, +/turf/simulated/floor/plating/asteroid/ancient, +/area/ruin/space/ancientstation/cowasteroid) +"ej" = ( +/obj/item/clothing/shoes/black, +/obj/item/clothing/under/color/grey, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"em" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/airless, +/area/ruin/space/ancientstation/beta_atmos) +"en" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/deliveryChute, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/sign/securearea{ + name = "\improper STAY CLEAR HEAVY MACHINERY"; + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"ep" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"eq" = ( +/obj/structure/flora/ausbushes/leafybush, +/obj/effect/decal/straw/edge{ + dir = 4 + }, +/obj/effect/decal/straw/edge{ + dir = 1 + }, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"er" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"es" = ( +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"et" = ( +/mob/living/simple_animal/hostile/hivebot/rapid, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/hivebot) +"eu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/taperecorder, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"ew" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Corral" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"ey" = ( +/obj/machinery/alarm/old{ + dir = 8; + pixel_x = 26 + }, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"ez" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/station, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"eB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/washing_machine, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"eF" = ( +/obj/effect/decal/cleanable/blood/gibs, +/obj/item/clothing/under/rank/janitor, +/obj/item/clothing/shoes/black, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"eG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/flag/nt, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"eK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "browncorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"eL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/science{ + name = "Research and Development" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"eM" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 8; + name = "Труба фильтрации" + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 1; + name = "Труба смешивания" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"eP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/kitchen_machine/microwave, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"eQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"eR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plating/asteroid, +/area/ruin/space/ancientstation/charlie_hydroroom) +"eS" = ( +/turf/simulated/wall/r_wall/rust, +/area/ruin/space/ancientstation/theta_proto) +"eU" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"fb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/kitchen_machine/oven, +/obj/item/trash/tray, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"ff" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_rnd) +"fg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/book/manual/experimentor, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"fh" = ( +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue"; + dir = 9 + }, +/area/ruin/space/ancientstation/beta_surgery1) +"fk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_rnd) +"fl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"fm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"fo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel/airless, +/area/template_noop) +"fq" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_corridor) +"fr" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_corridor) +"fv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 4; + name = "Труба дыхательной смеси" + }, +/obj/machinery/atmospherics/meter, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"fw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/ruin/space/ancientstation/charlie_secintel) +"fx" = ( +/obj/structure/nest/carppuppy, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"fy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"fz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_dininghall) +"fC" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/theta_experi) +"fE" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/template_noop) +"fF" = ( +/obj/structure/lattice, +/obj/item/stack/tile/plasteel, +/turf/template_noop, +/area/template_noop) +"fG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/flora/ausbushes/palebush, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating/asteroid, +/area/ruin/space/ancientstation/charlie_hydroroom) +"fH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"fI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/seeds/cotton, +/obj/item/seeds/cotton, +/obj/item/seeds/cotton, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"fJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"fK" = ( +/obj/structure/closet/secure_closet/medical2, +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue"; + dir = 1 + }, +/area/ruin/space/ancientstation/beta_surgery1) +"fL" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/ancientstation/charlie_prison) +"fO" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_surgery) +"fP" = ( +/obj/structure/flora/ausbushes/leafybush, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/cowasteroid) +"fQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/mob_spawn/human/oldstation/oldmed{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"fS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light_construct/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"fU" = ( +/obj/structure/table/wood, +/obj/item/chair/wood/wings{ + dir = 1 + }, +/obj/item/trash/snack_bowl, +/turf/simulated/floor/wood{ + icon_state = "wood-broken" + }, +/area/ruin/space/ancientstation/charlie_dininghall) +"fW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"fX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26; + name = "storage power controller" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_rnd) +"fY" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"fZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/canister/air{ + anchored = 1 + }, +/turf/simulated/floor/engine/air, +/area/ruin/space/ancientstation/beta_atmos) +"gb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/ore_box, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"gc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/table/wood, +/obj/item/chair/wood/wings, +/obj/item/trash/tray, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"ge" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"gj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm/old{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"gk" = ( +/turf/simulated/floor/plasteel{ + icon_state = "browncorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"gm" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_experi) +"gn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/north, +/obj/machinery/computer/rdconsole/public, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/ancientstation/theta_rnd) +"gp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/mech_bay_power_console, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"gs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_warden) +"gu" = ( +/obj/structure/table/wood, +/obj/machinery/cell_charger, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"gv" = ( +/obj/item/shard{ + icon_state = "small" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"gw" = ( +/obj/structure/lattice, +/obj/item/shard{ + icon_state = "small" + }, +/turf/template_noop, +/area/ruin/space/ancientstation/charlie_recycler) +"gy" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/theta_storage) +"gz" = ( +/obj/machinery/light/small, +/obj/machinery/conveyor{ + id = "trash"; + dir = 4 + }, +/obj/machinery/mineral/stacking_machine{ + input_dir = 2; + stack_amt = 10 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"gB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secintel) +"gD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/table, +/obj/item/flashlight/lamp, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secintel) +"gE" = ( +/obj/structure/table/glass, +/obj/item/clothing/gloves/color/latex/nitrile, +/obj/machinery/alarm/old{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue"; + dir = 8 + }, +/area/ruin/space/ancientstation/beta_surgery1) +"gG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"gH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/station, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"gI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/item/stack/cable_coil{ + amount = 2 + }, +/obj/machinery/door/airlock/engineering{ + name = "Emergency generator" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"gJ" = ( +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"gK" = ( +/obj/machinery/atmospherics/binary/volume_pump/on{ + desc = "Отправляет неотфильтрованный газ в космос"; + name = "Остатки газа в космос" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"gL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/smes/vintage, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"gN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold4w/hidden, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"gO" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8; + initialize_directions = 11 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/template_noop) +"gP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 1; + name = "Труба дыхательной смеси" + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 4; + name = "Труба смешивания" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"gQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/binary/pump{ + on = 1; + target_pressure = 101 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/machinery/light_construct/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"gS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/curtain/open, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_punishmentcell) +"gU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"gV" = ( +/obj/item/fish_eggs/babycarp{ + pixel_y = 16 + }, +/obj/item/fish_eggs/babycarp{ + pixel_x = -16 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"gW" = ( +/obj/structure/transit_tube/crossing/horizontal, +/turf/template_noop, +/area/template_noop) +"gY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair{ + dir = 8 + }, +/turf/simulated/floor/plasteel/airless, +/area/template_noop) +"gZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer{ + desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; + dir = 8; + name = "Broken Computer" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"ha" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/obj/structure/railing, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"hc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_prison) +"hd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/recharge_station, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"he" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/item/clothing/under/retro/engineering{ + name = "retro miners' uniforms"; + desc = "Faded dingy overalls and jumpsuit overalls. It's covered in oil, dust and sand." + }, +/obj/item/clothing/mask/gas/explorer, +/obj/item/mining_scanner{ + desc = "A scanner that checks surrounding rock for useful minerals, click the button to scan the area around; it can also be used to stop gibtonite detonations. Wear material scanners for optimal results." + }, +/obj/item/shovel, +/obj/item/clothing/shoes/workboots/mining, +/obj/item/storage/backpack/old, +/obj/item/clothing/under/rank/miner, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_mine) +"hf" = ( +/obj/effect/decal/cleanable/blood/gibs, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"hg" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"hh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"hj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secintel) +"hk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/computer/operating/old_frame, +/obj/machinery/alarm/old{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_rnd) +"ho" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"hp" = ( +/obj/structure/table/glass, +/obj/item/surgical_drapes, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue"; + dir = 8 + }, +/area/ruin/space/ancientstation/beta_surgery1) +"ht" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/mineral/processing_unit, +/obj/machinery/conveyor{ + id = "oreredemp"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"hu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/can, +/obj/item/storage/bag/trash, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secrest) +"hv" = ( +/obj/structure/lattice, +/obj/item/shard, +/turf/template_noop, +/area/ruin/space/ancientstation/charlie_recycler) +"hx" = ( +/turf/simulated/mineral/random, +/area/ruin/space/ancientstation/charlie_hydroroom) +"hy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/kitchen_machine/oven, +/obj/item/trash/tray, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"hA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/science{ + name = "Research and Development" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_mine) +"hB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"hE" = ( +/turf/simulated/floor/plasteel/airless{ + icon_state = "titanium" + }, +/area/template_noop) +"hF" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/beta_atmos) +"hG" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_warden) +"hH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"hI" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"hJ" = ( +/obj/machinery/door/airlock/medical{ + req_access = list(271); + name = "Operating room" + }, +/obj/structure/curtain/medical, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_surgery1) +"hL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/flora/ausbushes/grassybush, +/obj/machinery/light_construct/small{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/ancient, +/area/ruin/space/ancientstation/charlie_hydroroom) +"hO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26; + name = "Smoking room power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secrest) +"hP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"hR" = ( +/obj/item/pickaxe/drill, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"hT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/machinery/light_construct/small, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"hU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/cap{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"hX" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8; + initialize_directions = 11 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/template_noop) +"hY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -26 + }, +/obj/item/flag/nt, +/obj/machinery/alarm/old{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_warden) +"ia" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/orange{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"ic" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/obj/machinery/door/airlock/security/glass{ + name = "Prison Corridor" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"ie" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/cap{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"ig" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_rnd) +"ii" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"ij" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer{ + desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; + dir = 8; + name = "Broken Computer" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"im" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/cigarette/free, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secrest) +"in" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/transit_tube/horizontal, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"iq" = ( +/obj/machinery/recharge_station, +/obj/item/robot_parts/r_leg, +/obj/item/robot_parts/robot_component/camera, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"it" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_north) +"iw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/mob/living/simple_animal/hostile/hivebot/rapid, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_rnd) +"ix" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_dininghall) +"iy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydroponics) +"iz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, +/obj/structure/mirror{ + name = "dusty mirror"; + pixel_x = 26 + }, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_restroom) +"iA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"iB" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"iC" = ( +/turf/simulated/wall, +/area/ruin/space/ancientstation/beta_medstorage) +"iD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/westleft{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/iv_bag/salglu{ + name = "Saline solution" + }, +/obj/item/reagent_containers/iv_bag/salglu{ + name = "Saline solution" + }, +/obj/item/reagent_containers/iv_bag/blood/ABMinus, +/obj/item/reagent_containers/iv_bag/blood/ABPlus, +/obj/item/reagent_containers/iv_bag/blood/AMinus, +/obj/item/reagent_containers/iv_bag/blood/APlus, +/obj/item/reagent_containers/iv_bag/blood/BMinus, +/obj/item/reagent_containers/iv_bag/blood/BPlus, +/obj/item/reagent_containers/iv_bag/blood/OMinus, +/obj/item/reagent_containers/iv_bag/blood/OPlus, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"iG" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + pixel_y = 26; + name = "surgical operating power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue"; + dir = 1 + }, +/area/ruin/space/ancientstation/beta_surgery) +"iJ" = ( +/obj/structure/lattice, +/obj/item/shard{ + icon_state = "medium"; + pixel_x = -7; + pixel_y = -10 + }, +/turf/template_noop, +/area/ruin/space/ancientstation/charlie_recycler) +"iM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_construct/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_exit) +"iP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"iT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/mob/living/simple_animal/hostile/hivebot/strong, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"iU" = ( +/obj/item/shard{ + icon_state = "medium"; + pixel_x = 9; + pixel_y = -9 + }, +/obj/effect/spawner/random_spawners/grille_50, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_hydroroom) +"iV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"iW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_north) +"iX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = 32 + }, +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"iY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"iZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/pipedispenser, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"ja" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_sec) +"jb" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_kitchen) +"jc" = ( +/obj/item/clothing/shoes/cult, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"jf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"ji" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/orange{ + icon_state = "2-4" + }, +/obj/structure/cable/orange{ + icon_state = "0-2" + }, +/turf/template_noop, +/area/template_noop) +"jk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/space_heater, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_restroom) +"jl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"jm" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/machinery/atmospherics/pipe/simple/visible/supply, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"jn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"jq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/rack, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/seeds/grass, +/obj/item/seeds/grass, +/obj/item/seeds/grass, +/obj/item/seeds/tea, +/obj/item/seeds/tea, +/obj/item/seeds/tea, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"js" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/outlet_injector/on{ + dir = 8 + }, +/turf/simulated/floor/engine/o2, +/area/ruin/space/ancientstation/beta_atmos) +"jt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"ju" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/hydroponics/constructable, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/alarm/old{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"jv" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/obj/machinery/light_construct/small{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"jy" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"jz" = ( +/obj/effect/decal/ants, +/obj/structure/flora/ausbushes/leafybush, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"jB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/cabinet, +/obj/item/clothing/ears/headphones, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/item/clothing/under/soldieruniform, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_restroom) +"jF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/cap{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"jH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_mine) +"jJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel/airless, +/area/template_noop) +"jK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc{ + pixel_y = 26; + name = "corridor power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"jM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/bodyscanner{ + dir = 2 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_surgery) +"jO" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"jR" = ( +/turf/simulated/floor/plating/asteroid/ancient, +/area/ruin/space/ancientstation/cowasteroid) +"jS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/photocopier, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"jT" = ( +/obj/structure/transit_tube/crossing/horizontal{ + dir = 1 + }, +/turf/template_noop, +/area/template_noop) +"jU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/station, +/turf/simulated/floor/plasteel/airless, +/area/template_noop) +"jV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, +/obj/structure/curtain/open/shower, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_surgery) +"jW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"jX" = ( +/mob/living/simple_animal/hostile/hivebot/tele, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"kb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor/preopen, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_corridor) +"kc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + pixel_y = 26; + name = "cryogenic power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_cryo) +"kg" = ( +/mob/living/simple_animal/hostile/carp, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"kh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/machinery/door/window/westleft{ + dir = 4 + }, +/obj/item/healthanalyzer/advanced{ + desc = "A prototype hand-held body scanner able to distinguish vital signs of the subject."; + name = "prototype health analyzer" + }, +/obj/machinery/light_construct/small{ + dir = 8 + }, +/obj/item/bodyanalyzer, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"ki" = ( +/mob/living/simple_animal/hostile/carp, +/obj/item/fish_eggs/babycarp{ + pixel_x = -16 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"kl" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"km" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"ko" = ( +/obj/structure/table_frame, +/obj/item/shard, +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_surgery1) +"kq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel/airless, +/area/template_noop) +"kr" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_surgery) +"kv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/ruin/space/ancientstation/charlie_armory) +"kw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/westleft{ + dir = 2 + }, +/obj/item/clothing/suit/space/hardsuit/ancient, +/obj/machinery/suit_storage_unit/industrial, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"kx" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"ky" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 10; + name = "Труба смешивания" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"kz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/orange{ + icon_state = "1-4" + }, +/obj/structure/cable/orange{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"kB" = ( +/obj/item/fish_eggs/babycarp{ + pixel_x = -16 + }, +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"kD" = ( +/obj/item/skeleton/r_hand, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"kF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/flag/nt, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"kH" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"kJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"kK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light_switch{ + pixel_y = -26; + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_mine) +"kL" = ( +/obj/structure/cable/orange{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"kM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/glass, +/obj/item/reagent_containers/spray/cleaner/medical, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_surgery) +"kN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/optable, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_rnd) +"kP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/reagent_containers/food/condiment/enzyme{ + layer = 5; + pixel_y = 16; + pixel_x = -6 + }, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -3; + pixel_y = 11 + }, +/obj/item/reagent_containers/food/condiment/peppermill{ + pixel_x = 3; + pixel_y = 11 + }, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_y = 2; + pixel_x = 7 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"kQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/machinery/door/airlock/vault{ + req_access = list(271) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"kR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + pixel_y = 26; + name = "botany power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"kU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/obj/structure/chair/stool, +/mob/living/simple_animal/hostile/hivebot/range, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_mine) +"kV" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/closet/crate/trashcart, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/belt/janitor, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"kW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_rnd) +"kX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"kY" = ( +/obj/machinery/smartfridge, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_kitchen) +"kZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"lc" = ( +/obj/machinery/recharge_station, +/obj/item/robot_parts/chest, +/obj/item/robot_parts/robot_component/camera, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"ld" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Hydroponics" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"le" = ( +/obj/structure/chair/sofa/left, +/turf/simulated/floor/wood{ + icon_state = "wood-broken5" + }, +/area/ruin/space/ancientstation/charlie_dininghall) +"lf" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/theta_solar) +"lg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/flashlight/lamp, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"li" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/structure/closet/l3closet/security, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"lj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/photocopier, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_restroom) +"lm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/reagent_containers/food/snacks/cereal, +/obj/item/reagent_containers/food/snacks/cereal, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"lp" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/effect/decal/straw/light, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"lq" = ( +/obj/structure/closet/crate, +/obj/item/book/manual/engineering_singularity_safety, +/obj/item/book/manual/engineering_particle_accelerator, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"lr" = ( +/mob/living/simple_animal/hostile/carp, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/template_noop) +"ls" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/showcase/machinery/oldpod, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"lt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/handheld_defibrillator{ + pixel_y = 9 + }, +/obj/item/handheld_defibrillator, +/obj/machinery/light_construct{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"lv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 26 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secrest) +"lw" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1; + scrub_Toxins = 0 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"lC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/cabinet, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/item/clothing/under/rank/bartender/skirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_restroom) +"lD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"lE" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/template_noop) +"lF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/mob/living/simple_animal/hostile/hivebot/strong, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"lG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/window/full/reinforced/tinted, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_recycler) +"lL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"lM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/cap{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"lN" = ( +/obj/item/fish_eggs/babycarp{ + pixel_y = 16; + pixel_x = 11 + }, +/obj/item/fish_eggs/babycarp{ + pixel_x = -16 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"lS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/item/crowbar, +/obj/item/flashlight/flare, +/obj/item/clothing/mask/breath, +/obj/item/tank/internals/emergency_oxygen/empty, +/obj/structure/closet/walllocker{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"lT" = ( +/obj/structure/particle_accelerator/power_box, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"lW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/ore_box, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"lY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"lZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/orange{ + icon_state = "1-2" + }, +/obj/structure/cable/orange, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"ma" = ( +/turf/template_noop, +/area/ruin/space/ancientstation/beta_surgery1) +"mb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/l3closet/security, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"mc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/medical{ + req_access = list(271); + name = "Operating room" + }, +/obj/structure/curtain/medical, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_surgery) +"md" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/showcase/machinery/oldpod, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"me" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm/old{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"mh" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_north) +"mi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/disposal/deliveryChute{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/sign/securearea{ + name = "\improper STAY CLEAR HEAVY MACHINERY"; + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"ml" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"mm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"mn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/item/megaphone, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"mo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/item/clothing/shoes/workboots, +/obj/item/clothing/gloves/color/fyellow/old, +/obj/effect/decal/remains/human, +/obj/item/card/id/away/old/eng, +/obj/item/flashlight, +/obj/item/clothing/under/retro/engineering, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"mp" = ( +/turf/simulated/mineral/random/high_chance, +/area/ruin/space/ancientstation/cowasteroid) +"mq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydroponics) +"mr" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/orange{ + icon_state = "0-8" + }, +/obj/structure/cable/orange{ + icon_state = "2-8" + }, +/turf/template_noop, +/area/template_noop) +"ms" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 5 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"mu" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"mv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/sign/poster/contraband/tools{ + pixel_x = 32 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"my" = ( +/turf/simulated/mineral/ancient, +/area/ruin/space/ancientstation/charlie_hydroroom) +"mz" = ( +/obj/machinery/door/window{ + dir = 1 + }, +/obj/machinery/conveyor{ + id = "trash" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"mC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_corridor) +"mD" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/theta_docks) +"mF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/mob/living/simple_animal/hostile/hivebot/strong, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"mI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/item/gun/energy/e_gun/old, +/obj/machinery/door/window/westleft, +/obj/machinery/recharger, +/obj/machinery/light_construct/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"mJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/canister/carbon_dioxide{ + anchored = 1 + }, +/turf/simulated/floor/engine/co2, +/area/ruin/space/ancientstation/beta_atmos) +"mK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/partial, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"mL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/stack/sheet/metal/fifty, +/obj/structure/largecrate, +/obj/item/stack/sheet/glass/fifty, +/obj/item/paintkit/firefighter_zairjah, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"mM" = ( +/obj/machinery/recharge_station, +/obj/item/robot_parts/chest, +/obj/item/robot_parts/robot_component/actuator, +/obj/item/robot_parts/robot_component/radio, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"mO" = ( +/obj/structure/lattice, +/obj/structure/transit_tube/horizontal, +/turf/template_noop, +/area/template_noop) +"mP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/ore_box, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 26 + }, +/obj/item/paintkit/firefighter_zairjah, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"mR" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_sec) +"mS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/toilet{ + dir = 8 + }, +/obj/structure/curtain/open, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_punishmentcell) +"mV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"mW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/structure/bedsheetbin, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_restroom) +"nb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/door_control{ + id = "ancient"; + name = "Charlie Station Lockdown Button" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"nf" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secintel) +"ng" = ( +/obj/item/skeleton/head, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"ni" = ( +/obj/structure/lattice, +/obj/item/stack/sheet/metal, +/turf/template_noop, +/area/template_noop) +"nj" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/simulated/floor/wood{ + broken = 1; + icon_state = "wood-broken" + }, +/area/ruin/space/ancientstation/charlie_dininghall) +"nk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_surgery) +"nl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"nn" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/machinery/atmospherics/pipe/simple/visible/supply, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/atmos, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"nr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/machinery/door/window/westleft{ + dir = 4 + }, +/obj/item/reagent_scanner{ + pixel_y = 13; + pixel_x = -8 + }, +/obj/item/reagent_scanner{ + pixel_y = 13 + }, +/obj/item/reagent_scanner{ + pixel_y = 13; + pixel_x = 8 + }, +/obj/item/roller{ + pixel_y = 1; + pixel_x = 6 + }, +/obj/item/roller{ + pixel_y = 1; + pixel_x = -8 + }, +/obj/item/roller{ + pixel_y = 7; + pixel_x = -2 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"nt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance/double, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"nu" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 8; + name = "Труба смешивания" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"nv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/trinary/filter{ + desc = "Отфильтровывает углекислый газ из трубы и отправляет его в камеру хранения"; + filter_type = 3; + name = "Фильтр Углекислого Газа (СO2)"; + on = 1; + target_pressure = 4500; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"ny" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/template_noop) +"nB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/tile/plasteel, +/turf/simulated/floor/plating, +/area/template_noop) +"nD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_surgery) +"nF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/camera_assembly, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"nI" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/obj/structure/cable/orange{ + icon_state = "1-8" + }, +/turf/template_noop, +/area/template_noop) +"nJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/science{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"nM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_restroom) +"nN" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/mug/serv, +/obj/item/reagent_containers/food/drinks/mug, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"nQ" = ( +/mob/living/simple_animal/hostile/hivebot/rapid, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"nS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/constructable_frame/machine_frame, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"nU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + pixel_y = 26; + name = "botany power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"nX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"nY" = ( +/obj/item/shard{ + icon_state = "medium"; + pixel_x = -7; + pixel_y = -10 + }, +/turf/template_noop, +/area/template_noop) +"nZ" = ( +/obj/structure/flora/ausbushes/grassybush, +/turf/simulated/floor/plating/asteroid/ancient, +/area/ruin/space/ancientstation/charlie_hydroroom) +"oa" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"ob" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"oe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4; + initialize_directions = 11 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_north) +"og" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_north) +"oi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/trashcart, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"oj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/folder/blue, +/obj/item/folder/blue, +/obj/item/paper_bin, +/obj/item/pen/red, +/obj/item/pen/gray, +/obj/item/pen/blue, +/obj/item/pen, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"ol" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"on" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer{ + desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; + dir = 8; + name = "Broken Computer" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_warden) +"oo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/mob/living/simple_animal/hostile/hivebot/rapid, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"or" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/ruin/space/ancientstation/charlie_comm) +"ot" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"ou" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"ov" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/chem_master, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "purplefull" + }, +/area/ruin/space/ancientstation/theta_rnd) +"ow" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 10; + name = "Труба смешивания" + }, +/obj/machinery/alarm/old{ + pixel_y = 26 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"ox" = ( +/obj/structure/sign/mining, +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/theta_mine) +"oA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"oB" = ( +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/template_noop) +"oC" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_comm) +"oD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/binary/pump/on{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"oE" = ( +/obj/effect/spawner/random_spawners/grille_50, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"oF" = ( +/obj/structure/flora/ausbushes/grassybush, +/turf/simulated/floor/plating/asteroid/ancient, +/area/ruin/space/ancientstation/cowasteroid) +"oI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"oJ" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/orange{ + icon_state = "1-4" + }, +/obj/structure/cable/orange{ + icon_state = "0-8" + }, +/turf/template_noop, +/area/template_noop) +"oL" = ( +/obj/item/fish_eggs/babycarp{ + pixel_y = 16 + }, +/obj/item/fish_eggs/babycarp{ + pixel_y = 16; + pixel_x = -9 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"oN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"oO" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/theta_proto) +"oP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/cell_charger, +/turf/simulated/floor/plasteel{ + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_warden) +"oQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/alarm/old{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"oR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"oT" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/hivebot) +"oV" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 6; + name = "Труба смешивания" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"oY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4; + initialize_directions = 11 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"oZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"pa" = ( +/obj/item/robot_parts/l_leg, +/obj/structure/closet/crate, +/obj/item/toy/nuke, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"pb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/glass, +/obj/item/surgical_drapes, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_surgery) +"pe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 4; + name = "Труба смешивания" + }, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"pf" = ( +/obj/item/shard{ + icon_state = "medium"; + pixel_x = -7; + pixel_y = -10 + }, +/obj/effect/spawner/random_spawners/grille_13, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"pg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_prison) +"pi" = ( +/obj/item/fish_eggs/babycarp{ + pixel_y = 16; + pixel_x = -9 + }, +/obj/item/fish_eggs/babycarp{ + pixel_x = -16 + }, +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"pk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/westleft{ + dir = 4 + }, +/obj/item/paper/fluff/ruins/oldstation/protosuit, +/obj/item/paper/fluff/ruins/oldstation/protosing, +/obj/item/paper/fluff/ruins/oldstation/protohealth, +/obj/item/paper/fluff/ruins/oldstation/protogun, +/obj/item/paper/ruins/oldstation/prototesla, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"pm" = ( +/obj/structure/closet/crate/engineering{ + name = "plasma tank crate" + }, +/obj/item/pod_parts/core, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"po" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_prison) +"pp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_punishmentcell) +"pq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"pr" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/template_noop, +/area/template_noop) +"ps" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc{ + name = "bridge power controller"; + pixel_y = -25; + dir = 1; + report_power_alarm = 0; + start_charge = 0 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"pw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/mask/gas, +/obj/item/tank/jetpack/void, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"px" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/atmos, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"py" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/water_cooler, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_restroom) +"pz" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 4; + name = "Труба смешивания" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"pA" = ( +/turf/simulated/wall, +/area/ruin/space/ancientstation/beta_surgery1) +"pB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/flashlight/lamp, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/ruin/space/ancientstation/charlie_warden) +"pC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sink{ + dir = 1; + layer = 5; + pixel_y = -5 + }, +/obj/machinery/light_construct/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_rnd) +"pD" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_secintel) +"pE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb2, +/obj/item/flag/nt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_warden) +"pF" = ( +/obj/effect/decal/straw/medium, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plating/asteroid, +/area/ruin/space/ancientstation/charlie_hydroroom) +"pG" = ( +/obj/item/stack/sheet/mineral/plasma{ + amount = 25 + }, +/obj/item/stack/sheet/mineral/uranium{ + amount = 25 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_rnd) +"pI" = ( +/obj/structure/table_frame, +/obj/item/shard, +/obj/item/shard{ + icon_state = "medium"; + pixel_x = 9; + pixel_y = -9 + }, +/obj/machinery/light_construct{ + dir = 4 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_surgery1) +"pK" = ( +/obj/structure/closet/crate/can, +/obj/item/storage/bag/trash, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"pL" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/template_noop) +"pM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"pN" = ( +/obj/structure/pianoclassic, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"pP" = ( +/obj/effect/spawner/random_spawners/grille_50, +/obj/item/shard, +/obj/item/shard{ + icon_state = "medium"; + pixel_x = 9; + pixel_y = -9 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/ruin/space/ancientstation/charlie_hydroroom) +"pS" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 1; + name = "Труба фильтрации" + }, +/turf/template_noop, +/area/ruin/space/ancientstation/beta_atmos) +"pV" = ( +/obj/machinery/alarm/old{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"pX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"pY" = ( +/obj/machinery/field/generator, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"qb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_construct/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"qc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/public/glass, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secrest) +"qd" = ( +/obj/item/stock_parts/manipulator, +/turf/template_noop, +/area/template_noop) +"qe" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable/orange{ + icon_state = "0-2" + }, +/obj/structure/cable/orange{ + icon_state = "1-2" + }, +/mob/living/simple_animal/hostile/hivebot/range, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"qf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/obj/effect/decal/warning_stripes/yellow/hollow, +/mob/living/simple_animal/hostile/hivebot/range, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"qh" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"qi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/ruin/space/ancientstation/charlie_sec) +"qj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "redcorner" + }, +/area/ruin/space/ancientstation/charlie_sec) +"qk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/light_switch{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"qm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + color = "red"; + dir = 4 + }, +/obj/item/gun/projectile/shotgun{ + name = "Remington 871M" + }, +/obj/structure/closet/secure_closet/guncabinet{ + req_access = list(271) + }, +/obj/item/gun/projectile/shotgun{ + name = "Remington 871M" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"qo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 26 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_warden) +"qs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/clothing/head/hardhat, +/obj/item/tank/internals/emergency_oxygen/empty, +/obj/item/extinguisher, +/obj/structure/closet, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"qv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_punishmentcell) +"qw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/science{ + name = "Research and Development" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "ramptop" + }, +/area/ruin/space/ancientstation/theta_solar) +"qy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4; + initialize_directions = 11 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"qz" = ( +/obj/structure/showcase/machinery/oldpod, +/turf/simulated/floor/plasteel/airless{ + icon_state = "titanium_dam1" + }, +/area/template_noop) +"qB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/camera_film, +/obj/item/camera, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_restroom) +"qC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"qE" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_exit) +"qF" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"qI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"qJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"qK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"qL" = ( +/obj/structure/nest/carppuppy, +/obj/item/fish_eggs/babycarp{ + pixel_x = 16 + }, +/obj/item/fish_eggs/babycarp{ + pixel_y = 16; + pixel_x = 11 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"qM" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/ruin/space/ancientstation/charlie_armory) +"qN" = ( +/obj/structure/cable/orange{ + icon_state = "1-4" + }, +/obj/structure/cable/orange{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"qQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/storage/box/lights/mixed, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"qS" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Dining Hall" + }, +/turf/simulated/floor/wood{ + icon_state = "wood-broken" + }, +/area/ruin/space/ancientstation/charlie_dininghall) +"qU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"qV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/theta_docks) +"qW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/template_noop) +"qX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/girder, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"rb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secrest) +"re" = ( +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue"; + dir = 8 + }, +/area/template_noop) +"rf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch{ + pixel_y = -26; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_exit) +"rh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock{ + name = "Hydroponics" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating/asteroid, +/area/ruin/space/ancientstation/charlie_hydroroom) +"rj" = ( +/obj/machinery/power/smes, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"rk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/ruin/space/ancientstation/charlie_comm) +"rl" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 4; + name = "Труба дыхательной смеси" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"rm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/item/crowbar, +/obj/item/clothing/mask/breath, +/obj/item/tank/internals/emergency_oxygen, +/obj/structure/closet/walllocker{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"ro" = ( +/obj/structure/closet/crate/trashcart, +/obj/effect/decal/cleanable/dirt, +/obj/item/camera_assembly, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"rp" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_restroom) +"ru" = ( +/obj/effect/spawner/random_spawners/grille_50, +/obj/item/shard{ + icon_state = "medium"; + pixel_x = -7; + pixel_y = -10 + }, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"rv" = ( +/obj/structure/closet, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/item/clothing/under/retro/science, +/obj/item/card/id/away/old/mechatron{ + access = list(29,70) + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_solar) +"rx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/mob/living/simple_animal/hostile/hivebot/range, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_warden) +"ry" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1; + scrub_Toxins = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"rz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "browncorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"rA" = ( +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_cryo) +"rB" = ( +/obj/structure/sink/puddle, +/obj/structure/flora/ausbushes/reedbush, +/obj/machinery/light_construct/small{ + dir = 8 + }, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"rD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/engineering/electrical, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"rE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/crate, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1; + scrub_Toxins = 0 + }, +/obj/item/spacepod_equipment/cargo/ore, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"rF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/north, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/ancientstation/theta_rnd) +"rH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/soap/nanotrasen, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"rL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/crate, +/obj/machinery/light_construct/small, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"rM" = ( +/mob/living/simple_animal/cow, +/turf/simulated/floor/plating/asteroid/ancient, +/area/ruin/space/ancientstation/cowasteroid) +"rO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_north) +"rS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 26 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"rU" = ( +/turf/simulated/wall, +/area/ruin/space/ancientstation/theta_docks) +"rV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"rW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_restroom) +"rZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/item/clothing/head/helmet/old, +/obj/item/clothing/suit/armor/vest/old, +/obj/item/storage/backpack/old, +/obj/item/clothing/under/retro/security, +/obj/item/melee/baton, +/obj/item/clothing/glasses/sunglasses, +/obj/item/flash, +/obj/item/clothing/shoes/jackboots/cross, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"sc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"sd" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor_switch{ + id = "trash" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"sg" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/mopbucket, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"si" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/book/manual/security_space_law, +/obj/machinery/alarm/old{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"sj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/machinery/door/airlock/command, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"sl" = ( +/turf/simulated/wall/r_wall/rust, +/area/ruin/space/ancientstation/theta_experi) +"sn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/obj/structure/ore_box, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"so" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno, +/obj/item/reagent_containers/food/snacks/monstermeat/xenomeat, +/turf/simulated/floor/plating/asteroid/ancient, +/area/ruin/space/ancientstation/cowasteroid) +"sp" = ( +/obj/item/mop, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"sr" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrivalcorner" + }, +/area/ruin/space/ancientstation/charlie_comm) +"st" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light_construct, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"su" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/floodlight, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"sv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"sA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"sB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/item/clothing/under/retro/science, +/obj/item/storage/backpack/old, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_solar) +"sD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/chem_heater, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "purplefull" + }, +/area/ruin/space/ancientstation/theta_rnd) +"sE" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/beta_surgery) +"sI" = ( +/obj/structure/table/wood, +/obj/item/newspaper, +/obj/item/storage/ashtray/glass, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"sK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"sL" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/orange{ + icon_state = "0-8" + }, +/obj/structure/cable/orange{ + icon_state = "1-8" + }, +/turf/template_noop, +/area/template_noop) +"sM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/stack/sheet/metal/fifty, +/obj/structure/largecrate, +/obj/item/stack/sheet/glass/fifty, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"sO" = ( +/obj/machinery/door/airlock/highsecurity, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/hivebot) +"sQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/disposal/deliveryChute{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"sR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/cap, +/obj/machinery/light_construct/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"sT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"sU" = ( +/obj/structure/particle_accelerator/particle_emitter/right, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"sV" = ( +/mob/living/simple_animal/hostile/carp, +/obj/item/fish_eggs/babycarp{ + pixel_y = 16 + }, +/obj/item/fish_eggs/babycarp{ + pixel_y = 16; + pixel_x = -9 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"sY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/westleft{ + dir = 2 + }, +/obj/effect/decal/warning_stripes/south, +/mob/living/simple_animal/hostile/hivebot/strong, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/ancientstation/theta_rnd) +"sZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydroponics) +"ta" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/extinguisher, +/obj/item/clothing/head/hardhat, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"tb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm/old{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"te" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26; + name = "technical room power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_exit) +"tg" = ( +/obj/machinery/power/port_gen/pacman/mrs, +/obj/structure/cable/orange{ + icon_state = "0-8" + }, +/obj/item/stack/sheet/mineral/diamond, +/obj/item/stack/sheet/mineral/diamond, +/obj/item/stack/sheet/mineral/diamond, +/obj/item/stack/sheet/mineral/diamond, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"ti" = ( +/obj/machinery/recharge_station, +/obj/item/robot_parts/chest, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"tn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/cap{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"tp" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/ruin/space/ancientstation/charlie_sec) +"tq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"tr" = ( +/obj/machinery/atmospherics/binary/volume_pump, +/obj/machinery/light_construct/small{ + dir = 8 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"ts" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_restroom) +"tt" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom" + }, +/area/ruin/space/ancientstation/theta_docks) +"tu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/clothing/gloves/color/fyellow/old, +/obj/item/clothing/gloves/color/fyellow/old, +/obj/item/storage/backpack/old, +/obj/item/storage/backpack/old, +/obj/item/card/id/away/old/midengi, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"tv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/glass, +/obj/item/folder/white, +/obj/item/flashlight/pen, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_surgery) +"tw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/seeds/cucumber, +/obj/item/seeds/cucumber, +/obj/item/seeds/cucumber, +/obj/item/seeds/tomato, +/obj/item/seeds/tomato, +/obj/item/seeds/tomato, +/obj/item/seeds/wheat, +/obj/item/seeds/wheat, +/obj/item/seeds/wheat, +/obj/item/seeds/wheat/meat, +/obj/item/seeds/wheat/meat, +/obj/item/seeds/wheat/meat, +/obj/item/seeds/wheat/rice, +/obj/item/seeds/wheat/rice, +/obj/item/seeds/wheat/rice, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"ty" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/shard{ + icon_state = "medium"; + pixel_x = -7; + pixel_y = -10 + }, +/obj/item/shard, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"tB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"tD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/washing_machine, +/obj/machinery/light_construct/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"tE" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"tI" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_surgery1) +"tK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 1; + name = "Труба смешивания" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"tL" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable/orange, +/obj/structure/cable/orange{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"tM" = ( +/obj/structure/nest/carppuppy, +/obj/item/fish_eggs/babycarp{ + pixel_y = 16; + pixel_x = -9 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"tN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"tO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + pixel_y = 26; + name = "gas module power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"tQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/mob/living/simple_animal/hostile/hivebot/rapid, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"tR" = ( +/obj/machinery/particle_accelerator/control_box, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"tS" = ( +/obj/structure/chair/wood{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"tU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"tW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"tZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mob_spawn/human/oldstation/oldsec, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"uc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/highsecurity{ + name = "Prototype Laboratory"; + req_access = list(271) + }, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_proto) +"ug" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/freezer{ + name = "Toilet airlock" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_restroom) +"ul" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/beta_medstorage) +"un" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue"; + dir = 4 + }, +/area/template_noop) +"uo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_rnd) +"up" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/obj/structure/cable/orange{ + icon_state = "2-4" + }, +/turf/template_noop, +/area/template_noop) +"uq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm/old{ + pixel_y = 26 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"ur" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/structure/closet, +/obj/item/clothing/head/helmet/old, +/obj/item/clothing/suit/armor/vest/old, +/obj/item/storage/backpack/old, +/obj/item/clothing/under/retro/security, +/obj/item/melee/baton, +/obj/item/clothing/glasses/sunglasses, +/obj/item/flash, +/obj/item/clothing/shoes/jackboots/cross, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"us" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm/old{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"ut" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/crate, +/obj/item/spacepod_equipment/sec_cargo/chair, +/obj/item/spacepod_equipment/sec_cargo/chair, +/obj/item/spacepod_equipment/sec_cargo/loot_box, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"uw" = ( +/obj/structure/flora/rock, +/turf/simulated/floor/plating/asteroid/ancient, +/area/ruin/space/ancientstation/charlie_hydroroom) +"uy" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"uA" = ( +/obj/machinery/optable, +/obj/machinery/shower{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_surgery1) +"uB" = ( +/turf/simulated/wall, +/area/ruin/space/ancientstation/hivebot) +"uC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + name = "Dormatoriums" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_restroom) +"uD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/glass, +/obj/item/storage/toolbox/surgery, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_surgery) +"uF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"uH" = ( +/obj/effect/decal/remains/mouse, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"uI" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine, +/area/ruin/space/ancientstation/theta_experi) +"uJ" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"uK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Cryogenic" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"uM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/westleft{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/closet/crate/medical, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"uN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26; + name = "botany room power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plating/asteroid, +/area/ruin/space/ancientstation/charlie_hydroroom) +"uO" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 1; + name = "Труба смешивания" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"uQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced, +/obj/effect/decal/warning_stripes/southwest, +/obj/machinery/r_n_d/circuit_imprinter, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/ancientstation/theta_rnd) +"uR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/machinery/r_n_d/circuit_imprinter, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"uT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light_construct/small{ + dir = 4 + }, +/obj/machinery/alarm/old{ + dir = 8; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"uU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/head/hardhat, +/obj/structure/railing/corner, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"uV" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/beta_surgery1) +"uY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/optable, +/obj/machinery/shower{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_surgery) +"uZ" = ( +/obj/structure/sign/mining, +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/theta_storage) +"va" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_north) +"vb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"vi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/recharge_station, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"vj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_punishmentcell) +"vk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"vl" = ( +/mob/living/simple_animal/hostile/carp/koi, +/turf/template_noop, +/area/ruin/space/ancientstation/beta_surgery1) +"vm" = ( +/mob/living/simple_animal/hostile/carp, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"vn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/circuitboard/smes/vintage, +/obj/machinery/constructable_frame/machine_frame, +/obj/item/stock_parts/cell/upgraded, +/obj/item/stock_parts/cell/upgraded, +/obj/item/stock_parts/cell/upgraded, +/obj/item/stock_parts/cell/upgraded, +/obj/item/broken_device, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"vp" = ( +/obj/item/shard{ + icon_state = "medium"; + pixel_x = 9; + pixel_y = -9 + }, +/turf/template_noop, +/area/template_noop) +"vr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 6; + name = "Труба дыхательной смеси" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"vs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_solar) +"vt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_warden) +"vv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"vw" = ( +/obj/structure/closet/crate, +/obj/item/clothing/under/soviet, +/obj/item/vending_refill/sovietsoda, +/obj/item/decorations/flag/soviet, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"vx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/obj/structure/spacepod_frame, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"vy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/hydroponics/constructable, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydroponics) +"vA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/cap, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"vB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/westleft{ + dir = 4 + }, +/obj/structure/closet/crate/medical, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"vF" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"vG" = ( +/obj/item/scalpel, +/turf/template_noop, +/area/template_noop) +"vH" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"vI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel/airless, +/area/template_noop) +"vJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/light_switch{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"vK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/mob_spawn/human/oldstation/oldeng, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"vM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/mech_bay_recharge_port{ + dir = 2 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"vO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_north) +"vP" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable/orange{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"vR" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"vS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = list(271) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"vW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/light_switch{ + pixel_y = -26; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"vX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"vZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/disposal/deliveryChute{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk, +/obj/structure/sign/securearea{ + name = "\improper STAY CLEAR HEAVY MACHINERY"; + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"wa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/partial, +/obj/item/pod_parts/pod_frame/aft_starboard, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"wc" = ( +/obj/item/paper/fluff/ruins/oldstation{ + pixel_y = 3 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"wd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"wf" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue"; + dir = 4 + }, +/area/template_noop) +"wh" = ( +/obj/effect/decal/ants, +/turf/simulated/floor/plating/asteroid/ancient, +/area/ruin/space/ancientstation/charlie_hydroroom) +"wj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/cable/orange{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"wk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/science{ + name = "Research and Development" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/ruin/space/ancientstation/theta_rnd) +"wl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"wm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"wn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/showcase/machinery/oldpod, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"wo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/shower{ + dir = 8 + }, +/obj/item/soap/nanotrasen, +/obj/structure/curtain/open, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_restroom) +"wp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/dinnerware/old, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"wq" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_rnd) +"ws" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/item/clothing/ears/earmuffs, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/cable/orange{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"wt" = ( +/mob/living/simple_animal/hostile/carp, +/obj/item/stack/rods{ + amount = 3 + }, +/turf/template_noop, +/area/template_noop) +"wv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/template_noop) +"ww" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/medical{ + req_access = list(271); + name = "Medical Storage" + }, +/obj/structure/curtain/medical, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"wx" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_hydroponics) +"wy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secintel) +"wz" = ( +/obj/structure/flora/ausbushes/grassybush, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"wA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"wD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/light_switch{ + pixel_y = -26; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"wE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"wF" = ( +/obj/item/shard{ + icon_state = "medium"; + pixel_x = 9; + pixel_y = -9 + }, +/obj/machinery/light_construct/small{ + dir = 8 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"wG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor{ + id = "oreredemp"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"wH" = ( +/turf/simulated/mineral/random, +/area/space/nearstation) +"wI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/atmos/glass, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"wJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sink/kitchen{ + pixel_y = 22 + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"wL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 4; + name = "Труба фильтрации" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"wM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood, +/obj/item/card/id/away/old/sec, +/obj/item/clothing/head/helmet/old, +/obj/item/storage/backpack/old, +/obj/item/clothing/suit/armor/vest/old, +/obj/item/clothing/under/retro/security, +/obj/item/melee/baton, +/obj/item/clothing/glasses/sunglasses, +/obj/item/flash, +/obj/item/clothing/shoes/jackboots/cross, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"wP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/filingcabinet/chestdrawer, +/obj/item/camera_assembly, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_warden) +"wS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_rnd) +"wT" = ( +/turf/simulated/wall, +/area/template_noop) +"wU" = ( +/obj/item/fish_eggs/babycarp{ + pixel_y = 16 + }, +/obj/item/fish_eggs/babycarp{ + pixel_x = 16 + }, +/obj/item/fish_eggs/babycarp{ + pixel_y = 16; + pixel_x = -9 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"wV" = ( +/obj/item/fish_eggs/babycarp{ + pixel_y = 16 + }, +/obj/item/fish_eggs/babycarp{ + pixel_y = 16; + pixel_x = 11 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"wW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/oil, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_rnd) +"wX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light/small, +/obj/machinery/light_switch{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"wY" = ( +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/hivebot) +"wZ" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_secrest) +"xa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_prison) +"xb" = ( +/obj/effect/decal/straw/edge, +/turf/simulated/floor/plating/asteroid, +/area/ruin/space/ancientstation/charlie_hydroroom) +"xd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"xf" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_surgery) +"xh" = ( +/turf/simulated/mineral/iron, +/area/template_noop) +"xk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/extinguisher, +/turf/simulated/floor/plasteel{ + icon_state = "redfull" + }, +/area/ruin/space/ancientstation/charlie_sec) +"xl" = ( +/mob/living/simple_animal/hostile/hivebot, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"xm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/mob/living/simple_animal/hostile/hivebot/strong, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"xn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/station, +/obj/structure/transit_tube_pod{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"xp" = ( +/obj/machinery/recharge_station, +/obj/item/robot_parts/r_arm, +/obj/item/robot_parts/robot_component/actuator, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"xs" = ( +/obj/structure/nest/carppuppy, +/obj/item/fish_eggs/babycarp{ + pixel_x = 16 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"xu" = ( +/obj/item/stack/rods{ + amount = 3 + }, +/turf/template_noop, +/area/template_noop) +"xv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm/old{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"xw" = ( +/obj/structure/curtain/open/shower, +/turf/template_noop, +/area/template_noop) +"xx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 4; + name = "Труба смешивания" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"xA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = list(271) + }, +/obj/structure/cable/orange{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"xB" = ( +/obj/item/fish_eggs/babycarp{ + pixel_y = 16; + pixel_x = 11 + }, +/obj/item/fish_eggs/babycarp{ + pixel_x = 16 + }, +/obj/item/fish_eggs/babycarp{ + pixel_y = 16; + pixel_x = -9 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"xD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/airless, +/area/template_noop) +"xF" = ( +/obj/item/flashlight/pen, +/turf/template_noop, +/area/template_noop) +"xG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26; + name = "storage power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"xI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/safe/floor{ + known_by = list("theta") + }, +/obj/item/areaeditor/create_area_only/theta, +/obj/item/ammo_box/magazine/enforcer/lethal, +/obj/item/ammo_box/magazine/enforcer/lethal, +/obj/item/ammo_box/magazine/enforcer, +/obj/item/ammo_box/magazine/enforcer, +/obj/item/circuitboard/holopad, +/obj/item/gun/projectile/automatic/pistol/enforcer{ + name = "Glock 25"; + desc = "Rare weapon, engraving reads: Command with style! To the best captain of NRS ABOTC." + }, +/obj/structure/window/reinforced, +/obj/item/clothing/head/helmet/space/nasavoid/captain, +/obj/item/clothing/suit/space/nasavoid/ntblue, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"xJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel/airless, +/area/template_noop) +"xK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb2, +/obj/machinery/computer{ + desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; + dir = 8; + name = "Broken Computer" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"xM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"xN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/science{ + name = "Research and Development" + }, +/turf/simulated/floor/plasteel{ + icon_state = "whitepurple" + }, +/area/ruin/space/ancientstation/theta_docks) +"xP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + pixel_y = -26; + name = "kitchen power controller"; + dir = 1; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_kitchen) +"xQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"xR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_restroom) +"xS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/kitchen/knife/plastic, +/obj/item/kitchen/knife/plastic, +/obj/item/kitchen/knife/plastic, +/obj/item/kitchen/knife/plastic, +/obj/item/kitchen/knife/plastic, +/obj/item/kitchen/utensil/pspoon, +/obj/item/kitchen/utensil/pspoon, +/obj/item/kitchen/utensil/pspoon, +/obj/item/kitchen/utensil/pspoon, +/obj/item/kitchen/utensil/pspoon, +/obj/item/kitchen/utensil/pspork, +/obj/item/kitchen/utensil/pspork, +/obj/item/kitchen/utensil/pspork, +/obj/item/kitchen/utensil/pspork, +/obj/item/kitchen/utensil/pspork, +/obj/item/kitchen/rollingpin, +/obj/item/reagent_containers/glass/rag, +/obj/item/flashlight/lamp, +/obj/item/storage/belt/chef, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"xT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/machinery/door/airlock/security/glass{ + name = "prisoner's cell" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_prison) +"xU" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"xW" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "redcorner" + }, +/area/ruin/space/ancientstation/charlie_sec) +"xY" = ( +/obj/structure/window/full/basic, +/turf/simulated/floor/grass, +/area/template_noop) +"yc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/machinery/door/airlock/security/glass{ + name = "prisoner's cell" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_prison) +"yf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_north) +"yj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/flag/nt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"yl" = ( +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_surgery1) +"ym" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_restroom) +"yo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"yp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Hydroponics" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydroponics) +"yq" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/hivebot/tele, +/obj/machinery/light_construct/small, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secintel) +"yt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/item/clothing/under/retro/science, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_solar) +"yu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer{ + desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; + dir = 8; + name = "Broken Computer" + }, +/obj/item/paper/fluff/ruins/oldstation, +/obj/item/paper/fluff/ruins/oldstation{ + pixel_y = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"yy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/light_construct/small{ + dir = 1 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_prison) +"yz" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"yA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/security/glass{ + name = "Prison Corridor" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"yB" = ( +/obj/item/stack/tile/plasteel, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"yE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/cigarette/free, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"yF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/cap{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"yG" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + pixel_y = 26; + name = "surgical operating power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue"; + dir = 1 + }, +/area/ruin/space/ancientstation/beta_surgery1) +"yI" = ( +/obj/effect/decal/remains/human, +/obj/item/clothing/suit/space/nasavoid/yellow, +/obj/item/clothing/head/helmet/space/nasavoid/yellow, +/obj/item/tank/jetpack/void, +/obj/item/mining_scanner{ + desc = "A scanner that checks surrounding rock for useful minerals, click the button to scan the area around; it can also be used to stop gibtonite detonations. Wear material scanners for optimal results." + }, +/obj/item/storage/bag/ore/bigger, +/obj/item/clothing/shoes/workboots/mining, +/obj/item/clothing/mask/gas/explorer, +/obj/item/clothing/under/rank/miner, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"yK" = ( +/obj/structure/sign/poster/official/cleanliness{ + pixel_x = -32 + }, +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + id = "trash" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"yL" = ( +/obj/effect/spawner/random_spawners/fungus_70, +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_recycler) +"yM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secrest) +"yN" = ( +/obj/structure/particle_accelerator/particle_emitter/left, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"yO" = ( +/obj/machinery/vending/coffee/free, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"yP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor{ + id = "oreredemp"; + dir = 5 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"yQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_cryo) +"yT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"yU" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_dininghall) +"yV" = ( +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/template_noop) +"yX" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/transit_tube/horizontal{ + dir = 1 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"yY" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"za" = ( +/obj/item/camera_assembly, +/obj/effect/decal/straw/edge{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"zc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"zd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/outlet_injector/on{ + dir = 8 + }, +/turf/simulated/floor/engine/co2, +/area/ruin/space/ancientstation/beta_atmos) +"ze" = ( +/obj/effect/decal/remains/robot, +/mob/living/simple_animal/hostile/hivebot/range, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"zf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "browncorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"zg" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/effect/decal/straw/medium, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"zh" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 8 + }, +/obj/machinery/atmospherics/meter, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"zi" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/ancientstation/charlie_recycler) +"zj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"zm" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/simulated/floor/plating/asteroid, +/area/ruin/space/ancientstation/charlie_hydroroom) +"zn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/papershredder, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"zo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"zq" = ( +/obj/structure/chair/sofa/right, +/obj/machinery/light/small, +/turf/simulated/floor/wood{ + broken = 1; + icon_state = "wood-broken" + }, +/area/ruin/space/ancientstation/charlie_dininghall) +"zr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/closet/crate/can, +/obj/item/storage/bag/trash, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"zt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/flag/nt, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"zu" = ( +/mob/living/simple_animal/hostile/hivebot/strong, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"zv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydroponics) +"zy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_north) +"zz" = ( +/obj/structure/chair/sofa, +/obj/item/toy/plushie/black_cat, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"zA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_construct/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/ruin/space/ancientstation/charlie_sec) +"zC" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/curtain/medical, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_surgery1) +"zD" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"zE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"zF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 8; + external_pressure_bound = 0; + external_pressure_bound_default = 0; + frequency = 1441; + id_tag = "n2_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + internal_pressure_bound_default = 4000; + name = "n2 vent"; + on = 1; + pressure_checks = 2; + pressure_checks_default = 2; + releasing = 0 + }, +/turf/simulated/floor/engine/n2, +/area/ruin/space/ancientstation/beta_atmos) +"zH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/reagent_containers/spray/pestspray, +/obj/item/reagent_containers/spray/pestspray, +/obj/item/reagent_containers/spray/weedspray, +/obj/item/reagent_containers/spray/weedspray, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"zI" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"zJ" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_north) +"zK" = ( +/obj/item/twohanded/spear/grey_tide, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"zL" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/mech_bay_recharge_floor, +/area/ruin/space/ancientstation/theta_docks) +"zN" = ( +/turf/simulated/floor/plating/asteroid, +/area/ruin/space/ancientstation/charlie_hydroroom) +"zO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/cap{ + dir = 4 + }, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"zQ" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_recycler) +"zU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/camera_assembly, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"zW" = ( +/mob/living/simple_animal/hostile/carp, +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"zX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"zY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydroponics) +"Ab" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"Ad" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm/old{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_prison) +"Ae" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/mob/living/simple_animal/hostile/hivebot/range, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"Af" = ( +/obj/structure/closet/crate, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"Ag" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"Ah" = ( +/obj/structure/particle_accelerator/end_cap, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"Ai" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mob_spawn/human/oldstation/oldmed{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"Al" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/smes/vintage, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"Am" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/canister/oxygen{ + anchored = 1 + }, +/turf/simulated/floor/engine/o2, +/area/ruin/space/ancientstation/beta_atmos) +"An" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine/n2, +/area/ruin/space/ancientstation/beta_atmos) +"Ao" = ( +/turf/simulated/floor/plasteel/airless{ + icon_state = "titanium_dam3" + }, +/area/template_noop) +"Ap" = ( +/obj/structure/grille/broken, +/obj/item/shard{ + icon_state = "medium"; + pixel_x = -7; + pixel_y = -10 + }, +/obj/item/shard{ + icon_state = "medium" + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"Ar" = ( +/obj/structure/particle_accelerator/particle_emitter/center, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"As" = ( +/obj/structure/closet/crate/can, +/obj/item/trash/gum, +/obj/item/trash/tastybread, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"At" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/partial, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"Av" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_restroom) +"Ay" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet{ + custom_door_overlay = "white"; + name = "Medical gear"; + opened = 1 + }, +/obj/item/storage/belt/medical, +/obj/item/clothing/under/retro/medical, +/obj/item/clothing/under/retro/medical, +/obj/item/clothing/suit/storage/labcoat/fluff, +/obj/item/clothing/suit/storage/labcoat/fluff, +/obj/item/clothing/suit/storage/labcoat/emt, +/obj/item/clothing/accessory/armband/med, +/obj/item/clothing/accessory/blue, +/obj/item/clothing/shoes/white, +/obj/item/clothing/shoes/white, +/obj/item/clothing/head/helmet/space/nasavoid/ltblue, +/obj/item/clothing/suit/space/nasavoid/ltblue, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"Az" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel/airless, +/area/template_noop) +"AA" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_x = -32 + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"AB" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/orange{ + icon_state = "1-4" + }, +/obj/structure/cable/orange{ + icon_state = "0-4" + }, +/turf/template_noop, +/area/template_noop) +"AC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/command, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"AF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/security{ + name = "Control room" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"AG" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"AK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 8; + external_pressure_bound = 0; + external_pressure_bound_default = 0; + frequency = 1441; + id_tag = "co2_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + internal_pressure_bound_default = 4000; + layer = 2.4; + name = "co2 vent"; + on = 1; + pressure_checks = 2; + pressure_checks_default = 2; + releasing = 0 + }, +/turf/simulated/floor/engine/co2, +/area/ruin/space/ancientstation/beta_atmos) +"AL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + color = "red"; + dir = 4 + }, +/obj/structure/closet/secure_closet/guncabinet{ + req_access = list(271) + }, +/obj/item/gun/energy/laser/retro/old, +/obj/item/gun/energy/laser/retro/old, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/ruin/space/ancientstation/charlie_armory) +"AM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/cap, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"AN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/can, +/obj/item/storage/bag/trash, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"AP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/taperecorder, +/obj/item/tape, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"AQ" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 4; + name = "Труба смешивания" + }, +/turf/template_noop, +/area/ruin/space/ancientstation/beta_atmos) +"AT" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue"; + dir = 8 + }, +/area/template_noop) +"AV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/mob_spawn/human/oldstation/oldeng, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"AW" = ( +/obj/item/stack/tile/plasteel, +/turf/template_noop, +/area/template_noop) +"AX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 1; + name = "Труба смешивания" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"AY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/shoes/workboots, +/obj/effect/decal/remains/human, +/obj/item/card/id/away/old/eng, +/obj/item/storage/belt/utility, +/obj/item/clothing/gloves/color/fyellow/old, +/obj/item/storage/backpack/old, +/obj/structure/cable/orange{ + icon_state = "1-8" + }, +/obj/item/clothing/under/retro/engineering, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"AZ" = ( +/obj/item/toy/plushie/hampter/janitor, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"Ba" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_solar) +"Bb" = ( +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"Bd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"Be" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = list(271) + }, +/obj/structure/cable/orange{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"Bf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_rnd) +"Bh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/hand_labeler, +/obj/item/storage/box/evidence, +/obj/item/pen, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"Bi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_construct/small, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"Bj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"Bl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"Bm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/clothing/head/hardhat, +/obj/item/tank/internals/emergency_oxygen/empty, +/obj/item/extinguisher, +/obj/structure/closet, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/alarm/old{ + dir = 8; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"Bn" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 8; + name = "Труба фильтрации" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"Br" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/orange{ + icon_state = "1-2" + }, +/obj/structure/cable/orange{ + icon_state = "2-8" + }, +/turf/template_noop, +/area/template_noop) +"Bt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"Bv" = ( +/obj/structure/particle_accelerator/fuel_chamber, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"Bw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing, +/obj/structure/table, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"By" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"Bz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"BA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"BD" = ( +/obj/effect/spawner/window, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"BE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer{ + desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; + dir = 8; + name = "Broken Computer" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"BF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/monitor{ + name = "Grid Power Monitoring Computer"; + icon_state = "frame-eng"; + icon = 'icons/obj/machines/computer3.dmi' + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"BG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/binary/pump{ + desc = "Подаёт кислород в смеситель для создания дыхательной смеси, которая потом распространяется по станции"; + dir = 8; + name = "Кислород (O2) в дыхательную смесь"; + on = 1; + target_pressure = 101 + }, +/obj/machinery/atmospherics/pipe/simple/visible/green, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"BI" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine/o2, +/area/ruin/space/ancientstation/beta_atmos) +"BK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8; + initialize_directions = 11 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"BM" = ( +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_kitchen) +"BN" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 8; + name = "Труба фильтрации" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"BP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/item/bucket_sensor, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"BR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8; + initialize_directions = 11 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"BT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/orange, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"BU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/mineral/unloading_machine{ + dir = 1; + icon_state = "unloader-corner"; + input_dir = 2; + output_dir = 1 + }, +/obj/machinery/conveyor{ + id = "oreredemp"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"BV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/machinery/door/airlock/external{ + req_access = list(271) + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"BW" = ( +/obj/structure/lattice, +/mob/living/simple_animal/hostile/carp, +/turf/template_noop, +/area/template_noop) +"BY" = ( +/mob/living/simple_animal/hostile/hivebot, +/obj/effect/decal/cleanable/blood/oil, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"BZ" = ( +/obj/structure/flora/ausbushes/leafybush, +/obj/structure/window/full/basic, +/turf/simulated/floor/grass, +/area/template_noop) +"Cb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/item/pod_parts/core, +/obj/item/pod_parts/armor, +/obj/structure/closet/crate, +/obj/item/spacepod_equipment/weaponry/mining_laser_basic, +/obj/item/spacepod_equipment/cargo/crate, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_mine) +"Cc" = ( +/obj/machinery/light_construct/small, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"Cd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/mecha_part_fabricator, +/obj/machinery/door/window/westleft{ + dir = 2 + }, +/obj/effect/decal/warning_stripes/southeast, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/ancientstation/theta_rnd) +"Cg" = ( +/turf/simulated/mineral/random, +/area/ruin/space/ancientstation/cowasteroid) +"Ch" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"Ci" = ( +/obj/machinery/door/firedoor/closed, +/obj/machinery/door/airlock/maintenance_hatch, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"Ck" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_exit) +"Cm" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/hivebot/range, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"Co" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"Cp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm/old{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_north) +"Cq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/hydroponics/constructable, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydroponics) +"Ct" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/science{ + name = "Research and Development" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"Cu" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"Cw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/template_noop) +"Cx" = ( +/mob/living/simple_animal/hostile/carp/megacarp, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"Cy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/computer/operating/old_frame, +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_surgery1) +"Cz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"CC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/machinery/door/window/westleft{ + dir = 2 + }, +/obj/item/paper/ruins/oldstation/slimesexperiments, +/obj/item/reagent_containers/glass/bottle/water, +/obj/item/slime_extract/grey{ + pixel_x = 7 + }, +/obj/item/reagent_containers/syringe, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"CE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_warden) +"CF" = ( +/obj/structure/grille/broken, +/obj/item/shard{ + icon_state = "small" + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"CG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/mob/living/simple_animal/hostile/hivebot/rapid, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"CH" = ( +/obj/item/stack/sheet/metal, +/turf/template_noop, +/area/template_noop) +"CI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/toilet, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_restroom) +"CK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/item/pickaxe/drill, +/obj/item/shovel, +/obj/item/clothing/under/rank/miner, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_mine) +"CP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + color = "red"; + dir = 8 + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/item/storage/box/evidence, +/obj/item/storage/box/evidence, +/obj/item/storage/box/fingerprints, +/obj/item/storage/box/handcuffs, +/obj/item/ammo_box/shotgun/tranquilizer, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"CQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"CR" = ( +/obj/item/trash/candy, +/turf/simulated/floor/wood{ + icon_state = "wood-broken6" + }, +/area/ruin/space/ancientstation/charlie_dininghall) +"CS" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/orange{ + icon_state = "2-4" + }, +/obj/structure/cable/orange{ + icon_state = "1-4" + }, +/turf/template_noop, +/area/template_noop) +"CU" = ( +/obj/structure/flora/ausbushes/grassybush, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/cowasteroid) +"CV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/machinery/door/window/westleft, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"CW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"CY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_rnd) +"CZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"Dc" = ( +/obj/structure/lattice, +/obj/structure/girder, +/turf/template_noop, +/area/ruin/space/ancientstation/beta_surgery1) +"Dd" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/template_noop, +/area/template_noop) +"De" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = 32 + }, +/obj/machinery/recharger, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/item/camera_assembly, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"Dg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"Dh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = -26; + name = "solar panel branch power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"Dj" = ( +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"Dk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/security{ + pixel_y = -32 + }, +/obj/structure/closet/crate/can, +/obj/item/storage/bag/trash, +/obj/item/trash/tastybread, +/obj/item/trash/sosjerky, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"Dl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"Do" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_corridor) +"Dq" = ( +/turf/simulated/floor/wood{ + icon_state = "wood-broken7" + }, +/area/ruin/space/ancientstation/charlie_dininghall) +"Du" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_exit) +"Dw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1; + scrub_Toxins = 0 + }, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"Dy" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"Dz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/watertank/high, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"DB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26; + name = "prototype storage power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"DC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 4; + name = "Труба дыхательной смеси" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"DE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 4; + name = "Труба смешивания" + }, +/obj/machinery/atmospherics/meter, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"DG" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"DH" = ( +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_dininghall) +"DI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/broken_device, +/obj/machinery/computer{ + desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; + dir = 8; + name = "Broken Computer" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"DJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel/airless, +/area/template_noop) +"DK" = ( +/obj/structure/girder, +/turf/template_noop, +/area/template_noop) +"DM" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_surgery) +"DO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = -26; + name = "interrogation power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/ruin/space/ancientstation/charlie_secintel) +"DR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/item/extinguisher, +/obj/structure/closet, +/obj/item/tank/internals/emergency_oxygen/empty, +/obj/item/clothing/suit/fire/firefighter, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"DS" = ( +/mob/living/simple_animal/hostile/carp, +/turf/template_noop, +/area/template_noop) +"DU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"DW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -26 + }, +/obj/machinery/recharge_station, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"DX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mob_spawn/human/oldstation/oldsci{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"DY" = ( +/obj/effect/decal/straw/light, +/turf/simulated/floor/plating/asteroid, +/area/ruin/space/ancientstation/charlie_hydroroom) +"Ea" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"Eb" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"Ec" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/stock_parts/cell{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/stock_parts/cell{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/stock_parts/cell{ + charge = 100; + maxcharge = 15000 + }, +/obj/machinery/light_construct/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_rnd) +"Ed" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_secrest) +"Ee" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"Ef" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"Eg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/item/stack/cable_coil/yellow, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"Eh" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"Ej" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair{ + dir = 4 + }, +/turf/simulated/floor/plasteel/airless, +/area/template_noop) +"En" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1; + scrub_Toxins = 0 + }, +/obj/structure/closet, +/obj/item/pickaxe, +/obj/machinery/light_construct/small, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_mine) +"Eq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/taperecorder, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secintel) +"Es" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"Et" = ( +/turf/simulated/wall/r_wall/rust, +/area/ruin/space/ancientstation/theta_exit) +"Ev" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/twohanded/required/kirbyplants/dead, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"Ex" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_prison) +"Ey" = ( +/obj/machinery/computer{ + desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; + dir = 8; + name = "Broken Computer" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"EC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/pod_parts/pod_frame/fore_starboard, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"EE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/table/wood, +/obj/item/chair/wood/wings, +/obj/item/trash/snack_bowl, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"EF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"EG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/freezer{ + name = "Toilet airlock" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"EI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"EJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"EK" = ( +/obj/machinery/recharge_station, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"EL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/obj/structure/railing, +/mob/living/simple_animal/hostile/hivebot/range, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"EM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/station{ + dir = 4 + }, +/obj/structure/transit_tube_pod, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"EN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/door_assembly/door_assembly_ext, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_corridor) +"EO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/template_noop) +"EP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = -26; + name = "prison cell power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_prison) +"EU" = ( +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"EX" = ( +/obj/structure/closet/crate/secure/weapon, +/obj/item/gun/projectile/automatic/sniper_rifle/toy, +/obj/item/clothing/suit/armor/vest/jacket, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"EY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/trinary/filter{ + desc = "Отфильтровывает азот из трубы и отправляет его в камеру хранения"; + dir = 1; + filter_type = 2; + name = "Фильтр Азота (N2)"; + on = 1; + target_pressure = 4500 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"EZ" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/curtain/medical, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_surgery) +"Fb" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_sec) +"Fe" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"Fi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8; + initialize_directions = 11 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"Fj" = ( +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_surgery1) +"Fk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/shard{ + icon_state = "small" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"Fl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_warden) +"Fn" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"Fp" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"Fq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/alarm/old{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secrest) +"Fr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/item/storage/box/bodybags/biohazard{ + pixel_x = 5; + pixel_y = 10 + }, +/obj/item/storage/box/bodybags{ + pixel_y = 5; + pixel_x = 5 + }, +/obj/item/storage/box/bodybags{ + pixel_x = 5 + }, +/obj/item/storage/box/masks, +/obj/machinery/door/window/westleft{ + dir = 2 + }, +/obj/item/storage/box/gloves{ + pixel_y = 10 + }, +/obj/item/storage/box/syringes{ + pixel_x = 2; + pixel_y = -4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"Fs" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_secintel) +"Fv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = list(271) + }, +/obj/machinery/door/firedoor/heavy, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_corridor) +"Fw" = ( +/obj/machinery/power/solar, +/obj/structure/cable/orange{ + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/template_noop) +"Fy" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/hivebot) +"Fz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/mining, +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/theta_docks) +"FB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/item/twohanded/required/kirbyplants/dead{ + pixel_y = 13 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_restroom) +"FD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/curtain/open, +/obj/machinery/shower{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_punishmentcell) +"FG" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"FH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm/old{ + dir = 8; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel/airless, +/area/template_noop) +"FI" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/transit_tube/horizontal, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_corridor) +"FK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"FL" = ( +/obj/structure/flora/straw_bail/alt_2, +/obj/effect/decal/straw, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"FN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"FO" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/mob/living/simple_animal/hostile/hivebot/strong, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"FS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/paper/fluff/ruins/oldstation{ + pixel_x = -10; + pixel_y = -7 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"FT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"FV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + name = "Труба смешивания" + }, +/obj/machinery/atmospherics/meter, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"FX" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/hivebot/strong, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"FY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"FZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_surgery) +"Gb" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_corridor) +"Gd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/mineral/stacking_unit_console{ + machinedir = 2 + }, +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_recycler) +"Ge" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/recharge_station, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"Gf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/security{ + name = "Control room" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_warden) +"Gh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor{ + id = "trash" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"Gj" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/theta_mine) +"Gk" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"Gm" = ( +/obj/machinery/recycler, +/obj/machinery/conveyor{ + id = "trash"; + dir = 4 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"Gp" = ( +/mob/living/simple_animal/hostile/hivebot/range, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/hivebot) +"Gs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"Gv" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/orange{ + icon_state = "0-4" + }, +/turf/template_noop, +/area/template_noop) +"Gw" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"Gy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_containers/glass/bottle/bromine, +/obj/item/reagent_containers/glass/bottle/sugar, +/obj/item/reagent_containers/glass/bottle/sulfur, +/obj/item/reagent_containers/glass/bottle/aluminum, +/obj/item/reagent_containers/glass/bottle/silver, +/obj/item/reagent_containers/glass/bottle/sodium, +/obj/item/reagent_containers/glass/bottle/chlorine, +/obj/item/reagent_containers/glass/bottle/carbon, +/obj/item/reagent_containers/glass/bottle/sacid, +/obj/item/reagent_containers/glass/bottle/silicon, +/obj/item/reagent_containers/glass/bottle/ethanol, +/obj/item/reagent_containers/glass/bottle/copper, +/obj/item/reagent_containers/glass/bottle/fluorine, +/obj/item/reagent_containers/glass/bottle/radium, +/obj/item/reagent_containers/glass/bottle/hydrogen, +/obj/item/reagent_containers/glass/bottle/potassium, +/obj/item/reagent_containers/glass/bottle/lithium, +/obj/item/reagent_containers/glass/bottle/iron, +/obj/item/reagent_containers/glass/bottle/iodine, +/obj/item/reagent_containers/glass/bottle/welding_fuel, +/obj/item/reagent_containers/glass/bottle/phosphorus, +/obj/item/reagent_containers/glass/bottle/oxygen, +/obj/item/reagent_containers/glass/bottle/nitrogen, +/obj/item/reagent_containers/glass/bottle/water, +/obj/item/reagent_containers/glass/bottle/water, +/obj/item/reagent_containers/glass/bottle/mercury, +/obj/machinery/smartfridge/secure/chemistry{ + req_access = null + }, +/turf/simulated/floor/plasteel{ + icon_state = "purplefull" + }, +/area/ruin/space/ancientstation/theta_rnd) +"GA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + pixel_y = 26; + name = "corridor power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"GB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"GD" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"GE" = ( +/obj/item/clothing/mask/gas, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"GF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/westleft{ + dir = 2 + }, +/obj/structure/filingcabinet/chestdrawer, +/obj/item/folder/white, +/obj/item/folder/white, +/obj/item/folder/white, +/obj/item/folder/red, +/obj/item/folder/blue, +/obj/item/paper, +/obj/item/paper, +/obj/item/paper, +/obj/item/paper, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"GG" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_exit) +"GH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/item/clothing/under/color/orange/prison, +/obj/item/clothing/under/color/orange/prison, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secintel) +"GL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + pixel_y = 26; + name = "solitary confinement power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_punishmentcell) +"GM" = ( +/obj/effect/decal/cleanable/blood, +/obj/item/clothing/gloves/color/fyellow/old, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"GN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"GO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_warden) +"GP" = ( +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue" + }, +/area/template_noop) +"GQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "bluecorner" + }, +/area/ruin/space/ancientstation/charlie_comm) +"GS" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"GU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"GW" = ( +/turf/simulated/wall/r_wall/rust, +/area/ruin/space/ancientstation/charlie_armory) +"GZ" = ( +/obj/structure/lattice, +/obj/item/shard, +/turf/template_noop, +/area/template_noop) +"Hd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"Hf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/mob_spawn/human/oldstation/oldeng{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"Hg" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"Hi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/science{ + name = "Research and Development" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"Hj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/computer{ + desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; + dir = 8; + name = "Broken Computer" + }, +/obj/machinery/computer{ + desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; + dir = 8; + name = "Broken Computer" + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"Hk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = list(271) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_exit) +"Hl" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 4; + name = "Труба фильтрации" + }, +/turf/template_noop, +/area/ruin/space/ancientstation/beta_atmos) +"Hn" = ( +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue"; + dir = 1 + }, +/area/template_noop) +"Hp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/deliveryChute, +/obj/structure/sign/securearea{ + name = "\improper STAY CLEAR HEAVY MACHINERY"; + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"Hs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydroponics) +"Hv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"Hx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/table, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/item/storage/ashtray/glass, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_warden) +"Hy" = ( +/obj/item/camera_assembly, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"Hz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"HA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + pixel_y = 26; + name = "rest room power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/ruin/space/ancientstation/charlie_restroom) +"HB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = -26; + name = "canteen power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_dininghall) +"HC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/obj/item/pod_parts/pod_frame/fore_port, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"HD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom" + }, +/area/ruin/space/ancientstation/theta_docks) +"HE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/papershredder, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_restroom) +"HF" = ( +/obj/item/fish_eggs/babycarp{ + pixel_x = 16 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"HG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/r_n_d/experimentor, +/turf/simulated/floor/engine, +/area/ruin/space/ancientstation/theta_experi) +"HH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/maintenance_hatch, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"HK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/cigarette, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"HN" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/theta_rnd) +"HO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_construct/small, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"HS" = ( +/obj/structure/showcase/machinery/oldpod, +/turf/simulated/floor/plasteel/airless{ + icon_state = "titanium_dam5" + }, +/area/template_noop) +"HT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/science{ + name = "Research and Development" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/ruin/space/ancientstation/theta_rnd) +"HU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/engineering/electrical, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/storage/box/lights, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"HW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_rnd) +"Ia" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"Ib" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"Id" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4; + initialize_directions = 11 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/alarm/old{ + dir = 8; + pixel_x = 26 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_exit) +"Ie" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_comm) +"If" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"Ik" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/machinery/light_construct/small, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_solar) +"Il" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = -26; + name = "medical storage power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"Im" = ( +/obj/machinery/light/small, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"In" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/water_cooler, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"Ir" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_storage) +"Is" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/machinery/light_construct/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"It" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sink/kitchen{ + pixel_y = 22 + }, +/obj/structure/foodcart, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"Iu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced, +/obj/effect/decal/warning_stripes/south, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/ancientstation/theta_rnd) +"Iv" = ( +/obj/item/surgicaldrill, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_surgery1) +"Ix" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/light_construct/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"Iy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"IA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/hydroponics/constructable, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydroponics) +"ID" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_north) +"IH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm/old{ + dir = 8; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "browncorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"IJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/item/crowbar, +/obj/item/flashlight/flare, +/obj/item/clothing/mask/breath, +/obj/item/tank/internals/emergency_oxygen/empty, +/obj/structure/closet/walllocker{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"IK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"IL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/bombclosetsecurity, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"IN" = ( +/obj/machinery/atmospherics/unary/outlet_injector/on{ + dir = 1 + }, +/turf/simulated/floor/engine/vacuum, +/area/ruin/space/ancientstation/beta_atmos) +"IQ" = ( +/obj/structure/transit_tube/horizontal, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"IT" = ( +/obj/item/chair, +/turf/template_noop, +/area/template_noop) +"IU" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid, +/area/ruin/space/ancientstation/charlie_hydroroom) +"IV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/template_noop, +/area/template_noop) +"IW" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_warden) +"IX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"Jb" = ( +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"Jc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch{ + pixel_y = -26; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"Jd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/security{ + pixel_y = -32 + }, +/obj/structure/closet/crate/can, +/obj/item/storage/bag/trash, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/trash/gum, +/obj/item/trash/tastybread, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"Jf" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_corridor) +"Jg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26; + name = "docking power controller"; + start_charge = 0; + report_power_alarm = 0 + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"Jh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/seeds/eggplant/eggy, +/obj/item/seeds/eggplant/eggy, +/obj/item/seeds/eggplant/eggy, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"Jj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/structure/closet, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"Jk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/station{ + dir = 4 + }, +/obj/structure/transit_tube_pod, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"Jm" = ( +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"Jn" = ( +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_hydroponics) +"Jo" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/effect/decal/straw/edge{ + dir = 8 + }, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"Jp" = ( +/obj/machinery/constructable_frame/machine_frame, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"Jq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/ruin/space/ancientstation/charlie_sec) +"Jr" = ( +/obj/item/solar_assembly, +/obj/structure/cable/orange, +/turf/simulated/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/template_noop) +"Jt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/smartfridge, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"Ju" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable/orange, +/obj/item/stack/cable_coil/orange, +/obj/item/stack/cable_coil/orange, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"Jv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_punishmentcell) +"JA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/machinery/door/airlock/vault{ + req_access = list(271) + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"JB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/item/tank/internals/oxygen, +/obj/item/tank/internals/oxygen/empty, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_rnd) +"JC" = ( +/turf/simulated/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/template_noop) +"JE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/glass, +/obj/item/clothing/gloves/color/latex/nitrile, +/obj/machinery/alarm/old{ + dir = 8; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_surgery) +"JF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/public/glass{ + name = "Kitchen" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"JH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/oil, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"JI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"JJ" = ( +/obj/item/stack/sheet/metal{ + amount = 20 + }, +/obj/item/stack/sheet/metal{ + amount = 20 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_rnd) +"JL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"JN" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 1; + name = "Труба смешивания" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"JS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8; + initialize_directions = 11 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_rnd) +"JT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"JW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"JX" = ( +/obj/effect/decal/straw/light, +/obj/machinery/light_construct/small, +/turf/simulated/floor/plating/asteroid, +/area/ruin/space/ancientstation/charlie_hydroroom) +"JZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"Kb" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine/air, +/area/ruin/space/ancientstation/beta_atmos) +"Kc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"Kf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/closet, +/obj/machinery/light_construct/small, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"Ki" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"Kj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/rack, +/obj/item/clothing/head/welding, +/obj/item/clothing/head/welding/flamedecal/blue, +/obj/item/weldingtool, +/obj/item/weldingtool, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"Kk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/obj/machinery/pipedispenser/disposal, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"Km" = ( +/obj/structure/lattice, +/obj/structure/transit_tube/crossing/horizontal{ + dir = 1 + }, +/turf/template_noop, +/area/template_noop) +"Kr" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"Kv" = ( +/obj/machinery/light_switch{ + pixel_y = 26 + }, +/turf/simulated/floor/plating/asteroid, +/area/ruin/space/ancientstation/charlie_hydroroom) +"Kw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump, +/obj/machinery/alarm/old{ + pixel_y = 26 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"Kz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/science{ + pixel_x = -32 + }, +/obj/structure/door_assembly/door_assembly_ext, +/obj/machinery/light_construct/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"KD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_exit) +"KF" = ( +/obj/structure/lattice, +/obj/item/retractor, +/turf/template_noop, +/area/template_noop) +"KH" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/hivebot/range, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"KK" = ( +/obj/structure/table/wood, +/obj/item/storage/briefcase, +/obj/item/storage/ashtray/glass, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"KL" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_comm) +"KM" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"KP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_surgery) +"KQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/item/tank/jetpack/void, +/obj/machinery/door/window/westleft{ + dir = 4 + }, +/obj/item/clothing/mask/gas/explorer, +/obj/item/clothing/suit/space/nasavoid/purple, +/obj/item/clothing/head/helmet/space/nasavoid/purple, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"KR" = ( +/obj/structure/transit_tube/horizontal{ + dir = 1 + }, +/turf/template_noop, +/area/template_noop) +"KT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/securearea{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"KU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/toy/plushie/corgi, +/obj/item/lighter/zippo, +/obj/structure/table, +/obj/machinery/light_construct/small, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"KX" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_corridor) +"KY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/security{ + name = "Control room" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"KZ" = ( +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/template_noop) +"Lb" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/science{ + name = "Research and Development" + }, +/turf/simulated/floor/plasteel/stairs/old, +/area/ruin/space/ancientstation/theta_experi) +"Lc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/canister/nitrogen{ + anchored = 1 + }, +/turf/simulated/floor/engine/n2, +/area/ruin/space/ancientstation/beta_atmos) +"Ld" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/security{ + name = "punishment cell"; + req_access = list(271) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_punishmentcell) +"Lf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"Lg" = ( +/obj/item/stack/tile/plasteel, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_surgery1) +"Lh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/clothing/head/hardhat, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/extinguisher, +/obj/structure/closet, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"Li" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/ruin/space/ancientstation/charlie_sec) +"Lk" = ( +/obj/item/fish_eggs/babycarp{ + pixel_x = 16 + }, +/obj/item/fish_eggs/babycarp{ + pixel_y = 16; + pixel_x = 11 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"Ll" = ( +/obj/machinery/door/airlock/highsecurity, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"Ln" = ( +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue"; + dir = 1 + }, +/area/template_noop) +"Lq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/light_switch{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"Lr" = ( +/obj/structure/flora/rock/lava2, +/turf/simulated/floor/plating/asteroid/ancient, +/area/ruin/space/ancientstation/cowasteroid) +"Ls" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/station, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"Lv" = ( +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_comm) +"Lw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/stool, +/obj/machinery/alarm/old{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_mine) +"Ly" = ( +/obj/machinery/power/tesla_coil{ + desc = "A massive coil with a built-in capacitor, collects energy from lightnings on hit"; + name = "tesla coil prototype" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"Lz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"LA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"LC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/dresser, +/obj/item/storage/ashtray/glass, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_restroom) +"LD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = -26; + name = "armory power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/ruin/space/ancientstation/charlie_armory) +"LE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/showcase/machinery/oldpod, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/alarm/old{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"LF" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/orange{ + icon_state = "0-8" + }, +/turf/template_noop, +/area/template_noop) +"LI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/item/caution, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"LK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"LL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/transit_tube/station, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"LO" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"LP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/reagent_containers/food/snacks/cereal, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"LQ" = ( +/obj/structure/lattice, +/obj/item/shard{ + icon_state = "small" + }, +/turf/template_noop, +/area/template_noop) +"LR" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"LS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/watertank/high, +/obj/machinery/alarm/old{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_rnd) +"LU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/dark, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_warden) +"LV" = ( +/turf/simulated/wall, +/area/ruin/space/ancientstation/beta_atmos) +"LW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/storage/toolbox/electrical{ + pixel_y = -1 + }, +/obj/item/storage/toolbox/mechanical/old{ + pixel_y = -6 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"LZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_rnd) +"Ma" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"Mb" = ( +/obj/structure/flora/rock/jungle, +/turf/simulated/floor/plating/asteroid/ancient, +/area/ruin/space/ancientstation/cowasteroid) +"Me" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_restroom) +"Mf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/storage/photo_album, +/obj/machinery/alarm/old{ + dir = 8; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_restroom) +"Mh" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_cryo) +"Mi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/machinery/atmospherics/binary/pump{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"Ml" = ( +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"Mo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 8; + name = "Труба фильтрации" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"Ms" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 1; + name = "Труба дыхательной смеси" + }, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 8; + name = "Труба фильтрации" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"Mt" = ( +/obj/machinery/light, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"Mu" = ( +/obj/item/stock_parts/manipulator, +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_surgery1) +"Mv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_warden) +"Mw" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"Mx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_rnd) +"My" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/template_noop) +"MA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_restroom) +"MC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_rnd) +"MD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/firedoor, +/turf/simulated/floor/engine, +/area/ruin/space/ancientstation/theta_experi) +"ME" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/closet/walllocker{ + pixel_y = -32 + }, +/obj/effect/decal/cleanable/blood/oil, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"MH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"MI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/recharger, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_warden) +"MM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/partial, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"MO" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "redfull" + }, +/area/ruin/space/ancientstation/charlie_sec) +"MP" = ( +/obj/item/flag/cult, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"MQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"MU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/research, +/obj/machinery/door/firedoor, +/turf/simulated/floor/engine, +/area/ruin/space/ancientstation/theta_experi) +"MV" = ( +/obj/machinery/conveyor/inverted{ + dir = 9; + id = "trash" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"MX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm/old{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"MZ" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"Na" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_rnd) +"Nd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/hydroponics, +/obj/item/storage/bag/plants/portaseeder, +/obj/item/storage/bag/plants/portaseeder, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"Ne" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_comm) +"Nf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_exit) +"Ng" = ( +/obj/structure/cable/orange{ + icon_state = "0-4" + }, +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/template_noop) +"Nh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"Ni" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor{ + id_tag = "proto"; + use_power = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"Nj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/chair, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"Nn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/showcase/machinery/oldpod{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"No" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"Np" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 1; + name = "Труба смешивания" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"Nq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/shard, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"Nr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/floodlight, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"Nt" = ( +/obj/structure/bookcase/random, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"Nu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = list(271) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_exit) +"Nv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel/airless, +/area/template_noop) +"Nw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom" + }, +/area/ruin/space/ancientstation/theta_storage) +"Nx" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/obj/machinery/light_construct/small{ + dir = 8 + }, +/turf/simulated/floor/wood{ + icon_state = "wood-broken5" + }, +/area/ruin/space/ancientstation/charlie_dininghall) +"Ny" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"Nz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = list(271) + }, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_north) +"NC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/paper/fluff/ruins/oldstation{ + pixel_y = 8; + pixel_x = -7 + }, +/obj/item/paper/fluff/ruins/oldstation{ + pixel_y = 3 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"ND" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"NE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/showcase/machinery/oldpod{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"NG" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/simulated/floor/wood{ + broken = 1; + icon_state = "wood-broken" + }, +/area/ruin/space/ancientstation/charlie_dininghall) +"NK" = ( +/obj/item/storage/toolbox/surgery/empty, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_surgery1) +"NL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"NN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"NO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/clothing/suit/towel/alt, +/obj/item/clothing/suit/towel/alt, +/obj/item/clothing/suit/towel/short/alt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_restroom) +"NP" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_north) +"NR" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"NS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/westleft{ + dir = 1 + }, +/obj/item/paper/safe_code{ + language = "Sol Common"; + owner = "theta"; + pixel_x = -6; + pixel_y = -6 + }, +/obj/machinery/light/small, +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"NT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/orange{ + icon_state = "2-4" + }, +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"NV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"NW" = ( +/obj/item/fish_eggs/babycarp{ + pixel_y = 16; + pixel_x = -9 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"NZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/trinary/filter{ + desc = "Отфильтровывает кислород из трубы и отправляет его в камеру хранения"; + dir = 1; + filter_type = 1; + name = "Фильтр Кислорода (O2)"; + on = 1; + target_pressure = 4500 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"Oa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door_control{ + id = "proto"; + name = "Theta Prototype Lab Lockdown Button"; + pixel_y = -1; + pixel_x = -22; + req_access = list(271) + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"Ob" = ( +/obj/item/stack/tile/plasteel, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_surgery1) +"Oc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/ruin/space/ancientstation/charlie_secintel) +"Of" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/smes/vintage, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"Oi" = ( +/turf/simulated/floor/wood{ + icon_state = "wood-broken5" + }, +/area/ruin/space/ancientstation/charlie_dininghall) +"Oj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"Ol" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_sec) +"On" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"Oo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/mob_spawn/human/oldstation/oldsci{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"Op" = ( +/obj/effect/decal/straw/edge{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid, +/area/ruin/space/ancientstation/charlie_hydroroom) +"Oq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_rnd) +"Or" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/station{ + dir = 4 + }, +/obj/structure/transit_tube_pod, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"Os" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"Ot" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/item/flag/nt, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"Ov" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"Oy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/maintenance_hatch, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"Oz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/ants, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"OA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/item/seeds/ambrosia, +/obj/item/seeds/ambrosia, +/obj/item/seeds/ambrosia, +/obj/item/seeds/aloe, +/obj/item/seeds/aloe, +/obj/item/seeds/aloe, +/obj/item/seeds/berry/glow, +/obj/item/seeds/berry/glow, +/obj/item/seeds/berry/glow, +/obj/item/seeds/glowshroom, +/obj/item/seeds/glowshroom, +/obj/item/seeds/glowshroom, +/obj/machinery/light_construct/small{ + dir = 1 + }, +/obj/machinery/alarm/old{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"OB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/extinguisher, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"OE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock{ + name = "Hydroponics" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydroponics) +"OI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/light_switch{ + pixel_y = -26; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"OJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26; + name = "Electricity storage power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"OL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/binary/pump{ + desc = "Подаёт азот для смешивания с другими газами"; + dir = 8; + name = "Азот (N2) в смеситель"; + target_pressure = 101 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"OM" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"ON" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"OO" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/simulated/floor/wood{ + icon_state = "wood-broken3" + }, +/area/ruin/space/ancientstation/charlie_dininghall) +"OR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate, +/obj/item/shovel, +/obj/item/shovel, +/obj/item/shovel, +/obj/item/cultivator/rake, +/obj/item/cultivator/rake, +/obj/item/cultivator/rake, +/obj/item/hatchet/wooden, +/obj/item/hatchet/wooden, +/obj/item/hatchet/wooden, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"OS" = ( +/obj/machinery/status_display{ + layer = 4; + pixel_x = -32 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/hivebot) +"OT" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/hivebot/range, +/obj/machinery/light_construct/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"OV" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/simulated/floor/wood{ + icon_state = "wood-broken" + }, +/area/ruin/space/ancientstation/charlie_dininghall) +"OX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 10; + name = "Труба фильтрации" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"Pa" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/plasteel{ + amount = 30 + }, +/obj/item/stack/sheet/mineral/titanium{ + amount = 30 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_rnd) +"Pc" = ( +/turf/simulated/floor/plating/airless, +/area/template_noop) +"Pd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/mob/living/simple_animal/hostile/hivebot/rapid, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_rnd) +"Pg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = list(271) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_north) +"Pk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/alarm/old{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"Pm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/plating/asteroid, +/area/ruin/space/ancientstation/charlie_hydroroom) +"Po" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"Pp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/medical2, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_surgery) +"Pq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_prison) +"Pr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"Pu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"Pv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"Px" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"Py" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1; + scrub_Toxins = 0 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydroponics) +"Pz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/orange{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"PA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/engineering/electrical, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"PB" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"PC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/mob/living/simple_animal/hostile/hivebot/range, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_mine) +"PE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/science{ + pixel_x = -32 + }, +/obj/structure/reagent_dispensers/water_cooler, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"PF" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"PI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"PJ" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/ancientstation/beta_atmos) +"PK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock{ + name = "Dormatoriums" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_restroom) +"PM" = ( +/obj/item/fish_eggs/babycarp{ + pixel_x = 16 + }, +/obj/item/fish_eggs/babycarp{ + pixel_y = 16; + pixel_x = -9 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"PN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"PO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_construct/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"PP" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"PR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/mob_spawn/human/oldstation/oldsec, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"PT" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 1; + name = "Труба смешивания" + }, +/turf/template_noop, +/area/ruin/space/ancientstation/beta_atmos) +"PU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"PW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/light{ + dir = 1; + pixel_y = 3 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"PZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm/old{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"Qa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/computer{ + desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; + dir = 8; + name = "Broken Computer" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrivalcorner" + }, +/area/ruin/space/ancientstation/charlie_comm) +"Qc" = ( +/obj/item/mounted/frame/apc_frame, +/turf/template_noop, +/area/template_noop) +"Qe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/kitchen_machine/candy_maker, +/obj/item/trash/snack_bowl, +/obj/item/trash/snack_bowl{ + pixel_y = 7; + pixel_x = -3 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"Qf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 8 + }, +/turf/simulated/floor/engine/air, +/area/ruin/space/ancientstation/beta_atmos) +"Qh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"Qi" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_surgery1) +"Qm" = ( +/obj/structure/grille/broken, +/obj/item/shard{ + icon_state = "medium" + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"Qq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/item/multitool, +/obj/effect/decal/remains/human, +/obj/item/clothing/under/color/orange/prison, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_punishmentcell) +"Qr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"Qs" = ( +/obj/item/fish_eggs/babycarp{ + pixel_y = 16 + }, +/obj/effect/decal/remains/mouse, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"Qv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"Qx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/recharger, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"Qz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on, +/mob/living/simple_animal/hostile/hivebot/strong, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"QD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = list(271) + }, +/obj/machinery/door/firedoor/heavy, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_corridor) +"QE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"QF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"QG" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_surgery) +"QH" = ( +/obj/structure/table, +/obj/machinery/door/window/westleft{ + dir = 2 + }, +/obj/machinery/door/window/westleft{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"QK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom" + }, +/area/ruin/space/ancientstation/theta_storage) +"QM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/chair/stool, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_mine) +"QN" = ( +/obj/item/fish_eggs/babycarp{ + pixel_y = 16; + pixel_x = -9 + }, +/obj/item/fish_eggs/babycarp{ + pixel_y = 16 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"QO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/machinery/door/window/westleft{ + dir = 2 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/reagent_containers/spray/cleaner/medical{ + pixel_x = 5; + pixel_y = 10 + }, +/obj/item/reagent_containers/spray/cleaner/medical{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/reagent_containers/spray/cleaner/medical{ + pixel_x = -5 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"QP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer{ + desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; + dir = 8; + name = "Broken Computer" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"QQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/machinery/atmospherics/binary/pump{ + desc = "Подаёт азот в смеситель для создания дыхательной смеси, которая потом распространяется по станции"; + dir = 8; + name = "Азот (N2) в дыхательную смесь"; + on = 1; + target_pressure = 101 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"QV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/kitchen_machine/grill, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"QX" = ( +/obj/item/shard{ + icon_state = "small" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26; + name = "recycling power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"Ra" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"Rc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/machinery/the_singularitygen, +/obj/machinery/door/window/westleft, +/obj/machinery/light_construct/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"Rd" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/hivebot/strong, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_solar) +"Rf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = list(271) + }, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_corridor) +"Ri" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/light_switch{ + pixel_y = -26; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"Rj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/storage/firstaid/ancient, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"Rk" = ( +/obj/effect/decal/remains/xeno, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"Rl" = ( +/obj/structure/flora/ausbushes/leafybush, +/turf/simulated/floor/plating/asteroid/ancient, +/area/ruin/space/ancientstation/cowasteroid) +"Rm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/camera{ + desc = "A one use - polaroid camera. 30 photos left."; + name = "Camera"; + pictures_left = 30 + }, +/obj/machinery/light_switch{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secintel) +"Ro" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_construct/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"Rr" = ( +/obj/structure/transit_tube/horizontal, +/turf/template_noop, +/area/template_noop) +"Rs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = -26; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"Rx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/shoes/laceup/cap, +/obj/item/clothing/head/caphat/office, +/obj/item/clothing/glasses/sunglasses/big, +/obj/item/clothing/neck/mantle/regal, +/obj/item/clothing/under/captainparade/alt, +/obj/effect/decal/remains/human, +/obj/item/storage/backpack/satchel, +/obj/item/card/id/research{ + access = list(29,7,8,47,55,65,76,271.70); + icon_state = "retro_nanotrasen"; + name = "Captain ID"; + registered_name = "Captain" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"RA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/closet/cabinet, +/obj/item/clothing/under/blackskirt, +/obj/item/clothing/under/barber, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_restroom) +"RC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1; + scrub_Toxins = 0 + }, +/obj/effect/decal/cleanable/blood/oil, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"RE" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/alarm/old{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"RF" = ( +/obj/structure/flora/straw_bail, +/obj/effect/decal/straw, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"RG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"RH" = ( +/obj/structure/table/wood, +/obj/item/chair/wood/wings, +/obj/item/newspaper, +/turf/simulated/floor/wood{ + icon_state = "wood-broken" + }, +/area/ruin/space/ancientstation/charlie_dininghall) +"RI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer{ + desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; + dir = 8; + name = "Broken Computer" + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"RJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4; + initialize_directions = 11 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_exit) +"RL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/trunk, +/obj/machinery/disposal/deliveryChute{ + dir = 1 + }, +/obj/structure/sign/securearea{ + name = "\improper STAY CLEAR HEAVY MACHINERY"; + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"RN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"RO" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/theta_corridor) +"RP" = ( +/obj/item/stack/rods, +/turf/template_noop, +/area/template_noop) +"RQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"RU" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"RV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"RW" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"RX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "purplefull" + }, +/area/ruin/space/ancientstation/theta_rnd) +"RY" = ( +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"Sa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Armory" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"Sb" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine/co2, +/area/ruin/space/ancientstation/beta_atmos) +"Sc" = ( +/obj/structure/grille/broken, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"Se" = ( +/obj/item/camera_assembly, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"Sf" = ( +/obj/effect/spawner/random_spawners/fungus_30, +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_kitchen) +"Sg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/meter, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/alarm/old{ + dir = 8; + pixel_x = 26 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"Si" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"Sk" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/simulated/floor/wood{ + icon_state = "wood-broken3" + }, +/area/ruin/space/ancientstation/charlie_dininghall) +"Sl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"Sn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/stack/cable_coil{ + amount = 2 + }, +/obj/item/stock_parts/micro_laser, +/obj/item/stock_parts/manipulator, +/obj/machinery/constructable_frame/machine_frame, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"Sp" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_hydroroom) +"Sq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/constructable_frame/machine_frame, +/obj/item/circuitboard/pacman/super, +/obj/item/broken_device, +/obj/structure/cable/orange{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"Ss" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 8 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"St" = ( +/obj/machinery/vending/sovietsoda, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"Su" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/item/paper/fluff/ruins/oldstation/generator_manual, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"SA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"SD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"SE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/light{ + dir = 1; + pixel_y = 3 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"SF" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/hivebot/range, +/turf/simulated/floor/engine, +/area/ruin/space/ancientstation/theta_experi) +"SG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/hydroponics/constructable, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"SI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"SL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable/orange, +/obj/item/stack/cable_coil/orange, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"SM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_corridor) +"SO" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/unary/outlet_injector/on{ + dir = 1 + }, +/turf/template_noop, +/area/ruin/space/ancientstation/beta_atmos) +"SQ" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/window/full/basic, +/turf/simulated/floor/grass, +/area/template_noop) +"SR" = ( +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"ST" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/disposal/deliveryChute{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"SU" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4; + initialize_directions = 11 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/template_noop) +"SW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/orange{ + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"SY" = ( +/turf/simulated/floor/plating/asteroid/ancient, +/area/ruin/space/ancientstation/charlie_hydroroom) +"Ta" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"Tc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer{ + desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; + dir = 8; + name = "Broken Computer" + }, +/obj/item/paper/fluff/ruins/oldstation/report, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"Te" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/circuitboard/smes/vintage, +/obj/machinery/constructable_frame/machine_frame, +/obj/item/stock_parts/cell/upgraded, +/obj/item/stock_parts/cell/upgraded, +/obj/item/stock_parts/cell/upgraded, +/obj/item/broken_device, +/obj/item/stack/cable_coil{ + amount = 2 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"Tg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/partial, +/obj/item/pod_parts/pod_frame/aft_port, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"Ti" = ( +/obj/item/skeleton/r_arm, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"Tn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26; + name = "Shuttle boarding power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_north) +"To" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_punishmentcell) +"Tq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/green, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"Tr" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_hydroponics) +"Tv" = ( +/obj/item/robot_parts/l_arm, +/obj/item/robot_parts/chest, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"TA" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"TJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm/old{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_prison) +"TK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/highsecurity{ + name = "Prototype Laboratory"; + req_access = list(271) + }, +/obj/machinery/door/firedoor/heavy, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_proto) +"TN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_rnd) +"TO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"TP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secintel) +"TQ" = ( +/obj/item/paper/ruins/oldstation/singwarn{ + pixel_x = 6; + pixel_y = 6 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"TR" = ( +/mob/living/simple_animal/hostile/hivebot/range, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"TV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_mine) +"TW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/outlet_injector/on{ + dir = 8 + }, +/turf/simulated/floor/engine/air, +/area/ruin/space/ancientstation/beta_atmos) +"TX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/binary/pump{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"TY" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno, +/turf/simulated/floor/plating/asteroid/ancient, +/area/ruin/space/ancientstation/cowasteroid) +"TZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/reagentgrinder{ + pixel_x = -1; + pixel_y = 9 + }, +/obj/machinery/light_switch{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydrostorage) +"Ub" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/machinery/the_singularitygen/tesla, +/obj/machinery/door/window/westleft{ + dir = 1 + }, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"Ud" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/alarm/old{ + pixel_y = 26 + }, +/turf/simulated/floor/grass, +/area/ruin/space/ancientstation/charlie_hydroroom) +"Ue" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/bedsheet, +/obj/structure/bed/old, +/obj/machinery/light_construct/small, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_restroom) +"Ui" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/constructable_frame/machine_frame, +/obj/item/stack/cable_coil{ + amount = 2 + }, +/obj/item/stock_parts/micro_laser, +/obj/item/stock_parts/manipulator, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"Uj" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 4; + name = "Труба фильтрации" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"Ul" = ( +/obj/effect/decal/remains/robot, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"Um" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/station{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"Un" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"Uo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/machinery/recharger, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_rnd) +"Ur" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/science{ + pixel_x = -32 + }, +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/light_construct/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"Ut" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/machinery/light_construct/small{ + dir = 8 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_atmos) +"Uu" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/simulated/floor/plating/asteroid/ancient, +/area/ruin/space/ancientstation/cowasteroid) +"Uw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_sec) +"Uz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Kitchen" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"UA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"UB" = ( +/obj/structure/lattice, +/obj/structure/girder, +/turf/template_noop, +/area/template_noop) +"UC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/can, +/obj/item/storage/bag/trash, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_restroom) +"UG" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/beta_north) +"UL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/bedsheet, +/obj/machinery/light/small, +/obj/structure/bed/old, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_restroom) +"UM" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"UR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_warden) +"US" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/smes/vintage, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"UU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/chair, +/turf/simulated/floor/plasteel/airless, +/area/template_noop) +"UV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"UY" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/atmos/glass, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"Va" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_restroom) +"Vc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/machinery/alarm/old{ + dir = 8; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"Vd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/science{ + name = "Research and Development" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "rampbottom" + }, +/area/ruin/space/ancientstation/theta_corridor) +"Ve" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_punishmentcell) +"Vf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light, +/obj/machinery/vending/hydroseeds, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"Vg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_secrest) +"Vj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/airlock/engineering{ + name = "Power supply room" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"Vk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_hydroponics) +"Vn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light_switch{ + pixel_y = 26 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/vault{ + req_access = list(271) + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"Vo" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_north) +"Vq" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_proto) +"Vr" = ( +/obj/structure/girder, +/obj/item/stack/sheet/metal, +/turf/template_noop, +/area/template_noop) +"Vs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"Vv" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"Vw" = ( +/obj/item/trash/candy, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"Vy" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/hivebot/rapid, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_warden) +"VA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"VB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/security{ + name = "Armory" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"VH" = ( +/obj/item/camera_assembly, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"VI" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_prison) +"VO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer{ + desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; + dir = 8; + name = "Broken Computer" + }, +/obj/item/paper/fluff/ruins/oldstation/damagereport, +/obj/machinery/light_construct/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"VP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_containers/glass/beaker/waterbottle/large{ + pixel_x = 12; + pixel_y = 2 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle/large{ + pixel_x = 12 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle/large{ + pixel_y = -2; + pixel_x = 12 + }, +/obj/structure/closet/secure_closet/freezer/fridge/empty, +/obj/item/reagent_containers/food/snacks/monstermeat/rotten, +/obj/item/reagent_containers/food/snacks/monstermeat/rotten, +/obj/item/reagent_containers/food/snacks/monstermeat/rotten, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"VQ" = ( +/obj/structure/grille/broken, +/obj/item/shard{ + icon_state = "medium"; + pixel_x = 9; + pixel_y = -9 + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"VS" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"VV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/westleft{ + dir = 2 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/filingcabinet/chestdrawer, +/obj/item/folder/white, +/obj/item/folder/white, +/obj/item/folder/white, +/obj/item/folder/red, +/obj/item/folder/blue, +/obj/item/paper, +/obj/item/paper, +/obj/item/paper, +/obj/item/paper, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"VX" = ( +/obj/machinery/constructable_frame/machine_frame, +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue"; + dir = 1 + }, +/area/ruin/space/ancientstation/beta_surgery1) +"VY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 8; + name = "Труба фильтрации" + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 1; + name = "Труба смешивания" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"Wb" = ( +/turf/simulated/floor/plasteel/airless{ + icon_state = "whiteblue"; + dir = 10 + }, +/area/ruin/space/ancientstation/beta_surgery1) +"Wc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "browncorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"We" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_corridor) +"Wf" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4; + icon_state = "burst_l" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/hivebot) +"Wg" = ( +/obj/item/camera_assembly, +/obj/structure/flora/ausbushes/leafybush, +/obj/effect/decal/straw/light, +/turf/simulated/floor/plating/asteroid/ancient, +/area/ruin/space/ancientstation/charlie_hydroroom) +"Wi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"Wj" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/obj/structure/cable/orange{ + icon_state = "1-4" + }, +/turf/template_noop, +/area/template_noop) +"Wl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"Wo" = ( +/obj/machinery/light_construct/small{ + dir = 4 + }, +/obj/structure/showcase/machinery/oldpod{ + dir = 8 + }, +/obj/item/paper/fluff/ruins/oldstation{ + pixel_x = 13; + pixel_y = 6 + }, +/obj/item/paper/fluff/ruins/oldstation{ + pixel_x = -10; + pixel_y = -7 + }, +/obj/machinery/alarm/old{ + dir = 8; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"Wp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_surgery) +"Wq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/kitchen_machine/grill, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"Wu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/machinery/door/window/westleft{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/storage/box/patch_packs{ + pixel_y = -7; + pixel_x = 8 + }, +/obj/item/storage/box/pillbottles{ + pixel_y = -8; + pixel_x = -3 + }, +/obj/item/storage/box/iv_bags{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/storage/box/beakers{ + pixel_y = 4; + pixel_x = 9 + }, +/obj/item/storage/fancy/vials, +/obj/machinery/light_construct{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"Ww" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/ruin/space/ancientstation/charlie_secintel) +"Wy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"Wz" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/beta_surgery1) +"WA" = ( +/obj/structure/table/wood, +/obj/item/trash/tray, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"WB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/disposal/deliveryChute, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/sign/securearea{ + name = "\improper STAY CLEAR HEAVY MACHINERY"; + pixel_x = 32 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"WD" = ( +/turf/template_noop, +/area/template_noop) +"WE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/can, +/obj/item/storage/bag/trash, +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = -26; + name = "Prison warden's room power controller"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_warden) +"WF" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"WK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed, +/obj/effect/decal/cleanable/cobweb2, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/light_construct/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_prison) +"WL" = ( +/obj/item/camera_assembly, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"WN" = ( +/obj/structure/table/wood, +/obj/item/chair/wood/wings{ + dir = 1 + }, +/obj/item/trash/tray, +/turf/simulated/floor/wood{ + icon_state = "wood-broken5" + }, +/area/ruin/space/ancientstation/charlie_dininghall) +"WO" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 4; + name = "Труба дыхательной смеси" + }, +/turf/template_noop, +/area/ruin/space/ancientstation/beta_atmos) +"WP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/item/book/manual/research_and_development, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_rnd) +"WS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel/airless, +/area/template_noop) +"WT" = ( +/turf/simulated/mineral/random, +/area/template_noop) +"WV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/airless, +/area/template_noop) +"WW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"WX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_construct/small{ + dir = 8 + }, +/obj/structure/mecha_wreckage/ripley/firefighter, +/turf/simulated/floor/mech_bay_recharge_floor, +/area/ruin/space/ancientstation/theta_docks) +"WY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26; + name = "dock power controller miner's POD"; + report_power_alarm = 0; + start_charge = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"WZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/flashlight/lamp, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"Xd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/can, +/obj/item/storage/bag/trash, +/obj/item/trash/candle, +/obj/item/trash/broken_ashtray, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"Xe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/autolathe, +/obj/effect/decal/warning_stripes/northeast, +/obj/machinery/light_construct/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ruin/space/ancientstation/theta_rnd) +"Xg" = ( +/obj/machinery/recharge_station, +/obj/item/robot_parts/r_leg, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"Xk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_exit) +"Xn" = ( +/obj/structure/shuttle/engine/heater{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/hivebot) +"Xq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"Xx" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"Xy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/transit_tube/station{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"XA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/outlet_injector/on{ + dir = 8 + }, +/turf/simulated/floor/engine/n2, +/area/ruin/space/ancientstation/beta_atmos) +"XC" = ( +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/effect/spawner/window, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"XE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "white" + }, +/area/template_noop) +"XF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_armory) +"XG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/mob/living/simple_animal/hostile/hivebot/range, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_warden) +"XJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/vault{ + req_access = list(271) + }, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/ruin/space/ancientstation/charlie_armory) +"XM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"XO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8; + initialize_directions = 11 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_experi) +"XR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_storage) +"XS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/ruin/space/ancientstation/charlie_comm) +"XU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/bedsheet, +/obj/structure/bed/old, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_restroom) +"XV" = ( +/obj/structure/girder, +/turf/simulated/floor/plating/airless, +/area/ruin/space/ancientstation/charlie_recycler) +"XW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor_switch{ + id = "oreredemp" + }, +/obj/machinery/mineral/processing_unit_console{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_docks) +"XY" = ( +/obj/structure/nest/carppuppy, +/obj/item/fish_eggs/babycarp{ + pixel_x = -16 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"XZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/light, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_comm) +"Yb" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/charlie_kitchen) +"Yd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8; + initialize_directions = 11 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"Yg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"Yh" = ( +/obj/structure/lattice, +/obj/structure/girder, +/obj/item/stack/sheet/metal, +/turf/template_noop, +/area/template_noop) +"Yi" = ( +/obj/item/fish_eggs/babycarp{ + pixel_y = 16 + }, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"Yj" = ( +/obj/item/trash/spacetwinkie, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"Ym" = ( +/obj/item/trash/semki, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"Yq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/alarm/old{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_punishmentcell) +"Yr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/orange{ + icon_state = "0-8" + }, +/obj/machinery/power/solar_control/old_frame, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) +"Yu" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/simulated/floor/wood{ + icon_state = "wood-broken7" + }, +/area/ruin/space/ancientstation/charlie_dininghall) +"Yz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/watertank/high, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_hydroponics) +"YB" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable/orange, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"YC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/orange, +/obj/structure/cable/orange{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"YD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_warden) +"YE" = ( +/turf/simulated/wall/rust, +/area/template_noop) +"YF" = ( +/obj/structure/flora/straw_bail/alt_2, +/obj/effect/decal/straw, +/turf/simulated/floor/plating/asteroid, +/area/ruin/space/ancientstation/charlie_hydroroom) +"YG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office{ + dir = 1 + }, +/obj/machinery/light_construct/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/ruin/space/ancientstation/charlie_restroom) +"YH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_rnd) +"YO" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Dining Hall" + }, +/turf/simulated/floor/wood, +/area/ruin/space/ancientstation/charlie_dininghall) +"YS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_sec) +"YU" = ( +/obj/structure/transit_tube_pod{ + dir = 4 + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"YX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"YY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "browncorner" + }, +/area/ruin/space/ancientstation/charlie_corridor) +"Za" = ( +/obj/item/camera_assembly, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"Zc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch{ + pixel_y = -26; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_prison) +"Zh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/defibrillator, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"Zi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/oil, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"Zk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_solar) +"Zl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/can, +/obj/item/storage/bag/trash, +/obj/item/trash/can, +/obj/item/crowbar/red, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_corridor) +"Zn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating/airless, +/area/template_noop) +"Zo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/westleft{ + dir = 1 + }, +/obj/item/clothing/suit/bio_suit, +/obj/structure/closet{ + custom_door_overlay = "white"; + name = "Medical gear"; + opened = 1 + }, +/obj/item/clothing/suit/bio_suit, +/obj/item/clothing/head/bio_hood, +/obj/item/clothing/head/bio_hood, +/obj/machinery/light_construct, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"Zp" = ( +/obj/item/stack/sheet/mineral/silver{ + amount = 25 + }, +/obj/item/stack/sheet/mineral/gold{ + amount = 25 + }, +/obj/structure/rack, +/obj/item/stack/ore/bluespace_crystal{ + amount = 3 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_rnd) +"Zq" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/hivebot/range, +/obj/machinery/light_construct/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/charlie_warden) +"Zs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = list(271) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"Zu" = ( +/obj/effect/spawner/random_spawners/syndicate/loot/stetchkin, +/obj/item/clothing/under/syndicate/tacticool, +/obj/item/clothing/shoes/jackboots/cross, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"Zv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/recharge_station, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"Zw" = ( +/obj/effect/decal/remains/human, +/turf/simulated/floor/plating/asteroid/airless, +/area/template_noop) +"Zx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/ruin/space/ancientstation/charlie_warden) +"ZA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/westleft{ + dir = 1 + }, +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/iv_bag/salglu{ + name = "Saline solution" + }, +/obj/item/reagent_containers/iv_bag/salglu{ + name = "Saline solution" + }, +/obj/item/reagent_containers/iv_bag/blood/ABMinus, +/obj/item/reagent_containers/iv_bag/blood/ABPlus, +/obj/item/reagent_containers/iv_bag/blood/AMinus, +/obj/item/reagent_containers/iv_bag/blood/APlus, +/obj/item/reagent_containers/iv_bag/blood/BMinus, +/obj/item/reagent_containers/iv_bag/blood/BPlus, +/obj/item/reagent_containers/iv_bag/blood/OMinus, +/obj/item/reagent_containers/iv_bag/blood/OPlus, +/obj/machinery/light_construct, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"ZB" = ( +/obj/machinery/recharge_station, +/obj/item/robot_parts/robot_component/diagnosis_unit, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/hivebot) +"ZC" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_docks) +"ZE" = ( +/turf/simulated/wall/rust, +/area/ruin/space/ancientstation/charlie_hydroroom) +"ZG" = ( +/obj/structure/cable/orange{ + icon_state = "0-8" + }, +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/template_noop) +"ZH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/tank/air, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/charlie_engi) +"ZI" = ( +/obj/structure/lattice, +/obj/item/stack/rods, +/turf/template_noop, +/area/template_noop) +"ZL" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/atmos/glass, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/beta_atmos) +"ZM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/beta_medstorage) +"ZO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/light/small, +/obj/machinery/alarm/old{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/ruin/space/ancientstation/theta_proto) +"ZQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/ruin/space/ancientstation/charlie_armory) +"ZR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/ruin/space/ancientstation/charlie_sec) +"ZS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/toy/plushie/face_hugger, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/space/ancientstation/charlie_cryo) +"ZV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/ruin/space/ancientstation/theta_corridor) +"ZY" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor{ + id_tag = "ancient"; + use_power = 0 + }, +/turf/simulated/floor/plating, +/area/ruin/space/ancientstation/theta_solar) + +(1,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(2,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +lE +lE +lE +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(3,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WD +WD +WD +WD +WT +WT +WD +WD +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +WD +lE +WD +WD +WD +WD +WD +WD +WD +WD +lE +WD +WD +WD +WD +WD +Pc +WD +lE +WD +WD +lE +WD +WD +yV +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(4,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +WD +lE +WD +WD +lE +WD +WD +lE +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(5,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WD +WD +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +Zn +WD +WD +WD +WD +WD +WD +BD +WD +WD +WD +WD +RP +WD +WD +lE +Pc +lE +lE +WD +Pc +WD +WD +WD +Pc +lE +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(6,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WT +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +wT +BD +BD +Qv +wT +BD +BD +BD +wT +BD +WD +BD +wT +WD +WD +WD +WD +WD +WD +WD +Pc +lE +WD +lE +lE +lE +WD +lE +WD +lE +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(7,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WT +WT +WT +WT +WT +dv +WT +dv +WT +WT +WT +WD +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +wT +xD +xD +Nv +wT +xD +Pc +xD +AA +xD +Pc +xD +wT +lE +lE +WD +lE +WD +WD +WD +WT +dv +dv +lE +WD +Pc +WD +WD +WD +WD +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(8,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +dv +WT +dv +WT +dv +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +wT +xD +xD +Nv +Pc +Pc +xD +Pc +xD +xD +xD +xD +Fn +WD +WD +WD +WD +WD +WD +WT +WT +dv +dv +dv +WD +WD +WD +WD +WD +WD +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(9,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +dv +WT +WT +dv +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +wT +xD +xD +aO +wT +Pc +xD +xD +xD +kg +xD +Pc +oE +Fn +Fn +WD +WD +Pc +WT +WT +dv +WT +dv +WD +WD +WD +lE +WD +WD +WD +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(10,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WD +WT +WD +WT +dv +WT +dv +WT +dv +WT +dv +WT +WT +WT +WD +ul +ul +ul +ul +ul +ul +ul +WD +WD +WD +BD +Pc +WD +WD +wT +xD +DJ +vF +xD +WD +Pc +Pc +Pc +WD +lE +WD +lE +Pc +Pc +WD +WD +WD +WT +dv +dv +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(11,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WT +WT +WT +WT +WT +WT +WT +dv +dv +WT +WT +WD +ul +ul +nr +Wu +ul +vB +uM +ul +ul +lE +wT +BD +WD +xu +WD +wT +WD +WT +LA +WD +WD +AW +WD +WD +WD +Pc +WD +oE +WD +AW +WD +vp +lE +WT +WT +dv +WT +WT +WD +RP +WD +lE +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(12,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WD +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +dv +WT +WT +WT +WT +WT +WD +ul +VV +RW +RW +ul +RW +Fk +Zo +ul +WD +wT +Ao +Pc +WD +WD +wT +kH +WT +WT +WD +WD +WD +WD +UB +Pc +WD +WD +WD +WD +WD +WD +WD +lE +WD +WT +WT +lE +WD +WD +WD +WD +WD +yV +WD +lE +WD +lE +WD +WD +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(13,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +dv +WT +WT +dv +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +dv +dv +WT +WT +WT +WT +WD +WD +ul +GF +RW +RW +RW +RW +Nq +jt +ul +WD +wT +ce +hE +Pc +lE +WD +WD +WT +WT +wT +WD +Pc +WD +lE +WD +WD +WD +WD +WD +lE +WD +WD +WD +WD +WD +WD +lE +WD +Qm +WD +WD +lE +WD +WD +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(14,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WT +WT +dv +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WT +WD +WD +WT +WT +WT +WT +WT +WT +dv +WT +WT +WT +WT +WT +WD +WT +WD +ul +ul +ul +RW +Rj +me +ul +ul +ul +WD +wT +kH +Ao +WD +WD +WD +Pc +WD +WD +WD +WD +xu +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +WD +WD +VQ +WD +Pc +wT +WD +WD +WD +RP +WD +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(15,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +dv +WT +WT +WT +RY +vm +RY +WT +dv +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WT +WT +dv +WT +WT +WD +WT +WD +WD +ul +lt +RW +RW +pM +ZM +ry +Ay +ul +WD +wT +ce +Pc +Pc +WD +UB +WD +WD +lE +WD +WD +AW +WD +Qc +WD +WD +WD +WD +WD +WD +WD +WD +lE +WD +AW +Sc +Pc +Pc +AA +lE +lE +lE +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(16,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +dv +WT +WT +WT +dv +RY +WT +RY +Dj +dv +dv +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WT +WT +WT +dv +dv +WT +dv +dv +WT +WT +WT +WT +WT +lE +WD +iC +MQ +ty +Zh +pM +Vs +mm +cd +iC +lE +wT +Pc +hE +Pc +lE +WD +lE +WD +Pc +WD +WD +WD +WD +UB +WD +WD +lE +WD +WD +WD +WD +lE +lE +WD +WD +wT +wT +wT +wT +WD +WD +WD +WD +WD +lE +WD +WD +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(17,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +dv +WT +WT +dv +dv +RY +WT +dv +Vv +WT +dv +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +dv +WT +WT +WT +WT +WD +WT +WD +WD +lE +WD +ul +ul +ul +RW +pM +Il +ul +ul +ul +WD +wT +HS +Pc +Pc +WD +WD +WD +WD +AW +WD +lE +WD +Pc +xD +Pc +WD +fF +xD +wT +WD +lE +WD +WD +lE +lE +lE +lE +lE +lE +lE +WD +WD +WD +WD +WD +WT +WD +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(18,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WT +WT +WT +WT +WT +dv +dv +WT +WT +Yi +dv +dv +RY +WT +WT +dv +WT +WT +WD +WT +WD +WD +WD +WD +WD +WT +WD +WT +WD +WT +WD +WD +WT +WT +WT +WT +WD +WD +lE +WD +ul +QO +RW +RW +pM +hB +RW +ZA +iC +WD +wT +dT +Pc +AW +WD +UB +WD +WD +WD +WD +lE +Pc +Pc +WD +lE +Sc +Pc +Pc +wT +WD +lE +WD +WD +WD +WD +WD +lE +WD +WD +WD +WD +WD +lE +WD +WD +WT +WD +WT +WD +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(19,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +dv +WT +WT +dv +oL +WT +oL +Rk +dv +dv +RY +RY +WT +dv +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +lE +WD +WD +WD +WD +WD +lE +WD +ul +Fr +rH +RW +xQ +hB +RW +iD +ul +WD +wT +qz +Pc +WD +WD +IT +WD +WD +Pc +Pc +Pc +xD +WD +Pc +Pc +Pc +xD +WD +WD +WD +ZI +WD +WD +WD +WD +WD +BW +WD +WD +WD +WD +WD +lE +WD +WD +WD +WD +WD +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(20,1,1) = {" +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WT +WT +Yi +Dj +RY +RY +Dj +RY +WT +dv +RY +dv +dv +WT +RY +RY +WT +WD +WD +WD +WD +WD +WD +WD +WD +lE +lE +lE +lE +sE +sE +sE +sE +sE +sE +sE +WD +ul +ul +ul +ww +ul +cA +ul +iC +iC +WD +wT +Pc +WD +WD +WD +WD +WD +fF +lE +Ma +lE +LV +PJ +es +es +em +LV +LV +LV +LV +LV +LV +LV +LV +LV +LV +LV +LV +LV +LV +LV +LV +LV +lE +WD +WD +WD +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(21,1,1) = {" +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +fx +hf +ki +RY +RY +RY +WT +WT +RY +dv +WT +RY +dv +WT +RY +RY +RY +WT +WT +WD +WD +WD +WD +WD +WD +WD +WT +WD +WT +WD +sE +fO +nD +kM +tv +nk +sE +wT +YE +re +re +oB +AT +XE +re +re +Fn +Fn +Fn +uJ +oE +Pc +WD +xu +Sc +WD +bj +er +wd +nn +jm +ms +xM +Ss +tr +PP +PP +PP +PP +PP +RE +PP +PP +PP +PP +PP +Ut +PP +zh +gK +hg +SO +WD +WD +WD +WT +WT +dv +dv +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(22,1,1) = {" +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +dv +oL +Vv +kD +Rk +Dj +Vv +RY +dv +dv +vm +WT +WT +RY +dv +WT +RY +WT +RY +RY +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +sE +Pp +DM +FZ +KP +QG +EZ +Hn +oQ +My +hX +gO +If +SU +My +My +My +XM +My +lE +Bd +lE +Iy +wt +WD +SI +lE +WF +Pc +px +MZ +Hg +es +Bn +es +oV +uO +uO +uO +uO +uO +nu +nu +uO +uO +uO +nu +nu +eM +gK +Np +SO +lE +lE +lE +lE +WT +WT +dv +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(23,1,1) = {" +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +Dj +vm +jc +ng +vm +HF +dv +dv +RY +uH +hf +WT +RY +dv +WT +RY +WT +WT +RY +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +sE +uD +DM +uY +dA +Wp +mc +EO +fE +oB +un +wf +oB +oB +WT +oB +Pc +Fn +Ap +cK +WD +IT +WD +lE +WD +GZ +Pc +pX +Mt +hF +hF +ah +ZL +BN +hF +pz +wI +Cu +hF +hF +hF +pz +cF +Cu +hF +hF +pz +UY +BN +hF +LV +lE +WD +lE +WD +lE +WD +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(24,1,1) = {" +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +Lk +MP +Dj +Cx +hf +WT +WT +WT +vm +Dj +HF +WT +RY +WT +Vv +Dj +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +sE +jM +DM +DM +DM +QG +EZ +Hn +XE +GP +BD +BD +Hn +WT +WT +Pc +UB +WD +WD +IT +AW +WD +WD +WD +UB +Pc +xD +Nv +Pc +hF +Kk +ml +Kr +Mo +hF +pe +Kr +Kr +Kr +hF +Co +OL +tK +JZ +hF +Co +xx +xx +Mo +Kr +Cu +lE +LV +LV +LV +LV +WD +WT +WT +WT +dv +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(25,1,1) = {" +WD +WD +WD +WD +WD +WT +WT +WT +WT +dv +dv +dv +fx +Zw +Ti +xs +WT +dv +dv +PM +RY +WT +WT +RY +RY +RY +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +sE +kr +jV +pb +JE +xf +sE +iG +lr +GP +BD +BD +Hn +WT +lE +lE +lE +lE +lE +WD +lE +UB +WD +UB +wT +WD +Pc +kq +af +jy +iZ +oD +vr +Ms +as +gP +dU +AX +AX +JN +AX +cE +ky +JZ +hF +Kr +xx +ky +VY +AX +JN +PT +JN +IN +dw +LV +WD +dv +WT +dv +dv +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(26,1,1) = {" +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +dv +WT +dv +br +RY +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WD +WT +WD +WD +WD +WD +WD +WD +WD +lE +lE +lE +lE +lE +sE +sE +sE +sE +sE +sE +sE +Ln +XE +WT +BD +BD +do +Pc +yB +WD +WD +xu +WD +yB +WD +Pc +Pc +gY +Pc +xD +UU +Nv +xD +LV +tO +DC +DC +OX +hh +Mi +BG +NZ +Tq +hh +Tq +QQ +EY +Tq +hh +Tq +Mi +nv +NN +TX +aE +pS +aE +dy +dw +LV +WD +WT +dv +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(27,1,1) = {" +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +dv +WT +WT +WT +dv +WT +WT +WT +WT +WT +WT +WD +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +uV +fh +ao +hp +gE +Wb +pA +yG +qW +WT +pf +BD +Hn +WD +Pc +WD +WD +Pc +WD +Pc +BZ +SQ +SQ +BZ +xY +YU +DJ +WS +xD +hF +uq +fv +DC +PO +hF +ow +FV +wL +PO +hF +uq +DE +wL +VA +hF +uq +DE +wL +Kr +VA +Cu +lE +LV +LV +LV +LV +WD +WT +dv +dv +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(28,1,1) = {" +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +dv +WT +WT +dv +dv +WT +WT +WT +WT +WT +WD +WD +WD +WT +WD +WT +WD +WT +WD +WD +WD +WD +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +pA +fK +yl +tI +bK +Fj +zC +Hn +wv +GP +WT +CF +Pc +WD +WD +Pc +WD +kL +WT +Pc +BZ +SQ +BZ +SQ +BZ +xD +jJ +Az +wT +hF +Cu +rl +rl +hF +hF +Cu +pz +Uj +hF +hF +Cu +pz +Uj +hF +hF +Cu +pz +Uj +Cu +hF +hF +lE +WD +lE +WD +lE +WD +WT +WT +WT +dv +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(29,1,1) = {" +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +dv +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +pA +bR +Mu +uA +Cy +Lg +hJ +EO +On +pf +WT +nB +WD +WD +WD +WD +WD +WT +WT +WT +Ej +Ej +xD +Ej +xD +VS +VS +Nv +YE +lE +lE +WO +WO +lE +lE +lE +AQ +Hl +lE +lE +lE +AQ +Hl +lE +lE +lE +AQ +Hl +lE +lE +lE +lE +lE +lE +lE +lE +lE +WT +WT +dv +dv +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(30,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +pA +VX +NK +yl +ko +Ob +Wz +Hn +WD +WD +lE +lE +AW +WD +WD +Fn +wT +Bb +wT +vI +xD +xD +FH +fo +EJ +Nj +fF +Nv +Yh +WD +LV +rl +rl +hF +WD +hF +pz +Uj +hF +WD +LV +pz +Uj +LV +WD +LV +pz +Uj +LV +WD +WD +lE +WD +lE +WD +WD +WD +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(31,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +dv +dv +WT +WD +WD +WD +WD +WD +WD +pA +Iv +yl +pI +Qi +Wz +ma +WD +WD +WD +WD +WD +WD +WD +Pc +WD +UG +og +UG +UG +UG +UG +UG +UG +UG +VS +fF +Nv +Yh +lE +hF +Qf +TW +hF +lE +hF +dp +js +hF +lE +LV +zF +XA +LV +lE +LV +AK +zd +LV +lE +WD +lE +WD +lE +WD +WD +WD +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(32,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +dv +WT +WT +WT +WD +WD +WD +lE +lE +WD +ma +ma +vl +Dc +Dc +ma +vl +WD +UB +lE +WD +WD +Pc +wT +wT +wT +UG +va +NP +vO +rO +NP +Cp +NP +UG +xD +VS +st +YE +WD +LV +Kb +fZ +LV +WD +hF +BI +Am +hF +WD +LV +An +Lc +LV +WD +LV +Sb +mJ +LV +WD +WD +lE +WD +lE +WD +WT +WT +CH +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(33,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WT +WD +WT +WD +WT +WD +WD +WD +WD +WT +WT +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +qd +WD +WD +WD +WD +WD +WD +lE +Pc +Pc +Pc +wT +WD +lE +UG +va +zy +oe +yf +Tn +ID +ID +iW +WV +WV +xJ +Yh +lE +hF +LV +hF +LV +lE +hF +hF +hF +hF +lE +LV +LV +LV +LV +lE +LV +LV +LV +LV +lE +WD +WD +WD +lE +WT +WD +DK +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(34,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WD +WD +WT +WD +WD +WD +WD +WT +WT +WT +WT +WT +dv +dv +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +WD +xu +WD +bv +wT +Pc +yB +Pc +Pc +wT +WD +lE +it +mh +Nz +it +it +UG +UG +UG +UG +xD +VS +aN +YE +WD +WD +lE +WD +WD +WD +WD +lE +WD +WD +WD +WD +WD +lE +WD +WD +WD +WD +lE +WD +WD +WD +WD +WD +Yh +WD +Yh +WT +WD +WD +WT +WT +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(35,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WD +WD +WD +WT +WT +WT +dv +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +vG +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +OM +OM +OM +wT +WD +lE +WD +zJ +bV +Vo +WD +WD +WD +WD +YE +jU +xD +VS +YE +lE +lE +wx +wx +wx +wx +wx +wx +WD +WD +WD +WD +ZE +ZE +ZE +ZE +ZE +ZE +ZE +ZE +ZE +WD +WD +WD +lE +WD +WT +WT +WT +WT +WT +WD +WD +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(36,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WT +WT +WT +dv +dv +dv +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +xw +KF +WD +WD +WD +LQ +WD +WD +lE +lE +WD +WD +WD +zJ +Pg +Vo +WD +WD +WD +WD +YE +IQ +OM +OM +YE +WD +WD +wx +kR +kJ +Eh +zU +wx +vH +KM +KM +vH +ZE +gJ +rB +bn +aM +za +RF +cS +ZE +ZE +ZE +ZE +ZE +Cg +Cg +Cg +Cg +Cg +Cg +Cg +Cg +Cg +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(37,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +dv +dv +WT +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WD +WT +WD +WD +WD +WD +WD +WD +lE +WD +WD +WD +WD +nY +WD +WD +lE +WD +db +WD +lE +WD +WD +WD +lE +ZG +Dd +lE +WD +WD +WD +WD +lE +Rr +WD +WD +lE +WD +WD +Tr +SG +Cq +Vk +wD +wx +TZ +zH +OR +Nd +ZE +Kv +zN +zN +DY +zN +eq +YF +ew +aM +zg +FL +hx +Cg +Cg +bw +bw +bw +bw +Cg +Cg +Cg +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(38,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +dv +WT +WT +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +WD +WD +WD +lE +WD +WD +WD +WD +WD +pr +lE +WD +WD +WD +WD +lE +Rr +WD +WD +lE +WD +WD +Tr +Mw +Hs +zv +zv +OE +ot +cV +hH +Bj +rh +fG +Oz +Ki +uN +eR +Pm +du +ZE +xU +lp +RF +hx +bw +bw +bw +so +Rl +bw +bw +Cg +Cg +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(39,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +dv +dv +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +WD +lE +WD +WD +WD +lE +WD +WD +WD +WD +WD +lE +lE +WD +WD +WD +WD +lE +gW +WD +WD +lE +WD +WD +wx +ju +IA +Py +Vf +wx +OA +jq +oR +Jh +ZE +Sp +Sp +Sp +ZE +Ud +IU +pF +ZE +Sp +pP +ru +my +Mb +CU +Uu +jR +ei +jR +bw +bw +Cg +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(40,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WT +WT +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +xF +WD +WD +WD +WD +WD +dk +WD +WD +WD +lE +Rr +WD +WD +lE +WD +WD +WD +WD +WD +bB +lE +WD +WD +WD +WD +lE +Rr +WD +WD +lE +WD +WD +Tr +Mw +mq +zY +Yz +wx +nU +at +at +tw +ZE +wz +bn +jz +ew +zN +zm +zN +eb +SY +uw +nZ +wz +jR +so +jR +rM +jR +jR +an +bw +bw +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(41,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +dv +dv +dv +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +lE +Rr +WD +WD +lE +WD +WD +WD +WD +Ng +Dd +lE +WD +WD +WD +WD +lE +Rr +WD +WD +lE +WD +WD +Tr +SG +vy +Vk +Dz +wx +su +Nr +Ia +fI +ZE +Hy +gJ +Cc +ZE +Jo +zN +bn +ZE +hL +wh +Wg +SY +rM +jR +jR +ei +jR +jR +jR +jR +bw +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(42,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +dv +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WD +WD +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +lE +Rr +WD +WD +lE +lE +lE +lE +lE +KZ +Dd +lE +lE +lE +lE +lE +lE +gW +WD +WD +lE +WD +WD +wx +wJ +iy +dx +Jt +wx +vH +KM +KM +vH +ZE +Sp +Sp +Sp +ZE +YF +xb +JX +ZE +Sp +Sp +iU +my +bw +bw +jR +fP +jR +oF +TY +bw +bw +WT +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(43,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +dv +dv +dv +WT +WT +WT +WT +WT +WD +WD +WD +WD +WT +WT +WT +WT +WT +WD +WT +WT +WT +dv +dv +WT +WD +WD +WD +WD +xu +WD +WD +lE +Rr +WD +WD +lE +WD +WD +WD +WD +GD +dt +Fe +WD +WD +WD +WD +lE +Rr +WD +WD +lE +WD +WD +wx +wx +yp +Jn +wx +wx +WD +WD +WD +WD +ZE +bn +wz +bn +ew +Op +zN +zm +ew +bn +bn +bn +hx +Cg +mp +bw +Uu +Lr +bw +bw +Cg +Cg +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(44,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +dv +WT +WT +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +dv +WT +WT +WD +WD +WD +WD +WD +WD +lE +Rr +WD +WD +lE +WD +WD +WD +WD +GD +By +Fe +WD +WD +WD +WD +lE +Rr +WD +WD +lE +WD +WD +wx +yT +iy +zE +wx +WD +WD +lE +WD +WD +ZE +tE +bn +Im +ZE +zN +zN +zN +ZE +xU +wz +bn +ZE +Cg +Cg +mp +bw +bw +mp +mp +Cg +Cg +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(45,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +dv +WT +WT +WT +WT +WD +WD +WD +WD +WD +WT +WT +dv +WT +dv +dv +WT +WT +WT +dv +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +lE +Rr +WD +WD +lE +aw +aw +aw +PF +Fp +Zs +PF +PF +aw +aw +aw +aw +Rr +WD +WD +lE +WD +WD +wx +Mw +iy +zE +wx +WD +WD +yV +WD +WD +ZE +ZE +ZE +ZE +ZE +bC +bC +bC +ZE +ZE +ZE +ZE +ZE +Cg +Cg +Cg +Cg +Cg +Cg +Cg +Cg +Cg +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(46,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WT +WT +WT +dv +WT +WT +WT +WT +dv +WT +dv +WT +WT +WT +WD +WD +WD +WD +WD +WD +lE +Rr +WD +WD +lE +aw +wj +lZ +lZ +ia +aF +Kj +LW +QP +BF +EI +aw +Rr +WD +WD +lE +WD +WD +wx +JL +sZ +Dw +wx +lE +lE +yV +lE +lE +lE +lE +lE +WD +WD +WD +WD +lE +WD +WD +WD +WD +lE +WT +WT +WT +WT +WT +WT +WD +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(47,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +dv +dv +WT +dv +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +Rr +WD +WD +fr +aw +Cz +US +vn +Lz +cx +Lz +OJ +Gs +dg +tu +aw +Rr +WD +WD +lE +WD +WD +wx +PZ +mq +sT +wx +WD +WD +yV +WD +WD +WD +WD +Ed +wZ +wZ +wZ +wZ +Ed +lE +lE +lE +WD +WD +WD +WT +WD +lE +Vr +WT +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(48,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +lE +lE +lE +lE +fr +in +GS +GS +fr +zr +SW +YC +BT +PN +LK +pw +aw +aw +aw +aw +aw +in +GS +GS +fr +WD +WD +wx +Mw +iy +zE +wx +WD +WD +lE +WD +WD +lE +WD +Ed +hu +Vg +yM +Fq +Ed +WD +WD +lE +WD +WD +WD +WD +DK +ni +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(49,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +bv +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +fr +Ls +kx +rD +fr +gZ +qh +Te +Al +dX +tW +bT +aw +dI +Of +Sq +aw +LL +kx +kx +fr +WD +WD +wx +Mw +iy +zE +wx +WD +WD +lE +WD +WD +lE +WD +Ed +im +hO +rb +lv +Ed +WD +WD +lE +WD +WD +WD +WD +WD +lE +lE +lE +lE +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(50,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +Lv +KL +Ie +KL +KL +KL +lE +lE +lE +lE +fr +fr +fr +fr +WD +WD +WD +fr +lM +kx +HU +fr +ZH +Sg +gQ +rS +lY +mv +UA +gI +Su +ws +AY +aw +ie +kx +We +fr +WD +WD +fr +yz +ld +yz +fr +fr +lE +lE +lE +lE +Ol +Ol +Ed +Ed +Ed +qc +Ed +Ed +GW +GW +GW +GW +GW +GW +GW +GW +GW +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(51,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +bv +WD +WD +WD +WD +bv +WD +WD +KL +Ne +RI +jS +sR +Um +bF +KR +jT +jT +KR +yX +Or +tn +fr +fr +fr +fr +fr +fr +tq +fr +fr +aw +aw +aw +aw +Vj +Eb +Vj +aw +aw +aw +aw +aw +fr +sj +fr +fr +fr +fr +fr +wm +Sl +YX +mi +fW +ny +ny +ny +ny +Uw +en +sA +sA +sA +fJ +cC +Sa +sv +sv +XJ +FX +cW +sv +OT +sv +GW +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(52,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +Ne +zn +sr +fY +fY +eU +Ne +WD +WD +WD +WD +GS +Ag +Ag +RQ +kx +kx +RQ +Ag +Ag +Ag +Ag +dc +xv +dc +dc +dc +dc +JT +dc +fy +ge +dc +dc +xv +Ag +jW +YX +YX +AC +ep +AC +YX +vv +vA +Jk +yX +KR +jT +jT +KR +cH +Xy +cy +tp +tp +ap +cC +ca +GW +GW +GW +dr +aG +CP +sv +si +GW +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(53,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +Ne +lg +fY +fY +fY +Ny +Ne +WD +WD +WD +WD +GS +RN +hd +fr +Hv +PU +fr +Zl +Ag +jW +Ev +BK +YX +Lf +YX +BK +Ea +oN +YX +fS +GB +YX +YX +YX +Ev +nl +Ag +Dk +fr +nt +fr +hd +Ro +Ag +kl +GS +WD +WD +WD +WD +ja +QE +yY +JH +qj +ap +Xq +Ol +WD +WD +GW +qb +sv +aW +qM +eu +GW +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(54,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +bv +WD +WD +WD +WD +bv +WD +bv +WD +WD +WD +Ne +oj +PW +fY +fY +Jc +KL +lE +lE +lE +lE +ym +ym +ym +ym +ym +ym +ym +Lh +Ag +lD +Mh +uK +rA +Mh +rA +uK +Mh +Oy +jb +jb +BM +Uz +jb +jb +jb +Ib +Ag +Lh +yU +yU +yU +yU +yU +yU +yU +yU +lE +lE +lE +lE +To +To +To +To +GL +qi +cC +Ol +WD +WD +GW +qm +AL +aQ +sv +Bh +GW +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(55,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +KL +KL +qU +zt +fY +fY +KU +KL +WD +WD +WD +ym +ym +XU +Ue +ym +XU +UL +ym +ym +NL +IX +Mh +FY +DX +Mh +ls +FY +Mh +zX +jb +AN +Yb +Yb +Qr +Yb +jb +rV +Ag +yU +yU +zI +jv +Vw +Nx +AG +EU +yU +WD +WD +WD +To +To +ay +pp +To +qv +mF +Si +Ol +Ol +Ol +GW +kv +sv +aW +Qz +Kf +GW +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(56,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +Ne +eG +Qa +Hj +fY +or +ta +KL +WD +WD +WD +ym +lC +MA +mW +ym +FB +Av +RA +ym +HA +NV +Mh +vJ +fQ +Mh +vK +Ri +Mh +zX +HH +Yb +Yb +eP +xS +Yb +kY +Nh +HB +yU +yO +RH +cB +EU +KK +fU +Nt +yU +yU +WD +WD +To +FD +Jv +Yq +To +vj +ap +cC +MO +al +Ol +GW +IL +mb +li +XF +LD +GW +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(57,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WD +bv +WD +WD +WD +WD +WD +Ne +Qx +ob +ob +fY +XS +KL +KL +WD +WD +WD +rp +aH +uC +ym +ym +ym +uC +ym +ym +sK +PI +Mh +rm +Oo +Mh +AV +lS +Mh +zX +jb +aV +iY +QV +fb +qI +JF +Qh +bm +DH +As +CR +Sk +EU +Yj +ec +nN +da +ix +WD +WD +To +gS +Jv +Qq +Ld +GN +Es +ZR +MO +xk +Ol +GW +GW +GW +GW +GW +Vn +GW +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(58,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +Ne +Tc +fY +fm +TO +gj +KL +lE +lE +lE +lE +ym +HE +Me +jk +qB +bG +Me +UC +aH +SA +wE +Mh +oa +ij +NE +cQ +oa +Mh +kc +jb +It +gU +Wq +hy +Yb +QH +BP +RC +YO +Oi +Yu +AG +jO +Dq +EU +zq +da +yU +lE +lE +To +mS +Jv +Ve +To +qJ +CZ +ND +Ol +Ol +Ol +lE +WD +lE +WD +GW +ZQ +GW +lE +lE +lE +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(59,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +KL +VO +XZ +xI +ho +mV +oC +bq +bq +bq +bq +ch +aI +xR +nM +nM +nM +xR +nM +PK +FN +Ef +yQ +TA +TA +Zi +NC +FS +yQ +zX +jb +Ui +Yb +Yb +Yb +dP +jb +LI +RG +fz +tU +EE +gc +wl +pN +vR +zz +da +ix +WD +WD +To +To +To +To +To +qJ +wM +tb +Ol +WD +WD +lE +WD +lE +WD +GW +dd +GW +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(60,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +RY +WD +WD +WD +WD +WD +WD +WD +WD +Ne +DI +Rx +fm +GU +ps +KL +lE +lE +lE +lE +ym +lj +Me +py +Mf +YG +Me +Va +aH +sK +lD +Mh +TA +ZS +Wo +yu +wc +Mh +xP +jb +Sn +Yb +cw +wp +Yb +jb +Bt +Ag +qS +Oi +EU +EU +uy +Ym +EU +le +da +yU +lE +lE +WD +ja +rZ +zA +Jj +xW +ap +HO +Ol +lE +IW +IW +IW +IW +IW +ca +VB +ca +IW +lE +lE +lE +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(61,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +Ne +nb +mn +JW +fY +Ny +KL +KL +WD +WD +WD +rp +aH +uC +ym +ym +ym +ug +ym +ym +sK +lD +Mh +IJ +Hf +Mh +wn +ME +Mh +zX +jb +jb +EG +jb +wp +Yb +jb +Bt +Ag +yU +by +OO +NG +EU +EU +OO +da +da +ix +WD +WD +WD +Ol +MH +hI +ur +hI +ap +cC +Fb +WD +hG +on +Zq +pB +wP +gs +UR +hY +IW +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(62,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +RY +WD +RY +WD +WD +WD +WD +WD +WD +WD +Ne +yj +aL +dM +fY +GQ +In +KL +WD +WD +WD +ym +jB +rW +LC +ym +CI +ts +wo +ym +jK +nX +Mh +qk +Nn +Mh +md +vW +Mh +zX +jb +LP +Yb +jb +kP +dF +jb +eQ +us +yU +OV +WA +sI +EU +WN +gu +cZ +yU +yU +WD +WD +WD +ja +qJ +hI +cC +hI +Li +cC +Fb +WD +hG +on +LU +GO +YD +Vy +rx +CE +hG +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(63,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +xh +xh +WT +RY +WD +WD +WD +WD +WD +WD +WD +WD +KL +KL +WZ +zt +fY +fY +yE +KL +WD +WD +WD +ym +ym +XU +UL +ym +NO +iz +ym +ym +sK +yo +Mh +FY +Ai +Mh +ls +FY +Mh +zX +jb +lm +VP +Sf +Qe +Yb +jb +Bt +Ag +yU +yU +nj +tS +ey +mu +ec +pK +yU +WD +WD +WD +WD +Ol +HK +De +aK +qj +ap +cC +Fb +WD +hG +on +vt +Hx +XG +Mv +Zx +WE +IW +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(64,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +dv +xh +xh +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +Ne +BE +fY +fY +fY +Jc +KL +lE +lE +lE +lE +ym +ym +ym +ym +ym +ym +ym +qs +Ag +yo +Mh +uK +rA +Mh +rA +uK +Mh +Oy +jb +jb +jb +jb +BM +jb +jb +Bt +Ag +qs +yU +yU +yU +yU +yU +yU +yU +yU +lE +lE +lE +lE +Ol +Ol +Ol +Ol +GA +Hd +cC +Fb +WD +hG +pE +UR +qo +Fl +GO +MI +oP +IW +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(65,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +xh +xh +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +Ne +BE +fY +fY +AM +Um +bF +KR +jT +jT +KR +yX +EM +tn +fr +tD +eB +fr +Xd +Ag +Yg +bU +LO +RG +RG +RG +Bz +RV +IK +RG +ba +Yd +RG +RG +RG +bU +CW +Ag +Jd +fr +qQ +fr +hd +eg +Ag +RL +UM +pL +pL +pL +pL +mR +Hp +SD +ON +dC +Ov +cC +Ol +lE +IW +IW +Gf +IW +IW +hG +IW +IW +IW +lE +lE +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(66,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +dv +WT +xh +WT +RY +RY +WD +WD +WD +WD +WD +WD +WD +WD +Ne +xK +rk +fY +fY +eU +Ne +WD +WD +WD +WD +GS +Ag +Ag +RQ +kx +kx +RQ +Ag +nJ +Ag +nJ +eK +IH +eK +gk +YY +eK +Wc +eK +rz +zf +eK +eK +IH +nJ +Ag +nJ +Ag +RQ +kx +RQ +Ag +Ag +vA +Jk +yX +KR +jT +jT +KR +cH +Xy +cy +Ot +zj +Ee +Xq +Ol +WD +WD +hG +UR +hG +WD +lE +WD +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(67,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WT +xh +xh +dv +WT +WD +RY +RY +WD +WD +WD +WD +WD +WD +KL +Ne +au +fY +nF +vZ +bp +pL +pL +pL +pL +UM +WB +Ag +fr +fr +fr +fr +fr +fr +tq +fr +fr +zQ +zQ +zQ +zQ +Ci +lG +Ci +zQ +zQ +yL +zQ +zQ +fr +tq +fr +fr +fr +fr +fr +wm +Ag +Ag +kl +GS +WD +WD +WD +WD +ja +qJ +Jq +hI +hI +ap +cC +Ol +Ol +Ol +Ol +ap +Fs +Fs +pD +Fs +Fs +Fs +lE +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(68,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +xh +dv +WT +RY +WT +WD +WD +WD +WD +WD +WD +WD +WD +Lv +KL +Ie +KL +KL +KL +lE +lE +lE +lE +fr +fr +fr +fr +WD +WD +WD +fr +zO +kx +kx +fr +XV +gv +wF +QX +iA +Wl +Jm +mz +yK +Gh +MV +yL +jF +kx +We +fr +WD +WD +fr +GS +GS +GS +fr +fr +lE +lE +lE +lE +Ol +Ol +Ol +Ol +ic +fH +yA +Ol +kF +OB +Ol +AF +Fs +Rm +Ww +GH +GH +Fs +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(69,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WT +xh +xh +xh +WT +WT +RY +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +fr +Ls +kx +We +fr +cc +cc +cc +cc +xl +lL +Jm +sd +iB +av +Gm +zQ +xn +kx +ST +fr +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +Ol +cY +Jb +Ol +Jb +Os +Jb +pV +hI +hI +UV +pq +Fs +nf +nf +nf +aU +Fs +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(70,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +xh +xh +xh +WT +WT +WT +RY +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WD +WD +WD +WD +WD +fr +in +GS +GS +fr +cc +OS +et +cc +Jm +qX +zi +dj +iB +Gd +gz +zQ +in +GS +DG +fr +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +Ol +jf +aR +KY +Pv +qy +YS +Pv +YS +YS +zc +km +dY +wy +fw +TP +DO +Fs +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(71,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WT +dv +xh +xh +xh +dv +dv +WT +RY +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WD +WD +WT +WD +WD +WD +WD +lE +Rr +WD +WD +fr +cc +Gp +Gp +cc +gw +FG +FO +sg +mo +iB +oi +zQ +Rr +WD +Cw +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +Ol +tB +JI +Ol +iP +Jb +Jb +fl +Jb +Jb +fl +Jb +Fs +hj +gD +Eq +yq +Fs +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(72,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +xh +xh +WT +WT +dv +WT +RY +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +lE +Rr +WD +WD +lE +sO +wY +Gp +sO +Jm +Un +lw +kV +ro +RU +zQ +YE +Rr +WD +Cw +lE +WD +WD +WD +WD +WD +WD +WD +lE +WD +WD +WD +WD +Ol +PR +EP +VI +po +xT +VI +xa +yc +VI +po +xT +Fs +bl +Oc +gB +nf +Fs +lE +lE +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(73,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +xh +xh +dv +WT +dv +WT +RY +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +dv +dv +WT +WD +WD +WD +WD +lE +gW +WD +WD +lE +cc +Xn +Xn +cc +hv +bs +Xx +qF +yL +zQ +zQ +lE +gW +WD +Cw +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +lE +Ol +LE +ND +VI +Pq +pg +VI +bt +hc +VI +Pq +pg +Fs +Fs +Fs +Fs +Fs +Fs +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(74,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +xh +dv +WT +dv +WT +WT +RY +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +dv +WT +WT +WT +WT +WD +WD +WD +mO +WD +WD +WD +Km +cc +Wf +Wf +cc +iJ +Pu +LR +WD +lE +WD +WD +lE +Rr +WD +Cw +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +Ol +tZ +Zc +VI +WK +TJ +VI +yy +Ad +VI +Ex +TJ +VI +WD +WD +WD +WD +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(75,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +dv +WT +WT +dv +dv +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +lE +WD +WD +WD +lE +WD +WD +lE +WD +LR +vS +LR +WD +lE +WD +WD +lE +Rr +WD +Cw +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +Ol +Ol +VI +VI +VI +VI +VI +fL +fL +VI +VI +VI +VI +WD +WD +WD +WD +lE +WD +WD +WT +WD +WD +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(76,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +dv +dv +dv +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +dv +dv +WT +WT +WT +lE +WD +WD +db +WD +gW +WD +lE +WD +WD +lE +WD +lE +Dd +lE +WD +lE +WD +WD +lE +gW +WD +Cw +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +WD +WD +WT +WD +WT +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(77,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WD +WD +WD +WD +lE +WD +WD +WD +lE +WD +WD +WD +WD +lE +Dd +lE +WD +lE +WD +WD +lE +Rr +WD +Cw +lE +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +cc +cc +cc +sO +cc +cc +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(78,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +dv +WT +WT +WD +WD +WD +WD +bY +WD +WD +WD +WD +WD +WD +WT +WD +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +gW +lE +WD +lE +WD +WD +WD +WD +lE +Dd +lE +WD +lE +WD +WD +lE +gW +WD +Cw +lE +WD +WD +WD +WD +WD +wH +wH +WD +WD +bM +bM +bM +WD +WD +wH +wH +WD +WD +WD +Fy +oT +wY +wY +OS +cc +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +dv +dv +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(79,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WD +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WD +WD +Pc +bY +JC +WD +WD +xu +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +jT +WD +WD +Rr +WD +WD +lE +WD +WD +lE +WD +lE +Dd +lE +WD +lE +WD +WD +lE +Rr +WD +Cw +lE +WD +WD +WD +WD +wH +wH +lE +WD +cc +bM +Za +bM +cc +WD +lE +wH +wH +WD +WD +Fy +oT +wY +wY +wY +cc +WD +WD +WD +WT +WD +WD +WD +WD +WD +WT +dv +dv +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(80,1,1) = {" +WD +WD +WD +WD +WD +WT +WD +WD +WD +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WT +WT +dv +WT +WT +WT +WT +WD +WD +Pc +up +Jr +WD +WD +WD +WD +yV +WD +WD +WD +WD +yV +WD +WD +WD +WD +WD +WD +lE +Rr +WD +sl +sl +sl +sl +sl +WD +lE +Dd +lE +WD +lE +WD +WD +lE +Rr +WD +Cw +lE +WD +WD +WD +wH +wH +WD +lE +wH +cc +cc +cc +cc +cc +wH +lE +WD +wH +wH +WD +cc +cc +cc +sO +cc +cc +WD +WD +WD +WT +WD +WD +WD +WT +WT +WT +dv +dv +WT +WT +WT +WD +WT +WD +WD +WD +WD +WD +WD +WD +"} +(81,1,1) = {" +WD +WD +WD +WD +WT +WT +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WD +WT +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WD +WD +JC +LF +Pc +lE +WD +WD +JC +Gv +Pc +WD +WD +JC +yV +Pc +WD +WD +WD +WD +WD +fC +dL +gm +sl +ar +ar +ar +sl +WD +df +Nu +df +WD +lE +WD +WD +lE +Rr +WD +Cw +lE +WD +WD +WD +wH +lE +WD +wH +wH +cc +xp +bh +ZB +cc +wH +wH +WD +lE +wH +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WD +WD +WT +dv +WT +dv +WT +WT +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +"} +(82,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +dv +dv +dv +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WT +WT +dv +WT +WT +WT +WD +WD +Pc +lE +WD +WD +WD +WD +bO +Wj +JC +WD +WD +JC +yV +JC +WD +WD +WD +WD +fC +fC +gH +CQ +sl +dV +HG +ar +sl +WD +df +KD +df +WD +lE +WD +WD +RO +FI +Gb +KX +RO +RO +lE +lE +WD +wH +wH +wH +wH +cc +Xg +BY +mM +cc +wH +wH +wH +wH +WD +WD +bv +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +dv +WT +dv +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(83,1,1) = {" +WD +WD +WD +WD +WT +WD +WD +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +lE +JC +bY +Jr +lE +lE +bO +CS +Jr +lE +lE +lE +lE +fC +PE +yF +CQ +sl +SF +uI +ar +Et +bJ +qE +Hk +qE +bJ +bJ +RO +RO +RO +ez +ZV +sQ +Kz +Jf +fq +fq +wH +cc +cc +cc +cc +cc +ti +bh +Xg +cc +cc +cc +cc +cc +wH +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WD +WT +WT +WT +WT +dv +dv +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +"} +(84,1,1) = {" +WD +WD +WD +WD +WT +WD +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WD +WD +WD +xu +WD +WD +WD +WD +WD +Pc +bY +Pc +WD +WD +JC +bY +JC +WD +WD +WD +WD +gm +CQ +CQ +qK +sl +MU +MD +sl +Et +iM +GG +KD +Nf +Ck +rf +RO +Lq +Ur +hU +vb +gG +ZV +Rf +Do +Fv +cc +cc +TR +SR +TR +uB +uB +Ll +uB +uB +TR +nQ +SR +cc +cc +WD +WD +WD +WD +WD +WD +WD +WT +WD +WD +WT +WD +WT +WT +WT +WT +WT +dv +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +"} +(85,1,1) = {" +WD +WD +WD +WD +WT +WD +WT +WT +WT +dv +XY +RY +aA +WT +WT +WT +WT +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +xu +WD +WD +Pc +bY +Pc +WD +WD +bO +oJ +Pc +WD +WD +WD +WD +gm +cv +Pr +XO +BA +QF +KT +Lb +Xk +Xk +te +RJ +Id +Du +Xk +Vd +EF +Po +Po +oY +kZ +Po +kb +mC +SM +Ll +SR +SR +nQ +nQ +Ll +TR +zD +TR +Ll +SR +TR +zD +SR +Ll +WD +WD +WD +WD +bv +WD +WD +WD +WD +WT +WT +WT +WT +WT +dv +WT +dv +dv +WT +dv +WT +WT +WD +WD +WD +WT +WD +WD +WD +WD +WD +"} +(86,1,1) = {" +WD +WD +WD +WT +WT +WT +WT +WT +dv +dv +RY +Dj +RY +RY +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +Pc +WD +lE +WD +WD +JC +Gv +Pc +WD +WD +JC +Gv +Pc +WD +WD +WD +WD +gm +fg +SE +iV +CQ +uR +Bm +fC +bJ +bJ +bJ +qE +bJ +bJ +bJ +RO +Jg +FK +ZV +ZV +kX +ZV +QD +EN +Fv +cc +cc +zu +zD +zu +uB +TR +zu +TR +uB +zu +zu +TR +cc +cc +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +dv +dv +WT +WT +dv +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +"} +(87,1,1) = {" +WD +WD +WD +WD +WD +WT +dv +dv +dv +pi +RY +RY +vm +hf +dv +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +Fw +AB +Pc +WD +WD +Fw +sL +Pc +WD +WD +Pc +bY +JC +WD +WD +WD +WD +fC +AP +Ix +Rs +fC +fC +fC +fC +WD +lE +WD +WD +WD +lE +WD +RO +RO +RO +Vc +Is +kX +bg +Jf +fq +fq +wH +cc +cc +nQ +TR +uB +ze +nQ +TR +uB +SR +nQ +cc +cc +wH +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +dv +dv +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +"} +(88,1,1) = {" +WD +WT +WD +WD +WT +WT +WT +WT +WT +RY +vm +Cx +Vv +RY +WT +WT +WT +WT +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +Fw +Wj +Pc +WD +WD +JC +Gv +JC +WD +WD +Pc +up +ea +WD +WD +WD +WD +fC +fC +fC +dW +fC +WD +WD +WD +WD +lE +WD +WD +WD +lE +WD +WD +WD +RO +RO +RO +Hi +RO +RO +lE +lE +WD +wH +cc +cc +cc +cc +uB +Ll +uB +cc +cc +cc +cc +wH +WD +WD +WD +bv +WD +WD +WD +WD +WT +WD +WT +WD +WT +WT +WT +WT +dv +dv +WT +WT +dv +WT +WT +WT +WD +WT +WD +WD +WD +WD +WD +WD +"} +(89,1,1) = {" +WD +WD +WD +WD +WD +WT +dv +WT +dv +RY +RY +Zw +Vv +dv +dv +dv +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +JC +bY +JC +WD +WD +Fw +bY +Jr +WD +WD +JC +bY +JC +WD +WD +WD +WD +lf +PA +gL +OI +lf +WD +WD +WD +eS +eS +eS +Vq +eS +eS +eS +WD +WD +WD +RO +Zv +kX +KH +RO +WD +WD +WD +WD +WD +bM +bM +cc +ti +bh +Xg +cc +bM +bM +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +dv +WT +WT +dv +dv +dv +dv +WT +WT +WT +WT +WT +WD +WT +WD +WD +WD +WD +"} +(90,1,1) = {" +WD +WD +WD +WT +WT +WT +dv +dv +dv +xs +RY +RY +Dj +WT +dv +WT +WT +WT +WD +WD +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +JC +LF +JC +lE +lE +JC +bY +JC +lE +lE +bO +LF +JC +lE +lE +lE +lE +ZY +Pz +SL +xd +lf +lE +lE +eS +eS +kh +eS +KQ +eS +pk +eS +eS +lE +lE +RO +vi +Ae +qf +RO +WD +WD +WD +WD +WD +bM +WL +cc +iq +bh +lc +cc +Se +bM +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WD +WD +WT +WT +WT +WT +WT +dv +dv +dv +dv +WT +dv +dv +WT +WT +WT +WD +WD +WD +WD +WD +"} +(91,1,1) = {" +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +HF +vm +RY +dv +WT +dv +dv +WT +WD +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +JC +yV +JC +WD +WD +Pc +LF +JC +WD +WD +JC +yV +JC +WD +WD +WD +WD +lf +iX +gL +Pk +lf +WD +WD +eS +CC +PB +Ni +PB +Ni +PB +NS +eS +WD +WD +RO +Zv +Ae +EC +RO +WD +WD +wH +WD +WD +bM +bM +cc +ZB +bh +EK +cc +bM +bM +WD +WD +wH +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +dv +dv +WT +dv +dv +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +"} +(92,1,1) = {" +WD +WD +WD +WT +WT +WT +WT +dv +dv +dv +WT +WT +RY +WT +WT +dv +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +lE +JC +Gv +Pc +lE +lE +Pc +yV +Pc +lE +lE +Pc +yV +Pc +lE +lE +Dy +Dy +ZY +NT +Ju +hT +oO +Vq +eS +eS +eS +Ni +eS +wX +eS +Ni +eS +eS +eS +Vq +oO +ox +hA +ox +Gj +WD +wH +wH +lE +wH +cc +cc +cc +uB +Ll +uB +cc +cc +cc +wH +lE +wH +wH +WD +WD +WD +WD +bv +WD +WD +WD +WT +WD +WT +WT +WT +WT +WT +WT +dv +dv +WT +WT +dv +dv +WT +WT +WD +WD +WD +WD +WD +WD +"} +(93,1,1) = {" +WD +WD +WD +WT +WT +WT +WT +dv +dv +dv +WT +WT +RY +WT +WT +dv +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +JC +yV +yV +Br +cn +yV +yV +cn +cn +cn +cn +cn +yV +ji +cn +cn +cn +xA +cg +Be +kz +ii +uF +TK +dq +JA +Wi +eh +Wi +Oa +Hz +DB +Px +oZ +Px +kQ +cO +uc +jH +TV +kK +Gj +WD +wH +WD +wH +cc +cc +lT +bP +zu +SR +Ly +Ly +Ly +cc +cc +wH +WD +wH +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +dv +dv +WT +dv +dv +dv +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +"} +(94,1,1) = {" +WD +WD +WD +WT +WT +dv +WT +WT +WT +dv +WT +WT +RY +RY +dv +dv +dv +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +lE +lE +lE +Pc +yV +Pc +lE +lE +Pc +Gv +Pc +lE +WD +Pc +LF +Pc +lE +lE +Dy +Dy +ZY +Yr +Eg +Dh +oO +Vq +eS +eS +eS +Ni +eS +ZO +eS +Ni +eS +eS +eS +Vq +oO +bN +PC +En +Gj +WD +wH +lE +wH +cc +Ah +Ar +ac +SR +Ul +TR +jX +Ly +SR +cc +wH +lE +wH +WD +WD +WD +WD +WD +WD +WT +WD +WT +WT +WT +dv +tM +dv +WT +WT +dv +dv +dv +dv +WT +dv +WT +WT +WT +WD +WD +WD +WD +WD +"} +(95,1,1) = {" +WD +WT +WD +WT +WT +WT +WT +XY +dv +dv +WT +WT +dv +vm +dv +WT +WT +RY +RY +RY +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +JC +Gv +JC +WD +WD +bO +nI +Pc +WD +WD +JC +Gv +Pc +WD +WD +WD +WD +lf +lf +lf +qw +lf +WD +WD +eS +kw +PB +Ni +PB +Ni +PB +Ub +eS +WD +WD +Gj +kU +Cb +CK +Gj +WD +wH +WD +wH +cc +pY +yN +pY +TR +zu +SR +zD +SR +Tv +cc +wH +WD +wH +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +sV +RY +RY +WT +dv +WT +dv +dv +WT +dv +WT +WT +WT +WD +WD +WD +WD +WD +WD +"} +(96,1,1) = {" +WD +WD +WD +WT +WT +WT +RY +Zu +aA +WT +WT +WT +WT +RY +RY +WT +RY +RY +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +JC +bY +JC +lE +lE +JC +LF +WD +lE +lE +JC +bY +JC +lE +lE +lE +lE +XC +yt +sB +vs +lf +lE +lE +eS +eS +mI +eS +CV +eS +Rc +eS +eS +lE +lE +Gj +QM +dB +he +Gj +WD +WD +cc +cc +cc +lq +pY +aY +SR +zu +nQ +SR +zu +SR +cc +cc +cc +WD +WD +WT +WD +WD +WD +WD +WT +WT +WT +WT +Yi +RY +RY +RY +kB +WT +dv +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +"} +(97,1,1) = {" +WD +WT +WT +WT +WT +lN +vm +hf +RY +RY +Dj +RY +RY +dv +RY +RY +Vv +RY +WT +WT +WD +WD +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +JC +bY +JC +WD +WD +JC +lE +Pc +WD +WD +Pc +cm +ea +WD +WD +WD +WD +XC +Ba +Rd +Ik +lf +WD +WD +WD +eS +eS +eS +Vq +eS +eS +eS +WD +WD +WD +Gj +Lw +cJ +cf +Gj +WD +WD +bM +bM +cc +pY +aY +TR +TR +SR +SR +jX +Ul +pa +cc +bM +bM +WD +WD +WD +WD +WD +WT +WD +WT +WT +WT +WT +RY +hf +RY +hR +RY +WT +WT +WT +WT +WT +dv +WT +WT +WD +WT +WD +WD +WD +WD +WD +"} +(98,1,1) = {" +WD +WD +WD +WT +WT +RY +Vv +RY +Rk +RY +dv +WT +RY +RY +Dj +RY +RY +WT +WT +WT +WD +WD +WD +WD +WT +WD +WD +WD +WD +WD +WD +WD +JC +bY +JC +xu +WD +WD +WD +WD +WD +WD +JC +bY +JC +WD +WD +WD +WD +XC +yt +rv +Zk +lf +WD +WD +WD +WD +lE +WD +WD +WD +lE +WD +WD +WD +gy +gy +uZ +Ct +uZ +gy +WD +WD +bM +WL +cc +No +SR +jX +zu +zu +nQ +SR +nQ +bD +cc +Se +bM +WD +WD +WD +WT +WD +WT +WT +WT +WT +WT +gV +RY +RY +Cx +yI +RY +RY +RY +dv +WT +dv +dv +WT +WT +WD +WT +WD +WD +WD +WD +WD +"} +(99,1,1) = {" +WD +WD +WD +WT +WT +xB +Cx +zW +Dj +WT +WT +WT +dv +dv +RY +dv +dv +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +Pc +bY +WD +WD +WD +WD +WD +WD +xu +WD +JC +mr +ea +WD +WD +WD +WD +HN +HN +HN +wk +HN +HN +HN +HN +WD +lE +WD +WD +WD +lE +WD +gy +gy +gy +lW +nS +WW +XR +gy +lE +lE +bM +bM +cc +sU +pm +TQ +zD +SR +zu +zu +aY +SR +cc +bM +bM +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +RY +RY +RY +Dj +RY +dv +dv +hf +WT +dv +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +"} +(100,1,1) = {" +WD +WD +WT +WT +WT +WT +NW +RY +RY +WT +WT +WT +dv +dv +RY +dv +dv +WT +WT +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +Pc +LF +lE +WD +WD +WD +WD +WD +WD +WD +Pc +Gv +JC +WD +WD +WD +WD +HN +ck +uQ +ig +LZ +hk +pC +HN +mD +mD +mD +ZC +mD +mD +mD +gy +nS +gb +lW +XR +aj +rL +Ir +WD +WD +cc +cc +cc +Bv +Af +tR +nQ +Ul +SR +nQ +SR +St +cc +cc +cc +WD +WD +WD +WD +WT +WT +WT +WT +WT +RY +Dj +RY +vm +RY +RY +WT +WT +RY +RY +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +"} +(101,1,1) = {" +WD +WD +WD +WT +WT +WT +WT +dv +dv +WT +WT +WT +WT +WT +RY +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +Pc +yV +WD +WD +WD +DS +WD +WD +Pc +WD +JC +bY +Pc +WD +WD +WD +WD +wq +rF +sY +ig +WP +kN +YH +wS +aZ +vM +WX +gp +DR +Ge +DW +uZ +sM +mL +Jp +nS +WW +ut +Ir +WD +WD +WD +wH +cc +cc +EX +No +SR +SR +No +vw +Af +cc +cc +wH +WD +WD +WD +WD +WT +WT +WT +WT +WT +RY +RY +WT +dv +bd +hf +WT +WT +WT +WT +Dj +WT +WT +WT +WD +WD +WT +WD +WD +WD +WD +WD +WD +"} +(102,1,1) = {" +WD +WD +WD +WT +WT +WT +WT +dv +WT +WT +WT +WT +WT +RY +RY +WT +WT +WT +WT +WT +WT +WT +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +JC +Gv +JC +WD +WD +WD +WD +Gv +JC +WD +JC +bY +Pc +WD +WD +WD +WD +wq +gn +Iu +fk +Pd +Na +JS +Na +xN +Bl +tQ +Bl +Fi +BR +Bl +eL +Dg +oo +Dg +Dg +CG +rE +Ir +WD +WD +WD +wH +wH +cc +cc +cc +uB +Ll +uB +cc +cc +cc +wH +wH +WD +WD +WD +WD +WT +WT +WT +WT +WT +RY +dv +WT +dv +WT +WT +dv +WT +WT +RY +RY +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +"} +(103,1,1) = {" +WD +WD +WD +WT +WT +WT +dv +WT +WT +WT +WT +WT +WT +Dj +WT +WT +WT +WT +WT +WT +WT +WT +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +Fw +nI +JC +WD +WD +WD +lE +bY +JC +WD +JC +LF +JC +WD +WD +WD +WD +wq +rF +ag +ig +CY +ov +iw +sD +aZ +vM +zL +gp +lF +oA +Gw +uZ +mP +xG +uT +FT +ou +bS +gy +WD +WD +WD +WD +wH +bM +bM +cc +Ey +SR +Ey +cc +bM +bM +wH +WD +WD +WD +WT +WT +WT +WT +WT +dv +WT +RY +WT +WT +WT +dv +WT +WT +WT +WT +RY +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +"} +(104,1,1) = {" +WD +WD +WT +WT +WT +WT +dv +WT +WT +WT +WT +WT +WT +RY +Vv +RY +dv +dv +dv +WT +WT +WT +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +JC +LF +JC +lE +lE +WD +Pc +bY +JC +lE +JC +yV +JC +lE +lE +lE +lE +HN +Xe +Cd +ig +Uo +RX +kW +Gy +mD +mD +mD +sn +zo +Gw +uU +gy +gy +gy +gy +gy +QK +Nw +gy +WD +WD +WD +WD +WD +bM +WL +cc +Ey +jX +Ey +cc +Se +bM +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +RY +RY +vm +RY +dv +WT +WT +WT +NW +RY +WT +WT +WT +WD +WD +WT +WT +WD +WD +WD +WD +WD +WD +"} +(105,1,1) = {" +WD +WT +WD +WT +WT +WT +dv +WT +WT +WT +WT +dv +NR +vm +RY +hf +RY +WT +dv +WT +WT +WT +WT +WT +WT +WD +WD +WT +WT +WT +WD +WD +JC +yV +Pc +WD +WD +WD +JC +bY +JC +WD +Pc +yV +JC +WD +WD +WD +WD +HN +HN +HN +HT +HN +HN +HN +HN +mD +yP +BU +ax +sc +mK +ha +WY +qC +MX +vX +jl +tN +tN +mD +lE +lE +lE +WD +WD +bM +bM +cc +Ey +SR +Ey +cc +bM +bM +WD +WD +WD +WD +WT +WT +WT +WT +dv +WT +RY +Rk +RY +RY +hf +RY +WT +dv +RY +RY +vm +WT +WT +WT +WT +WD +WT +WD +WD +WD +WD +WD +WD +WD +"} +(106,1,1) = {" +WD +WT +WD +WT +WT +WT +dv +dv +WT +dv +WT +dv +Qs +RY +GM +RY +Rk +dv +WT +WT +WT +WT +WT +WT +WD +WD +WD +WT +WD +WD +WD +WD +WD +yV +WD +WD +WD +WD +JC +LF +Pc +WD +WD +yV +WD +WD +WD +WD +WD +WD +HN +JJ +HW +wW +LS +uo +pG +mD +wG +wA +Gw +sc +mK +EL +bE +At +vx +dN +wa +Ch +tN +mD +WD +WD +WD +wH +WD +cc +cc +cc +bM +Ll +bM +cc +cc +cc +WD +wH +WD +WD +WD +WT +WT +WT +dv +WT +RY +RY +vm +RY +RY +WT +WT +QN +RY +hf +RY +fx +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +"} +(107,1,1) = {" +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +dv +WT +wU +Dj +ej +zK +vm +fx +dv +dv +dv +dv +WT +WT +WT +WT +WD +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +JC +yV +JC +WD +WD +WD +WD +WD +WD +WD +WD +WD +HN +Ec +Oq +MC +MC +TN +ff +mD +ht +rU +xm +sc +tt +HD +bE +MM +vk +tN +Tg +HC +Bi +mD +WD +WD +WD +wH +lE +wH +cc +rj +rj +SR +rj +rj +cc +wH +lE +wH +WD +WD +WT +WT +WT +WT +dv +WT +WT +RY +RY +RY +Dj +dv +WT +RY +Rk +Cx +RY +Dj +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +"} +(108,1,1) = {" +WD +WD +WD +WT +WT +WT +WT +WT +WT +dv +WT +WT +dv +RY +GE +Cx +RY +Ml +WT +dv +dv +dv +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +JC +yV +Pc +WD +WD +WD +WD +WD +WD +WD +WD +WD +HN +Bf +fX +Mx +Pa +JB +Zp +mD +wG +XW +Gw +Kc +Ta +Ta +ol +hP +iT +tN +tN +dN +tN +mD +WD +WD +WD +wH +wH +WD +cc +vP +qe +qN +tL +YB +cc +WD +wH +wH +WD +WD +WD +WT +WT +WT +WT +WT +WT +dv +RY +WT +dv +WT +dv +qL +vm +RY +HF +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(109,1,1) = {" +WD +WD +WD +WD +WT +WT +WT +WT +dv +dv +dv +WT +WT +RY +vm +RY +hf +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +yV +WD +WD +WD +WD +WD +lE +lE +lE +lE +lE +HN +HN +HN +HN +HN +HN +HN +mD +jn +jn +Cm +Bw +ak +DU +DU +Wy +tN +oI +tN +tN +tN +mD +WD +WD +WD +WD +wH +lE +cc +cc +SR +cp +SR +cc +cc +lE +wH +WD +WD +WD +WT +WD +WT +WT +WT +RY +RY +RY +RY +WT +WT +WT +WT +WT +NW +HF +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +"} +(110,1,1) = {" +WD +WD +WD +WD +WT +WD +WT +WT +dv +WT +dv +dv +dv +WT +RY +WT +WT +WT +dv +dv +dv +RY +Dj +WT +WT +WT +WT +WT +WT +WD +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +WD +WD +lE +WD +WD +lE +mD +mD +Gk +Gk +mD +mD +qV +BV +be +BV +mD +Gk +Gk +mD +mD +lE +lE +WD +WD +wH +WD +wH +cc +SR +tg +SR +cc +wH +WD +wH +WD +WD +WD +WT +WT +WD +WT +RY +RY +WT +RY +RY +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(111,1,1) = {" +WD +WD +WD +WD +WD +WT +WT +WT +WT +dv +WT +dv +WT +WT +RY +WT +dv +WT +WT +Yi +RY +vm +RY +aA +XY +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +WD +WD +lE +WD +WD +lE +WD +WD +WD +WD +WD +WD +qV +Dl +gN +Ab +mD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +cc +cc +cc +cc +cc +WD +WD +WD +WD +WD +WD +WT +WD +RY +RY +RY +WT +WT +WT +WT +WT +WT +WT +WD +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(112,1,1) = {" +WD +WD +WT +WD +WD +WD +WT +WT +WT +WT +WT +WT +dv +dv +NW +RY +WT +WT +WT +RY +Rk +eF +sp +vm +RY +WT +dv +dv +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +WD +WD +lE +WD +WD +lE +WD +WD +WD +WD +WD +WD +qV +Kw +gN +Oj +mD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +cc +bM +VH +bM +cc +WD +WD +WD +WD +WD +WD +WT +WT +WD +WT +WT +WT +WT +WT +WT +WT +WT +WT +WD +WD +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(113,1,1) = {" +WD +WD +WT +WT +WD +WT +WT +WT +WT +WT +WT +WT +dv +dv +dv +NW +RY +RY +RY +RY +Dj +AZ +RY +Cx +Dj +dv +dv +dv +dv +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +WD +WD +lE +WD +IV +WD +WD +WD +WD +qV +Dl +Ra +Ab +mD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +bM +bM +bM +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WD +WT +WT +WT +WT +WT +WT +WD +WT +WD +WT +WD +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(114,1,1) = {" +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +dv +WT +dv +RY +RY +hf +RY +uH +RY +RY +dv +WT +dv +WT +WT +WT +WD +WD +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +lE +WD +WD +WD +WD +WD +WD +Fz +BV +BV +BV +aZ +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WT +WT +WT +WT +WT +WT +WD +WD +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(115,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WD +WT +WT +WT +dv +dv +WT +dv +wV +RY +vm +RY +WT +WT +WT +WT +WT +WT +WD +WD +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WD +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(116,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(117,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(118,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WD +WD +WT +WD +WD +WT +WD +WD +WT +WD +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(119,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WT +WT +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} +(120,1,1) = {" +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +WD +"} diff --git a/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm deleted file mode 100644 index e5155fc01d73..000000000000 --- a/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm +++ /dev/null @@ -1,11493 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ab" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"ak" = ( -/obj/effect/decal/warning_stripes/east, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"aq" = ( -/turf/simulated/wall/r_wall, -/area/ruin/space/ancientstation/hivebot) -"ar" = ( -/mob/living/simple_animal/hostile/hivebot/tele, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/space/ancientstation/hivebot) -"aw" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"ax" = ( -/mob/living/simple_animal/hostile/carp, -/turf/template_noop, -/area/template_noop) -"az" = ( -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/space/ancientstation/hivebot) -"aA" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "redcorner" - }, -/area/ruin/space/ancientstation/sec) -"aJ" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/engine/vacuum, -/area/ruin/space/ancientstation/atmos) -"aQ" = ( -/obj/machinery/computer{ - desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; - dir = 1; - name = "Broken Computer" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/sec) -"aS" = ( -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/atmos) -"aU" = ( -/obj/effect/decal/remains/human, -/turf/template_noop, -/area/template_noop) -"aW" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/plasteel{ - amount = 30 - }, -/obj/item/stack/sheet/mineral/titanium{ - amount = 30 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/space/ancientstation/hivebot) -"aZ" = ( -/turf/simulated/wall, -/area/ruin/space/ancientstation/hivebot) -"bf" = ( -/obj/structure/particle_accelerator/power_box, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"bk" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/power/apc{ - dir = 4; - name = "Theta RnD APC"; - pixel_x = 24; - report_power_alarm = 0; - start_charge = 0 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"bm" = ( -/obj/effect/decal/remains/robot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/space/ancientstation/hivebot) -"bp" = ( -/obj/effect/decal/warning_stripes/arrow, -/obj/structure/transit_tube/station, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"bs" = ( -/obj/structure/table, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/capacitor, -/obj/item/stock_parts/micro_laser, -/obj/item/stack/cable_coil, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"bu" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/silver{ - amount = 25 - }, -/obj/item/stack/sheet/mineral/gold{ - amount = 25 - }, -/obj/item/stack/ore/bluespace_crystal, -/obj/item/stack/ore/bluespace_crystal, -/obj/item/stack/ore/bluespace_crystal, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/space/ancientstation/hivebot) -"by" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/space/ancientstation/hivebot) -"bz" = ( -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"bB" = ( -/obj/structure/sign/poster/official/nanotrasen_logo, -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/comm) -"bF" = ( -/obj/effect/decal/cleanable/blood/oil, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/space/ancientstation/hivebot) -"bH" = ( -/obj/structure/lattice, -/obj/item/stack/cable_coil{ - amount = 1; - desc = "Another one." - }, -/turf/template_noop, -/area/ruin/space/ancientstation/betanorth) -"bR" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"bV" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/effect/decal/remains/robot{ - icon_state = "gib2" - }, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/space/ancientstation/hivebot) -"bW" = ( -/obj/effect/decal/remains/robot{ - icon_state = "gib2" - }, -/mob/living/simple_animal/hostile/hivebot/tele, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/space/ancientstation/hivebot) -"bY" = ( -/obj/effect/decal/remains/robot{ - icon_state = "gibup" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/space/ancientstation/hivebot) -"bZ" = ( -/obj/structure/cable, -/obj/machinery/power/smes/engineering{ - charge = 0 - }, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/engi) -"cf" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "blue" - }, -/area/ruin/space/ancientstation/comm) -"cn" = ( -/obj/effect/decal/remains/robot{ - icon_state = "gib5" - }, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/space/ancientstation/hivebot) -"co" = ( -/obj/effect/decal/cleanable/blood/oil, -/mob/living/simple_animal/hostile/hivebot/strong, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/space/ancientstation/hivebot) -"cp" = ( -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/engi) -"cs" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"ct" = ( -/turf/simulated/wall/r_wall/rust{ - damage = 400 - }, -/area/ruin/space/ancientstation/thetacorridor) -"cu" = ( -/obj/structure/shuttle/engine/large{ - dir = 4 - }, -/turf/simulated/wall, -/area/ruin/space/ancientstation/hivebot) -"cB" = ( -/obj/structure/particle_accelerator/particle_emitter/left, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"cG" = ( -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/engi) -"cH" = ( -/obj/structure/table, -/obj/machinery/door_control{ - id = "ancient"; - name = "Charlie Station Lockdown Button" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/comm) -"cI" = ( -/obj/effect/decal/remains/robot{ - icon_state = "gibup" - }, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/space/ancientstation/hivebot) -"cL" = ( -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2"; - pixel_y = 1 - }, -/obj/machinery/power/apc{ - dir = 4; - name = "Charlie Command APC"; - pixel_x = 24; - report_power_alarm = 0; - start_charge = 0 - }, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/comm) -"cN" = ( -/obj/structure/sign/poster/official/nanomichi_ad, -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/betanorth) -"cX" = ( -/obj/machinery/computer{ - desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; - name = "Broken Computer" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "blue" - }, -/area/ruin/space/ancientstation/comm) -"cY" = ( -/obj/machinery/computer{ - desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; - name = "Broken Computer" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/comm) -"da" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/universal, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"dc" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/urinal{ - pixel_y = 30 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation) -"di" = ( -/obj/machinery/computer{ - desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; - name = "Broken Computer" - }, -/obj/item/paper/fluff/ruins/oldstation/damagereport, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/comm) -"dj" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "bluecorner" - }, -/area/ruin/space/ancientstation/comm) -"dn" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"dp" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"dx" = ( -/obj/effect/decal/remains/robot{ - icon_state = "gib5" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/space/ancientstation/hivebot) -"dy" = ( -/obj/structure/sign/poster/contraband/random, -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation) -"dF" = ( -/obj/structure/table, -/obj/item/reagent_containers/glass/beaker{ - pixel_x = -4; - pixel_y = 8 - }, -/obj/item/reagent_containers/syringe{ - pixel_y = -2 - }, -/obj/item/reagent_containers/glass/beaker{ - pixel_x = 7; - pixel_y = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"dQ" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/grille{ - obj_integrity = 35 - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"dU" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/atmos) -"dV" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "blue" - }, -/area/ruin/space/ancientstation/comm) -"dX" = ( -/obj/structure/sign/poster/official/build, -/turf/simulated/wall/rust{ - damage = 50 - }, -/area/ruin/space/ancientstation/atmos) -"eb" = ( -/obj/structure/table, -/obj/item/megaphone, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/comm) -"ec" = ( -/obj/structure/cable, -/obj/machinery/power/apc{ - dir = 4; - name = "Beta Engineering APC"; - pixel_x = 24; - report_power_alarm = 0; - start_charge = 0 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/atmos) -"ef" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/alarm/all_access{ - dir = 8; - pixel_x = 24; - report_danger_level = 0 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "blue" - }, -/area/ruin/space/ancientstation/comm) -"ek" = ( -/obj/structure/particle_accelerator/particle_emitter/right, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"el" = ( -/obj/machinery/particle_accelerator/control_box, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"em" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation) -"eo" = ( -/obj/structure/door_assembly/door_assembly_ext, -/obj/structure/lattice, -/turf/template_noop, -/area/ruin/space/ancientstation/betamincorridor) -"ep" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = -28 - }, -/obj/effect/decal/remains/robot{ - icon_state = "gib5" - }, -/obj/item/taperecorder{ - pixel_x = -5 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"er" = ( -/obj/machinery/conveyor, -/obj/item/circuitboard/ore_redemption, -/obj/item/stack/sheet/glass/fifty{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/metal/fifty{ - pixel_x = -3; - pixel_y = 3 - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betamincorridor) -"ev" = ( -/obj/machinery/alarm/all_access{ - pixel_y = 24; - report_danger_level = 0 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"ey" = ( -/obj/structure/closet/crate/engineering/electrical, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/machinery/light/small/built{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"eA" = ( -/mob/living/simple_animal/hostile/hivebot/strong, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/space/ancientstation/hivebot) -"eH" = ( -/obj/machinery/alarm/all_access{ - dir = 8; - pixel_x = 24; - report_danger_level = 0 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/atmos) -"eJ" = ( -/obj/structure/table, -/obj/item/lighter/zippo, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/comm) -"eM" = ( -/obj/structure/table, -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/item/coin, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/comm) -"eN" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = 28 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"eR" = ( -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/hivebot) -"eY" = ( -/obj/structure/table, -/obj/item/deck/cards, -/obj/item/folder/blue, -/obj/item/pen, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/comm) -"fe" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/template_noop) -"ff" = ( -/obj/machinery/door/airlock, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation) -"fh" = ( -/obj/structure/girder, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betamincorridor) -"fj" = ( -/obj/structure/closet/crate/engineering/electrical, -/obj/item/airlock_electronics, -/obj/item/airlock_electronics, -/obj/item/apc_electronics, -/obj/item/apc_electronics, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"fl" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"fr" = ( -/obj/structure/table/reinforced, -/obj/machinery/the_singularitygen/tesla, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"fs" = ( -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2"; - pixel_y = 1 - }, -/obj/item/stack/cable_coil{ - amount = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"fu" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "blue" - }, -/area/ruin/space/ancientstation/comm) -"fv" = ( -/obj/machinery/light/small{ - dir = 8; - pixel_y = -8 - }, -/obj/structure/mirror{ - name = "dusty mirror"; - pixel_x = -26 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation) -"fx" = ( -/obj/item/mining_scanner{ - desc = "A scanner that checks surrounding rock for useful minerals, click the button to scan the area around; it can also be used to stop gibtonite detonations. Wear material scanners for optimal results." - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betamincorridor) -"fA" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/metal{ - amount = 20 - }, -/obj/item/stack/sheet/metal{ - amount = 20 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/space/ancientstation/hivebot) -"fF" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/plasma{ - amount = 25 - }, -/obj/item/stack/sheet/mineral/uranium{ - amount = 25 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/space/ancientstation/hivebot) -"fL" = ( -/obj/machinery/computer{ - desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; - name = "Broken Computer" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "blue" - }, -/area/ruin/space/ancientstation/comm) -"fM" = ( -/obj/machinery/door/poddoor{ - id_tag = "ancient" - }, -/obj/machinery/door/airlock/command{ - name = "Theta Station Access" - }, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"fP" = ( -/obj/structure/grille/broken, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betamincorridor) -"fQ" = ( -/obj/machinery/atmospherics/unary/vent_pump{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/engine, -/area/ruin/space/ancientstation/atmos) -"fR" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "whitepurple" - }, -/area/ruin/space/ancientstation/rnd) -"ga" = ( -/obj/structure/toilet{ - pixel_y = 12 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation) -"gg" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/alarm/all_access{ - dir = 4; - pixel_x = -24; - report_danger_level = 0 - }, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"gi" = ( -/obj/machinery/door/firedoor, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"gl" = ( -/obj/structure/lattice, -/turf/simulated/mineral/random, -/area/template_noop) -"gm" = ( -/obj/item/stack/cable_coil{ - amount = 2; - desc = "Piece of cable." - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"gp" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"gs" = ( -/obj/structure/table, -/obj/machinery/recharger, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "blue" - }, -/area/ruin/space/ancientstation/comm) -"gv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"gz" = ( -/obj/structure/table, -/obj/item/tank/internals/emergency_oxygen, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 0; - icon_state = "blue" - }, -/area/ruin/space/ancientstation/comm) -"gC" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"gD" = ( -/obj/structure/mirror{ - name = "dusty mirror"; - pixel_x = -26 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation) -"gF" = ( -/obj/effect/decal/cleanable/fungus, -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/thetacorridor) -"gG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"gJ" = ( -/obj/structure/table, -/obj/item/reagent_containers/syringe{ - pixel_x = -6; - pixel_y = 12 - }, -/obj/item/reagent_containers/glass/bottle/water{ - pixel_x = -5; - pixel_y = 2 - }, -/obj/item/slime_extract/grey{ - pixel_x = 7 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"gL" = ( -/turf/simulated/wall/rust{ - damage = 30 - }, -/area/ruin/space/ancientstation/betamincorridor) -"gP" = ( -/turf/simulated/wall/rust{ - damage = 80 - }, -/area/ruin/space/ancientstation/betanorth) -"gQ" = ( -/obj/item/stack/rods, -/turf/simulated/mineral/random, -/area/space/nearstation) -"gR" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance_hatch{ - req_access = list(271) - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"gV" = ( -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2"; - pixel_y = 1 - }, -/obj/machinery/power/smes/engineering{ - charge = 0 - }, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/engi) -"gX" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"he" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/obj/effect/decal/cleanable/blood/oil, -/obj/item/crowbar, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"hf" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/science, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"hj" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-dead" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"hl" = ( -/obj/item/shard{ - icon_state = "small" - }, -/turf/template_noop, -/area/template_noop) -"hm" = ( -/obj/machinery/constructable_frame/machine_frame, -/obj/item/stock_parts/matter_bin, -/turf/simulated/floor/bluegrid{ - icon_state = "gcircuit"; - name = "Mainframe Floor"; - nitrogen = 100; - oxygen = 0; - temperature = 80 - }, -/area/ruin/space/ancientstation/thetacorridor) -"hn" = ( -/obj/machinery/computer{ - desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; - dir = 1; - name = "Broken Computer" - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"hp" = ( -/obj/structure/cable/yellow, -/turf/simulated/floor/plating/airless, -/area/template_noop) -"hr" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"hs" = ( -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/betacargo) -"hB" = ( -/obj/item/stack/cable_coil, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betamincorridor) -"hE" = ( -/obj/structure/safe/floor{ - known_by = list("theta") - }, -/obj/item/stack/sheet/mineral/diamond/fifty{ - amount = 1; - layer = 3.1 - }, -/obj/item/stack/sheet/bluespace_crystal{ - amount = 2 - }, -/obj/item/areaeditor/create_area_only/theta, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/comm) -"hH" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/item/shard, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"hI" = ( -/obj/structure/girder, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"hN" = ( -/obj/structure/door_assembly/door_assembly_mhatch, -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2"; - pixel_y = 1 - }, -/obj/effect/landmark/tiles/damageturf, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"hR" = ( -/obj/structure/lattice, -/obj/item/stack/tile, -/turf/template_noop, -/area/ruin/space/ancientstation/betanorth) -"hY" = ( -/turf/simulated/mineral/random, -/area/template_noop) -"hZ" = ( -/obj/structure/grille/broken, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"if" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/lattice/catwalk, -/turf/template_noop, -/area/template_noop) -"ig" = ( -/obj/machinery/alarm/all_access{ - dir = 8; - pixel_x = 24; - report_danger_level = 0 - }, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"ik" = ( -/obj/structure/mirror{ - name = "dusty mirror"; - pixel_x = 26 - }, -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation) -"it" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - obj_integrity = 200 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"iu" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/cleanable/generic, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"iw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/hydroponics) -"ix" = ( -/obj/item/wirecutters/brass{ - desc = "A pair of wirecutters made of brass. The handle feels freezing cold to the touch. One of the fancy signature instuments of the Chief Engineer tool set. Looks burnt and damaged. Wonder if I could find the rest of them..."; - toolspeed = 1 - }, -/turf/template_noop, -/area/template_noop) -"iB" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"iD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/science, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"iF" = ( -/obj/structure/grille/broken, -/obj/item/shard, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"iG" = ( -/obj/structure/transit_tube/cap{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/betanorth) -"iK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/airlock/command/glass{ - name = "Bridge" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/comm) -"iM" = ( -/obj/structure/girder/reinforced{ - obj_integrity = 120 - }, -/turf/template_noop, -/area/template_noop) -"iO" = ( -/obj/structure/girder/reinforced, -/turf/simulated/mineral/random, -/area/space/nearstation) -"iW" = ( -/obj/structure/girder/reinforced{ - obj_integrity = 120 - }, -/obj/machinery/light/small/built{ - dir = 8 - }, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"iX" = ( -/obj/structure/safe/floor, -/obj/item/clothing/suit/space/hardsuit/mining{ - armor = list("melee"=10,"bullet"=5,"laser"=5,"energy"=5,"bomb"=35,"bio"=80,"rad"=35,"fire"=40,"acid"=60); - desc = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating. Dusty plates covered with a bit of rust, it has been left long time ago. The date of made says 2535 year, how it came up here..."; - name = "An old aged mining hardsuit" - }, -/obj/item/paper{ - info = "This is mine! I said so. I found it in rocks so its mine. I saw how one guy from cargo stares on my finding. Oh this suit is much, much better than this nasty NASA void suits CC gave us. I WILL NOT GIVE IT TO ANYONE, ITS MINE NOW!" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betacargo) -"ja" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"jf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/chem_master, -/obj/item/reagent_containers/glass/beaker, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/rnd) -"ji" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/highsecurity{ - name = "Prototype Laboratory"; - req_access = list(271) - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "whitehall" - }, -/area/ruin/space/ancientstation/proto) -"jl" = ( -/obj/machinery/atmospherics/binary/pump{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/atmos) -"jn" = ( -/obj/machinery/door/airlock/science, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"jo" = ( -/obj/structure/girder, -/turf/simulated/mineral/random, -/area/template_noop) -"jv" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/glass/fifty{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"jx" = ( -/obj/item/stack/sheet/plasteel{ - amount = 2 - }, -/turf/simulated/mineral/random, -/area/template_noop) -"jC" = ( -/obj/item/stack/rods, -/turf/template_noop, -/area/ruin/space/ancientstation/betamincorridor) -"jD" = ( -/obj/structure/door_assembly/door_assembly_min{ - desc = "Once destroyed cargo-painted airlock. Looks like it has rusty lable on it - External Mining Point" - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betamincorridor) -"jE" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/transit_tube/cap{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"jH" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"jK" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"jL" = ( -/obj/structure/table, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/item/crowbar, -/obj/item/flashlight/flare/glowstick/random, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"jM" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/grille{ - obj_integrity = 25 - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betamincorridor) -"jN" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "blue" - }, -/area/ruin/space/ancientstation/comm) -"jO" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/science{ - name = "Artificial Program Core Room" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"jR" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"jU" = ( -/obj/structure/sign/poster/official/cleanliness, -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation) -"jY" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/ruin/space/ancientstation/hivebot) -"kj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"kk" = ( -/obj/machinery/light, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"km" = ( -/obj/machinery/r_n_d/circuit_imprinter, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/rnd) -"kx" = ( -/obj/machinery/conveyor_switch/oneway{ - obj_integrity = 70 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betamincorridor) -"kD" = ( -/obj/effect/decal/warning_stripes/southwestcorner, -/obj/effect/decal/warning_stripes/northwestcorner, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"kF" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/comm) -"kI" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/item/shard{ - icon_state = "small" - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"kK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/power/apc{ - dir = 1; - name = "Bete North Corridor APC"; - pixel_y = 24; - report_power_alarm = 0; - start_charge = 0 - }, -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2"; - pixel_y = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"kL" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"kN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"kS" = ( -/obj/structure/closet/crate/engineering/electrical, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"kX" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"kZ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/engi) -"lc" = ( -/obj/structure/closet/crate, -/obj/item/circular_saw, -/obj/item/retractor, -/obj/item/hemostat, -/obj/item/scalpel, -/obj/item/cautery, -/obj/item/FixOVein, -/obj/item/surgicaldrill, -/obj/item/bonegel, -/obj/item/bonesetter, -/obj/item/stack/medical/bruise_pack/advanced, -/obj/effect/decal/cleanable/cobweb2, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"lh" = ( -/obj/structure/sign/poster/contraband/donut_corp, -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/sec) -"lk" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"ll" = ( -/turf/simulated/wall/rust{ - damage = 50 - }, -/area/ruin/space/ancientstation/atmos) -"lp" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-dead" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"lv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"lw" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-dead" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"lB" = ( -/turf/simulated/wall/rust{ - damage = 50 - }, -/area/ruin/space/ancientstation/betanorth) -"lD" = ( -/obj/structure/plasticflaps/mining, -/obj/machinery/conveyor, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betamincorridor) -"lJ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"lU" = ( -/obj/item/shard, -/turf/template_noop, -/area/template_noop) -"lY" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"mn" = ( -/obj/structure/table/reinforced, -/obj/item/healthanalyzer/advanced{ - desc = "A prototype hand-held body scanner able to distinguish vital signs of the subject."; - name = "prototype health analyzer" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"mp" = ( -/obj/machinery/conveyor, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betamincorridor) -"mq" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/machinery/recharge_station, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"mx" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "arrivalcorner" - }, -/area/ruin/space/ancientstation/comm) -"my" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/warning_stripes/southeast, -/obj/effect/decal/warning_stripes/northwest, -/obj/effect/mob_spawn/human/oldstation/oldeng, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"mF" = ( -/obj/effect/landmark/tiles/damageturf, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"mH" = ( -/obj/machinery/computer{ - desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; - name = "Broken Computer" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/sec) -"mL" = ( -/obj/structure/table, -/obj/item/crowbar, -/obj/item/flashlight/flare/glowstick/random, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"mM" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "blue" - }, -/area/ruin/space/ancientstation/comm) -"mN" = ( -/obj/structure/table, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/item/paper/fluff/ruins/oldstation/generator_manual, -/obj/item/stack/cable_coil{ - amount = 15 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"mP" = ( -/obj/structure/table/reinforced, -/obj/machinery/light{ - dir = 8 - }, -/obj/item/paper/fluff/ruins/oldstation/protohealth, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"mQ" = ( -/obj/structure/table, -/obj/item/trash/plate, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"mT" = ( -/obj/item/stack/ore/iron, -/obj/effect/landmark/tiles/damageturf, -/turf/simulated/floor/plating/airless, -/area/template_noop) -"mU" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/command{ - name = "Alpha Station Access" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"mX" = ( -/obj/structure/table, -/obj/machinery/recharger, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"nb" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"nc" = ( -/obj/machinery/shower{ - dir = 8 - }, -/obj/machinery/door/window/westright, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation) -"nh" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"nk" = ( -/obj/structure/window/reinforced, -/obj/item/crowbar/brass{ - desc = "A brass crowbar. It feels faintly warm to the touch. One of the fancy signature instuments of the Chief Engineer tool set. Looks burnt and damaged. Wonder if I could find the rest of them..."; - toolspeed = 1 - }, -/turf/simulated/floor/engine/vacuum, -/area/ruin/space/ancientstation/atmos) -"nt" = ( -/obj/effect/decal/warning_stripes/arrow{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/betanorth) -"nu" = ( -/obj/structure/transit_tube/crossing/horizontal, -/turf/template_noop, -/area/template_noop) -"nA" = ( -/obj/machinery/door/poddoor{ - id_tag = "ancient" - }, -/obj/machinery/door/airlock/command{ - name = "Beta Station Access" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"nS" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"nU" = ( -/obj/machinery/door/poddoor{ - id_tag = "ancient" - }, -/obj/machinery/door/airlock/command{ - name = "Theta Station Access" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"nX" = ( -/obj/structure/girder, -/obj/structure/lattice, -/turf/template_noop, -/area/ruin/space/ancientstation/betamincorridor) -"oa" = ( -/obj/structure/grille{ - obj_integrity = 25 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"og" = ( -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"oi" = ( -/obj/structure/sign/mining, -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/betamincorridor) -"ok" = ( -/obj/structure/table, -/obj/machinery/kitchen_machine/microwave, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"on" = ( -/obj/structure/table, -/obj/item/flashlight/pen, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"oo" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"oq" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/spawner/window/reinforced, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" - }, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/sec) -"or" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/betanorth) -"ot" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/plating/airless, -/area/template_noop) -"ou" = ( -/obj/effect/decal/cleanable/fungus, -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation) -"oy" = ( -/obj/structure/rack, -/obj/item/storage/bag/ore, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betacargo) -"oE" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"oK" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"oL" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering{ - name = "Engineering" - }, -/obj/machinery/door/poddoor{ - id_tag = "ancient" - }, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/powered) -"oX" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/template_noop, -/area/template_noop) -"pb" = ( -/obj/item/shard{ - icon_state = "small" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/atmos) -"pf" = ( -/obj/structure/chair, -/obj/item/paper/ruins/oldstation/slimesexperiments{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"pg" = ( -/obj/structure/transit_tube/station/reverse{ - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"ph" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 0; - icon_state = "green" - }, -/area/ruin/space/ancientstation/hydroponics) -"pv" = ( -/turf/simulated/wall/rust{ - damage = 70 - }, -/area/ruin/space/ancientstation/betamincorridor) -"pB" = ( -/obj/structure/transit_tube_pod{ - dir = 4 - }, -/turf/template_noop, -/area/template_noop) -"pD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/firedoor, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"pF" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betacargo) -"pM" = ( -/obj/structure/table, -/obj/item/dice/d6, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 0; - icon_state = "blue" - }, -/area/ruin/space/ancientstation/comm) -"qd" = ( -/obj/item/screwdriver/brass{ - desc = "A screwdriver made of brass. The handle feels freezing cold. One of the fancy signature instuments of the Chief Engineer tool set. Looks burnt and damaged. Wonder if I could find the rest of them..."; - toolspeed = 1 - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betacargo) -"qe" = ( -/obj/machinery/power/solar, -/obj/structure/cable/yellow{ - d2 = 8; - icon_state = "0-8" - }, -/turf/simulated/floor/plating/airless, -/area/template_noop) -"qg" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm/all_access{ - dir = 8; - pixel_x = 24; - report_danger_level = 0 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"qj" = ( -/obj/machinery/optable{ - name = "Robotics Operating Table" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/rnd) -"qt" = ( -/obj/structure/rack, -/obj/item/stack/cable_coil, -/obj/structure/cable, -/obj/machinery/power/apc{ - dir = 4; - name = "Charlie Engineering APC"; - pixel_x = 24; - report_power_alarm = 0; - start_charge = 0 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "yellow" - }, -/area/ruin/space/ancientstation/engi) -"qv" = ( -/obj/structure/table, -/obj/item/soap/nanotrasen, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "blue" - }, -/area/ruin/space/ancientstation/comm) -"qw" = ( -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/betamincorridor) -"qx" = ( -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"qz" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betaengi) -"qD" = ( -/obj/effect/decal/warning_stripes/arrow, -/obj/structure/transit_tube/station, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"qK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/warning_stripes/southeast, -/obj/effect/decal/warning_stripes/northwest, -/obj/structure/showcase/machinery/oldpod, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"qS" = ( -/obj/structure/transit_tube/horizontal, -/turf/template_noop, -/area/template_noop) -"qU" = ( -/obj/machinery/light{ - dir = 1; - in_use = 1 - }, -/obj/effect/decal/warning_stripes/east, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"qV" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/unary/vent_pump{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"qW" = ( -/obj/item/mounted/frame/apc_frame, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betacargo) -"qX" = ( -/obj/item/stack/cable_coil{ - amount = 3; - desc = "And another one." - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"rb" = ( -/obj/structure/table, -/obj/item/restraints/handcuffs, -/obj/item/clothing/mask/gas, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"rd" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"rf" = ( -/obj/machinery/smartfridge/secure/extract, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"rm" = ( -/turf/simulated/floor/bluegrid{ - icon_state = "gcircuit"; - name = "Mainframe Floor"; - nitrogen = 100; - oxygen = 0; - temperature = 80 - }, -/area/ruin/space/ancientstation/thetacorridor) -"rq" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"rx" = ( -/obj/item/soap/nanotrasen, -/obj/machinery/shower{ - dir = 8 - }, -/obj/machinery/door/window/westleft, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation) -"rO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/sec) -"rQ" = ( -/obj/structure/door_assembly/door_assembly_ext, -/turf/template_noop, -/area/template_noop) -"rS" = ( -/obj/item/shard{ - icon_state = "medium" - }, -/obj/structure/lattice, -/turf/template_noop, -/area/ruin/space/ancientstation/betanorth) -"sc" = ( -/obj/machinery/door/airlock/highsecurity, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/hivebot) -"sr" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/structure/table, -/obj/machinery/door_control{ - id = "proto"; - name = "Theta Prototype Lab Lockdown Button" - }, -/obj/item/paper/ruins/oldstation/protoinventory, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"su" = ( -/obj/structure/sign/mining, -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/betanorth) -"sv" = ( -/obj/structure/sign/redcross{ - icon_state = "greencross" - }, -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation) -"sx" = ( -/obj/structure/girder, -/obj/structure/lattice, -/turf/template_noop, -/area/ruin/space/ancientstation/betanorth) -"sz" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced, -/obj/structure/grille{ - obj_integrity = 25 - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"sA" = ( -/obj/structure/flora/rock/pile, -/obj/effect/landmark/tiles/damageturf, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"sD" = ( -/obj/effect/decal/cleanable/fungus, -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/engi) -"sF" = ( -/obj/item/solar_assembly, -/obj/structure/lattice, -/turf/template_noop, -/area/template_noop) -"sH" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"sI" = ( -/obj/machinery/constructable_frame/machine_frame, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/matter_bin, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"sQ" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/betanorth) -"sS" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"sV" = ( -/obj/item/solar_assembly, -/turf/template_noop, -/area/template_noop) -"sZ" = ( -/obj/effect/decal/remains/robot{ - icon_state = "gibup" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"ta" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"tg" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/structure/closet/crate, -/obj/item/storage/box/lights/mixed, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"tk" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"tm" = ( -/obj/item/pickaxe, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"tt" = ( -/obj/machinery/door/airlock/external{ - name = "Mining Internal Access"; - req_access = list(271) - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betamincorridor) -"ty" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/light, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"tz" = ( -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/thetacorridor) -"tG" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/comm) -"tK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/mob/living/simple_animal/hostile/hivebot/strong, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"tL" = ( -/obj/item/stack/rods, -/turf/template_noop, -/area/template_noop) -"tY" = ( -/obj/machinery/field/generator, -/obj/effect/decal/cleanable/cobweb2, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"ud" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/comm) -"uf" = ( -/obj/structure/table, -/obj/item/stack/sheet/glass, -/obj/item/stack/sheet/glass, -/obj/item/stock_parts/matter_bin, -/obj/item/stock_parts/scanning_module, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"ug" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/universal, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/atmos) -"uj" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"uk" = ( -/turf/simulated/wall/r_wall/rust, -/area/ruin/space/ancientstation/thetacorridor) -"uo" = ( -/obj/machinery/atmospherics/binary/pump{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"uy" = ( -/obj/structure/lattice, -/obj/structure/girder, -/turf/template_noop, -/area/ruin/space/ancientstation/atmos) -"uD" = ( -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "cautioncorner" - }, -/area/ruin/space/ancientstation/engi) -"uG" = ( -/obj/structure/table, -/obj/item/storage/firstaid/ancient, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless{ - dir = 5; - icon_state = "whitehall" - }, -/area/ruin/space/ancientstation/betanorth) -"uJ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"uM" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/alarm/all_access{ - dir = 4; - pixel_x = -24; - report_danger_level = 0 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"uR" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-dead" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "green" - }, -/area/ruin/space/ancientstation/hydroponics) -"ve" = ( -/obj/structure/reagent_dispensers/watertank/high, -/obj/item/reagent_containers/glass/bucket, -/obj/item/reagent_containers/glass/bucket, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/hydroponics) -"vf" = ( -/obj/machinery/vending/hydroseeds, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "greencorner" - }, -/area/ruin/space/ancientstation/hydroponics) -"vl" = ( -/obj/machinery/door/firedoor/closed{ - obj_integrity = 40 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"vw" = ( -/turf/simulated/wall/rust{ - damage = 90 - }, -/area/ruin/space/ancientstation/betacargo) -"vG" = ( -/obj/effect/decal/cleanable/egg_smudge, -/obj/machinery/alarm/all_access{ - pixel_y = 24; - report_danger_level = 0 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"vJ" = ( -/obj/machinery/door/airlock, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation) -"vL" = ( -/obj/machinery/the_singularitygen, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"vM" = ( -/obj/machinery/door/firedoor/closed, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"vV" = ( -/obj/structure/rack, -/obj/item/shovel, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betacargo) -"vZ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/airlock/highsecurity{ - name = "Prototype Laboratory"; - req_access = list(271) - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "whitehall" - }, -/area/ruin/space/ancientstation/proto) -"wd" = ( -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"wh" = ( -/obj/structure/flora/rock, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"wi" = ( -/obj/structure/table/reinforced, -/obj/machinery/light{ - dir = 4 - }, -/obj/item/paper/ruins/oldstation/prototesla, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"wl" = ( -/obj/item/roller, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless{ - dir = 4; - icon_state = "whitehall" - }, -/area/ruin/space/ancientstation/betanorth) -"wp" = ( -/obj/item/shard{ - icon_state = "small" - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/atmos) -"wq" = ( -/obj/structure/table, -/obj/item/tank/internals/oxygen, -/obj/item/clothing/mask/breath, -/obj/item/tank/internals/oxygen, -/obj/item/clothing/mask/breath, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "yellow" - }, -/area/ruin/space/ancientstation/engi) -"wu" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/hydroponics) -"ww" = ( -/obj/structure/table, -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2"; - pixel_y = 1 - }, -/obj/machinery/power/apc{ - dir = 8; - name = "Charlie Security APC"; - pixel_x = -24; - report_power_alarm = 0; - start_charge = 0 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"wB" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betamincorridor) -"wD" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"wE" = ( -/obj/machinery/light/small, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"wF" = ( -/obj/item/stack/cable_coil, -/turf/template_noop, -/area/ruin/space/ancientstation/betamincorridor) -"wJ" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/mob/living/simple_animal/hostile/hivebot, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"wT" = ( -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/rnd) -"wU" = ( -/obj/machinery/light/small, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"wV" = ( -/turf/template_noop, -/area/ruin/space/ancientstation/betanorth) -"wW" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/alarm/all_access{ - dir = 4; - pixel_x = -24; - report_danger_level = 0 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"wX" = ( -/obj/machinery/chem_heater, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/rnd) -"wZ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "whitepurple" - }, -/area/ruin/space/ancientstation/rnd) -"xb" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-dead" - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"xo" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"xu" = ( -/obj/machinery/seed_extractor, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/hydroponics) -"xw" = ( -/obj/structure/closet/crate/engineering{ - name = "plasma tank crate" - }, -/obj/item/tank/internals/plasma/full, -/obj/item/tank/internals/plasma/full, -/obj/item/tank/internals/plasma/full, -/obj/item/tank/internals/plasma/full, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"xx" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"xA" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medical Bay"; - obj_integrity = 80 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"xD" = ( -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"xP" = ( -/obj/structure/cable/yellow{ - d2 = 8; - icon_state = "0-8" - }, -/turf/simulated/floor/plating/airless, -/area/template_noop) -"xV" = ( -/turf/template_noop, -/area/ruin/space/ancientstation/betamincorridor) -"xW" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "arrivalcorner" - }, -/area/ruin/space/ancientstation/comm) -"yd" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"yh" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"yo" = ( -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" - }, -/obj/machinery/power/apc{ - dir = 1; - name = "Theta Prototype Lab APC"; - pixel_y = 24; - report_power_alarm = 0; - start_charge = 0 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"ys" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medical Bay" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"yt" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"yw" = ( -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/betaengi) -"yG" = ( -/obj/machinery/portable_atmospherics/canister, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betaengi) -"yO" = ( -/obj/item/paper/safe_code{ - language = "Sol Common"; - owner = "theta"; - pixel_x = -6; - pixel_y = -6 - }, -/obj/effect/decal/cleanable/blood/old, -/turf/simulated/floor/bluegrid{ - icon_state = "gcircuit"; - name = "Mainframe Floor"; - nitrogen = 100; - oxygen = 0; - temperature = 80 - }, -/area/ruin/space/ancientstation/thetacorridor) -"yQ" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/remains/human, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"yS" = ( -/turf/template_noop, -/area/ruin/space/ancientstation/betaengi) -"za" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/lattice/catwalk, -/turf/template_noop, -/area/template_noop) -"zd" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"zi" = ( -/obj/structure/table/reinforced, -/obj/item/gun/energy/e_gun/old, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"zk" = ( -/obj/structure/lattice, -/turf/template_noop, -/area/ruin/space/ancientstation/atmos) -"zl" = ( -/obj/machinery/power/tesla_coil{ - desc = "A massive coil with a built-in capacitor, collects energy from lightnings on hit"; - name = "tesla coil prototype" - }, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"zo" = ( -/obj/machinery/computer{ - desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; - name = "Broken Computer" - }, -/obj/item/paper/fluff/ruins/oldstation/report, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/comm) -"zr" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/cans/cola, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/sec) -"zt" = ( -/obj/machinery/computer{ - desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; - name = "Broken Computer" - }, -/obj/item/card/id/away/old/midengi, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "yellow" - }, -/area/ruin/space/ancientstation/engi) -"zw" = ( -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "yellow" - }, -/area/ruin/space/ancientstation/engi) -"zx" = ( -/obj/effect/spawner/window/reinforced, -/obj/machinery/door/poddoor{ - id_tag = "proto" - }, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/proto) -"zN" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"zQ" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical/old, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"zR" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"zU" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Hydroponics" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/hydroponics) -"zV" = ( -/turf/simulated/wall/r_wall/rust{ - damage = 360 - }, -/area/ruin/space/ancientstation/thetacorridor) -"zX" = ( -/obj/structure/table, -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/item/cultivator, -/obj/item/cultivator, -/obj/item/shovel/spade{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/hydroponics) -"zY" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/rnd) -"zZ" = ( -/obj/structure/rack, -/obj/item/clothing/head/helmet/old, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"Aj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plating/airless, -/area/template_noop) -"Ak" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "redcorner" - }, -/area/ruin/space/ancientstation/sec) -"Ao" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"AA" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/science{ - name = "Artificial Program Core Room" - }, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"AG" = ( -/obj/machinery/light/small, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"AJ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"AK" = ( -/obj/structure/closet/crate/secure/weapon, -/obj/item/card/id/away/old/mechatron, -/obj/item/clothing/suit/armor/vest/old, -/obj/item/clothing/head/helmet/old, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"AL" = ( -/obj/structure/table, -/obj/item/reagent_containers/dropper{ - pixel_y = 9 - }, -/obj/item/storage/fancy/vials, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"AQ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"AR" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/rnd) -"AS" = ( -/obj/structure/closet/crate, -/obj/item/reagent_containers/spray/weedspray, -/obj/item/reagent_containers/spray/pestspray, -/obj/item/reagent_containers/spray/cleaner, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"Bc" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"Bd" = ( -/obj/machinery/mecha_part_fabricator, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/rnd) -"Be" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"Bl" = ( -/obj/effect/decal/warning_stripes/northeastcorner, -/obj/effect/decal/warning_stripes/southeastcorner, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"Bn" = ( -/obj/effect/landmark/tiles/damageturf, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/atmos) -"Bp" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betamincorridor) -"Bq" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/door/poddoor{ - id_tag = "proto" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"Br" = ( -/obj/machinery/constructable_frame/machine_frame{ - obj_integrity = 30 - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betamincorridor) -"Bu" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = 28 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Bx" = ( -/turf/template_noop, -/area/ruin/space/ancientstation/betacargo) -"By" = ( -/obj/structure/table, -/obj/item/clothing/gloves/color/fyellow/old, -/obj/item/clothing/gloves/color/fyellow/old, -/obj/item/multitool, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "yellow" - }, -/area/ruin/space/ancientstation/engi) -"Bz" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Theta Longterm Storage"; - req_access = list(271) - }, -/obj/structure/barricade/wooden, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"BD" = ( -/obj/item/stack/ore/uranium, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betacargo) -"BE" = ( -/obj/machinery/door/firedoor/closed, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"BI" = ( -/obj/item/circuitboard/sleeper, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"BJ" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/kitchen) -"BM" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"BN" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/public/glass{ - name = "Alpha Station Access" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"BP" = ( -/obj/structure/sign/poster/official/air2{ - pixel_x = -30 - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betaengi) -"BS" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "yellow" - }, -/area/ruin/space/ancientstation/engi) -"BW" = ( -/obj/structure/lattice, -/obj/structure/sign/poster/official/air1{ - pixel_x = 31 - }, -/turf/template_noop, -/area/ruin/space/ancientstation/betamincorridor) -"BZ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/engi) -"Ca" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"Cc" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"Cf" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "yellow" - }, -/area/ruin/space/ancientstation) -"Ci" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "green" - }, -/area/ruin/space/ancientstation/hydroponics) -"Cm" = ( -/obj/item/stack/rods, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betamincorridor) -"Cn" = ( -/obj/machinery/door/airlock/command{ - name = "Charlie Station Access" - }, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"Cq" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Cr" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/hydroponics) -"Cs" = ( -/obj/structure/table, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/item/reagent_containers/glass/bottle/lithium{ - pixel_x = 5; - pixel_y = 6 - }, -/obj/item/reagent_containers/glass/bottle/iron{ - pixel_x = 5 - }, -/obj/item/reagent_containers/glass/bottle/iodine{ - pixel_x = -3 - }, -/obj/item/reagent_containers/glass/bottle/welding_fuel{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"Cv" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "bluecorner" - }, -/area/ruin/space/ancientstation/comm) -"Cw" = ( -/obj/structure/cable{ - icon_state = "1-4"; - tag = "90Curve" - }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-dead" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Cy" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "green" - }, -/area/ruin/space/ancientstation/hydroponics) -"CF" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/structure/table, -/obj/item/folder/white, -/obj/item/reagent_containers/glass/beaker, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"CJ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"CP" = ( -/obj/structure/table/reinforced, -/obj/item/clothing/suit/space/hardsuit/ancient, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"CR" = ( -/obj/structure/chair, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"CV" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/rnd) -"Da" = ( -/obj/structure/table, -/obj/item/flash, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"Dn" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Do" = ( -/obj/machinery/atmospherics/pipe/simple/hidden, -/obj/machinery/atmospherics/meter, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"Dr" = ( -/obj/structure/lattice, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/grille{ - obj_integrity = 25 - }, -/turf/template_noop, -/area/ruin/space/ancientstation/betamincorridor) -"Dv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Dx" = ( -/obj/effect/spawner/window/reinforced, -/obj/structure/transit_tube/horizontal, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"Dy" = ( -/obj/machinery/atmospherics/unary/vent_pump{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Dz" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = -28 - }, -/obj/effect/decal/remains/robot{ - icon_state = "gibup" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/rnd) -"DC" = ( -/obj/structure/lattice, -/obj/item/shard, -/turf/template_noop, -/area/ruin/space/ancientstation/atmos) -"DE" = ( -/obj/structure/table/reinforced, -/obj/machinery/light{ - dir = 4 - }, -/obj/item/paper/fluff/ruins/oldstation/protogun, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"DJ" = ( -/obj/machinery/power/grounding_rod, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"DN" = ( -/obj/machinery/alarm{ - dir = 1; - pixel_y = -22 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "greencorner" - }, -/area/ruin/space/ancientstation/hydroponics) -"DR" = ( -/obj/effect/decal/cleanable/cobweb2, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"DY" = ( -/obj/structure/transit_tube/cap{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"Ea" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"Eg" = ( -/obj/structure/girder, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betaengi) -"Eh" = ( -/obj/item/stack/cable_coil, -/turf/template_noop, -/area/template_noop) -"Ep" = ( -/obj/structure/transit_tube_pod{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/arrow{ - dir = 1 - }, -/obj/structure/transit_tube/station, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"Eq" = ( -/obj/structure/transit_tube/station/reverse, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Eu" = ( -/obj/item/stack/medical/bruise_pack, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"EC" = ( -/obj/structure/girder, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betacargo) -"EG" = ( -/obj/item/stack/rods, -/turf/template_noop, -/area/ruin/space/ancientstation/betanorth) -"EH" = ( -/obj/item/stack/ore/iron, -/obj/effect/landmark/tiles/damageturf, -/obj/item/stack/cable_coil{ - amount = 4; - desc = "And another piece of cable. Seems this one is all what left from that APCs terminal." - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betacargo) -"EJ" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"EL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betaengi) -"ER" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless{ - dir = 4; - icon_state = "whitehall" - }, -/area/ruin/space/ancientstation/betanorth) -"EV" = ( -/obj/machinery/atmospherics/pipe/simple/hidden, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/atmos) -"EW" = ( -/obj/structure/cable/yellow{ - d2 = 2; - icon_state = "0-2" - }, -/obj/machinery/power/terminal{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"Fc" = ( -/obj/machinery/door/airlock/command, -/obj/structure/barricade/wooden, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Fe" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/hydroponics) -"Ff" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "cautioncorner" - }, -/area/ruin/space/ancientstation/engi) -"Fi" = ( -/obj/structure/sign/poster/official/cleanliness, -/turf/simulated/wall/rust{ - damage = 70 - }, -/area/ruin/space/ancientstation/betanorth) -"Fl" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-dead" - }, -/mob/living/simple_animal/hostile/hivebot/strong, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Fm" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "yellowcorner" - }, -/area/ruin/space/ancientstation) -"Fx" = ( -/obj/structure/closet/crate/engineering/electrical, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/machinery/light/small/built{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"FB" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/engi) -"FE" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/effect/decal/cleanable/generic, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"FK" = ( -/obj/structure/closet/crate/radiation, -/obj/item/stack/sheet/mineral/uranium{ - amount = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"FL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/plating/airless, -/area/template_noop) -"FN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1; - in_use = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"FS" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/science, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"FV" = ( -/obj/structure/closet/secure_closet/freezer/fridge, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"FW" = ( -/obj/machinery/light/small/built{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"Gc" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/atmos) -"Gd" = ( -/obj/machinery/computer{ - desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; - dir = 8; - name = "Broken Computer" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/powered) -"Gi" = ( -/obj/structure/sign/redcross{ - icon_state = "greencross" - }, -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/betanorth) -"Gm" = ( -/obj/item/circuitboard/grounding_rod, -/turf/template_noop, -/area/template_noop) -"Gr" = ( -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betamincorridor) -"Gy" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "green" - }, -/area/ruin/space/ancientstation/hydroponics) -"GA" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Hydroponics" - }, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/hydroponics) -"GK" = ( -/obj/effect/spawner/window/reinforced, -/obj/structure/transit_tube/horizontal, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"GO" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/science{ - obj_integrity = 250 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"GQ" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"GV" = ( -/obj/machinery/light/small, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "greencorner" - }, -/area/ruin/space/ancientstation/hydroponics) -"Ha" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/lattice/catwalk, -/turf/template_noop, -/area/template_noop) -"He" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "green" - }, -/area/ruin/space/ancientstation/hydroponics) -"Hi" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"Hj" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Hw" = ( -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"Hx" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/poddoor{ - id_tag = "proto" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"HC" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"HD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/spawner/window/reinforced, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" - }, -/obj/machinery/door/poddoor{ - id_tag = "ancient" - }, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/powered) -"HF" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betaengi) -"HL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"HM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"HY" = ( -/obj/machinery/kitchen_machine/grill, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"HZ" = ( -/obj/structure/lattice, -/obj/item/stack/cable_coil{ - amount = 1 - }, -/turf/template_noop, -/area/template_noop) -"Ia" = ( -/mob/living/simple_animal/hostile/hivebot, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"Id" = ( -/turf/simulated/wall/rust{ - damage = 30 - }, -/area/ruin/space/ancientstation/thetacorridor) -"Ij" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-dead" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Io" = ( -/obj/structure/cable/yellow{ - d2 = 4; - icon_state = "0-4" - }, -/obj/machinery/power/solar, -/turf/simulated/floor/plating/airless, -/area/template_noop) -"Ip" = ( -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/betanorth) -"Iv" = ( -/obj/effect/decal/cleanable/ash, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/engi) -"Iw" = ( -/obj/machinery/r_n_d/protolathe, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/rnd) -"Iz" = ( -/mob/living/simple_animal/hostile/hivebot/strong, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"IA" = ( -/obj/structure/table, -/obj/item/tank/internals/anesthetic, -/obj/item/clothing/mask/breath/medical, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/rnd) -"IC" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"ID" = ( -/obj/effect/decal/warning_stripes/southeast, -/obj/effect/decal/warning_stripes/northwest, -/obj/effect/mob_spawn/human/oldstation/oldsec, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"IH" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"II" = ( -/obj/machinery/power/grounding_rod, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"IJ" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/vest/old, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 0; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"IK" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-dead" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"IP" = ( -/obj/effect/landmark/tiles/damageturf, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betacargo) -"IQ" = ( -/obj/effect/decal/cleanable/fungus, -/turf/simulated/wall/r_wall/rust, -/area/ruin/space/ancientstation/thetacorridor) -"IV" = ( -/obj/structure/table, -/obj/item/reagent_containers/glass/bottle/fluorine{ - pixel_x = -3 - }, -/obj/item/reagent_containers/glass/bottle/radium{ - pixel_x = 5; - pixel_y = 6 - }, -/obj/item/reagent_containers/glass/bottle/hydrogen{ - pixel_x = 5 - }, -/obj/item/reagent_containers/glass/bottle/potassium{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"IW" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"Je" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betaengi) -"Ji" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Jj" = ( -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2"; - pixel_y = 1 - }, -/obj/machinery/power/apc{ - dir = 1; - name = "Theta Main Corridor APC"; - pixel_y = 24; - report_power_alarm = 0; - start_charge = 0 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"Jm" = ( -/obj/item/solar_assembly, -/obj/item/tracker_electronics, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betaengi) -"Jq" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"Jx" = ( -/obj/machinery/bodyscanner{ - dir = 4; - obj_integrity = 25 - }, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"Jy" = ( -/turf/simulated/mineral/random, -/area/ruin/space/ancientstation/betacargo) -"Jz" = ( -/obj/structure/table, -/obj/item/toy/nuke, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"JA" = ( -/obj/effect/decal/warning_stripes/southeast, -/obj/effect/decal/warning_stripes/northwest, -/obj/structure/showcase/machinery/oldpod, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"JB" = ( -/turf/simulated/wall/r_wall/rust, -/area/ruin/space/ancientstation/proto) -"JC" = ( -/turf/simulated/wall/r_wall{ - damage = 30 - }, -/area/ruin/space/ancientstation/hivebot) -"JD" = ( -/obj/structure/sign/poster/official/science, -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/thetacorridor) -"JF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"JJ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"JO" = ( -/turf/simulated/wall/rust{ - damage = 80 - }, -/area/ruin/space/ancientstation/atmos) -"JP" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"JR" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/hydroponics) -"JS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"JU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"JY" = ( -/obj/machinery/alarm/all_access{ - dir = 8; - pixel_x = 24; - report_danger_level = 0 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"Kb" = ( -/turf/simulated/wall/rust{ - damage = 90 - }, -/area/ruin/space/ancientstation/thetacorridor) -"Ke" = ( -/obj/machinery/door/poddoor{ - id_tag = "ancient" - }, -/obj/machinery/door/firedoor/closed, -/obj/machinery/door/airlock/security, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/sec) -"Kf" = ( -/turf/simulated/wall/r_wall/rust{ - damage = 100 - }, -/area/ruin/space/ancientstation/thetacorridor) -"Kh" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"Ki" = ( -/obj/item/apc_electronics, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"Kj" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Kn" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "whitepurple" - }, -/area/ruin/space/ancientstation/rnd) -"Kq" = ( -/obj/effect/decal/cleanable/blood/drip, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "whitepurple" - }, -/area/ruin/space/ancientstation/rnd) -"Ku" = ( -/obj/effect/decal/cleanable/fungus, -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/hydroponics) -"Kv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Ky" = ( -/obj/structure/lattice, -/turf/template_noop, -/area/ruin/space/ancientstation/betacargo) -"KA" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "whitepurple" - }, -/area/ruin/space/ancientstation/rnd) -"KM" = ( -/obj/item/mounted/frame/apc_frame, -/turf/template_noop, -/area/template_noop) -"KQ" = ( -/obj/item/stack/cable_coil{ - amount = 2 - }, -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" - }, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"KR" = ( -/obj/structure/cable/yellow, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"KU" = ( -/obj/machinery/hydroponics/soil, -/turf/simulated/floor/grass, -/area/ruin/space/ancientstation/hydroponics) -"La" = ( -/turf/simulated/wall/rust{ - damage = 80 - }, -/area/ruin/space/ancientstation/betaengi) -"Lf" = ( -/obj/item/airlock_electronics, -/turf/template_noop, -/area/template_noop) -"Ll" = ( -/obj/structure/lattice, -/obj/structure/door_assembly/door_assembly_min, -/turf/template_noop, -/area/ruin/space/ancientstation/betacargo) -"Lm" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"Lo" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Lw" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"Lz" = ( -/obj/machinery/atmospherics/unary/vent_pump{ - dir = 4; - external_pressure_bound = 140; - external_pressure_bound_default = 140; - name = "server vent"; - on = 1; - pressure_checks = 0 - }, -/turf/simulated/floor/bluegrid{ - icon_state = "gcircuit"; - name = "Mainframe Floor"; - nitrogen = 100; - oxygen = 0; - temperature = 80 - }, -/area/ruin/space/ancientstation/thetacorridor) -"LA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/light, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"LC" = ( -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/stack/sheet/glass{ - amount = 30 - }, -/turf/simulated/floor/plasteel{ - dir = 0; - icon_state = "yellow" - }, -/area/ruin/space/ancientstation/engi) -"LJ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/item/stack/cable_coil{ - amount = 2 - }, -/turf/simulated/floor/plating/airless, -/area/template_noop) -"LS" = ( -/obj/structure/chair, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"LY" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_access = list(271) - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/engi) -"Me" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"Mi" = ( -/turf/simulated/wall/rust{ - damage = 60 - }, -/area/ruin/space/ancientstation/betamincorridor) -"Mk" = ( -/mob/living/simple_animal/hostile/hivebot/strong, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Mm" = ( -/obj/item/stack/sheet/glass, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless{ - dir = 4; - icon_state = "whitehall" - }, -/area/ruin/space/ancientstation/betanorth) -"Mn" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/comm) -"Mr" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/power/apc{ - dir = 1; - name = "Charlie Hydroponics APC"; - pixel_y = 24; - report_power_alarm = 0; - start_charge = 0 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/hydroponics) -"Ms" = ( -/obj/structure/door_assembly/door_assembly_hatch, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"Mt" = ( -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"MB" = ( -/obj/machinery/power/port_gen/pacman/super, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"MG" = ( -/turf/simulated/wall/rust{ - damage = 30 - }, -/area/ruin/space/ancientstation/betanorth) -"MN" = ( -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/blood/oil/streak{ - desc = "It's black and greasy with some little metal pieces in it." - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"MX" = ( -/obj/structure/table/reinforced, -/obj/machinery/light{ - dir = 8 - }, -/obj/item/paper/fluff/ruins/oldstation/protosuit, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"Nb" = ( -/obj/structure/table, -/obj/item/reagent_containers/glass/bottle/carbon{ - pixel_x = 5 - }, -/obj/item/reagent_containers/glass/bottle/chlorine{ - pixel_x = -3 - }, -/obj/item/reagent_containers/glass/bottle/sodium{ - pixel_x = 5; - pixel_y = 6 - }, -/obj/item/reagent_containers/glass/bottle/silver{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"Nc" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"Ne" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_x = 5; - pixel_y = -2 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"Ng" = ( -/turf/simulated/wall/rust{ - damage = 80 - }, -/area/template_noop) -"Ni" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/power/apc{ - name = "Charlie Kitchen APC"; - pixel_y = -24; - report_power_alarm = 0; - start_charge = 0 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/kitchen) -"Nk" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"Nl" = ( -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Np" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "greencorner" - }, -/area/ruin/space/ancientstation/hydroponics) -"Nr" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plating/airless, -/area/template_noop) -"Nw" = ( -/obj/structure/cable, -/obj/machinery/power/apc{ - dir = 4; - name = "Charlie Main Corridor APC"; - pixel_x = 24; - report_power_alarm = 0; - start_charge = 0 - }, -/obj/structure/closet/crate, -/obj/item/storage/backpack/old, -/obj/item/storage/backpack/old, -/obj/item/storage/backpack/old, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"Nz" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/spawner/window/reinforced, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"ND" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1; - in_use = 1 - }, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"NG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/sec) -"NH" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-dead" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "green" - }, -/area/ruin/space/ancientstation/hydroponics) -"NO" = ( -/turf/simulated/wall/rust{ - damage = 50 - }, -/area/ruin/space/ancientstation/thetacorridor) -"NW" = ( -/obj/effect/decal/warning_stripes/southeast, -/obj/effect/decal/warning_stripes/northwest, -/obj/effect/mob_spawn/human/oldstation/oldsci, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"NX" = ( -/obj/structure/closet/crate/medical, -/obj/item/defibrillator, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/atmos) -"Od" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"Om" = ( -/obj/machinery/door/firedoor/closed, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"Oo" = ( -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/comm) -"Ow" = ( -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/kitchen) -"Ox" = ( -/obj/item/stack/cable_coil, -/turf/template_noop, -/area/ruin/space/ancientstation/betacargo) -"OD" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"OI" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"OJ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"OO" = ( -/obj/structure/table, -/obj/item/soap/nanotrasen, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"OU" = ( -/mob/living/simple_animal/hostile/hivebot/strong, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "whitepurple" - }, -/area/ruin/space/ancientstation/rnd) -"OV" = ( -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/rnd) -"OX" = ( -/obj/effect/landmark/tiles/damageturf, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"Pc" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"Pm" = ( -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering{ - name = "Backup Generator Room" - }, -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"Pn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "yellow" - }, -/area/ruin/space/ancientstation/engi) -"Pp" = ( -/obj/structure/lattice, -/turf/template_noop, -/area/ruin/space/ancientstation/betaengi) -"Pq" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - name = "Chemical Storage" - }, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 8 - }, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"Pt" = ( -/obj/machinery/atmospherics/unary/vent_pump{ - dir = 8 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Pz" = ( -/obj/structure/table, -/obj/machinery/recharger, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"PE" = ( -/obj/item/stack/ore/iron, -/turf/template_noop, -/area/ruin/space/ancientstation/betamincorridor) -"PG" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/grille{ - obj_integrity = 35 - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"PI" = ( -/obj/structure/sign/vacuum{ - pixel_y = 32 - }, -/obj/machinery/portable_atmospherics/canister/oxygen{ - obj_integrity = 200 - }, -/turf/template_noop, -/area/ruin/space/ancientstation/betamincorridor) -"PP" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/cleanable/blood/oil, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"PQ" = ( -/mob/living/simple_animal/hostile/hivebot/tele, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"PS" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"PY" = ( -/obj/structure/firelock_frame, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"Qb" = ( -/obj/structure/table, -/obj/item/paper/fluff/ruins/oldstation/protosing, -/obj/item/paper/ruins/oldstation/singwarn{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"Qe" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating/airless, -/area/template_noop) -"Qf" = ( -/obj/machinery/door/airlock/science, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/oil/streak{ - desc = "It's black and greasy with some little metal pieces in it." - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Qg" = ( -/obj/structure/table, -/obj/item/pen, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/sec) -"Qj" = ( -/obj/item/stack/cable_coil, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betaengi) -"Qk" = ( -/obj/machinery/power/rad_collector, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"Qn" = ( -/obj/machinery/atmospherics/unary/tank/air{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"Qq" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"Qr" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Cryogenics Room" - }, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"Qs" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"Qt" = ( -/obj/machinery/power/rad_collector, -/obj/effect/decal/cleanable/cobweb2, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"Qz" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"QF" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/engi) -"QJ" = ( -/obj/machinery/alarm/all_access{ - dir = 4; - pixel_x = -24; - report_danger_level = 0 - }, -/obj/structure/rack, -/obj/item/gun/energy/laser/retro/old{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/gun/energy/laser/retro/old, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"QL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"QM" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"QN" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whitecorner" - }, -/area/ruin/space/ancientstation/rnd) -"QO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"QS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"QT" = ( -/obj/structure/lattice, -/turf/template_noop, -/area/ruin/space/ancientstation/betanorth) -"QU" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/engi) -"QV" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 0; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"Re" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/kitchen) -"Rg" = ( -/turf/simulated/wall/r_wall/rust{ - damage = 70 - }, -/area/ruin/space/ancientstation/thetacorridor) -"Rn" = ( -/obj/structure/rack, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/head/helmet/space/nasavoid/old, -/obj/item/clothing/head/helmet/space/nasavoid/ntblue, -/obj/item/clothing/shoes/magboots, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "yellow" - }, -/area/ruin/space/ancientstation/engi) -"Rp" = ( -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betaengi) -"Rr" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/air, -/turf/simulated/floor/engine, -/area/ruin/space/ancientstation/atmos) -"Rs" = ( -/obj/structure/rack, -/obj/item/clothing/suit/space/nasavoid/old, -/obj/machinery/alarm/all_access{ - dir = 8; - pixel_x = 24; - report_danger_level = 0 - }, -/obj/item/clothing/suit/space/nasavoid/ntblue{ - slowdown = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "yellow" - }, -/area/ruin/space/ancientstation/engi) -"RB" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"RJ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "redcorner" - }, -/area/ruin/space/ancientstation/sec) -"RN" = ( -/obj/structure/table, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/item/paper/fluff/ruins/oldstation, -/obj/item/crowbar, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"RR" = ( -/obj/structure/table, -/obj/item/folder/red, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/sec) -"RS" = ( -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/atmos) -"RT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"RV" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"RY" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betaengi) -"Sb" = ( -/obj/structure/table, -/obj/machinery/light/small, -/obj/item/trash/plate, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"Se" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Sm" = ( -/obj/machinery/power/tesla_coil{ - desc = "A massive coil with a built-in capacitor, collects energy from lightnings on hit"; - name = "tesla coil prototype" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"Su" = ( -/obj/machinery/computer{ - desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; - name = "Broken Computer" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"Sy" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Sz" = ( -/obj/structure/lattice, -/turf/simulated/mineral/random, -/area/ruin/space/ancientstation/betacargo) -"SA" = ( -/obj/structure/door_assembly/door_assembly_atmo, -/turf/template_noop, -/area/ruin/space/ancientstation/atmos) -"SF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"SH" = ( -/obj/item/stack/rods, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"SJ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "whitepurple" - }, -/area/ruin/space/ancientstation/rnd) -"SQ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/engi) -"SV" = ( -/obj/item/solar_assembly, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betaengi) -"SW" = ( -/obj/structure/cable/yellow, -/obj/machinery/power/terminal{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"SX" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "yellowcorner" - }, -/area/ruin/space/ancientstation/engi) -"Tc" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"Td" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "cautioncorner" - }, -/area/ruin/space/ancientstation) -"Ti" = ( -/obj/machinery/vending/dinnerware, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"Tk" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"Ts" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whitecorner" - }, -/area/ruin/space/ancientstation/rnd) -"Tx" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"Ty" = ( -/obj/structure/sign/botany, -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/hydroponics) -"TA" = ( -/obj/structure/particle_accelerator/end_cap, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"TB" = ( -/obj/machinery/kitchen_machine/oven, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"TN" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/rnd) -"TP" = ( -/obj/effect/landmark/tiles/burnturf, -/obj/effect/decal/remains/robot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"TS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/poddoor{ - id_tag = "ancient" - }, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/sec) -"TT" = ( -/obj/structure/closet/crate/engineering/electrical, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"TY" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/alarm/all_access{ - dir = 8; - pixel_x = 24; - report_danger_level = 0 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"Ub" = ( -/obj/structure/lattice, -/obj/item/stack/rods, -/turf/template_noop, -/area/template_noop) -"Uh" = ( -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/sec) -"Ui" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"Uj" = ( -/obj/machinery/atmospherics/unary/vent_pump{ - dir = 1 - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/atmos) -"Un" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Uo" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/engi) -"Up" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/pipedispenser, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/atmos) -"Us" = ( -/mob/living/simple_animal/hostile/hivebot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"Ut" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 6 - }, -/mob/living/simple_animal/hostile/hivebot/strong, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Uu" = ( -/obj/structure/table, -/obj/item/reagent_containers/glass/bottle/sulfur{ - pixel_x = 5; - pixel_y = 6 - }, -/obj/item/reagent_containers/glass/bottle/bromine{ - pixel_x = -3 - }, -/obj/item/reagent_containers/glass/bottle/aluminum{ - pixel_x = 4 - }, -/obj/item/reagent_containers/glass/bottle/sugar{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"Uw" = ( -/obj/structure/lattice, -/turf/template_noop, -/area/ruin/space/ancientstation/betamincorridor) -"Uy" = ( -/obj/structure/particle_accelerator/fuel_chamber, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"Uz" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/machinery/power/smes/engineering{ - charge = 0 - }, -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"UA" = ( -/obj/machinery/power/emitter, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"UG" = ( -/obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"UH" = ( -/obj/machinery/field/generator, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"UL" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"UM" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"UQ" = ( -/obj/structure/table, -/obj/machinery/light/small/built{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betacargo) -"UR" = ( -/obj/item/wrench, -/obj/item/wirecutters, -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"UT" = ( -/obj/structure/sign/science, -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation) -"UX" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "yellow" - }, -/area/ruin/space/ancientstation/engi) -"UZ" = ( -/obj/structure/barricade/wooden, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"Ve" = ( -/obj/effect/decal/cleanable/flour, -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"Vf" = ( -/obj/structure/lattice, -/turf/template_noop, -/area/template_noop) -"Vg" = ( -/obj/structure/cable/yellow{ - d2 = 4; - icon_state = "0-4" - }, -/turf/simulated/floor/plating/airless, -/area/template_noop) -"Vh" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"Vi" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"Vl" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Vm" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/mechanical/old, -/turf/simulated/floor/plasteel{ - dir = 0; - icon_state = "yellow" - }, -/area/ruin/space/ancientstation/engi) -"Vn" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden{ - dir = 8 - }, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/atmos) -"Vo" = ( -/obj/item/stock_parts/cell{ - charge = 100; - maxcharge = 15000 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "yellow" - }, -/area/ruin/space/ancientstation/engi) -"Vt" = ( -/mob/living/simple_animal/hostile/carp/megacarp{ - desc = "Странная космическая акула, летающая неподалёку от станции. Многие поговаривают, что данное существо - аватар могущественного блю-спейс божества"; - faction = list("carp","neutral"); - name = "Странная Космическая Акула" - }, -/turf/template_noop, -/area/template_noop) -"Vu" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Vv" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"Vw" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/engi) -"Vz" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/blood/oil, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "yellow" - }, -/area/ruin/space/ancientstation/engi) -"VA" = ( -/obj/structure/table, -/obj/item/reagent_containers/glass/bottle/ethanol{ - pixel_x = -3 - }, -/obj/item/reagent_containers/glass/bottle/silicon{ - pixel_x = 5; - pixel_y = 6 - }, -/obj/item/reagent_containers/glass/bottle/copper{ - pixel_x = 5 - }, -/obj/item/reagent_containers/glass/bottle/sacid{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"VB" = ( -/obj/item/clothing/head/welding, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/engi) -"VF" = ( -/obj/effect/decal/cleanable/flour, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"VH" = ( -/obj/structure/table, -/obj/item/seeds/grape, -/obj/item/seeds/potato, -/obj/item/seeds/poppy, -/obj/item/seeds/ambrosia, -/obj/item/seeds/harebell, -/obj/item/seeds/carrot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/hydroponics) -"VJ" = ( -/turf/simulated/wall/rust{ - damage = 80 - }, -/area/ruin/space/ancientstation/thetacorridor) -"VL" = ( -/obj/effect/decal/cleanable/blood/oil{ - desc = "It's black and greasy. Looks like Security bot made another mess." - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"VQ" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"VR" = ( -/obj/effect/decal/warning_stripes/southeast, -/obj/effect/decal/warning_stripes/northwest, -/obj/effect/mob_spawn/human/oldstation/oldmed, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"VS" = ( -/obj/structure/lattice, -/turf/simulated/wall/rust{ - damage = 50 - }, -/area/ruin/space/ancientstation/betacargo) -"VT" = ( -/obj/structure/table, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/item/storage/backpack/old, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"VV" = ( -/obj/structure/sign/poster/official/here_for_your_safety, -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/sec) -"VX" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "whitecorner" - }, -/area/ruin/space/ancientstation/rnd) -"VY" = ( -/obj/machinery/door/airlock/science, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Wb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 9 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/meter, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"Wc" = ( -/obj/structure/lattice/catwalk, -/turf/template_noop, -/area/template_noop) -"Wd" = ( -/obj/structure/table, -/obj/item/kitchen/utensil/fork, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"Wi" = ( -/obj/effect/decal/cleanable/cobweb2, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"Wk" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/sec) -"Wr" = ( -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "whitecorner" - }, -/area/ruin/space/ancientstation/rnd) -"Ws" = ( -/obj/structure/table, -/obj/item/paper, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/sec) -"Wu" = ( -/obj/machinery/atmospherics/unary/vent_pump{ - dir = 8; - external_pressure_bound = 140; - external_pressure_bound_default = 140; - name = "server vent"; - on = 1; - pressure_checks = 0 - }, -/turf/simulated/floor/bluegrid{ - icon_state = "gcircuit"; - name = "Mainframe Floor"; - nitrogen = 100; - oxygen = 0; - temperature = 80 - }, -/area/ruin/space/ancientstation/thetacorridor) -"Wy" = ( -/obj/effect/decal/remains/robot{ - icon_state = "gib2" - }, -/obj/item/flash, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"WD" = ( -/obj/structure/lattice, -/obj/item/circuitboard/emitter, -/turf/template_noop, -/area/template_noop) -"WG" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/lattice/catwalk, -/turf/template_noop, -/area/template_noop) -"WH" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/sec) -"WM" = ( -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/hydroponics) -"WO" = ( -/obj/structure/table, -/obj/item/clothing/glasses/sunglasses, -/obj/item/melee/baton, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"WQ" = ( -/mob/living/simple_animal/hostile/hivebot/strong, -/turf/simulated/floor/bluegrid{ - icon_state = "gcircuit"; - name = "Mainframe Floor"; - nitrogen = 100; - oxygen = 0; - temperature = 80 - }, -/area/ruin/space/ancientstation/thetacorridor) -"WV" = ( -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"WX" = ( -/obj/structure/cable/yellow, -/obj/machinery/power/solar_control{ - name = "Station Solar Control Computer" - }, -/obj/item/paper/solar, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "yellow" - }, -/area/ruin/space/ancientstation/engi) -"WZ" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/comm) -"Xb" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "yellow" - }, -/area/ruin/space/ancientstation/engi) -"Xd" = ( -/turf/simulated/mineral/random/high_chance, -/area/template_noop) -"Xe" = ( -/turf/template_noop, -/area/ruin/space/ancientstation/atmos) -"Xg" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"Xj" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/item/solar_assembly, -/obj/item/stack/sheet/glass{ - amount = 30 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation) -"Xk" = ( -/obj/effect/spawner/window/reinforced, -/obj/structure/transit_tube/horizontal, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"Xl" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/cleanable/blood/drip, -/obj/structure/transit_tube/cap{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"Xn" = ( -/obj/machinery/light{ - dir = 1; - in_use = 1 - }, -/obj/effect/decal/warning_stripes/west, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"Xo" = ( -/obj/effect/decal/cleanable/vomit, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"Xv" = ( -/obj/item/flashlight/flare/glowstick/random, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"XJ" = ( -/obj/structure/girder, -/turf/simulated/floor/plating/airless, -/area/template_noop) -"XK" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"XN" = ( -/obj/effect/decal/cleanable/insectguts, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"XO" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/generic, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"XQ" = ( -/obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"XS" = ( -/obj/effect/decal/warning_stripes/west, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"XV" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"XW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_access = list(271) - }, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"Yc" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Dining Area" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"Yh" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "red" - }, -/area/ruin/space/ancientstation/sec) -"Yj" = ( -/mob/living/simple_animal/hostile/hivebot, -/obj/item/stock_parts/cell{ - charge = 100; - maxcharge = 15000 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"Yp" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"Yq" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "redcorner" - }, -/area/ruin/space/ancientstation/sec) -"Yr" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"Yv" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Yw" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/ruin/space/ancientstation/kitchen) -"Yy" = ( -/obj/machinery/computer/rdconsole/public, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/rnd) -"YD" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"YE" = ( -/obj/machinery/r_n_d/destructive_analyzer, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/rnd) -"YF" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"YL" = ( -/obj/structure/grille{ - obj_integrity = 35 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betanorth) -"YP" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"YQ" = ( -/obj/effect/decal/remains/human, -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"YZ" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"Zb" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = -28 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Zh" = ( -/turf/simulated/mineral/random/high_chance, -/area/ruin/space/ancientstation/betacargo) -"Zi" = ( -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/betacargo) -"Zl" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"Zn" = ( -/mob/living/simple_animal/hostile/hivebot/strong, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/rnd) -"Zo" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable/yellow{ - d2 = 2; - icon_state = "0-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/engi) -"Zq" = ( -/obj/structure/table, -/obj/item/broken_bottle, -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"Zr" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating/airless, -/area/ruin/space/ancientstation/atmos) -"Zs" = ( -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation) -"Zu" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation) -"Zv" = ( -/obj/structure/particle_accelerator/particle_emitter/center, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/thetacorridor) -"Zx" = ( -/obj/machinery/constructable_frame/machine_frame, -/obj/item/stock_parts/manipulator, -/turf/simulated/floor/bluegrid{ - icon_state = "gcircuit"; - name = "Mainframe Floor"; - nitrogen = 100; - oxygen = 0; - temperature = 80 - }, -/area/ruin/space/ancientstation/thetacorridor) -"Zy" = ( -/obj/structure/table, -/obj/item/reagent_containers/glass/bottle/phosphorus{ - pixel_x = -5; - pixel_y = 6 - }, -/obj/item/reagent_containers/glass/bottle/oxygen{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/reagent_containers/glass/bottle/nitrogen{ - pixel_x = 6 - }, -/obj/item/reagent_containers/glass/bottle/mercury{ - pixel_x = -5 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"Zz" = ( -/obj/machinery/door/firedoor/closed, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) -"ZD" = ( -/obj/machinery/door/poddoor{ - id_tag = "proto" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/proto) -"ZG" = ( -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/rnd) -"ZI" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/glass/fifty{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/ruin/space/ancientstation/rnd) -"ZJ" = ( -/obj/structure/sign/biohazard{ - icon_state = "radiation"; - name = "\improper HAZARDOUS RADIATION" - }, -/turf/simulated/wall/rust, -/area/ruin/space/ancientstation/engi) -"ZN" = ( -/turf/simulated/floor/plating/airless, -/area/template_noop) -"ZO" = ( -/turf/template_noop, -/area/template_noop) -"ZQ" = ( -/obj/structure/transit_tube_pod{ - dir = 4 - }, -/obj/structure/transit_tube/station, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/betanorth) -"ZR" = ( -/obj/machinery/atmospherics/unary/cold_sink/freezer{ - current_temperature = 80; - dir = 1; - on = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/ruin/space/ancientstation/thetacorridor) -"ZT" = ( -/obj/effect/spawner/window/reinforced, -/obj/machinery/door/poddoor{ - id_tag = "ancient" - }, -/turf/simulated/floor/plating, -/area/ruin/space/ancientstation/comm) -"ZU" = ( -/turf/simulated/mineral/random, -/area/space/nearstation) -"ZY" = ( -/obj/machinery/light{ - dir = 1; - in_use = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/airless, -/area/ruin/space/ancientstation/betanorth) - -(1,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ax -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -Vf -Vf -Vf -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(2,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -hl -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZN -tL -Vf -ZO -ZO -Vf -ZO -ZO -Wc -ZO -ZO -tL -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(3,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -qw -Dr -fP -Uw -jC -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -Vf -ZO -ZO -Vf -ZO -ZO -Vf -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(4,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Uw -nX -qw -PI -Uw -hB -Gr -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -KM -ZO -Vf -ZN -WD -Vf -ZO -ZN -tL -ZO -ZO -ZN -Vf -Vf -ZO -ZO -ZO -ZO -ax -ZO -ZO -ZO -ZO -ZO -"} -(5,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -eo -fx -tt -Gr -Gr -wB -jD -XJ -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZN -Vf -ZO -Vf -Vf -Vf -ZO -Vf -Eh -Vf -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(6,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -fh -gL -oi -kx -xV -Bp -PE -ix -Vf -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Wc -Vf -Vf -ZO -ZN -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(7,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -mp -lD -er -Br -xV -Uw -wF -Vf -rQ -ZO -ZO -ZO -ZO -Eh -ZO -ZO -ZO -ZO -ZO -Vf -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(8,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -qw -qw -gL -Gr -Gr -BW -Uw -hY -hY -hY -ZO -ZO -ZO -ZO -ZO -ZO -ZN -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -tL -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(9,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -pv -Cm -xV -Mi -jM -mT -hY -hY -hY -ZO -ZO -ZO -ZO -Vf -Vf -Vf -Vf -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(10,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -Vf -ZO -Vf -Vf -PG -Ms -hR -Hw -hY -Vf -Vf -ZO -ZO -ZO -Lf -Vf -ZO -ZO -ZN -ZO -ZO -ZO -ZO -ZO -Vf -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(11,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -wV -wV -QT -QT -ZO -ZO -ZO -Vf -Vf -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Gm -oX -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(12,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -Vf -ZO -ZO -ZO -EG -QT -Hw -rS -ZO -ZO -ZO -ZO -Vf -hY -hY -hY -hY -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -HZ -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(13,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -QT -Qs -Me -oa -ZO -ZO -ZO -ZO -hY -hY -Xd -Xd -hY -hY -ZO -ZO -ZO -ZO -ZO -tL -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(14,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Hw -Hw -Xg -jR -ZO -ZO -ZO -ZO -hY -Xd -Xd -Xd -hY -hY -hY -ZO -ZO -ZO -ZO -ZO -ZO -Vt -tL -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(15,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -YL -Qs -hH -jR -ZO -ZO -ZO -ZO -hY -Xd -Xd -Xd -Xd -hY -hY -hY -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(16,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -jR -Qs -Xg -jR -hs -hs -hs -vw -Jy -Jy -Zh -Zh -Zh -Jy -Jy -Jy -Ox -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(17,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Ip -jR -mU -su -hs -vV -Zi -BD -EC -Jy -Jy -Zh -Zh -Zh -Jy -Jy -Ky -ZO -ZO -ZO -ZO -ZO -ZO -tL -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(18,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZN -XJ -Ng -Ip -xo -Xg -wE -hs -UQ -iX -qd -Zi -Jy -Jy -Jy -Jy -Jy -Jy -Jy -EC -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(19,1,1) = {" -ZO -ZO -ZO -ax -ZO -ZO -ZO -ZO -ZO -Vf -hY -hY -gP -xb -Xg -IK -hs -oy -pF -qW -EH -IP -Jy -Jy -Jy -Jy -Jy -Ky -Bx -ZO -ZO -tL -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(20,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -hY -hY -hI -lB -BN -Ip -hs -hs -hs -hs -hs -VS -Ll -EC -Sz -Sz -Zi -Ky -Bx -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(21,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -gl -gP -Qs -Ca -dp -uj -dp -dp -BE -dp -dp -qX -PY -hI -QT -ZO -Vf -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ax -ZO -ZO -ZO -"} -(22,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -hY -hN -kj -Cc -kX -Vi -kX -XK -vl -kX -kX -kX -HL -Hw -Hw -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(23,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -lB -ZY -Xg -Ip -Gi -dQ -xA -iF -Fi -MG -hI -hI -SH -QT -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Xe -Xe -Xe -Xe -Xe -Xe -Xe -ZO -ZO -ZO -ZO -ZO -ZO -"} -(24,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -gP -gv -Xg -Ip -Jx -Hw -OX -Ub -Vf -ZO -Vf -mF -ZO -ZO -ZO -ZO -ZO -Xe -Xe -Xe -Xe -Xe -Xe -Xe -Xe -Xe -Xe -Xe -Xe -ZO -ZO -ZO -ZO -ZO -"} -(25,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -mF -gP -Zz -Om -lB -Vf -wh -Vf -ZO -ZO -ZO -Vf -Vf -ZO -ZO -ZO -ZO -ZO -Xe -Xe -Xe -Xe -Xe -Xe -Xe -Xe -Xe -Xe -Xe -Xe -ZO -ZO -ZO -ZO -ZO -"} -(26,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -lB -bH -Hw -sx -ZO -ZO -Vf -ZO -ZO -ZO -Vf -hY -ZO -ZO -ZO -ZO -ZO -Xe -Xe -Xe -Xe -Xe -zk -Xe -Xe -Xe -Xe -Xe -Xe -ZO -ZO -ZO -ZO -ZO -"} -(27,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Hw -mF -QT -Vf -Vf -Vf -Vf -ZO -ZO -ZO -hY -hY -hY -ZO -ax -ZO -ZO -Xe -Xe -Xe -Xe -zk -Xe -Xe -Xe -Xe -Xe -Xe -Xe -ZO -ZO -ZO -ZO -ZO -"} -(28,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -QT -wV -ZO -Vf -Hw -ZO -ZO -ZO -Vf -hY -Xd -hY -ZO -ZO -ZO -ZO -Xe -Xe -Xe -Bn -JO -SA -Xe -Xe -Xe -Xe -Xe -Xe -ZO -ZO -ZO -ZO -ZO -"} -(29,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -hZ -QT -wV -gP -Hw -Hw -Vf -ZO -ZO -hY -hY -Xd -hY -hY -ZO -ZO -ZO -Xe -uy -JO -JO -dX -zk -Xe -Xe -Xe -Xe -zk -zk -ZO -ZO -ZO -ZO -ZO -"} -(30,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Hw -hI -kI -hI -sA -ZO -Vf -yd -Hw -Vf -Vf -hY -hY -hY -hY -ZO -ZO -ZO -RS -zk -wp -RS -RS -Gc -ug -EV -Vn -Uj -Xe -DC -ZO -ZO -ZO -ZO -ZO -"} -(31,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Hw -Qs -Ip -Zz -Om -sz -Hw -Qs -gv -BI -Hw -Vf -Vf -Vf -hY -Vf -Vf -Vf -Vf -NX -Gc -Gc -dU -ec -Gc -pb -RS -jl -Gc -eH -JO -ZO -ZO -ZO -ZO -ZO -"} -(32,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -hI -Ip -Ip -kK -nb -Ip -uG -wl -gv -Mm -ER -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -JO -RS -Gc -JO -aS -aJ -nk -Up -fQ -Rr -aS -aS -ZO -ZO -ZO -ZO -ZO -"} -(33,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -Hw -Hw -Ip -ZY -Xg -Ip -cN -jR -ys -jR -Gi -hI -mF -Vf -ZO -ZO -ZO -ZO -ZO -ZO -Nr -ZN -sF -ll -Zr -Zr -Zr -Zr -Zr -aS -ZO -ZO -ZO -ZO -ZO -ZO -"} -(34,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -gm -it -kN -Cc -kX -XK -kX -Vi -vM -kX -kX -XK -HL -Hw -Vf -ZO -ZO -ZO -Vf -fe -ZN -ZN -ZO -ZO -tL -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(35,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -hY -hY -hY -gP -Qs -Qz -dp -qV -dp -dp -BE -dp -dp -gv -Qs -Hw -UL -Vf -Vf -Vf -Vf -fe -fe -ZN -ZN -ZO -Vf -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(36,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -hY -Xd -Xd -hY -gP -Ip -Cn -Ip -yw -yw -yw -yw -yw -Je -EL -Je -La -Eg -yS -Pp -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(37,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -hY -hY -hY -gP -iG -or -sQ -yw -Rp -yG -BP -HF -HF -EL -HF -SV -yS -yS -Pp -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(38,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -hY -tL -lB -ZQ -nt -or -yw -Rp -Pp -Rp -Jm -Rp -qz -Qj -Rp -Pp -Pp -Rp -ZO -ZO -tL -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(39,1,1) = {" -ax -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -Ip -GK -jR -jR -yw -Pp -Pp -yS -Rp -Rp -RY -Rp -Rp -yS -Pp -Rp -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(40,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -qS -ZO -sV -yw -Eg -ZO -ZO -ZO -Vf -RY -Vf -ZO -ZO -La -Eg -ZO -ZO -ZO -Vf -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ax -ZO -ZO -ZO -"} -(41,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -Vf -ZO -qS -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(42,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -Vf -ZO -ZO -ZO -ZO -nu -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(43,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -Vf -ZO -ZO -ZO -nu -ZO -ZO -ZO -ZN -ZN -ZN -ZO -ZO -LJ -ZO -ZO -Vg -ZN -ZN -Vf -ZN -ZN -Io -Vf -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(44,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -nu -ZO -ZO -Vf -Wc -Wc -za -Wc -Wc -FL -za -za -Ha -Wc -WG -Wc -za -Wc -Ha -ZO -ZO -ZO -ZO -Vf -ZO -sV -hY -hY -ZO -ZO -ZO -ZO -ZO -"} -(45,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -qS -ZO -ZO -ZO -ZN -ZN -Io -ZO -ZO -Qe -ZO -ZO -ZN -Vg -ZN -Vf -ZN -ZN -ZN -Vf -ZO -ZO -ZO -Eh -hY -hY -Xd -Xd -hY -ZO -ZO -ZO -ZO -"} -(46,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -qS -ZO -ZO -Vf -Wc -Wc -if -za -za -ot -za -Wc -Wc -Ha -Wc -za -Wc -Wc -Wc -hp -ZO -ZO -ZO -Vf -hY -hY -Xd -Xd -hY -ZO -ZO -ZO -ZO -"} -(47,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -nu -ZO -ZO -ZO -ZN -ZN -xP -ZO -ZO -Qe -ZO -ZO -ZN -ZN -ZN -Vf -ZN -ZN -ZN -Vf -ZO -ZO -Vf -ZO -ZO -hY -hY -hY -ZO -ZO -ZO -ZO -ZO -"} -(48,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -qS -ZO -ZO -Vf -if -za -Wc -Wc -Wc -FL -za -za -za -WG -za -Wc -za -za -WG -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(49,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -qS -ZO -ZO -ZO -qe -ZN -ZN -ZO -ZO -Qe -ZO -ZO -ZN -xP -ZN -Vf -ZN -xP -xP -Vf -ZO -ZO -ZO -Vf -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(50,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -nu -ZO -ZO -ZO -Vf -ZO -ZO -ZO -dn -LY -dn -ZO -ZO -ZO -Vf -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ax -ZO -ZO -ZO -"} -(51,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -nu -ZO -ZO -ZO -Vf -ZO -ZO -ZO -dn -QO -dn -ZO -ZO -ZO -Vf -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(52,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -nu -ZO -ZO -ZO -cp -cp -cp -dn -dn -XW -dn -dn -cp -cp -cp -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(53,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -qS -ZO -ZO -ZO -cp -zt -BS -cG -cG -hr -QF -QF -Vz -WX -cp -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(54,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -qS -ZO -ZO -cp -cp -Vo -cG -EW -Ea -nS -Ea -SW -cG -LC -cp -cp -cp -cp -cp -cp -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(55,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -Zs -Dx -Vv -Vv -cp -wq -Vw -BZ -gV -QM -Uo -QM -bZ -cG -uD -By -sD -Uz -Zo -KR -cp -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(56,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -Zs -qD -Vh -kS -cp -Rn -cG -kZ -cG -Iv -KQ -cG -cG -VB -cG -Vm -cp -mN -RB -MB -cp -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(57,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -Zs -DY -Vh -tg -cp -Rs -zw -Pn -Ff -SQ -FB -QU -SX -UX -Xb -qt -cp -UR -Yp -FK -cp -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(58,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Zs -Zs -Zs -Zs -Zs -sv -nA -sv -cp -cp -cp -cp -cp -oL -HD -oL -cp -cp -cp -cp -cp -ZJ -Pm -ZJ -cp -Zs -Zs -Zs -Zs -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(59,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -Zs -Zs -dy -ey -fj -gp -Zs -hj -YD -yh -uM -YD -zR -Cf -Fm -YD -uJ -YD -Td -Cf -XO -zR -uM -yh -OD -lp -Zs -Be -FW -Qn -Zs -Zs -Zs -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(60,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -Zs -cL -oE -oE -oE -oE -iB -xx -FE -UM -Tx -Tx -Tx -iu -Zu -Jq -qx -Jq -Zu -Tx -Tx -Tx -Tx -UM -rd -ta -da -Do -uo -Wb -Xj -Nw -Zs -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(61,1,1) = {" -ZO -ZO -ZO -ZO -ZO -Oo -Oo -Oo -Oo -Oo -Oo -Oo -Zs -Vh -Yr -WM -WM -Fe -zU -Fe -Ty -WM -ab -Ow -Ow -BJ -Yc -BJ -Ow -Ow -Yr -VL -Zs -Zs -Zs -Zs -Zs -Zs -Zs -Zs -ZO -ZO -ZO -ZO -ZO -ZO -"} -(62,1,1) = {" -ZO -ZO -ZO -ZO -Oo -Oo -cf -cX -dV -cX -fu -Oo -Oo -XQ -JJ -WM -uR -wu -wu -Ci -Gy -WM -Bc -Ow -Ti -XV -XV -XV -Lw -Ow -JJ -XQ -Zs -Zs -fl -mL -jL -mL -Vh -Zs -Zs -ZO -ZO -ZO -ZO -ZO -"} -(63,1,1) = {" -ZO -ZO -ZO -ZO -bB -cf -xW -Mn -tG -eJ -Cv -gs -bB -yt -Yr -Fe -Np -wu -wu -wu -KU -WM -Bc -Ow -FV -XV -XV -XV -Wd -BJ -Yr -wU -Zs -Lm -Vh -Vh -Vh -Vh -Vh -wU -Zs -ZO -ZO -ZO -ZO -ZO -"} -(64,1,1) = {" -ZO -ZO -ZO -ZO -ZT -xW -tG -tG -tG -tG -tG -pM -WZ -Vh -Yr -Fe -KU -wu -wu -wu -KU -WM -Mr -Ow -XV -Ve -oo -Xo -OI -BJ -Yr -Vh -Vv -Vh -JA -Vh -NW -Vh -VR -Vh -Vv -ZO -ZO -ZO -ZO -ZO -"} -(65,1,1) = {" -ZO -ZO -ZO -ZO -ZT -cY -cH -tG -tG -tG -tG -Cv -WZ -Vh -Yr -Fe -KU -wu -zX -Cr -GV -WM -Bc -Ow -Tk -XV -oo -XV -zN -BJ -Yr -Vh -Vv -Vh -Vh -Vh -Vh -Vh -Vh -Vh -Zs -ZO -ZO -ZO -ZO -ZO -"} -(66,1,1) = {" -ZO -ZO -ZO -ZO -ZT -di -kF -hE -eb -eM -ud -ud -iK -Tx -OJ -Fe -ve -wu -xu -iw -ph -JR -Nc -Re -lk -EJ -oo -XV -Ne -BJ -Qq -Tx -Qr -Tx -qK -Tx -my -Tx -qK -sH -Vv -ZO -ZO -ZO -ZO -ZO -"} -(67,1,1) = {" -ZO -ZO -ZO -aU -ZT -zo -eY -tG -tG -tG -tG -mx -WZ -Vh -Vh -Fe -KU -wu -VH -wu -DN -WM -PS -Ow -vG -XV -VF -XV -OI -BJ -Yr -Vh -Vv -Vh -Vh -XN -Vh -Vh -Vh -Vh -Zs -ZO -ZO -ZO -ZO -ZO -"} -(68,1,1) = {" -ZO -ZO -ZO -ZO -ZT -dj -tG -tG -tG -tG -tG -gz -WZ -Vh -Vh -Fe -KU -wu -wu -wu -KU -WM -Ni -Ow -ok -TB -HY -XV -zN -BJ -Yr -Vh -Vv -Vh -ID -Vh -JA -Vh -JA -Vh -Vv -ZO -ZO -ZO -ZO -ZO -"} -(69,1,1) = {" -ZO -ZO -ZO -ZO -bB -jN -dj -Mn -tG -Mn -mx -qv -bB -yt -XN -Fe -vf -wu -wu -wu -KU -WM -PS -Ow -XV -XV -XV -XV -mQ -BJ -Yr -wU -Zs -Vh -Vh -Xv -Vh -Vh -Vh -wU -Zs -ZO -ZO -ZO -ZO -ZO -"} -(70,1,1) = {" -ZO -ZO -ZO -ZO -Oo -Oo -jN -fL -ef -fL -mM -Oo -Oo -XQ -XQ -WM -NH -wu -wu -Cy -He -WM -PS -Ow -XV -XV -XV -XV -Yw -Ow -JJ -XQ -Zs -Zs -Wi -Gd -RN -Gd -Vh -Zs -Zs -ZO -ZO -ZO -ZO -ZO -"} -(71,1,1) = {" -ZO -ZO -ZO -ZO -ZO -Oo -Oo -Oo -Oo -Oo -Oo -Oo -Zs -Vh -Vh -WM -Ty -Fe -GA -Fe -Ku -WM -Nk -Ow -Ow -BJ -Yc -BJ -Ow -Ow -Yr -Vh -Zs -Zs -Zs -Zs -Zs -Zs -Zs -Zs -ZO -ZO -ZO -ZO -ZO -ZO -"} -(72,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -Zs -dc -em -ff -fv -gD -vJ -Vh -Vh -tk -Tx -Tx -Tx -Tx -Zu -JS -gX -JS -Zu -Tx -Tx -Tx -Tx -kL -OJ -Vh -aw -gp -gp -gp -gp -AS -Zs -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(73,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -Zs -ga -ik -Zs -nc -rx -jU -lw -Vh -IW -TY -Vh -YZ -Vh -XQ -Vh -JU -Vh -XQ -YZ -Vh -Vh -JY -IW -Vh -lw -Zs -DR -TT -Fx -ou -Zs -Zs -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(74,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -Zs -Zs -Zs -Zs -Zs -Zs -Zs -UT -fM -UT -Uh -Uh -Uh -Uh -VV -Ke -TS -Ke -Uh -Uh -Uh -Uh -Uh -UT -nU -UT -Zs -Zs -Zs -Zs -Zs -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(75,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -tL -ZO -ZO -Zs -WV -WV -RV -Uh -ww -nh -CJ -nh -aA -rO -RJ -Yh -VQ -Yh -QJ -Uh -Xl -Vh -Vh -Zs -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(76,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -Zs -WV -pg -WV -Uh -Su -Wk -Wk -Ws -Qg -NG -zr -RR -Wk -Wk -IJ -Uh -Ep -Vh -Vh -Zs -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(77,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -Zs -Vv -Vv -Vv -Uh -Pz -Ak -Wk -WH -aQ -NG -mH -WH -Wk -Yq -zZ -Uh -Dx -Vv -Vv -Zs -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(78,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Uh -lh -lJ -Wk -Wk -Wk -NG -Wk -Wk -Wk -QV -Uh -Uh -nu -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(79,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -hY -hY -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -hl -Uh -WO -Da -Hi -Kh -GQ -RT -Ui -VT -rb -Uh -ZO -nu -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ax -ZO -ZO -"} -(80,1,1) = {" -ZO -ZO -ZO -ZO -ZO -hY -Xd -Xd -hY -ZO -ZO -ZO -ZO -lU -pB -ZO -ZO -Uh -Uh -Uh -Uh -Uh -oq -Uh -Uh -Uh -Uh -Uh -ZO -qS -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(81,1,1) = {" -ZO -ZO -ZO -ZO -ZO -hY -Xd -Xd -hY -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -Aj -Vf -ZO -ZO -ZO -ZO -ZO -nu -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -hY -ZO -ZO -ZO -ZO -ZO -"} -(82,1,1) = {" -ZO -ZO -ZO -ZO -ZO -hY -hY -hY -tL -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -Aj -Vf -ZO -ZO -ZO -ZO -ZO -qS -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -hY -hY -hY -hY -ZO -ZO -ZO -"} -(83,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -hY -hY -ZO -ZO -Vf -Aj -Vf -ZO -ZO -ZO -ZO -ZO -nu -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -hY -hY -hY -hY -hY -hY -ZO -"} -(84,1,1) = {" -ax -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -tL -hY -hY -hY -ZO -Vf -Aj -Vf -ZO -ZO -ZO -ZO -ZO -nu -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -hY -Xd -Xd -hY -hY -ZO -"} -(85,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -tz -lY -lY -lY -Id -ZO -hY -hY -NO -tz -Nz -tz -tz -ZO -ZO -ZO -tz -Xk -lY -lY -tz -ZO -ZO -ZO -Vf -ZO -ZO -ZO -hY -Xd -Xd -hY -hY -ZO -"} -(86,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -tL -ZO -ZO -ZO -ZO -ZO -tz -yQ -Eq -tm -tz -ZO -ZO -ZO -Id -Ki -Tc -Sb -tz -ZO -ZO -ZO -tz -bp -sZ -xD -tz -tz -tz -tz -Vf -ZO -ZO -ZO -ZO -hY -hY -hY -hY -ZO -"} -(87,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -Vf -ZO -ZO -ZO -ZO -tz -oK -Eu -Ji -tz -ZO -ZO -ZO -tz -Jj -jH -Ao -tz -ZO -ZO -ZO -tz -jE -MN -oK -tz -yO -Zx -tz -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(88,1,1) = {" -ZO -ZO -ZO -ZO -ZO -Vf -Vf -ZO -ZO -ZO -ZO -ZO -tz -JD -Fc -JD -tz -tz -tz -tz -tz -tz -gR -tz -tz -tz -tz -tz -tz -JD -Fc -JD -tz -Lz -WQ -tz -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(89,1,1) = {" -ZO -ZO -ZO -ZO -ZU -ZU -ZU -ZU -ZU -ZU -ZU -ZO -iM -tz -Fl -Kj -cs -wW -Zb -Dn -Hj -Kj -IH -Se -Un -Se -Zb -gg -cs -Se -Se -Cw -tz -Qf -tz -tz -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ax -"} -(90,1,1) = {" -ZO -ZO -ZU -ZU -ZU -ZU -ZU -ZU -ZU -ZU -ZU -ZU -tL -Id -Zl -JF -Vl -Vu -Vu -pD -Vu -QL -bk -Vu -Dv -Vu -Vu -QL -Vl -Vu -YP -Zl -jn -QS -ZR -tz -Vf -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(91,1,1) = {" -ZO -ZU -ZU -aq -aq -aq -aq -aq -aq -aq -aq -ZU -ZU -NO -FS -iD -OV -OV -OV -OV -OV -OV -OV -OV -OV -OV -OV -OV -OV -OV -iD -FS -JB -JB -JB -JB -JB -JB -JB -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(92,1,1) = {" -ZO -ZU -aq -aW -az -az -aZ -dx -bF -az -fA -aq -iO -VJ -Cq -Kv -OV -wZ -AR -Dz -TN -Kn -OO -zY -YF -LS -Zq -Jz -sS -OV -Kv -Cq -JB -CP -MX -JB -mP -mn -JB -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(93,1,1) = {" -ZO -ZU -aq -ar -bF -az -by -by -az -az -az -JC -ct -Rg -Zl -lv -OV -TN -Yy -wT -Iw -TN -jv -zY -YF -LS -CF -mX -sS -OV -gC -zd -JB -ZD -Hx -JB -Hx -ZD -JB -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(94,1,1) = {" -ZU -ZU -aq -aq -aq -aq -sc -sc -aq -aq -aq -JC -iW -uk -Cq -LA -OV -wT -YE -TN -km -TN -zQ -zY -Us -VX -gG -ZG -QN -OV -FN -Zl -JB -Xn -XS -kD -XS -XS -JB -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(95,1,1) = {" -ZU -ZU -aq -az -bV -az -jY -by -aZ -bF -cI -sc -fs -jO -rq -lv -OV -fR -Zn -TN -TN -Kq -YF -zY -YF -YF -jf -wX -YF -OV -Kv -Cq -JB -yo -Od -Od -Od -kk -JB -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(96,1,1) = {" -ZU -ZU -aq -az -az -cn -by -bm -by -az -az -sc -AQ -AA -Nl -Kv -Pc -TP -ZG -YF -Iz -gG -YF -ZG -YF -Wr -JP -YF -Ts -Pc -lv -Yv -ji -jK -Od -Od -CR -hn -zx -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(97,1,1) = {" -ZU -ZU -aq -aq -aq -aq -sc -sc -aq -aq -aq -JC -ja -uk -oK -lv -Pc -ZG -YF -YF -ZG -SF -AJ -AJ -AJ -qg -wd -PP -AJ -bR -Mt -QL -vZ -HM -HM -HM -sr -hn -zx -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(98,1,1) = {" -ZU -ZU -aq -aZ -az -az -az -az -az -az -by -JC -zV -Kf -Nl -Kv -OV -OU -TN -TN -Zn -SJ -YF -OV -OV -OV -Pq -OV -OV -OV -lv -oK -JB -ev -Od -Od -Od -kk -JB -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(99,1,1) = {" -ZU -ZU -aq -by -az -az -cI -az -aZ -az -by -aq -jo -NO -oK -ty -OV -TN -Bd -TN -IA -TN -uf -OV -Uu -Wy -he -ep -AL -OV -ND -Sy -JB -qU -ak -Bl -ak -ak -JB -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(100,1,1) = {" -ZU -ZU -aq -bm -az -by -aZ -az -by -az -jY -aq -hY -VJ -oK -lv -OV -TN -ZI -TN -qj -TN -bs -OV -Nb -YQ -Zy -pf -gJ -OV -lv -oK -JB -ZD -Bq -JB -Bq -ZD -JB -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(101,1,1) = {" -ZU -ZU -aq -by -aZ -az -az -az -az -aZ -by -aq -jo -VJ -Nl -Kv -OV -fR -CV -TN -TN -KA -YF -OV -VA -IV -Cs -rf -dF -OV -Kv -Nl -JB -fr -wi -JB -DE -zi -JB -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(102,1,1) = {" -ZU -ZU -aq -by -bW -by -eA -eA -by -bm -by -aq -hY -VJ -GO -iD -OV -OV -OV -OV -OV -OV -OV -OV -OV -OV -OV -OV -OV -OV -iD -hf -JB -JB -JB -JB -JB -JB -JB -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(103,1,1) = {" -ZU -ZU -aq -aZ -jY -eA -by -by -eA -jY -by -aq -jx -VJ -oK -tK -YP -Nl -oK -gi -oK -Nl -oK -Nl -UG -Nl -oK -Nl -oK -IC -Lo -oK -jn -Ut -sI -tz -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(104,1,1) = {" -ZU -ZU -aq -aq -aq -aq -sc -sc -aq -aq -aq -aq -hY -NO -Ij -Mk -Pt -ig -Bu -gi -Ji -Nl -oK -Nl -wD -Nl -oK -ig -eN -Dy -oK -Ij -tz -VY -tz -tz -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(105,1,1) = {" -ZO -ZU -aq -bu -bY -co -eA -eA -eA -ar -fF -aq -Kb -NO -BM -uk -uk -uk -uk -tz -tz -tz -BM -tz -tz -tz -tz -tz -tz -tz -HC -tz -tz -Wu -rm -tz -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(106,1,1) = {" -ZO -ZU -ZU -aq -aZ -eA -eA -eA -eA -jY -aq -ZU -VJ -mq -bz -uk -vL -xw -uk -DJ -II -II -AQ -AQ -UA -UA -Zv -TA -tz -Ia -og -Ia -gF -WQ -hm -tz -ZO -ZO -ZO -ZO -ZO -ax -ZO -ZO -ZO -ZO -"} -(107,1,1) = {" -ZO -ZU -ZU -ZU -aZ -cu -aZ -cu -aZ -cu -ZU -gQ -NO -bz -AG -uk -Qb -UZ -Bz -AQ -AQ -AQ -AQ -bz -AQ -UA -cB -bf -tz -lc -wJ -on -tz -tz -tz -tz -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(108,1,1) = {" -ZO -ZO -ZU -ZU -eR -eR -eR -eR -eR -eR -ZU -ZO -NO -AK -Yj -IQ -Qk -Qk -uk -UH -UH -AQ -PQ -AQ -AQ -Sm -UA -Uy -tz -tz -tz -tz -tz -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(109,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -NO -tz -tz -uk -Qt -Qk -uk -tY -UH -UH -zl -Sm -Sm -Sm -el -ek -tz -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} -(110,1,1) = {" -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -uk -uk -uk -uk -tz -tz -tz -tz -tz -tz -tz -tz -tz -tz -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -ZO -"} diff --git a/_maps/map_files/RandomRuins/SpaceRuins/whiteship.dmm b/_maps/map_files/RandomRuins/SpaceRuins/whiteship.dmm index 59a86c8b3df7..8c6ae22ad20e 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/whiteship.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/whiteship.dmm @@ -1358,7 +1358,8 @@ id = "whiteship"; name = "NT Medical Ship"; rebuildable = 1; - width = 17 + width = 17; + preferred_direction = 4 }, /turf/simulated/floor/plating, /area/shuttle/abandoned) diff --git a/_maps/map_files/RandomZLevels/evil_santa.dmm b/_maps/map_files/RandomZLevels/evil_santa.dmm index e38b1bdfc2ed..3a9ff0ff5e76 100644 --- a/_maps/map_files/RandomZLevels/evil_santa.dmm +++ b/_maps/map_files/RandomZLevels/evil_santa.dmm @@ -5641,7 +5641,7 @@ /turf/simulated/floor/plating/asteroid, /area/vision_change_area/awaymission/evil_santa/mine) "VA" = ( -/obj/item/twohanded/fishingrod, +/obj/item/twohanded/fishing_rod, /obj/item/stack/sheet/wood{ amount = 20 }, diff --git a/_maps/map_files/RandomZLevels/spacebattle.dmm b/_maps/map_files/RandomZLevels/spacebattle.dmm index 841225c8c6c9..39b0dc4245f8 100644 --- a/_maps/map_files/RandomZLevels/spacebattle.dmm +++ b/_maps/map_files/RandomZLevels/spacebattle.dmm @@ -1432,7 +1432,7 @@ id = "GATE"; req_access = list(150) }, -/obj/machinery/door/poddoor{ +/obj/machinery/door/poddoor/impassable{ id_tag = "GATE"; layer = 2.8 }, @@ -6895,7 +6895,7 @@ /area/awaymission/spacebattle/hallway9) "tC" = ( /obj/structure/table/reinforced, -/obj/machinery/door_control{ +/obj/machinery/door_control/secure{ id = "GATE"; name = "Nuke Vault Door Controller" }, diff --git a/_maps/map_files/RandomZLevels/spacehotel.dmm b/_maps/map_files/RandomZLevels/spacehotel.dmm index 7cc03a0221f5..d38b58e3c14c 100644 --- a/_maps/map_files/RandomZLevels/spacehotel.dmm +++ b/_maps/map_files/RandomZLevels/spacehotel.dmm @@ -148,15 +148,6 @@ icon_state = "metal9" }, /area/awaymission/spacehotel/amazing_place) -"aO" = ( -/obj/effect/visual_portal{ - id = "cultroom"; - radius = 0; - distance = 0; - teleport = 0 - }, -/turf/template_noop, -/area/template_noop) "aP" = ( /obj/machinery/light{ dir = 8 @@ -2099,12 +2090,6 @@ "hJ" = ( /turf/simulated/wall/indestructible/invisible/view_portal, /area/awaymission/spacehotel/snowland) -"hK" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/plasteel, -/area/shuttle/arrival/station) "hL" = ( /obj/machinery/light/built{ dir = 1 @@ -3183,9 +3168,6 @@ name = "engraved floor" }, /area/awaymission/spacehotel) -"lp" = ( -/turf/simulated/wall/indestructible/invisible/view_portal, -/area/shuttle/arrival/station) "lv" = ( /turf/simulated/wall/indestructible{ icon_state = "metal1" @@ -3194,12 +3176,6 @@ "ng" = ( /turf/simulated/floor/indestructible/carpet, /area/awaymission/spacehotel/amazing_place) -"ny" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/plasteel, -/area/shuttle/arrival/station) "oJ" = ( /obj/machinery/light{ dir = 4 @@ -3230,49 +3206,22 @@ icon_state = "floor" }, /area/awaymission/spacehotel/amazing_place) -"tS" = ( -/obj/structure/closet/emcloset, -/turf/simulated/floor/plasteel, -/area/shuttle/arrival/station) -"vs" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/shuttle/arrival/station) "vO" = ( /turf/simulated/wall/indestructible{ icon_state = "metal7" }, /area/awaymission/spacehotel/amazing_place) -"wc" = ( -/obj/effect/visual_portal{ - dir = 1; - id = "test"; - frustrum = 1; - radius = 1; - distance = 4 - }, -/turf/simulated/floor/plasteel, -/area/shuttle/arrival/station) "wz" = ( /obj/structure/bed, /obj/item/bedsheet/purple, /turf/simulated/floor/indestructible/carpet, /area/awaymission/spacehotel/amazing_place) -"wY" = ( -/turf/simulated/floor/plasteel, -/area/shuttle/arrival/station) "xl" = ( /obj/machinery/door/airlock/sandstone, /turf/simulated/floor/indestructible{ icon_state = "floor" }, /area/awaymission/spacehotel/amazing_place) -"ya" = ( -/obj/machinery/vending/snack, -/turf/simulated/floor/plasteel, -/area/shuttle/arrival/station) "yE" = ( /turf/simulated/wall/indestructible/invisible/view_portal, /area/awaymission/spacehotel) @@ -3325,22 +3274,9 @@ icon_state = "metal6" }, /area/awaymission/spacehotel/amazing_place) -"Ed" = ( -/obj/machinery/light, -/turf/simulated/floor/plasteel, -/area/shuttle/arrival/station) "EF" = ( /turf/simulated/floor/indestructible/view_portal, /area/awaymission) -"FN" = ( -/obj/effect/visual_portal{ - id = "test"; - radius = 1; - frustrum = 1; - distance = 4 - }, -/turf/simulated/floor/plasteel, -/area/shuttle/arrival/station) "Jk" = ( /obj/structure/bed, /obj/item/bedsheet/cult, @@ -3356,12 +3292,6 @@ }, /turf/simulated/floor/indestructible/carpet, /area/awaymission/spacehotel/amazing_place) -"Mx" = ( -/turf/simulated/wall, -/area/shuttle/arrival/station) -"MQ" = ( -/turf/simulated/floor/indestructible/view_portal, -/area/shuttle/arrival/station) "Nj" = ( /turf/simulated/wall/indestructible/invisible/view_portal, /area/awaymission) @@ -30152,22 +30082,22 @@ ah ah ah ah -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -30282,22 +30212,22 @@ ah ah ah ah -Mx -wY -wY -wY -wY -wY -wY -hK -wY -wY -wY -wY -wY -wY -wY -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -30412,22 +30342,22 @@ ah ah ah ah -Mx -vs -wY -wY -wY -wY -wY -wY -wY -wY -wY -wY -wY -wY -Ed -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -30542,22 +30472,22 @@ ah ah ah ah -Mx -wY -wY -wY -wY -Mx -Mx -Mx -Mx -wY -wY -wY -wY -wY -wY -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -30672,22 +30602,22 @@ ah ah ah ah -Mx -wY -tS -wY -wY -Mx -lp -lp -Mx -wY -wY -wY -ya -wY -wY -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -30792,7 +30722,6 @@ ah ah ah ah -aO ah ah ah @@ -30802,22 +30731,23 @@ ah ah ah ah -Mx -wY -wY -wY -wY -Mx -lp -MQ -wc -wY -wY -wY -wY -wY -wY -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -30932,22 +30862,22 @@ ah ah ah ah -Mx -wY -wY -wY -wY -Mx -lp -lp -Mx -wY -wY -wY -wY -wY -wY -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -31062,22 +30992,22 @@ ah ah ah ah -Mx -wY -wY -wY -wY -Mx -Mx -Mx -Mx -wY -wY -wY -wY -wY -wY -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -31192,22 +31122,22 @@ ah ah ah ah -Mx -vs -wY -wY -wY -wY -wY -wY -wY -wY -wY -wY -wY -wY -Ed -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -31322,22 +31252,22 @@ ah ah ah ah -Mx -wY -wY -wY -wY -wY -wY -ny -wY -wY -wY -wY -wY -wY -wY -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -31452,22 +31382,22 @@ ah ah ah ah -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -31582,22 +31512,22 @@ ah ah ah ah -Mx -wY -wY -wY -wY -wY -wY -wY -hK -wY -wY -wY -wY -wY -wY -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -31712,22 +31642,22 @@ ah ah ah ah -Mx -vs -wY -wY -wY -wY -wY -wY -wY -wY -wY -wY -wY -wY -Ed -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -31842,22 +31772,22 @@ ah ah ah ah -Mx -wY -wY -wY -wY -wY -wY -Mx -Mx -Mx -Mx -wY -wY -wY -wY -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -31972,22 +31902,22 @@ ah ah ah ah -Mx -wY -tS -wY -wY -wY -wY -Mx -lp -lp -Mx -wY -ya -wY -wY -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -32102,22 +32032,22 @@ ah ah ah ah -Mx -wY -wY -wY -wY -wY -wY -FN -MQ -lp -Mx -wY -wY -wY -wY -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -32232,22 +32162,22 @@ ah ah ah ah -Mx -wY -tS -wY -wY -wY -wY -Mx -lp -lp -Mx -wY -ya -wY -wY -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -32362,22 +32292,22 @@ ah ah ah ah -Mx -wY -wY -wY -wY -wY -wY -Mx -Mx -Mx -Mx -wY -wY -wY -wY -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -32492,22 +32422,22 @@ ah ah ah ah -Mx -vs -wY -wY -wY -wY -wY -wY -wY -wY -wY -wY -wY -wY -Ed -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -32622,22 +32552,22 @@ ah ah ah ah -Mx -wY -wY -wY -wY -wY -wY -wY -ny -wY -wY -wY -wY -wY -wY -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah @@ -32752,22 +32682,22 @@ ah ah ah ah -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx -Mx +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah +ah ah ah ah diff --git a/_maps/map_files/RandomZLevels/stationCollision.dmm b/_maps/map_files/RandomZLevels/stationCollision.dmm index 1fa06f86925f..54e29b02b749 100644 --- a/_maps/map_files/RandomZLevels/stationCollision.dmm +++ b/_maps/map_files/RandomZLevels/stationCollision.dmm @@ -1007,7 +1007,7 @@ }, /area/awaymission/research) "dm" = ( -/obj/singularity/narsie/sc_Narsie, +/obj/singularity/god/narsie/sc_Narsie, /turf/space, /area/awaymission/research) "dn" = ( diff --git a/_maps/map_files/RandomZLevels/wildwest.dmm b/_maps/map_files/RandomZLevels/wildwest.dmm index 679f0dc5313a..6beccf0f394c 100644 --- a/_maps/map_files/RandomZLevels/wildwest.dmm +++ b/_maps/map_files/RandomZLevels/wildwest.dmm @@ -28,17 +28,6 @@ tag = "icon-bcircuitoff" }, /area/awaymission/wwvault) -"ah" = ( -/turf/simulated/wall/cult, -/area/awaymission/wwvault) -"ai" = ( -/obj/effect/forcefield{ - desc = "You can't get in. Heh."; - layer = 1; - name = "Blocker" - }, -/turf/simulated/wall/cult, -/area/awaymission/wwvault) "aj" = ( /turf/simulated/floor/shuttle/plating{ icon_state = "cultdamage3"; @@ -62,14 +51,6 @@ tag = "icon-bcircuitoff" }, /area/awaymission/wwvault) -"an" = ( -/obj/effect/forcefield{ - desc = "You can't get in. Heh."; - layer = 1; - name = "Blocker" - }, -/turf/simulated/wall/indestructible/cult, -/area/awaymission/wwvault) "ao" = ( /turf/simulated/floor/shuttle/plating{ icon_state = "gcircuitoff"; @@ -198,44 +179,14 @@ /area/awaymission/wwvault) "aF" = ( /obj/machinery/door/airlock/vault{ - locked = 1 + locked = 1; + use_power = 0 }, /turf/simulated/floor/engine/cult, -/area/awaymission/wwvaultdoors) +/area/awaymission/wwvault) "aG" = ( /turf/simulated/mineral, /area/space/nearstation) -"aH" = ( -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/power/apc/noalarm{ - dir = 1; - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "barber" - }, -/area/awaymission/wwmines) -"aI" = ( -/obj/machinery/power/smes/magical, -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "barber" - }, -/area/awaymission/wwmines) -"aJ" = ( -/obj/machinery/door/airlock/vault{ - locked = 1 - }, -/turf/simulated/floor/engine/cult, -/area/awaymission/wwvault) "aK" = ( /obj/effect/mob_spawn/human/miner, /turf/simulated/floor/engine/cult, @@ -248,55 +199,34 @@ /area/awaymission/wwmines) "aM" = ( /turf/simulated/mineral/random, -/area/awaymission/wwmines) +/area/space/nearstation) "aN" = ( /turf/simulated/mineral, /area/awaymission/wwmines) "aO" = ( -/obj/machinery/power/terminal{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "barber" - }, -/area/awaymission/wwmines) +/turf/simulated/floor/engine/cult, +/area/space/nearstation) "aP" = ( /obj/effect/forcefield{ desc = "You can't get in. Heh."; layer = 1; - name = "Blocker" + name = "Blocker"; + lifetime = 0; + icon = 'icons/mob/actions/actions.dmi'; + icon_state = "cultforcewall" }, /turf/space, /area/space/nearstation) "aQ" = ( -/obj/effect/forcefield{ - desc = "You can't get in. Heh."; - layer = 1; - name = "Blocker" - }, -/turf/simulated/mineral, +/turf/simulated/wall/indestructible/mineral_rock, /area/space/nearstation) "aR" = ( -/obj/effect/forcefield{ - desc = "You can't get in. Heh."; - layer = 1; - name = "Blocker" - }, -/turf/simulated/mineral, +/turf/simulated/wall/indestructible/mineral_rock, /area/awaymission/wwmines) "aS" = ( /obj/effect/mob_spawn/human/corpse/syndicatecommando, /turf/simulated/floor/engine/cult, -/area/awaymission/wwvault) -"aT" = ( -/obj/effect/forcefield{ - desc = "You can't get in. Heh."; - layer = 1; - name = "Blocker" - }, -/turf/simulated/mineral/random, -/area/awaymission/wwmines) +/area/space/nearstation) "aU" = ( /turf/simulated/wall/mineral/sandstone, /area/awaymission/wwrefine) @@ -309,18 +239,10 @@ info = "meat grinder requires sacri" }, /turf/simulated/floor/engine/cult, -/area/awaymission/wwvault) +/area/space/nearstation) "aX" = ( /turf/simulated/floor/plating/ironsand, /area/awaymission/wwmines) -"aY" = ( -/obj/effect/forcefield{ - desc = "You can't get in. Heh."; - layer = 1; - name = "Blocker" - }, -/turf/simulated/mineral, -/area/awaymission/wwrefine) "aZ" = ( /obj/effect/decal/cleanable/cobweb, /turf/simulated/floor/plating, @@ -332,14 +254,6 @@ /obj/machinery/door/airlock/sandstone, /turf/simulated/floor/plating, /area/awaymission/wwrefine) -"bc" = ( -/obj/effect/forcefield{ - desc = "You can't get in. Heh."; - layer = 1; - name = "Blocker" - }, -/turf/simulated/wall/mineral/sandstone, -/area/awaymission/wwmines) "bd" = ( /obj/effect/decal/cleanable/blood/gibs/body{ icon_state = "gibup1"; @@ -347,9 +261,6 @@ }, /turf/simulated/floor/plating/ironsand, /area/awaymission/wwmines) -"be" = ( -/turf/simulated/wall/mineral/sandstone, -/area/space/nearstation) "bf" = ( /obj/structure/largecrate, /turf/simulated/floor/plating, @@ -2434,15 +2345,6 @@ }, /turf/simulated/floor/wood, /area/awaymission/wwmines) -"gN" = ( -/obj/effect/decal/cleanable/blood/splatter, -/obj/effect/forcefield{ - desc = "You can't get in. Heh."; - layer = 1; - name = "Blocker" - }, -/turf/simulated/mineral, -/area/awaymission/wwmines) "gO" = ( /obj/item/pickaxe/gold, /turf/simulated/floor/wood, @@ -2493,15 +2395,6 @@ /obj/structure/window/reinforced, /turf/simulated/floor/grass, /area/awaymission/wwgov) -"hg" = ( -/obj/effect/decal/cleanable/blood, -/obj/effect/forcefield{ - desc = "You can't get in. Heh."; - layer = 1; - name = "Blocker" - }, -/turf/simulated/mineral, -/area/awaymission/wwmines) "hj" = ( /obj/machinery/door/airlock/titanium, /turf/simulated/floor/shuttle{ @@ -10201,7 +10094,7 @@ aa ab ac ac -ah +ab ac ac ab @@ -10457,9 +10350,9 @@ aa aa ab ac -ah -ah -ah +ab +ab +ab ac ab ab @@ -10715,15 +10608,15 @@ aa ab ac ac -ah -ah +ab +ab ac ac ac ac ac ac -ah +ab ab aa aa @@ -10958,8 +10851,8 @@ ab ab ac ac -ah -ah +ab +ab ac ac ab @@ -10973,14 +10866,14 @@ ab ab ac ac -ah -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab +ab ac -ah +ab ab ab aa @@ -11216,7 +11109,7 @@ ab ac ac ac -ah +ab ac ac ac @@ -11228,16 +11121,16 @@ ab ab ab ab -ah +ab ac -ah -ah +ab +ab ac ac ac ac ac -ah +ab ac ab aa @@ -11473,28 +11366,28 @@ ab ac ac ac -ah -ah +ab +ab ac ac ac ac -ah +ab ac ac ac ac -ah +ab ac ac -ah +ab ac af -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab ac ab ab @@ -11731,27 +11624,27 @@ ac af ac ad -ah +ab ac ac ac ac -ah +ab ac ac -ah +ab ac -ah +ab af ac -ah +ab ac -ah -ah +ab +ab ac ac ac -ah +ab ac ac ab @@ -11983,32 +11876,32 @@ ab ab ab ac -ah +ab ac ac ac -ah -ah +ab +ab ac ac af ac -ah +ab ac ac -ah +ab ac -ah +ab ac ac -ah +ab ac ac ac ac ac ac -ah +ab ac ac ab @@ -12240,32 +12133,32 @@ ac ac ac ac -ah +ab ac ac -ah -ah -ah -ah +ab +ab +ab +ab ac ac ac -ah +ab ac ac -ah +ab ac ac ac ad -ah +ab ac ad ac ac ac ac -ah +ab ac ac ab @@ -12497,32 +12390,32 @@ ac ac ac ac -ah -ah +ab +ab ac -ah +ab ac ac -ah +ab ac ac ac -ah -ah +ab +ab ac -ah +ab ac ac ac ac -ah +ab ac ac ac -ah +ab ac ac -ah +ab ac ac ab @@ -12747,7 +12640,7 @@ aa aa ab ab -ah +ab ac ac ac @@ -12755,31 +12648,31 @@ ac ac ac ac -ah +ab ac -ah +ab ac af -ah -ah +ab +ab ac ac ac -ah +ab ac -ah -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab +ab ac ac ac -ah +ab ac ac -ah +ab ac ac ac @@ -13004,39 +12897,39 @@ aa ab ab ac -ah +ab ac ac ac -ah -ah +ab +ab ac ac -ah +ab ac -ah +ab ac ac ac -ah +ab ad ac ac -ah +ab ac ac ac ac ac ac -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab ac ac -ah +ab ac ad ac @@ -13261,27 +13154,27 @@ ab ab ac ac -ah -ah +ab +ab ac ac ac -ah +ab ac ac -ah +ab ac -ah -ah +ab +ab ac ac -ah -ah +ab +ab ac -ah -ah +ab +ab ac -ah +ab ac ac ac @@ -13289,11 +13182,11 @@ ac ac ad ac -ah +ab ac ac ac -ah +ab ac ac ac @@ -13519,38 +13412,38 @@ ac ac ac ac -ah +ab ac ac ac -ah +ab ad ac -ah +ab ac ac -ah +ab ac ac ac ac ac -ah +ab ac ac -ah -ah -ah +ab +ab +ab af ac ac ac ac -ah +ab ac ac ac -ah +ab ac ac ac @@ -13776,38 +13669,38 @@ ac ac ac ac -ah -ah +ab +ab ac ac -ah +ab ac ac -ah +ab ac ac -ah -ah -ah +ab +ab +ab ac ac ac -ah +ab ac ac ac ac -ah -ah -ah +ab +ab +ab ac ac ac -ah +ab ac ac ac -ah +ab ac ad ac @@ -14029,42 +13922,42 @@ ab ac ac ac -ah +ab ad ac ac ac -ah +ab ac ac -ah +ab ac ac -ah +ab ac ac ac ac -ah -ah +ab +ab ac ac -ah -ah +ab +ab ac ac ac ac ac -ah -ah +ab +ab ac ac -ah +ab ac af ac -aJ +aF ac ac ac @@ -14072,9 +13965,9 @@ ac ac ac ab -ac -ac -ac +aO +aO +aO aa aa aa @@ -14282,46 +14175,46 @@ aa aa ab ab -ah +ab ac ac ac -ah -ah +ab +ab ac af ac -ah +ab ac ac -ah +ab ac ac -ah +ab ad ac ac ac ac -ah -ah +ab +ab ac ac -ah -ah +ab +ab ac ac ac ac ac -ah +ab ac ac -ah +ab ac ac ac -aJ +aF ac ac ac @@ -14331,8 +14224,8 @@ ac ab aa aa -ac -ac +aO +aO aa aa aa @@ -14539,46 +14432,46 @@ aa aa ab ac -ah -ah +ab +ab ac ac ac -ah +ab ac ac ac -ah +ab af ac -ah +ab ac ac -ah -ah +ab +ab ac ac -ah +ab ac ac -ah +ab ac ac ac -ah -ah -ah +ab +ab +ab ad ac ac -ah +ab ac ac -ah +ab ac ac ac -ah +ab ac ad ac @@ -14589,7 +14482,7 @@ ab aa aa aa -ac +aO aa aa aa @@ -14797,45 +14690,45 @@ aa ab ac ac -ah +ab ac ac ac -ah +ab ac ac ac -ah +ab ac ac -ah +ab ac ac ac -ah +ab ac ac -ah +ab ac ac -ah -ah +ab +ab ac ac ac af -ah -ah +ab +ab ac ac -ah +ab ac ac -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab ac ac ac @@ -14843,8 +14736,8 @@ ac ac ac ab -ac -ac +aO +aO aa aa aa @@ -15054,45 +14947,45 @@ aa ab ac ac -ah -ah +ab +ab ac ac -ah +ab ac ac ac -ah +ab ac ac -ah +ab ac ac ac -ah +ab ac ac -ah +ab ac ac ac -ah -ah +ab +ab ac ac ac ac -ah -ah +ab +ab ac -ah +ab ac ac ac ac ac ac -ah +ab ac ac ac @@ -15101,8 +14994,8 @@ ac ac ab aa -ac -ac +aO +aO aa aa aa @@ -15312,44 +15205,44 @@ ab ac ac ac -ah +ab ac ac -ah +ab ac ac ac -ah +ab ac ac -ah -ah +ab +ab ac ac -ah +ab ac ac -ah -ah +ab +ab ac ac ac -ah +ab ac ac ac ac ac -ah +ab ac -ah -ah +ab +ab ac ac ac ac ac -ah +ab ac ad aK @@ -15357,11 +15250,11 @@ ac ac ac ab -ac -ac -ac -ac -ac +aO +aO +aO +aO +aO aa aa aa @@ -15567,32 +15460,32 @@ aa aa ab ac -ah +ab ac -ah +ab ac ac -ah +ab ac ac ac -ah +ab ac ac ac -ah +ab ac ac -ah +ab ac ac ac -ah +ab ac af ac -ah -ah +ab +ab ac ac ac @@ -15600,13 +15493,13 @@ ac ac ac ac -ah +ab ac ac ac ac ac -ah +ab ac ac ac @@ -15615,9 +15508,9 @@ ac ac ab aa -ac -ac -ac +aO +aO +aO aa aa aa @@ -15824,46 +15717,46 @@ aa aa ab ac -ah +ab ac af ac ac -ah +ab ac ac -ah -ah +ab +ab ac ac ac -ah +ab ac ac -ah -ah +ab +ab ac ac -ah -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab +ab ac ac ac ac ac ac -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab ac ac -ah +ab ac ac af @@ -15871,11 +15764,11 @@ ac ac ac ab -ac -ac -ac -ac -ac +aO +aO +aO +aO +aO aa aa aa @@ -16081,46 +15974,46 @@ aa aa ab ac -ah -ah +ab +ab ac ac ac -ah +ab ac ac -ah +ab ad ac ac ac -ah +ab ac ac ac -ah -ah +ab +ab ac ac ac ac ac ac -ah -ah +ab +ab ac ac ac -ah -ah -ah +ab +ab +ab ac ac ac ac ac ac -ah +ab ac ad ac @@ -16132,7 +16025,7 @@ aa aa aa aa -ac +aO aa aa aa @@ -16339,36 +16232,36 @@ aa ab ac ac -ah +ab ad ac ac -ah +ab ac ac -ah +ab ac ac ac ac -ah -ah +ab +ab ad ac ac -ah -ah -ah -ah +ab +ab +ab +ab ac ac ac ac -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab ac ac ac @@ -16377,7 +16270,7 @@ ac ac ac ac -ah +ab ac ac ac @@ -16389,8 +16282,8 @@ aa aa aa aa -ac -ac +aO +aO aa aa aa @@ -16596,11 +16489,11 @@ aa ab ac ac -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab ac ac ac @@ -16609,20 +16502,20 @@ ac ac ac ac -ah -ah +ab +ab ac ac ac ac ac -ah -ah -ah +ab +ab +ab ac ac ac -ah +ab ac ac ac @@ -16634,7 +16527,7 @@ ac ad ac ac -ah +ab ac ac ac @@ -16646,9 +16539,9 @@ ab ab ab ab -ac -ac -ac +aO +aO +aO aa aa aa @@ -16857,17 +16750,17 @@ ac ac ac ac -ah +ab ac ac ac ac ac ac -ah -ah -ah -ah +ab +ab +ab +ab ac af ac @@ -16875,23 +16768,23 @@ ac ac ac ad -ah +ab ac af ac -ah +ab ac ac ac ac ac ac -ah -ah -ah +ab +ab +ab ac ac -ah +ab ac ad ac @@ -16901,14 +16794,14 @@ ac aF aW aS -ac -ac -ac -ac -ac -ac -ac -ac +aO +aO +aO +aO +aO +aO +aO +aO aa aa aa @@ -17109,19 +17002,19 @@ aa aa ab ab -ah -ah -ah +ab +ab +ab ac ac -ah -ah -ah +ab +ab +ab ac ac ac -ah -ah +ab +ab ac ac ac @@ -17132,23 +17025,23 @@ ac ac ac ac -ah +ab ac ac -ah -ah +ab +ab ac ac ac ac -ah -ah -ah +ab +ab +ab ac -ah +ab ac ac -ah +ab ac ac ac @@ -17156,17 +17049,17 @@ ac ac ac aF -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO aa aa aa @@ -17368,44 +17261,44 @@ aa ab ab ac -ah -ah +ab +ab ac ac ac -ah -ah -ah +ab +ab +ab ac -ah +ab ac ac -ah -ah -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab +ab +ab ac ac -ah +ab ac ac -ah +ab ac ac ac ac -ah -ah +ab +ab ad ac ac -ah +ab ac ac -ah +ab ac ac ac @@ -17417,12 +17310,12 @@ ab ab ab ab -ac -ac -ac -ac -ac -ac +aO +aO +aO +aO +aO +aO aa aa aa @@ -17626,43 +17519,43 @@ aa ab ac ac -ah +ab ac ac ac ac ad -ah -ah -ah +ab +ab +ab ac ac -ah +ab ac af ac ac ac -ah +ab ac ac ac ac ac -ah -ah +ab +ab ac ac ac -ah +ab ac ac af ac -ah +ab ac ac -ah +ab ac ad ac @@ -17883,31 +17776,31 @@ aa ab ac ac -ah -ah +ab +ab ac ac ac ac ac ac -ah +ab ac ac -ah +ab ac ac ac ac ac -ah -ah +ab +ab ac ac ac ac ac -ah +ab ac ac ac @@ -17916,10 +17809,10 @@ ac ac ac ac -ah +ab ac ac -ah +ab ac ac ac @@ -17929,8 +17822,8 @@ ac ab aa aa -ac -ac +aO +aO aa aa aa @@ -18141,42 +18034,42 @@ ab ac ac ac -ah +ab ac ac ac ac ac ac -ah +ab ac ac -ah -ah -ah -ah +ab +ab +ab +ab ac ac ac -ah +ab ac ac ac ac ac -ah +ab ac ac ac ac ac ac -ah -ah -ah +ab +ab +ab ac ac -ah +ab ac ac ac @@ -18184,9 +18077,9 @@ ac ac ac ab -ac -ac -ac +aO +aO +aO aa aa aa @@ -18398,42 +18291,42 @@ ab ac ac ac -ah +ab ac ac ac ac ac ac -ah +ab ac ac ac ac ad -ah +ab ac ac ac -ah -ah -ah -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab +ab +ab +ab ac ac ac ac -ah -ah +ab +ab ac ac ac ac -ah +ab ac ad ac @@ -18441,10 +18334,10 @@ ac ac ac ab -ac -ac -ac -ac +aO +aO +aO +aO aa aa aa @@ -18655,21 +18548,21 @@ ab ac ac ac -ah -ah +ab +ab ac ac ac ac ac -ah +ab ac ac ac ac ac -ah -ah +ab +ab ac ac ac @@ -18679,18 +18572,18 @@ ac ac ac ac -ah -ah +ab +ab ac -ah -ah -ah +ab +ab +ab ac ac ac ac af -ah +ab ac ac ac @@ -18913,21 +18806,21 @@ ac ac ac ac -ah -ah +ab +ab ac ac ac ac -ah -ah +ab +ab ac ac ac ac ac -ah -ah +ab +ab ac ac ac @@ -18937,9 +18830,9 @@ ac ac ac ac -ah -ah -ah +ab +ab +ab ac ac ac @@ -18947,16 +18840,16 @@ ac ac ac ac -ah +ab ac ac ab ab ab ab -ac -ac -ac +aO +aO +aO aa aa aa @@ -19171,25 +19064,25 @@ af ac ac ac -ah -ah +ab +ab ac ac ac ac -ah +ab ac ac ac ac ac ac -ah -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab +ab ad ac ac @@ -19209,12 +19102,12 @@ ab ab ab aa -ac +aO aa aa aa -ac -ac +aO +aO aa aa aa @@ -19421,7 +19314,7 @@ aa aa ab ab -ah +ab ac ac ac @@ -19429,22 +19322,22 @@ ac ac ac ac -ah +ab ac ac ac ac -ah -ah -ah -ah +ab +ab +ab +ab ac ac ac ac ac ac -ah +ab ac ac ac @@ -19466,13 +19359,13 @@ aa aa aa aa -ac +aO aa aa aa aa -ac -ac +aO +aO aa aa aa @@ -19677,39 +19570,39 @@ aa aa ab ab -ai +ab ac ac ac ad -ah +ab ac ac ac -ah -ah +ab +ab ac ac ac ac ac ac -ah +ab ac ac ac ac af -ah -ah +ab +ab ac ac ac -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab ac ac ac @@ -19723,13 +19616,13 @@ aa aa aa aa -ac -ac -ac +aO +aO +aO aa aa aa -ac +aO aa aa aa @@ -19934,45 +19827,45 @@ aa ab ab ac -ai -ai +ab +ab ac ac ac -ah +ab ac ac ac ac -ah -ah -ah +ab +ab +ab ac ac af ac -ah +ab ac ac -ah -ah -ah -ah +ab +ab +ab +ab ac ac ac ac -ah +ab af ac ac -ah -ah -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab +ab +ab ab aa aa @@ -19982,11 +19875,11 @@ aa aa aa aa -ac +aO aa aa aa -ac +aO aG aa aa @@ -20050,7 +19943,7 @@ aG aG aG aG -aN +aG aG aG aG @@ -20192,26 +20085,26 @@ ab ac ac ac -ai -ai +ab +ab ac ac -ah -ah +ab +ab ac ac ac ac ad -ah +ab ac ac ac ac -ah +ab ac ac -ah +ab ac ac ac @@ -20219,14 +20112,14 @@ ac ac ac ac -ah +ab ac ac ac ac ac -ah -ah +ab +ab ac ac ab @@ -20297,9 +20190,9 @@ aG aG aG aG -aN -aN -aN +aG +aG +aG aG aG aR @@ -20307,7 +20200,7 @@ aR aR aR aR -aN +aG aG aG aG @@ -20450,33 +20343,33 @@ ac ac ac ac -ai -ai +ab +ab ac ac -ah -ah -ah +ab +ab +ab ac ac ac -ah -ah -ah +ab +ab +ab ad ac -ah +ab ac ac -ah +ab ac ac ac -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab ac ac ac @@ -20550,13 +20443,13 @@ aR aR aV aR -aN -aN -aN -aN -aN -aN -aN +aG +aG +aG +aG +aG +aG +aG aR aR aR @@ -20564,7 +20457,7 @@ aX aX aX aR -aN +aG aG aG aG @@ -20708,38 +20601,38 @@ ac ac ac ac -ai -ai +ab +ab ac ac ac -ah -ah -ah +ab +ab +ab ac ac ac -ah -ah +ab +ab ac -ah +ab ac ac -ah +ab ac ac ac -ah +ab ad ac ac ac ac -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab ac ac ac @@ -20807,8 +20700,8 @@ aX aX aX aR -aN -aN +aG +aG aR aR aR @@ -20966,23 +20859,23 @@ ac ac ac ac -ai +ab ac ac ac ac ad -ah +ab ac ac ac ac ac ac -ah +ab ac ac -ah +ab ac ac ac @@ -20991,11 +20884,11 @@ ac ac ac ac -ah -ah +ab +ab ad -ah -ah +ab +ab ac ac ac @@ -21018,8 +20911,8 @@ aQ aQ aQ aQ -be -be +aU +aU aU bf ba @@ -21223,32 +21116,32 @@ ac ac ac ac -ai +ab ac ac ac ac ac -ah -ah -ah +ab +ab +ab ac ac ac ac -ah +ab ac ac -ah -ah -ah +ab +ab +ab ac ac ac ac -ah -ah -ah +ab +ab +ab ac ac af @@ -21480,30 +21373,30 @@ ac ac ac ac -ai -ai +ab +ab ac ac ac af ac ac -ah -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab +ab ac ac ac af -ah -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab +ab ac ac ac @@ -21593,7 +21486,7 @@ aX aX aX aR -aN +aG aG aG "} @@ -21738,9 +21631,9 @@ ac ac ac ac -ah -ah -ah +ab +ab +ab ac ac ac @@ -21750,8 +21643,8 @@ ac ac ac ad -ah -ah +ab +ab ac ac ac @@ -21764,11 +21657,11 @@ ac ac ac ac -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab ab aa aa @@ -21850,7 +21743,7 @@ aX aX aX aR -aN +aG aG aG "} @@ -21997,9 +21890,9 @@ ac ac ac ac -ah -ah -ah +ab +ab +ab ac ac ac @@ -22008,8 +21901,8 @@ ac ac ac ac -ah -ah +ab +ab ad ac ac @@ -22021,7 +21914,7 @@ ac ac ac ac -ah +ab ac ac ac @@ -22042,7 +21935,7 @@ aG aG aG aG -aY +aQ aU ba ba @@ -22107,7 +22000,7 @@ aX aX aX aR -aN +aG aG aG "} @@ -22256,7 +22149,7 @@ ac ac ac ac -ah +ab ac ac ac @@ -22266,10 +22159,10 @@ ac ac ac ac -ah -ah -ah -ah +ab +ab +ab +ab ac ac ac @@ -22277,8 +22170,8 @@ ac ac ac ac -ah -ah +ab +ab ac ac ac @@ -22298,8 +22191,8 @@ aG aG aG aG +aG aQ -aY aU ba ba @@ -22364,7 +22257,7 @@ gi gi gi aR -aN +aG aG aG "} @@ -22513,12 +22406,12 @@ ac ac ac ac -ah -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab +ab ac ac ac @@ -22526,15 +22419,15 @@ ac ac ac ac -ah -ah +ab +ab ac ac ac -ah -ah -ah -ah +ab +ab +ab +ab af ac ac @@ -22555,9 +22448,9 @@ aG aG aG aG +aG aQ aU -aU ba ba aU @@ -22611,7 +22504,7 @@ aX aX aX aX -gN +aR aR aR aX @@ -22621,7 +22514,7 @@ gi gi gi aR -aN +aG aG aG "} @@ -22775,26 +22668,26 @@ ac ac ac ac -ah -ah -ah +ab +ab +ab ac ac ac ac af ac -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab ad ac ac ac ac -ah +ab ac ac ab @@ -22810,10 +22703,10 @@ aG aG aG aG -aN +aG +aR aR aR -bc aU bb bb @@ -23034,9 +22927,9 @@ ac ac ac ac -ah -ah -ah +ab +ab +ab ac ac ac @@ -23051,7 +22944,7 @@ ac ac ac ac -ah +ab ac ac ab @@ -23293,10 +23186,10 @@ ac ac ac ac -ah -ah -ah -ah +ab +ab +ab +ab ac ac ac @@ -23306,9 +23199,9 @@ ac ac ac ac -ah -ah -ah +ab +ab +ab ac af ab @@ -23323,7 +23216,7 @@ aG aG aG aG -aN +aG aR aV aX @@ -23391,7 +23284,7 @@ aR aX aX aX -gN +aR aG aG aG @@ -23553,17 +23446,17 @@ ac ac ac ac -ah -ah +ab +ab ac ac ac ac ac -ah -ah -ah -ah +ab +ab +ab +ab ad ac ac @@ -23582,7 +23475,7 @@ aG aG aR aR -aT +aR aX aX aX @@ -23634,7 +23527,7 @@ aN aR aX aX -gN +aR aR aX aX @@ -23644,7 +23537,7 @@ aX aR aN aR -gN +aR aR aX aX @@ -23811,13 +23704,13 @@ ac ac ac ac -ah -ah -ah -ah -ah -ah -ah +ab +ab +ab +ab +ab +ab +ab ac ac ac @@ -23837,9 +23730,9 @@ aG aG aG aG -aT +aR aX -aT +aR aX aX aX @@ -24074,7 +23967,7 @@ ac ac ac ac -ah +ab ac ac ac @@ -24094,7 +23987,7 @@ aG aG aG aG -aT +aR aX aX aX @@ -24331,15 +24224,15 @@ ac ac ac ac -ah +ab aF aF -ah -ah -ah -ah -ai -ai +ab +ab +ab +ab +ab +ab ab aP aQ @@ -24351,7 +24244,7 @@ aQ aQ aQ aQ -aT +aR aX aX aX @@ -24421,8 +24314,8 @@ aX aX aX aR -aG -aG +aQ +aQ "} (86,1,1) = {" aa @@ -24608,7 +24501,7 @@ aG aG aG aR -aT +aR aX aX aX @@ -24665,7 +24558,7 @@ aX aX aX aR -gN +aR aX aX aX @@ -25122,7 +25015,7 @@ aG aG aG aR -aT +aR aX aX aX @@ -25173,7 +25066,7 @@ aN aN aN aN -gN +aR aX er aX @@ -25379,7 +25272,7 @@ aG aG aG aM -aT +aR aX aX aX @@ -25448,7 +25341,7 @@ aR aX aX aX -gN +aR aG aG "} @@ -25636,7 +25529,7 @@ aG aG aG aG -aT +aR aX aX aX @@ -25894,7 +25787,7 @@ aG aG aG aR -aT +aR aX aX aX @@ -25957,7 +25850,7 @@ aN aR aX aX -gN +aR aR aX aX @@ -26150,8 +26043,8 @@ aG aG aG aG -aN -aT +aG +aR aX aX aX @@ -26407,8 +26300,8 @@ aG aG aG aG -aN -aT +aG +aR aX aX aX @@ -26665,7 +26558,7 @@ aG aG aG aG -aT +aR aX aX aX @@ -26720,7 +26613,7 @@ aX aX aX aR -gN +aR aX aX aX @@ -26922,7 +26815,7 @@ aG aG aG aR -aT +aR aX aX aX @@ -27178,7 +27071,7 @@ aG aG aG aG -aT +aR aX aX aX @@ -27236,15 +27129,15 @@ eX eX aR aR -hg +aR er aX bd -hg aR aR aR -gN +aR +aR aX aX aR @@ -27435,7 +27328,7 @@ aG aG aG aG -aT +aR aX aX aX @@ -27500,7 +27393,7 @@ aX aX aX aR -aN +aG aR aR aR @@ -27757,11 +27650,11 @@ aX aX aX aR -aN aG aG aG -aN +aG +aG aG aG "} @@ -28009,7 +27902,7 @@ aX er aX aX -hg +aR aR aR aR @@ -28463,7 +28356,7 @@ aa aa aa aG -aN +aG aR aX aX @@ -28521,7 +28414,7 @@ bh fc aX aR -gN +aR aR aR aa @@ -28778,7 +28671,7 @@ bh aX aX aR -aN +aG aG aG aa @@ -29035,7 +28928,7 @@ bh eX fc aR -aN +aG aG aG aa @@ -29292,7 +29185,7 @@ bh eX eX aR -aN +aG aG aG aa @@ -29549,7 +29442,7 @@ eo eX eX aR -aN +aG aG aG aG @@ -29748,7 +29641,7 @@ aa aa aa aG -aQ +aR aR aX aX @@ -29806,7 +29699,7 @@ bh eX aX aR -aN +aG aG aG aG @@ -29992,7 +29885,7 @@ aD ad ac ac -ab +ac ab aa aa @@ -30005,7 +29898,7 @@ aa aa aa aG -aQ +aR aX aX aX @@ -30063,7 +29956,7 @@ bh eX aX aR -aN +aG aG aG aG @@ -30248,8 +30141,8 @@ ac ac ac ac -ab -ab +ac +ac ab aa aa @@ -30262,7 +30155,7 @@ aa aa aG aG -aQ +aR aR aX aX @@ -30504,9 +30397,9 @@ ac ac ac ac -ab -ab -ab +ac +ac +ac ab aa aa @@ -30761,9 +30654,9 @@ ac ac ac ac -ab -aI -aO +ac +ac +ac ab aa aa @@ -31018,9 +30911,9 @@ ac ac al ac -ab -aH -aL +ac +ac +ac ab aa aa @@ -31275,8 +31168,8 @@ ac ac ac ac -ab -ab +ac +ac ab ab aa @@ -31348,7 +31241,7 @@ bh eX aX aR -aN +aG aG aG aa @@ -31533,7 +31426,7 @@ ac ac ac ac -ab +ac ab aa aa @@ -31605,7 +31498,7 @@ bh eX aX aR -aN +aG aG aG aa @@ -31790,7 +31683,7 @@ ac ac ac ac -ab +ac ab aa aa @@ -31862,7 +31755,7 @@ gP eB dK aR -aN +aG aG aG aa @@ -32047,7 +31940,7 @@ ac ac ac ac -ab +ac ab aa aa @@ -32891,7 +32784,7 @@ eX aX aR aR -aN +aG aG aG aa @@ -33148,7 +33041,7 @@ eX aX aR aR -aN +aG aG aa aa @@ -33405,7 +33298,7 @@ eX aX aX aR -aN +aG aG aG aa @@ -33662,7 +33555,7 @@ eX aX aX aR -aN +aG aG aG aG @@ -34332,11 +34225,11 @@ ac ag ag aj -an -an +ab +ab ag -an -an +ab +ab ag ag ag @@ -34589,11 +34482,11 @@ ac ad ag ag -an +ab ag ag ag -an +ab ag ag ag @@ -34630,7 +34523,7 @@ aa aa aG aG -aN +aG aR aR aX @@ -34845,13 +34738,13 @@ ac ac ac ac -an -an +ab +ab ag -an +ab ag -an -an +ab +ab ag ag ag @@ -35102,13 +34995,13 @@ ab ac ac ac -an +ab ag ac ag ag ag -an +ab ag ag ag @@ -35359,13 +35252,13 @@ ab ac ac ac -an +ab ag ag ag ag ag -an +ab ag ag ag @@ -35460,8 +35353,8 @@ eX eX aR aR -aR -aN +aG +aG aG aa aa @@ -35616,13 +35509,13 @@ ab ac ac ac -an +ab ac ad ag aB ac -an +ab ac ac ag @@ -35659,7 +35552,7 @@ aG aG aG aG -aN +aG aR aR aX @@ -35716,9 +35609,9 @@ do bh eX aR -aN -aN -aN +aG +aG +aG aG aa aa @@ -35870,18 +35763,18 @@ aa aa aa ab -an -an -an -an -an -an +ab +ab +ab +ab +ab +ab ao -an -an -an -an -an +ab +ab +ab +ab +ab ac ad ag @@ -35916,7 +35809,7 @@ aG aG aG aG -aN +aG aR aX aX @@ -35973,9 +35866,9 @@ bh bh eX aR -aN -aN -aN +aG +aG +aG aG aG aG @@ -36127,8 +36020,8 @@ aa aa aa ab -an -an +ab +ab ar au ax @@ -36138,7 +36031,7 @@ ao ao ao ao -an +ab ac ac ac @@ -36230,9 +36123,9 @@ cw gP eX aR -aN -aN -aN +aG +aG +aG aG aG aG @@ -36385,7 +36278,7 @@ aa aa ab ab -an +ab at aw az @@ -36395,7 +36288,7 @@ ao ao ao ao -an +ab ac ac ac @@ -36487,9 +36380,9 @@ bB bh eX aR -aN -aN -aN +aG +aG +aG aG aG aG @@ -36642,7 +36535,7 @@ aa aa aa ab -an +ab as av ay @@ -36652,7 +36545,7 @@ ao aq ao ao -an +ab ac ac ac @@ -36744,9 +36637,9 @@ bB bh eX aR -aN -aN -aN +aG +aG +aG aG aG aG @@ -36899,17 +36792,17 @@ aa aa aa ab -an -an +ab +ab ao ao ao ao ao -an -an -an -an +ab +ab +ab +ab ac ac ac @@ -36944,8 +36837,8 @@ aa aG aG aG -aN -aN +aG +aG aR aX aX @@ -37001,9 +36894,9 @@ bh cw eX aR -aN -aN -aN +aG +aG +aG aG aG aG @@ -37157,13 +37050,13 @@ aa aa ab ab -an +ab ao ao ao ao -an -an +ab +ab ab ab ab @@ -37201,7 +37094,7 @@ aa aa aG aG -aN +aG aR aR aX @@ -37258,9 +37151,9 @@ eX cf eX aR -aN -aN -aN +aG +aG +aG aG aG aa @@ -37414,12 +37307,12 @@ aa aa aa ab -an +ab ao ao ao -an -an +ab +ab ab ab aa @@ -37458,7 +37351,7 @@ aa aa aG aG -aN +aG aR aX aX @@ -37515,9 +37408,9 @@ bh bh eX aR -aN -aN -aN +aG +aG +aG aG aG aa @@ -37671,11 +37564,11 @@ aa aa aa ab -an +ab ab ao ab -an +ab ab ab aa @@ -37715,7 +37608,7 @@ aa aa aG aG -aN +aG aR aX aX @@ -37772,9 +37665,9 @@ bh bh eX aR -aN -aN -aN +aG +aG +aG aG aG aG @@ -37972,7 +37865,7 @@ aa aa aG aG -aN +aG aR aX aX @@ -38029,9 +37922,9 @@ bv gP eX aR -aN -aN -aN +aG +aG +aG aG aG aG @@ -38286,8 +38179,8 @@ bh bh eX aR -aN -aN +aG +aG aG aG aG @@ -38543,8 +38436,8 @@ bh eo eX aR -aN -aN +aG +aG aG aG aG @@ -38800,8 +38693,8 @@ cw bh eX aR -aN -aN +aG +aG aG aG aG @@ -39057,8 +38950,8 @@ bh bh eX aR -aN -aN +aG +aG aG aG aa @@ -39314,8 +39207,8 @@ bh bh eX aR -aN -aN +aG +aG aG aG aa @@ -39514,7 +39407,7 @@ aa aG aG aG -aN +aG aR aX aX @@ -39571,8 +39464,8 @@ bh gP eX aR -aN -aN +aG +aG aG aa aa @@ -39828,8 +39721,8 @@ bh bh eX aR -aN -aN +aG +aG aG aG aG @@ -40085,8 +39978,8 @@ bh bh eX aR -aN -aN +aG +aG aG aG aa @@ -40342,8 +40235,8 @@ bh fP eX aR -aN -aN +aG +aG aG aG aa @@ -40599,8 +40492,8 @@ bh cw eX aR -aN -aN +aG +aG aG aa aa @@ -40799,8 +40692,8 @@ aa aa aa aG -aN -aN +aG +aG aR aX aX @@ -40856,8 +40749,8 @@ bh bh eX aR -aN -aN +aG +aG aG aa aa @@ -41056,8 +40949,8 @@ aa aa aa aG -aN -aN +aG +aG aR aX aX @@ -41113,8 +41006,8 @@ bh gP eX aR -aN -aN +aG +aG aG aa aa @@ -41313,8 +41206,8 @@ aa aa aG aG -aN -aN +aG +aG aR aX aX @@ -41370,8 +41263,8 @@ bv bh eX aR -aN -aN +aG +aG aG aa aa @@ -41571,7 +41464,7 @@ aa aG aG aG -aN +aG aR aX aX @@ -41627,7 +41520,7 @@ bh bh eX aR -aN +aG aG aG aG @@ -41828,7 +41721,7 @@ aa aG aG aG -aN +aG aR aR aR @@ -41884,7 +41777,7 @@ eX eX eX aR -aN +aG aG aG aG @@ -42086,8 +41979,8 @@ aG aG aG aG -aN -aN +aG +aG aR aR aX @@ -42344,7 +42237,7 @@ aG aG aG aG -aN +aG aR aX aX @@ -42599,9 +42492,9 @@ aa aG aG aG -aN -aN -aN +aG +aG +aG aR aX aX @@ -42858,7 +42751,7 @@ aG aG aG aG -aN +aG aR aX aX @@ -43116,8 +43009,8 @@ aG aG aG aG -aQ -aQ +aR +aR aR aR aX @@ -43374,8 +43267,8 @@ aG aG aG aG -aN -aN +aG +aG aR aR aR @@ -43403,29 +43296,29 @@ aR aX aR aR -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG aG aG aG @@ -43632,17 +43525,17 @@ aG aG aG aG -aN -aN -aN -aN -aN -aN +aG +aG +aG +aG +aG +aG aR aR aR aR -aN +aG aR aR aR @@ -43659,30 +43552,30 @@ aR aR aR aR -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN -aN aG -aN -aN -aN -aN -aN +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG +aG aG aG aG @@ -43891,20 +43784,20 @@ aG aG aG aG -aN -aN -aN -aN -aN aG aG aG aG aG -aN -aN -aQ -aQ +aG +aG +aG +aG +aG +aG +aG +aG +aG aG aG aG diff --git a/_maps/map_files/celestation/Lavaland.dmm b/_maps/map_files/celestation/Lavaland.dmm index 56538f05d963..c07d5b137006 100644 --- a/_maps/map_files/celestation/Lavaland.dmm +++ b/_maps/map_files/celestation/Lavaland.dmm @@ -7269,6 +7269,10 @@ /obj/structure/table/reinforced/brass, /turf/simulated/floor/indestructible/boss, /area/mine/necropolis) +"XS" = ( +/obj/ash_walker_landmark, +/turf/template_noop, +/area/lavaland/surface/outdoors/necropolis) "XT" = ( /obj/machinery/light/small{ dir = 1 @@ -60506,9 +60510,9 @@ Ct Ct Ct aj -ab aj -ab +aj +aj ab ab ab @@ -62567,7 +62571,7 @@ aj aj aj aj -ab +aj ab ab kh @@ -62809,13 +62813,14 @@ RD Ct Ct Ct -Ct -Ct -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Zx +Zx +Zx +Zx +aj aj aj aj @@ -62824,7 +62829,6 @@ aj aj aj aj -ab ab ab kh @@ -63066,13 +63070,15 @@ RD Ct Ct Ct -Ct -Ct -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Zx +Zx +Zx +Zx +aj +aj aj aj aj @@ -63081,8 +63087,6 @@ aj aj aj aj -ab -ab ab kh kh @@ -63323,13 +63327,15 @@ WC gU Ct Ct -Ct -Ct -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Zx +Zx +Zx +Zx +aj +aj aj aj aj @@ -63338,8 +63344,6 @@ aj aj aj aj -ab -ab ab kh kh @@ -63580,13 +63584,15 @@ WC WC WC Ct -Ct -Ct -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +XS +Zx +Zx +Zx +aj +aj aj aj aj @@ -63595,8 +63601,6 @@ aj aj aj aj -ab -ab ab kh kh @@ -63837,13 +63841,15 @@ WC jK jK jK -jK -Ct -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Zx +Zx +Zx +Zx +aj +aj aj aj aj @@ -63852,8 +63858,6 @@ aj aj aj aj -ab -ab ab kh kh @@ -64094,13 +64098,15 @@ WC jK jK jK -jK -WC -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Zx +Zx +Zx +Zx +aj +aj aj aj aj @@ -64109,8 +64115,6 @@ aj aj aj aj -ab -ab ab kh kh @@ -64351,13 +64355,14 @@ WC jK jK jK -jK -WC -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Zx +Zx +Zx +Zx +aj aj aj aj @@ -64366,7 +64371,6 @@ aj aj aj aj -ab ab ab kh @@ -64623,7 +64627,7 @@ aj aj aj aj -ab +aj ab ab kh @@ -65647,8 +65651,8 @@ Ct Ct aj aj -ab -ab +aj +aj ab kh kh diff --git a/_maps/map_files/celestation/celestation.dmm b/_maps/map_files/celestation/celestation.dmm index 55b610b5610b..bbbb7b83bebc 100644 --- a/_maps/map_files/celestation/celestation.dmm +++ b/_maps/map_files/celestation/celestation.dmm @@ -78,6 +78,17 @@ "abd" = ( /turf/simulated/floor/plating, /area/maintenance/cele/engineering) +"abf" = ( +/obj/machinery/suit_storage_unit/security, +/obj/effect/decal/warning_stripes/red, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/armory) "abh" = ( /obj/effect/turf_decal/bot/left, /obj/machinery/portable_atmospherics/scrubber, @@ -178,23 +189,6 @@ icon_state = "whiteblue" }, /area/medical/surgery/theatre) -"acd" = ( -/obj/structure/chair/barber{ - dir = 8 - }, -/obj/effect/landmark/start/barber, -/obj/structure/cable/orange{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "acj" = ( /obj/structure/holohoop{ dir = 8 @@ -314,6 +308,13 @@ icon_state = "greenfull" }, /area/security/permabrig) +"acQ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/port) "acR" = ( /obj/item/radio/intercom, /turf/simulated/wall/r_wall, @@ -854,6 +855,13 @@ icon_state = "solarpanel" }, /area/solar/west) +"aii" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/toxins/hallway) "aij" = ( /obj/machinery/optable, /obj/item/storage/firstaid/machine, @@ -1311,14 +1319,6 @@ /obj/machinery/door/firedoor, /turf/simulated/floor/carpet/green, /area/library) -"alF" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkredfull" - }, -/area/security/armory) "alK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -2201,6 +2201,21 @@ /obj/structure/barricade/wooden, /turf/simulated/floor/plating, /area/maintenance/cele/medbay) +"ath" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk, +/obj/machinery/conveyor{ + dir = 1; + id = "CargoTransfer" + }, +/obj/structure/disposaloutlet{ + dir = 1; + eject_range = 2 + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "atm" = ( /obj/item/radio/intercom{ pixel_y = 28 @@ -4258,6 +4273,7 @@ }, /area/maintenance/cele/servise) "aJD" = ( +/obj/machinery/station_map/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "navybluealt" @@ -4656,16 +4672,6 @@ "aMS" = ( /turf/simulated/wall/r_wall, /area/crew_quarters/cabin1) -"aNl" = ( -/obj/structure/table, -/obj/item/aiModule/reset, -/obj/machinery/firealarm{ - pixel_y = 26 - }, -/turf/simulated/floor/plasteel{ - icon_state = "bcircuit" - }, -/area/turret_protected/ai_upload) "aNo" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -4846,17 +4852,6 @@ /obj/machinery/camera/autoname, /turf/simulated/floor/glass, /area/security/prison/cell_block/A) -"aOM" = ( -/obj/machinery/flasher/portable, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/radio/intercom{ - pixel_y = 28 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" - }, -/area/security/armory) "aON" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -5037,12 +5032,6 @@ icon_state = "navybluealt" }, /area/bridge/meeting_room) -"aQo" = ( -/obj/machinery/iv_drip, -/turf/simulated/floor/plasteel{ - icon_state = "darkblue" - }, -/area/medical/surgery/north) "aQu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -5346,6 +5335,9 @@ dir = 4 }, /obj/machinery/quantumpad/cere/cargo_security, +/obj/item/radio/intercom{ + pixel_y = 28 + }, /turf/simulated/floor/plasteel{ icon_state = "darkredfull" }, @@ -5771,27 +5763,6 @@ }, /turf/simulated/floor/carpet/cyan, /area/crew_quarters/fitness) -"aVT" = ( -/obj/structure/rack, -/obj/item/clothing/head/helmet/riot, -/obj/item/clothing/head/helmet/riot, -/obj/item/clothing/suit/armor/riot, -/obj/item/clothing/suit/armor/riot, -/obj/item/shield/riot, -/obj/item/shield/riot, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/door/window{ - dir = 2; - name = "Secure Armory"; - req_access = list(1) - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" - }, -/area/security/armory) "aVZ" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -5937,17 +5908,6 @@ color = "gray" }, /area/crew_quarters/bar/atrium) -"aWL" = ( -/obj/structure/table, -/obj/item/aiModule/crewsimov, -/obj/machinery/flasher{ - id = "AI"; - pixel_y = 21 - }, -/turf/simulated/floor/plasteel{ - icon_state = "bcircuit" - }, -/area/turret_protected/ai_upload) "aWM" = ( /obj/machinery/door/airlock/public/glass{ name = "Central Access" @@ -6925,12 +6885,6 @@ "bcC" = ( /turf/simulated/openspace, /area/hallway/primary/starboard/south) -"bcK" = ( -/obj/structure/table, -/obj/item/aicard, -/obj/item/aiModule/reset, -/turf/simulated/floor/plating, -/area/storage/tech) "bcL" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -7191,22 +7145,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/engineering) -"beN" = ( -/obj/machinery/light, -/obj/machinery/alarm{ - dir = 1; - pixel_y = -26 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "beQ" = ( /obj/structure/table/wood, /obj/item/eftpos, @@ -7410,15 +7348,6 @@ icon_state = "dark" }, /area/engineering/gravitygenerator) -"bfw" = ( -/obj/machinery/conveyor{ - id = "garbage" - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "bfB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -7991,19 +7920,6 @@ icon_state = "darkyellow" }, /area/atmos/distribution) -"bjK" = ( -/obj/structure/table, -/obj/item/storage/box/gloves{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/masks, -/obj/item/reagent_containers/spray/cleaner/medical, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "whiteblue" - }, -/area/medical/surgery/north) "bjN" = ( /obj/structure/table/wood, /obj/item/storage/fancy/donut_box, @@ -8146,31 +8062,6 @@ icon_state = "navybluealt" }, /area/turret_protected/ai) -"bkW" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/aiModule/oxygen, -/obj/item/aiModule/oneCrewMember, -/obj/item/aiModule/purge, -/obj/item/aiModule/antimov, -/obj/structure/table/glass, -/obj/machinery/door/window{ - dir = 1; - name = "High-Risk Modules"; - req_access = list(20) - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/ai_status_display{ - pixel_y = -32 - }, -/obj/machinery/light, -/turf/simulated/floor/plasteel{ - icon_state = "bcircuit" - }, -/area/turret_protected/ai_upload) "bkX" = ( /obj/structure/table/wood, /obj/structure/railing{ @@ -9013,9 +8904,6 @@ icon_state = "whiteblue" }, /area/medical/reception) -"bpQ" = ( -/turf/simulated/wall, -/area/civilian/barber) "bpV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -9034,12 +8922,6 @@ icon_state = "neutral" }, /area/storage/primary) -"bqf" = ( -/obj/effect/decal/warning_stripes/blue, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/surgery/north) "bqn" = ( /obj/machinery/power/apc{ dir = 8; @@ -10933,6 +10815,13 @@ icon_state = "yellowfull" }, /area/atmos/break_room) +"bAN" = ( +/obj/machinery/suit_storage_unit/security, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/armory) "bAO" = ( /obj/machinery/atmospherics/pipe/simple/visible/green, /turf/simulated/wall/r_wall/coated, @@ -10959,12 +10848,6 @@ }, /turf/simulated/floor/plating/asteroid, /area/maintenance/cele/medbay) -"bAW" = ( -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkredaltstrip" - }, -/area/security/armory) "bAX" = ( /obj/machinery/light{ dir = 8 @@ -11621,19 +11504,6 @@ icon_state = "darkyellow" }, /area/engineering/hardsuitstorage) -"bFm" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 26 - }, -/obj/structure/dresser, -/obj/machinery/camera/autoname{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "bFp" = ( /obj/machinery/computer/security/engineering{ dir = 8 @@ -12479,22 +12349,21 @@ icon_state = "whitebluefull" }, /area/medical/cmostore) -"bKc" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkred" - }, -/area/security/armory) "bKd" = ( /obj/structure/dispenser/oxygen, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/storage/eva) +"bKf" = ( +/obj/machinery/turretid/stun{ + name = "AI Satellite Turret Control"; + pixel_x = 0; + pixel_y = 28; + req_access = list(75) + }, +/turf/simulated/floor/plating, +/area/turret_protected/aisat) "bKg" = ( /obj/machinery/door/firedoor, /obj/machinery/camera{ @@ -13200,27 +13069,6 @@ }, /turf/simulated/floor/engine/n2, /area/atmos) -"bOj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/turretid/stun{ - control_area = "AI Satellite Secondary Antechamber"; - name = "AI Satellite Secondary Antechamber Turret Control"; - req_access = list(75); - pixel_x = -30; - pixel_y = -24 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/aisat_interior) "bOk" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plasteel, @@ -13583,13 +13431,6 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/wood/fancy/light, /area/security/hos) -"bQd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/security/main) "bQg" = ( /obj/effect/decal/warning_stripes/southwest, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -15897,18 +15738,6 @@ icon_state = "darkblue" }, /area/bridge) -"cdq" = ( -/obj/machinery/cryopod/robot, -/obj/effect/landmark/join_late_cyborg, -/obj/item/radio/intercom{ - pixel_y = 22; - pixel_x = 0 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "navyblue" - }, -/area/aisat/maintenance) "cdu" = ( /obj/machinery/firealarm{ dir = 8; @@ -16138,6 +15967,21 @@ icon_state = "neutralfull" }, /area/hallway/primary/central) +"cfa" = ( +/obj/structure/cable/orange{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/armory) "cfd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -16191,6 +16035,37 @@ }, /turf/space/openspace, /area/solar/port) +"cfr" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/ammo_box/magazine/enforcer/lethal{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/ammo_box/magazine/enforcer/lethal{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/magazine/enforcer/lethal, +/obj/item/ammo_box/magazine/enforcer/lethal{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Lethal Bullets" + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/armory) "cfs" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -17784,15 +17659,6 @@ /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/grass, /area/hallway/secondary/exit) -"cps" = ( -/obj/effect/turf_decal/loading_area{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "red" - }, -/area/security/checkpoint/south) "cpt" = ( /obj/machinery/firealarm{ dir = 8; @@ -18887,30 +18753,6 @@ }, /turf/simulated/floor/glass, /area/hallway/secondary/entry/south) -"cwM" = ( -/obj/machinery/power/smes{ - charge = 5e+006; - output_level = 150000 - }, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - dir = 8 - }, -/obj/machinery/turretid/lethal{ - check_synth = 1; - name = "AI Chamber Turret Control"; - req_access = list(75); - pixel_x = 32; - pixel_y = 0 - }, -/turf/simulated/floor/glass/reinforced, -/area/turret_protected/ai) "cwP" = ( /obj/structure/chair/office/dark{ dir = 4 @@ -19105,12 +18947,6 @@ icon_state = "darkred" }, /area/security/permabrig) -"cyd" = ( -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkred" - }, -/area/security/armory) "cyi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/engine, @@ -19305,6 +19141,15 @@ icon_state = "brownfull" }, /area/teleporter/quantum/engi) +"czI" = ( +/obj/structure/closet/sechammercabinet{ + pixel_x = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/armory) "czK" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -20002,26 +19847,6 @@ icon_state = "darkred" }, /area/security/brig) -"cFr" = ( -/obj/structure/rack, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/ammo_box/shotgun/tranquilizer{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/ammo_box/shotgun/beanbag, -/obj/item/ammo_box/shotgun/beanbag, -/obj/item/ammo_box/shotgun/beanbag{ - pixel_x = -3; - pixel_y = 3 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkred" - }, -/area/security/armory) "cFu" = ( /obj/structure/table/glass, /obj/item/storage/box/masks, @@ -20195,6 +20020,15 @@ }, /turf/simulated/floor/plasteel/white, /area/toxins/xenobiology) +"cGM" = ( +/obj/machinery/requests_console{ + department = "Detective"; + name = "Detective Requests Console"; + pixel_y = -30 + }, +/obj/machinery/photocopier, +/turf/simulated/floor/carpet, +/area/security/detectives_office) "cGY" = ( /obj/machinery/light_switch{ pixel_x = -26 @@ -21633,23 +21467,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/port) -"cQU" = ( -/obj/machinery/computer/borgupload{ - dir = 1 - }, -/obj/machinery/door/window/eastright{ - dir = 8; - name = "Console Access"; - req_access = list(16) - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/ai_upload) "cQV" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/portable_atmospherics/canister/nitrogen, @@ -22070,20 +21887,6 @@ icon_state = "dark" }, /area/turret_protected/ai_upload) -"cUl" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/item/clipboard, -/obj/item/mining_voucher, -/obj/structure/disposalpipe/segment, -/obj/structure/cable/orange{ - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/bridge/meeting_room) "cUm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 @@ -22387,16 +22190,6 @@ icon_state = "darkbluecorners" }, /area/bridge) -"cVr" = ( -/obj/structure/table/reinforced, -/obj/item/eftpos, -/obj/structure/mirror{ - pixel_x = -26 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "cVs" = ( /obj/structure/bed, /obj/item/bedsheet/clown, @@ -22674,6 +22467,13 @@ icon_state = "whitepurple" }, /area/toxins/xenobiology) +"cXq" = ( +/obj/machinery/station_map/directional/east, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "navybluealt" + }, +/area/teleporter/quantum/medbay) "cXu" = ( /obj/machinery/door/airlock/public/glass{ name = "Central Access" @@ -22866,6 +22666,14 @@ }, /turf/simulated/floor/grass, /area/security/lobby) +"cZe" = ( +/obj/structure/table, +/obj/item/reagent_containers/spray/cleaner/medical, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/surgery/north) "cZf" = ( /obj/machinery/atmospherics/pipe/simple/visible/cyan{ desc = "Труба содержит дыхательную смесь для подачи на станцию"; @@ -23638,21 +23446,6 @@ "deL" = ( /turf/simulated/wall/r_wall, /area/toxins/test_area) -"dfl" = ( -/obj/machinery/requests_console{ - department = "Tool Storage"; - name = "Tool Storage Requests Console"; - pixel_y = 30 - }, -/obj/structure/table, -/obj/item/storage/toolbox/electrical, -/obj/item/multitool, -/obj/item/stack/cable_coil, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "neutral" - }, -/area/storage/primary) "dfq" = ( /obj/structure/flora/ausbushes/genericbush, /obj/machinery/light{ @@ -24215,6 +24008,16 @@ "dkH" = ( /turf/simulated/floor/engine, /area/security/execution) +"dkI" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/dispenser/oxygen, +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/armory) "dkJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -24778,6 +24581,13 @@ }, /turf/simulated/floor/plating, /area/security/permabrig) +"dpr" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/primary/central/north) "dpt" = ( /turf/simulated/floor/plasteel{ dir = 9; @@ -25052,6 +24862,27 @@ icon_state = "white" }, /area/medical/paramedic) +"dtk" = ( +/obj/machinery/camera/autoname, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/flasher/portable, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/armory) "dtp" = ( /obj/structure/closet/secure_closet/magistrate, /obj/item/camera, @@ -26598,10 +26429,8 @@ }, /area/medical/medbay) "dGk" = ( -/obj/item/radio/intercom{ - pixel_y = 28 - }, /obj/machinery/camera/autoname, +/obj/machinery/station_map/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "navybluealt" @@ -27211,6 +27040,7 @@ /obj/structure/railing/corner{ dir = 1 }, +/obj/machinery/station_map/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whitegreen" @@ -27556,15 +27386,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/cele/servise) -"dOS" = ( -/obj/machinery/turretid/stun{ - name = "AI Satellite Turret Control"; - req_access = list(75); - pixel_x = 0; - pixel_y = -26 - }, -/turf/simulated/floor/plating, -/area/turret_protected/aisat) "dOW" = ( /obj/effect/spawner/random_spawners/rock_50, /turf/simulated/floor/plating{ @@ -27765,6 +27586,17 @@ /obj/item/target, /turf/simulated/floor/plasteel/airless, /area/toxins/test_area) +"dQV" = ( +/obj/structure/table, +/obj/item/ai_module/crewsimov, +/obj/machinery/flasher{ + id = "AI"; + pixel_y = 21 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bcircuit" + }, +/area/turret_protected/ai_upload) "dQY" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -27913,6 +27745,18 @@ icon_state = "dark" }, /area/quartermaster/office) +"dSF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkredaltstrip" + }, +/area/security/armory) "dSG" = ( /obj/machinery/atmospherics/binary/pump{ dir = 1; @@ -28051,15 +27895,6 @@ icon_state = "white" }, /area/medical/genetics) -"dUh" = ( -/obj/machinery/newscaster/security_unit{ - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkred" - }, -/area/security/armory) "dUw" = ( /obj/machinery/power/apc{ dir = 1; @@ -28326,6 +28161,40 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"dXI" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/shield/riot{ + pixel_x = -6; + pixel_y = -3 + }, +/obj/item/shield/riot{ + pixel_x = -3 + }, +/obj/item/shield/riot{ + pixel_y = 3 + }, +/obj/item/shield/riot{ + pixel_x = 3; + pixel_y = 6 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/armory) "dXL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/orange{ @@ -28939,23 +28808,6 @@ /obj/machinery/chem_dispenser, /turf/simulated/floor/engine, /area/toxins/misc_lab) -"ega" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, -/obj/structure/cable/orange{ - icon_state = "2-4" - }, -/obj/machinery/flasher/portable, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkred" - }, -/area/security/armory) "egg" = ( /obj/machinery/light/small{ dir = 8 @@ -29466,25 +29318,6 @@ icon_state = "neutralcorner" }, /area/toxins/explab_chamber) -"ekN" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/laserproof, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/window{ - dir = 1; - name = "Secure Armory"; - req_access = list(1) - }, -/obj/item/gun/energy/ionrifle, -/obj/structure/sign/poster/official/ion_rifle{ - pixel_y = -32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" - }, -/area/security/armory) "ekP" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -29519,23 +29352,6 @@ icon_state = "neutralfull" }, /area/janitor) -"eln" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/deliveryChute{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced, -/obj/structure/sign/directions/floor/alt{ - dir = 6; - pixel_y = 32 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "elp" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/orange{ @@ -30571,9 +30387,6 @@ }, /area/security/permabrig) "evh" = ( -/obj/machinery/status_display{ - pixel_y = -32 - }, /obj/effect/turf_decal/stripes/corner, /turf/simulated/floor/plasteel{ icon_state = "whiteyellow" @@ -30904,6 +30717,7 @@ pixel_y = 32 }, /obj/machinery/quantumpad/cere/engineering_comand2, +/obj/machinery/station_map/directional/north, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "darkbluefull" @@ -31104,30 +30918,6 @@ color = "gray" }, /area/crew_quarters/bar/atrium) -"eBQ" = ( -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Lethal Bullets" - }, -/obj/item/ammo_box/magazine/enforcer/lethal{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/ammo_box/magazine/enforcer/lethal, -/obj/item/ammo_box/magazine/enforcer/lethal{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/ammo_box/magazine/enforcer/lethal{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/ammo_box/magazine/enforcer/lethal, -/obj/item/ammo_box/magazine/enforcer/lethal, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" - }, -/area/security/armory) "eCg" = ( /obj/machinery/computer/monitor{ name = "Sience Power Monitoring Computer" @@ -31293,14 +31083,6 @@ icon_state = "whiteyellow" }, /area/hallway/primary/central) -"eEt" = ( -/obj/machinery/flasher/portable, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" - }, -/area/security/armory) "eEx" = ( /obj/machinery/door/window{ dir = 2 @@ -32296,6 +32078,27 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/port) +"eOO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/turretid/stun{ + control_area = "AI Satellite Secondary Antechamber"; + name = "AI Satellite Secondary Antechamber Turret Control"; + pixel_x = -30; + pixel_y = -24; + req_access = list(75) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/aisat_interior) "eOQ" = ( /obj/machinery/computer/shuttle/mining, /obj/machinery/light{ @@ -33315,6 +33118,17 @@ /obj/structure/ladder, /turf/simulated/floor/glass/reinforced, /area/engineering/gravitygenerator) +"eZF" = ( +/obj/machinery/requests_console{ + department = "Locker Room"; + name = "Locker Room Requests Console"; + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/crew_quarters/locker) "eZH" = ( /turf/simulated/wall/r_wall, /area/teleporter/quantum/docking) @@ -35099,6 +34913,40 @@ icon_state = "dark" }, /area/turret_protected/ai) +"frY" = ( +/obj/item/flash, +/obj/item/extraction_pack, +/obj/item/cartridge/quartermaster{ + pixel_x = -3 + }, +/obj/item/cartridge/quartermaster{ + pixel_x = -1; + pixel_y = 7 + }, +/obj/item/cartridge/quartermaster{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/megaphone, +/obj/item/fulton_core, +/obj/structure/closet/secure_closet/quartermaster, +/obj/item/clipboard, +/obj/item/stamp/qm{ + pixel_y = 7 + }, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 28 + }, +/obj/structure/cable/orange{ + icon_state = "0-8" + }, +/obj/item/mining_voucher, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/qm) "fsi" = ( /obj/structure/dispenser, /obj/machinery/firealarm{ @@ -35125,6 +34973,31 @@ icon_state = "dark" }, /area/engineering/mechanic_workshop) +"fsx" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Magazines for SP-91-RC"; + req_access = list(1) + }, +/obj/item/ammo_box/magazine/sp91rc{ + pixel_x = 8 + }, +/obj/item/ammo_box/magazine/sp91rc{ + pixel_x = 4 + }, +/obj/item/ammo_box/magazine/sp91rc, +/obj/item/ammo_box/magazine/sp91rc{ + pixel_x = -4 + }, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/armory) "fsF" = ( /obj/effect/landmark/start/janitor, /turf/simulated/floor/plasteel{ @@ -36169,13 +36042,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/hallway/spacebridge/dockmed) -"fCO" = ( -/obj/machinery/suit_storage_unit/security, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkred" - }, -/area/security/armory) "fCR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -36218,6 +36084,14 @@ icon_state = "asteroidplating" }, /area/maintenance/starboard2) +"fDo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredaltstrip" + }, +/area/security/armory) "fDp" = ( /obj/structure/transit_tube/station/dispenser{ dir = 8 @@ -36577,6 +36451,14 @@ icon_state = "darkyellow" }, /area/atmos/distribution) +"fFH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/plating, +/area/security/main) "fFM" = ( /obj/machinery/camera{ c_tag = "Brig Cell 7"; @@ -37978,17 +37860,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/cele/medbay) -"fRS" = ( -/obj/structure/table, -/obj/item/aiModule/nanotrasen, -/obj/structure/cable/orange, -/obj/machinery/power/apc{ - pixel_y = -28 - }, -/turf/simulated/floor/plasteel{ - icon_state = "bcircuit" - }, -/area/turret_protected/ai_upload) "fRU" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/external{ @@ -38092,6 +37963,20 @@ icon_state = "fancy-wood-cherry-broken2" }, /area/maintenance/starboard) +"fSB" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -26 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/port) "fSG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -38573,6 +38458,19 @@ icon_state = "neutral" }, /area/hallway/secondary/entry/north) +"fWZ" = ( +/obj/structure/sign/directions/floor/alt{ + dir = 8; + pixel_y = 32 + }, +/obj/structure/stairs{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "fXo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -38991,17 +38889,6 @@ }, /turf/simulated/floor/glass/reinforced, /area/security/checkpoint/south) -"gbk" = ( -/obj/structure/cable/orange{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "gbp" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -39433,7 +39320,7 @@ /area/hallway/primary/fore) "gfF" = ( /obj/structure/table/wood, -/obj/item/card/id/captains_spare, +/obj/item/storage/secure/briefcase/captian, /obj/machinery/atmospherics/pipe/simple/hidden/universal{ dir = 4 }, @@ -39652,6 +39539,29 @@ }, /turf/simulated/floor/plating, /area/atmos/distribution) +"ghM" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/storage/box/flashbangs, +/obj/item/storage/box/flashbangs{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/flashbang{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/flashbang{ + pixel_x = 6; + pixel_y = -6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/armory) "ghT" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line, @@ -39690,30 +39600,6 @@ }, /turf/simulated/floor/greengrid, /area/engineering/engine/monitor) -"gic" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/door/window{ - dir = 2; - name = "Secure Armory"; - req_access = list(1) - }, -/obj/structure/rack, -/obj/item/clothing/suit/armor/riot, -/obj/item/clothing/suit/armor/riot, -/obj/item/shield/riot, -/obj/item/clothing/head/helmet/riot, -/obj/item/clothing/head/helmet/riot, -/obj/item/shield/riot, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" - }, -/area/security/armory) "gie" = ( /obj/machinery/door/airlock/security/glass{ name = "Armory"; @@ -40257,6 +40143,14 @@ icon_state = "redfull" }, /area/security/lobby) +"gmR" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/vehicle/ridden/secway, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/armory) "gmZ" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -40378,6 +40272,23 @@ icon_state = "red" }, /area/hallway/secondary/entry/south) +"goo" = ( +/obj/structure/rack/gunrack, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/gun/energy/laser{ + pixel_x = -6 + }, +/obj/item/gun/energy/laser, +/obj/item/gun/energy/laser{ + pixel_x = 6 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/armory) "goq" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -40498,6 +40409,17 @@ icon_state = "navybluealt" }, /area/teleporter/quantum/docking) +"gpO" = ( +/obj/structure/closet/l3closet/janitor, +/obj/item/reagent_containers/spray/cleaner/janitor, +/obj/machinery/requests_console{ + department = "Janitorial"; + departmentType = 1; + name = "Janitor Requests Console"; + pixel_x = -30 + }, +/turf/simulated/floor/plasteel, +/area/janitor) "gpR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -43421,6 +43343,7 @@ }, /area/hallway/primary/port) "gQX" = ( +/obj/machinery/station_map/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "navybluealt" @@ -43484,8 +43407,16 @@ icon_state = "navyblue" }, /area/turret_protected/aisat_interior) +"gRJ" = ( +/obj/machinery/suit_storage_unit/security, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/armory) "gRS" = ( -/obj/item/twohanded/required/kirbyplants, +/obj/machinery/station_map/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whitepurple" @@ -44057,6 +43988,17 @@ /obj/structure/cable, /turf/simulated/floor/plating/airless, /area/solar/starboardaux) +"gYW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredaltstrip" + }, +/area/security/armory) "gZj" = ( /obj/structure/rack, /obj/item/plant_analyzer, @@ -44297,30 +44239,6 @@ /obj/effect/spawner/lootdrop/maintenance/double, /turf/simulated/floor/plating/asteroid, /area/maintenance/asmaint5) -"hbq" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/universal{ - dir = 4 - }, -/obj/structure/table/reinforced{ - layer = 2.5 - }, -/obj/machinery/door_control{ - desc = "A remote control-switch to lock down the prison wing's blast doors"; - id = "Prison Gate"; - name = "Prison Wing Lockdown"; - pixel_x = -7; - req_access = list(2) - }, -/obj/machinery/door_control{ - id = "Secure Gate"; - name = "Security Lockdown"; - pixel_x = 7; - req_access = list(2) - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" - }, -/area/security/warden) "hbt" = ( /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" @@ -45009,6 +44927,12 @@ icon_state = "neutral" }, /area/hallway/secondary/exit) +"hiL" = ( +/obj/structure/table, +/obj/item/aicard, +/obj/item/ai_module/reset, +/turf/simulated/floor/plating, +/area/storage/tech) "hiU" = ( /obj/structure/reagent_dispensers/water_cooler, /turf/simulated/floor/plasteel{ @@ -45397,6 +45321,7 @@ }, /area/toxins/hallway) "hlG" = ( +/obj/machinery/station_map/directional/east, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "neutral" @@ -45677,6 +45602,12 @@ "hom" = ( /turf/simulated/wall/r_wall, /area/ntrep) +"hon" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/wood/fancy/light{ + color = "gray" + }, +/area/crew_quarters/bar/atrium) "hoq" = ( /turf/simulated/floor/plasteel{ dir = 5; @@ -45997,6 +45928,21 @@ }, /turf/simulated/floor/carpet/royalblack, /area/ntrep) +"hrJ" = ( +/obj/structure/cable/orange{ + icon_state = "1-2" + }, +/obj/machinery/requests_console{ + department = "Engineering"; + departmentType = 3; + name = "Engineering Requests Console"; + pixel_x = -30 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkyellow" + }, +/area/engineering/engine/smes) "hrL" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -46523,31 +46469,6 @@ icon_state = "neutral" }, /area/security/lobby) -"hxu" = ( -/obj/structure/rack, -/obj/item/grenade/barrier{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/grenade/barrier, -/obj/item/grenade/barrier{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/grenade/barrier{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" - }, -/area/security/armory) "hxE" = ( /obj/machinery/light{ dir = 1 @@ -46725,6 +46646,32 @@ icon_state = "dark" }, /area/security/main) +"hyB" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/storage/box/teargas, +/obj/item/storage/box/teargas{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/chem_grenade/teargas{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/chem_grenade/teargas{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/armory) "hyF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -47202,43 +47149,6 @@ icon_state = "darkredfull" }, /area/security/execution) -"hDF" = ( -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/ammo_box/shotgun/buck{ - pixel_x = 3 - }, -/obj/item/ammo_box/shotgun/buck{ - pixel_y = 3 - }, -/obj/item/ammo_box/shotgun{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Lethal Bullets" - }, -/obj/item/ammo_box/shotgun{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/item/ammo_box/shotgun{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/item/ammo_box/shotgun/buck{ - pixel_y = 3 - }, -/obj/item/ammo_box/shotgun/buck{ - pixel_y = 3 - }, -/obj/machinery/ai_status_display{ - pixel_y = -32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" - }, -/area/security/armory) "hDG" = ( /obj/structure/holosign/barrier/atmos, /turf/simulated/floor/plating, @@ -47400,6 +47310,29 @@ }, /turf/space/openspace, /area/mine/unexplored/cere/orbiting) +"hFC" = ( +/obj/item/gun/projectile/shotgun/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/projectile/shotgun/riot, +/obj/item/gun/projectile/shotgun/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Riot shotguns" + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/armory) "hFJ" = ( /obj/structure/table/wood, /obj/item/storage/bag/books, @@ -48295,6 +48228,21 @@ }, /turf/simulated/floor/plating/airless, /area/solar/auxstarboard) +"hPF" = ( +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + name = "Security Requests Console"; + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "red" + }, +/area/security/checkpoint/south) "hPG" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, @@ -48349,12 +48297,6 @@ icon_state = "darkred" }, /area/security/permabrig) -"hPZ" = ( -/obj/machinery/dye_generator, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "hQg" = ( /turf/simulated/floor/carpet/black, /area/chapel/office) @@ -48675,6 +48617,15 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/hallway/spacebridge/engmed) +"hTb" = ( +/obj/structure/table/glass, +/obj/item/soap/nanotrasen, +/obj/item/reagent_containers/spray/cleaner, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/cmostore) "hTc" = ( /obj/structure/chair/office/light{ dir = 8 @@ -49139,6 +49090,7 @@ /turf/simulated/floor/plating, /area/hallway/spacebridge/cargocom) "hXS" = ( +/obj/machinery/station_map/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutral" @@ -49237,6 +49189,11 @@ icon_state = "neutral" }, /area/storage/primary) +"hZT" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "iad" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/trinary/filter{ @@ -49905,6 +49862,32 @@ icon_state = "neutral" }, /area/crew_quarters/fitness) +"iiG" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/rack/gunrack, +/obj/item/gun/projectile/automatic/sp91rc{ + pixel_x = 7 + }, +/obj/item/gun/projectile/automatic/sp91rc{ + pixel_x = 2 + }, +/obj/item/gun/projectile/automatic/sp91rc{ + pixel_x = -2 + }, +/obj/item/gun/projectile/automatic/sp91rc{ + pixel_x = -7 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/armory) "iiN" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 @@ -50468,17 +50451,6 @@ icon_state = "dark" }, /area/medical/research) -"ini" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "garbage" - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "ink" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -51558,42 +51530,6 @@ icon_state = "darkblue" }, /area/medical/morgue) -"iwn" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/aiModule/crewsimov, -/obj/item/aiModule/freeformcore, -/obj/item/aiModule/corp, -/obj/item/aiModule/paladin, -/obj/item/aiModule/robocop, -/obj/structure/table/glass, -/obj/machinery/door/window{ - dir = 2; - name = "Core Modules"; - req_access = list(20) - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/ai_status_display{ - pixel_y = 32 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "bcircuit" - }, -/area/turret_protected/ai_upload) -"iwo" = ( -/obj/machinery/status_display{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "iws" = ( /obj/machinery/hologram/holopad, /obj/structure/disposalpipe/junction/reversed, @@ -51758,6 +51694,11 @@ dir = 1 }, /obj/machinery/quantumpad/cere/security_science, +/obj/machinery/firealarm{ + dir = 8; + name = "west fire alarm"; + pixel_x = -24 + }, /turf/simulated/floor/plasteel{ icon_state = "darkpurplefull" }, @@ -51892,12 +51833,6 @@ }, /turf/simulated/floor/plasteel/dark, /area/toxins/server) -"iAb" = ( -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "neutralcorner" - }, -/area/crew_quarters/locker) "iAe" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -52092,6 +52027,25 @@ /obj/item/reagent_containers/glass/beaker/waterbottle/empty, /turf/simulated/floor/wood/fancy/cherry, /area/quartermaster/office) +"iBZ" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/structure/cable/orange{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/cmostore) "iCe" = ( /obj/effect/decal/warning_stripes/blue, /obj/structure/closet/emcloset, @@ -52289,14 +52243,6 @@ }, /turf/simulated/floor/plating, /area/security/prisonlockers) -"iEd" = ( -/obj/structure/sign/beautyplaque{ - pixel_y = 32; - name = "Благодарственное Письмо Для Бригадира Команды Архитекторов Селестии"; - desc = "Важное Уточнение! Рабочие пожелали оставаться анонимными, поэтому, обойдёмся их прозвищами. За выдающиеся успехи в области инженерного менеджмента, а также успешное проектирование Селестии по всем стандартам НаноТрейзен. Благодарим вас за труд, Saad_f603. Слава НаноТрейзен!" - }, -/turf/simulated/floor/carpet/black, -/area/bridge) "iEf" = ( /obj/machinery/bodyscanner, /turf/simulated/floor/plasteel{ @@ -52560,6 +52506,7 @@ dir = 6 }, /obj/machinery/quantumpad/cere/servise_comand2, +/obj/machinery/station_map/directional/north, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "darkbluefull" @@ -53220,19 +53167,6 @@ }, /turf/simulated/floor/carpet/royalblack, /area/crew_quarters/bar) -"iNt" = ( -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Science Requests Console"; - pixel_x = -30 - }, -/obj/machinery/photocopier, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "whitepurple" - }, -/area/toxins/lab) "iNx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal{ dir = 4 @@ -53667,11 +53601,6 @@ icon_state = "darkpurple" }, /area/teleporter/research) -"iRq" = ( -/turf/simulated/floor/plasteel{ - icon_state = "darkredaltstrip" - }, -/area/security/armory) "iRs" = ( /obj/structure/table, /obj/item/book/manual/security_space_law, @@ -55181,20 +55110,6 @@ icon_state = "navyblue" }, /area/turret_protected/aisat_interior/secondary) -"jfp" = ( -/obj/machinery/disposal/deliveryChute{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk, -/obj/machinery/conveyor{ - dir = 1; - id = "CargoTransfer" - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "jfE" = ( /obj/structure/bed, /obj/item/bedsheet, @@ -55585,18 +55500,6 @@ icon_state = "neutralcorner" }, /area/crew_quarters/serviceyard) -"jjf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkredaltstrip" - }, -/area/security/armory) "jjg" = ( /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/maintenance/tripple, @@ -55931,16 +55834,6 @@ icon_state = "darkyellow" }, /area/engineering/mechanic_workshop/hangar) -"jnc" = ( -/obj/machinery/alarm{ - dir = 4; - pixel_x = -26 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkred" - }, -/area/security/armory) "jng" = ( /obj/machinery/door/poddoor/shutters/preopen{ dir = 2; @@ -58828,12 +58721,6 @@ icon_state = "darkyellowfull" }, /area/engineering/engine) -"jRu" = ( -/obj/effect/decal/warning_stripes/blue, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/surgery/south) "jRH" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -59212,6 +59099,15 @@ }, /turf/simulated/openspace, /area/atmos) +"jVJ" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredalt" + }, +/area/security/armory) "jVK" = ( /obj/machinery/atmospherics/pipe/manifold/visible/cyan, /obj/effect/turf_decal/stripes/line{ @@ -59221,20 +59117,6 @@ icon_state = "dark" }, /area/engineering/engine) -"jVQ" = ( -/obj/structure/table/glass, -/obj/item/soap/nanotrasen, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/hud/health, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whiteblue" - }, -/area/medical/cmostore) "jWi" = ( /obj/machinery/bluespace_beacon, /obj/effect/turf_decal/caution/stand_clear, @@ -59270,6 +59152,19 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/aisat/atmospherics) +"jWE" = ( +/obj/machinery/requests_console{ + department = "Research"; + departmentType = 2; + name = "Research Requests Console"; + pixel_x = -30 + }, +/obj/machinery/photocopier, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whitepurple" + }, +/area/toxins/lab) "jWF" = ( /obj/structure/railing/corner{ dir = 4 @@ -59278,6 +59173,23 @@ icon_state = "dark" }, /area/medical/morgue) +"jWI" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/rack, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/armory) "jWK" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/southleft{ @@ -59310,6 +59222,24 @@ icon_state = "whiteyellowfull" }, /area/medical/chemistry) +"jWV" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/structure/sign/directions/floor/alt{ + dir = 6; + pixel_y = 32 + }, +/obj/structure/disposaloutlet{ + dir = 8; + eject_range = 2 + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "jWW" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -59396,17 +59326,6 @@ icon_state = "caution" }, /area/atmos/distribution) -"jXF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkredfull" - }, -/area/security/armory) "jXK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -59591,6 +59510,13 @@ icon_state = "darkblue" }, /area/medical/surgery/north) +"kag" = ( +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkbrown" + }, +/area/quartermaster/storage) "kal" = ( /obj/structure/railing{ dir = 8 @@ -59994,6 +59920,12 @@ /obj/effect/decal/cleanable/cobweb2, /turf/simulated/floor/plasteel, /area/maintenance/turbine) +"ket" = ( +/obj/machinery/hologram/holopad, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "keB" = ( /obj/structure/window/reinforced/polarized{ id = "robo" @@ -60069,29 +60001,6 @@ icon_state = "neutral" }, /area/medical/research) -"kfn" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/ammo_box/shotgun/beanbag, -/obj/item/ammo_box/shotgun/beanbag{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/ammo_box/shotgun/tranquilizer{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/light, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" - }, -/area/security/armory) "kfo" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ desc = "Труба хранит в себе набор газов для смешивания"; @@ -60537,15 +60446,6 @@ icon_state = "dark" }, /area/toxins/lab) -"kiQ" = ( -/obj/machinery/turretid/stun{ - name = "AI Satellite Turret Control"; - req_access = list(75); - pixel_x = 0; - pixel_y = 28 - }, -/turf/simulated/floor/plating, -/area/turret_protected/aisat) "kiY" = ( /turf/simulated/floor/plasteel{ dir = 9; @@ -60816,6 +60716,26 @@ }, /turf/simulated/floor/grass, /area/hallway/primary/starboard/south) +"klu" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/clothing/suit/armor/laserproof, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/gun/energy/ionrifle, +/obj/structure/sign/poster/official/ion_rifle{ + pixel_y = -32 + }, +/obj/machinery/door/window{ + dir = 1; + name = "Secure Armory"; + req_access = list(1) + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/armory) "klz" = ( /obj/structure/cable/orange{ icon_state = "1-4" @@ -61318,20 +61238,6 @@ /obj/effect/spawner/random_spawners/rock_50, /turf/simulated/floor/plating, /area/maintenance/apmaint2) -"kqo" = ( -/obj/structure/sign/directions/floor/alt{ - dir = 8; - pixel_y = 32 - }, -/obj/structure/stairs{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkred" - }, -/area/security/armory) "kqy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -61566,6 +61472,11 @@ /area/crew_quarters/theatre) "ktd" = ( /obj/machinery/light, +/obj/machinery/firealarm{ + dir = 1; + name = "south fire alarm"; + pixel_y = -24 + }, /turf/simulated/floor/plasteel{ icon_state = "navybluealt" }, @@ -62068,6 +61979,23 @@ icon_state = "darkred" }, /area/security/podbay) +"kxt" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light_switch{ + pixel_x = 26 + }, +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science Requests Console"; + pixel_y = 30 + }, +/turf/simulated/floor/plasteel, +/area/toxins/launch) "kxC" = ( /obj/structure/chair/comfy{ dir = 8 @@ -62504,6 +62432,22 @@ icon_state = "grimy" }, /area/security/detectives_office) +"kCl" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/effect/landmark/start/atmospheric, +/obj/machinery/requests_console{ + department = "Atmospherics"; + departmentType = 3; + name = "Atmospherics Requests Console"; + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos/control) "kCm" = ( /obj/structure/railing{ dir = 4 @@ -62526,6 +62470,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 1 }, +/obj/machinery/station_map/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutral" @@ -62687,6 +62632,9 @@ /area/turret_protected/ai) "kDz" = ( /obj/item/twohanded/required/kirbyplants, +/obj/item/radio/intercom{ + pixel_x = 28 + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "whiteyellow" @@ -62887,16 +62835,6 @@ icon_state = "neutralfull" }, /area/atmos/distribution) -"kEQ" = ( -/obj/machinery/light_switch{ - pixel_y = 26 - }, -/obj/structure/table/reinforced, -/obj/item/reagent_containers/food/snacks/mint, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/crew_quarters/kitchen) "kEV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -62908,29 +62846,6 @@ /obj/effect/landmark/event/lightsout, /turf/simulated/floor/wood/fancy/oak, /area/hallway/primary/port) -"kFc" = ( -/obj/item/gun/energy/laser{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/energy/laser, -/obj/item/gun/energy/laser{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/rack/gunrack, -/obj/item/gun/energy/laser, -/obj/machinery/status_display{ - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkred" - }, -/area/security/armory) "kFk" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, @@ -63043,6 +62958,16 @@ icon_state = "darkred" }, /area/security/warden) +"kGA" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/conveyor/inverted{ + dir = 5; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "kGH" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -63201,28 +63126,6 @@ icon_state = "grimy" }, /area/security/detectives_office) -"kIG" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/item/storage/belt/medical, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/regular, -/obj/structure/cable/orange{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whiteblue" - }, -/area/medical/cmostore) "kII" = ( /obj/machinery/door/window/northleft{ req_access = list(55) @@ -63737,14 +63640,6 @@ icon_state = "dark" }, /area/engineering/engine) -"kOI" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/universal{ - dir = 4 - }, -/obj/structure/table, -/obj/item/flashlight, -/turf/simulated/floor/plasteel, -/area/storage/primary) "kOL" = ( /obj/structure/grille/broken, /obj/item/stack/rods, @@ -64789,24 +64684,6 @@ icon_state = "whiteblue" }, /area/medical/medbay2) -"kYX" = ( -/obj/structure/rack, -/obj/structure/window/reinforced, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/head/helmet/alt, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/head/helmet/alt, -/obj/machinery/door/window{ - dir = 1; - name = "Secure Armory"; - req_access = list(1) - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" - }, -/area/security/armory) "kZb" = ( /obj/structure/table/glass, /obj/item/defibrillator/loaded, @@ -65071,6 +64948,14 @@ icon_state = "red" }, /area/security/lobby) +"lbn" = ( +/obj/structure/table, +/obj/item/reagent_containers/spray/cleaner/medical, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/surgery/south) "lbv" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow, /turf/simulated/floor/plasteel{ @@ -65470,26 +65355,6 @@ icon_state = "purple" }, /area/medical/research) -"lgi" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/item/storage/belt/medical, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/regular, -/obj/item/reagent_containers/food/drinks/mug/med, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whiteblue" - }, -/area/medical/cmostore) "lgp" = ( /obj/machinery/keycard_auth{ pixel_x = -26; @@ -65518,17 +65383,6 @@ }, /turf/simulated/floor/carpet/blue, /area/blueshield) -"lgC" = ( -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/machinery/light_switch{ - pixel_x = 26 - }, -/turf/simulated/floor/plasteel, -/area/toxins/launch) "lgJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -66471,7 +66325,13 @@ icon_state = "whiteyellow" }, /area/assembly/chargebay) +"lrb" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkredfull" + }, +/area/security/armory) "lrl" = ( +/obj/machinery/station_map/engineering/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "caution" @@ -68043,21 +67903,6 @@ /obj/item/reagent_containers/food/snacks/cheesiehonkers, /turf/simulated/floor/grass, /area/hallway/secondary/garden) -"lHu" = ( -/obj/machinery/power/apc{ - dir = 1; - pixel_y = 28 - }, -/obj/structure/cable/orange{ - icon_state = "0-2" - }, -/obj/machinery/camera/autoname, -/obj/structure/dispenser/oxygen, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" - }, -/area/security/armory) "lHw" = ( /obj/machinery/light/small{ dir = 1 @@ -69500,14 +69345,6 @@ icon_state = "dark" }, /area/turret_protected/aisat) -"lXa" = ( -/obj/machinery/flasher/portable, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkred" - }, -/area/security/armory) "lXd" = ( /turf/simulated/wall/r_wall, /area/toxins/server_coldroom) @@ -69701,21 +69538,6 @@ /obj/structure/flora/ausbushes/ywflowers, /turf/simulated/floor/grass, /area/hallway/primary/fore) -"lYL" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/applicator/burn, -/obj/item/reagent_containers/glass/bottle/charcoal, -/obj/machinery/requests_console{ - department = "Medbay"; - departmentType = 1; - name = "Genetics Requests Console"; - pixel_y = 30 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whitepurple" - }, -/area/medical/genetics) "lYT" = ( /obj/structure/table, /obj/item/reagent_containers/food/snacks/fried_vox, @@ -70585,27 +70407,6 @@ icon_state = "dark" }, /area/chapel/office) -"mhb" = ( -/obj/structure/rack, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/head/helmet/alt, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/head/helmet/alt, -/obj/machinery/door/window{ - dir = 1; - name = "Secure Armory"; - req_access = list(1) - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" - }, -/area/security/armory) "mhc" = ( /obj/structure/girder, /turf/simulated/floor/plating{ @@ -70669,6 +70470,20 @@ /obj/structure/closet/secure_closet/hop, /turf/simulated/floor/carpet/blue, /area/crew_quarters/heads/hop) +"mhX" = ( +/obj/structure/rack, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/clothing/gloves/combat/riot, +/obj/item/clothing/gloves/combat/riot, +/obj/item/clothing/gloves/combat/riot, +/obj/item/clothing/gloves/combat/riot, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/armory) "mic" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, @@ -70692,18 +70507,6 @@ icon_state = "dark" }, /area/engineering/engine/smes) -"miy" = ( -/obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen, -/obj/machinery/atmospherics/pipe/multiz{ - dir = 4 - }, -/turf/simulated/floor/carpet/black, -/area/chapel/office) "miQ" = ( /obj/machinery/camera/motion{ c_tag = "Minisat Teleporter Room"; @@ -71065,9 +70868,7 @@ }, /area/security/permabrig) "mlS" = ( -/obj/machinery/firealarm{ - pixel_y = 26 - }, +/obj/machinery/station_map/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "navybluealt" @@ -71253,15 +71054,6 @@ }, /turf/simulated/floor/carpet/royalblack, /area/crew_quarters/captain/bedroom) -"mor" = ( -/obj/structure/cable/orange{ - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkyellow" - }, -/area/engineering/engine/smes) "moz" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -72435,6 +72227,20 @@ icon_state = "chapel" }, /area/chapel/main) +"mBc" = ( +/obj/structure/rack, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/clothing/shoes/combat/riot, +/obj/item/clothing/shoes/combat/riot, +/obj/item/clothing/shoes/combat/riot, +/obj/item/clothing/shoes/combat/riot, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/armory) "mBg" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -72519,10 +72325,8 @@ }, /area/security/permahallway) "mBM" = ( -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, /obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/station_map/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "red" @@ -72743,6 +72547,7 @@ dir = 4; network = list("SS13","CE") }, +/obj/machinery/station_map/engineering/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkyellow" @@ -73314,6 +73119,14 @@ icon_state = "darkyellow" }, /area/engineering/mechanic_workshop/hangar) +"mHN" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/flasher/portable, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/armory) "mHP" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating{ @@ -73349,6 +73162,31 @@ icon_state = "whitebluefull" }, /area/maintenance/cele/cargo) +"mIL" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/ai_module/oxygen, +/obj/item/ai_module/one_crew_member, +/obj/item/ai_module/purge, +/obj/item/ai_module/antimov, +/obj/structure/table/glass, +/obj/machinery/door/window{ + dir = 1; + name = "High-Risk Modules"; + req_access = list(20) + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "bcircuit" + }, +/area/turret_protected/ai_upload) "mIN" = ( /obj/item/bedsheet/yellow, /obj/structure/bed, @@ -73994,6 +73832,13 @@ icon_state = "neutralfull" }, /area/hallway/primary/fore) +"mOy" = ( +/obj/machinery/dye_generator, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/maintenance/port) "mOz" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/unary/cold_sink/freezer{ @@ -75309,6 +75154,13 @@ icon_state = "neutralfull" }, /area/hallway/secondary/entry/south) +"nel" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/hallway/secondary/entry/south) "neA" = ( /obj/machinery/door/window/northleft{ req_access = list(55) @@ -75579,6 +75431,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, +/obj/machinery/station_map/directional/north, /turf/simulated/floor/wood/fancy/light, /area/library/game_zone) "ngP" = ( @@ -76265,6 +76118,18 @@ icon_state = "dark" }, /area/quartermaster/storage) +"nmU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/power/apc{ + pixel_y = -28 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/maintenance/port) "nmY" = ( /obj/structure/sink{ dir = 1 @@ -76621,6 +76486,12 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/hallway/spacebridge/scidock) +"nrb" = ( +/obj/structure/closet/secure_closet/medical4, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/medical/surgery/south) "nrj" = ( /obj/structure/table/glass, /obj/item/radio/intercom{ @@ -76743,9 +76614,6 @@ /turf/simulated/floor/plating, /area/aisat/atmospherics) "nsl" = ( -/obj/machinery/firealarm{ - pixel_y = 26 - }, /obj/machinery/light{ dir = 1 }, @@ -76879,25 +76747,6 @@ /obj/structure/cable/orange, /turf/simulated/floor/plating, /area/engineering/engine) -"ntJ" = ( -/obj/machinery/camera/autoname, -/obj/machinery/light{ - dir = 1 - }, -/obj/item/radio/intercom{ - pixel_y = 28 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" - }, -/area/security/armory) "ntL" = ( /obj/machinery/light{ dir = 8 @@ -77343,6 +77192,17 @@ }, /turf/simulated/floor/carpet/purple, /area/crew_quarters/bar/atrium) +"nxd" = ( +/obj/effect/decal/warning_stripes/red, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/structure/closet/l3closet/security, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/armory) "nxg" = ( /turf/simulated/floor/plasteel, /area/crew_quarters/locker) @@ -77537,6 +77397,13 @@ icon_state = "red" }, /area/security/seceqstorage) +"nzh" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/armory) "nzk" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -78263,6 +78130,16 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/port) +"nIi" = ( +/obj/structure/rack, +/obj/item/clothing/gloves/color/black/ballistic, +/obj/item/clothing/gloves/color/black/ballistic, +/obj/item/clothing/gloves/color/black/ballistic, +/obj/item/clothing/gloves/color/black/ballistic, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/armory) "nIo" = ( /obj/structure/railing{ dir = 4 @@ -78621,6 +78498,17 @@ icon_state = "whitepurple" }, /area/toxins/xenobiology) +"nLr" = ( +/obj/structure/rack, +/obj/item/clothing/shoes/jackboots/armored, +/obj/item/clothing/shoes/jackboots/armored, +/obj/item/clothing/shoes/jackboots/armored, +/obj/item/clothing/shoes/jackboots/armored, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/armory) "nLs" = ( /obj/structure/cable/multiz{ color = "#dd1010" @@ -78812,11 +78700,27 @@ icon_state = "bar" }, /area/clownoffice) +"nNo" = ( +/obj/structure/closet/secure_closet/medical4, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/medical/surgery/north) "nNq" = ( /obj/machinery/floodlight, /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/grass, /area/hydroponics) +"nNr" = ( +/obj/structure/rack, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/armory) "nNB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -78924,6 +78828,28 @@ icon_state = "neutralfull" }, /area/shuttle/arrival/station) +"nOA" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/camera/autoname{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/turretid/stun{ + control_area = "AI Satellite Antechamber"; + name = "AI Satellite Antechamber Turret Control"; + pixel_x = -28; + pixel_y = 0; + req_access = list(75) + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "navyblue" + }, +/area/turret_protected/aisat) "nOF" = ( /obj/structure/table/wood, /obj/item/storage/toolbox/mechanical, @@ -78993,13 +78919,6 @@ icon_state = "whitepurple" }, /area/medical/genetics) -"nPL" = ( -/obj/machinery/suit_storage_unit/security, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkred" - }, -/area/security/armory) "nPQ" = ( /obj/structure/railing/wooden{ dir = 8 @@ -80749,12 +80668,6 @@ icon_state = "whitegreen" }, /area/medical/medbay2) -"oiP" = ( -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" - }, -/area/security/armory) "ojf" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -81995,6 +81908,22 @@ }, /turf/simulated/floor/carpet/red, /area/chapel/main) +"oxt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 + }, +/obj/structure/table, +/obj/item/vending_refill/custom{ + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/vending_refill/custom{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/flashlight, +/turf/simulated/floor/plasteel, +/area/storage/primary) "oxI" = ( /obj/structure/window/reinforced, /obj/machinery/disposal, @@ -82495,6 +82424,16 @@ /obj/item/stack/sheet/glass/fifty, /turf/simulated/floor/plating, /area/maintenance/atmospherics) +"oBQ" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/maintenance/port) "oBY" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -82668,18 +82607,17 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/wood/fancy/light, /area/lawoffice) +"oDG" = ( +/obj/machinery/station_map/directional/south, +/turf/simulated/floor/plasteel{ + icon_state = "blue" + }, +/area/hallway/primary/fore) "oDK" = ( /obj/structure/lattice, /obj/structure/transit_tube/crossing, /turf/space/openspace, /area/space) -"oDP" = ( -/obj/structure/closet/secure_closet/security, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkred" - }, -/area/security/checkpoint) "oDQ" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -83772,10 +83710,6 @@ icon_state = "darkyellow" }, /area/engineering/engine/smes) -"oNQ" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/civilian/barber) "oOd" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -84568,6 +84502,23 @@ /obj/effect/spawner/lootdrop/maintenance/double, /turf/simulated/floor/plating/asteroid, /area/maintenance/asmaint2) +"oVH" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/reagent_containers/food/drinks/mug/med, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/cmostore) "oVI" = ( /obj/effect/spawner/window/reinforced/polarized{ id = "IAA" @@ -85537,6 +85488,35 @@ icon_state = "dark" }, /area/assembly/robotics) +"pci" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/ammo_box/shotgun/buck{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/shotgun/buck, +/obj/item/ammo_box/shotgun{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Lethal Bullets" + }, +/obj/item/ammo_box/shotgun/beanbag, +/obj/item/ammo_box/shotgun/beanbag{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/shotgun/tranquilizer{ + pixel_x = -6; + pixel_y = 6 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/armory) "pck" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -86288,21 +86268,6 @@ icon_state = "whiteblue" }, /area/medical/cloning) -"pkA" = ( -/obj/structure/rack, -/obj/item/ammo_box/shotgun/tranquilizer{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/ammo_box/shotgun/beanbag, -/obj/item/ammo_box/shotgun/beanbag{ - pixel_x = -3; - pixel_y = 3 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" - }, -/area/security/armory) "pkP" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -86809,6 +86774,12 @@ icon_state = "whitepurple" }, /area/medical/genetics) +"ppi" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel{ + icon_state = "darkredfull" + }, +/area/security/armory) "ppn" = ( /obj/item/stack/packageWrap, /obj/item/pen/blue{ @@ -87262,31 +87233,6 @@ icon_state = "neutralfull" }, /area/security/lobby) -"psw" = ( -/obj/item/gun/projectile/shotgun/riot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/projectile/shotgun/riot, -/obj/item/gun/projectile/shotgun/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/structure/rack/gunrack, -/obj/item/gun/projectile/shotgun/riot, -/obj/structure/window/reinforced, -/obj/machinery/status_display{ - pixel_x = -32 - }, -/obj/machinery/door/window{ - name = "Secure Armory"; - req_access = list(1) - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkred" - }, -/area/security/armory) "psx" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, @@ -87486,6 +87432,17 @@ }, /turf/simulated/floor/plasteel, /area/quartermaster/qm) +"pus" = ( +/obj/effect/decal/warning_stripes/red, +/obj/machinery/newscaster/security_unit{ + pixel_x = 32 + }, +/obj/structure/closet/bombclosetsecurity, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/armory) "puy" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/chair/office/light{ @@ -88003,39 +87960,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/wood, /area/crew_quarters/cabin4) -"pzy" = ( -/obj/item/flash, -/obj/item/extraction_pack, -/obj/item/cartridge/quartermaster{ - pixel_x = -3 - }, -/obj/item/cartridge/quartermaster{ - pixel_x = -1; - pixel_y = 7 - }, -/obj/item/cartridge/quartermaster{ - pixel_x = 5; - pixel_y = 3 - }, -/obj/item/megaphone, -/obj/item/fulton_core, -/obj/structure/closet/secure_closet/quartermaster, -/obj/item/clipboard, -/obj/item/stamp/qm{ - pixel_y = 7 - }, -/obj/machinery/power/apc{ - dir = 4; - pixel_x = 28 - }, -/obj/structure/cable/orange{ - icon_state = "0-8" - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "brown" - }, -/area/quartermaster/qm) "pzA" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -88054,6 +87978,14 @@ icon_state = "caution" }, /area/atmos/control) +"pzU" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "pAf" = ( /obj/structure/table, /obj/item/clothing/under/color/orange/prison, @@ -89609,6 +89541,19 @@ }, /turf/simulated/floor/plasteel, /area/security/prisonershuttle) +"pPm" = ( +/obj/structure/closet/secure_closet/security, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + name = "Security Requests Console"; + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/checkpoint) "pPn" = ( /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/maintenance, @@ -89667,24 +89612,6 @@ icon_state = "neutral" }, /area/toxins/misc_lab) -"pQf" = ( -/obj/item/gun/energy/gun{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/energy/gun, -/obj/item/gun/energy/gun{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/structure/rack/gunrack, -/obj/item/gun/energy/gun, -/obj/structure/window/reinforced, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkred" - }, -/area/security/armory) "pQi" = ( /obj/structure/railing, /obj/machinery/door/firedoor/border_only, @@ -90669,9 +90596,33 @@ icon_state = "navyblue" }, /area/turret_protected/ai) +"qaX" = ( +/obj/machinery/turretid/stun{ + name = "AI Satellite Turret Control"; + pixel_x = 0; + pixel_y = -26; + req_access = list(75) + }, +/turf/simulated/floor/plating, +/area/turret_protected/aisat) "qbb" = ( /turf/simulated/floor/carpet/royalblack, /area/crew_quarters/captain/bedroom) +"qbd" = ( +/obj/structure/chair/barber{ + dir = 8 + }, +/obj/structure/cable/orange{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/port) "qbf" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -91220,6 +91171,31 @@ }, /turf/simulated/floor/plasteel, /area/engineering/mechanic_workshop/expedition) +"qgF" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/storage/lockbox/mindshield, +/obj/item/storage/box/trackimp, +/obj/item/storage/box/chemimp{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/lock_buster, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/window{ + dir = 1; + name = "Secure Armory"; + req_access = list(1) + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/armory) "qgH" = ( /turf/simulated/wall, /area/atmos) @@ -91847,6 +91823,13 @@ icon_state = "whiteblue" }, /area/medical/cmostore) +"qmX" = ( +/obj/structure/table/reinforced, +/obj/structure/mirror{ + pixel_x = -26 + }, +/turf/simulated/floor/plating, +/area/maintenance/port) "qmZ" = ( /obj/structure/table/wood, /obj/item/storage/fancy/donut_box, @@ -92247,17 +92230,6 @@ icon_state = "whitegreen" }, /area/medical/virology/lab) -"qqW" = ( -/obj/structure/cable/orange{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "qqZ" = ( /obj/effect/spawner/lootdrop/maintenance/double, /turf/simulated/floor/mech_bay_recharge_floor, @@ -92978,12 +92950,6 @@ icon_state = "whitepurplecorner" }, /area/toxins/mixing) -"qyg" = ( -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkredalt" - }, -/area/security/armory) "qyj" = ( /obj/structure/stairs{ dir = 4 @@ -93016,32 +92982,6 @@ icon_state = "bar" }, /area/clownoffice) -"qyI" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/door/window{ - name = "Secure Armory"; - req_access = list(1) - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/storage/lockbox/mindshield, -/obj/item/storage/box/trackimp, -/obj/item/storage/box/chemimp{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/item/lock_buster, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkred" - }, -/area/security/armory) "qyW" = ( /obj/structure/railing{ dir = 4 @@ -94714,6 +94654,16 @@ /obj/effect/spawner/airlock/e_to_w, /turf/simulated/wall, /area/maintenance/asmaint2) +"qRm" = ( +/obj/structure/table, +/obj/item/ai_module/reset, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bcircuit" + }, +/area/turret_protected/ai_upload) "qRn" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -95049,6 +94999,21 @@ icon_state = "neutral" }, /area/hallway/primary/central/north) +"qUL" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/rack/gunrack, +/obj/item/gun/energy/gun{ + pixel_x = -6 + }, +/obj/item/gun/energy/gun, +/obj/item/gun/energy/gun{ + pixel_x = 6 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/armory) "qUQ" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable/orange{ @@ -95568,6 +95533,16 @@ icon_state = "white" }, /area/medical/genetics) +"raJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance{ + locked = 1; + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/port) "raQ" = ( /obj/machinery/hydroponics/constructable, /obj/machinery/firealarm{ @@ -95589,6 +95564,20 @@ icon_state = "dark" }, /area/chapel/office) +"raT" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/rack, +/obj/item/clothing/head/helmet/alt, +/obj/item/clothing/head/helmet/alt, +/obj/item/clothing/head/helmet/alt, +/obj/item/clothing/head/helmet/alt, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/armory) "raW" = ( /obj/machinery/porta_turret{ dir = 4; @@ -96205,6 +96194,21 @@ /obj/effect/spawner/random_spawners/rock_50, /turf/simulated/floor/plating/asteroid, /area/maintenance/port) +"rhu" = ( +/obj/machinery/requests_console{ + department = "Primary Tool Storage"; + name = "Primary Tool Storage Requests Console"; + pixel_y = 30 + }, +/obj/structure/table, +/obj/item/storage/toolbox/electrical, +/obj/item/multitool, +/obj/item/stack/cable_coil, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/storage/primary) "rhy" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -96439,6 +96443,24 @@ icon_state = "darkyellow" }, /area/atmos) +"rjn" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/obj/machinery/atmospherics/pipe/multiz{ + dir = 4 + }, +/obj/machinery/requests_console{ + department = "Chapel"; + departmentType = 2; + name = "Chapel Requests Console"; + pixel_x = -30 + }, +/turf/simulated/floor/carpet/black, +/area/chapel/office) "rjo" = ( /turf/simulated/wall/r_wall, /area/maintenance/ai) @@ -96510,15 +96532,6 @@ "rkg" = ( /turf/simulated/mineral/ancient/outer, /area/hallway/spacebridge/dockmed) -"rki" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/item/storage/belt/medical, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/regular, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue" - }, -/area/medical/cmostore) "rkl" = ( /obj/structure/cable/orange{ icon_state = "1-4" @@ -96805,27 +96818,6 @@ icon_state = "darkbrown" }, /area/maintenance/disposal) -"rnQ" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced, -/obj/machinery/door/window{ - dir = 1; - name = "Secure Armory"; - req_access = list(1) - }, -/obj/structure/rack, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/head/helmet/alt, -/obj/item/clothing/head/helmet/alt, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" - }, -/area/security/armory) "rnX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -97032,6 +97024,29 @@ }, /turf/simulated/floor/plating, /area/maintenance/starboard) +"rps" = ( +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Security SMG's" + }, +/obj/item/gun/projectile/automatic/wt550{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/projectile/automatic/wt550, +/obj/item/gun/projectile/automatic/wt550{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/armory) "rpC" = ( /obj/machinery/light/small{ dir = 4 @@ -97917,6 +97932,18 @@ }, /turf/simulated/floor/carpet/black, /area/bridge) +"rxT" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/flasher/portable, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/armory) "rxU" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable/orange{ @@ -98508,19 +98535,6 @@ icon_state = "darkbrown" }, /area/quartermaster/office) -"rCR" = ( -/obj/structure/table, -/obj/item/storage/box/gloves{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/masks, -/obj/item/reagent_containers/spray/cleaner/medical, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whiteblue" - }, -/area/medical/surgery/south) "rCS" = ( /obj/machinery/door/airlock{ name = "Vacant Office"; @@ -98964,13 +98978,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/carpet/royalblack, /area/crew_quarters/captain/bedroom) -"rIl" = ( -/obj/item/razor, -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "rIo" = ( /obj/structure/girder, /turf/simulated/floor/plating, @@ -99298,6 +99305,12 @@ /obj/structure/transit_tube/horizontal, /turf/space/openspace, /area/space) +"rMK" = ( +/obj/structure/closet/secure_closet/medical3, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/cmostore) "rMQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -99508,6 +99521,13 @@ /obj/structure/lattice/catwalk, /turf/space/openspace, /area/space) +"rOI" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/medical/research) "rON" = ( /obj/machinery/light/small{ dir = 1 @@ -99555,6 +99575,9 @@ /area/medical/reception) "rOW" = ( /obj/item/twohanded/required/kirbyplants, +/obj/item/radio/intercom{ + pixel_y = 28 + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "navybluealt" @@ -100080,6 +100103,13 @@ icon_state = "darkyellow" }, /area/engineering/mechanic_workshop/hangar) +"rTW" = ( +/obj/effect/decal/warning_stripes/blue, +/obj/machinery/iv_drip, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery/north) "rTY" = ( /obj/machinery/alarm{ dir = 4; @@ -101178,6 +101208,14 @@ "sfk" = ( /turf/simulated/openspace, /area/storage/secure) +"sfm" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/flasher/portable, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/armory) "sfo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, @@ -102074,41 +102112,6 @@ icon_state = "whitepurple" }, /area/toxins/xenobiology) -"sps" = ( -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Magazines for SMG" - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/ammo_box/magazine/wt550m9, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = 4; - pixel_y = -4 - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/item/ammo_box/magazine/wt550m9, -/obj/item/ammo_box/magazine/wt550m9, -/obj/item/ammo_box/magazine/wt550m9, -/obj/item/ammo_box/magazine/wt550m9, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkred" - }, -/area/security/armory) "spB" = ( /turf/simulated/wall/r_wall, /area/storage/tech) @@ -102888,16 +102891,6 @@ icon_state = "neutralfull" }, /area/storage/primary) -"sxN" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 26 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkred" - }, -/area/security/armory) "syc" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -103493,20 +103486,6 @@ }, /turf/simulated/floor/carpet/royalblack, /area/crew_quarters/bar/atrium) -"sDC" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green{ - on = 0; - pixel_x = -6; - pixel_y = 14 - }, -/obj/item/storage/fancy/cigarettes/dromedaryco, -/obj/item/clothing/glasses/sunglasses, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/carpet, -/area/security/detectives_office) "sDP" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -103538,14 +103517,12 @@ /turf/simulated/floor/plating, /area/chapel/office) "sEi" = ( -/obj/item/radio/intercom{ - pixel_x = 28 - }, +/obj/machinery/station_map/directional/west, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whiteyellow" + dir = 8; + icon_state = "neutral" }, -/area/hallway/primary/central) +/area/crew_quarters/serviceyard) "sEm" = ( /turf/simulated/mineral/ancient, /area/hallway/spacebridge/engmed) @@ -104045,13 +104022,6 @@ }, /turf/simulated/floor/plasteel, /area/security/checkpoint/south) -"sIL" = ( -/obj/structure/table/reinforced, -/obj/item/razor, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "sIT" = ( /obj/structure/window/reinforced{ dir = 4 @@ -104504,16 +104474,6 @@ icon_state = "redfull" }, /area/security/lobby) -"sMY" = ( -/obj/structure/table, -/obj/item/aiModule/corp, -/obj/item/radio/intercom{ - pixel_y = -28 - }, -/turf/simulated/floor/plasteel{ - icon_state = "bcircuit" - }, -/area/turret_protected/ai_upload) "sNe" = ( /turf/simulated/floor/plasteel{ dir = 5; @@ -105361,13 +105321,6 @@ /obj/structure/chair/stool, /turf/simulated/floor/wood/fancy/oak, /area/maintenance/gambling_den2) -"sUZ" = ( -/obj/machinery/suit_storage_unit/security, -/obj/machinery/light, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" - }, -/area/security/armory) "sVe" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -105738,21 +105691,6 @@ icon_state = "dark" }, /area/chapel/office) -"sZm" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Barber Shop" - }, -/obj/machinery/door/firedoor, -/obj/structure/cable/orange{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "sZp" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -106033,17 +105971,6 @@ icon_state = "fancy-wood-oak-broken4" }, /area/civilian/vacantoffice) -"tct" = ( -/obj/machinery/flasher/portable, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" - }, -/area/security/armory) "tcu" = ( /obj/structure/closet/secure_closet/personal/patient, /turf/simulated/floor/plasteel{ @@ -106751,6 +106678,22 @@ /obj/effect/spawner/random_spawners/grille_50, /turf/simulated/floor/plating, /area/maintenance/cele/medbay) +"tiS" = ( +/obj/machinery/light_switch{ + pixel_y = 26 + }, +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/snacks/mint, +/obj/machinery/requests_console{ + department = "Kitchen"; + departmentType = 2; + name = "Kitchen Requests Console"; + pixel_x = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/kitchen) "tiY" = ( /obj/structure/table/wood, /obj/machinery/photocopier/faxmachine/longrange{ @@ -107104,6 +107047,16 @@ icon_state = "darkred" }, /area/security/permabrig) +"tmp" = ( +/obj/structure/table, +/obj/item/ai_module/corp, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bcircuit" + }, +/area/turret_protected/ai_upload) "tmq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -107335,6 +107288,20 @@ icon_state = "floorgrime" }, /area/security/permabrig) +"top" = ( +/obj/structure/rack, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/armory) "tos" = ( /obj/structure/chair/office/light, /obj/effect/landmark/start/security_officer, @@ -108219,6 +108186,38 @@ icon_state = "darkyellow" }, /area/atmos/distribution) +"twh" = ( +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Magazines for SMG" + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/ammo_box/magazine/wt550m9, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/armory) "twj" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -108274,6 +108273,17 @@ icon_state = "whiteblue" }, /area/medical/patients_rooms) +"txd" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "txf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -110602,9 +110612,7 @@ /turf/simulated/floor/plasteel, /area/janitor) "tTh" = ( -/obj/item/radio/intercom{ - pixel_y = 28 - }, +/obj/machinery/station_map/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "navybluealt" @@ -112058,6 +112066,13 @@ icon_state = "neutral" }, /area/hallway/secondary/entry/north) +"uhp" = ( +/obj/effect/decal/warning_stripes/blue, +/obj/machinery/iv_drip, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery/south) "uhq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -113233,6 +113248,11 @@ }, /turf/simulated/floor/plating, /area/maintenance/cele/engineering) +"utC" = ( +/obj/structure/table/reinforced, +/obj/item/razor, +/turf/simulated/floor/plating, +/area/maintenance/port) "utD" = ( /obj/effect/turf_decal/stripes/corner, /obj/effect/turf_decal/stripes/red/corner, @@ -114697,12 +114717,6 @@ icon_state = "whiteblue" }, /area/medical/cmostore) -"uGo" = ( -/obj/machinery/suit_storage_unit/security, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" - }, -/area/security/armory) "uGw" = ( /obj/machinery/door/firedoor, /obj/structure/cable/orange{ @@ -115122,6 +115136,29 @@ icon_state = "dark" }, /area/atmos) +"uLu" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/storage/box/barrier, +/obj/item/storage/box/barrier{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/barrier{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/barrier{ + pixel_x = 6; + pixel_y = -6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/armory) "uLv" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -115574,6 +115611,34 @@ "uQh" = ( /turf/simulated/floor/wood/fancy/light, /area/security/hos) +"uQm" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/ai_module/crewsimov, +/obj/item/ai_module/freeformcore, +/obj/item/ai_module/corp, +/obj/item/ai_module/paladin, +/obj/item/ai_module/robocop, +/obj/structure/table/glass, +/obj/machinery/door/window{ + dir = 2; + name = "Core Modules"; + req_access = list(20) + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bcircuit" + }, +/area/turret_protected/ai_upload) "uQE" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -117353,6 +117418,14 @@ }, /turf/simulated/floor/engine, /area/toxins/xenobiology) +"viZ" = ( +/obj/structure/sign/beautyplaque{ + desc = "Важное Уточнение! Рабочие пожелали оставаться анонимными, поэтому, обойдёмся их прозвищами. За выдающиеся успехи в области инженерного менеджмента, а также успешное проектирование Селестии по всем стандартам НаноТрейзен. Благодарим вас за труд, Saad_f603. Слава НаноТрейзен!"; + name = "Благодарственное Письмо Для Бригадира Команды Архитекторов Селестии"; + pixel_y = 32 + }, +/turf/simulated/floor/carpet/black, +/area/bridge) "vje" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -117638,6 +117711,18 @@ "vlC" = ( /turf/simulated/floor/plating, /area/security/permabrig) +"vlT" = ( +/obj/machinery/cryopod/robot, +/obj/effect/landmark/join_late_cyborg, +/obj/item/radio/intercom{ + pixel_x = 0; + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "navyblue" + }, +/area/aisat/maintenance) "vlU" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ desc = "Труба хранит в себе набор газов для смешивания"; @@ -117768,36 +117853,6 @@ icon_state = "bluefull" }, /area/hallway/primary/fore) -"vnx" = ( -/obj/structure/rack, -/obj/item/clothing/head/helmet/riot, -/obj/item/clothing/head/helmet/riot, -/obj/item/clothing/head/helmet/riot, -/obj/structure/window/reinforced, -/obj/item/clothing/suit/armor/riot, -/obj/item/clothing/suit/armor/riot, -/obj/item/clothing/suit/armor/riot, -/obj/item/shield/riot, -/obj/item/shield/riot, -/obj/item/shield/riot, -/obj/item/clothing/suit/armor/riot, -/obj/item/shield/riot, -/obj/item/clothing/head/helmet/riot, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/door/window{ - dir = 1; - name = "Secure Armory"; - req_access = list(1) - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" - }, -/area/security/armory) "vnN" = ( /obj/machinery/vending/clothing/departament/law, /obj/machinery/light{ @@ -118298,28 +118353,6 @@ }, /turf/simulated/floor/plating, /area/quartermaster/storage) -"vtT" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/camera/autoname{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/turretid/stun{ - control_area = "AI Satellite Antechamber"; - name = "AI Satellite Antechamber Turret Control"; - req_access = list(75); - pixel_x = -28; - pixel_y = 0 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "navyblue" - }, -/area/turret_protected/aisat) "vtZ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/stairs{ @@ -118573,6 +118606,13 @@ icon_state = "tranquillite" }, /area/mimeoffice) +"vwf" = ( +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/research/shallway) "vwo" = ( /obj/machinery/light{ dir = 1 @@ -118598,6 +118638,7 @@ /turf/simulated/floor/plasteel, /area/maintenance/electrical_shop) "vwI" = ( +/obj/machinery/station_map/directional/west, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "neutral" @@ -118775,14 +118816,6 @@ icon_state = "dark" }, /area/hallway/primary/fore) -"vyB" = ( -/obj/machinery/requests_console{ - name = "Detective Requests Console"; - pixel_y = -30 - }, -/obj/machinery/photocopier, -/turf/simulated/floor/carpet, -/area/security/detectives_office) "vyQ" = ( /obj/structure/table, /obj/item/multitool, @@ -119093,6 +119126,21 @@ icon_state = "whitepurple" }, /area/toxins/hallway) +"vBG" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/applicator/burn, +/obj/item/reagent_containers/glass/bottle/charcoal, +/obj/machinery/requests_console{ + department = "Genetics"; + departmentType = 1; + name = "Genetics Requests Console"; + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) "vBM" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -119911,6 +119959,21 @@ }, /turf/simulated/floor/plating, /area/assembly/chargebay) +"vIK" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green{ + on = 0; + pixel_x = -6; + pixel_y = 14 + }, +/obj/item/storage/fancy/cigarettes/dromedaryco, +/obj/item/clothing/glasses/sunglasses, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/item/lighter/zippo/detective, +/turf/simulated/floor/carpet, +/area/security/detectives_office) "vIR" = ( /turf/simulated/floor/plating, /area/maintenance/genetics) @@ -120222,6 +120285,7 @@ /obj/machinery/camera/autoname{ dir = 4 }, +/obj/machinery/station_map/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutralcorner" @@ -120614,6 +120678,14 @@ /obj/structure/mecha_wreckage/durand/old, /turf/simulated/floor/plating, /area/maintenance/electrical_shop) +"vQG" = ( +/obj/machinery/suit_storage_unit/security, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/armory) "vQP" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -120648,6 +120720,7 @@ }, /area/crew_quarters/fitness) "vRd" = ( +/obj/machinery/station_map/directional/east, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutralcorner" @@ -121698,6 +121771,23 @@ "wbx" = ( /turf/simulated/floor/grass, /area/hallway/secondary/garden) +"wbB" = ( +/obj/machinery/camera{ + c_tag = "Mini Satellite Teleporter"; + dir = 1; + network = list("SS13","MiniSat") + }, +/obj/machinery/turretid/stun{ + control_area = "AI Satellite Antechamber"; + name = "AI Satellite Antechamber Turret Control"; + pixel_x = 0; + pixel_y = -26; + req_access = list(75) + }, +/turf/simulated/floor/plasteel{ + icon_state = "navyblue" + }, +/area/aisat/maintenance) "wbI" = ( /obj/structure/chair/sofa/corp{ dir = 1 @@ -121821,6 +121911,13 @@ icon_state = "whiteyellow" }, /area/medical/chemistry) +"wdw" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard/north) "wdA" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -122169,6 +122266,15 @@ }, /turf/simulated/floor/carpet/blue, /area/crew_quarters/theatre) +"wgg" = ( +/obj/structure/cable/orange{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/port) "wgh" = ( /obj/machinery/portable_atmospherics/scrubber/huge/stationary, /turf/simulated/floor/plating, @@ -122191,15 +122297,6 @@ }, /turf/simulated/floor/plating, /area/bridge/meeting_room) -"wgj" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" - }, -/area/security/armory) "wgm" = ( /obj/structure/cable{ icon_state = "1-2" @@ -122758,18 +122855,6 @@ }, /turf/simulated/floor/plating/airless, /area/solar/west) -"wlC" = ( -/obj/structure/cable/orange, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/power/apc{ - pixel_y = -28 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "wlI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -122839,31 +122924,6 @@ icon_state = "darkgreenfull" }, /area/hydroponics) -"wmu" = ( -/obj/structure/sign/poster/official/random{ - pixel_x = 32 - }, -/obj/machinery/suit_storage_unit/security, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkred" - }, -/area/security/armory) -"wmA" = ( -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/item/radio/intercom{ - pixel_y = -28 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "wmC" = ( /obj/machinery/door/airlock/research{ name = "Research Division Access"; @@ -123349,16 +123409,6 @@ icon_state = "neutral" }, /area/hallway/secondary/entry/north) -"wrc" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/security/main) "wrg" = ( /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -124112,6 +124162,9 @@ /obj/machinery/camera/autoname{ dir = 1 }, +/obj/machinery/status_display{ + pixel_y = -32 + }, /turf/simulated/floor/plasteel{ icon_state = "whiteyellow" }, @@ -124269,13 +124322,6 @@ /obj/effect/spawner/lootdrop/maintenance/tripple, /turf/simulated/floor/plating, /area/maintenance/fpmaint) -"wAq" = ( -/obj/machinery/hologram/holopad, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkred" - }, -/area/security/armory) "wAt" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 @@ -126497,12 +126543,6 @@ icon_state = "white" }, /area/toxins/mixing) -"wWM" = ( -/obj/machinery/iv_drip, -/turf/simulated/floor/plasteel{ - icon_state = "darkblue" - }, -/area/medical/surgery/south) "wWN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -129302,16 +129342,6 @@ icon_state = "neutral" }, /area/hallway/primary/fore/east) -"xye" = ( -/obj/structure/chair/office/dark{ - dir = 8 - }, -/obj/effect/landmark/start/atmospheric, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "caution" - }, -/area/atmos/control) "xyf" = ( /obj/machinery/door/morgue{ name = "Confession Booth (Chaplain)"; @@ -130121,38 +130151,44 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central) -"xFQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" +"xFO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 }, -/area/crew_quarters/serviceyard) -"xFV" = ( -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Security SMG's" +/obj/structure/table/reinforced{ + layer = 2.5 }, -/obj/item/gun/projectile/automatic/wt550{ - pixel_x = -3; - pixel_y = 3 +/obj/machinery/door_control{ + desc = "A remote control-switch to lock down the prison wing's blast doors"; + id = "Prison Gate"; + name = "Prison Wing Lockdown"; + pixel_x = -7; + req_access = list(2) }, -/obj/item/gun/projectile/automatic/wt550, -/obj/item/gun/projectile/automatic/wt550{ - pixel_x = 3; - pixel_y = -3 +/obj/machinery/door_control{ + id = "Secure Gate"; + name = "Security Lockdown"; + pixel_x = 7; + req_access = list(2) }, -/obj/item/gun/projectile/automatic/wt550, -/obj/machinery/door/window{ - name = "Secure Armory"; - req_access = list(1) +/obj/machinery/requests_console{ + department = "Warden"; + departmentType = 7; + name = "Warden's Requests Console"; + pixel_y = -30 }, /turf/simulated/floor/plasteel{ - dir = 8; icon_state = "darkred" }, -/area/security/armory) +/area/security/warden) +"xFQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/serviceyard) "xFW" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -130414,6 +130450,17 @@ icon_state = "navyblue" }, /area/turret_protected/ai) +"xIi" = ( +/obj/structure/table, +/obj/item/ai_module/nanotrasen, +/obj/structure/cable/orange, +/obj/machinery/power/apc{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bcircuit" + }, +/area/turret_protected/ai_upload) "xIj" = ( /obj/structure/sign/directions/floor/alt{ dir = 6; @@ -130525,13 +130572,12 @@ /turf/simulated/floor/plating, /area/maintenance/engineering) "xIW" = ( -/obj/machinery/status_display{ - pixel_y = -32 - }, +/obj/machinery/station_map/directional/north, /turf/simulated/floor/plasteel{ - icon_state = "whiteyellow" + dir = 1; + icon_state = "darkred" }, -/area/hallway/primary/central) +/area/security/main) "xIX" = ( /obj/structure/railing, /obj/item/flag/command, @@ -130620,31 +130666,6 @@ icon_state = "redcorner" }, /area/security/processing) -"xKk" = ( -/obj/structure/rack, -/obj/item/storage/box/seccarts{ - pixel_x = 3; - pixel_y = 2 - }, -/obj/item/storage/box/handcuffs, -/obj/item/storage/box/flashbangs{ - pixel_x = -2; - pixel_y = -2 - }, -/obj/item/storage/box/handcuffs, -/obj/item/storage/box/teargas{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" - }, -/area/security/armory) "xKm" = ( /obj/effect/decal/cleanable/dirt, /obj/item/radio/intercom{ @@ -130674,6 +130695,20 @@ icon_state = "purple" }, /area/medical/research) +"xKu" = ( +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 28 + }, +/obj/structure/cable/orange{ + icon_state = "0-2" + }, +/obj/machinery/camera/autoname, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/armory) "xKA" = ( /obj/structure/window/reinforced, /obj/structure/transit_tube/station/dispenser{ @@ -130859,6 +130894,19 @@ }, /turf/simulated/floor/glass/reinforced, /area/turret_protected/ai) +"xMk" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/clipboard, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/orange{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) "xMp" = ( /obj/effect/spawner/random_spawners/grille_13, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -131501,6 +131549,19 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/brig) +"xSy" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/maintenance/port) "xSA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -131536,6 +131597,30 @@ icon_state = "yellow" }, /area/hallway/secondary/entry/north) +"xSN" = ( +/obj/machinery/power/smes{ + charge = 5e+006; + output_level = 150000 + }, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/camera/autoname{ + dir = 8 + }, +/obj/machinery/turretid/lethal{ + check_synth = 1; + name = "AI Chamber Turret Control"; + pixel_x = 32; + pixel_y = 0; + req_access = list(75) + }, +/turf/simulated/floor/glass/reinforced, +/area/turret_protected/ai) "xSR" = ( /turf/simulated/wall, /area/engineering/hardsuitstorage) @@ -131610,23 +131695,6 @@ icon_state = "neutralcorner" }, /area/hallway/secondary/entry/south) -"xTu" = ( -/obj/machinery/camera{ - c_tag = "Mini Satellite Teleporter"; - dir = 1; - network = list("SS13","MiniSat") - }, -/obj/machinery/turretid/stun{ - control_area = "AI Satellite Antechamber"; - name = "AI Satellite Antechamber Turret Control"; - req_access = list(75); - pixel_x = 0; - pixel_y = -26 - }, -/turf/simulated/floor/plasteel{ - icon_state = "navyblue" - }, -/area/aisat/maintenance) "xTA" = ( /obj/structure/ladder, /obj/structure/cable/orange{ @@ -131901,6 +131969,14 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/apmaint2) +"xWp" = ( +/obj/machinery/suit_storage_unit/security, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/armory) "xWu" = ( /obj/machinery/atmospherics/unary/portables_connector{ dir = 8 @@ -132831,6 +132907,23 @@ /obj/effect/turf_decal/stripes/line, /turf/simulated/floor/engine, /area/medical/chemistry) +"ygz" = ( +/obj/machinery/computer/aiupload/cyborg{ + dir = 1 + }, +/obj/machinery/door/window/eastright{ + dir = 8; + name = "Console Access"; + req_access = list(16) + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) "ygB" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -146192,7 +146285,7 @@ mSg sQc uXh wNS -vbw +vwf btS jRO cUT @@ -207541,7 +207634,7 @@ olV wha bbD dsd -dfl +rhu gBF jBm baI @@ -207571,7 +207664,7 @@ hQg hna ljI vzB -miy +rjn kTD hHU nor @@ -208829,7 +208922,7 @@ bBS yib anc aiZ -kOI +oxt fRn yib gBF @@ -212240,7 +212333,7 @@ ryZ ryZ wQW wQW -lgC +kxt pEF wLz nWt @@ -212700,7 +212793,7 @@ jMc waa lUq wLr -uLv +sEi eVI vKV esf @@ -213443,11 +213536,11 @@ nJS bWb ren qwS -bpQ -oNQ -bpQ -oNQ -bpQ +kwS +kwS +kwS +kwS +kwS oYJ oYJ sXn @@ -213700,11 +213793,11 @@ jgv tnS rsa tnS -bpQ -rIl -cVr -sIL -bpQ +kwS +wXU +qmX +utC +kwS isY pXT oqO @@ -213876,7 +213969,7 @@ gSu gcz jns fwp -hbq +xFO rMr pKM mVc @@ -213957,11 +214050,11 @@ dWJ tnS lHC uRx -sZm -qqW -acd -beN -bpQ +raJ +wgg +qbd +fSB +kwS mfh vxY eBu @@ -213976,7 +214069,7 @@ ska pkj ska frt -kEQ +tiS ceP vfW chR @@ -214214,11 +214307,11 @@ uuf mJW oEM vfV -bpQ -iwo -gbk -wlC -bpQ +kwS +uUy +acQ +nmU +kwS bkY woK cix @@ -214471,11 +214564,11 @@ fDL tnS urC nAn -bpQ -hPZ -bFm -wmA -bpQ +kwS +mOy +oBQ +xSy +kwS rSN mzx caO @@ -214728,11 +214821,11 @@ kMG tnS oYt xRO -bpQ -bpQ -bpQ -bpQ -bpQ +kwS +kwS +kwS +kwS +kwS oYJ oYJ hGj @@ -215065,7 +215158,7 @@ vtv pOz svN gQu -wWO +aii lUn tmG aFO @@ -216092,7 +216185,7 @@ eOu bwu aBP sxu -iNt +jWE kpW uZc cpy @@ -216438,7 +216531,7 @@ tYG wHf wHf ffK -cSP +xIW dkk kud ree @@ -216987,7 +217080,7 @@ dmS wDw dsy wDw -sDC +vIK odS wfN eyQ @@ -217246,7 +217339,7 @@ peG gme jEc mNY -vyB +cGM eyQ orm orm @@ -217558,7 +217651,7 @@ ahR fTO uzE mjD -ska +hon aHZ fVX fVX @@ -218246,14 +218339,14 @@ vfO hau szZ pNG -lXa -ega +twh +cfa pUS doz fOk qAf pxd -ekN +qUL pNG mWc pNG @@ -218503,14 +218596,14 @@ bsG lxy wDe pNG -eEt +rps qJm vpy -qyg -qyg +jVJ +jVJ ybD jkR -vnx +goo pNG mWc pNG @@ -218760,14 +218853,14 @@ mpg jdw rEc pNG -aOM +fsx jgB -iWY -hxu -xKk -wAq +hZT +nLr +mBc +ket eGv -uGo +klu pNG mWc pNG @@ -219017,14 +219110,14 @@ suP pNG pNG pNG -tct +iiG jgB -cyd -mhb -aVT -cyd +hZT +nIi +mhX +hZT eGv -sUZ +qgF pNG mWc pNG @@ -219274,14 +219367,14 @@ buS pNG mWc pNG -lHu +xKu fQm -iWY -kYX -aVT -iWY +hZT +nNr +top +hZT eGv -uGo +ghM pNG mWc pNG @@ -219531,14 +219624,14 @@ buS pNG mWc pNG -wgj +pzU jXb -cyd -rnQ -gic -cyd +hZT +raT +jWI +hZT eGv -uGo +uLu pNG mWc pNG @@ -219788,14 +219881,14 @@ qQo pNG mWc pNG -kqo +fWZ mfT fbR ttu ttu vmo tbX -uGo +hyB pNG mWc pNG @@ -220046,13 +220139,13 @@ pNG mWc pNG pNG -bKc -fCO -wmu -sxN -iWY +hFC +pci +cfr +dXI +hZT iWY -nPL +gmR pNG mWc pNG @@ -221482,7 +221575,7 @@ qjn nxQ fEJ cXm -mRY +rOI spH ipI jHE @@ -225997,7 +226090,7 @@ uXj rOO cRs wwA -bOj +eOO wwA jSS rOO @@ -227278,7 +227371,7 @@ eyp bqK jsv uUx -xTu +wbB kCa gPP vWu @@ -227533,7 +227626,7 @@ miQ hGg wuV kCa -cdq +vlT gms bWX kCa @@ -228047,19 +228140,19 @@ ntZ clk gKY oAd -dOS +qaX gKY vWt roh jvL vzz -vtT +nOA jHo ktZ roh dMW gKY -kiQ +bKf oAd gKY umH @@ -231214,7 +231307,7 @@ cOP nfw cOP bgc -xye +kCl fdb vyQ hYj @@ -231726,7 +231819,7 @@ xbf tJg lLU nJE -xIW +nEn bgc lrl rCz @@ -232443,7 +232536,7 @@ rhK pfc bOA tzJ -jwW +dpr tFF uZJ oun @@ -233944,7 +234037,7 @@ hFt uqB rBb btn -tNm +oDG lxg kkS kkS @@ -234233,7 +234326,7 @@ aeM aeM kkS dZs -bcK +hiL tOs tOs sdv @@ -235065,7 +235158,7 @@ kDz sNk hLT xfU -sEi +cYF cYF gxL rxJ @@ -235592,7 +235685,7 @@ tjl xYY jBR naw -mor +hrJ wBv klO jfm @@ -236756,7 +236849,7 @@ gFo dIP uod gEz -cUl +xMk oKi oSm qjl @@ -237516,7 +237609,7 @@ wVh bjT wFn eQF -iEd +viZ bNj qee cVq @@ -239323,11 +239416,11 @@ aeM aeM qcV qBC -aNl +qRm tUs ayL tUs -sMY +tmp qBC bmg cRH @@ -239580,11 +239673,11 @@ aeM aeM dFy qBC -iwn +uQm uJW mYs cam -bkW +mIL qBC tHA tHA @@ -239837,11 +239930,11 @@ aeM aeM dFy qBC -aWL +dQV tUs avo vrf -fRS +xIi qBC qcV aeM @@ -240095,7 +240188,7 @@ aeM dFy qBC uIC -cQU +ygz axp cUj uIC @@ -242816,7 +242909,7 @@ jVG nbM jVG jVG -egs +nel tNA iPu vmi @@ -243068,7 +243161,7 @@ dXS ktv rdQ jVG -oDP +pPm qUD gAP gQP @@ -246336,7 +246429,7 @@ hpJ euW mDQ pms -fOe +cXq ntU wEh fOe @@ -250373,7 +250466,7 @@ xvn yeT qOm mwF -mwF +kag iZE iNe hvU @@ -250699,7 +250792,7 @@ ocg xMz dvP aFt -tXd +wdw jQg oCD uEe @@ -251154,7 +251247,7 @@ rLB tLh uyz aRC -pzy +frY aTm rLB ipa @@ -251988,7 +252081,7 @@ prx lAD bXp rds -bjK +cZe gKA cOE bmX @@ -253016,7 +253109,7 @@ oGO lLe tXd rds -aQo +nNo lus pbU cPa @@ -253289,7 +253382,7 @@ lQa gCe hQU mDJ -lYL +vBG wiV laG cPh @@ -253530,7 +253623,7 @@ tmf qqj aLC rds -bqf +rTW wGW tNZ nUj @@ -254044,7 +254137,7 @@ tmf moN lTd ljn -jRu +uhp xeq tnt diq @@ -254558,7 +254651,7 @@ uiM beA aLC ljn -wWM +nrb oSk cOM syk @@ -255134,7 +255227,7 @@ hod dFU qIy xNH -cps +hPF hod sfL pbn @@ -255586,7 +255679,7 @@ sAk vNJ oCB ljn -rCR +lbn mcK vcx tgT @@ -273331,7 +273424,7 @@ oXc pNI fIm prd -iAb +eZF nuI fGN snX @@ -275632,7 +275725,7 @@ oqZ aeM aeM wMM -kLd +gpO tTe jHd duy @@ -283785,8 +283878,8 @@ sPj sPj lBY sPj -wrc -bQd +sPj +fFH ffK aeM aeM @@ -284042,8 +284135,8 @@ pNG pNG pNG pNG -wsO pNG +wsO pNG pNG aeM @@ -284296,12 +284389,12 @@ aeM oOE hVW pNG -qyI -xFV -psw +mHN +rxT +abf +xWp xBi -jnc -sps +vQG pNG aeM gUQ @@ -284553,12 +284646,12 @@ aeM ffK ffK pNG -oiP +sfm xJl jRb -jjf -bAW -eBQ +jRb +dSF +bAN pNG aeM aeM @@ -284810,12 +284903,12 @@ aeM aeM aeM pNG -ntJ +dtk ngV +lrb kkI -jXF -iRq -hDF +gYW +dkI pNG aeM aeM @@ -285070,9 +285163,9 @@ pNG xjn aym mZK -alF -iRq -kfn +ppi +fDo +nzh pNG aeM aeM @@ -285329,7 +285422,7 @@ iUH ucp ucp aFu -pkA +bAN pNG aeM aeM @@ -285583,10 +285676,10 @@ aeM pNG rmd puS -dUh -kFc -pQf -cFr +pus +nxd +czI +gRJ pNG aeM aeM @@ -287421,7 +287514,7 @@ oVi oVi pbY ppr -cwM +xSN sIb oVi oVi @@ -314868,7 +314961,7 @@ orm idQ wNk nuW -jfp +ath cQw spN rlk @@ -316665,7 +316758,7 @@ orm ukB vgw gyR -ini +txd jmP pNB kUl @@ -316922,7 +317015,7 @@ orm cNk cNk cNk -bfw +kGA xlt pQi vhk @@ -317436,7 +317529,7 @@ orm orm orm idQ -eln +jWV iys oPx eUM @@ -317802,7 +317895,7 @@ uaX oLR obg iVk -kIG +iBZ rrN jQR tVA @@ -318059,7 +318152,7 @@ bHr paM fMh iVk -lgi +oVH yfZ dst cVL @@ -318321,7 +318414,7 @@ kRb teW dRx tEi -rki +rMK xOs aeM oqZ @@ -318578,7 +318671,7 @@ gaR rVW bJY rVW -rki +rMK xOs aeM oqZ @@ -319603,7 +319696,7 @@ vlk xOs xUh qmN -jVQ +hTb gJJ vTn pHc diff --git a/_maps/map_files/cerestation/Lavaland.dmm b/_maps/map_files/cerestation/Lavaland.dmm index ce7bcd3bb9f7..afb3a66a6e14 100644 --- a/_maps/map_files/cerestation/Lavaland.dmm +++ b/_maps/map_files/cerestation/Lavaland.dmm @@ -3572,6 +3572,10 @@ }, /turf/simulated/floor/lava/lava_land_surface, /area/lavaland/surface/outdoors/necropolis) +"sB" = ( +/obj/ash_walker_landmark, +/turf/template_noop, +/area/lavaland/surface/outdoors/necropolis) "sC" = ( /obj/structure/stone_tile/surrounding_tile{ dir = 4 @@ -60479,9 +60483,9 @@ Ct Ct Ct aj -ab aj -ab +aj +aj ab ab ab @@ -62283,7 +62287,7 @@ aj aj aj aj -ab +aj ab ab kh @@ -62540,7 +62544,7 @@ aj aj aj aj -ab +aj ab ab kh @@ -62782,13 +62786,14 @@ RD Ct Ct Ct -Ct -Ct -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Zx +Zx +Zx +Zx +aj aj aj aj @@ -62797,7 +62802,6 @@ aj aj aj aj -ab ab ab kh @@ -63039,13 +63043,15 @@ RD Ct Ct Ct -Ct -Ct -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Zx +Zx +Zx +Zx +aj +aj aj aj aj @@ -63054,8 +63060,6 @@ aj aj aj aj -ab -ab ab kh kh @@ -63296,13 +63300,15 @@ WC gU Ct Ct -Ct -Ct -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Zx +Zx +Zx +Zx +aj +aj aj aj aj @@ -63311,8 +63317,6 @@ aj aj aj aj -ab -ab ab kh kh @@ -63553,13 +63557,15 @@ WC WC WC Ct -Ct -Ct -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +sB +Zx +Zx +Zx +aj +aj aj aj aj @@ -63568,8 +63574,6 @@ aj aj aj aj -ab -ab ab kh kh @@ -63810,13 +63814,15 @@ WC jK jK jK -jK -Ct -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Zx +Zx +Zx +Zx +aj +aj aj aj aj @@ -63825,8 +63831,6 @@ aj aj aj aj -ab -ab ab kh kh @@ -64067,13 +64071,15 @@ WC jK jK jK -jK -WC -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Zx +Zx +Zx +Zx +aj +aj aj aj aj @@ -64082,8 +64088,6 @@ aj aj aj aj -ab -ab ab kh kh @@ -64324,13 +64328,14 @@ WC jK jK jK -jK -WC -Ct -Ct -Ct -Ct -Ct +Zx +Zx +Zx +Zx +Zx +Zx +Zx +aj aj aj aj @@ -64339,7 +64344,6 @@ aj aj aj aj -ab ab ab kh @@ -64596,7 +64600,7 @@ aj aj aj aj -ab +aj ab ab kh @@ -64853,7 +64857,7 @@ aj aj aj aj -ab +aj ab ab kh @@ -65620,8 +65624,8 @@ Ct Ct aj aj -ab -ab +aj +aj ab kh kh @@ -66136,7 +66140,7 @@ aj aj aj aj -ab +aj ab ab ab diff --git a/_maps/map_files/cerestation/cerestation.dmm b/_maps/map_files/cerestation/cerestation.dmm index 9e55a1207dbe..5cb62830d150 100644 --- a/_maps/map_files/cerestation/cerestation.dmm +++ b/_maps/map_files/cerestation/cerestation.dmm @@ -702,6 +702,16 @@ }, /turf/simulated/floor/glass/reinforced, /area/maintenance/fore2) +"agz" = ( +/obj/machinery/light, +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/maintenance/port) "agA" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable/orange{ @@ -1375,6 +1385,27 @@ "akN" = ( /turf/simulated/floor/plating, /area/turret_protected/aisat_interior/secondary) +"akW" = ( +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Magazines for SP-91-RC"; + req_access = list(1) + }, +/obj/item/ammo_box/magazine/sp91rc{ + pixel_x = 8 + }, +/obj/item/ammo_box/magazine/sp91rc{ + pixel_x = 4 + }, +/obj/item/ammo_box/magazine/sp91rc, +/obj/item/ammo_box/magazine/sp91rc{ + pixel_x = -4 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "akZ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -1477,6 +1508,29 @@ /obj/structure/closet/crate, /turf/simulated/floor/plating, /area/maintenance/disposal/north) +"alQ" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/ammo_box/magazine/enforcer/lethal{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/ammo_box/magazine/enforcer/lethal{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/magazine/enforcer/lethal, +/obj/item/ammo_box/magazine/enforcer/lethal{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Lethal Bullets" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "alW" = ( /obj/structure/closet/emcloset, /obj/structure/cable/orange{ @@ -1873,6 +1927,37 @@ icon_state = "neutralfull" }, /area/hallway/primary/starboard/north) +"aqq" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/ammo_box/shotgun/buck{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/shotgun/buck, +/obj/item/ammo_box/shotgun{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Lethal Bullets" + }, +/obj/item/ammo_box/shotgun/beanbag, +/obj/item/ammo_box/shotgun/beanbag{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/shotgun/tranquilizer{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "aqC" = ( /turf/simulated/wall, /area/crew_quarters/locker) @@ -2074,6 +2159,16 @@ "atc" = ( /turf/simulated/floor/wood/fancy/light, /area/security/hos) +"atf" = ( +/obj/effect/decal/warning_stripes/blue, +/obj/structure/sink/kitchen{ + pixel_y = 25 + }, +/obj/machinery/iv_drip, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery/south) "atg" = ( /obj/structure/rack, /obj/item/pickaxe/emergency, @@ -2147,6 +2242,19 @@ icon_state = "dark" }, /area/maintenance/disposal) +"auk" = ( +/obj/structure/table/glass, +/obj/item/soap/nanotrasen, +/obj/item/reagent_containers/spray/cleaner/medical, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -24 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/cmostore) "aut" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -2768,6 +2876,12 @@ /obj/machinery/computer/communications, /turf/simulated/floor/wood/fancy/oak, /area/crew_quarters/captain) +"ayw" = ( +/obj/machinery/station_map/directional/south, +/turf/simulated/floor/plasteel{ + icon_state = "whitepurple" + }, +/area/toxins/hallway) "ayy" = ( /obj/structure/closet/secure_closet/miner, /turf/simulated/floor/plasteel{ @@ -2964,20 +3078,6 @@ }, /turf/simulated/floor/wood/fancy/oak, /area/crew_quarters/captain) -"azO" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/item/storage/belt/medical, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/regular, -/obj/machinery/camera{ - c_tag = "Medbay Storage"; - dir = 10; - network = list("SS13","CMO") - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue" - }, -/area/medical/cmostore) "azS" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -3610,6 +3710,9 @@ /obj/machinery/light{ dir = 1 }, +/obj/item/radio/intercom{ + pixel_y = 26 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkbrown" @@ -3630,17 +3733,6 @@ icon_state = "dark" }, /area/security/evidence) -"aFA" = ( -/obj/structure/table/reinforced, -/obj/item/razor, -/obj/item/eftpos, -/obj/structure/mirror{ - pixel_x = -27 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "aFE" = ( /obj/effect/turf_decal/stripes/red/full, /turf/simulated/floor/engine, @@ -3764,6 +3856,20 @@ icon_state = "red" }, /area/security/processing) +"aGL" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/flasher/portable, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/armory) "aGP" = ( /obj/machinery/mineral/stacking_machine{ input_dir = 1; @@ -4253,9 +4359,7 @@ /turf/simulated/wall, /area/maintenance/engineering) "aKJ" = ( -/obj/item/radio/intercom{ - pixel_x = -28 - }, +/obj/machinery/station_map/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkbrown" @@ -4461,7 +4565,6 @@ }, /area/security/warden) "aMR" = ( -/obj/machinery/ai_status_display, /turf/simulated/wall, /area/security/brig) "aMS" = ( @@ -4704,13 +4807,6 @@ icon_state = "darkred" }, /area/security/warden) -"aOM" = ( -/obj/machinery/flasher/portable, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/armory) "aOS" = ( /obj/machinery/power/terminal{ dir = 4 @@ -4916,12 +5012,6 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/carpet/royalblack, /area/crew_quarters/bar) -"aQo" = ( -/obj/machinery/iv_drip, -/turf/simulated/floor/plasteel{ - icon_state = "darkblue" - }, -/area/medical/surgery/north) "aQq" = ( /turf/simulated/floor/plating, /area/maintenance/fore) @@ -5298,32 +5388,6 @@ icon_state = "brown" }, /area/quartermaster/qm) -"aTm" = ( -/obj/item/flash, -/obj/item/extraction_pack, -/obj/item/cartridge/quartermaster{ - pixel_x = -3 - }, -/obj/item/cartridge/quartermaster{ - pixel_x = -1; - pixel_y = 7 - }, -/obj/item/cartridge/quartermaster{ - pixel_x = 5; - pixel_y = 3 - }, -/obj/item/megaphone, -/obj/item/fulton_core, -/obj/structure/closet/secure_closet/quartermaster, -/obj/item/clipboard, -/obj/item/stamp/qm{ - pixel_y = 7 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "brown" - }, -/area/quartermaster/qm) "aTn" = ( /obj/structure/closet, /turf/simulated/floor/plating, @@ -5530,15 +5594,6 @@ icon_state = "asteroidplating" }, /area/maintenance/starboard) -"aUW" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=Armory_South_East"; - location = "Armory_North" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/armory) "aUY" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -5566,7 +5621,7 @@ }, /area/bridge) "aVg" = ( -/obj/item/card/id/captains_spare, +/obj/item/storage/secure/briefcase/captian, /obj/structure/table/wood, /turf/simulated/floor/wood/fancy/light{ color = "gray" @@ -5693,15 +5748,6 @@ "aVS" = ( /turf/simulated/wall/r_wall, /area/bridge) -"aVT" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=Armory_South"; - location = "Armory_South_East" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/armory) "aVW" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -7095,15 +7141,6 @@ /obj/structure/cable/orange, /turf/simulated/floor/plating, /area/security/range) -"beN" = ( -/obj/machinery/light, -/obj/structure/extinguisher_cabinet{ - pixel_y = -28 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "beQ" = ( /obj/structure/table/wood, /obj/item/eftpos, @@ -7114,28 +7151,6 @@ /obj/structure/flora/grass/jungle, /turf/simulated/floor/grass, /area/hallway/secondary/garden) -"beX" = ( -/obj/structure/rack/gunrack, -/obj/item/gun/projectile/automatic/sp91rc{ - pixel_x = -7 - }, -/obj/item/gun/projectile/automatic/sp91rc{ - pixel_x = -2 - }, -/obj/item/gun/projectile/automatic/sp91rc{ - pixel_x = 2 - }, -/obj/item/gun/projectile/automatic/sp91rc{ - pixel_x = 7 - }, -/obj/structure/sign/poster/official/random{ - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/armory) "beY" = ( /obj/machinery/hologram/holopad, /obj/structure/cable{ @@ -7975,19 +7990,6 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/crew_quarters/bar) -"bjo" = ( -/obj/machinery/dye_generator, -/obj/machinery/alarm{ - dir = 8; - pixel_x = 24 - }, -/obj/item/radio/intercom{ - pixel_y = 28 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "bjq" = ( /obj/structure/cable{ icon_state = "4-8" @@ -8076,22 +8078,6 @@ }, /turf/simulated/floor/plating, /area/medical/cmo) -"bjK" = ( -/obj/structure/table, -/obj/item/storage/box/gloves{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/masks, -/obj/item/reagent_containers/spray/cleaner/medical{ - desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; - name = "Surgery Cleaner" - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "whiteblue" - }, -/area/medical/surgery/north) "bjM" = ( /obj/machinery/gateway{ dir = 10 @@ -8274,17 +8260,6 @@ icon_state = "dark" }, /area/quartermaster/storage) -"bkY" = ( -/obj/effect/landmark/start/barber, -/obj/structure/cable/orange{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "bla" = ( /obj/structure/cable{ icon_state = "4-8" @@ -9106,6 +9081,14 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/carpet/blue, /area/crew_quarters/heads/hop) +"bqI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredalt" + }, +/area/security/armory) "bqM" = ( /obj/structure/cable/orange{ icon_state = "1-8" @@ -10393,6 +10376,14 @@ icon_state = "dark" }, /area/medical/morgue) +"bya" = ( +/obj/structure/cable/orange{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/fore2) "byb" = ( /obj/machinery/optable, /turf/simulated/floor/plasteel{ @@ -10944,11 +10935,8 @@ dir = 4; network = list("SS13","CE") }, -/obj/machinery/newscaster{ - dir = 4; - pixel_x = -28 - }, /obj/machinery/atmospherics/pipe/simple/visible, +/obj/machinery/station_map/engineering/directional/west, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -11171,35 +11159,6 @@ }, /turf/simulated/wall/r_wall, /area/engineering/break_room) -"bBX" = ( -/obj/item/gun/projectile/shotgun/riot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/projectile/shotgun/riot, -/obj/item/gun/projectile/shotgun/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/machinery/camera{ - c_tag = "Brig Secure Armory" - }, -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Riot shotguns" - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/armory) "bCa" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, @@ -11999,6 +11958,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, +/obj/machinery/station_map/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whiteblue" @@ -12060,14 +12020,6 @@ color = "gray" }, /area/crew_quarters/bar) -"bGA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/armory) "bGB" = ( /obj/effect/spawner/window/reinforced/polarized{ id = "privateroom" @@ -15127,14 +15079,6 @@ icon_state = "asteroidplating" }, /area/chapel/office) -"bVm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/armory) "bVn" = ( /obj/effect/landmark/ninja_teleport, /turf/simulated/floor/plating{ @@ -17233,31 +17177,6 @@ icon_state = "neutral" }, /area/hallway/primary/port/east) -"cgG" = ( -/obj/structure/rack, -/obj/item/storage/box/seccarts{ - pixel_x = 3; - pixel_y = 2 - }, -/obj/item/storage/box/handcuffs, -/obj/item/storage/box/flashbangs{ - pixel_x = -2; - pixel_y = -2 - }, -/obj/item/storage/box/handcuffs, -/obj/item/storage/box/teargas{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/armory) "cgJ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -17279,52 +17198,6 @@ icon_state = "purple" }, /area/hallway/primary/aft/west) -"cgL" = ( -/obj/item/gun/energy/laser{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/energy/laser, -/obj/item/gun/energy/laser{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/rack/gunrack, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/armory) -"cgR" = ( -/obj/item/gun/energy/gun{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/energy/gun, -/obj/item/gun/energy/gun{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/rack/gunrack, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/armory) "chc" = ( /obj/structure/cable{ icon_state = "1-2" @@ -17359,6 +17232,40 @@ }, /turf/simulated/floor/wood/fancy/light, /area/security/hos) +"chw" = ( +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Magazines for SMG" + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/ammo_box/magazine/wt550m9, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/alarm{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "chC" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable/orange{ @@ -17563,14 +17470,6 @@ icon_state = "darkred" }, /area/security/warden) -"cjk" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/armory) "cjm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -17616,12 +17515,6 @@ icon_state = "darkred" }, /area/security/checkpoint2) -"cjA" = ( -/mob/living/simple_animal/bot/secbot/armsky, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/armory) "cjC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/door/airlock{ @@ -18183,20 +18076,6 @@ /obj/structure/cable/orange, /turf/simulated/floor/plating, /area/security/armory) -"cov" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/obj/machinery/flasher/portable, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/armory) "coy" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -20248,6 +20127,12 @@ /obj/machinery/computer/guestpass{ pixel_y = -28 }, +/obj/machinery/requests_console{ + department = "Warden"; + departmentType = 7; + name = "Warden's Requests Console"; + pixel_x = -30 + }, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkred" @@ -20556,24 +20441,6 @@ /obj/machinery/camera/autoname, /turf/simulated/floor/plating, /area/maintenance/atmospherics) -"cGL" = ( -/obj/structure/table/glass, -/obj/item/soap/nanotrasen, -/obj/item/reagent_containers/spray/cleaner/medical, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/hud/health, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -24 - }, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "whiteblue" - }, -/area/medical/cmostore) "cGN" = ( /obj/machinery/door/airlock/maintenance{ name = "Maintenance Drone Dispensary" @@ -20696,6 +20563,10 @@ icon_state = "darkblue" }, /area/medical/surgery/north) +"cHU" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/shuttle, +/area/shuttle/arrival/station) "cHX" = ( /obj/structure/chair/stool, /mob/living/simple_animal/butterfly, @@ -22439,6 +22310,30 @@ /obj/item/megaphone, /turf/simulated/floor/carpet, /area/magistrateoffice) +"cTj" = ( +/obj/machinery/door/window{ + base_state = "right"; + icon_state = "right"; + name = "Core Modules"; + req_access = list(20) + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/ai_module/crewsimov, +/obj/item/ai_module/freeformcore, +/obj/item/ai_module/corp, +/obj/item/ai_module/paladin, +/obj/item/ai_module/robocop, +/obj/structure/table/glass, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) "cTr" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, @@ -23449,11 +23344,7 @@ }, /area/hallway/spacebridge/scidock) "cYD" = ( -/obj/machinery/light, -/obj/item/radio/intercom{ - dir = 1; - pixel_y = -29 - }, +/obj/machinery/station_map/directional/south, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -23733,13 +23624,6 @@ "dcw" = ( /turf/simulated/wall/r_wall, /area/hallway/spacebridge/serveng) -"dcy" = ( -/obj/item/razor, -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "dcz" = ( /obj/machinery/door/airlock/maintenance/external{ name = "External Airlock Access"; @@ -24904,6 +24788,9 @@ /obj/item/radio/intercom{ pixel_x = -28 }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-22" + }, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkbrown" @@ -24921,12 +24808,10 @@ }, /area/teleporter/quantum/cargo) "dkK" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-22" - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, +/obj/machinery/station_map/directional/east, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "darkbrown" @@ -25017,6 +24902,16 @@ }, /turf/simulated/floor/plating, /area/security/prison/cell_block/A) +"dlB" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/vehicle/ridden/secway, +/obj/structure/closet/sechammercabinet{ + pixel_x = 30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "dlG" = ( /obj/effect/decal/cleanable/cobweb, /obj/machinery/atmospherics/unary/portables_connector{ @@ -25453,6 +25348,12 @@ dir = 1; network = list("Medical","SS13") }, +/obj/machinery/requests_console{ + department = "Virology"; + departmentType = 3; + name = "Virology Requests Console"; + pixel_y = -30 + }, /turf/simulated/floor/plasteel{ icon_state = "whitegreen" }, @@ -25547,17 +25448,6 @@ icon_state = "white" }, /area/crew_quarters/kitchen) -"dre" = ( -/obj/structure/cable/orange{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/sign/poster/official/random{ - pixel_x = -32 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plating, -/area/maintenance/fore2) "drf" = ( /obj/machinery/seed_extractor, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -26162,12 +26052,6 @@ icon_state = "whitepurple" }, /area/toxins/misc_lab) -"dyM" = ( -/obj/structure/table, -/obj/item/aicard, -/obj/item/aiModule/reset, -/turf/simulated/floor/plating, -/area/storage/tech) "dyN" = ( /obj/machinery/hologram/holopad, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -27904,6 +27788,12 @@ }, /turf/simulated/floor/plating, /area/maintenance/disposal/south) +"dSb" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkredalt" + }, +/area/security/armory) "dSi" = ( /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -28188,6 +28078,26 @@ icon_state = "neutral" }, /area/hallway/spacebridge/engmed) +"dWW" = ( +/obj/structure/rack/gunrack, +/obj/item/gun/projectile/automatic/sp91rc{ + pixel_x = -3 + }, +/obj/item/gun/projectile/automatic/sp91rc, +/obj/item/gun/projectile/automatic/sp91rc{ + pixel_x = 3 + }, +/obj/item/gun/projectile/automatic/sp91rc{ + pixel_x = 6 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "dWX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -28327,6 +28237,13 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel/white, /area/toxins/hallway) +"dZI" = ( +/obj/machinery/station_map/directional/east, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/hallway/primary/fore/east) "dZM" = ( /obj/machinery/door/poddoor/preopen{ id_tag = "engineeringlockdown"; @@ -28794,6 +28711,12 @@ /obj/effect/landmark/join_late_cyborg, /turf/simulated/floor/shuttle, /area/shuttle/arrival/station) +"egH" = ( +/obj/structure/chair/barber{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/port) "egM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -28967,20 +28890,6 @@ }, /turf/simulated/floor/engine, /area/toxins/explab_chamber) -"ekN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/structure/sign/poster/official/ion_rifle{ - pixel_y = -32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/armory) "ekV" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -29393,6 +29302,13 @@ "esK" = ( /turf/simulated/wall/r_wall, /area/hallway/secondary/entry) +"esQ" = ( +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/hallway/primary/aft/west) "esU" = ( /obj/machinery/photocopier, /turf/simulated/floor/wood/fancy/light, @@ -29426,11 +29342,9 @@ /turf/simulated/floor/plating, /area/maintenance/fpmaint) "eud" = ( -/obj/machinery/status_display{ - layer = 4 - }, +/obj/machinery/ai_status_display, /turf/simulated/wall, -/area/hydroponics) +/area/security/interrogation) "eut" = ( /obj/machinery/door/airlock/security/glass{ id = "process"; @@ -29628,6 +29542,17 @@ icon_state = "whitebluefull" }, /area/medical/medbay) +"eyC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable/orange{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/port) "eyO" = ( /obj/structure/cable{ icon_state = "1-2" @@ -30446,8 +30371,8 @@ /area/maintenance/port) "eLR" = ( /obj/machinery/requests_console{ - department = "Tool Storage"; - name = "Tool Storage Requests Console"; + department = "Primary Tool Storage"; + name = "Primary Tool Storage Requests Console"; pixel_y = 30 }, /obj/structure/disposalpipe/segment{ @@ -30564,6 +30489,16 @@ icon_state = "whitebluecorner" }, /area/medical/cmostore) +"eNg" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/suit_storage_unit/security, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "eNI" = ( /obj/machinery/light_switch{ pixel_y = 24 @@ -31087,6 +31022,10 @@ name = "Portable Scrubber Connector" }, /obj/machinery/portable_atmospherics/scrubber, +/obj/machinery/newscaster{ + dir = 4; + pixel_x = -28 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -31245,6 +31184,25 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/quartermaster/miningdock) +"eZu" = ( +/obj/item/gun/projectile/shotgun/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/projectile/shotgun/riot, +/obj/item/gun/projectile/shotgun/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Riot shotguns" + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "eZI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -31388,6 +31346,13 @@ /obj/machinery/light, /turf/simulated/floor/plating, /area/engineering/engine/smes) +"fcB" = ( +/mob/living/simple_animal/bot/secbot/armsky, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkredalt" + }, +/area/security/armory) "fcL" = ( /obj/effect/turf_decal/stripes/line, /obj/item/radio/intercom{ @@ -31996,6 +31961,32 @@ icon_state = "darkblue" }, /area/medical/morgue) +"fnb" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/door/window{ + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/clothing/suit/armor/laserproof, +/obj/item/gun/energy/ionrifle{ + pixel_y = 3 + }, +/obj/structure/sign/poster/official/ion_rifle{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "fne" = ( /obj/machinery/door/airlock/public/glass{ name = "Central Access" @@ -33051,6 +33042,33 @@ icon_state = "yellow" }, /area/engineering/mechanic_workshop) +"fEb" = ( +/obj/item/flash, +/obj/item/extraction_pack, +/obj/item/cartridge/quartermaster{ + pixel_x = -3 + }, +/obj/item/cartridge/quartermaster{ + pixel_x = -1; + pixel_y = 7 + }, +/obj/item/cartridge/quartermaster{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/megaphone, +/obj/item/fulton_core, +/obj/structure/closet/secure_closet/quartermaster, +/obj/item/clipboard, +/obj/item/stamp/qm{ + pixel_y = 7 + }, +/obj/item/mining_voucher, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/qm) "fEh" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/drinkingglass{ @@ -33269,28 +33287,6 @@ "fGN" = ( /turf/simulated/wall, /area/crew_quarters/sleep) -"fGV" = ( -/obj/machinery/door/window{ - dir = 8; - name = "High-Risk Modules"; - req_access = list(20) - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/aiModule/oxygen, -/obj/item/aiModule/oneCrewMember, -/obj/item/aiModule/purge, -/obj/item/aiModule/antimov, -/obj/structure/table/glass, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/ai_upload) "fHe" = ( /obj/structure/cable/orange{ icon_state = "2-4" @@ -33804,6 +33800,15 @@ }, /turf/simulated/wall, /area/crew_quarters/locker) +"fQH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/landmark/event/lightsout, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners" + }, +/area/security/armory) "fQI" = ( /obj/structure/flora/ausbushes/lavendergrass, /obj/structure/closet/crate/freezer, @@ -34101,15 +34106,6 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/hallway/primary/fore) -"fWa" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/landmark/event/lightsout, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/armory) "fWe" = ( /obj/structure/cable/orange{ icon_state = "2-8" @@ -35042,6 +35038,17 @@ icon_state = "dark" }, /area/medical/morgue) +"giY" = ( +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/structure/table, +/obj/item/ai_module/reset, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "bcircuit" + }, +/area/turret_protected/ai_upload) "gji" = ( /turf/simulated/floor/wood/fancy/oak{ icon_state = "fancy-wood-oak-broken5" @@ -35679,17 +35686,6 @@ slowdown = -0.3 }, /area/hallway/spacebridge/scidock) -"gvY" = ( -/obj/machinery/ai_status_display{ - pixel_y = 32 - }, -/obj/structure/table, -/obj/item/aiModule/nanotrasen, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "bcircuit" - }, -/area/turret_protected/ai_upload) "gwk" = ( /obj/effect/landmark/start/brig_physician, /turf/simulated/floor/plasteel{ @@ -35861,23 +35857,6 @@ }, /turf/simulated/floor/plating, /area/civilian/vacantoffice) -"gyW" = ( -/obj/structure/sign/barber{ - pixel_y = -30 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutral" - }, -/area/hallway/primary/port/east) "gza" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -37123,6 +37102,15 @@ }, /turf/simulated/floor/engine, /area/toxins/mixing) +"gQl" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/maintenance/port) "gQs" = ( /obj/machinery/vending/coffee, /turf/simulated/floor/plating, @@ -37422,6 +37410,16 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/maintenance/engineering) +"gWo" = ( +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/primary/port/east) "gWs" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable/orange{ @@ -37450,6 +37448,13 @@ }, /turf/simulated/floor/wood/fancy/cherry, /area/quartermaster/office) +"gWG" = ( +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/hallway/primary/fore/west) "gWR" = ( /obj/item/reagent_containers/food/snacks/grown/banana{ pixel_x = -1; @@ -37841,29 +37846,6 @@ icon_state = "rampbottom" }, /area/gateway) -"hbk" = ( -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Lethal Bullets" - }, -/obj/item/ammo_box/magazine/enforcer/lethal{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/ammo_box/magazine/enforcer/lethal, -/obj/item/ammo_box/magazine/enforcer/lethal{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/ammo_box/magazine/enforcer/lethal{ - pixel_x = -6; - pixel_y = 6 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/armory) "hbo" = ( /obj/structure/rack, /obj/item/pickaxe, @@ -37981,6 +37963,17 @@ }, /turf/simulated/floor/plasteel, /area/hallway/secondary/exit) +"hcD" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/machinery/camera{ + c_tag = "Medbay Storage"; + dir = 10; + network = list("SS13","CMO") + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/cmostore) "hcG" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -38366,8 +38359,10 @@ }, /area/quartermaster/qm) "hkn" = ( -/obj/machinery/light{ - dir = 8 +/obj/machinery/station_map/directional/west, +/obj/machinery/camera{ + c_tag = "Brig Main Hall West 2"; + dir = 4 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -38446,6 +38441,21 @@ icon_state = "whiteblue" }, /area/medical/medbay) +"hlk" = ( +/obj/structure/rack, +/obj/item/storage/box/bodybags{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/bodybags{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/iv_bags, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/cmostore) "hlA" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -38770,6 +38780,10 @@ icon_state = "dark" }, /area/security/execution) +"hpo" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/port) "hpr" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -39741,6 +39755,18 @@ }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"hDQ" = ( +/obj/structure/table, +/obj/item/ai_module/crewsimov, +/obj/machinery/camera{ + c_tag = "AI Upload Chamber"; + dir = 4; + network = list("SS13","RD") + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) "hEi" = ( /obj/structure/fence, /obj/structure/cable/orange{ @@ -41210,33 +41236,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/security/processing) -"hXX" = ( -/obj/structure/rack, -/obj/item/grenade/barrier{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/grenade/barrier, -/obj/item/grenade/barrier{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/grenade/barrier{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/armory) "hYg" = ( /obj/structure/extinguisher_cabinet{ pixel_y = 28 @@ -41251,18 +41250,19 @@ icon_state = "red" }, /area/security/lobby) -"hYW" = ( -/turf/simulated/mineral/ancient, -/area/medical/paramedic) -"hZa" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +"hYT" = ( +/obj/machinery/suit_storage_unit/security, +/obj/effect/decal/warning_stripes/red, +/obj/structure/window/reinforced{ + dir = 8 }, -/obj/machinery/hologram/holopad, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/security/armory) +"hYW" = ( +/turf/simulated/mineral/ancient, +/area/medical/paramedic) "hZh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -41340,6 +41340,32 @@ icon_state = "darkblue" }, /area/bridge) +"iaj" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/storage/box/teargas, +/obj/item/storage/box/teargas{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/chem_grenade/teargas{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/chem_grenade/teargas{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "ial" = ( /obj/machinery/light/small{ dir = 1 @@ -41553,6 +41579,12 @@ /obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/plating, /area/hallway/primary/fore) +"iek" = ( +/obj/structure/closet/secure_closet/medical4, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/medical/surgery/north) "ien" = ( /obj/effect/decal/cleanable/blood/tracks, /turf/simulated/floor/grass, @@ -42414,12 +42446,6 @@ icon_state = "redfull" }, /area/security/seceqstorage) -"isY" = ( -/obj/structure/table/reinforced, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "itf" = ( /turf/simulated/mineral/ancient, /area/maintenance/starboard) @@ -42856,6 +42882,15 @@ icon_state = "yellow" }, /area/hallway/primary/central) +"iys" = ( +/obj/item/radio/intercom{ + dir = 1; + pixel_y = -29 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/fore) "iyz" = ( /obj/machinery/light, /obj/structure/cable{ @@ -43164,6 +43199,15 @@ }, /turf/simulated/floor/carpet/black, /area/bridge) +"iEg" = ( +/obj/machinery/flasher/portable, +/obj/machinery/flasher/portable, +/obj/machinery/flasher/portable, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/armory) "iEs" = ( /obj/structure/cable/orange{ icon_state = "2-4" @@ -43731,17 +43775,6 @@ icon_state = "asteroidplating" }, /area/maintenance/starboard) -"iNq" = ( -/obj/machinery/ai_status_display{ - pixel_y = 32 - }, -/obj/structure/table, -/obj/item/aiModule/reset, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "bcircuit" - }, -/area/turret_protected/ai_upload) "iNt" = ( /obj/machinery/firealarm{ dir = 8; @@ -43761,22 +43794,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/auxsolarstarboard) -"iNC" = ( -/obj/structure/table, -/obj/item/storage/box/gloves{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/masks, -/obj/item/reagent_containers/spray/cleaner/medical{ - desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; - name = "Surgery Cleaner" - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whiteblue" - }, -/area/medical/surgery/south) "iNE" = ( /obj/machinery/hologram/holopad, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -43881,6 +43898,11 @@ icon_state = "dark" }, /area/security/reception) +"iOG" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkredalt" + }, +/area/security/armory) "iOU" = ( /obj/structure/table/wood, /turf/simulated/floor/wood/fancy/oak, @@ -44095,6 +44117,16 @@ }, /turf/simulated/floor/carpet/royalblack, /area/ntrep) +"iRG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/maintenance/port) "iRM" = ( /obj/machinery/hologram/holopad, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -44232,6 +44264,13 @@ "iTF" = ( /turf/simulated/wall, /area/engineering/chiefs_office) +"iTN" = ( +/obj/machinery/flasher/portable, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/armory) "iTR" = ( /obj/structure/chair/sofa/corp/corner{ dir = 8 @@ -48167,6 +48206,12 @@ icon_state = "white" }, /area/toxins/mixing) +"kam" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredalt" + }, +/area/security/armory) "kas" = ( /turf/simulated/wall/r_wall/coated, /area/toxins/rdoffice) @@ -49049,6 +49094,16 @@ }, /turf/simulated/floor/plating, /area/hallway/primary/fore/east) +"kmk" = ( +/obj/effect/decal/warning_stripes/blue, +/obj/structure/sink/kitchen{ + pixel_y = 25 + }, +/obj/machinery/iv_drip, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery/north) "kmt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal, /obj/effect/landmark/start/atmospheric, @@ -49111,6 +49166,13 @@ }, /turf/simulated/floor/glass/reinforced, /area/maintenance/fsmaint3) +"knt" = ( +/obj/machinery/station_map/engineering/directional/east, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellow" + }, +/area/engineering/break_room) "knD" = ( /turf/simulated/floor/plasteel/airless{ icon_state = "solarpanel" @@ -49250,35 +49312,6 @@ icon_state = "dark" }, /area/toxins/lab) -"kqo" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/window{ - dir = 8; - name = "Secure Armory"; - req_access = list(1) - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/storage/lockbox/mindshield, -/obj/item/storage/box/trackimp, -/obj/item/storage/box/chemimp{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/item/lock_buster, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/armory) "kqs" = ( /turf/simulated/floor/plasteel{ icon_state = "darkbluecorners" @@ -50303,6 +50336,28 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/fitness) +"kEg" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/door/window{ + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/structure/window/reinforced, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/storage/lockbox/mindshield, +/obj/item/storage/box/chemimp{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/lock_buster, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "kEs" = ( /obj/structure/spacepoddoor{ dir = 4; @@ -50983,10 +51038,6 @@ icon_state = "neutral" }, /area/hallway/primary/port/south) -"kOk" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/civilian/barber) "kOr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -51122,6 +51173,13 @@ }, /turf/simulated/floor/plasteel, /area/quartermaster/office) +"kQl" = ( +/obj/machinery/suit_storage_unit/security, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "kQm" = ( /obj/structure/cable/orange{ icon_state = "2-8" @@ -52890,6 +52948,15 @@ /obj/effect/spawner/window/reinforced/plasma, /turf/simulated/floor/plating, /area/engineering/engine) +"loh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkredalt" + }, +/area/security/armory) "lop" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -54009,40 +54076,6 @@ icon_state = "neutral" }, /area/hallway/primary/port/south) -"lHu" = ( -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Magazines for SMG" - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/ammo_box/magazine/wt550m9, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = 4; - pixel_y = -4 - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/machinery/alarm{ - pixel_y = 26 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/armory) "lHw" = ( /obj/machinery/light/small{ dir = 1 @@ -54308,6 +54341,10 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, /area/maintenance/fsmaint3) +"lMc" = ( +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel, +/area/crew_quarters/locker) "lMf" = ( /obj/structure/table, /obj/item/cultivator, @@ -55093,6 +55130,29 @@ icon_state = "dark" }, /area/engineering/gravitygenerator) +"lWk" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/storage/box/barrier, +/obj/item/storage/box/barrier{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/barrier{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/barrier{ + pixel_x = 6; + pixel_y = -6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "lWo" = ( /obj/structure/cable{ icon_state = "1-8" @@ -55102,6 +55162,12 @@ icon_state = "neutral" }, /area/hallway/primary/central) +"lWr" = ( +/obj/machinery/station_map/directional/south, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/fore/west) "lWT" = ( /turf/simulated/wall, /area/hallway/secondary/garden) @@ -55794,11 +55860,6 @@ icon_state = "whitepurplecorner" }, /area/toxins/xenobiology) -"mfh" = ( -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "mfA" = ( /obj/structure/cable{ icon_state = "1-2" @@ -55927,36 +55988,6 @@ icon_state = "red" }, /area/security/lobby) -"mhb" = ( -/obj/structure/rack, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/head/helmet/alt, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/head/helmet/alt, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/head/helmet/alt, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/head/helmet/alt, -/obj/item/clothing/gloves/color/black/ballistic, -/obj/item/clothing/gloves/color/black/ballistic, -/obj/item/clothing/gloves/color/black/ballistic, -/obj/item/clothing/gloves/color/black/ballistic, -/obj/item/clothing/shoes/jackboots/armored, -/obj/item/clothing/shoes/jackboots/armored, -/obj/item/clothing/shoes/jackboots/armored, -/obj/item/clothing/shoes/jackboots/armored, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/armory) "mhs" = ( /obj/machinery/door/airlock/public/glass{ name = "Central Access" @@ -56309,17 +56340,6 @@ dir = 8 }, /area/quartermaster/miningdock) -"moY" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/machinery/light, -/obj/item/storage/belt/medical, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/regular, -/obj/item/reagent_containers/food/drinks/mug/med, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue" - }, -/area/medical/cmostore) "mpa" = ( /obj/machinery/light/small, /turf/simulated/floor/plasteel{ @@ -58006,6 +58026,16 @@ /obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/floor/plating, /area/hallway/primary/central) +"mMO" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Armory_South_East"; + location = "Armory_North" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredcorners" + }, +/area/security/armory) "mMT" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -59602,6 +59632,15 @@ }, /turf/simulated/floor/engine/o2, /area/atmos) +"nkU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/hallway/primary/starboard/south) "nle" = ( /obj/structure/girder, /obj/structure/grille, @@ -60237,18 +60276,6 @@ icon_state = "asteroidplating" }, /area/maintenance/apmaint2) -"ntb" = ( -/obj/structure/table, -/obj/item/aiModule/crewsimov, -/obj/machinery/camera{ - c_tag = "AI Upload Chamber"; - dir = 4; - network = list("SS13","RD") - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/ai_upload) "ntg" = ( /obj/machinery/atm{ pixel_y = -32 @@ -60343,6 +60370,32 @@ icon_state = "darkred" }, /area/security/prison/cell_block/A) +"nuR" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/storage/box/flashbangs, +/obj/item/storage/box/flashbangs{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/flashbang{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/grenade/flashbang{ + pixel_x = 6; + pixel_y = -6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "nuY" = ( /obj/structure/cable{ icon_state = "4-8" @@ -60835,6 +60888,16 @@ /obj/structure/closet/wardrobe/xenos, /turf/simulated/floor/shuttle, /area/shuttle/arrival/station) +"nBh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance{ + locked = 1; + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/port) "nBn" = ( /obj/machinery/firealarm{ dir = 4; @@ -61870,6 +61933,16 @@ icon_state = "dark" }, /area/engineering/break_room) +"nOw" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Armory_South"; + location = "Armory_South_East" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkredcorners" + }, +/area/security/armory) "nOF" = ( /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -61951,18 +62024,6 @@ icon_state = "neutral" }, /area/hallway/primary/port/south) -"nQC" = ( -/obj/machinery/newscaster{ - dir = 8; - pixel_x = 28 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "nQM" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/extinguisher_cabinet{ @@ -62749,6 +62810,28 @@ icon_state = "whiteblue" }, /area/medical/surgery/theatre) +"obe" = ( +/obj/machinery/door/window{ + dir = 8; + name = "High-Risk Modules"; + req_access = list(20) + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/ai_module/oxygen, +/obj/item/ai_module/one_crew_member, +/obj/item/ai_module/purge, +/obj/item/ai_module/antimov, +/obj/structure/table/glass, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) "obh" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -62776,6 +62859,12 @@ /area/security/detectives_office) "obz" = ( /obj/machinery/cooker/deepfryer, +/obj/machinery/requests_console{ + department = "Kitchen"; + departmentType = 2; + name = "Kitchen Requests Console"; + pixel_x = -30 + }, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -62825,6 +62914,12 @@ dir = 5 }, /obj/item/twohanded/required/kirbyplants, +/obj/machinery/requests_console{ + department = "Chapel"; + departmentType = 2; + name = "Chapel Requests Console"; + pixel_x = -30 + }, /turf/simulated/floor/carpet/black, /area/chapel/office) "ocC" = ( @@ -64320,6 +64415,17 @@ /obj/effect/decal/cleanable/blood/old, /turf/simulated/floor/plasteel/freezer, /area/crew_quarters/kitchen) +"oAt" = ( +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/structure/table, +/obj/item/ai_module/nanotrasen, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "bcircuit" + }, +/area/turret_protected/ai_upload) "oAv" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ @@ -64568,6 +64674,13 @@ }, /turf/simulated/floor/plating, /area/hallway/primary/port/east) +"oDy" = ( +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/turret_protected/aisat_interior) "oDz" = ( /obj/machinery/camera{ c_tag = "Medical SMES"; @@ -64585,6 +64698,12 @@ /area/maintenance/atmospherics) "oDP" = ( /obj/structure/closet/secure_closet/security, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + name = "Security Requests Console"; + pixel_y = 30 + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "darkred" @@ -64831,9 +64950,19 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/bar) +"oHi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkredcorners" + }, +/area/security/armory) "oHw" = ( /obj/machinery/requests_console{ - department = "Medbay"; + department = "Genetics"; departmentType = 1; name = "Genetics Requests Console"; pixel_y = 30 @@ -64961,6 +65090,23 @@ /obj/item/pickaxe/emergency, /turf/simulated/floor/plating/asteroid/ancient, /area/maintenance/apmaint2) +"oJO" = ( +/obj/structure/rack/gunrack, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/gun/energy/laser{ + pixel_x = -6 + }, +/obj/item/gun/energy/laser, +/obj/item/gun/energy/laser{ + pixel_x = 6 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "oJV" = ( /obj/machinery/light{ dir = 1 @@ -65204,9 +65350,6 @@ icon_state = "white" }, /area/medical/medbreak) -"oOg" = ( -/turf/simulated/wall, -/area/civilian/barber) "oOu" = ( /obj/structure/morgue{ dir = 8 @@ -65216,6 +65359,12 @@ icon_state = "dark" }, /area/medical/morgue) +"oOv" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/port) "oOD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/turf_decal/stripes/line, @@ -65287,6 +65436,19 @@ icon_state = "white" }, /area/toxins/mixing) +"oPd" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/machinery/station_map/directional/east, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/hallway/primary/port/south) "oPr" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -65390,6 +65552,15 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central) +"oQW" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkredalt" + }, +/area/security/armory) "oQY" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -66830,25 +67001,6 @@ icon_state = "neutralcorner" }, /area/hallway/primary/port/south) -"pkO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/machinery/computer/borgupload{ - dir = 1 - }, -/obj/machinery/door/window/eastright{ - dir = 1; - name = "Console Access"; - req_access = list(16) - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/ai_upload) "pkP" = ( /obj/structure/cable{ icon_state = "0-8" @@ -69656,6 +69808,31 @@ }, /turf/simulated/floor/plating, /area/maintenance/port) +"pZE" = ( +/obj/structure/table, +/obj/item/vending_refill/custom{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/vending_refill/custom{ + pixel_x = -2; + pixel_y = 3 + }, +/obj/structure/cable/orange{ + icon_state = "0-4" + }, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -24 + }, +/obj/item/multitool, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/storage/primary) "pZK" = ( /obj/machinery/computer/scan_consolenew{ dir = 8 @@ -69776,6 +69953,16 @@ icon_state = "neutral" }, /area/hallway/primary/port/east) +"qbW" = ( +/obj/structure/table, +/obj/structure/sign/kiddieplaque{ + pixel_x = 32 + }, +/obj/item/ai_module/corp, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) "qbZ" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 @@ -70281,28 +70468,6 @@ icon_state = "darkyellow" }, /area/engineering/engine/smes) -"qhx" = ( -/obj/item/radio/intercom{ - pixel_y = 23 - }, -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Security SMG's" - }, -/obj/item/gun/projectile/automatic/wt550{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/projectile/automatic/wt550, -/obj/item/gun/projectile/automatic/wt550{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/armory) "qhP" = ( /obj/machinery/alarm{ dir = 1; @@ -70375,6 +70540,17 @@ }, /turf/simulated/floor/carpet/orange, /area/engineering/chiefs_office) +"qiR" = ( +/obj/structure/table, +/obj/item/reagent_containers/spray/cleaner/medical{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/surgery/north) "qjn" = ( /obj/machinery/computer/operating{ dir = 8 @@ -70411,6 +70587,17 @@ icon_state = "neutralfull" }, /area/hallway/primary/starboard/north) +"qjH" = ( +/obj/structure/table, +/obj/item/reagent_containers/spray/cleaner/medical{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/surgery/south) "qka" = ( /obj/effect/landmark/start/ai, /obj/item/radio/intercom{ @@ -70692,15 +70879,6 @@ icon_state = "whiteyellow" }, /area/assembly/chargebay) -"qnn" = ( -/obj/effect/decal/warning_stripes/blue, -/obj/structure/sink/kitchen{ - pixel_y = 25 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/surgery/north) "qns" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -71326,6 +71504,14 @@ }, /turf/simulated/floor/carpet, /area/lawoffice) +"qxg" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredalt" + }, +/area/security/armory) "qxj" = ( /obj/structure/table, /obj/item/radio/sec{ @@ -71980,6 +72166,18 @@ icon_state = "darkyellow" }, /area/engineering/chiefs_office) +"qGo" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green{ + on = 0; + pixel_x = -6; + pixel_y = 14 + }, +/obj/item/storage/fancy/cigarettes/dromedaryco, +/obj/item/clothing/glasses/sunglasses, +/obj/item/lighter/zippo/detective, +/turf/simulated/floor/carpet, +/area/security/detectives_office) "qGz" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ dir = 1; @@ -72328,6 +72526,12 @@ icon_state = "darkred" }, /area/security/reception) +"qLP" = ( +/obj/structure/table, +/obj/item/aicard, +/obj/item/ai_module/reset, +/turf/simulated/floor/plating, +/area/storage/tech) "qMi" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, @@ -72366,22 +72570,6 @@ icon_state = "darkbrown" }, /area/quartermaster/office) -"qMZ" = ( -/obj/structure/rack, -/obj/item/storage/box/bodybags{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/bodybags{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/rxglasses, -/obj/item/storage/box/iv_bags, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue" - }, -/area/medical/cmostore) "qNh" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -73156,6 +73344,33 @@ }, /turf/simulated/floor/carpet, /area/hallway/primary/port/east) +"qYf" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/shield/riot{ + pixel_x = -6; + pixel_y = -6 + }, +/obj/item/shield/riot{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/shield/riot, +/obj/item/shield/riot{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "qYD" = ( /obj/item/pen, /obj/item/storage/firstaid/regular, @@ -73846,15 +74061,6 @@ icon_state = "dark" }, /area/engineering/gravitygenerator) -"rki" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/item/storage/belt/medical, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/regular, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue" - }, -/area/medical/cmostore) "rkt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -74011,14 +74217,6 @@ icon_state = "dark" }, /area/security/prison/cell_block/A) -"rnQ" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/armory) "rnT" = ( /obj/structure/chair/stool/bar{ dir = 4 @@ -74349,6 +74547,7 @@ /area/hallway/primary/aft/west) "rrT" = ( /obj/structure/disposalpipe/segment, +/obj/machinery/station_map/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "blue" @@ -74478,41 +74677,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/fsmaint3) -"rud" = ( -/obj/structure/rack, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/item/ammo_box/shotgun{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/item/ammo_box/shotgun/buck{ - pixel_y = 3 - }, -/obj/item/ammo_box/shotgun/buck, -/obj/item/ammo_box/shotgun/beanbag, -/obj/item/ammo_box/shotgun/beanbag{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/ammo_box/shotgun/tranquilizer{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Lethal Bullets" - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/armory) "rug" = ( /obj/structure/disposalpipe/junction/reversed{ dir = 8 @@ -74996,6 +75160,14 @@ icon_state = "blue" }, /area/hallway/primary/fore) +"rAT" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/station_map/directional/east, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/hallway/secondary/entry/north) "rAV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -76247,16 +76419,6 @@ }, /turf/simulated/floor/plating, /area/magistrateoffice) -"rSN" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/obj/structure/dresser, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "rTo" = ( /obj/machinery/portable_atmospherics/canister/carbon_dioxide, /obj/machinery/light{ @@ -77020,6 +77182,17 @@ icon_state = "darkbrown" }, /area/quartermaster/office) +"scK" = ( +/obj/machinery/dye_generator, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 24 + }, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/turf/simulated/floor/plating, +/area/maintenance/port) "scU" = ( /obj/structure/cable{ icon_state = "1-2" @@ -77519,6 +77692,31 @@ icon_state = "asteroidplating" }, /area/maintenance/port2) +"sky" = ( +/obj/structure/rack, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/item/storage/backpack/duffel/security/bulletproof_armory{ + pixel_x = -6; + pixel_y = -3 + }, +/obj/item/storage/backpack/duffel/security/bulletproof_armory{ + pixel_x = -3 + }, +/obj/item/storage/backpack/duffel/security/bulletproof_armory{ + pixel_y = 3 + }, +/obj/item/storage/backpack/duffel/security/bulletproof_armory{ + pixel_x = 3; + pixel_y = 6 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "skA" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/plasteel{ @@ -78191,6 +78389,16 @@ icon_state = "asteroidplating" }, /area/quartermaster/office) +"svi" = ( +/obj/structure/cable/orange{ + icon_state = "1-2" + }, +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/hallway/primary/port/south) "svk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -78330,9 +78538,9 @@ /area/medical/cmo) "sxu" = ( /obj/machinery/requests_console{ - department = "Science"; + department = "Research"; departmentType = 2; - name = "Science Requests Console"; + name = "Research Requests Console"; pixel_x = -30 }, /obj/machinery/r_n_d/destructive_analyzer, @@ -78340,16 +78548,6 @@ icon_state = "dark" }, /area/toxins/lab) -"sxv" = ( -/obj/structure/table, -/obj/structure/sign/kiddieplaque{ - pixel_x = 32 - }, -/obj/item/aiModule/corp, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/ai_upload) "sxw" = ( /obj/effect/decal/cleanable/blood/tracks, /turf/simulated/floor/plating/asteroid/ancient, @@ -78639,17 +78837,6 @@ icon_state = "blue" }, /area/hallway/primary/fore) -"sDC" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green{ - on = 0; - pixel_x = -6; - pixel_y = 14 - }, -/obj/item/storage/fancy/cigarettes/dromedaryco, -/obj/item/clothing/glasses/sunglasses, -/turf/simulated/floor/carpet, -/area/security/detectives_office) "sDE" = ( /obj/machinery/conveyor{ dir = 8; @@ -78945,16 +79132,6 @@ icon_state = "whitegreen" }, /area/medical/virology/lab) -"sIL" = ( -/obj/structure/table/reinforced, -/obj/machinery/light_switch{ - dir = 1; - pixel_y = -24 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "sJe" = ( /obj/structure/cable{ icon_state = "1-2" @@ -79374,6 +79551,16 @@ /obj/effect/spawner/random_spawners/blood_5, /turf/simulated/floor/plating, /area/turret_protected/aisat_interior/secondary) +"sOt" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/maintenance/port) "sOu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -80055,6 +80242,20 @@ icon_state = "dark" }, /area/atmos) +"sZH" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/rack/gunrack, +/obj/item/gun/energy/gun{ + pixel_x = -6 + }, +/obj/item/gun/energy/gun, +/obj/item/gun/energy/gun{ + pixel_x = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "tao" = ( /obj/machinery/camera{ c_tag = "Atmospherics Nitrogen Tank"; @@ -80337,27 +80538,6 @@ icon_state = "neutralfull" }, /area/hallway/primary/aft/east) -"teI" = ( -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Magazines for SP-91-RC"; - req_access = list(1) - }, -/obj/item/ammo_box/magazine/sp91rc{ - pixel_x = 8 - }, -/obj/item/ammo_box/magazine/sp91rc{ - pixel_x = 4 - }, -/obj/item/ammo_box/magazine/sp91rc, -/obj/item/ammo_box/magazine/sp91rc{ - pixel_x = -4 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/armory) "teL" = ( /obj/machinery/hologram/holopad, /obj/structure/cable{ @@ -80431,6 +80611,28 @@ icon_state = "dark" }, /area/engineering/gravitygenerator) +"tfE" = ( +/obj/structure/rack, +/obj/structure/window/reinforced, +/obj/item/storage/backpack/duffel/security/riot_armory{ + pixel_x = -6; + pixel_y = -3 + }, +/obj/item/storage/backpack/duffel/security/riot_armory{ + pixel_x = -3 + }, +/obj/item/storage/backpack/duffel/security/riot_armory{ + pixel_y = 3 + }, +/obj/item/storage/backpack/duffel/security/riot_armory{ + pixel_x = 3; + pixel_y = 6 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "tfI" = ( /obj/item/target, /turf/simulated/floor/plasteel/airless, @@ -80495,12 +80697,6 @@ icon_state = "neutral" }, /area/hallway/secondary/entry/south) -"tgA" = ( -/obj/machinery/iv_drip, -/turf/simulated/floor/plasteel{ - icon_state = "darkblue" - }, -/area/medical/surgery/south) "tgI" = ( /obj/structure/lattice, /turf/space, @@ -82324,6 +82520,12 @@ /obj/item/clothing/glasses/welding, /obj/item/clothing/glasses/welding, /obj/item/clothing/glasses/welding, +/obj/machinery/requests_console{ + department = "Engineering"; + departmentType = 3; + name = "Engineering Requests Console"; + pixel_y = 30 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -82573,6 +82775,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, +/obj/machinery/station_map/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkgreen" @@ -83094,15 +83297,6 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/hallway/spacebridge/engmed) -"tRq" = ( -/obj/effect/decal/warning_stripes/blue, -/obj/structure/sink/kitchen{ - pixel_y = 25 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/surgery/south) "tRr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -83390,6 +83584,18 @@ }, /turf/simulated/floor/carpet/green, /area/library/game_zone) +"tVe" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/flasher/portable, +/obj/machinery/flasher/portable, +/obj/machinery/flasher/portable, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/armory) "tVf" = ( /obj/machinery/light, /obj/machinery/firealarm{ @@ -84394,6 +84600,11 @@ /turf/simulated/floor/plating, /area/maintenance/engineering) "umA" = ( +/obj/machinery/requests_console{ + department = "Locker Room"; + name = "Locker Room Requests Console"; + pixel_y = -30 + }, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -84421,6 +84632,15 @@ icon_state = "neutral" }, /area/hallway/primary/central) +"umU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) "umV" = ( /obj/machinery/door/airlock/maintenance{ name = "Fore Asteroid Maintenance Access"; @@ -84617,21 +84837,6 @@ "uqz" = ( /turf/simulated/wall, /area/security/main) -"uqB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/airlock/public/glass{ - name = "Barber Shop" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/orange{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "uqM" = ( /obj/structure/sign/security{ pixel_x = -32 @@ -84839,9 +85044,8 @@ dir = 4; pixel_x = -24 }, -/obj/machinery/camera{ - c_tag = "Brig Main Hall West 2"; - dir = 4 +/obj/machinery/light{ + dir = 8 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -84949,6 +85153,13 @@ }, /turf/simulated/floor/plasteel/white, /area/toxins/xenobiology) +"uvg" = ( +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/hallway/primary/port/north) "uvp" = ( /obj/machinery/camera{ c_tag = "SM East"; @@ -85627,13 +85838,6 @@ icon_state = "whitepurple" }, /area/toxins/lab) -"uGo" = ( -/obj/machinery/suit_storage_unit/security, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/armory) "uGA" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -86051,23 +86255,6 @@ /obj/effect/landmark/start/civilian, /turf/simulated/floor/carpet, /area/crew_quarters/locker) -"uMQ" = ( -/obj/structure/table, -/obj/structure/cable/orange{ - icon_state = "0-4" - }, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil, -/obj/machinery/power/apc{ - dir = 8; - pixel_x = -24 - }, -/obj/item/multitool, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "neutral" - }, -/area/storage/primary) "uNh" = ( /obj/machinery/shower{ dir = 4 @@ -86087,14 +86274,6 @@ "uNn" = ( /turf/simulated/floor/plating, /area/maintenance/disposal/east) -"uNw" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "uNx" = ( /obj/structure/extinguisher_cabinet{ pixel_x = 24 @@ -86747,6 +86926,12 @@ icon_state = "whitepurplecorner" }, /area/medical/genetics) +"uYJ" = ( +/obj/structure/closet/secure_closet/medical4, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/medical/surgery/south) "uYU" = ( /obj/structure/chair/sofa/corp{ dir = 1 @@ -87499,41 +87684,6 @@ icon_state = "brown" }, /area/quartermaster/qm) -"vnx" = ( -/obj/structure/rack, -/obj/item/clothing/head/helmet/riot, -/obj/item/clothing/head/helmet/riot, -/obj/item/clothing/head/helmet/riot, -/obj/structure/window/reinforced, -/obj/item/clothing/suit/armor/riot, -/obj/item/clothing/suit/armor/riot, -/obj/item/clothing/suit/armor/riot, -/obj/item/shield/riot, -/obj/item/shield/riot, -/obj/item/shield/riot, -/obj/item/clothing/suit/armor/riot, -/obj/item/shield/riot, -/obj/item/clothing/head/helmet/riot, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/door/window{ - dir = 1; - name = "Secure Armory"; - req_access = list(1) - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/armory) "vnM" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -87628,6 +87778,12 @@ /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/grass, /area/hydroponics) +"voY" = ( +/obj/structure/closet/secure_closet/medical3, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/cmostore) "vpg" = ( /turf/simulated/floor/plating/asteroid/ancient, /area/maintenance/fore) @@ -87813,6 +87969,19 @@ icon_state = "whitegreen" }, /area/medical/virology/lab) +"vsa" = ( +/obj/machinery/power/apc{ + pixel_y = -24 + }, +/obj/structure/cable/orange, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/maintenance/port) "vsg" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging, /obj/machinery/atmospherics/air_sensor{ @@ -88206,15 +88375,6 @@ }, /turf/simulated/floor/carpet/red, /area/crew_quarters/courtroom) -"vxY" = ( -/obj/structure/chair/barber{ - dir = 8 - }, -/obj/effect/landmark/start/barber, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "vyy" = ( /obj/machinery/newscaster{ dir = 4; @@ -88231,6 +88391,7 @@ /area/hallway/primary/port/north) "vyB" = ( /obj/machinery/requests_console{ + department = "Detective"; name = "Detective Requests Console"; pixel_y = -30 }, @@ -88315,18 +88476,6 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central) -"vzG" = ( -/obj/structure/cable/orange{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "vzX" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -89072,19 +89221,6 @@ icon_state = "red" }, /area/hallway/secondary/entry) -"vLS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/structure/cable/orange{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "vLV" = ( /obj/effect/spawner/airlock/e_to_w, /turf/simulated/wall, @@ -90576,6 +90712,20 @@ /obj/machinery/photocopier, /turf/simulated/floor/carpet, /area/security/detectives_office) +"wgf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "wgj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -90968,18 +91118,6 @@ color = "gray" }, /area/crew_quarters/bar) -"wlC" = ( -/obj/machinery/power/apc{ - pixel_y = -24 - }, -/obj/structure/cable/orange, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "wlV" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -91018,15 +91156,6 @@ /obj/item/toy/figure/captain, /turf/simulated/floor/carpet/black, /area/crew_quarters/captain) -"wmA" = ( -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "wmE" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -91616,6 +91745,14 @@ icon_state = "dark" }, /area/security/execution) +"wuA" = ( +/obj/structure/table/reinforced, +/obj/item/razor, +/obj/structure/mirror{ + pixel_x = -27 + }, +/turf/simulated/floor/plating, +/area/maintenance/port) "wuC" = ( /obj/structure/chair/office/dark{ dir = 1 @@ -92725,6 +92862,25 @@ /obj/structure/girder, /turf/simulated/floor/plating, /area/maintenance/fsmaint4) +"wKZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/computer/aiupload/cyborg{ + dir = 1 + }, +/obj/machinery/door/window/eastright{ + dir = 1; + name = "Console Access"; + req_access = list(16) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) "wLe" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -93732,6 +93888,7 @@ }, /area/maintenance/apmaint2) "xaI" = ( +/obj/machinery/station_map/directional/east, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "darkpurple" @@ -94084,16 +94241,6 @@ /obj/structure/grille/broken, /turf/simulated/floor/plating/asteroid/ancient, /area/maintenance/engineering) -"xgR" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/flasher/portable, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/armory) "xhc" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -94656,30 +94803,6 @@ /obj/machinery/ai_status_display, /turf/simulated/wall/r_wall, /area/toxins/rdoffice) -"xpT" = ( -/obj/machinery/door/window{ - base_state = "right"; - icon_state = "right"; - name = "Core Modules"; - req_access = list(20) - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/aiModule/crewsimov, -/obj/item/aiModule/freeformcore, -/obj/item/aiModule/corp, -/obj/item/aiModule/paladin, -/obj/item/aiModule/robocop, -/obj/structure/table/glass, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/ai_upload) "xqm" = ( /obj/machinery/vending/cola, /turf/simulated/floor/plasteel, @@ -94918,6 +95041,15 @@ /obj/item/coin/clown, /turf/simulated/floor/plating, /area/clownoffice/secret) +"xuf" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/maintenance/port) "xut" = ( /turf/simulated/floor/carpet/blue, /area/hallway/secondary/garden) @@ -95066,6 +95198,14 @@ }, /turf/simulated/floor/plating, /area/medical/paramedic) +"xwA" = ( +/obj/structure/cable/orange{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/port) "xwI" = ( /turf/simulated/floor/engine{ slowdown = -0.3 @@ -95622,6 +95762,39 @@ icon_state = "whitepurple" }, /area/toxins/mixing) +"xDQ" = ( +/obj/machinery/light, +/obj/item/reagent_containers/food/drinks/mug/med, +/obj/structure/closet/secure_closet/medical3, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/cmostore) +"xDT" = ( +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Security SMG's" + }, +/obj/item/gun/projectile/automatic/wt550{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/projectile/automatic/wt550, +/obj/item/gun/projectile/automatic/wt550{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_y = 23 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) "xEa" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/structure/cable{ @@ -96050,26 +96223,6 @@ }, /turf/simulated/floor/engine, /area/engineering/engine) -"xJl" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/obj/structure/rack, -/obj/item/gun/energy/ionrifle, -/obj/item/clothing/suit/armor/laserproof, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/window{ - dir = 1; - name = "Secure Armory"; - req_access = list(1) - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/armory) "xJn" = ( /obj/effect/turf_decal/stripes/line{ dir = 10; @@ -96782,6 +96935,12 @@ /obj/structure/disposalpipe/trunk{ dir = 8 }, +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science Requests Console"; + pixel_y = 30 + }, /turf/simulated/floor/plasteel, /area/toxins/launch) "xTW" = ( @@ -97008,9 +97167,6 @@ icon_state = "darkyellow" }, /area/engineering/mechanic_workshop/hangar) -"xYM" = ( -/turf/space, -/area/security/armory) "xYT" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -112555,7 +112711,7 @@ boG bqe brA aYV -uMQ +pZE vka brA xIM @@ -113261,7 +113417,7 @@ xrZ xrZ xrZ xrZ -xrZ +eud bsG dxo wIG @@ -114056,7 +114212,7 @@ dID mtw iKl oQL -pjO +gWG jho fLz xfq @@ -114082,7 +114238,7 @@ qxR vyy fhI dYb -efz +uvg oBl efz pCw @@ -114107,7 +114263,7 @@ efz ggp xAB mit -gTC +svi uEp gTC lEW @@ -114160,7 +114316,7 @@ qZI lXC qZI fgq -qZI +esQ ixN uRf hgL @@ -114646,7 +114802,7 @@ sgM sNt sgM sgM -poP +oPd akd kPY xem @@ -114867,12 +115023,12 @@ fGN xsr kzm nXl -oOg -oOg -kOk -oOg -kOk -oOg +pXy +pXy +pXy +pXy +pXy +pXy aZZ oGW aZZ @@ -114903,7 +115059,7 @@ tWL cMy lJR uQa -eud +btd bZj lZN lZN @@ -115124,12 +115280,12 @@ fGN tmw jBM txu -kOk -dcy -isY -aFA -sIL -oOg +pXy +jee +hpo +wuA +hpo +pXy dNF wlu liD @@ -115380,13 +115536,13 @@ pYw rVw tmw jBM -gyW -oOg -uNw -mfh -vxY -beN -oOg +txu +pXy +oOv +jee +egH +agz +pXy gCy bTu cpP @@ -115638,12 +115794,12 @@ rVw cSb aTi pRd -uqB -vLS -bkY -vzG -wlC -oOg +nBh +eyC +xwA +iRG +vsa +pXy xUc ogY xLH @@ -115895,12 +116051,12 @@ rVw tmw jBM kwE -oOg -bjo -rSN -nQC -wmA -oOg +pXy +scK +sOt +gQl +xuf +pXy dHb iio kSA @@ -116484,7 +116640,7 @@ uMr uMr mqz cuD -wmq +ayw hwB hwB xnx @@ -117658,7 +117814,7 @@ dmS cEU dib glb -sDC +qGo odS wfN tPa @@ -118719,7 +118875,7 @@ rEg kDV tfK bEM -tmw +gWo jBM nko rZl @@ -119440,7 +119596,7 @@ rPn eqo ugO npO -ekN +wgf bBH sMq roY @@ -119690,14 +119846,14 @@ qYY hri rIP bBH -qhx +xDT ioE -fWa -hXX -cgG -bGA +fQH +dSb +dSb +oHi ioE -xJl +dWW bBH eXi ljF @@ -119947,14 +120103,14 @@ bgr euE rFa bBH -lHu +chw ioE -bVm -mhb -cgL -hZa +bqI +sky +nuR +loh ioE -vnx +akW bBH lii vmO @@ -120204,14 +120360,14 @@ wxl wOD nQM bBH -bBX +kQl ioE -rnQ -hbk -cgR -cjk +qxg +tfE +lWk +oQW ioE -uGo +hYT bBH kMh nuI @@ -120461,14 +120617,14 @@ bDn psy wOD dkF -rud +eNg ioE -aUW +iOG +qYf +iaj +fcB ioE -aVT -cjA -ioE -uGo +eNg bBH lkp ljr @@ -120718,14 +120874,14 @@ brk psy aBy bBH -aOM -xgR -kqo -beX -teI -uGo -cov -aOM +eZu +ioE +mMO +kam +kam +nOw +ioE +sZH bBH lii rfX @@ -120975,14 +121131,14 @@ njM pCS psy bBH -bBH -bBH -bBH -bBH -bBH -bBH -bBH -bBH +aqq +ioE +ioE +ioE +ioE +ioE +ioE +oJO bBH lii nBo @@ -121232,14 +121388,14 @@ myx wOD tSH bBH -xYM -xYM -xYM -xYM -xYM -xYM -xYM -xYM +iEg +tVe +dlB +fnb +kEg +alQ +aGL +iTN bBH jLQ udM @@ -121748,7 +121904,7 @@ snc whx bLw atM -dre +bya aKM cFN cFN @@ -122022,7 +122178,7 @@ kzf kzf kZP chV -iVn +lWr dzk anv hKH @@ -122889,8 +123045,8 @@ ccW ful ful bHT -ntb -xpT +hDQ +cTj knG ful ful @@ -123145,7 +123301,7 @@ rWw ccW ful ful -iNq +giY cfd pKY cfd @@ -123285,7 +123441,7 @@ gHf kXu aqC bgD -qSK +lMc btY qSK qSK @@ -123661,7 +123817,7 @@ ful ful joJ wpc -pkO +wKZ qVA vCk nHm @@ -124173,7 +124329,7 @@ ccW ccW ful ful -gvY +oAt cfd mMI cfd @@ -124431,8 +124587,8 @@ ccW ful ful qNN -sxv -fGV +qbW +obe knG ful ful @@ -128961,7 +129117,7 @@ fxB vzX pXH vuY -pok +iys gzv gzv gzv @@ -130246,7 +130402,7 @@ lqC uuv xCd vuY -pok +tPr gzv qKH eXA @@ -134635,7 +134791,7 @@ xbO eDx cSf dqI -dyM +qLP baR xfN vQx @@ -135949,7 +136105,7 @@ bRs jiO pTV jiO -bRs +knt soV cxf dPc @@ -137442,7 +137598,7 @@ dkd aKp qSe vuY -pok +cYD aKp hna ier @@ -139100,7 +139256,7 @@ uSP uSP uSP uSP -iQu +cHU xbJ lQB kjb @@ -141018,7 +141174,7 @@ gcR aXd gms oyt -kQa +oDy aNW kQa bwG @@ -142626,7 +142782,7 @@ sMA vfk qUp kNa -vfk +nkU iHd fdV ppR @@ -143191,7 +143347,7 @@ eJl eJl eJl qcH -eJl +rAT eJl oTv eJl @@ -146213,7 +146369,7 @@ wnM bhp ukY tRA -bjK +qiR vcD oXt bmX @@ -146759,7 +146915,7 @@ dwe iQO yfZ xNt -cGL +auk yfZ cvI gFg @@ -147016,7 +147172,7 @@ rwg ddd yfZ vrs -moY +xDQ yfZ vHH gFg @@ -147201,7 +147357,7 @@ tLh aRC pzy uyz -aTm +fEb iIK fZf rMQ @@ -147241,7 +147397,7 @@ jkR bhp xDm tRA -aQo +iek bkI cOM cPa @@ -147273,7 +147429,7 @@ kRb rwF dRx eNa -azO +hcD yfZ gFg vHH @@ -147530,7 +147686,7 @@ wvp cEn pFv wvp -rki +voY yfZ gSQ vHH @@ -147755,7 +147911,7 @@ igB oGM gPm tRA -qnn +kmk eLa sfA nMd @@ -147988,7 +148144,7 @@ rSB mDL kGJ sNv -lGx +dZI ivo lGx lGx @@ -148269,7 +148425,7 @@ cjN qOq qOq lFM -tRq +atf ojv ycl iZq @@ -148557,7 +148713,7 @@ nYm kzM dBM hoX -qMZ +hlk yfZ yfZ gSQ @@ -148783,7 +148939,7 @@ xuQ bjt xTH bZu -tgA +uYJ rRb pcR syk @@ -149612,7 +149768,7 @@ ceQ lvj qpe cdT -bTq +umU jvl ceO ceO @@ -149811,7 +149967,7 @@ yeq nJW coI bZu -iNC +qjH tGS cLe bkO diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 7730bec2a811..9ee421dc5487 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -132,28 +132,6 @@ icon_state = "dark" }, /area/security/securearmory) -"acj" = ( -/obj/structure/closet/secure_closet/security, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Brig Security Equipment Lockers"; - dir = 4 - }, -/obj/item/clothing/mask/balaclava, -/obj/effect/decal/warning_stripes/red, -/obj/machinery/status_display{ - layer = 4; - pixel_x = -32 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/main) "aco" = ( /obj/structure/target_stake, /obj/effect/decal/warning_stripes/northwest, @@ -177,20 +155,6 @@ /obj/effect/decal/warning_stripes/northeast, /turf/simulated/floor/plasteel, /area/security/range) -"acv" = ( -/obj/structure/closet/secure_closet/security, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/item/clothing/mask/balaclava, -/obj/effect/decal/warning_stripes/red, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/main) "acw" = ( /obj/structure/cable{ icon_state = "1-2" @@ -227,33 +191,6 @@ icon_state = "darkredfull" }, /area/security/main) -"acB" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/grenade/barrier{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/grenade/barrier, -/obj/item/grenade/barrier{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/grenade/barrier{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "acD" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ @@ -331,58 +268,12 @@ }, /turf/simulated/floor/plating, /area/maintenance/apmaint) -"acO" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/window{ - dir = 8; - name = "Secure Armory"; - req_access = list(1) - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/storage/lockbox/spy_kit, -/obj/item/storage/lockbox/mindshield, -/obj/item/storage/box/trackimp, -/obj/item/storage/box/chemimp{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/item/lock_buster, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "acP" = ( /obj/effect/decal/warning_stripes/red/hollow, /turf/simulated/floor/plasteel{ icon_state = "redfull" }, /area/security/range) -"acR" = ( -/obj/machinery/flasher/portable, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "vault" - }, -/area/security/securearmory) -"acS" = ( -/obj/effect/decal/warning_stripes/red/hollow, -/obj/machinery/flasher/portable, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "vault" - }, -/area/security/securearmory) "acV" = ( /obj/structure/table/reinforced, /obj/item/folder/red{ @@ -395,13 +286,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel, /area/security/main) -"acW" = ( -/obj/structure/dispenser/oxygen, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/securearmory) "acX" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/emcloset, @@ -410,12 +294,6 @@ }, /turf/simulated/floor/plasteel, /area/security/prisonershuttle) -"acY" = ( -/obj/machinery/suit_storage_unit/security, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "acZ" = ( /obj/structure/rack, /obj/machinery/light{ @@ -431,15 +309,6 @@ icon_state = "whiteblue" }, /area/security/medbay) -"ada" = ( -/obj/machinery/suit_storage_unit/security, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "adb" = ( /obj/structure/cable{ d2 = 2; @@ -453,23 +322,6 @@ }, /turf/simulated/floor/plating, /area/security/hos) -"adg" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) -"adh" = ( -/obj/machinery/computer/mech_bay_power_console, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/machinery/firealarm{ - name = "north fire alarm"; - pixel_y = 24 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "adi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -477,30 +329,6 @@ }, /turf/simulated/floor/carpet, /area/security/hos) -"adj" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/machinery/alarm{ - pixel_y = 24 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/securearmory) -"adk" = ( -/obj/structure/closet/secure_closet/security, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/clothing/mask/balaclava, -/obj/effect/decal/warning_stripes/red, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/main) "adl" = ( /obj/structure/table, /obj/item/taperecorder, @@ -511,15 +339,6 @@ }, /turf/simulated/floor/plasteel, /area/security/main) -"adm" = ( -/obj/machinery/mech_bay_recharge_port{ - dir = 8 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "adn" = ( /obj/structure/curtain/open/shower/security{ anchored = 1 @@ -575,28 +394,6 @@ icon_state = "whiteblue" }, /area/security/medbay) -"adt" = ( -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Security SMG's" - }, -/obj/item/gun/projectile/automatic/wt550{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/projectile/automatic/wt550, -/obj/item/gun/projectile/automatic/wt550{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "adu" = ( /obj/structure/closet/secure_closet/brigdoc, /obj/machinery/camera{ @@ -644,20 +441,6 @@ }, /turf/simulated/floor/engine, /area/security/podbay) -"adx" = ( -/obj/structure/closet/secure_closet/security, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/item/clothing/mask/balaclava, -/obj/effect/decal/warning_stripes/red, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/main) "adD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -722,18 +505,6 @@ "adO" = ( /turf/simulated/wall/r_wall, /area/security/medbay) -"adQ" = ( -/obj/structure/closet/secure_closet/security, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/clothing/mask/balaclava, -/obj/effect/decal/warning_stripes/red, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/main) "adR" = ( /obj/structure/chair/comfy/red{ dir = 1 @@ -861,12 +632,6 @@ icon_state = "whiteblue" }, /area/security/medbay) -"aeo" = ( -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "vault" - }, -/area/security/securearmory) "aep" = ( /obj/machinery/status_display{ layer = 4; @@ -900,16 +665,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel, /area/security/main) -"aev" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=Armory_South"; - location = "Armory_sleva" - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/securearmory) "aew" = ( /obj/structure/cable{ icon_state = "4-8" @@ -1021,17 +776,6 @@ icon_state = "darkred" }, /area/security/warden) -"aeR" = ( -/obj/item/radio/intercom{ - name = "custom station intercom (General)"; - pixel_x = 28; - pixel_y = 28 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/securearmory) "aeT" = ( /obj/structure/chair/office/dark, /obj/structure/cable{ @@ -1620,34 +1364,6 @@ icon_state = "whiteblue" }, /area/security/medbay) -"ahD" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/head/helmet/alt, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/door/window{ - dir = 8; - name = "Secure Armory"; - req_access = list(1) - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/item/clothing/shoes/jackboots/armored, -/obj/item/clothing/gloves/color/black/ballistic, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "ahE" = ( /obj/structure/cable{ icon_state = "4-8" @@ -1768,19 +1484,6 @@ icon_state = "darkred" }, /area/security/brig) -"ahY" = ( -/obj/structure/table/reinforced, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs{ - pixel_y = -4 - }, -/obj/item/crowbar, -/obj/item/radio/sec, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkredfull" - }, -/area/security/main) "ahZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel, @@ -1849,33 +1552,6 @@ "aih" = ( /turf/simulated/wall/r_wall, /area/security/hos) -"aik" = ( -/obj/structure/rack/gunrack, -/obj/item/gun/energy/laser{ - pixel_x = -2; - pixel_y = 3 - }, -/obj/item/gun/energy/laser, -/obj/item/gun/energy/laser{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/machinery/camera{ - c_tag = "Secure Armory East"; - dir = 8; - network = list("SS13","Security") - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "ail" = ( /obj/structure/table/reinforced, /obj/item/gun/energy/laser/practice, @@ -2358,33 +2034,6 @@ /obj/structure/sign/nosmoking_2, /turf/simulated/wall/r_wall, /area/security/podbay) -"akf" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/storage/box/flashbangs, -/obj/item/storage/box/flashbangs{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/storage/box/teargas{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/storage/box/teargas, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "aki" = ( /obj/structure/cable{ icon_state = "1-2" @@ -2397,31 +2046,6 @@ icon_state = "darkredcorners" }, /area/security/prison/cell_block/A) -"akl" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/ammo_box/shotgun/beanbag, -/obj/item/ammo_box/shotgun/beanbag{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/ammo_box/shotgun/tranquilizer{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "akm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ @@ -2435,28 +2059,6 @@ icon_state = "darkredcorners" }, /area/security/brig) -"akn" = ( -/obj/item/ammo_box/shotgun/buck{ - pixel_x = 3 - }, -/obj/item/ammo_box/shotgun/buck{ - pixel_y = 3 - }, -/obj/item/ammo_box/shotgun{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Lethal Bullets" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "ako" = ( /obj/effect/decal/warning_stripes/east, /turf/simulated/floor/engine/vacuum, @@ -2475,32 +2077,6 @@ icon_state = "darkredcorners" }, /area/security/brig) -"akt" = ( -/obj/item/gun/projectile/shotgun/riot{ - pixel_x = -1; - pixel_y = 3 - }, -/obj/item/gun/projectile/shotgun/riot{ - pixel_x = -1 - }, -/obj/item/gun/projectile/shotgun/riot{ - pixel_x = -1; - pixel_y = -3 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Riot shotguns" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "akv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -2748,37 +2324,6 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel, /area/security/prisonlockers) -"ale" = ( -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Magazines for SMG" - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = 4; - pixel_y = -4 - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/ammo_box/magazine/wt550m9, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/structure/window/reinforced, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "alh" = ( /obj/structure/table, /obj/item/reagent_containers/food/drinks/cans/beer{ @@ -2995,10 +2540,6 @@ icon_state = "dark" }, /area/security/prisonershuttle) -"alU" = ( -/obj/structure/sign/security, -/turf/simulated/wall/r_wall, -/area/security/securearmory) "alW" = ( /obj/machinery/autolathe/security, /obj/item/radio/intercom{ @@ -3009,62 +2550,13 @@ icon_state = "escape" }, /area/security/customs2) -"alZ" = ( -/obj/structure/closet/secure_closet/security, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/obj/item/clothing/mask/balaclava, -/obj/effect/decal/warning_stripes/red, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/main) -"ama" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Secure Armory West"; - dir = 4; - network = list("SS13","Security") - }, -/obj/item/clothing/suit/armor/laserproof, -/obj/item/gun/energy/ionrifle, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/door/window{ - name = "Secure Armory"; - req_access = list(1) - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) -"amb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "amc" = ( /obj/machinery/status_display{ layer = 4; pixel_x = -32; pixel_y = 32 }, -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, +/obj/machinery/station_map/directional/north, /turf/simulated/floor/plasteel, /area/security/main) "amd" = ( @@ -3096,17 +2588,6 @@ icon_state = "red" }, /area/security/main) -"amh" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "amm" = ( /obj/machinery/hologram/holopad, /obj/structure/cable{ @@ -3144,22 +2625,6 @@ /obj/effect/spawner/lootdrop/officetoys, /turf/simulated/floor/carpet, /area/security/hos) -"amv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/item/radio/intercom{ - name = "south station intercom (General)"; - pixel_y = -28 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/securearmory) "amx" = ( /obj/machinery/access_button{ command = "cycle_interior"; @@ -3217,26 +2682,6 @@ icon_state = "vault" }, /area/security/main) -"amK" = ( -/obj/structure/rack/gunrack, -/obj/item/gun/energy/gun{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/energy/gun, -/obj/item/gun/energy/gun{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "amL" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel, @@ -4161,30 +3606,6 @@ }, /turf/simulated/floor/plasteel/dark, /area/tcommsat/chamber) -"apy" = ( -/obj/structure/window/reinforced, -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Magazines for SP-91-RC"; - req_access = list(1) - }, -/obj/item/ammo_box/magazine/sp91rc{ - pixel_x = 8 - }, -/obj/item/ammo_box/magazine/sp91rc{ - pixel_x = 4 - }, -/obj/item/ammo_box/magazine/sp91rc, -/obj/item/ammo_box/magazine/sp91rc{ - pixel_x = -4 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "apE" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -4979,33 +4400,6 @@ icon_state = "dark" }, /area/security/evidence) -"arG" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/clothing/suit/armor/riot, -/obj/item/shield/riot, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/head/helmet/riot, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/obj/machinery/door/window{ - name = "Secure Armory"; - req_access = list(1) - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "arH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -5017,31 +4411,6 @@ icon_state = "darkred" }, /area/security/permabrig) -"arI" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/head/helmet/alt, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced, -/obj/machinery/door/window{ - dir = 8; - name = "Secure Armory"; - req_access = list(1) - }, -/obj/item/clothing/shoes/jackboots/armored, -/obj/item/clothing/gloves/color/black/ballistic, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "arJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -7664,31 +7033,6 @@ icon_state = "darkred" }, /area/security/permabrig) -"ayE" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/head/helmet/alt, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/door/window{ - dir = 8; - name = "Secure Armory"; - req_access = list(1) - }, -/obj/item/clothing/shoes/jackboots/armored, -/obj/item/clothing/gloves/color/black/ballistic, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "ayH" = ( /obj/structure/table/reinforced, /obj/item/flashlight/lamp, @@ -9258,16 +8602,6 @@ "aDN" = ( /turf/simulated/wall, /area/crew_quarters/mrchangs) -"aDP" = ( -/obj/machinery/dye_generator, -/obj/machinery/alarm{ - dir = 8; - pixel_x = 24 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "aDQ" = ( /obj/structure/table, /obj/item/folder/blue{ @@ -9372,23 +8706,6 @@ "aEl" = ( /turf/simulated/wall, /area/crew_quarters/courtroom) -"aEm" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green{ - on = 0; - pixel_x = -3; - pixel_y = 8 - }, -/obj/item/storage/fancy/cigarettes/dromedaryco, -/obj/item/radio/intercom/department/security{ - name = "east station intercom (Security)"; - pixel_x = 28 - }, -/obj/item/reagent_containers/food/drinks/flask/detflask, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) "aEn" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable, @@ -10073,15 +9390,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/fsmaint) -"aGG" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "aGI" = ( /obj/structure/weightmachine/stacklifter, /obj/effect/decal/cleanable/dirt, @@ -10089,20 +9397,6 @@ icon_state = "dark" }, /area/security/permabrig) -"aGK" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_y = 24 - }, -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "aGL" = ( /obj/structure/chair/comfy/black, /obj/effect/landmark/start/civilian, @@ -10506,19 +9800,6 @@ "aIc" = ( /turf/simulated/wall, /area/clownoffice) -"aId" = ( -/obj/structure/table/reinforced, -/obj/item/razor, -/obj/structure/mirror{ - pixel_x = -28 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "aIe" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 @@ -10561,16 +9842,6 @@ icon_state = "redcorner" }, /area/security/main) -"aIi" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/landmark/start/barber, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "aIj" = ( /obj/structure/chair{ dir = 8 @@ -10985,19 +10256,6 @@ icon_state = "darkblue" }, /area/security/detectives_office) -"aJp" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin{ - pixel_y = 5 - }, -/obj/item/pen, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "aJr" = ( /obj/structure/closet/secure_closet/brig, /obj/machinery/light_switch{ @@ -11385,27 +10643,6 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/maintenance/fsmaint) -"aKE" = ( -/obj/machinery/newscaster{ - name = "east newscaster"; - pixel_x = 32; - pixel_y = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/hologram/holopad, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "aKF" = ( /obj/structure/table, /turf/simulated/floor/carpet/arcade, @@ -12886,18 +12123,6 @@ icon_state = "whitegreenfull" }, /area/crew_quarters/sleep) -"aPP" = ( -/obj/structure/sign/barber{ - pixel_y = 30 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "neutralcorner" - }, -/area/crew_quarters/dorms) "aPQ" = ( /obj/effect/decal/warning_stripes/south, /obj/structure/sign/poster/official/space_a{ @@ -14207,10 +13432,7 @@ /turf/simulated/wall, /area/storage/primary) "aUt" = ( -/obj/structure/extinguisher_cabinet{ - name = "north extinguisher cabinet"; - pixel_y = 30 - }, +/obj/machinery/station_map/directional/north, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry) "aUu" = ( @@ -14424,26 +13646,6 @@ /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry) -"aVg" = ( -/obj/structure/table, -/obj/machinery/camera{ - c_tag = "Primary Tool Storage" - }, -/obj/machinery/requests_console{ - department = "Tool Storage"; - name = "Tool Storage Requests Console"; - pixel_y = 30 - }, -/obj/item/assembly/igniter{ - pixel_x = -8; - pixel_y = -4 - }, -/obj/item/assembly/igniter, -/obj/item/screwdriver{ - pixel_y = 16 - }, -/turf/simulated/floor/plasteel, -/area/storage/primary) "aVh" = ( /obj/structure/cable{ icon_state = "4-8" @@ -15005,6 +14207,21 @@ icon_state = "dark" }, /area/medical/morgue) +"aWS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + name = "south extinguisher cabinet"; + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/entry) "aWT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -22888,16 +22105,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/fsmaint) -"buF" = ( -/obj/structure/table/reinforced, -/obj/structure/mirror{ - pixel_x = -28 - }, -/obj/item/razor, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "buG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -22945,21 +22152,6 @@ icon_state = "bluecorner" }, /area/hydroponics) -"buL" = ( -/obj/structure/chair/barber{ - dir = 8 - }, -/obj/machinery/status_display{ - layer = 4; - pixel_y = 32 - }, -/obj/machinery/camera{ - c_tag = "Barber Shop" - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "buM" = ( /obj/machinery/vending/cart, /turf/simulated/floor/carpet/arcade, @@ -23680,13 +22872,6 @@ "bxl" = ( /turf/simulated/wall, /area/bridge/meeting_room) -"bxm" = ( -/obj/structure/table, -/obj/item/aiModule/reset, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/ai_upload) "bxn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -23741,28 +22926,6 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/captain) -"bxt" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) -"bxu" = ( -/obj/structure/dresser, -/obj/machinery/firealarm{ - dir = 4; - name = "east fire alarm"; - pixel_x = 24 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "bxv" = ( /turf/simulated/wall/r_wall, /area/crew_quarters/captain) @@ -24210,13 +23373,6 @@ /obj/machinery/vending/snack, /turf/simulated/floor/wood, /area/bridge/meeting_room) -"byK" = ( -/obj/structure/table, -/obj/item/aiModule/quarantine, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/ai_upload) "byL" = ( /obj/structure/window/reinforced{ dir = 8 @@ -24290,28 +23446,6 @@ /obj/item/storage/fancy/donut_box, /turf/simulated/floor/carpet, /area/crew_quarters/captain) -"byT" = ( -/obj/structure/table/wood, -/obj/item/storage/photo_album{ - pixel_y = -10 - }, -/obj/item/camera_film, -/obj/item/camera_film, -/obj/item/camera{ - desc = "A one use - polaroid camera. 30 photos left."; - name = "detectives camera"; - pictures_left = 30 - }, -/obj/machinery/requests_console{ - name = "Detective Requests Console"; - pixel_y = -30 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/item/storage/box/tapes, -/turf/simulated/floor/wood, -/area/security/detectives_office) "byU" = ( /turf/simulated/floor/carpet, /area/library) @@ -24396,12 +23530,6 @@ icon_state = "neutral" }, /area/hallway/secondary/exit) -"bzm" = ( -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "bzo" = ( /obj/structure/chair/stool, /turf/simulated/floor/carpet/arcade, @@ -24851,14 +23979,6 @@ icon_state = "darkred" }, /area/hallway/primary/fore) -"bAH" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "bAK" = ( /obj/structure/cable{ icon_state = "1-2" @@ -25034,28 +24154,6 @@ /obj/structure/falsewall, /turf/simulated/floor/plating, /area/maintenance/livingcomplex) -"bBw" = ( -/obj/structure/table, -/obj/machinery/door/window{ - base_state = "right"; - icon_state = "right"; - name = "Core Modules"; - req_access = list(20) - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/aiModule/crewsimov, -/obj/item/aiModule/freeformcore, -/obj/item/aiModule/corp, -/obj/item/aiModule/paladin, -/obj/item/aiModule/robocop, -/turf/simulated/floor/bluegrid, -/area/turret_protected/ai_upload) "bBx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -25074,26 +24172,6 @@ }, /turf/simulated/floor/bluegrid, /area/turret_protected/ai_upload) -"bBz" = ( -/obj/structure/table, -/obj/machinery/door/window{ - dir = 8; - name = "High-Risk Modules"; - req_access = list(20) - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/aiModule/oxygen, -/obj/item/aiModule/oneCrewMember, -/obj/item/aiModule/purge, -/obj/item/aiModule/antimov, -/turf/simulated/floor/bluegrid, -/area/turret_protected/ai_upload) "bBA" = ( /obj/machinery/light, /turf/simulated/floor/plasteel{ @@ -25349,14 +24427,6 @@ }, /turf/simulated/floor/bluegrid, /area/maintenance/engineering) -"bCy" = ( -/obj/structure/table, -/obj/item/aiModule/protectStation, -/obj/item/aiModule/nanotrasen, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/ai_upload) "bCA" = ( /obj/machinery/status_display{ pixel_y = 32 @@ -25770,13 +24840,6 @@ icon_state = "dark" }, /area/turret_protected/ai_upload) -"bDW" = ( -/obj/structure/table, -/obj/item/aiModule/freeform, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/ai_upload) "bDX" = ( /turf/simulated/wall, /area/maintenance/maintcentral) @@ -26155,6 +25218,20 @@ }, /turf/simulated/floor/plasteel, /area/hallway/primary/starboard/east) +"bFA" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/rack/gunrack, +/obj/item/gun/energy/ionrifle, +/obj/item/gun/energy/ionrifle{ + pixel_x = 3 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "bFB" = ( /obj/structure/chair{ dir = 8 @@ -26233,20 +25310,6 @@ /obj/structure/grille, /turf/simulated/floor/plating, /area/maintenance/fsmaint) -"bFL" = ( -/obj/item/radio/intercom{ - name = "east station intercom (General)"; - pixel_x = 28 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "bFM" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/oil/streak, @@ -26562,6 +25625,8 @@ name = "east station intercom (General)"; pixel_x = 28 }, +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -27060,19 +26125,6 @@ icon_state = "whiteblue" }, /area/medical/reception) -"bIs" = ( -/obj/machinery/disposal, -/obj/machinery/light_switch{ - name = "west light switch"; - pixel_x = -24 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "bIt" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -27097,17 +26149,6 @@ icon_state = "neutralcorner" }, /area/hallway/secondary/exit) -"bIz" = ( -/obj/machinery/atm{ - pixel_y = -32 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "bIB" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 @@ -27137,19 +26178,6 @@ icon_state = "browncorner" }, /area/hallway/primary/central/west) -"bIL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "bIM" = ( /obj/structure/table/wood, /obj/item/folder/blue, @@ -27308,20 +26336,14 @@ req_access = list(47) }, /obj/machinery/door/firedoor, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id_tag = "Biohazard"; - name = "Biohazard Shutter"; - opacity = 0 + name = "Biohazard Shutter" }, -/obj/machinery/door/poddoor/shutters{ - density = 0; +/obj/machinery/door/poddoor/shutters/preopen{ dir = 2; - icon_state = "open"; id_tag = "rdlab"; - name = "Research and Development Lab Shutters"; - opacity = 0 + name = "Research Desk Shutters" }, /turf/simulated/floor/plating, /area/toxins/lab) @@ -28067,25 +27089,6 @@ icon_state = "white" }, /area/medical/chemistry) -"bLF" = ( -/obj/structure/table, -/obj/item/clothing/glasses/hud/health{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/hud/health{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/clothing/glasses/hud/health{ - pixel_x = 4; - pixel_y = -4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whitebluefull" - }, -/area/medical/biostorage) "bLI" = ( /obj/effect/decal/warning_stripes/east, /obj/effect/decal/warning_stripes/yellow, @@ -28139,6 +27142,22 @@ /obj/item/flash, /turf/simulated/floor/plasteel, /area/assembly/robotics) +"bLQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance{ + locked = 1; + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) "bLR" = ( /obj/structure/cable{ icon_state = "2-4" @@ -32651,16 +31670,6 @@ icon_state = "whitepurple" }, /area/medical/genetics) -"bZz" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/effect/landmark/start/geneticist, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "whitepurple" - }, -/area/medical/genetics) "bZA" = ( /obj/structure/table/glass, /obj/item/storage/box/disks, @@ -34258,18 +33267,6 @@ icon_state = "whiteblue" }, /area/medical/surgery/south) -"cef" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/machinery/door_control{ - id = "surgeryobs2"; - name = "Privacy Shutters Control"; - pixel_y = 25 - }, -/obj/item/storage/belt/medical/surgery/loaded, -/turf/simulated/floor/plasteel{ - icon_state = "whitebluecorner" - }, -/area/medical/surgery/south) "ceg" = ( /obj/machinery/light{ dir = 1 @@ -34345,6 +33342,21 @@ icon_state = "arrival" }, /area/hallway/secondary/entry) +"cem" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_y = 24 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/maintenance/fsmaint) "ceo" = ( /obj/structure/cable{ icon_state = "1-2" @@ -36500,32 +35512,6 @@ }, /turf/simulated/floor/wood, /area/blueshield) -"ckq" = ( -/obj/structure/closet/secure_closet/quartermaster, -/obj/item/extraction_pack, -/obj/item/fulton_core, -/obj/item/flash, -/obj/item/clipboard, -/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/megaphone{ - pixel_x = 7 - }, -/obj/item/stamp/qm{ - pixel_x = 7; - pixel_y = 3 - }, -/turf/simulated/floor/plasteel{ - icon_state = "brown" - }, -/area/quartermaster/qm) "ckr" = ( /obj/item/reagent_containers/food/snacks/grown/banana, /turf/simulated/floor/plating, @@ -40975,14 +39961,6 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/engineering/controlroom) -"czC" = ( -/obj/structure/table, -/obj/machinery/alarm{ - pixel_y = 24 - }, -/obj/item/t_scanner, -/turf/simulated/floor/plasteel, -/area/storage/primary) "czD" = ( /obj/structure/table, /obj/machinery/status_display{ @@ -41449,6 +40427,7 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/machinery/station_map/engineering/directional/west, /turf/simulated/floor/plasteel, /area/engineering/controlroom) "cAN" = ( @@ -42182,12 +41161,6 @@ icon_state = "vault" }, /area/security/nuke_storage) -"cCM" = ( -/obj/structure/table, -/obj/item/aicard, -/obj/item/aiModule/reset, -/turf/simulated/floor/plating, -/area/storage/tech) "cCN" = ( /obj/structure/rack{ dir = 8; @@ -44024,15 +42997,6 @@ /obj/structure/grille/broken, /turf/simulated/floor/plating, /area/maintenance/asmaint) -"cIa" = ( -/obj/structure/table/wood, -/obj/item/pen, -/obj/item/reagent_containers/food/drinks/bottle/holywater, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/carpet/black, -/area/chapel/office) "cIb" = ( /obj/item/radio/intercom{ name = "north station intercom (General)"; @@ -45080,25 +44044,6 @@ /obj/effect/spawner/random_spawners/blood_5, /turf/simulated/floor/wood, /area/maintenance/asmaint) -"cKO" = ( -/obj/structure/table, -/obj/item/storage/box/gloves{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/masks, -/obj/item/reagent_containers/spray/cleaner/medical{ - desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; - name = "Surgery Cleaner" - }, -/obj/machinery/camera{ - c_tag = "Medbay Surgery West Storage"; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "showroomfloor" - }, -/area/medical/surgery/north) "cKP" = ( /obj/machinery/door/window/northleft{ dir = 4; @@ -45586,24 +44531,6 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/engine, /area/toxins/xenobiology) -"cMl" = ( -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Science Requests Console"; - pixel_y = 30 - }, -/obj/machinery/camera{ - c_tag = "Xenobiology Module North"; - network = list("Research","SS13") - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/toxins/xenobiology) "cMm" = ( /obj/structure/cable{ icon_state = "1-2" @@ -47664,6 +46591,14 @@ icon_state = "white" }, /area/toxins/xenobiology) +"cRE" = ( +/obj/machinery/suit_storage_unit/security, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/securearmory) "cRF" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -51034,6 +49969,11 @@ /obj/machinery/smartfridge, /turf/simulated/floor/plating, /area/crew_quarters/kitchen) +"dba" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/securearmory) "dbf" = ( /obj/structure/cable{ icon_state = "2-4" @@ -51089,18 +50029,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/escapepodbay) -"dbn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/securearmory) "dbo" = ( /mob/living/simple_animal/hostile/killertomato{ desc = "Прирученный ботаниками томат-убийца. Не подпускать к Сане."; @@ -51522,14 +50450,6 @@ icon_state = "neutral" }, /area/hallway/secondary/entry) -"dcY" = ( -/obj/effect/decal/warning_stripes/north, -/obj/machinery/conveyor{ - dir = 4; - id = "garbage" - }, -/turf/simulated/floor/plating, -/area/quartermaster/storage) "dda" = ( /obj/machinery/atmospherics/meter, /obj/machinery/light{ @@ -53178,6 +52098,17 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"dic" = ( +/obj/effect/decal/warning_stripes/north, +/obj/machinery/status_display/supply_display{ + pixel_y = -32 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2" + }, +/turf/simulated/floor/plating, +/area/quartermaster/storage) "did" = ( /obj/machinery/camera{ c_tag = "Bridge East" @@ -54074,6 +53005,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, +/obj/machinery/station_map/directional/east, /turf/simulated/floor/plasteel, /area/hallway/primary/central/ne) "dld" = ( @@ -56531,6 +55463,11 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint) +"dwN" = ( +/obj/machinery/light, +/obj/machinery/station_map/directional/south, +/turf/simulated/floor/shuttle, +/area/shuttle/arrival/station) "dwW" = ( /obj/machinery/door_control{ id = "kitchenhall"; @@ -57406,6 +56343,19 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/captain) +"ebY" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Armory_North"; + location = "Armory_sprava" + }, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/securearmory) "edv" = ( /obj/machinery/firealarm{ dir = 4; @@ -57776,6 +56726,31 @@ /obj/machinery/door/firedoor, /turf/simulated/floor/wood/fancy/cherry, /area/crew_quarters/bar/atrium) +"epd" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window{ + name = "Secure Armory"; + req_access = list(1) + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securearmory) "epn" = ( /obj/machinery/mass_driver{ dir = 4; @@ -57954,6 +56929,13 @@ icon_state = "darkbluecorners" }, /area/medical/cmo) +"etU" = ( +/obj/structure/table, +/obj/item/ai_module/reset, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) "eua" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -58090,6 +57072,17 @@ }, /turf/simulated/floor/engine, /area/toxins/mixing) +"eBc" = ( +/obj/structure/mirror{ + pixel_x = -28 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/paper_bin{ + pixel_y = 5 + }, +/obj/item/pen, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) "eBd" = ( /obj/item/reagent_containers/glass/beaker/large, /obj/item/reagent_containers/dropper, @@ -58109,6 +57102,28 @@ icon_state = "freezerfloor" }, /area/crew_quarters/locker/locker_toilet) +"eBW" = ( +/obj/structure/closet/secure_closet/security, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Brig Security Equipment Lockers"; + dir = 4 + }, +/obj/item/clothing/mask/balaclava, +/obj/effect/decal/warning_stripes/red, +/obj/machinery/status_display{ + layer = 4; + pixel_x = -32 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) "eCc" = ( /obj/machinery/alarm{ dir = 4; @@ -58701,6 +57716,15 @@ }, /turf/simulated/floor/plating, /area/bridge/meeting_room) +"eTm" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Armory_South"; + location = "Armory_sleva" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "eTu" = ( /obj/structure/chair/comfy/brown{ dir = 4 @@ -58905,6 +57929,28 @@ }, /turf/space, /area/space) +"faz" = ( +/obj/structure/table, +/obj/machinery/door/window{ + base_state = "right"; + icon_state = "right"; + name = "Core Modules"; + req_access = list(20) + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/ai_module/crewsimov, +/obj/item/ai_module/freeformcore, +/obj/item/ai_module/corp, +/obj/item/ai_module/paladin, +/obj/item/ai_module/robocop, +/turf/simulated/floor/bluegrid, +/area/turret_protected/ai_upload) "fbk" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -58943,17 +57989,6 @@ icon_state = "whitegreen" }, /area/medical/virology/lab) -"fbY" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "fcS" = ( /obj/structure/cable{ icon_state = "1-2" @@ -59355,6 +58390,18 @@ }, /turf/simulated/floor/plating, /area/aisat/atmospherics) +"fvE" = ( +/obj/structure/closet/secure_closet/security, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/item/clothing/mask/balaclava, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) "fvW" = ( /obj/structure/cable{ icon_state = "1-4" @@ -59390,6 +58437,18 @@ icon_state = "red" }, /area/atmos) +"fwi" = ( +/obj/machinery/door_control{ + id = "surgeryobs1"; + name = "Privacy Shutters Control"; + pixel_y = 25 + }, +/obj/structure/closet/secure_closet/medical4, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/surgery/north) "fwj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -59830,6 +58889,29 @@ }, /turf/simulated/floor/plating/airless, /area/engineering/engine) +"fKn" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/machinery/door/window{ + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/clothing/head/helmet/alt, +/obj/item/clothing/head/helmet/alt, +/obj/item/clothing/head/helmet/alt, +/obj/item/clothing/head/helmet/alt, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securearmory) "fLc" = ( /obj/structure/chair/office/light{ dir = 8 @@ -59928,6 +59010,13 @@ icon_state = "neutral" }, /area/security/customs) +"fPD" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) "fPG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 @@ -59992,6 +59081,22 @@ }, /turf/simulated/floor/plating, /area/storage/tech) +"fRu" = ( +/obj/structure/rack, +/obj/machinery/power/apc{ + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable, +/obj/item/gun/syringe, +/obj/item/gun/syringe{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/medical/biostorage) "fRL" = ( /obj/machinery/alarm{ dir = 4; @@ -60030,13 +59135,6 @@ icon_state = "bluefull" }, /area/medical/cmostore) -"fSC" = ( -/obj/effect/decal/warning_stripes/red/hollow, -/obj/machinery/flasher/portable, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "fSG" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/generic, @@ -60369,9 +59467,6 @@ }, /turf/simulated/floor/plasteel, /area/hallway/primary/starboard/west) -"gel" = ( -/turf/simulated/wall, -/area/civilian/barber) "gff" = ( /obj/structure/closet/crate/trashcart{ desc = "A heavy, metal laundrycart with wheels."; @@ -60866,6 +59961,15 @@ /obj/effect/decal/cleanable/blood/xeno, /turf/simulated/floor/plasteel, /area/maintenance/xenozoo) +"grV" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/maintenance/fsmaint) "grY" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -61053,6 +60157,20 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"gxq" = ( +/obj/structure/closet/secure_closet/security, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/clothing/mask/balaclava, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) "gxr" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance, @@ -61333,6 +60451,32 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/xenozoo) +"gKZ" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/storage/lockbox/mindshield, +/obj/item/storage/box/trackimp, +/obj/item/storage/box/chemimp{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/lock_buster, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window{ + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securearmory) "gLm" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -61574,6 +60718,14 @@ /obj/structure/cable, /turf/simulated/floor/plating, /area/security/processing) +"gTm" = ( +/obj/machinery/flasher/portable, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/securearmory) "gTo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -61637,6 +60789,12 @@ /obj/machinery/space_heater, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"gVz" = ( +/obj/machinery/vending/clothing/departament/medical, +/turf/simulated/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/medical/biostorage) "gVD" = ( /obj/effect/decal/warning_stripes/north, /obj/machinery/atmospherics/unary/vent_scrubber/on, @@ -61674,19 +60832,13 @@ icon_state = "red" }, /area/security/range) -"gWr" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/machinery/door_control{ - id = "surgeryobs1"; - name = "Privacy Shutters Control"; - pixel_y = 25 - }, -/obj/item/storage/belt/medical/surgery/loaded, +"gWJ" = ( +/obj/machinery/station_map/directional/west, /turf/simulated/floor/plasteel{ dir = 8; - icon_state = "whitebluecorner" + icon_state = "browncorner" }, -/area/medical/surgery/north) +/area/hallway/primary/central/sw) "gWM" = ( /obj/machinery/camera{ c_tag = "East Primary Hallway 5"; @@ -62090,6 +61242,24 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/assembly/assembly_line) +"hkL" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green{ + on = 0; + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/storage/fancy/cigarettes/dromedaryco, +/obj/item/radio/intercom/department/security{ + name = "east station intercom (Security)"; + pixel_x = 28 + }, +/obj/item/reagent_containers/food/drinks/flask/detflask, +/obj/item/lighter/zippo/detective, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/detectives_office) "hkT" = ( /obj/machinery/door/airlock/external{ id_tag = "specops_home"; @@ -62710,6 +61880,13 @@ icon_state = "cafeteria" }, /area/medical/research/restroom) +"hFV" = ( +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whitehall" + }, +/area/medical/research) "hGr" = ( /obj/structure/cable{ icon_state = "1-2" @@ -63366,28 +62543,6 @@ icon_state = "tranquillite" }, /area/mimeoffice) -"icF" = ( -/obj/structure/rack/gunrack, -/obj/item/gun/projectile/automatic/sp91rc{ - pixel_x = -7 - }, -/obj/item/gun/projectile/automatic/sp91rc{ - pixel_x = -2 - }, -/obj/item/gun/projectile/automatic/sp91rc{ - pixel_x = 2 - }, -/obj/item/gun/projectile/automatic/sp91rc{ - pixel_x = 7 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "icM" = ( /obj/machinery/door/airlock/external{ frequency = 1379; @@ -63599,6 +62754,14 @@ }, /turf/simulated/floor/plasteel, /area/atmos) +"ikW" = ( +/obj/machinery/flasher/portable, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securearmory) "imf" = ( /obj/structure/particle_accelerator/particle_emitter/left, /turf/simulated/floor/plating, @@ -64229,14 +63392,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/port) -"iHY" = ( -/obj/structure/chair/barber{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "iIh" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/hatch{ @@ -64515,6 +63670,18 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/engine, /area/maintenance/server) +"iOJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) "iOM" = ( /obj/structure/sink{ dir = 8; @@ -64546,6 +63713,28 @@ }, /turf/simulated/floor/plasteel, /area/assembly/chargebay) +"iPG" = ( +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Security SMG's" + }, +/obj/item/gun/projectile/automatic/wt550{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/projectile/automatic/wt550, +/obj/item/gun/projectile/automatic/wt550{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "iPS" = ( /obj/effect/landmark/start/cargo_technician, /obj/structure/disposalpipe/sortjunction/reversed{ @@ -64766,6 +63955,14 @@ /obj/effect/spawner/lootdrop/maintenance/double, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"jaK" = ( +/obj/machinery/suit_storage_unit/security, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/securearmory) "jaW" = ( /obj/effect/spawner/random_spawners/blood_20, /obj/effect/decal/cleanable/dirt, @@ -65786,14 +64983,6 @@ /obj/machinery/vending/assist, /turf/simulated/floor/plating, /area/storage/tech) -"jRJ" = ( -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whiteyellow" - }, -/area/medical/chemistry) "jRL" = ( /obj/effect/spawner/random_spawners/grille_13, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -65939,6 +65128,19 @@ icon_state = "dark" }, /area/medical/morgue) +"jVz" = ( +/obj/structure/chair/barber{ + dir = 8 + }, +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/maintenance/fsmaint) "jVL" = ( /obj/effect/decal/warning_stripes/north, /obj/machinery/atmospherics/binary/pump{ @@ -66009,6 +65211,26 @@ }, /turf/simulated/floor/plasteel, /area/janitor) +"jYt" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/ammo_box/shotgun/beanbag, +/obj/item/ammo_box/shotgun/beanbag{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/shotgun/tranquilizer{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "jYG" = ( /obj/structure/cable/yellow{ d1 = 2; @@ -66021,6 +65243,16 @@ }, /turf/simulated/floor/plasteel, /area/engineering/engine) +"jYJ" = ( +/obj/item/radio/intercom{ + name = "custom station intercom (General)"; + pixel_x = 28; + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "jYT" = ( /obj/machinery/recharger/wallcharger{ pixel_x = -24; @@ -66335,6 +65567,12 @@ icon_state = "floorgrime" }, /area/maintenance/asmaint2) +"kiJ" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/maintenance/fsmaint) "kiK" = ( /obj/structure/sign/biohazard{ pixel_y = 32 @@ -66481,6 +65719,17 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel, /area/atmos/distribution) +"klV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners" + }, +/area/security/securearmory) "kma" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -66600,6 +65849,21 @@ icon_state = "yellowcorner" }, /area/hallway/primary/aft) +"kqL" = ( +/obj/structure/table, +/obj/machinery/alarm{ + pixel_y = 24 + }, +/obj/item/vending_refill/custom{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/vending_refill/custom{ + pixel_y = 3 + }, +/obj/item/t_scanner, +/turf/simulated/floor/plasteel, +/area/storage/primary) "kqU" = ( /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -66893,6 +66157,16 @@ /obj/effect/decal/cleanable/cobweb2, /turf/simulated/floor/plating, /area/maintenance/engineering) +"kAX" = ( +/obj/structure/table/reinforced, +/obj/structure/mirror{ + pixel_x = -28 + }, +/obj/item/razor, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/maintenance/fsmaint) "kBg" = ( /obj/machinery/vending/pai, /turf/simulated/floor/plasteel{ @@ -66902,20 +66176,14 @@ /area/hallway/primary/starboard/east) "kBi" = ( /obj/effect/spawner/window/reinforced, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; +/obj/machinery/door/poddoor/preopen{ id_tag = "Biohazard"; - name = "Biohazard Shutter"; - opacity = 0 + name = "Biohazard Shutter" }, -/obj/machinery/door/poddoor/shutters{ - density = 0; +/obj/machinery/door/poddoor/shutters/preopen{ dir = 2; - icon_state = "open"; id_tag = "rdlab"; - name = "Research and Development Lab Shutters"; - opacity = 0 + name = "Research Desk Shutters" }, /turf/simulated/floor/plating, /area/toxins/lab) @@ -67109,13 +66377,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/genetics) -"kIe" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/toxins/lab) "kIr" = ( /turf/simulated/floor/plasteel{ icon_state = "whitepurplecorner" @@ -67242,6 +66503,27 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) +"kKX" = ( +/obj/item/ammo_box/shotgun/buck{ + pixel_x = 3 + }, +/obj/item/ammo_box/shotgun/buck{ + pixel_y = 3 + }, +/obj/item/ammo_box/shotgun{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Lethal Bullets" + }, +/obj/structure/window/reinforced, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "kLu" = ( /obj/structure/cable{ icon_state = "4-8" @@ -67391,6 +66673,17 @@ /obj/effect/decal/warning_stripes/northeast, /turf/simulated/floor/plasteel, /area/toxins/xenobiology) +"kSS" = ( +/obj/structure/table, +/obj/item/ai_module/quarantine, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"kTi" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel, +/area/hallway/primary/starboard/east) "kTu" = ( /obj/structure/largecrate, /obj/effect/decal/cleanable/dust, @@ -67407,6 +66700,17 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plating, /area/maintenance/genetics) +"kUl" = ( +/obj/structure/closet/secure_closet/security, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/clothing/mask/balaclava, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) "kUB" = ( /obj/structure/cable{ icon_state = "4-8" @@ -68118,7 +67422,7 @@ pixel_y = 4 }, /obj/item/melee/chainofcommand, -/obj/item/card/id/captains_spare, +/obj/item/storage/secure/briefcase/captian, /obj/effect/turf_decal/siding/wood{ dir = 4 }, @@ -68861,6 +68165,12 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/port) +"lUn" = ( +/obj/structure/table, +/obj/item/aicard, +/obj/item/ai_module/reset, +/turf/simulated/floor/plating, +/area/storage/tech) "lUt" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -68951,6 +68261,17 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/maintenance/turbine) +"lWI" = ( +/obj/machinery/dye_generator, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/maintenance/fsmaint) "lWN" = ( /obj/structure/cable{ icon_state = "1-2" @@ -69089,6 +68410,13 @@ icon_state = "whitegreenfull" }, /area/medical/virology/lab) +"lZT" = ( +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "redcorner" + }, +/area/security/lobby) "lZV" = ( /obj/item/radio/intercom{ name = "north station intercom (General)"; @@ -69454,6 +68782,32 @@ }, /turf/simulated/floor/plasteel, /area/hallway/primary/starboard/east) +"mlW" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window{ + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securearmory) "mmd" = ( /obj/effect/spawner/random_spawners/rodent, /turf/simulated/floor/plating, @@ -69798,6 +69152,7 @@ /obj/machinery/camera{ c_tag = "Central Primary Hallway South" }, +/obj/machinery/station_map/directional/north, /turf/simulated/floor/plasteel, /area/hallway/primary/central/south) "mxB" = ( @@ -69838,6 +69193,52 @@ icon_state = "vault" }, /area/toxins/misc_lab) +"myj" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/alarm{ + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/securearmory) +"myk" = ( +/obj/structure/table, +/obj/machinery/camera{ + c_tag = "Primary Tool Storage" + }, +/obj/machinery/requests_console{ + department = "Primary Tool Storage"; + name = "Primary Tool Storage Requests Console"; + pixel_y = 30 + }, +/obj/item/assembly/igniter{ + pixel_x = -8; + pixel_y = -4 + }, +/obj/item/assembly/igniter, +/obj/item/screwdriver{ + pixel_y = 16 + }, +/turf/simulated/floor/plasteel, +/area/storage/primary) +"myy" = ( +/obj/structure/disposalpipe/trunk, +/obj/machinery/disposal, +/obj/machinery/requests_console{ + department = "Chemistry"; + departmentType = 2; + name = "Chemistry Requests Console"; + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) "mzq" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -70175,6 +69576,10 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/captain) +"mJX" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel, +/area/crew_quarters/dorms) "mKg" = ( /obj/machinery/door/airlock/security/glass{ name = "Armory"; @@ -70300,29 +69705,22 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/toxins/storage) -"mOm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Barber Shop" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "mOp" = ( /obj/effect/spawner/window/reinforced, /obj/structure/transit_tube/horizontal, /turf/simulated/floor/plating, /area/maintenance/atmospherics) +"mOu" = ( +/obj/machinery/door/poddoor{ + id_tag = "QMLoaddoor"; + name = "supply dock loading door" + }, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2" + }, +/turf/simulated/floor/plating, +/area/quartermaster/storage) "mOw" = ( /obj/structure/cable{ icon_state = "1-2" @@ -70388,6 +69786,21 @@ /obj/item/beach_ball/holoball, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"mTj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/item/radio/intercom{ + name = "south station intercom (General)"; + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/securearmory) "mTq" = ( /obj/machinery/newscaster{ name = "north newscaster"; @@ -70531,6 +69944,13 @@ }, /turf/simulated/floor/plasteel, /area/engineering/break_room) +"mYY" = ( +/obj/structure/table, +/obj/item/ai_module/freeform, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) "mZa" = ( /obj/machinery/chem_master, /turf/simulated/floor/plating, @@ -70698,17 +70118,6 @@ icon_state = "white" }, /area/assembly/robotics) -"nfM" = ( -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Science Requests Console"; - pixel_x = -30 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/toxins/lab) "nfX" = ( /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel{ @@ -71381,6 +70790,14 @@ icon_state = "whiteblue" }, /area/security/medbay) +"nDs" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) "nDy" = ( /obj/effect/decal/warning_stripes/east, /turf/simulated/floor/plating/airless, @@ -71469,6 +70886,33 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"nGQ" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/machinery/camera{ + c_tag = "Secure Armory West"; + dir = 4; + network = list("SS13","Security") + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window{ + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/shield/riot, +/obj/item/shield/riot, +/obj/item/shield/riot, +/obj/item/shield/riot, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securearmory) "nHo" = ( /obj/structure/table, /obj/machinery/camera{ @@ -71737,6 +71181,16 @@ icon_state = "darkgrey" }, /area/toxins/mixing) +"nPM" = ( +/obj/machinery/atm{ + pixel_y = -32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) "nQm" = ( /obj/machinery/mineral/equipment_vendor, /turf/simulated/floor/plasteel{ @@ -72090,6 +71544,14 @@ icon_state = "bcarpet05" }, /area/blueshield) +"oaf" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/flasher/portable, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/securearmory) "oau" = ( /obj/effect/decal/warning_stripes/northeastsouth, /obj/item/twohanded/required/kirbyplants, @@ -72103,6 +71565,21 @@ icon_state = "neutralfull" }, /area/maintenance/engineering) +"obe" = ( +/obj/structure/rack/gunrack, +/obj/item/gun/energy/laser{ + pixel_x = -3 + }, +/obj/item/gun/energy/laser, +/obj/item/gun/energy/laser{ + pixel_x = 3 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "obr" = ( /obj/effect/decal/cleanable/dirt, /obj/item/camera_assembly, @@ -72250,6 +71727,21 @@ icon_state = "blue" }, /area/medical/cmostore) +"omn" = ( +/obj/structure/table/wood, +/obj/item/pen, +/obj/item/reagent_containers/food/drinks/bottle/holywater, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/requests_console{ + department = "Chapel"; + departmentType = 2; + name = "Chapel Requests Console"; + pixel_y = 30 + }, +/turf/simulated/floor/carpet/black, +/area/chapel/office) "omV" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/secure_closet/scientist, @@ -72596,6 +72088,34 @@ }, /turf/simulated/floor/plasteel, /area/hallway/primary/starboard/east) +"oBC" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/window/brigdoor{ + dir = 1; + id = "Autolathe"; + name = "Autolathe Access"; + req_access = list(47) + }, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/item/stack/sheet/metal{ + amount = 10 + }, +/obj/machinery/autolathe, +/obj/machinery/door/poddoor/preopen{ + id_tag = "Biohazard"; + name = "Biohazard Shutter" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "rdlab"; + name = "Research Desk Shutters" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) "oCq" = ( /obj/structure/window/reinforced{ dir = 8 @@ -72793,6 +72313,10 @@ icon_state = "dark" }, /area/security/warden) +"oJS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) "oKl" = ( /obj/effect/decal/warning_stripes/west, /obj/effect/decal/cleanable/dirt, @@ -73672,6 +73196,17 @@ }, /turf/simulated/floor/plasteel, /area/atmos/control) +"pjp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "pjs" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -73885,6 +73420,39 @@ icon_state = "darkgrey" }, /area/toxins/mixing) +"pqt" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/storage/box/teargas, +/obj/item/storage/box/teargas{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/chem_grenade/teargas{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/item/grenade/chem_grenade/teargas{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/machinery/door/window{ + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securearmory) "pqO" = ( /obj/machinery/door_control{ id = "representative"; @@ -74091,19 +73659,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/starboardsolar) -"pyg" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=Armory_North"; - location = "Armory_sprava" - }, -/obj/machinery/light, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "pyQ" = ( /obj/machinery/light{ dir = 1 @@ -74263,6 +73818,36 @@ icon_state = "whitebluefull" }, /area/medical/reception) +"pCR" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/storage/box/flashbangs, +/obj/item/storage/box/flashbangs{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/structure/window/reinforced, +/obj/machinery/door/window{ + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/grenade/flashbang{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/item/grenade/flashbang{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/securearmory) "pCX" = ( /obj/structure/window/reinforced{ dir = 4 @@ -74465,6 +74050,29 @@ icon_state = "whitebluefull" }, /area/medical/reception) +"pHL" = ( +/obj/structure/table/wood, +/obj/item/storage/photo_album{ + pixel_y = -10 + }, +/obj/item/camera_film, +/obj/item/camera_film, +/obj/item/camera{ + desc = "A one use - polaroid camera. 30 photos left."; + name = "detectives camera"; + pictures_left = 30 + }, +/obj/machinery/requests_console{ + department = "Detective"; + name = "Detective Requests Console"; + pixel_y = -30 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/storage/box/tapes, +/turf/simulated/floor/wood, +/area/security/detectives_office) "pIm" = ( /obj/structure/closet/firecloset, /obj/effect/decal/warning_stripes/southwest, @@ -74547,6 +74155,16 @@ /obj/machinery/light/small, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"pLK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) "pMx" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -74714,30 +74332,6 @@ }, /turf/simulated/floor/plating, /area/aisat) -"pUD" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/clothing/suit/armor/riot, -/obj/item/shield/riot, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/head/helmet/riot, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/door/window{ - name = "Secure Armory"; - req_access = list(1) - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "pUG" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -74842,6 +74436,29 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/storage/tech) +"pYe" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window{ + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/clothing/gloves/color/black/ballistic, +/obj/item/clothing/gloves/color/black/ballistic, +/obj/item/clothing/gloves/color/black/ballistic, +/obj/item/clothing/gloves/color/black/ballistic, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securearmory) "pYj" = ( /obj/structure/cable{ icon_state = "1-4" @@ -74963,31 +74580,6 @@ icon_state = "floorgrime" }, /area/maintenance/asmaint2) -"qcp" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/head/helmet/alt, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/door/window{ - dir = 8; - name = "Secure Armory"; - req_access = list(1) - }, -/obj/item/clothing/shoes/jackboots/armored, -/obj/item/clothing/gloves/color/black/ballistic, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "qcJ" = ( /obj/structure/rack, /obj/item/storage/box/donkpockets{ @@ -75388,6 +74980,15 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"qmr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutralcorner" + }, +/area/crew_quarters/dorms) "qmz" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -75476,6 +75077,27 @@ icon_state = "green" }, /area/hydroponics) +"qpG" = ( +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Magazines for SP-91-RC"; + req_access = list(1) + }, +/obj/item/ammo_box/magazine/sp91rc{ + pixel_x = 8 + }, +/obj/item/ammo_box/magazine/sp91rc{ + pixel_x = 4 + }, +/obj/item/ammo_box/magazine/sp91rc, +/obj/item/ammo_box/magazine/sp91rc{ + pixel_x = -4 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "qqb" = ( /obj/effect/decal/warning_stripes/west, /obj/item/wrench, @@ -75639,6 +75261,25 @@ "qsg" = ( /turf/simulated/floor/plasteel, /area/quartermaster/office) +"qsl" = ( +/obj/structure/rack/gunrack, +/obj/item/gun/projectile/automatic/sp91rc{ + pixel_x = -7 + }, +/obj/item/gun/projectile/automatic/sp91rc{ + pixel_x = -2 + }, +/obj/item/gun/projectile/automatic/sp91rc{ + pixel_x = 2 + }, +/obj/item/gun/projectile/automatic/sp91rc{ + pixel_x = 7 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "qsm" = ( /obj/machinery/requests_console{ department = "Mechanic"; @@ -75664,6 +75305,13 @@ /obj/effect/decal/warning_stripes/northeast, /turf/simulated/floor/plating/airless, /area/space) +"qsM" = ( +/obj/machinery/computer/aiupload/cyborg, +/obj/item/radio/intercom/private{ + pixel_y = -28 + }, +/turf/simulated/floor/bluegrid, +/area/turret_protected/ai_upload) "qtm" = ( /obj/structure/girder, /turf/simulated/floor/plating, @@ -75723,6 +75371,31 @@ "qus" = ( /turf/simulated/wall/r_wall, /area/medical/research) +"qws" = ( +/obj/item/gun/projectile/shotgun/riot{ + pixel_x = -1; + pixel_y = 3 + }, +/obj/item/gun/projectile/shotgun/riot{ + pixel_x = -1 + }, +/obj/item/gun/projectile/shotgun/riot{ + pixel_x = -1; + pixel_y = -3 + }, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Riot shotguns" + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "qww" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -76642,6 +76315,20 @@ "qYv" = ( /turf/simulated/wall, /area/maintenance/cafeteria) +"qYH" = ( +/obj/structure/closet/secure_closet/security, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/clothing/mask/balaclava, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) "qYU" = ( /turf/simulated/floor/plasteel{ icon_state = "grimy" @@ -76716,6 +76403,29 @@ /obj/structure/chair/stool, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"rch" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window{ + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/clothing/shoes/jackboots/armored, +/obj/item/clothing/shoes/jackboots/armored, +/obj/item/clothing/shoes/jackboots/armored, +/obj/item/clothing/shoes/jackboots/armored, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/securearmory) "rcs" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -76765,6 +76475,19 @@ icon_state = "cafeteria" }, /area/maintenance/cafeteria) +"rdR" = ( +/obj/structure/table/reinforced, +/obj/item/restraints/handcuffs, +/obj/item/restraints/handcuffs{ + pixel_y = -4 + }, +/obj/item/crowbar, +/obj/item/radio/sec, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkredfull" + }, +/area/security/main) "rdT" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -76805,6 +76528,17 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"rfZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "rgv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -77323,6 +77057,20 @@ icon_state = "dark" }, /area/engineering/mechanic_workshop) +"rym" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/closet/sechammercabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/securearmory) "rzs" = ( /obj/machinery/door/airlock/research{ name = "Toxins Launch Room"; @@ -77615,30 +77363,6 @@ }, /turf/simulated/floor/engine/insulated, /area/maintenance/incinerator) -"rIF" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/clothing/suit/armor/riot, -/obj/item/shield/riot, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/head/helmet/riot, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/door/window{ - name = "Secure Armory"; - req_access = list(1) - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "rIH" = ( /obj/machinery/light_switch{ name = "south light switch"; @@ -78041,6 +77765,16 @@ /obj/effect/spawner/window/reinforced/plasma, /turf/simulated/floor/engine, /area/toxins/misc_lab) +"rVC" = ( +/obj/machinery/mech_bay_recharge_port{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/securearmory) "rVV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -78228,6 +77962,15 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/crew_quarters/courtroom) +"sbK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) "scD" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, @@ -78409,6 +78152,20 @@ }, /turf/simulated/floor/plasteel, /area/hallway/secondary/exit) +"siW" = ( +/obj/structure/table, +/obj/item/reagent_containers/spray/cleaner/medical{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner" + }, +/obj/machinery/camera{ + c_tag = "Medbay Surgery West Storage"; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/medical/surgery/north) "sjr" = ( /obj/structure/table/glass, /obj/machinery/computer/med_data/laptop, @@ -78623,6 +78380,14 @@ }, /turf/simulated/floor/plasteel, /area/hallway/primary/central/se) +"sqj" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/flasher/portable, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/securearmory) "squ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -78933,6 +78698,41 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"sAi" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/camera{ + c_tag = "Secure Armory East"; + dir = 8; + network = list("SS13","Security") + }, +/obj/structure/window/reinforced, +/obj/machinery/door/window{ + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/storage/box/barrier, +/obj/item/storage/box/barrier{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/barrier{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/item/grenade/barrier{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securearmory) "sAt" = ( /turf/simulated/floor/plasteel{ icon_state = "bcarpet05" @@ -79017,16 +78817,6 @@ /obj/structure/sign/biohazard, /turf/simulated/wall/r_wall, /area/medical/research) -"sDN" = ( -/obj/structure/table/reinforced, -/obj/item/razor, -/obj/structure/mirror{ - pixel_x = -28 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/civilian/barber) "sDO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -79050,6 +78840,28 @@ icon_state = "dark" }, /area/security/prisonershuttle) +"sDY" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window{ + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/clothing/gloves/combat/riot, +/obj/item/clothing/gloves/combat/riot, +/obj/item/clothing/gloves/combat/riot, +/obj/item/clothing/gloves/combat/riot, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securearmory) "sEj" = ( /obj/structure/cable{ icon_state = "4-8" @@ -79234,6 +79046,14 @@ icon_state = "dark" }, /area/toxins/mixing) +"sJo" = ( +/obj/structure/plasticflaps/mining, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2" + }, +/turf/simulated/floor/plating, +/area/quartermaster/storage) "sJv" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance, @@ -79339,6 +79159,24 @@ /obj/effect/decal/cleanable/fungus, /turf/simulated/wall/r_wall, /area/maintenance/xenozoo) +"sMs" = ( +/obj/machinery/camera{ + c_tag = "Xenobiology Module North"; + network = list("Research","SS13") + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/requests_console{ + department = "Xenobiology"; + departmentType = 2; + name = "Xenobiology Requests Console"; + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) "sMY" = ( /obj/structure/extinguisher_cabinet{ name = "east extinguisher cabinet"; @@ -79447,6 +79285,24 @@ icon_state = "whiteblue" }, /area/medical/paramedic) +"sQg" = ( +/obj/structure/rack/gunrack, +/obj/item/gun/energy/gun{ + pixel_x = -3 + }, +/obj/item/gun/energy/gun, +/obj/item/gun/energy/gun{ + pixel_x = 3 + }, +/obj/structure/window/reinforced, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "sQK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 @@ -79588,31 +79444,6 @@ }, /turf/simulated/floor/plasteel, /area/security/permabrig) -"sVp" = ( -/obj/structure/rack, -/obj/item/storage/belt/medical, -/obj/item/storage/belt/medical{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/storage/belt/medical{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/machinery/power/apc{ - name = "south bump"; - pixel_y = -24 - }, -/obj/structure/cable, -/obj/item/gun/syringe, -/obj/item/gun/syringe{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whitebluefull" - }, -/area/medical/biostorage) "sVG" = ( /obj/item/radio/intercom{ name = "north station intercom (General)"; @@ -79694,24 +79525,6 @@ icon_state = "dark" }, /area/medical/cloning) -"sYi" = ( -/obj/structure/table, -/obj/item/storage/box/gloves{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/masks, -/obj/item/reagent_containers/spray/cleaner/medical{ - desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; - name = "Surgery Cleaner" - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "showroomfloor" - }, -/area/medical/surgery/south) "sYn" = ( /obj/structure/table, /obj/item/storage/toolbox/surgery, @@ -79902,17 +79715,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint) -"tdQ" = ( -/obj/structure/closet/secure_closet/security, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/clothing/mask/balaclava, -/obj/effect/decal/warning_stripes/red, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/main) "tel" = ( /turf/simulated/wall/r_wall, /area/engineering/gravitygenerator) @@ -80251,6 +80053,26 @@ icon_state = "dark" }, /area/construction) +"tpZ" = ( +/obj/structure/table, +/obj/machinery/door/window{ + dir = 8; + name = "High-Risk Modules"; + req_access = list(20) + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/ai_module/oxygen, +/obj/item/ai_module/one_crew_member, +/obj/item/ai_module/purge, +/obj/item/ai_module/antimov, +/turf/simulated/floor/bluegrid, +/area/turret_protected/ai_upload) "tqG" = ( /obj/machinery/space_heater, /turf/simulated/floor/plating, @@ -80584,6 +80406,10 @@ }, /turf/simulated/floor/wood, /area/medical/psych) +"tEg" = ( +/obj/machinery/arcade/minesweeper, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) "tEL" = ( /obj/machinery/light_switch{ name = "south light switch"; @@ -80688,6 +80514,12 @@ /obj/effect/decal/warning_stripes/east, /turf/simulated/floor/plating, /area/storage/secure) +"tHu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) "tHw" = ( /obj/machinery/suit_storage_unit/engine, /obj/machinery/light{ @@ -81124,6 +80956,18 @@ icon_state = "darkred" }, /area/security/warden) +"tUD" = ( +/obj/machinery/computer/mech_bay_power_console, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/firealarm{ + name = "north fire alarm"; + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/securearmory) "tUK" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/generic, @@ -81197,6 +81041,18 @@ icon_state = "cafeteria" }, /area/medical/research/restroom) +"tWe" = ( +/obj/structure/closet/secure_closet/security, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/clothing/mask/balaclava, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) "tWU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -81339,6 +81195,15 @@ icon_state = "white" }, /area/medical/chemistry) +"uck" = ( +/obj/effect/decal/warning_stripes/north, +/obj/machinery/light, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2" + }, +/turf/simulated/floor/plating, +/area/quartermaster/storage) "ucp" = ( /obj/machinery/atmospherics/binary/pump{ dir = 8 @@ -81446,6 +81311,33 @@ }, /turf/simulated/floor/plasteel, /area/engineering/engine) +"ugf" = ( +/obj/structure/sign/security{ + pixel_y = 32 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/rack, +/obj/item/radio/sec{ + pixel_x = -4 + }, +/obj/item/radio/sec{ + pixel_x = 4 + }, +/obj/item/radio/sec{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/radio/sec{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/radio/sec{ + pixel_y = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "ugo" = ( /obj/structure/reagent_dispensers/watertank, /obj/machinery/atmospherics/unary/vent_pump/on, @@ -81912,6 +81804,37 @@ }, /turf/simulated/floor/plating, /area/maintenance/genetics) +"uyu" = ( +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Magazines for SMG" + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/ammo_box/magazine/wt550m9, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "uyv" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1 @@ -82281,6 +82204,17 @@ icon_state = "whiteblue" }, /area/security/medbay) +"uQt" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/dispenser/oxygen, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/securearmory) "uQF" = ( /obj/machinery/light{ dir = 8 @@ -83570,6 +83504,17 @@ icon_state = "floorgrime" }, /area/maintenance/incinerator) +"vHg" = ( +/obj/structure/closet/secure_closet/security, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/clothing/mask/balaclava, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) "vHh" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -83801,13 +83746,6 @@ icon_state = "darkgrey" }, /area/toxins/mixing) -"vNE" = ( -/obj/machinery/computer/borgupload, -/obj/item/radio/intercom/private{ - pixel_y = -28 - }, -/turf/simulated/floor/bluegrid, -/area/turret_protected/ai_upload) "vOi" = ( /obj/structure/cable{ icon_state = "4-8" @@ -84092,6 +84030,17 @@ }, /turf/simulated/floor/plasteel, /area/hallway/primary/aft) +"vWf" = ( +/obj/machinery/requests_console{ + department = "Research"; + departmentType = 2; + name = "Research Requests Console"; + pixel_x = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) "vWk" = ( /obj/effect/decal/warning_stripes/west, /obj/structure/cable{ @@ -84907,6 +84856,14 @@ icon_state = "grimy" }, /area/crew_quarters/heads) +"wqH" = ( +/obj/structure/table, +/obj/item/ai_module/protect_station, +/obj/item/ai_module/nanotrasen, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) "wqK" = ( /obj/structure/sign/securearea{ desc = "A warning sign which reads 'HIGH VOLTAGE'"; @@ -84915,6 +84872,33 @@ }, /turf/simulated/wall/r_wall, /area/storage/tech) +"wri" = ( +/obj/structure/closet/secure_closet/quartermaster, +/obj/item/extraction_pack, +/obj/item/fulton_core, +/obj/item/flash, +/obj/item/clipboard, +/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/megaphone{ + pixel_x = 7 + }, +/obj/item/stamp/qm{ + pixel_x = 7; + pixel_y = 3 + }, +/obj/item/mining_voucher, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/qm) "wrj" = ( /obj/machinery/light, /obj/effect/decal/warning_stripes/southeastcorner, @@ -85041,6 +85025,14 @@ }, /turf/simulated/floor/plasteel, /area/security/range) +"wwm" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/securearmory) "wwy" = ( /obj/structure/rack{ dir = 8; @@ -85375,6 +85367,22 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel, /area/toxins/storage) +"wGQ" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start/geneticist, +/obj/machinery/requests_console{ + department = "Genetics"; + departmentType = 1; + name = "Genetics Requests Console"; + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whitepurple" + }, +/area/medical/genetics) "wHa" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod Airlock" @@ -85648,6 +85656,17 @@ icon_state = "white" }, /area/medical/research) +"wOh" = ( +/obj/machinery/door_control{ + id = "surgeryobs2"; + name = "Privacy Shutters Control"; + pixel_y = 25 + }, +/obj/structure/closet/secure_closet/medical4, +/turf/simulated/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/surgery/south) "wOS" = ( /obj/structure/extinguisher_cabinet{ name = "north extinguisher cabinet"; @@ -85722,6 +85741,19 @@ /obj/item/book/manual/supermatter_engine, /turf/simulated/floor/plasteel, /area/engineering/engine) +"wQC" = ( +/obj/structure/table, +/obj/item/reagent_containers/spray/cleaner/medical{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/medical/surgery/south) "wQN" = ( /obj/structure/mirror{ pixel_x = 28 @@ -86036,6 +86068,28 @@ }, /turf/simulated/floor/engine, /area/engineering/mechanic_workshop) +"xaM" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window{ + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/clothing/shoes/combat/riot, +/obj/item/clothing/shoes/combat/riot, +/obj/item/clothing/shoes/combat/riot, +/obj/item/clothing/shoes/combat/riot, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/securearmory) "xbH" = ( /obj/effect/spawner/window/reinforced/polarized{ id = "qm" @@ -86485,40 +86539,6 @@ /obj/machinery/atmospherics/meter, /turf/simulated/floor/plasteel, /area/atmos) -"xnw" = ( -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Lethal bullets" - }, -/obj/item/ammo_box/c9mm, -/obj/item/ammo_box/c9mm{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/ammo_box/magazine/enforcer/lethal{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/ammo_box/magazine/enforcer/lethal, -/obj/item/ammo_box/magazine/enforcer/lethal{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/ammo_box/magazine/enforcer/lethal{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "xnH" = ( /obj/effect/decal/cleanable/generic, /turf/simulated/floor/plating, @@ -86552,6 +86572,13 @@ }, /turf/simulated/floor/plasteel, /area/maintenance/atmospherics) +"xoz" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/hallway/primary/aft) "xoJ" = ( /obj/item/restraints/handcuffs/cable/cyan, /obj/effect/decal/remains/human, @@ -87393,6 +87420,26 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"xRQ" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window{ + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/clothing/suit/armor/laserproof, +/obj/item/clothing/suit/armor/laserproof, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securearmory) "xSn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -87431,31 +87478,12 @@ }, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) -"xTp" = ( -/obj/structure/plasticflaps/mining, -/obj/machinery/conveyor{ - dir = 4; - id = "garbage" - }, -/turf/simulated/floor/plating, -/area/quartermaster/storage) "xTI" = ( /obj/structure/rack, /obj/item/wrench, /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/port) -"xTK" = ( -/obj/machinery/door/poddoor{ - id_tag = "QMLoaddoor"; - name = "supply dock loading door" - }, -/obj/machinery/conveyor{ - dir = 4; - id = "garbage" - }, -/turf/simulated/floor/plating, -/area/quartermaster/storage) "xTV" = ( /obj/structure/extinguisher_cabinet{ name = "north extinguisher cabinet"; @@ -87467,17 +87495,6 @@ }, /turf/simulated/floor/plasteel, /area/engineering/controlroom) -"xTY" = ( -/obj/effect/decal/warning_stripes/north, -/obj/machinery/status_display/supply_display{ - pixel_y = -32 - }, -/obj/machinery/conveyor{ - dir = 4; - id = "garbage" - }, -/turf/simulated/floor/plating, -/area/quartermaster/storage) "xVm" = ( /obj/machinery/newscaster{ name = "north newscaster"; @@ -87601,15 +87618,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint2) -"xYm" = ( -/obj/effect/decal/warning_stripes/north, -/obj/machinery/light, -/obj/machinery/conveyor{ - dir = 4; - id = "garbage" - }, -/turf/simulated/floor/plating, -/area/quartermaster/storage) "xZm" = ( /obj/effect/decal/warning_stripes/northeastcorner, /turf/simulated/floor/plasteel{ @@ -87801,6 +87809,42 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/engine, /area/engineering/mechanic_workshop) +"yfO" = ( +/obj/machinery/firealarm{ + dir = 4; + name = "east fire alarm"; + pixel_x = 24 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/maintenance/fsmaint) +"ygG" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window{ + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securearmory) "ygO" = ( /obj/machinery/light/small{ dir = 8 @@ -87848,12 +87892,6 @@ "yig" = ( /turf/simulated/wall/rust, /area/maintenance/fsmaint2) -"yjg" = ( -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/security/securearmory) "yjl" = ( /mob/living/simple_animal/pet/dog/security/warden, /obj/structure/bed/dogbed, @@ -98094,7 +98132,7 @@ cCu aYZ aYZ aYZ -bcN +dwN beh aSd aSd @@ -101435,7 +101473,7 @@ aWc lFU bge bcX -bgu +aWS aMs aMs aMs @@ -104548,7 +104586,7 @@ tst uXX syu uXX -xTp +sJo syu uTI uTI @@ -104771,7 +104809,7 @@ aPi aMA aSa bdd -czC +kqL aWl aXQ aXQ @@ -104805,7 +104843,7 @@ tsS uZo rmn uZo -xTK +mOu rmn uTI uTI @@ -105028,7 +105066,7 @@ aMA aMA aSa bdd -aVg +myk aWl aXQ aXQ @@ -105062,7 +105100,7 @@ tst uXX rmn uXX -xTp +sJo rmn uTI uTI @@ -105319,7 +105357,7 @@ nMQ vaY whv vaY -xTY +dic bxb uTI uTI @@ -105576,7 +105614,7 @@ nMQ bKz dSG bWL -xYm +uck bxb uTI uTI @@ -105833,7 +105871,7 @@ nMQ bKz bYy bKz -dcY +sfT rmn uTI uTI @@ -106090,7 +106128,7 @@ nMQ vkZ bYy vkZ -dcY +sfT rmn uTI ylx @@ -106347,7 +106385,7 @@ nMQ vkZ bYy vkZ -dcY +sfT rmn uTI ylx @@ -106604,7 +106642,7 @@ nMQ vkZ whC vkZ -dcY +sfT rmn uTI ylx @@ -110464,7 +110502,7 @@ cas cbK cls cis -ckq +wri bYM jiK eKX @@ -111487,7 +111525,7 @@ sdq tPq tPq wZO -tPq +gWJ tPq cbL tPq @@ -112793,7 +112831,7 @@ czN kyC uTI cNS -cFa +xoz pjs tcA cKb @@ -113815,7 +113853,7 @@ cgW cgW gth dsp -cCM +lUn cyr vVH map @@ -114746,15 +114784,15 @@ aiv abO aiv aiv -acR -aeo -akf -ama -ama -arG -pUD -pUD -rIF +gTm +qzT +ikW +xRQ +nGQ +epd +ygG +sDY +xaM vUG aep oJy @@ -114811,10 +114849,10 @@ bqO bsv bvX bvX -bxm -byK +etU +kSS fRL -bBw +faz bvX uTI uTI @@ -115002,16 +115040,16 @@ uTI aiv abO aiv -acR -aeo -yjg -yjg -yjg -yjg -yjg -yjg -yjg -yjg +jaK +qzT +qzT +qzT +qzT +qzT +qzT +qzT +qzT +dba aAl aqv oJy @@ -115259,11 +115297,11 @@ lTl aiv abO aiv -acS -aev -qzT -qzT -amb +cRE +eTm +ahU +akv +rfZ alk alk atp @@ -115516,16 +115554,16 @@ uTI aiv abO aiv -acW +cRE +qzT +sQg +bFA +pjp qzT -ahU -akv -amh qzT -yjg -yjg -yjg -yjg +qzT +qzT +dba aAr aBT oJy @@ -115545,7 +115583,7 @@ cZE avW bei cZE -cZE +lZT aAO aCj aDj @@ -115773,16 +115811,16 @@ lTl aiv abO aiv -acY -yjg -acB -akl -dbn -icF -arI -ahD -qcp -ayE +wwm +qzT +obe +qsl +klV +gKZ +fKn +mlW +pYe +rch vUG aBZ orW @@ -116030,12 +116068,12 @@ uTI aiv abO aiv -ada -yjg -ale -akn -dbn -apy +uQt +qzT +jYt +qpG +rym +aiv aiv aiv aiv @@ -116099,7 +116137,7 @@ dpx bxo bDV bFb -vNE +qsM bvX jck bFC @@ -116287,13 +116325,13 @@ lTl aiv abO aiv -acY -yjg -adt -akt -amv +sqj +qzT +kKX +uyu +mTj aiv -alU +ugf ats aiz aiv @@ -116544,10 +116582,10 @@ uTI aiv abO aiv -adg +sqj qzT -fSC -fSC +qws +iPG brW mKg arJ @@ -116801,11 +116839,11 @@ lTl aiv abO aiv -adh +tUD acH ahV alk -pyg +ebY gqF fhJ dqg @@ -116867,10 +116905,10 @@ dkJ bsz bvX bvX -bCy -bDW +wqH +mYY bzW -bBz +tpZ bvX uTI uTI @@ -117058,7 +117096,7 @@ uTI aiv abO aiv -adj +myj qzT qzT qzT @@ -117315,11 +117353,11 @@ lTl aiv abO aiv -adm -aeR -yjg -yjg -yjg +rVC +jYJ +qzT +qzT +qzT qzT qzT qzT @@ -117351,7 +117389,7 @@ boN aEi aFw bxc -byT +pHL axe aKy aMj @@ -117573,10 +117611,10 @@ aiv abO aiv aiv -acO -aik -xnw -amK +pCR +sAi +pqt +oaf aiv ajr aci @@ -117605,7 +117643,7 @@ azN nKY aCq boO -aEm +hkL aFA bxh byV @@ -118094,10 +118132,10 @@ abO abO abO aiv -acv -tdQ -acj -alZ +qYH +kUl +eBW +fvE jYT eDL anJ @@ -118358,7 +118396,7 @@ pHt aEC tJR aHU -ahY +rdR xXJ aqC ajm @@ -119122,10 +119160,10 @@ abM apP arP nEQ -adk -adk -adx -adQ +vHg +vHg +gxq +tWe aek eDL vjh @@ -120175,14 +120213,14 @@ azW tjI aCw aIq -gel -gel -gel -gel -gel -gel -gel -gel +awl +awl +awl +awl +aRF +awl +awl +awl bUC aQn aSx @@ -120432,15 +120470,15 @@ aCw aCw aCw aIq -gel -buF -aGG -aId -aJp -sDN -bIs -gel -aPP +awl +kAX +kiJ +eBc +axW +axW +nDs +awl +qmr bbo aZt aZt @@ -120689,14 +120727,14 @@ azY avq wCH aIq -gel -buL -bxt -iHY -bAH -iHY -bIz -gel +awl +jVz +grV +avq +fPD +axW +nPM +awl bUD aQp aZv @@ -120946,14 +120984,14 @@ azX aKK aKK bpg -gel -aGK -fbY -aIi -aKE -bFL -bIL -mOm +awl +cem +sbK +oJS +pLK +tHu +iOJ +bLQ bUN aQo cbn @@ -121203,10 +121241,10 @@ avq avq aBq avq -gel -aDP -bxu -bzm +awl +lWI +yfO +tEg aFI aFI aFI @@ -122030,7 +122068,7 @@ igg ckS rIH cgJ -gWr +fwi dFD tIU tNm @@ -122038,7 +122076,7 @@ smQ yeJ nHR kjn -cKO +siW cQk vWE crm @@ -123267,7 +123305,7 @@ aJx aKL aMH aFI -aJA +mJX aVw aSL lYa @@ -123829,7 +123867,7 @@ bZh cgL bWa cDf -cef +wOh cfG kZl qDJ @@ -124582,7 +124620,7 @@ uwX rgv uwX bOD -jRJ +myy bJP bJP bGt @@ -125114,7 +125152,7 @@ bXK jJj caJ cDf -sYi +wQC cfC chp ciJ @@ -125358,7 +125396,7 @@ bEu bEu bEu fWY -bLF +gVz bQa bQa bQZ @@ -126131,7 +126169,7 @@ bEu bOU qIc bNK -sVp +fRu bLK vGz bTh @@ -128709,7 +128747,7 @@ bZY ccc bWE bWE -bZz +wGQ cjF gab vvD @@ -130746,7 +130784,7 @@ dmN byU dqC bau -bwv +kTi bFr bwv bEA @@ -132587,7 +132625,7 @@ qus qus bIi bIi -cMl +sMs cWi cEH cPm @@ -132823,7 +132861,7 @@ cdC ceK uKx cjL -clg +hFV clW qTP coA @@ -133300,7 +133338,7 @@ baz xDP ndQ baz -cIa +omn cKT bel bfW @@ -133836,7 +133874,7 @@ bwv tGd kBi bGF -nfM +vWf bNk bPd bRP @@ -134861,8 +134899,8 @@ cWJ bwv gkd bwv -bUQ -kIe +oBC +bSz bSz bIt bNp diff --git a/_maps/map_files/debug/multiz_test.dmm b/_maps/map_files/debug/multiz_test.dmm index 8fb4258f8705..125f3aa81a22 100644 --- a/_maps/map_files/debug/multiz_test.dmm +++ b/_maps/map_files/debug/multiz_test.dmm @@ -444,6 +444,15 @@ }, /turf/simulated/floor/plasteel, /area/construction/hallway) +"mj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/hallway/primary/central) "mH" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -784,6 +793,12 @@ }, /turf/simulated/floor/plasteel, /area/hallway/primary/central) +"uT" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/construction/hallway) "uY" = ( /obj/structure/cable{ icon_state = "4-8" @@ -21263,7 +21278,7 @@ oS wV ZZ Os -rW +mj Sj Sj Bb @@ -86799,7 +86814,7 @@ DC DC nE YU -Ly +uT wl wl YU diff --git a/_maps/map_files/event/Station/coldcolony.dmm b/_maps/map_files/event/Station/coldcolony.dmm new file mode 100644 index 000000000000..7b28ab19dd6d --- /dev/null +++ b/_maps/map_files/event/Station/coldcolony.dmm @@ -0,0 +1,154823 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aaE" = ( +/obj/item/floor_painter, +/obj/structure/table, +/turf/simulated/floor/plating, +/area/toxins/explab) +"aaQ" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/hallway/primary/fore) +"aaV" = ( +/obj/structure/weightmachine/stacklifter, +/obj/effect/turf_decal/siding/thinplating, +/turf/simulated/floor/plasteel/white, +/area/crew_quarters/fitness) +"abd" = ( +/obj/structure/chair/sofa/pew/right{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "chapel" + }, +/area/chapel/main) +"abg" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"abq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research) +"abx" = ( +/obj/structure/snowman/built, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"aby" = ( +/turf/simulated/floor/wood{ + icon_state = "wood-broken6" + }, +/area/crew_quarters/theatre) +"abG" = ( +/obj/structure/flora/grass/brown, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"abH" = ( +/obj/effect/decal/warning_stripes/north, +/obj/machinery/papershredder, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/chief) +"abI" = ( +/turf/simulated/wall/rust, +/area/coldcolony/ruin/ore_production) +"abO" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/lounge) +"abZ" = ( +/obj/machinery/power/port_gen/pacman/super{ + anchored = 1 + }, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) +"acb" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/bluegrid, +/area/turret_protected/ai_upload) +"ace" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/flora/ausbushes/leafybush, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"acm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"acq" = ( +/obj/machinery/door/airlock/maintenance{ + req_access = list(47) + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"acK" = ( +/obj/structure/closet/crate, +/obj/item/light/tube, +/obj/item/light/tube, +/obj/item/holosign_creator/atmos, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"acM" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1; + color = "#9932CC" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"acY" = ( +/turf/simulated/wall, +/area/medical/surgery/north) +"adg" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/sw) +"adm" = ( +/mob/living/simple_animal/hostile/winter/reindeer, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"ado" = ( +/obj/machinery/atmospherics/binary/pump/on{ + desc = "Отправляет дыхательную смесь к коннекторам"; + name = "Дыхательную смесь к коннекторам"; + target_pressure = 3000; + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/atmos) +"adq" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wideplating{ + color = "#332a2a"; + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"adr" = ( +/obj/structure/window/full/reinforced/ice, +/obj/structure/grille, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/chapel/office) +"ads" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"adx" = ( +/obj/structure/chair/sofa/right{ + dir = 8 + }, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/theatre) +"adC" = ( +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"adE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel, +/area/quartermaster/qm) +"adI" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"adN" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"adQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"adZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/obj/item/flag/nt, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/vip) +"ael" = ( +/obj/effect/decal/warning_stripes/east, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"aep" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/eastleft{ + dir = 2; + name = "Kitchen Desk"; + req_access = list(28) + }, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"aer" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken6" + }, +/area/ruin/unpowered) +"aev" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/reception) +"aex" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"aeF" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + dir = 9 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"aeM" = ( +/obj/item/flag/chameleon{ + icon_state = "syndiflag"; + name = "Syndicate Flag"; + used = 1 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/syndie_outpost) +"aeR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"afx" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/hallway/primary/fore) +"afH" = ( +/obj/machinery/vending/hatdispenser, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"afR" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"agg" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkredfull" + }, +/area/shuttle/pirate_corvette) +"agn" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/sleeper) +"ago" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"agy" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"agz" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/miningeva) +"agA" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"agF" = ( +/obj/structure/window/full/reinforced/ice, +/obj/structure/grille, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/hallway/primary/central/north) +"agK" = ( +/obj/structure/chair, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) +"ahk" = ( +/obj/machinery/suit_storage_unit/blueshield, +/turf/simulated/floor/wood/fancy/oak, +/area/blueshield) +"ahq" = ( +/turf/simulated/wall, +/area/security/brigstaff) +"ahr" = ( +/obj/effect/decal/warning_stripes/north, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"ahH" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/warning_stripes/north, +/obj/machinery/light, +/turf/simulated/floor/plasteel, +/area/medical/virology/lab) +"ahY" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 1 + }, +/obj/effect/decal/warning_stripes/west, +/turf/simulated/floor/plating, +/area/security/permabrig) +"aic" = ( +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"ail" = ( +/obj/machinery/kitchen_machine/grill, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"aio" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Theatre" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"aiv" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/storage/box/teargas, +/obj/item/storage/box/teargas{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"aiN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"ajr" = ( +/obj/machinery/computer/secure_data, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/warden) +"ajt" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/obj/vehicle/ridden/snowmobile/key, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"aju" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 1; + name = "Труба дыхательной смеси" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"ajw" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"ajP" = ( +/obj/machinery/vending/sustenance/additional, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"ajS" = ( +/obj/effect/decal/warning_stripes/southeast, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permahallway) +"ajX" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 4; + name = "Труба фильтрации" + }, +/obj/machinery/atmospherics/meter, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"aky" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/secondary/entry/lounge) +"all" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/vip) +"alA" = ( +/obj/machinery/tcomms/core/station, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/tcommsat/chamber) +"alC" = ( +/obj/item/flag/mime, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) +"alN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"alQ" = ( +/obj/machinery/door/airlock/security{ + name = "Evidence Storage"; + req_access = list(63) + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/evidence) +"amd" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"aml" = ( +/obj/structure/table/wood, +/obj/item/paper/ntrep, +/turf/simulated/floor/carpet/royalblue, +/area/ntrep) +"amv" = ( +/obj/effect/baseturf_helper/asteroid, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"amx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkpurple" + }, +/area/medical/virology/lab) +"amX" = ( +/obj/machinery/papershredder, +/obj/item/radio/intercom{ + pixel_y = -26 + }, +/turf/simulated/floor/wood/fancy/light, +/area/bridge) +"anf" = ( +/obj/effect/decal/cleanable/spiderling_remains, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) +"anl" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hydroponics) +"anm" = ( +/obj/machinery/vending/coffee, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"ann" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/table/wood, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"anp" = ( +/turf/simulated/wall, +/area/ruin/unpowered) +"anq" = ( +/obj/structure/disposalpipe/junction/reversed{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) +"ant" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/paper_bin, +/obj/item/pen/multi, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"anw" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"anG" = ( +/obj/structure/table/reinforced, +/obj/machinery/kitchen_machine/microwave, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "yellow" + }, +/area/engineering/break_room) +"anW" = ( +/obj/effect/decal/cleanable/generic, +/obj/effect/landmark/tiles/damageturf, +/obj/effect/decal/snow/sand/edge{ + dir = 5 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"anY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/qm) +"aoe" = ( +/obj/machinery/door_control{ + id = "paramedic"; + name = "Garage Door Control"; + req_access = list(66); + pixel_x = 24; + pixel_y = 24 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/paramedic) +"aoi" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/warning_stripes/blue, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"aoB" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"aoE" = ( +/obj/structure/rack, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/random/tool, +/obj/random/tool, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/atmos) +"aoU" = ( +/obj/structure/closet, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/entry/lounge) +"aoW" = ( +/turf/simulated/wall/rust, +/area/hallway/secondary/entry/commercial) +"aoY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/checkpoint) +"aoZ" = ( +/obj/structure/table/reinforced, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/turretid/lethal{ + ailock = 1; + dir = 1; + faction = "pirate"; + name = "Corvette turrets"; + req_access = list(160); + syndicate = 1; + pixel_x = -32 + }, +/obj/item/gps{ + tracking = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/shuttle/pirate_corvette) +"apb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/power/apc/worn_out{ + cell_type = 0; + pixel_y = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/wood/oak, +/area/civilian/vacantoffice) +"apx" = ( +/obj/item/chair/wood/wings, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"apT" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood{ + icon_state = "wood-broken" + }, +/area/crew_quarters/bar/atrium) +"apU" = ( +/obj/item/trash/candy, +/obj/item/trash/can, +/obj/item/trash/pistachios, +/obj/effect/decal/warning_stripes/yellow, +/obj/effect/decal/cleanable/dirt, +/obj/item/shard{ + icon_state = "medium"; + pixel_x = -7; + pixel_y = -10 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"aqS" = ( +/obj/effect/landmark/start/security_officer, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/brig) +"aqU" = ( +/obj/effect/decal/warning_stripes/west, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"ard" = ( +/obj/structure/statue/tranquillite/mime/unique, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) +"arg" = ( +/obj/effect/landmark/start/doctor, +/obj/structure/chair/comfy/teal{ + dir = 8 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"arl" = ( +/obj/item/flashlight, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"art" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"aru" = ( +/turf/simulated/floor/plating, +/area/maintenance/casino) +"arv" = ( +/obj/machinery/power/apc{ + pixel_y = 26; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkblue" + }, +/area/ntrep) +"arw" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"arH" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood{ + icon_state = "wood-broken5" + }, +/area/crew_quarters/theatre) +"arK" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/hallway/primary/fore) +"arM" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securehallway) +"arQ" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/assembly/robotics) +"arT" = ( +/obj/effect/decal/warning_stripes/yellow/partial, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"arY" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/arcade/minesweeper, +/turf/simulated/floor/carpet/arcade, +/area/crew_quarters/fitness) +"asc" = ( +/obj/effect/landmark/start/psychiatrist, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"ase" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id_tag = "Brig_lockdown"; + name = "Brig Lockdown" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/security/reception) +"asj" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/north) +"asr" = ( +/obj/structure/mineral_door/wood, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"asy" = ( +/obj/machinery/computer/secure_data, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/reception) +"asH" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/effect/turf_decal/weather/snow/corner, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"ate" = ( +/obj/effect/decal/warning_stripes/blue, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/storage/firstaid/doctor, +/obj/item/storage/firstaid/fire{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"ats" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"atw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/random{ + pixel_x = -32 + }, +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"atE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"aud" = ( +/obj/structure/rack, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/stack/sheet/plasteel{ + amount = 10 + }, +/obj/item/stack/sheet/plasteel{ + amount = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/engineering/break_room) +"auh" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"auy" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"auB" = ( +/obj/machinery/door/airlock/silver{ + name = "Captain's Bathroom" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/captain/bedroom) +"auC" = ( +/obj/machinery/conveyor{ + dir = 9; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"auF" = ( +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"auR" = ( +/obj/effect/decal/cleanable/generic, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"avb" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"avd" = ( +/obj/structure/table/wood, +/obj/item/storage/secure/briefcase, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"avg" = ( +/obj/structure/shuttle/engine/heater, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"avt" = ( +/obj/structure/table, +/obj/machinery/kitchen_machine/microwave, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/nosmoking_2{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"avv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"avC" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/effect/decal/warning_stripes/south, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permahallway) +"avS" = ( +/obj/structure/table/wood/fancy/royalblack, +/obj/item/cane, +/obj/structure/sign/nosmoking_1{ + pixel_x = 32 + }, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"avY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"awh" = ( +/obj/structure/table, +/obj/item/flash, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "red" + }, +/area/hallway/primary/starboard/east) +"awu" = ( +/obj/structure/dresser, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"awv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/lobby) +"awy" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/item/stack/sheet/metal, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"awz" = ( +/turf/simulated/floor/wood{ + icon_state = "wood-broken6" + }, +/area/maintenance/kitchen) +"awI" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"awU" = ( +/obj/machinery/door/poddoor{ + id_tag = "engstorage"; + name = "Secure Storage Blast Doors" + }, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"axl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin2) +"axw" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/sorting) +"axM" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"axN" = ( +/obj/structure/window/full/reinforced/ice, +/obj/structure/grille, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/hallway/primary/central/se) +"axS" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/cmostore) +"ayk" = ( +/obj/structure/chair/office{ + dir = 4 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken" + }, +/area/ruin/unpowered) +"ayF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"ayU" = ( +/obj/structure/table/reinforced, +/obj/item/restraints/handcuffs{ + pixel_y = -3 + }, +/obj/item/restraints/handcuffs, +/obj/item/restraints/handcuffs{ + pixel_y = 3 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/main) +"azf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/landmark/start/warden, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/warden) +"azl" = ( +/obj/structure/closet, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/central/se) +"azt" = ( +/obj/machinery/defibrillator_mount/loaded{ + pixel_x = -32; + pixel_y = -2 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "arrival" + }, +/area/shuttle/pirate_corvette) +"azv" = ( +/turf/simulated/wall/r_wall/rust, +/area/atmos/control) +"azM" = ( +/obj/machinery/door/airlock/research{ + name = "Supermatter"; + obj_integrity = 40 + }, +/obj/machinery/door/firedoor/closed, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_chamber) +"azS" = ( +/obj/machinery/vending/cola, +/obj/effect/decal/warning_stripes/yellow/partial, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge) +"azV" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/fitness) +"aAe" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/crew_quarters/chief) +"aAq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"aAC" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"aAX" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/greengrid, +/area/security/nuke_storage) +"aBm" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/crew_quarters/chief) +"aBo" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/brig) +"aBP" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "eslock" + }, +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/turf/simulated/floor/plating, +/area/hallway/secondary/exit) +"aBQ" = ( +/obj/item/lighter{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/camera{ + c_tag = "Locker Room"; + dir = 1 + }, +/obj/structure/table, +/obj/machinery/light, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"aBS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"aBT" = ( +/turf/simulated/wall/shuttle/nosmooth{ + dir = 10; + icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi'; + icon_state = "gray_walls_corners" + }, +/area/shuttle/pirate_corvette) +"aCa" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/sunnybush, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"aCc" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"aCo" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/binary/pump/on{ + target_pressure = 303.325; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"aCr" = ( +/obj/structure/mopbucket/full, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"aCv" = ( +/obj/machinery/atmospherics/unary/tank, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"aCS" = ( +/obj/structure/flora/grass/green, +/turf/simulated/wall/r_wall, +/area/coldcolony/ruin/sm_chamber) +"aCT" = ( +/obj/structure/table/wood, +/obj/item/candle{ + pixel_x = 2 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library/game_zone) +"aDk" = ( +/obj/machinery/door/airlock/external{ + id_tag = "specops_home"; + locked = 1 + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry) +"aDz" = ( +/obj/item/reagent_containers/hypospray/autoinjector/charcoal, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"aDC" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"aDF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/damageturf, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"aDQ" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"aDV" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"aDY" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/obj/machinery/newscaster{ + pixel_x = -30 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"aEg" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/crate/engineering, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/item/stack/sheet/plasteel{ + amount = 15 + }, +/obj/item/stack/sheet/plasteel{ + amount = 15 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel, +/area/assembly/robotics) +"aFh" = ( +/obj/structure/flora/grass/both, +/obj/structure/flora/grass/brown, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"aFp" = ( +/obj/structure/table/tray, +/obj/item/storage/backpack/duffel/syndie/surgery, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "arrival" + }, +/area/shuttle/pirate_corvette) +"aFw" = ( +/obj/structure/mopbucket/full, +/obj/item/mop, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"aFx" = ( +/obj/structure/fence/door{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/effect/turf_decal/weather/snow/corner, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"aFA" = ( +/obj/structure/table, +/obj/item/folder/yellow{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/folder/red, +/obj/item/folder/blue{ + pixel_x = -3; + pixel_y = 2 + }, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"aFQ" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) +"aGI" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/item/shard{ + icon_state = "small" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_chamber) +"aGO" = ( +/obj/machinery/constructable_frame/machine_frame, +/turf/simulated/floor/plating, +/area/toxins/explab) +"aGX" = ( +/obj/structure/computerframe, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"aHa" = ( +/turf/simulated/floor/plating, +/area/security/securearmory) +"aHg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"aHl" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"aHq" = ( +/obj/structure/table/wood/fancy, +/obj/item/trash/candle, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"aHB" = ( +/obj/structure/table/reinforced, +/obj/item/folder/blue, +/obj/machinery/door/window/brigdoor/northleft{ + name = "Access Desk"; + req_access = list(57) + }, +/obj/machinery/door/window/westright{ + dir = 2; + name = "Access Queue" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "hopprivacy"; + name = "Head of Personal Privacy Shutters" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/heads/hop) +"aHC" = ( +/obj/effect/landmark/ninja_teleport, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/wood/oak, +/area/civilian/vacantoffice) +"aHM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain/bedroom) +"aHU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/item/cigbutt{ + pixel_x = -10; + pixel_y = -6 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"aIs" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"aIL" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/engineering) +"aIP" = ( +/obj/effect/decal/remains, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"aJc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"aJj" = ( +/obj/machinery/door/window/brigdoor{ + dir = 8; + id = "Cell 2"; + name = "Cell 2"; + req_access = list(2) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"aJo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securehallway) +"aJz" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/security/lobby) +"aJH" = ( +/obj/machinery/door/airlock{ + id_tag = "toilet3"; + name = "Toilet" + }, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"aJM" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"aJT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"aKb" = ( +/obj/structure/bed, +/obj/item/bedsheet/hos, +/obj/effect/landmark/start/head_of_security, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/sign/poster/secret/lady{ + pixel_x = -32 + }, +/turf/simulated/floor/carpet/red, +/area/security/hos) +"aKh" = ( +/turf/simulated/mineral/random{ + turf_type = /turf/simulated/floor/plating/asteroid/snow/planet + }, +/area/ruin/unpowered) +"aKu" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Storage"; + req_access = list(50) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) +"aKw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/paramedic) +"aKM" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister, +/turf/simulated/floor/plasteel, +/area/atmos) +"aKR" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/wood, +/area/coldcolony/morgue) +"aLo" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/bridge/vip) +"aLp" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"aLA" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/obj/random/technology_scanner, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"aLB" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"aLE" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/effect/landmark/start/chief_engineer, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/chief) +"aLL" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/theatre) +"aLV" = ( +/obj/machinery/door/airlock/command{ + name = "Head of Security"; + req_access = list(58) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/hos) +"aLX" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"aMf" = ( +/obj/machinery/porta_turret/syndicate/pod{ + name = "machine gun turret (4.6x30mm)"; + faction = "pirate"; + dir = 6; + pixel_x = -2 + }, +/turf/simulated/wall/shuttle/nosmooth{ + dir = 6; + icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi'; + icon_state = "gray_walls_corners"; + density = 0 + }, +/area/shuttle/pirate_corvette) +"aMn" = ( +/obj/structure/table_frame, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"aMv" = ( +/obj/machinery/atmospherics/unary/outlet_injector/on{ + id = "n2_in" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/engine/n2{ + nitrogen = 10000 + }, +/area/atmos) +"aMD" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/food/snacks/bun, +/obj/item/reagent_containers/food/snacks/meat, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"aMK" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"aML" = ( +/obj/structure/closet/secure_closet/security, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/clothing/suit/hooded/wintercoat/security, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/customs) +"aMN" = ( +/obj/structure/table/wood, +/obj/item/flashlight/seclite, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/hos) +"aMW" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitebluecorner" + }, +/area/medical/genetics) +"aNk" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"aNs" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/permahallway) +"aNv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/camera{ + c_tag = "Residential Block East Hallway"; + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"aNT" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, +/obj/item/reagent_containers/iv_bag/blood/grey, +/obj/item/reagent_containers/iv_bag/blood/nian, +/obj/item/reagent_containers/iv_bag/blood/tajaran, +/obj/item/reagent_containers/iv_bag/blood/vulpkanin, +/obj/effect/decal/warning_stripes/blue/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/sleeper) +"aNY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/effect/landmark/start/cargo_technician, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"aOQ" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge/vip) +"aOV" = ( +/obj/structure/chair/comfy/black{ + dir = 1 + }, +/turf/simulated/floor/carpet/royalblack, +/area/bridge) +"aOW" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen{ + pixel_x = 8 + }, +/obj/item/flashlight/lamp, +/turf/simulated/floor/wood, +/area/coldcolony/morgue) +"aPj" = ( +/obj/structure/flora/grass/both, +/obj/structure/flora/tree/dead, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"aPt" = ( +/obj/machinery/computer/med_data, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkblue" + }, +/area/bridge) +"aPI" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_x = 1; + pixel_y = 3 + }, +/obj/machinery/light_switch{ + pixel_x = 8; + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/reception) +"aPY" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hydroponics) +"aQk" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"aQq" = ( +/obj/structure/closet/crate/engineering, +/obj/item/stack/sheet/metal{ + amount = 20 + }, +/obj/item/mounted/shower, +/obj/item/mounted/shower{ + pixel_x = -3; + pixel_y = -2 + }, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"aQt" = ( +/obj/item/radio/intercom{ + pixel_y = 24 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain) +"aQE" = ( +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/crew_quarters/chief) +"aQK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/binary/volume_pump{ + desc = "Позволяет опустошить трубу дыхательной смеси, отправив её в отходы на повторную фильтрацию"; + dir = 1; + name = "Дыхательную смесь в отходы" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"aQM" = ( +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"aQW" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/bridge/meeting_room) +"aRl" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"aRq" = ( +/obj/structure/fence{ + dir = 4 + }, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"aRx" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/carpet/arcade, +/area/crew_quarters/fitness) +"aRz" = ( +/obj/structure/fans/tiny, +/obj/effect/decal/snow/sand/edge{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/research{ + name = "Research Division" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research) +"aRH" = ( +/turf/simulated/floor/plasteel, +/area/assembly/robotics) +"aRM" = ( +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"aSq" = ( +/obj/machinery/ticket_machine{ + layer = 4; + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/primary/fore) +"aSr" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/tcommsat/chamber) +"aSC" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/table/reinforced, +/obj/item/clothing/gloves/color/black, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) +"aSK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/wall, +/area/maintenance/asmaint) +"aSS" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"aTd" = ( +/obj/structure/flora/grass/brown, +/obj/structure/flora/tree/pine, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"aTf" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel, +/area/atmos) +"aTg" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"aTl" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light_switch{ + pixel_y = 24; + pixel_x = 8 + }, +/obj/structure/rack, +/obj/item/circuitboard/protolathe{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/circuitboard/autolathe{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/item/circuitboard/rdconsole{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/circuitboard/circuit_imprinter{ + pixel_x = 5; + pixel_y = -5 + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) +"aTo" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"aTz" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/grassybush, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/grass, +/area/hallway/secondary/exit) +"aTA" = ( +/turf/simulated/floor/bluegrid, +/area/turret_protected/ai_upload) +"aTH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/brig) +"aTO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"aTQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"aUd" = ( +/obj/machinery/light_construct{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/toxins/explab) +"aUo" = ( +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_y = -32 + }, +/turf/simulated/floor/carpet/royalblue, +/area/ntrep) +"aUA" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"aVk" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain/bedroom) +"aVm" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Bar" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/wood{ + icon_state = "wood-broken5" + }, +/area/crew_quarters/bar/atrium) +"aVT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"aVZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light{ + icon_state = "light-fancy-wood-broken2" + }, +/area/crew_quarters/theatre) +"aWe" = ( +/obj/effect/turf_decal/arrows{ + dir = 1; + pixel_y = -14 + }, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"aWr" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"aWv" = ( +/obj/structure/disposalpipe/junction/yjunction{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"aWC" = ( +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/obj/item/trash/syndi_cakes{ + pixel_y = 7 + }, +/obj/item/trash/sosjerky, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"aWI" = ( +/obj/machinery/vending/wallmed{ + pixel_x = -25 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"aWU" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/decal/warning_stripes/blue/hollow, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"aXc" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen/fancy, +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain) +"aXh" = ( +/obj/structure/table, +/obj/item/radio/intercom/locked/prison{ + pixel_x = 28 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"aXK" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkbluecorners" + }, +/area/bridge/meeting_room) +"aXY" = ( +/obj/machinery/floodlight, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"aYb" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"aYf" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/exit) +"aYp" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"aYL" = ( +/obj/machinery/papershredder, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/wood/oak, +/area/civilian/vacantoffice) +"aYN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"aZb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/landmark/start/scientist, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"aZm" = ( +/obj/machinery/vending/wallmed{ + pixel_y = -1; + pixel_x = 25 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/qm) +"aZE" = ( +/obj/structure/chair/sofa/pew/right, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"aZN" = ( +/obj/structure/grille, +/obj/structure/window/plasmareinforced, +/obj/structure/window/plasmareinforced{ + dir = 4 + }, +/obj/structure/window/plasmareinforced{ + dir = 1 + }, +/obj/structure/window/plasmareinforced{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 1; + name = "Труба фильтрации" + }, +/turf/simulated/floor/plating, +/area/atmos) +"baj" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"bau" = ( +/obj/machinery/door/airlock{ + name = "Bar Office"; + req_access = list(25) + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/bar) +"baA" = ( +/obj/effect/decal/warning_stripes/northeast, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "purple" + }, +/area/assembly/chargebay) +"baI" = ( +/turf/simulated/wall/r_wall, +/area/security/securehallway) +"baQ" = ( +/obj/structure/urinal{ + pixel_y = 28 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker/locker_toilet) +"baR" = ( +/obj/structure/rack, +/obj/item/reagent_containers/food/drinks/cans/non_alcoholic_beer, +/obj/item/reagent_containers/food/drinks/cans/non_alcoholic_beer, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"bbj" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 1; + name = "Труба смешивания" + }, +/obj/machinery/atmospherics/meter, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"bbm" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/vehicle/ridden/snowmobile/key, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"bbD" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"bbQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"bbV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) +"bbZ" = ( +/obj/structure/sink{ + dir = 1; + layer = 5; + pixel_y = -5 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"bca" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/food/snacks/doshik, +/obj/item/reagent_containers/food/snacks/doshik, +/obj/item/reagent_containers/food/snacks/doshik_spicy, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "blue" + }, +/area/crew_quarters/cabin1) +"bcg" = ( +/obj/structure/filingcabinet/security, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood/fancy/birch{ + icon_state = "fancy-wood-birch-broken2" + }, +/area/bridge/checkpoint/south) +"bci" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/storage) +"bcK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"bcV" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"bcW" = ( +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/lobby) +"bcX" = ( +/obj/machinery/computer/brigcells, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/warden) +"bdm" = ( +/obj/structure/table/reinforced, +/obj/item/folder/yellow, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/folder/blue{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"bdn" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"beh" = ( +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"bev" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/landmark/start/scientist, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"bew" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_chamber) +"beA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine/monitor) +"bfl" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/permabrig) +"bfm" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/exit) +"bfq" = ( +/obj/structure/chair/wood, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"bfw" = ( +/turf/simulated/wall/rust, +/area/quartermaster/sorting) +"bfX" = ( +/obj/structure/closet, +/obj/item/clothing/suit/hooded/wintercoat/security, +/obj/item/clothing/suit/hooded/wintercoat/security, +/obj/item/clothing/suit/hooded/wintercoat/security, +/obj/item/clothing/suit/hooded/wintercoat/security, +/obj/item/clothing/suit/hooded/wintercoat/security, +/obj/item/clothing/suit/hooded/wintercoat/security, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"bgo" = ( +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) +"bgs" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/landmark/start/security_officer, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"bhh" = ( +/obj/structure/rack, +/obj/item/storage/firstaid/doctor{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/storage/firstaid/regular{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"bhu" = ( +/obj/machinery/shower{ + dir = 8; + tag = "icon-shower (WEST)"; + pixel_y = 4 + }, +/obj/effect/decal/warning_stripes/blue, +/obj/effect/decal/warning_stripes/south, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/virology/lab) +"bhE" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/vehicle/ridden/snowmobile/key, +/obj/structure/sign/poster/official/work_for_a_future{ + pixel_x = 32 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"bhK" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"big" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/junction/yjunction{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securehallway) +"bij" = ( +/obj/machinery/door/window{ + base_state = "right"; + dir = 1; + icon_state = "right"; + name = "Captain's Desk Door"; + req_access = list(20) + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"bis" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Security Lounge"; + req_access = list(63) + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"bix" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"biI" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "SKPP"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/bridge/checkpoint/south) +"biM" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/stack/tile/plasteel{ + amount = 12 + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"biT" = ( +/obj/structure/chair/comfy/red{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"bjl" = ( +/obj/machinery/atmospherics/unary/outlet_injector/on, +/obj/item/trash/doshik, +/obj/item/trash/spentcasing, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"bjs" = ( +/turf/simulated/wall, +/area/toxins/xenobiology) +"bjt" = ( +/turf/simulated/floor/grass, +/area/hydroponics) +"bjA" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/window{ + dir = 1; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/clothing/suit/armor/laserproof, +/obj/item/gun/energy/ionrifle, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"bjP" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light_construct{ + dir = 8 + }, +/obj/structure/closet/crate/sci, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/disk/design_disk, +/obj/item/reagent_containers/dropper, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"bkd" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel, +/area/quartermaster/office) +"bke" = ( +/obj/machinery/vending/hydroseeds, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/maintenance/garden) +"bkk" = ( +/obj/machinery/door/airlock/mining{ + name = "Mining" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/coldcolony/ruin/abandoned_garage) +"bkz" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) +"bkF" = ( +/obj/structure/table/wood{ + color = "brown" + }, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/coldcolony/ruin/miningbar) +"bkG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch{ + pixel_y = 24; + pixel_x = 8 + }, +/turf/simulated/floor/plasteel/grimy, +/area/civilian/vacantoffice) +"bld" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/disposaloutlet{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bli" = ( +/obj/effect/decal/warning_stripes/north, +/obj/machinery/photocopier, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/chief) +"blj" = ( +/turf/simulated/wall/r_wall, +/area/security/reception) +"bls" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_x = 1; + pixel_y = 3 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/warden) +"bly" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/eastarrival) +"blG" = ( +/obj/machinery/computer/guestpass{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"blM" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/simulated/floor/plasteel{ + icon_state = "purplefull" + }, +/area/storage/secure) +"blS" = ( +/obj/machinery/portable_atmospherics/canister/oxygen{ + anchored = 1 + }, +/turf/simulated/floor/engine/o2{ + oxygen = 10000 + }, +/area/atmos) +"blT" = ( +/obj/item/clothing/gloves/fingerless, +/obj/structure/rack, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"bmf" = ( +/obj/machinery/recharge_station, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/engineering/break_room) +"bmh" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_chamber) +"bmt" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken6" + }, +/area/coldcolony/ruin/abandoned_banya) +"bmy" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"bmA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/medical/paramedic) +"bmI" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"bmK" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"bmN" = ( +/obj/structure/chair/office/dark, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/security/checkpoint) +"bng" = ( +/obj/structure/table, +/obj/item/hand_labeler, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/hallway/secondary/exit) +"bnk" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/hallway/primary/central/east) +"boa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/drip, +/turf/simulated/floor/wood{ + icon_state = "wood-broken6" + }, +/area/maintenance/kitchen) +"bob" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/sign/poster/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bor" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"boy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"boC" = ( +/obj/machinery/computer/secure_data, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/hos) +"boM" = ( +/obj/structure/toilet{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/security/permabrig) +"boU" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"bpm" = ( +/obj/structure/table/reinforced, +/obj/item/taperecorder, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/main) +"bpp" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/conveyor{ + dir = 5; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"bpu" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wideplating{ + color = "#332a2a"; + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"bpA" = ( +/obj/machinery/door/window/westleft{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"bpJ" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"bpV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"bqb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + active_power_usage = 0; + icon_state = "tube-broken"; + status = 2; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"bqk" = ( +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"bqn" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/fitness) +"bqH" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "greencorner" + }, +/area/hallway/secondary/exit) +"bqJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/vip) +"bqN" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"brr" = ( +/turf/simulated/floor/carpet/red, +/area/security/hos) +"brv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/spider/stickyweb, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"brx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"brH" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/customs) +"brJ" = ( +/obj/structure/table/wood, +/obj/item/clothing/glasses/meson, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"brQ" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"brU" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "whitepurple" + }, +/area/crew_quarters/hor) +"bsa" = ( +/obj/item/flag/ussp, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken6" + }, +/area/coldcolony/ruin/abandoned_house) +"bsi" = ( +/obj/item/stack/sheet/rglass{ + amount = 20; + pixel_x = -4; + pixel_y = 2 + }, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"bsm" = ( +/obj/machinery/computer/crew, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/bridge/vip) +"bsp" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/carpet, +/area/maintenance/casino) +"bsB" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"bsM" = ( +/obj/item/stock_parts/cell, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"bsQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"btl" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken4" + }, +/area/ruin/unpowered) +"btK" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research/glass{ + name = "Research Division Access"; + req_access = list(47,40,39) + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"btO" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"btS" = ( +/obj/structure/fence/corner{ + dir = 5 + }, +/obj/effect/turf_decal/stripes{ + dir = 5 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"bug" = ( +/obj/effect/spawner/window/reinforced/polarized{ + id = "execution" + }, +/turf/simulated/floor/plating, +/area/security/execution) +"buk" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"buT" = ( +/obj/structure/chair/wood{ + dir = 1 + }, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"bvg" = ( +/turf/simulated/floor/wood, +/area/toxins/storage) +"bvi" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "redfull" + }, +/area/security/prison/cell_block/A) +"bvM" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"bvN" = ( +/obj/structure/wooden_sign{ + name = "MINE!!!"; + desc = "THERE IS FUCKING MINE!!!" + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"bvS" = ( +/obj/item/paper{ + pixel_x = 5; + pixel_y = 7 + }, +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"bvX" = ( +/obj/structure/table/wood, +/obj/item/folder, +/obj/item/pen, +/turf/simulated/floor/wood/fancy/cherry, +/area/library/game_zone) +"bwf" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"bws" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/hallway/primary/fore) +"bwC" = ( +/obj/item/reagent_containers/food/drinks/coffee, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"bwE" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"bwR" = ( +/obj/structure/rack, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/floor_painter{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/floor_painter{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/airlock_painter{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/airlock_painter{ + pixel_x = 6; + pixel_y = -6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/engineering/break_room) +"bxb" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/obj/machinery/door/poddoor/shutters{ + id_tag = "evacgarage"; + dir = 8 + }, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/fans/tiny, +/obj/machinery/door_control{ + id = "evacgarage"; + pixel_y = 24 + }, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/lounge) +"bxV" = ( +/obj/effect/decal/warning_stripes/east, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -1; + pixel_y = 2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/chief) +"bxX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/toxins/server) +"byq" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"bys" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/security/prison/cell_block/A) +"byJ" = ( +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"bzf" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "restaurant"; + layer = 2; + name = "Restaurant Shutters" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "smresdesk1"; + name = "Shutters" + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"bzn" = ( +/turf/simulated/floor/carpet/black, +/area/maintenance/casino) +"bzv" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/officetoys, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkpurple" + }, +/area/bridge/vip) +"bzD" = ( +/obj/effect/decal/warning_stripes/west, +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/atmos/control) +"bzL" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"bAg" = ( +/obj/structure/sign/science, +/turf/simulated/wall, +/area/medical/research) +"bAk" = ( +/obj/machinery/kitchen_machine/grill, +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"bAI" = ( +/obj/machinery/papershredder, +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain) +"bAJ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/spawner/random_spawners/oil_20, +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"bAK" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"bAX" = ( +/obj/structure/table, +/obj/item/floor_painter{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bBm" = ( +/obj/machinery/door/poddoor/shutters{ + id_tag = "engigarage"; + dir = 1 + }, +/obj/structure/fans/tiny, +/obj/effect/decal/warning_stripes/yellow, +/obj/effect/decal/snow/sand/edge{ + dir = 4 + }, +/obj/machinery/door_control{ + id = "engigarage"; + req_access = list(32); + pixel_x = 24 + }, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"bBD" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_lab) +"bBO" = ( +/obj/structure/table/reinforced, +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"bBP" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/head/beanie/stripedblue, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/crew_quarters/cabin1) +"bBZ" = ( +/obj/effect/spawner/window/reinforced/plasma, +/obj/machinery/door/poddoor/preopen{ + id_tag = "burn"; + name = "Blast Door" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/turf/simulated/floor/plating, +/area/maintenance/incinerator) +"bCc" = ( +/obj/machinery/newscaster, +/turf/simulated/wall, +/area/security/permabrig) +"bCg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/medical/ointment/advanced{ + pixel_x = -2; + pixel_y = 1 + }, +/obj/structure/table, +/obj/item/stack/medical/bruise_pack/advanced{ + pixel_x = 2 + }, +/obj/item/stack/medical/bruise_pack/advanced{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/stack/medical/ointment/advanced{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/stack/medical/bruise_pack/advanced{ + pixel_x = -5; + pixel_y = -4 + }, +/obj/item/stack/medical/ointment/advanced{ + pixel_y = 6 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"bCj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/permabrig) +"bCD" = ( +/obj/structure/disposaloutlet{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"bCF" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"bCN" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/bridge) +"bCQ" = ( +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/vip) +"bCW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/monitor, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"bCX" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/north) +"bDc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"bDK" = ( +/obj/machinery/door_control{ + desiredstate = 1; + id = "comtoilet"; + name = "Toilet Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/bridge/vip) +"bEq" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"bEv" = ( +/obj/structure/table/abductor, +/obj/item/storage/box/alienhandcuffs, +/turf/simulated/floor/mineral/abductor{ + oxygen = 22; + temperature = 180; + nitrogen = 82 + }, +/area/ruin/unpowered) +"bEF" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Prisoner Processing"; + req_access = list(63) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"bEO" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/eastleft{ + dir = 8; + name = "Hydroponics Desk"; + req_access = list(35) + }, +/obj/machinery/door/window/eastleft{ + name = "Kitchen Desk"; + req_access = list(28) + }, +/obj/item/reagent_containers/food/snacks/grown/apple, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hydroponics) +"bEX" = ( +/obj/item/shard, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"bFd" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/ruin/unpowered) +"bFe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) +"bFi" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/mirror{ + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker/locker_toilet) +"bFl" = ( +/obj/structure/dresser, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/civilian/barber) +"bFq" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkblue" + }, +/area/ntrep) +"bFz" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bFX" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/power/port_gen/pacman, +/turf/simulated/floor/plasteel, +/area/storage/secure) +"bGt" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/garden) +"bGK" = ( +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/lounge) +"bGU" = ( +/obj/effect/decal/rail_way{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"bHj" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/warden) +"bHs" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/item/t_scanner, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) +"bHw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"bHx" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"bHR" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"bIl" = ( +/obj/effect/decal/warning_stripes/west, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"bIy" = ( +/obj/structure/snowman/high, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"bIR" = ( +/obj/machinery/door/window/brigdoor{ + dir = 1; + id = "Cell 5"; + name = "General Detention Cell"; + req_access = list(2) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"bIS" = ( +/obj/machinery/door/airlock/public/glass, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "eslock" + }, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"bIZ" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plating, +/area/maintenance/kitchen) +"bJh" = ( +/obj/machinery/vending/coffee, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/eastarrival) +"bJi" = ( +/obj/structure/dresser, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep) +"bJm" = ( +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"bJo" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 4 + }, +/obj/effect/decal/snow/sand/edge{ + dir = 8 + }, +/obj/structure/mineral_door/wood, +/turf/simulated/floor/wood/cherry, +/area/coldcolony/ruin/abandoned_banya) +"bJD" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "HoSPriv"; + name = "HoS Office Privacy Shutters" + }, +/turf/simulated/floor/plating, +/area/security/hos) +"bJR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/storage/toolbox/surgery, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"bJY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"bKd" = ( +/obj/structure/chair/sofa{ + dir = 1 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/bar/atrium) +"bKj" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"bKn" = ( +/obj/machinery/light_switch{ + pixel_x = 8; + pixel_y = 24 + }, +/obj/machinery/camera{ + c_tag = "Briefing Room North"; + network = list("SS13","Security") + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/main) +"bKy" = ( +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/hop) +"bKE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bKK" = ( +/obj/machinery/door/airlock{ + name = "Dormitory" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/sleep) +"bLa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/sorting) +"bLk" = ( +/obj/structure/disposaloutlet{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"bLu" = ( +/obj/effect/turf_decal/loading_area{ + dir = 1 + }, +/obj/machinery/door/airlock/mining/glass{ + name = "Storage"; + req_access = list(50) + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) +"bLB" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"bMa" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 4; + name = "Труба фильтрации" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"bMw" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/computer/guestpass{ + pixel_x = 30 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/office) +"bMA" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"bMN" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/head/beret/durathread, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/crew_quarters/cabin1) +"bMW" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/engineering/break_room) +"bNg" = ( +/obj/structure/chair/wood{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"bNn" = ( +/obj/structure/window/reinforced, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"bNt" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/closet/radiation, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"bNw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + active_power_usage = 0; + dir = 4; + icon_state = "bulb-broken"; + status = 2 + }, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"bNB" = ( +/obj/effect/landmark/start/brig_physician, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/security/medbay) +"bNF" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"bNI" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable, +/obj/machinery/power/apc{ + cell_type = 5000; + name = "Important area power controller"; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"bNY" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/wood/fancy/cherry{ + icon_state = "fancy-wood-cherry-broken" + }, +/area/library) +"bOb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"bOc" = ( +/obj/structure/closet/secure_closet/atmos_personal, +/obj/item/extinguisher/mini, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"bOf" = ( +/obj/machinery/constructable_frame/machine_frame, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"bOh" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/machinery/arcade/claw, +/turf/simulated/floor/carpet/arcade, +/area/crew_quarters/fitness) +"bOi" = ( +/obj/structure/table, +/obj/item/wirecutters, +/turf/simulated/floor/plating, +/area/maintenance/perma) +"bOn" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"bOv" = ( +/obj/item/chair/wood/wings, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"bOF" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/simulated/floor/wood/fancy/cherry{ + icon_state = "fancy-wood-cherry-broken5" + }, +/area/library/game_zone) +"bOM" = ( +/obj/structure/dresser, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"bON" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/kitchen) +"bPa" = ( +/obj/structure/closet/cabinet, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"bPb" = ( +/obj/structure/sign/poster/contraband/wanted{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"bPe" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/hallway/primary/central/nw) +"bPf" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/atmos) +"bPh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/fitness) +"bPH" = ( +/obj/machinery/slot_machine, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"bPX" = ( +/obj/structure/fence/corner, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"bPY" = ( +/obj/item/chair/stool, +/turf/simulated/floor/carpet, +/area/maintenance/casino) +"bQa" = ( +/obj/structure/closet/cabinet, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"bQi" = ( +/obj/effect/decal/cleanable/blood/writing, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"bQt" = ( +/obj/machinery/recharger{ + pixel_x = 1; + pixel_y = 3 + }, +/obj/structure/table/wood, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/hop) +"bQv" = ( +/turf/simulated/wall, +/area/crew_quarters/kitchen) +"bQx" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wideplating/corner{ + color = "#332a2a"; + dir = 8 + }, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"bQC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"bQG" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 1; + name = "Труба смешивания" + }, +/turf/simulated/wall/r_wall, +/area/atmos) +"bQS" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/cleanable/glass, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"bRw" = ( +/obj/structure/closet/secure_closet/brig, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/permahallway) +"bRA" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"bRI" = ( +/obj/machinery/kitchen_machine/grill, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bRK" = ( +/obj/structure/girder, +/obj/effect/landmark/tiles/damageturf, +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"bSb" = ( +/obj/structure/table/wood, +/obj/item/storage/bag/books, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"bSf" = ( +/obj/structure/table/reinforced, +/obj/item/book/manual/security_space_law, +/obj/item/folder/red{ + pixel_y = 3 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/camera{ + c_tag = "Brig Customs"; + dir = 1; + network = list("SS13","Security") + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/customs) +"bSg" = ( +/obj/structure/table, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"bSi" = ( +/obj/item/vending_refill/clothing/science, +/obj/structure/closet/crate/sci, +/obj/item/circuitboard/vendor, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"bSq" = ( +/obj/structure/bed, +/obj/item/bedsheet/brown, +/obj/effect/landmark/start/chaplain, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"bSt" = ( +/obj/machinery/door/airlock/external{ + hackProof = 1; + id_tag = "emergency_home"; + locked = 1; + name = "Security Escape Airlock"; + req_access = list(63) + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/plating, +/area/hallway/secondary/exit) +"bSx" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/head/beret/blue, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"bSB" = ( +/obj/structure/closet/secure_closet/engineering_electrical, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/sign/nosmoking_2{ + pixel_y = -32 + }, +/obj/item/clothing/gloves/color/fyellow, +/turf/simulated/floor/plasteel{ + icon_state = "yellow" + }, +/area/engineering/break_room) +"bSQ" = ( +/obj/machinery/camera{ + c_tag = "Residential Block South Hallway"; + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"bSS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"bSU" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/machinery/vending/wallmed{ + pixel_x = -26 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/north) +"bSZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"bTc" = ( +/obj/machinery/power/apc{ + pixel_y = 26; + dir = 1; + start_charge = 0 + }, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"bTh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"bTj" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Prisoner Processing"; + req_access = list(63) + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/processing) +"bTn" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"bTp" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"bTP" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/secure_closet/freezer/meat/empty, +/obj/item/reagent_containers/food/snacks/salmonmeat, +/obj/item/reagent_containers/food/snacks/salmonmeat, +/obj/item/reagent_containers/food/snacks/salmonmeat, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/kitchen) +"bTS" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/reception) +"bTX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc{ + cell_type = 5000; + name = "Important area power controller"; + pixel_y = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/camera{ + c_tag = "Medbay Exam Room South"; + dir = 1; + network = list("SS13","Medical"); + pixel_x = 22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"bUl" = ( +/obj/structure/chair/sofa/left{ + dir = 1 + }, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/theatre) +"bUu" = ( +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"bUH" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"bUP" = ( +/obj/structure/morgue, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) +"bUR" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atm{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"bUT" = ( +/obj/machinery/computer/roboquest, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"bUX" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/security/prison/cell_block/A) +"bVe" = ( +/obj/structure/table, +/obj/item/soap/nanotrasen, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/bridge/vip) +"bVL" = ( +/obj/item/clothing/suit/bio_suit/scientist, +/obj/structure/closet/crate/sci, +/obj/item/clothing/head/bio_hood/scientist, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"bWa" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"bWb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/stack/sheet/metal, +/obj/item/reagent_containers/food/pill/patch/styptic{ + pixel_x = 2; + pixel_y = 8 + }, +/obj/effect/landmark/tiles/burnturf, +/obj/structure/inflatable{ + layer = 3.1 + }, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"bWt" = ( +/turf/simulated/wall/r_wall, +/area/security/lobby) +"bWX" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/turf/simulated/floor/wood, +/area/coldcolony/ruin/miningbar) +"bWZ" = ( +/obj/structure/reagent_dispensers/watertank/high, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "purple" + }, +/area/janitor) +"bXh" = ( +/obj/machinery/atmospherics/unary/portables_connector, +/obj/machinery/portable_atmospherics/canister, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"bXt" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"bXH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/processing) +"bXN" = ( +/obj/structure/table/wood, +/obj/item/clothing/suit/storage/hazardvest, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"bXQ" = ( +/obj/item/storage/firstaid/regular, +/obj/structure/table/wood, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"bXX" = ( +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"bYb" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"bYd" = ( +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"bYh" = ( +/obj/structure/table_frame/wood, +/obj/structure/sign/poster/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel, +/area/toxins/xenobiology) +"bYr" = ( +/obj/structure/closet/secure_closet/brig{ + id = "Cell 1"; + name = "Cell 1 Locker" + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"bYu" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/processing) +"bYP" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"bYZ" = ( +/obj/effect/decal/cleanable/generic, +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/snow/sand/edge{ + dir = 10 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"bZf" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/lobby) +"bZo" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction/reversed{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/office) +"bZv" = ( +/obj/structure/table/wood, +/obj/item/chair/wood, +/turf/simulated/floor/wood/fancy/cherry, +/area/ruin/unpowered) +"bZE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/crew_quarters/chief) +"bZI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"bZN" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"cal" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cav" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/comfy, +/obj/effect/landmark/start/quartermaster, +/turf/simulated/floor/plasteel, +/area/quartermaster/qm) +"caI" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"caK" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/storage/secure) +"caU" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"cbn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"cbt" = ( +/obj/effect/turf_decal/bot/left, +/obj/effect/turf_decal/bot/right, +/obj/structure/closet/crate/secure/plasma{ + req_access = list(31,32,50) + }, +/obj/item/stack/sheet/mineral/plasma/fifty, +/obj/item/stack/sheet/mineral/plasma/fifty, +/obj/item/stack/sheet/mineral/plasma/fifty, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/sorting) +"cbH" = ( +/obj/machinery/door/firedoor, +/obj/structure/barricade/wooden, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"cce" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkbluecorners" + }, +/area/bridge/meeting_room) +"ccA" = ( +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/vip) +"ccD" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"ccF" = ( +/obj/structure/grille, +/turf/simulated/wall/r_wall, +/area/toxins/explab) +"ccI" = ( +/obj/structure/sign/poster/contraband/random{ + pixel_x = 32 + }, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"ccO" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"ccX" = ( +/obj/machinery/vending/coffee, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"cdc" = ( +/obj/machinery/power/smes{ + charge = 4e+006; + output_level = 15000 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"cdg" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_chamber) +"cdr" = ( +/obj/machinery/recharge_station, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/processing) +"cdw" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/seeds/wheat, +/obj/item/seeds/wheat, +/obj/item/seeds/wheat, +/obj/item/seeds/wheat/rice, +/obj/item/seeds/wheat/rice, +/obj/item/seeds/wheat/rice, +/obj/item/seeds/tomato, +/obj/item/seeds/tomato, +/obj/item/seeds/tomato, +/obj/item/seeds/berry, +/obj/item/seeds/berry, +/obj/item/seeds/berry, +/obj/item/seeds/apple, +/obj/item/seeds/apple, +/obj/item/seeds/apple, +/obj/structure/closet/crate/freezer, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/hydroponics) +"cdA" = ( +/obj/structure/railing, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"cdD" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/north) +"cdM" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/recharger{ + pixel_x = 7; + pixel_y = -1 + }, +/obj/machinery/recharger{ + pixel_x = -5; + pixel_y = -1 + }, +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_x = -5; + pixel_y = 8 + }, +/obj/machinery/recharger{ + pixel_x = 7; + pixel_y = 8 + }, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"cdN" = ( +/obj/structure/railing{ + dir = 5 + }, +/turf/simulated/floor/wood/fancy/light{ + icon_state = "light-fancy-wood-broken4" + }, +/area/crew_quarters/theatre) +"ceo" = ( +/obj/effect/decal/warning_stripes/northeast, +/turf/simulated/floor/engine, +/area/security/execution) +"cez" = ( +/obj/effect/decal/ants, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/kitchen) +"ceA" = ( +/turf/simulated/mineral/ancient{ + turf_type = /turf/simulated/floor/plating/asteroid/snow/planet + }, +/area/ruin/unpowered/coldcolony_outside) +"ceT" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkbrowncorners"; + dir = 4 + }, +/area/bridge/vip) +"cfo" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library/game_zone) +"cfJ" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"cfP" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/warden) +"cgt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"chc" = ( +/obj/machinery/photocopier, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"chn" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"chp" = ( +/obj/effect/decal/warning_stripes/southwestcorner, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine/monitor) +"chE" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "mining_internal" + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"chF" = ( +/obj/machinery/door/airlock/mining{ + name = "Miners bar"; + welded = 1 + }, +/obj/machinery/door/firedoor, +/obj/structure/barricade/wooden/crude{ + layer = 3.3 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"chH" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/glass/beaker/noreact, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"chJ" = ( +/turf/simulated/floor/plating, +/area/crew_quarters/locker) +"chR" = ( +/turf/simulated/wall/r_wall, +/area/atmos/control) +"cib" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light_switch{ + pixel_x = 24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/toilet4) +"cih" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/decal/warning_stripes/blue/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/lounge) +"cik" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 4; + name = "Труба фильтрации" + }, +/obj/effect/decal/warning_stripes/east, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/meter, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"cir" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/permabrig) +"ciy" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance/double, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"ciB" = ( +/obj/machinery/power/smes{ + charge = 4e+006; + output_level = 5000 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"ciM" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/lobby) +"ciO" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"cjw" = ( +/obj/machinery/door/airlock/security/glass{ + id_tag = "BrigLeft"; + name = "Brig"; + req_access = list(63) + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/brig) +"cjO" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/janitor) +"cjV" = ( +/turf/simulated/wall, +/area/hallway/primary/fore) +"ckf" = ( +/obj/item/stack/rods{ + amount = 40 + }, +/obj/structure/closet/crate/engineering, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/rglass{ + amount = 20; + pixel_x = -4; + pixel_y = 2 + }, +/turf/simulated/floor/plating, +/area/toxins/explab) +"cks" = ( +/obj/structure/table/reinforced, +/obj/machinery/door_control{ + id = "rightpirat_blast"; + name = "Right BlastDoor"; + req_access = list(160); + pixel_y = 6; + pixel_x = 6 + }, +/obj/machinery/door_control{ + id = "leftpirat_blast"; + name = "Left BlastDoor"; + req_access = list(160); + pixel_y = 6; + pixel_x = -6 + }, +/obj/machinery/light_switch{ + pixel_y = -2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/shuttle/pirate_corvette) +"ckM" = ( +/obj/effect/decal/warning_stripes/southeastcorner, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"ckT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"cla" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/radiation, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"clc" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/medical/paramedic) +"cld" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/birch{ + icon_state = "fancy-wood-birch-broken" + }, +/area/bridge/checkpoint/south) +"clf" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"cli" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/simulated/floor/wood/fancy/oak, +/area/blueshield) +"clk" = ( +/obj/structure/table/reinforced, +/obj/item/kitchen/knife, +/obj/item/kitchen/rollingpin, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"clF" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"clQ" = ( +/obj/machinery/shower{ + dir = 8; + tag = "icon-shower (WEST)" + }, +/obj/structure/curtain/open/shower, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/locker/locker_toilet) +"clY" = ( +/obj/machinery/power/smes/magical, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/engineering/gravitygenerator) +"cmi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) +"cmo" = ( +/obj/machinery/door/airlock/maintenance{ + req_access = list(31,50) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cmq" = ( +/obj/machinery/conveyor{ + id = "CargoUnload"; + dir = 10 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/office) +"cmw" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/main) +"cmD" = ( +/obj/structure/sign/poster/contraband/free_tonto{ + pixel_x = -32 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"cmF" = ( +/turf/simulated/wall, +/area/medical/chemistry) +"cmO" = ( +/obj/structure/table/reinforced, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) +"cmX" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/snacks/syndicake, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"cnc" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"cnz" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/toxins/storage) +"cnA" = ( +/obj/machinery/atmospherics/binary/pump{ + desc = "Переводит смесь из хранилища в трубы"; + dir = 4; + name = "Из хранилища в трубы"; + target_pressure = 101 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"cnB" = ( +/obj/structure/closet/crate/miningcar{ + name = "mining car" + }, +/obj/item/stack/ore/bluespace_crystal, +/obj/item/stack/ore/titanium{ + amount = 6 + }, +/obj/item/stack/ore/gold{ + amount = 3 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"cnG" = ( +/turf/simulated/floor/wood/fancy/cherry, +/area/security/hos) +"cod" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/bar/atrium) +"cof" = ( +/turf/simulated/wall/rust, +/area/crew_quarters/fitness) +"cot" = ( +/obj/machinery/computer/atmoscontrol, +/obj/machinery/newscaster{ + pixel_y = 30 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos/control) +"coL" = ( +/obj/item/stack/ore/diamond{ + amount = 7 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"coS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"coU" = ( +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/obj/structure/coatrack, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/vip) +"cpq" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"cpt" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/structure/barricade/wooden/crude/snow{ + layer = 3.3 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "Second Surgery Window"; + name = "Surgery Shutters" + }, +/turf/simulated/floor/plating, +/area/medical/surgery/south) +"cpu" = ( +/obj/structure/chair/comfy/beige{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/bridge/checkpoint/south) +"cpv" = ( +/turf/simulated/floor/plasteel, +/area/toxins/lab) +"cpA" = ( +/obj/item/paper_bin, +/obj/structure/closet/crate, +/obj/item/pen, +/obj/item/pen, +/obj/item/clipboard, +/obj/item/clipboard, +/obj/item/folder/blue, +/obj/item/folder/blue, +/obj/item/folder/red, +/obj/item/hand_labeler, +/obj/item/hand_labeler, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"cpJ" = ( +/turf/simulated/wall/rust, +/area/crew_quarters/locker/locker_toilet) +"cqq" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 1 + }, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"cqF" = ( +/obj/structure/fans/tiny, +/obj/effect/decal/snow/sand/edge, +/obj/machinery/door/airlock/command{ + req_access = list(19); + name = "Command Room" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"cqH" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "SecMedPrivOutside" + }, +/turf/simulated/floor/plating, +/area/security/medbay) +"cqT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"crv" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"crx" = ( +/turf/simulated/wall, +/area/security/customs) +"crF" = ( +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"crG" = ( +/obj/structure/closet/toolcloset, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"csd" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"csq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/theatre) +"css" = ( +/turf/simulated/floor/engine, +/area/coldcolony/ruin/sm_chamber) +"csD" = ( +/obj/structure/flora/tree/pine/xmas, +/obj/item/grenade/clusterbuster/xmas, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"csM" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"csN" = ( +/turf/simulated/wall/shuttle/onlyselfsmooth{ + icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' + }, +/area/shuttle/pirate_corvette) +"cta" = ( +/turf/simulated/wall/r_wall/coated, +/area/maintenance/incinerator) +"ctd" = ( +/obj/machinery/light, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/syndie_outpost) +"ctr" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Library" + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"ctF" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/light{ + active_power_usage = 0; + icon_state = "tube-broken"; + status = 2; + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"ctP" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Permabrig"; + req_access = list(2) + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permahallway) +"ctR" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"cum" = ( +/obj/structure/table, +/obj/item/taperecorder, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"cuu" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/item/stack/sheet/wood, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"cuD" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Security"; + id_tag = "BrigEnt" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/lobby) +"cuI" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id_tag = "Brig_lockdown"; + name = "Brig Lockdown" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/security/reception) +"cvf" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "hopprivacy"; + name = "Head of Personal Privacy Shutters" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/hop) +"cvi" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"cvn" = ( +/turf/simulated/wall/rust, +/area/maintenance/garden) +"cvp" = ( +/obj/machinery/vending/coffee, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/starboard/east) +"cvD" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/computer/supplyquest/workers{ + pixel_y = 28 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"cvQ" = ( +/obj/structure/closet/secure_closet{ + icon_state = "cmo"; + req_access = list(40); + name = "chief medical officer's locker" + }, +/obj/item/clothing/suit/hooded/wintercoat/medical/cmo, +/obj/item/flash, +/obj/item/radio/headset/heads/cmo, +/obj/item/storage/garmentbag/CMO, +/obj/item/storage/backpack/medic, +/turf/simulated/floor/carpet/cyan, +/area/bridge/vip) +"cvS" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/trash/popcorn, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"cwk" = ( +/obj/machinery/slot_machine, +/turf/simulated/floor/carpet, +/area/maintenance/casino) +"cwm" = ( +/obj/structure/table/wood, +/obj/item/clipboard, +/obj/item/folder, +/obj/item/pen/red{ + pixel_x = 2; + pixel_y = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"cwt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brig) +"cwA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) +"cwT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/hallway/primary/fore) +"cwV" = ( +/obj/structure/closet/secure_closet/cabinet/bar, +/turf/simulated/floor/wood, +/area/coldcolony/ruin/miningbar) +"cwW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/warning_stripes/east, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"cxg" = ( +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"cxn" = ( +/obj/structure/table, +/obj/item/storage/toolbox/emergency, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"cxo" = ( +/obj/structure/table/wood, +/obj/machinery/recharger{ + pixel_x = 1; + pixel_y = 3 + }, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/wood/fancy/oak, +/area/blueshield) +"cxs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"cxu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/hallway/primary/fore) +"cxF" = ( +/obj/effect/decal/warning_stripes/blue, +/obj/structure/closet/emcloset, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"cxM" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken7" + }, +/area/ruin/unpowered) +"cxT" = ( +/obj/machinery/photocopier/faxmachine/longrange{ + department = "Head of Personnel's Office" + }, +/obj/structure/table/wood, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/heads/hop) +"cxZ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"cym" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"cyt" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/effect/turf_decal/box/red{ + do_not_delete_me = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"cyL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/effect/landmark/start/paramedic, +/turf/simulated/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/medical/paramedic) +"cyP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain/bedroom) +"cyT" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/rack, +/obj/item/stack/sheet/mineral/plasma{ + amount = 5 + }, +/obj/item/wrench, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"cyU" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/grassybush, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"cyX" = ( +/obj/effect/decal/warning_stripes/east, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/coldcolony/ruin/abandoned_garage) +"czc" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"czj" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/carpet/arcade, +/area/crew_quarters/fitness) +"czC" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/trainee_engineer, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"czG" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/security/hos) +"czR" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"cAf" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/clownoffice) +"cAu" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/door/window{ + dir = 2; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/clothing/suit/armor/riot, +/obj/item/shield/riot, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/head/helmet/riot, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"cAB" = ( +/obj/structure/rack, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/clothing/glasses/meson{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/clothing/glasses/meson{ + pixel_x = -3; + pixel_y = 1 + }, +/obj/item/clothing/glasses/meson{ + pixel_y = -2 + }, +/obj/item/clothing/glasses/meson{ + pixel_x = 3; + pixel_y = -5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/engineering/break_room) +"cAQ" = ( +/obj/structure/flora/grass/brown, +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"cAV" = ( +/obj/structure/door_assembly/door_assembly_science, +/turf/simulated/floor/wood, +/area/toxins/storage) +"cAY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/lobby) +"cBa" = ( +/obj/structure/morgue, +/turf/simulated/floor/wood, +/area/coldcolony/morgue) +"cBm" = ( +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/miningeva) +"cBv" = ( +/obj/machinery/constructable_frame/machine_frame, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/engine, +/area/coldcolony/ruin/sm_chamber) +"cBB" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"cBC" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external{ + id_tag = "supply_home"; + locked = 1; + name = "Cargo Docking Hatch"; + req_access = list(31) + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"cBD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/sleep) +"cBH" = ( +/obj/effect/decal/cleanable/generic, +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/snow/sand/edge{ + dir = 6 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"cBL" = ( +/obj/machinery/computer/med_data, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/paramedic) +"cBX" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"cBZ" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/crew_quarters/hor) +"cCe" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/processing) +"cCm" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/head/helmet/alt, +/obj/item/clothing/shoes/jackboots/armored, +/obj/item/clothing/gloves/color/black/ballistic, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"cCv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/toilet4) +"cCw" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/secure_closet/freezer/meat/empty, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/kitchen) +"cCL" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"cDb" = ( +/obj/structure/table/reinforced, +/obj/machinery/newscaster/security_unit{ + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/reception) +"cDc" = ( +/obj/structure/table, +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/obj/item/reagent_containers/food/pill/patch/silver_sulf, +/obj/item/reagent_containers/food/pill/patch/silver_sulf{ + pixel_x = -8; + pixel_y = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"cDd" = ( +/obj/machinery/vending/cigarette/free, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brig) +"cDJ" = ( +/obj/structure/disposaloutlet, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"cDQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hydroponics) +"cEq" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/commercial) +"cED" = ( +/mob/living/simple_animal/hostile/bear/polar{ + health = 90; + maxHealth = 90 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"cEE" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_x = 1; + pixel_y = 3 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "yellow" + }, +/area/engineering/break_room) +"cEI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/medical{ + autoclose = 0; + frequency = 1379; + id_tag = "viro_lab_airlock_interior"; + locked = 1; + name = "Virology Lab Internal Airlock"; + req_access = list(39) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"cEL" = ( +/obj/structure/disposalpipe/junction/reversed{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"cEN" = ( +/obj/machinery/mech_bay_recharge_port{ + dir = 2 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/coldcolony/ruin/abandoned_garage) +"cES" = ( +/obj/structure/closet/crate/trashcart, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"cEU" = ( +/turf/simulated/wall/rust, +/area/medical/surgery/south) +"cEZ" = ( +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"cFv" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/crew_quarters/hor) +"cFw" = ( +/obj/machinery/vending/dinnerware/old, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"cFz" = ( +/obj/structure/alien/weeds, +/obj/effect/landmark/event/xeno_spawn, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"cFE" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"cFP" = ( +/obj/machinery/door/poddoor/shutters{ + dir = 1; + id_tag = "secgarage" + }, +/obj/structure/fans/tiny, +/obj/effect/decal/snow/sand/edge{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door_control{ + pixel_x = -24; + id = "secgarage"; + req_access = list(63) + }, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"cGk" = ( +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/structure/cable, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"cGr" = ( +/obj/machinery/computer/card, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"cGH" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"cGM" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/processing) +"cGQ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"cGV" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/structure/flora/grass/green, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"cHa" = ( +/obj/machinery/door/window/brigdoor{ + base_state = "rightsecure"; + icon_state = "rightsecure"; + id = "Cell 4"; + name = "Cell 4"; + req_access = list(2) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"cHn" = ( +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"cHo" = ( +/obj/structure/table/wood, +/obj/machinery/door_control{ + id = "hopprivacy"; + name = "Privacy Shutters"; + pixel_x = 24; + pixel_y = -6; + req_access = list(18) + }, +/obj/machinery/door_control{ + id = "hopqueueshutters"; + name = "Queue Shutters"; + pixel_x = 24; + pixel_y = 6; + req_access = list(18) + }, +/obj/machinery/flasher_button{ + id = "hopflash"; + pixel_x = 38; + pixel_y = -6 + }, +/obj/machinery/door_control/ticket_machine_button{ + pixel_x = 38; + pixel_y = 6 + }, +/obj/item/storage/box/PDAs, +/obj/item/storage/box/ids{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/radio/intercom{ + pixel_y = -26; + pixel_x = 26 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"cHA" = ( +/obj/structure/table/reinforced, +/obj/machinery/photocopier/faxmachine/longrange{ + department = "Research Director's Office" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/crew_quarters/hor) +"cHQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_lab) +"cHU" = ( +/obj/structure/closet/radiation, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"cIi" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"cIp" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"cIz" = ( +/obj/structure/table/wood, +/obj/machinery/photocopier/faxmachine/longrange{ + department = "Head of Security's Office" + }, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/hos) +"cIB" = ( +/obj/machinery/hydroponics/soil, +/obj/item/seeds/tomato, +/turf/simulated/floor/grass, +/area/security/permabrig) +"cIY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine/monitor) +"cJc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/brig) +"cJs" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"cJv" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"cJy" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/sorting) +"cJA" = ( +/obj/structure/table/wood/poker, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"cJB" = ( +/obj/structure/sign/directions/security{ + pixel_y = 11; + dir = 1 + }, +/obj/structure/sign/directions/evac{ + pixel_y = 4 + }, +/obj/structure/sign/directions/cargo{ + pixel_y = -3 + }, +/obj/structure/sign/directions/engineering{ + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/central/east) +"cJL" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/vehicle/ridden/snowmobile/key, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/lounge) +"cKg" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"cKl" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/structure/flora/ausbushes/palebush, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"cKm" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"cKM" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light_switch{ + pixel_y = 24; + pixel_x = -8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera{ + c_tag = "Engine Room"; + network = list("Engineering","SS13") + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"cKN" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"cKQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "greencorner" + }, +/area/hallway/secondary/exit) +"cLe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"cLE" = ( +/obj/machinery/r_n_d/protolathe{ + pixel_y = 2 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "purple" + }, +/area/toxins/lab) +"cLG" = ( +/obj/effect/decal/warning_stripes/west, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"cLT" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"cLW" = ( +/turf/simulated/floor/wood/fancy/oak, +/area/blueshield) +"cMk" = ( +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"cMv" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/ammo_box/shotgun/buck{ + pixel_x = 3 + }, +/obj/item/ammo_box/shotgun/buck{ + pixel_y = 3 + }, +/obj/item/ammo_box/shotgun{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Lethal Bullets" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"cMw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/plating, +/area/toxins/server) +"cMH" = ( +/obj/structure/rack, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/decal/warning_stripes/north, +/obj/item/grenade/gas/oxygen, +/obj/item/grenade/gas/oxygen{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"cML" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"cMU" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/simulated/floor/lava/lava_land_surface/plasma/cold, +/area/ruin/unpowered/coldcolony_outside) +"cNA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/space_heater, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"cNL" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/reception) +"cNY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/rcs, +/obj/item/rcs, +/obj/item/rcs, +/obj/machinery/power/apc{ + pixel_y = 26; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/item/stack/tape_roll, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/office) +"cOt" = ( +/obj/effect/decal/warning_stripes/east, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "caution" + }, +/area/atmos) +"cOZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + req_access = list(90) + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/syndie_outpost) +"cPo" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel, +/area/atmos) +"cPq" = ( +/obj/item/stack/medical/bruise_pack/comfrey, +/obj/item/stack/medical/bruise_pack/comfrey, +/obj/item/stack/medical/bruise_pack/comfrey, +/obj/item/stack/medical/bruise_pack/comfrey, +/obj/item/stack/medical/bruise_pack/comfrey, +/obj/item/stack/medical/ointment/aloe, +/obj/item/stack/medical/ointment/aloe, +/obj/item/stack/medical/ointment/aloe, +/obj/item/stack/medical/ointment/aloe, +/obj/item/stack/medical/ointment/aloe, +/obj/item/stack/medical/ointment/aloe, +/obj/structure/table, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"cPE" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/greengrid, +/area/security/nuke_storage) +"cPN" = ( +/obj/item/reagent_containers/glass/bucket, +/obj/item/mop, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"cPP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"cPS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "escape" + }, +/area/hallway/secondary/entry/lounge) +"cPW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/generic, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/brig) +"cPX" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/snow/sand/edge, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"cQf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet{ + pixel_y = 28 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"cQn" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"cQv" = ( +/obj/machinery/door_timer/cell_5{ + dir = 1; + pixel_y = 32; + name = "General Detention Cell" + }, +/obj/machinery/camera{ + c_tag = "Brig Cells"; + network = list("SS13","Security") + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"cQI" = ( +/obj/item/clothing/suit/hooded/wintercoat/security/hos, +/obj/structure/closet, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-cherry" + }, +/area/crew_quarters/trading) +"cRn" = ( +/obj/structure/table/wood, +/obj/item/folder, +/obj/item/pen/multi/fountain, +/obj/item/stamp/rep, +/turf/simulated/floor/carpet/royalblue, +/area/ntrep) +"cRr" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/brig) +"cRv" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/decal/warning_stripes/eastsouthwest, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engineering/break_room) +"cRD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners" + }, +/area/security/permabrig) +"cRJ" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/glass/beaker/large, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_y = 8 + }, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_x = -5; + pixel_y = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"cRS" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"cSb" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"cSi" = ( +/obj/structure/table/wood, +/obj/item/taperecorder, +/turf/simulated/floor/wood/fancy/cherry, +/area/library/game_zone) +"cSj" = ( +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"cSm" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) +"cSn" = ( +/obj/structure/window/reinforced, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/wrench, +/obj/effect/decal/warning_stripes/west, +/turf/simulated/floor/plating, +/area/security/permabrig) +"cSx" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/bluegrid, +/area/turret_protected/ai_upload) +"cSH" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/medical/biostorage) +"cSK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/casino) +"cSN" = ( +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/main) +"cTc" = ( +/turf/simulated/wall, +/area/medical/genetics) +"cTk" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow/corner, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"cTm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"cTA" = ( +/obj/vehicle/ridden/snowmobile/key, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plasteel, +/area/medical/research) +"cTC" = ( +/obj/structure/table/wood, +/obj/item/newspaper, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"cTM" = ( +/obj/structure/table/wood, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/wood/fancy/cherry, +/area/library/game_zone) +"cTP" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/mug/cmo, +/obj/item/clothing/glasses/hud/health/sunglasses, +/turf/simulated/floor/carpet/cyan, +/area/bridge/vip) +"cUi" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cUt" = ( +/obj/effect/decal/warning_stripes/south, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"cUx" = ( +/obj/item/stamp/rd, +/obj/structure/table/reinforced, +/obj/machinery/keycard_auth{ + pixel_x = -6; + pixel_y = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/crew_quarters/hor) +"cUy" = ( +/obj/machinery/light{ + active_power_usage = 0; + dir = 8; + icon_state = "tube-broken"; + status = 2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"cUB" = ( +/obj/structure/fence, +/obj/effect/turf_decal/stripes, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"cUN" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"cUO" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellow" + }, +/area/bridge/vip) +"cUQ" = ( +/obj/effect/decal/warning_stripes/blue/hollow, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/north) +"cUS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/supplycomp/public{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/office) +"cVf" = ( +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26; + start_charge = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"cVt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/cryo_cell, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"cVE" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"cVJ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/wood/fancy/cherry, +/area/bridge/meeting_room) +"cVP" = ( +/obj/effect/landmark/start/doctor, +/obj/structure/chair/comfy/teal{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cWi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"cWx" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"cWF" = ( +/obj/structure/table/wood/fancy/royalblack, +/obj/item/clothing/glasses/sunglasses, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"cWH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/locker/locker_toilet) +"cWP" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 4; + name = "Труба смешивания" + }, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 1; + name = "Труба дыхательной смеси" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"cXl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cXo" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/medical/biostorage) +"cYb" = ( +/obj/effect/decal/warning_stripes/west, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"cYg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purplecorner" + }, +/area/coldcolony/ruin/sm_chamber) +"cYh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"cYm" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/donut_box, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/obj/machinery/camera{ + c_tag = "Command Meeting Room West"; + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"cYI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random_spawners/blood_5, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"cYK" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/flasher/portable, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"cYM" = ( +/obj/machinery/vending/cola, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engineering/break_room) +"cYT" = ( +/obj/structure/table, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/permabrig) +"cZa" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/assembly/robotics) +"cZd" = ( +/obj/item/reagent_containers/food/drinks/shaker, +/obj/structure/closet/crate, +/obj/effect/decal/cleanable/cobweb2, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"cZg" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/security/checkpoint) +"cZs" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_chamber) +"cZz" = ( +/obj/structure/railing, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"cZC" = ( +/obj/machinery/atmospherics/unary/heat_reservoir/heater{ + dir = 8; + on = 1 + }, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"cZW" = ( +/obj/machinery/door/airlock{ + name = "Storage"; + locked = 1 + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_lab) +"dab" = ( +/obj/machinery/conveyor{ + id = "mining_internal" + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"dae" = ( +/obj/structure/chair/office/dark, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/cherry{ + icon_state = "fancy-wood-cherry-broken6" + }, +/area/library/game_zone) +"daf" = ( +/obj/structure/curtain/open/shower/security{ + alpha = 255; + icon_state = "closed"; + name = "backstage"; + opacity = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"dag" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) +"dah" = ( +/obj/machinery/light, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/main) +"daq" = ( +/obj/structure/mineral_door/wood, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"dav" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/warning_stripes/blue, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"daH" = ( +/obj/structure/table, +/obj/item/clipboard, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"daK" = ( +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"daN" = ( +/obj/machinery/door_control{ + desiredstate = 1; + id = "Perma21"; + name = "Third Cell Brig Bolts"; + normaldoorcontrol = 1; + pixel_x = -38; + req_access = list(2); + specialfunctions = 4 + }, +/obj/machinery/door_control{ + desiredstate = 1; + id = "Perma22"; + name = "Third Cell Perma Bolts"; + normaldoorcontrol = 1; + pixel_x = -24; + req_access = list(2); + specialfunctions = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/permabrig) +"daP" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"dbn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/eastarrival) +"dbv" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"dbw" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/sorting) +"dbL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"dbV" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + dir = 6 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"dch" = ( +/obj/structure/fence/door{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"dcz" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/soda, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"dcD" = ( +/obj/machinery/door/airlock{ + id_tag = "toilet4"; + name = "Toilet" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/toilet4) +"dcJ" = ( +/obj/structure/chair/sofa/pew/left{ + dir = 1 + }, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"dcK" = ( +/obj/structure/bed, +/obj/item/bedsheet/ce, +/turf/simulated/floor/carpet/orange, +/area/bridge/vip) +"dcP" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/door_control{ + id = "RoboPrivat"; + name = "Robotics Privacy Shutters Control"; + pixel_x = -24; + pixel_y = 6 + }, +/obj/machinery/camera{ + c_tag = "Robotics Lab"; + dir = 4; + network = list("Research","SS13") + }, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/assembly/robotics) +"dcR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/permabrig) +"dcY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/office) +"dda" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/grille/broken, +/obj/effect/landmark/ninja_teleport, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"dde" = ( +/obj/structure/flora/grass/green, +/obj/structure/flora/tree/pine, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"ddm" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/carpet/black, +/area/bridge/meeting_room) +"ddr" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/light_switch{ + pixel_x = -20; + pixel_y = 12 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin1) +"ddD" = ( +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"ddJ" = ( +/obj/structure/alien/weeds, +/obj/item/organ/internal/body_egg/alien_embryo, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"ddM" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/grimy, +/area/civilian/vacantoffice) +"ddN" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/bluegrid, +/area/turret_protected/ai_upload) +"ddT" = ( +/obj/machinery/door/airlock/research/glass{ + heat_proof = 1; + name = "Chemical Testing Room"; + req_access = list(47) + }, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"deb" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"dej" = ( +/obj/structure/table, +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/obj/item/clothing/accessory/stethoscope, +/obj/item/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = 8; + pixel_y = 9 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"deo" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/obj/item/reagent_containers/food/pill/patch/silver_sulf, +/obj/item/reagent_containers/food/pill/patch/silver_sulf, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"dex" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"deO" = ( +/obj/structure/closet/secure_closet/injection, +/obj/effect/decal/warning_stripes/red, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/execution) +"dfa" = ( +/obj/effect/decal/ants, +/turf/simulated/floor/plating, +/area/maintenance/kitchen) +"dfB" = ( +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/processing) +"dfD" = ( +/obj/effect/turf_decal/caution{ + dir = 4; + do_not_delete_me = 1 + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel/airless{ + icon_state = "podfloor_light"; + icon_regular_floor = "podfloor_light" + }, +/area/shuttle/pirate_corvette) +"dfO" = ( +/obj/structure/chair/stool, +/turf/simulated/floor/carpet/arcade, +/area/crew_quarters/fitness) +"dgc" = ( +/obj/structure/closet/crate/freezer, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/kitchen) +"dgi" = ( +/obj/structure/disposalpipe/junction/reversed{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securehallway) +"dgs" = ( +/obj/machinery/door/window/eastleft{ + dir = 8; + name = "Hydroponics Desk"; + req_access = list(35) + }, +/obj/machinery/vending/dinnerware, +/turf/simulated/floor/plasteel{ + icon_state = "hydrofloor" + }, +/area/hydroponics) +"dgw" = ( +/obj/structure/closet/gmcloset, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/bar) +"dgL" = ( +/obj/machinery/photocopier, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"dhb" = ( +/obj/structure/table/wood, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/bar/atrium) +"dhh" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/brig) +"dhk" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/candle_box/full, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/main) +"dhp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/bed, +/obj/item/bedsheet/medical, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkpurple" + }, +/area/medical/virology/lab) +"dhJ" = ( +/obj/structure/closet/crate, +/obj/item/light/tube, +/obj/item/hand_labeler, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"dhP" = ( +/obj/structure/closet/secure_closet/mime, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) +"dhQ" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"die" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"dio" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"diw" = ( +/obj/machinery/power/apc{ + pixel_y = -26 + }, +/obj/structure/cable, +/obj/item/storage/toolbox/mechanical, +/obj/structure/table, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"diB" = ( +/obj/machinery/door/airlock/command{ + req_access = list(19); + name = "Command Room" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"diM" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/portable_atmospherics/canister/sleeping_agent, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/storage/secure) +"diR" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/bridge/meeting_room) +"diX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"djb" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/condiment/peppermill{ + pixel_x = 3; + pixel_y = 11 + }, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -3; + pixel_y = 11 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_x = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"djf" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteredfull" + }, +/area/security/medbay) +"djF" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/cmostore) +"djN" = ( +/obj/machinery/portable_atmospherics/canister/oxygen{ + anchored = 1 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/syndie_outpost) +"dkk" = ( +/obj/machinery/cryopod/robot, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/computer/cryopod/robot{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/assembly/chargebay) +"dkR" = ( +/obj/structure/flora/rock/pile, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"dlo" = ( +/turf/simulated/floor/carpet/arcade, +/area/crew_quarters/fitness) +"dlp" = ( +/obj/effect/decal/rail_way{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"dls" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/mime, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) +"dlt" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/item/book/manual/security_space_law, +/turf/simulated/floor/wood, +/area/security/detectives_office) +"dlx" = ( +/turf/simulated/wall/r_wall, +/area/security/nuke_storage) +"dlE" = ( +/obj/machinery/recharge_station, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"dlN" = ( +/obj/structure/grille, +/obj/structure/window/full/shuttle, +/turf/simulated/floor/plating, +/area/ruin/unpowered) +"dlQ" = ( +/obj/structure/table, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"dlR" = ( +/obj/structure/mineral_door/wood, +/obj/effect/decal/snow/sand/edge{ + dir = 4 + }, +/obj/effect/decal/snow/sand/edge{ + dir = 8 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"dlU" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"dlV" = ( +/obj/effect/decal/warning_stripes/south, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/maintenance/kitchen) +"dmn" = ( +/obj/machinery/recharge_station, +/obj/effect/turf_decal/delivery, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"dmp" = ( +/obj/structure/closet/crate/trashcart, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"dmu" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/newscaster{ + pixel_x = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"dmA" = ( +/obj/structure/table, +/obj/item/radio, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"dmE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/crew_quarters/chief) +"dmG" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood{ + icon_state = "wood-broken" + }, +/area/crew_quarters/theatre) +"dmJ" = ( +/turf/simulated/wall, +/area/maintenance/apmaint) +"dmO" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/carpet/black, +/area/bridge/meeting_room) +"dmQ" = ( +/turf/simulated/wall/r_wall/rust, +/area/coldcolony/ruin/sm_lab) +"dmW" = ( +/obj/structure/window/full/reinforced/ice, +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "restaurant"; + layer = 2; + name = "Restaurant Shutters"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/kitchen) +"dno" = ( +/obj/structure/plasticflaps/mining, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad" + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"dns" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "whitered" + }, +/area/security/medbay) +"dnF" = ( +/turf/simulated/wall/rust, +/area/coldcolony/ruin/miningeva) +"dnI" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_chamber) +"dnL" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/decal/cleanable/dust, +/obj/vehicle/ridden/snowmobile/key, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/lounge) +"dnQ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"doh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/simulated/floor/carpet, +/area/bridge/checkpoint/south) +"doi" = ( +/obj/structure/closet, +/obj/item/storage/box/handcuffs, +/obj/item/clothing/suit/straight_jacket, +/obj/item/clothing/mask/muzzle, +/obj/item/storage/toolbox/mechanical, +/obj/item/stack/tape_roll, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/processing) +"dol" = ( +/obj/machinery/light, +/obj/structure/sign/nosmoking_2{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"dor" = ( +/turf/simulated/floor/mineral/abductor{ + oxygen = 22; + temperature = 180; + nitrogen = 82 + }, +/area/coldcolony/ruin/abandoned_house) +"dos" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"doD" = ( +/mob/living/simple_animal/hostile/pirate{ + loot = list(/obj/effect/mob_spawn/human/corpse/pirate) + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"doW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/card/minor/qm, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/qm) +"dpe" = ( +/obj/structure/sign/cargo, +/turf/simulated/wall, +/area/maintenance/apmaint) +"dpf" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"dpm" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"dpz" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkbrown"; + dir = 4 + }, +/area/bridge/vip) +"dpQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/carpet/royalblue, +/area/ntrep) +"dpT" = ( +/turf/simulated/floor/plating, +/area/medical/medbay2) +"dpW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/library) +"dqn" = ( +/obj/structure/sign/poster/contraband/communist_state{ + pixel_x = 32 + }, +/obj/structure/spider/stickyweb, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"dqo" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"dqR" = ( +/obj/structure/table, +/obj/item/lighter/zippo, +/obj/item/clothing/mask/cigarette/cigar/cohiba{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/power/apc{ + cell_type = 5000; + name = "Important area power controller"; + pixel_y = -26 + }, +/obj/structure/cable, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"dqZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"drb" = ( +/obj/effect/decal/cleanable/ash, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"drF" = ( +/obj/effect/decal/cleanable/generic, +/obj/effect/landmark/tiles/damageturf, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"drJ" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/decal/warning_stripes/arrow{ + dir = 4 + }, +/obj/vehicle/ridden/snowmobile/key, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"drM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/cans/non_alcoholic_beer, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"dsm" = ( +/obj/machinery/vending/cart/free, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"dsL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"dsW" = ( +/obj/structure/table/reinforced, +/obj/item/analyzer, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken" + }, +/area/coldcolony/ruin/abandoned_house) +"dsY" = ( +/turf/simulated/wall/r_wall, +/area/security/prison/cell_block/A) +"dtg" = ( +/obj/machinery/door/airlock/security/glass{ + id_tag = "BrigLeft"; + name = "Brig"; + req_access = list(63) + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/brig) +"dtj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/fans/tiny, +/obj/machinery/door/firedoor, +/obj/effect/decal/snow/sand/edge, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/mining{ + name = "Cargo" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"dtz" = ( +/obj/structure/table/glass, +/obj/item/phone{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"dtJ" = ( +/obj/structure/bed/old, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"duc" = ( +/obj/effect/mob_spawn/human/corpse/damaged, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"duy" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"duF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"duK" = ( +/obj/effect/mob_spawn/human/bartender, +/obj/item/kitchen/knife/combat, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"duM" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"duR" = ( +/obj/item/reagent_containers/hypospray/autoinjector, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"duV" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"dvd" = ( +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners" + }, +/area/security/brig) +"dvQ" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/main) +"dvU" = ( +/obj/machinery/smartfridge/secure/chemistry, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"dwh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/eastarrival) +"dwj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permahallway) +"dwt" = ( +/obj/effect/spawner/random_spawners/rodent, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"dwv" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"dwG" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"dwJ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 4; + name = "Труба фильтрации" + }, +/obj/machinery/computer/general_air_control/large_tank_control{ + input_tag = "o2_in"; + name = "Oxygen Supply Control"; + output_tag = "o2_out"; + sensors = list("o2_sensor"="Tank") + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"dwS" = ( +/obj/item/reagent_containers/food/pill/patch/styptic{ + pixel_y = 6 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"dwV" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"dxd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/toilet4) +"dxj" = ( +/obj/structure/table/wood, +/turf/simulated/floor/carpet, +/area/magistrateoffice) +"dxv" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external{ + req_access = list(160); + hackProof = 1; + aiControlDisabled = 1 + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "rightpirat_blast" + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"dxw" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/rack, +/obj/item/stack/sheet/mineral/plasma{ + amount = 35 + }, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"dya" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"dyp" = ( +/mob/living/simple_animal/cow/Betsy, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/grass, +/area/hydroponics) +"dyz" = ( +/obj/structure/chair/wood, +/turf/simulated/floor/wood{ + icon_state = "wood-broken6" + }, +/area/maintenance/kitchen) +"dzb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/landmark/tiles/damageturf, +/obj/machinery/light{ + active_power_usage = 0; + icon_state = "tube-broken"; + status = 2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"dzc" = ( +/obj/machinery/door/airlock/command{ + name = "Head of Security"; + req_access = list(58) + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/security/hos) +"dzm" = ( +/obj/effect/spawner/random_spawners/blood_5, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"dzy" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_chamber) +"dzI" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge/vip) +"dzU" = ( +/obj/effect/decal/cleanable/blood/drip{ + pixel_y = 19 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"dAd" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/civilian/barber) +"dAq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/lounge) +"dAz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"dAG" = ( +/obj/machinery/vending/boozeomat, +/obj/machinery/light{ + active_power_usage = 0; + icon_state = "tube-broken"; + status = 2; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/coldcolony/ruin/miningbar) +"dAQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/bridge/vip) +"dBn" = ( +/obj/structure/closet/crate/secure/loot, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"dBE" = ( +/obj/structure/table, +/obj/machinery/button/windowtint{ + id = "execution"; + pixel_x = 24; + pixel_y = -8 + }, +/obj/machinery/light_switch{ + pixel_y = 8; + pixel_x = 24 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/execution) +"dBI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"dBX" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"dCe" = ( +/obj/structure/table/wood, +/obj/machinery/door_control{ + id = "Brig_lockdown"; + name = "Brig Lockdown"; + pixel_x = 7; + pixel_y = 6; + req_access = list(58) + }, +/obj/machinery/keycard_auth{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/paper/monitorkey, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"dCt" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/hallway/primary/starboard/east) +"dCw" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/obj/effect/landmark/start/librarian, +/turf/simulated/floor/wood, +/area/library) +"dCA" = ( +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain) +"dCE" = ( +/turf/simulated/floor/wood/fancy/birch{ + icon_state = "fancy-wood-birch-broken3" + }, +/area/bridge/checkpoint/south) +"dCY" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"dDd" = ( +/obj/item/flashlight/lamp, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/ruin/unpowered) +"dDM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library/game_zone) +"dDT" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/warning_stripes/blue/hollow, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"dDX" = ( +/obj/structure/closet/walllocker/emerglocker/west, +/obj/effect/decal/warning_stripes/blue/hollow, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/decal/snow/sand/edge{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"dEg" = ( +/obj/machinery/vending/cola, +/obj/effect/decal/warning_stripes/yellow/partial, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/processing) +"dEk" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, +/obj/item/tank/internals/emergency_oxygen/engi/empty, +/obj/item/tank/internals/emergency_oxygen/engi/empty, +/obj/machinery/iv_drip, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "whitered" + }, +/area/security/medbay) +"dEn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"dEs" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/turf/simulated/floor/wood/fancy/cherry, +/area/library/game_zone) +"dEu" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"dEz" = ( +/turf/simulated/wall, +/area/crew_quarters/cabin2) +"dEB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/stool, +/obj/effect/landmark/tiles/burnturf, +/obj/machinery/light, +/turf/simulated/floor/engine, +/area/medical/chemistry) +"dEJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"dEZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"dFt" = ( +/obj/effect/spawner/window/reinforced/plasma, +/obj/machinery/door/poddoor/preopen{ + id_tag = "burn"; + name = "Blast Door" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/incinerator) +"dFw" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/junction/reversed{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"dFy" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/bridge/vip) +"dFz" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge) +"dFC" = ( +/obj/effect/landmark/start/coroner, +/turf/simulated/floor/wood, +/area/coldcolony/morgue) +"dFE" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/security/lobby) +"dFX" = ( +/obj/structure/table/wood, +/obj/item/folder/blue, +/turf/simulated/floor/carpet/royalblue, +/area/bridge/vip) +"dGc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset, +/obj/effect/decal/warning_stripes/blue, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/nw) +"dGf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/holosign/barrier/engineering, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"dGi" = ( +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/security/hos) +"dHf" = ( +/obj/structure/table, +/obj/machinery/fishtank/bowl{ + pixel_y = 5 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"dHn" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 6 + }, +/obj/structure/closet/secure_closet/guncabinet, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/obj/item/stack/tape_roll, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"dHq" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"dHs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"dIr" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"dIR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"dJn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/sorting) +"dJF" = ( +/obj/structure/closet/firecloset, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"dJH" = ( +/obj/structure/disposalpipe/junction/reversed{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"dJL" = ( +/obj/effect/mob_spawn/human/corpse/damaged, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"dJU" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"dKf" = ( +/obj/structure/sign/xenobio, +/turf/simulated/wall, +/area/medical/research/shallway) +"dKh" = ( +/obj/structure/bed, +/obj/effect/spawner/random_spawners/syndicate/loot{ + result = list(/obj/item/bedsheet/blue = 10, /obj/item/bedsheet/black = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/fluff = 10, /obj/item/bedsheet/green = 10, /obj/item/bedsheet/orange = 10, /obj/item/bedsheet/purple = 10, /obj/item/bedsheet/red = 10, /obj/item/bedsheet/yellow = 10); + name = "bedsheet" + }, +/obj/effect/landmark/join_late, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep) +"dKo" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securearmory) +"dKv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"dKx" = ( +/obj/machinery/computer/guestpass{ + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/brig) +"dLe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"dLn" = ( +/obj/structure/table/reinforced, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/machinery/camera{ + c_tag = "Bridge"; + dir = 1 + }, +/obj/item/radio, +/obj/item/radio{ + pixel_x = 3; + pixel_y = 2 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge) +"dLC" = ( +/obj/structure/railing/corner, +/obj/effect/turf_decal/siding/wideplating/corner{ + color = "#332a2a" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"dLF" = ( +/turf/simulated/wall/rust, +/area/library/game_zone) +"dLM" = ( +/obj/machinery/light, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"dMe" = ( +/obj/machinery/computer/secure_data{ + dir = 8 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/checkpoint) +"dMg" = ( +/turf/simulated/wall, +/area/medical/surgery/south) +"dMl" = ( +/obj/structure/sign/poster/contraband/random{ + pixel_x = 32 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/radiation, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"dMv" = ( +/obj/effect/decal/warning_stripes/blue, +/obj/structure/closet/emcloset, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"dMx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"dMP" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"dMT" = ( +/obj/structure/chair/office/dark, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"dNf" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"dNk" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"dNo" = ( +/obj/structure/chair/sofa/right{ + dir = 1 + }, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/theatre) +"dNy" = ( +/obj/machinery/vending/cigarette, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/main) +"dNR" = ( +/obj/structure/table, +/obj/item/hand_labeler, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"dNT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/wood/fancy/oak, +/area/blueshield) +"dOi" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/start/trainee_engineer, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"dOm" = ( +/obj/machinery/door/airlock/security/glass{ + id_tag = "Perma21"; + name = "Prison 2"; + req_access = list(2); + security_level = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"dOy" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"dOF" = ( +/obj/effect/decal/warning_stripes/yellow/partial, +/obj/effect/landmark/join_late_cyborg, +/obj/machinery/computer/guestpass{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"dOK" = ( +/obj/structure/bed/dogbed{ + desc = "A comfy-looking spider bed. You can even strap your pet in, just in case the gravity turns off."; + name = "spider bed" + }, +/mob/living/simple_animal/hostile/retaliate/araneus, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/hos) +"dOO" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkyellow" + }, +/area/bridge/vip) +"dOU" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"dPb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"dPg" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/cans/beer{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/reagent_containers/food/drinks/cans/beer{ + pixel_x = 3; + pixel_y = 5 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"dPm" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry) +"dPq" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/medical/sleeper) +"dPw" = ( +/obj/machinery/flasher{ + id = "Cell 3"; + name = "Cell 3 Flasher"; + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"dPX" = ( +/obj/structure/dresser, +/turf/simulated/floor/carpet/purple, +/area/bridge/vip) +"dQs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"dQR" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whitered" + }, +/area/security/medbay) +"dRf" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/crew_quarters/chief) +"dRm" = ( +/obj/structure/flora/grass/green, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"dRr" = ( +/obj/machinery/light/small, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"dRu" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"dRx" = ( +/obj/machinery/vending/cigarette, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/starboard/east) +"dRG" = ( +/obj/machinery/shower{ + dir = 8; + tag = "icon-shower (WEST)" + }, +/obj/structure/curtain/open/shower, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/locker/locker_toilet) +"dRJ" = ( +/obj/structure/table/reinforced, +/obj/item/flashlight{ + pixel_y = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/processing) +"dSb" = ( +/obj/structure/lattice, +/obj/item/stack/sheet/metal, +/turf/simulated/floor/plating/asteroid, +/area/coldcolony/ruin/sm_chamber) +"dSK" = ( +/obj/item/stack/sheet/wood, +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/snow/sand/edge{ + dir = 10 + }, +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"dST" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/main) +"dTd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"dTw" = ( +/obj/structure/grille, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"dTR" = ( +/obj/structure/fans/tiny, +/obj/effect/decal/snow/sand/edge{ + dir = 9 + }, +/obj/machinery/door/airlock/external/glass{ + name = "Mining External Airlock"; + welded = 1 + }, +/obj/structure/barricade/wooden/crude/snow{ + layer = 3.3 + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/miningeva) +"dTT" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/structure/barricade/wooden/crude/snow{ + layer = 3.3 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/ore_production) +"dUe" = ( +/obj/effect/decal/warning_stripes/north, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"dUh" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"dUj" = ( +/obj/machinery/vending/clothing/departament/security, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/customs) +"dUq" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Bridge"; + req_access = list(19) + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"dUv" = ( +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"dUz" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"dUA" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whitepurplefull" + }, +/area/toxins/lab) +"dUH" = ( +/obj/structure/sign/engineering, +/turf/simulated/wall/rust, +/area/engineering/break_room) +"dUL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"dUN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research) +"dUW" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"dVt" = ( +/turf/simulated/wall/rust, +/area/coldcolony/ruin/sm_lab) +"dVy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ntrep) +"dVP" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/double, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"dVZ" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "cautioncorner" + }, +/area/atmos) +"dWc" = ( +/obj/effect/decal/cleanable/fungus, +/turf/simulated/wall/mineral/iron, +/area/coldcolony/ruin/syndie_outpost) +"dWj" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/bridge/vip) +"dWv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"dWD" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/donut_box, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/library) +"dWE" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/security/detectives_office) +"dWK" = ( +/obj/item/storage/fancy/crayons{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"dWO" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/item/stack/sheet/metal, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"dWP" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"dXa" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"dXp" = ( +/obj/effect/decal/warning_stripes/yellow/partial, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"dXu" = ( +/obj/structure/computerframe, +/turf/simulated/floor/plasteel/grimy, +/area/civilian/vacantoffice) +"dXx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"dXz" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"dXJ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 4; + name = "Труба дыхательной смеси" + }, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/atmos) +"dXN" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 4; + name = "Труба фильтрации" + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 1; + name = "Труба смешивания" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"dXQ" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"dXR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/evidence) +"dXZ" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/customs) +"dYv" = ( +/obj/structure/table/reinforced, +/obj/item/trash/broken_ashtray, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"dYR" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/turf/simulated/floor/plasteel/white, +/area/crew_quarters/fitness) +"dZa" = ( +/obj/machinery/computer/arcade/battle, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"dZh" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/wood, +/area/coldcolony/ruin/miningbar) +"dZz" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"dZM" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table, +/turf/simulated/floor/carpet/arcade, +/area/crew_quarters/fitness) +"dZN" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/effect/landmark/start/security_officer, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"dZO" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"dZX" = ( +/obj/machinery/power/smes, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"eaf" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"eaJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/sorting) +"eaL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/security/medbay) +"eaU" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 5; + name = "Труба дыхательной смеси" + }, +/obj/structure/table/reinforced, +/obj/machinery/power/apc{ + pixel_y = -26 + }, +/obj/structure/cable, +/obj/item/storage/belt/utility, +/obj/item/crowbar/red, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"eaZ" = ( +/obj/structure/sign/poster/contraband/syndicate_recruitment{ + pixel_y = -32 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"ebl" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/item/deck/cards/doublecards, +/obj/structure/table, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"ebn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"ebJ" = ( +/obj/structure/table, +/obj/item/clothing/mask/cigarette/cigar/cohiba, +/obj/item/clothing/mask/cigarette/cigar/cohiba{ + pixel_x = 5 + }, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/vip) +"ebV" = ( +/turf/simulated/wall/rust, +/area/hallway/secondary/exit) +"ecf" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"ecu" = ( +/obj/machinery/power/apc/worn_out{ + cell_type = 0; + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) +"ecA" = ( +/obj/machinery/newscaster{ + pixel_x = -30 + }, +/obj/structure/table, +/obj/item/hand_labeler, +/obj/item/storage/firstaid/regular, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"ecK" = ( +/obj/structure/table, +/obj/item/storage/toolbox/surgery, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"ecV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkredcorners" + }, +/area/security/permabrig) +"ede" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"eds" = ( +/obj/machinery/power/apc{ + pixel_y = -26 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"edx" = ( +/obj/machinery/door/airlock/medical{ + name = "Genetics Lab"; + req_access = list(9,47) + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"edD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom{ + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"edJ" = ( +/obj/structure/closet/secure_closet/engineering_electrical, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/clothing/gloves/color/fyellow, +/turf/simulated/floor/plasteel{ + icon_state = "yellow" + }, +/area/engineering/break_room) +"edL" = ( +/obj/machinery/door/airlock/command{ + name = "Head of Personnel"; + req_access = list(57) + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"edS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "greencorner" + }, +/area/hallway/secondary/exit) +"edV" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/prize_counter, +/turf/simulated/floor/carpet/arcade, +/area/crew_quarters/fitness) +"edX" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/item/clothing/suit/hooded/wintercoat/medical, +/obj/item/storage/belt/medical, +/obj/item/clothing/glasses/hud/health, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" + }, +/area/medical/cmostore) +"eea" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"eec" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"eeh" = ( +/obj/effect/decal/cleanable/generic, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"eek" = ( +/obj/structure/table, +/obj/item/storage/box/teargas, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/shuttle/pirate_corvette) +"een" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"eeq" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/hos) +"ees" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/atm{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/research) +"eeA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"eeM" = ( +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"eeO" = ( +/obj/item/poster/random_contraband, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"eeP" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/quartermaster/qm) +"eeS" = ( +/obj/structure/chair/wood{ + dir = 1 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"eeW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/processing) +"efi" = ( +/obj/machinery/papershredder, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkpurple" + }, +/area/bridge/vip) +"efr" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"efC" = ( +/obj/structure/table/reinforced, +/obj/machinery/chem_dispenser/soda{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"efJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"efL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/reception) +"efO" = ( +/obj/structure/table/wood, +/obj/machinery/reagentgrinder, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/bar) +"egh" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"egk" = ( +/obj/machinery/atmospherics/pipe/manifold/visible, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"egt" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"egU" = ( +/obj/machinery/door/airlock/command{ + name = "Chief Medical Officer"; + req_access = list(40) + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/cmo) +"eha" = ( +/obj/machinery/power/smes{ + charge = 4e+006; + output_level = 20000 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"ehb" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/turf/simulated/floor/plasteel{ + icon_state = "darkbrown"; + dir = 5 + }, +/area/bridge/vip) +"ehs" = ( +/obj/structure/fans/tiny, +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/poddoor/shutters{ + id_tag = "lbgarage" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"ehv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"ehz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"ehZ" = ( +/obj/machinery/vending/shoedispenser, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"eii" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/theatre) +"eiq" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/carpet/black, +/area/bridge/meeting_room) +"eix" = ( +/obj/structure/rack, +/obj/item/airlock_electronics, +/obj/item/access_control, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"eiD" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/warden) +"eiT" = ( +/obj/structure/table, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/grenade/smokebomb{ + pixel_x = 5 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/shuttle/pirate_corvette) +"eja" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"ejh" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Bay"; + req_access = list(31,50) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"ejr" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 6; + name = "Труба фильтрации" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "caution" + }, +/area/atmos) +"ejt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"ejB" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"ekk" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/obj/machinery/camera{ + c_tag = "Prisoner Processing"; + dir = 1; + network = list("SS13","Security") + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/processing) +"ekH" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"ekY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"elr" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/paramedic) +"elx" = ( +/obj/item/flag/nt, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"eml" = ( +/obj/structure/table, +/obj/item/reagent_containers/spray/cleaner/janitor, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/janitor) +"emo" = ( +/obj/effect/turf_decal/box, +/obj/structure/closet/crate/internals, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) +"emC" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"emD" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"emE" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin2) +"emF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"emQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"emT" = ( +/turf/simulated/floor/wood/fancy/birch{ + icon_state = "fancy-wood-birch-broken4" + }, +/area/bridge/checkpoint/south) +"emZ" = ( +/turf/simulated/wall, +/area/bridge/vip) +"ena" = ( +/obj/structure/chair, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"ene" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"enp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"ent" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_chamber) +"enu" = ( +/obj/machinery/porta_turret/syndicate/pod{ + name = "machine gun turret (4.6x30mm)"; + faction = "pirate"; + dir = 1; + stat = 1; + icon_state = "syndieturret2"; + icon_state_initial = "syndieturret2" + }, +/turf/simulated/wall/shuttle/nosmooth{ + dir = 10; + icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi'; + icon_state = "gray_walls_corners"; + density = 0 + }, +/area/shuttle/pirate_corvette) +"enJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/medical/chemistry) +"enR" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/simulated/floor/grass, +/area/hydroponics) +"eoq" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/hydroponics/soil, +/obj/machinery/light, +/turf/simulated/floor/plasteel, +/area/maintenance/garden) +"eoK" = ( +/obj/machinery/atmospherics/binary/pump/on{ + target_pressure = 303.325 + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"eoL" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "magistrate"; + name = "Magistrate Privacy Shutters" + }, +/turf/simulated/floor/plating, +/area/magistrateoffice) +"eoP" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkredfull" + }, +/area/security/main) +"epB" = ( +/obj/structure/table/wood, +/obj/item/storage/bible, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/turf_decal/siding/white/corner{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"eqb" = ( +/obj/item/stack/sheet/wood{ + amount = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"eqe" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/vehicle/ridden/snowmobile/key, +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel, +/area/medical/research) +"eqg" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/floodlight, +/turf/simulated/floor/plasteel, +/area/storage/secure) +"eqX" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/item/crowbar/red, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"era" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine/monitor) +"erm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkpurplecorners" + }, +/area/bridge/vip) +"ern" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin1) +"ert" = ( +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/security/permabrig) +"erA" = ( +/obj/structure/flora/rock/pile, +/obj/structure/flora/tree/pine, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"erK" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker/locker_toilet) +"est" = ( +/obj/structure/table, +/obj/item/folder{ + pixel_x = 3 + }, +/obj/item/flashlight/lamp{ + layer = 4; + pixel_x = -2; + pixel_y = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/evidence) +"esx" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"esO" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/floodlight, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hydroponics) +"eth" = ( +/obj/structure/closet/crate/vault, +/obj/item/storage/belt/champion/wrestling/true, +/obj/item/stack/sheet/mineral/gold, +/obj/item/stack/sheet/mineral/gold, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/nuke_storage) +"ett" = ( +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"ety" = ( +/obj/structure/disposalpipe/junction/reversed{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"etB" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"etN" = ( +/obj/machinery/door/airlock/maintenance{ + req_access = list(2) + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/perma) +"etP" = ( +/obj/item/pickaxe/safety, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/miningeva) +"etV" = ( +/obj/machinery/door/airlock/medical{ + name = "Medical Storage"; + req_access = list(5) + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/cmostore) +"etX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/miningeva) +"eue" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"eun" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"eup" = ( +/obj/structure/closet/crate/engineering, +/obj/random/tool, +/obj/random/tool, +/obj/random/toolbox, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"euC" = ( +/obj/effect/turf_decal/loading_area, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"euD" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/gun/projectile/shotgun/riot{ + pixel_x = -7 + }, +/obj/item/gun/projectile/shotgun/riot{ + pixel_x = 7 + }, +/obj/item/gun/projectile/shotgun/riot, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Riot shotguns" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"euO" = ( +/obj/effect/decal/cleanable/blood/drip{ + pixel_y = 20 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"euR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/reception) +"euZ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + scrub_Toxins = 0 + }, +/obj/item/trash/tastybread, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"evA" = ( +/obj/machinery/light, +/obj/effect/turf_decal/bot, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/coldcolony/ruin/abandoned_garage) +"evC" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"evO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/chemistry) +"evT" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"evW" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"ewd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/doctor, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"ewv" = ( +/obj/machinery/photocopier, +/obj/machinery/light, +/turf/simulated/floor/carpet/royalblue, +/area/ntrep) +"ewG" = ( +/obj/machinery/computer/card/minor/rd, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whitepurple" + }, +/area/crew_quarters/hor) +"ewI" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"ewL" = ( +/obj/structure/table/reinforced, +/obj/item/clipboard, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/chief) +"ewM" = ( +/obj/effect/landmark/start/shaft_miner, +/obj/structure/bed/pod, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"exp" = ( +/obj/machinery/computer/card/minor/hos, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"exE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hydroponics) +"exQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"exR" = ( +/obj/item/clothing/head/bearpelt, +/obj/item/folder/documents, +/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka, +/obj/item/lighter/zippo/nt_rep, +/obj/item/storage/fancy/cigarettes/cigpack_robustgold, +/obj/item/reagent_containers/food/drinks/trophy/gold_cup, +/obj/item/stack/spacecash/c1000{ + amount = 100000 + }, +/obj/structure/safe{ + known_by = list("captain") + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/nuke_storage) +"exZ" = ( +/obj/item/storage/firstaid/regular, +/obj/structure/table, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"eyk" = ( +/obj/structure/table, +/obj/item/folder, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"eyx" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/structure/closet, +/obj/item/poster/random_contraband, +/obj/item/poster/random_contraband, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"eyE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"eyK" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkyellow" + }, +/area/bridge/vip) +"ezi" = ( +/turf/simulated/wall/mineral/iron, +/area/coldcolony/ruin/syndie_outpost) +"ezC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"ezD" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"ezJ" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/engine, +/area/coldcolony/ruin/sm_chamber) +"ezT" = ( +/obj/structure/sign/custodian, +/turf/simulated/wall, +/area/janitor) +"ezV" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker) +"ezW" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"ezX" = ( +/obj/effect/decal/snow/sand/edge, +/turf/simulated/wall/mineral/titanium, +/area/ruin/unpowered) +"eAi" = ( +/obj/structure/table/reinforced, +/obj/machinery/reagentgrinder{ + pixel_x = -1; + pixel_y = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"eAn" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"eAo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securehallway) +"eAD" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id_tag = "Brig_lockdown"; + name = "Brig Lockdown" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "brig_detprivacy"; + name = "Detective Privacy Shutters" + }, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/security/detectives_office) +"eAE" = ( +/obj/machinery/power/apc/noalarm{ + pixel_y = 26; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/engineering/gravitygenerator) +"eAR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot/left, +/obj/effect/turf_decal/bot/right, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/sorting) +"eAS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"eAW" = ( +/turf/simulated/wall/rust, +/area/medical/chemistry) +"eBd" = ( +/obj/structure/flora/grass/green, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"eBi" = ( +/obj/item/gun/energy/gun/advtaser{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/gun/advtaser{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/gun/energy/gun/advtaser, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Tasers"; + req_access = list(1) + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/main) +"eBA" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/hydroponics/soil, +/obj/item/seeds/tower, +/turf/simulated/floor/plasteel, +/area/maintenance/garden) +"eBH" = ( +/obj/structure/table, +/obj/machinery/light_switch{ + pixel_x = 24 + }, +/obj/machinery/camera{ + c_tag = "Departure Lounge Security"; + network = list("SS13","Security") + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "red" + }, +/area/hallway/primary/starboard/east) +"eBX" = ( +/obj/effect/landmark/start/civilian, +/obj/structure/chair/stool/bar, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"eBZ" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/clothing/accessory/stethoscope, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"eCb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"eCc" = ( +/turf/simulated/floor/plating, +/area/hallway/primary/central/se) +"eCm" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/atmos) +"eCC" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hydroponics) +"eCH" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry) +"eCJ" = ( +/obj/machinery/atmospherics/unary/tank/air{ + dir = 8 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"eCV" = ( +/obj/machinery/portable_atmospherics/scrubber/huge/stationary, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"eCY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"eCZ" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/main) +"eDb" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_x = -5; + pixel_y = 1 + }, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_x = -5; + pixel_y = 1 + }, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_x = -5; + pixel_y = 1 + }, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_x = -5; + pixel_y = 1 + }, +/obj/item/storage/box/gloves{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/machinery/power/apc{ + pixel_y = -26 + }, +/obj/structure/cable, +/turf/simulated/floor/plasteel{ + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"eDi" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"eDF" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"eDR" = ( +/obj/structure/rack, +/obj/item/wirecutters, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/coldcolony/ruin/abandoned_garage) +"eEK" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) +"eEN" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"eEO" = ( +/obj/structure/chair/office/dark, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/landmark/start/warden, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/warden) +"eEQ" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"eFf" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel, +/area/crew_quarters/kitchen) +"eFj" = ( +/obj/structure/flora/grass/both, +/mob/living/simple_animal/pet/dog/fox/forest/winter, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"eFm" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"eFo" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/snow/sand/edge, +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"eFq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"eFK" = ( +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/coldcolony/ruin/miningbar) +"eFN" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/hydroponics/soil, +/obj/item/seeds/tea, +/turf/simulated/floor/plasteel, +/area/maintenance/garden) +"eGv" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"eGN" = ( +/obj/machinery/flasher_button{ + id = "permacell1"; + name = "Perma cell 1 flasher button"; + pixel_x = -8; + pixel_y = -24 + }, +/obj/machinery/flasher_button{ + id = "permacell2"; + name = "Perma cell 2 flasher button"; + pixel_x = 8; + pixel_y = -24 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera{ + c_tag = "Permabrig Office"; + dir = 1; + network = list("Prison","SS13"); + pixel_x = 22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/permahallway) +"eGW" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/toxins/server) +"eHc" = ( +/obj/effect/decal/ants, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"eHn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/spawner/random_spawners/rodent, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"eHz" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) +"eIn" = ( +/obj/machinery/power/apc{ + pixel_y = 26; + dir = 1 + }, +/obj/structure/table, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/item/clothing/suit/hooded/wintercoat/medical, +/obj/item/clothing/suit/hooded/wintercoat/medical, +/obj/item/clothing/suit/hooded/wintercoat/medical, +/obj/item/clothing/suit/hooded/wintercoat/medical, +/obj/item/clothing/suit/hooded/wintercoat/medical, +/obj/item/clothing/suit/hooded/wintercoat/medical, +/obj/item/clothing/suit/hooded/wintercoat/medical, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/cmostore) +"eIx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/junction/reversed{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"eIE" = ( +/obj/machinery/door/window/eastright{ + dir = 1; + name = "Virology Work Zone"; + req_access = list(5) + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/medical/virology/lab) +"eIR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"eIU" = ( +/obj/effect/turf_decal/box{ + do_not_delete_me = 1 + }, +/obj/structure/dispenser/oxygen, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"eJw" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/bridge/meeting_room) +"eJN" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"eJW" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) +"eKv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/office) +"eKC" = ( +/obj/structure/chair/sofa/left{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/magistrateoffice) +"eKQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/garden) +"eKR" = ( +/turf/simulated/wall/rust, +/area/hydroponics) +"eKT" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/bar/atrium) +"eKU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkredcorners" + }, +/area/security/processing) +"eLh" = ( +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/ore_production) +"eLn" = ( +/obj/item/chair/wood, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"eLz" = ( +/obj/item/circuitboard/rdconsole/experiment, +/obj/structure/closet/crate/engineering/electrical, +/obj/item/stack/cable_coil, +/obj/item/firelock_electronics, +/obj/item/firelock_electronics, +/obj/item/airlock_electronics, +/obj/item/access_control, +/turf/simulated/floor/plating, +/area/toxins/explab) +"eLO" = ( +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"eLX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/storage) +"eMo" = ( +/obj/structure/table/wood, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"eMs" = ( +/obj/machinery/door/airlock/security/glass{ + id_tag = "Perma11"; + name = "Prison 1"; + req_access = list(2); + security_level = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"eMu" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) +"eMx" = ( +/obj/item/chair/stool, +/turf/simulated/floor/wood{ + icon_state = "wood-broken7"; + tag = "icon-wood-broken7" + }, +/area/toxins/test_chamber) +"eMP" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 6 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/execution) +"eMS" = ( +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"eNm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/fitness) +"eNo" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/structure/flora/grass/green, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"eNu" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"eNv" = ( +/turf/simulated/wall, +/area/medical/sleeper) +"eNw" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Quartermaster Room"; + req_access = list(41) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"eNC" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/hallway/primary/fore) +"eNF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Dormitory" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin1) +"eNN" = ( +/turf/simulated/wall/rust, +/area/crew_quarters/kitchen) +"eNU" = ( +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + desc = "Труба ведёт газ на фильтрацию"; + dir = 5; + name = "Труба на фильтрацию" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"eOr" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"eOz" = ( +/obj/structure/chair/sofa{ + dir = 4 + }, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/wood/fancy/cherry, +/area/library) +"eOC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/kitchen) +"eOE" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/northleft{ + dir = 8 + }, +/obj/machinery/door/window/southleft{ + name = "Research Lab Desk"; + req_access = list(47); + dir = 4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "researchdesk1"; + name = "Research Desk Shutters" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/toxins/lab) +"eOV" = ( +/obj/structure/closet/secure_closet/hydroponics, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/obj/item/clothing/suit/hooded/wintercoat/hydro, +/turf/simulated/floor/plasteel{ + icon_state = "hydrofloor" + }, +/area/hydroponics) +"eOY" = ( +/obj/structure/chair/sofa/pew/left{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "chapel" + }, +/area/chapel/main) +"ePa" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/effect/turf_decal/weather/snow/corner, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"ePo" = ( +/turf/simulated/wall/r_wall, +/area/coldcolony/ruin/sm_lab) +"ePp" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/nuke_storage) +"ePA" = ( +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"ePN" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"ePQ" = ( +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker/locker_toilet) +"ePU" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/grimy, +/area/civilian/vacantoffice) +"ePY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/botanist, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "greenfull" + }, +/area/hydroponics) +"eQe" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) +"eQj" = ( +/obj/structure/flora/grass/green, +/turf/simulated/wall/mineral/wood/nonmetal, +/area/coldcolony/ruin/abandoned_house) +"eQk" = ( +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"eQr" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/structure/safe/floor, +/obj/item/clothing/gloves/color/yellow, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"eQz" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/closet/crate/trashcart, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"eQK" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/light{ + active_power_usage = 0; + dir = 8; + icon_state = "tube-broken"; + status = 2 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"eQQ" = ( +/obj/structure/dresser, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/crew_quarters/cabin1) +"eQZ" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"eRo" = ( +/obj/structure/sign/science, +/turf/simulated/wall/r_wall, +/area/crew_quarters/hor) +"eRr" = ( +/obj/structure/closet/crate, +/obj/item/storage/box/lights/mixed, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"eRt" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/obj/item/cigbutt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"eRA" = ( +/obj/effect/turf_decal/siding/wideplating{ + dir = 1 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"eRB" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"eRF" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"eRO" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/mechanical, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"eSn" = ( +/obj/machinery/atmospherics/binary/pump/on{ + target_pressure = 303.325; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"eSo" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/sorting) +"eSu" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "escape" + }, +/area/hallway/secondary/entry/lounge) +"eSv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"eSF" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"eSG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/miningeva) +"eSY" = ( +/obj/machinery/mech_bay_recharge_port, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/coldcolony/ruin/abandoned_garage) +"eTa" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"eTg" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"eTi" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/officetoys, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "darkbrown" + }, +/area/bridge/vip) +"eTj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"eTx" = ( +/turf/simulated/wall/r_wall/rust, +/area/security/warden) +"eTA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"eTL" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/coldcolony/ruin/abandoned_garage) +"eTR" = ( +/obj/effect/decal/warning_stripes/northwestcorner, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"eTZ" = ( +/obj/structure/table_frame, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"eUl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"eUC" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/structure/fence/cut/large, +/obj/effect/turf_decal/weather/snow/corner, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"eUJ" = ( +/obj/structure/flora/grass/brown, +/obj/effect/decal/cleanable/blood/writing, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"eVm" = ( +/obj/machinery/door_control{ + id = "Clown"; + name = "Clowns Privacy Shutters Control"; + pixel_x = 8; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/clownoffice) +"eVA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"eVG" = ( +/obj/machinery/atmospherics/trinary/filter{ + desc = "Отфильтровывает азот из трубы и отправляет его в камеру хранения"; + dir = 8; + filter_type = 2; + name = "Фильтр Азота (N2)"; + on = 1; + target_pressure = 4500 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"eVX" = ( +/turf/simulated/floor/wood, +/area/security/detectives_office) +"eWj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"eWK" = ( +/obj/structure/cult/archives, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"eWP" = ( +/obj/machinery/atmospherics/unary/tank/toxins{ + volume = 2000 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"eWR" = ( +/obj/machinery/light{ + dir = 1 + }, +/mob/living/simple_animal/pet/cat/white/Penny, +/obj/structure/bed/dogbed/pet, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"eWS" = ( +/obj/machinery/computer/secure_data, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/reception) +"eXd" = ( +/obj/effect/decal/ants, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"eXu" = ( +/obj/effect/landmark/start/doctor, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"eXz" = ( +/obj/structure/alien/weeds, +/obj/item/organ/internal/kidneys, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"eXF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"eXJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"eXP" = ( +/obj/structure/table/wood, +/obj/item/lighter/zippo/fluff/purple, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"eXS" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/bar) +"eXZ" = ( +/obj/machinery/recharge_station, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "purple" + }, +/area/assembly/chargebay) +"eYb" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whitered" + }, +/area/security/medbay) +"eYi" = ( +/obj/machinery/door/airlock/maintenance{ + req_access = list(26,32) + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"eYk" = ( +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Security SMG's" + }, +/obj/item/gun/projectile/automatic/wt550{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/projectile/automatic/wt550, +/obj/item/gun/projectile/automatic/wt550{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"eYo" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"eYu" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-25"; + tag = "icon-plant-25" + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"eYy" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"eYI" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 4 + }, +/obj/effect/decal/snow/sand/edge, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"eYR" = ( +/turf/simulated/floor/carpet/orange, +/area/bridge/vip) +"eZa" = ( +/obj/structure/table, +/obj/item/reagent_containers/spray/cleaner/medical/empty, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"eZf" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Paramedic"; + req_access = list(66) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel/white, +/area/medical/paramedic) +"eZh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"eZJ" = ( +/obj/machinery/atmospherics/unary/tank/toxins{ + volume = 2000; + dir = 1 + }, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"eZR" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"eZV" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/crate, +/obj/item/clothing/head/fluff/arachno_mask, +/obj/item/clothing/head/fluff/kiahat, +/obj/item/clothing/head/fluff/blacksombrero, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"eZW" = ( +/obj/structure/table/wood, +/obj/machinery/computer/med_data/laptop, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"faO" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"faQ" = ( +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"faT" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/greengrid, +/area/security/nuke_storage) +"faV" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"fbi" = ( +/obj/structure/closet/firecloset, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"fbq" = ( +/obj/machinery/vending/coffee, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/bridge) +"fbz" = ( +/obj/machinery/vending/coffee{ + stat = 1; + obj_integrity = 95 + }, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/reagent_containers/food/drinks/coffee, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"fcb" = ( +/obj/structure/fluff/grave/empty, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"fcd" = ( +/turf/simulated/wall, +/area/medical/paramedic) +"fcp" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin2) +"fcF" = ( +/obj/structure/flora/tree/pine, +/obj/effect/decal/snow/sand/edge, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"fcG" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + pixel_y = 26; + dir = 1 + }, +/obj/structure/closet/crate/engineering, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"fdy" = ( +/turf/simulated/wall, +/area/coldcolony/ruin/sm_maintenance) +"fdC" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/flora/ausbushes/leafybush, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/grass, +/area/hallway/secondary/exit) +"fdF" = ( +/obj/machinery/vending/coffee, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brig) +"fdJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/maintenance/kitchen) +"few" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/commercial) +"feM" = ( +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/crew_quarters/chief) +"ffr" = ( +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/engine, +/area/coldcolony/ruin/sm_chamber) +"ffP" = ( +/obj/effect/spawner/window/reinforced/polarized{ + id = "qm_snow" + }, +/turf/simulated/floor/plating, +/area/quartermaster/qm) +"ffQ" = ( +/obj/structure/sign/cargo, +/turf/simulated/wall, +/area/quartermaster/office) +"fgj" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/storage) +"fgr" = ( +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"fgt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/baseturf_helper/asteroid, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/processing) +"fgZ" = ( +/obj/machinery/chem_master, +/turf/simulated/floor/engine, +/area/medical/chemistry) +"fhb" = ( +/obj/machinery/hydroponics/soil, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/maintenance/garden) +"fhc" = ( +/obj/effect/baseturf_helper/asteroid, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"fhp" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/security/customs) +"fhv" = ( +/obj/machinery/door/poddoor/preopen{ + id_tag = "burn"; + name = "Blast Door" + }, +/obj/machinery/door/airlock/highsecurity{ + heat_proof = 1; + name = "Waste Incinerator"; + req_access = list(12,24,39) + }, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"fhw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/clothing/suit/apron/surgical, +/obj/item/clothing/suit/apron/surgical, +/obj/item/storage/belt/medical/surgery, +/obj/item/storage/belt/medical/surgery, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"fhD" = ( +/obj/structure/coatrack, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"fhP" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkredcorners" + }, +/area/shuttle/pirate_corvette) +"fid" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"fif" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_x = -30 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"fip" = ( +/obj/item/shard, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"fiE" = ( +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"fiJ" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Medbay Maintenance"; + req_access = list(5) + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel/white, +/area/maintenance/asmaint) +"fiU" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hydroponics) +"fiW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/garden) +"fjp" = ( +/turf/simulated/wall/mineral/abductor, +/area/ruin/unpowered) +"fjs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event/revenantspawn, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"fjE" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/permahallway) +"fjI" = ( +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/bridge/vip) +"fjO" = ( +/obj/structure/chair/office/dark, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"fjU" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "smresdesk1"; + name = "Shutters" + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"fjY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Dormitory" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin2) +"fks" = ( +/turf/simulated/wall, +/area/hallway/secondary/entry) +"fkB" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plating, +/area/hallway/primary/central/north) +"flo" = ( +/obj/structure/spirit_board, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"flp" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/candle_box/full, +/obj/item/storage/fancy/candle_box/full{ + pixel_x = -3; + pixel_y = 3 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"flT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/qm) +"flW" = ( +/obj/item/clothing/under/vox/vox_robes, +/obj/structure/closet, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"fmp" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "magistrate"; + name = "Magistrate Privacy Shutters" + }, +/turf/simulated/floor/plating, +/area/magistrateoffice) +"fmz" = ( +/obj/effect/turf_decal/box, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) +"fmA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"fmI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "escape" + }, +/area/hallway/secondary/entry/lounge) +"fmK" = ( +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) +"fmO" = ( +/obj/structure/rack, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/radio{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/radio{ + pixel_x = 1; + pixel_y = 3 + }, +/obj/item/radio{ + pixel_x = -4; + pixel_y = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/engineering/engine/monitor) +"fmR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"fmY" = ( +/obj/item/reagent_containers/spray/plantbgone{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/structure/closet/crate/hydroponics, +/obj/item/cultivator, +/obj/item/hatchet, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"fnk" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/toxins/explab) +"fnG" = ( +/obj/structure/table, +/obj/item/storage/fancy/donut_box, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/processing) +"fnN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"fnX" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"fom" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/sleep) +"fph" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"fpi" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28 + }, +/obj/item/stock_parts/cell/high/plus{ + pixel_x = 5; + pixel_y = 6 + }, +/obj/item/healthanalyzer, +/obj/item/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/storage/firstaid/regular/empty{ + name = "First-Aid (empty)" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/assembly/robotics) +"fpp" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"fpv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera{ + c_tag = "Dock Entrance"; + dir = 10 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/secondary/entry/lounge) +"fqv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"fqE" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/assembly/robotics) +"fqO" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/table, +/obj/item/tank/internals/generic, +/obj/item/flashlight, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"fqQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"fri" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"frj" = ( +/obj/machinery/r_n_d/circuit_imprinter{ + pixel_x = -1; + pixel_y = 3 + }, +/obj/machinery/light, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/toxins/lab) +"frv" = ( +/obj/machinery/photocopier, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"frx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/processing) +"frD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"frE" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/security/lobby) +"frM" = ( +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"frN" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/cleanable/blood/gibs, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"frV" = ( +/obj/machinery/portable_atmospherics/scrubber, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"fsn" = ( +/turf/simulated/wall/r_wall, +/area/security/evidence) +"fsr" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/chief) +"fss" = ( +/obj/structure/table/wood, +/obj/item/lighter/zippo/nt_rep, +/turf/simulated/floor/carpet/royalblue, +/area/ntrep) +"fsS" = ( +/obj/machinery/atmospherics/unary/portables_connector, +/obj/machinery/portable_atmospherics/canister, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"fsU" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/reception) +"ftf" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"ftp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"ftR" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/hallway/primary/central/nw) +"fut" = ( +/obj/structure/rack, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/flashlight{ + pixel_x = -6; + pixel_y = 9 + }, +/obj/item/flashlight{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/item/flashlight{ + pixel_y = 3 + }, +/obj/item/flashlight{ + pixel_x = 3 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/engineering/break_room) +"fuA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"fuJ" = ( +/turf/simulated/floor/plasteel{ + icon_state = "browncorner" + }, +/area/quartermaster/qm) +"fuQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/landmark/marauder_entry, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"fuU" = ( +/obj/machinery/vending/coffee, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"fuW" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"fvv" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkbrown"; + dir = 1 + }, +/area/bridge/vip) +"fvH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"fvW" = ( +/obj/effect/decal/warning_stripes/west, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"fwa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/chair/office/light, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/carpet, +/area/medical/cmo) +"fwb" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/shuttle/pirate_corvette) +"fwf" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/barricade/wooden/crude{ + layer = 3.3 + }, +/turf/simulated/floor/plating, +/area/maintenance/casino) +"fwn" = ( +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"fwo" = ( +/obj/structure/table/reinforced, +/obj/item/trash/candy, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"fwt" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Telecommunications Access"; + req_access = list(19) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/tcommsat/chamber) +"fwH" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/sign/poster/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/quartermaster/office) +"fwP" = ( +/turf/simulated/floor/carpet/royalblue, +/area/ntrep) +"fxl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"fxp" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"fxs" = ( +/obj/item/clothing/suit/hooded/wintercoat/medical/science, +/obj/item/clothing/suit/hooded/wintercoat/medical/science, +/obj/item/clothing/suit/hooded/wintercoat/medical/science, +/obj/item/clothing/suit/hooded/wintercoat/medical/science, +/obj/item/clothing/suit/hooded/wintercoat/medical/science, +/obj/item/clothing/suit/hooded/wintercoat/medical/science, +/obj/item/clothing/suit/hooded/wintercoat/medical/science, +/obj/structure/closet/crate/plastic, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"fxv" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"fxH" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/snacks/candy/cash, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"fxX" = ( +/obj/structure/table, +/obj/item/book/manual/security_space_law, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/lobby) +"fym" = ( +/obj/machinery/light, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"fyv" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 4; + name = "Труба фильтрации" + }, +/obj/effect/decal/warning_stripes/east, +/obj/machinery/atmospherics/meter, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"fyE" = ( +/obj/machinery/computer/supplycomp{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"fyF" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/light/tube, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"fyI" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/head/beret, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/radio/intercom{ + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"fyN" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/hallway/primary/fore) +"fyZ" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"fza" = ( +/obj/effect/mist, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"fzp" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"fzC" = ( +/obj/structure/chair, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"fzL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atm{ + pixel_x = 32 + }, +/turf/simulated/floor/plating, +/area/maintenance/kitchen) +"fzT" = ( +/turf/simulated/wall/rust, +/area/mimeoffice) +"fzZ" = ( +/turf/simulated/floor/carpet/purple, +/area/bridge/vip) +"fAJ" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow/corner, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"fAN" = ( +/obj/structure/closet/crate, +/obj/item/storage/box/beakers{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/reagent_containers/glass/beaker/large, +/obj/item/reagent_containers/dropper, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"fAP" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"fAS" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 1; + name = "Труба дыхательной смеси" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/landmark/start/atmospheric, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/atmos) +"fBc" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/syringe{ + pixel_x = -1; + pixel_y = -11 + }, +/obj/item/reagent_containers/syringe/calomel{ + pixel_x = -1; + pixel_y = -6 + }, +/obj/item/reagent_containers/syringe/heparin{ + pixel_x = -1; + pixel_y = -1 + }, +/obj/item/reagent_containers/syringe/calomel{ + pixel_x = -1; + pixel_y = 4 + }, +/obj/item/reagent_containers/glass/bottle/reagent/hairgrownium{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/reagent_containers/glass/bottle/frostoil{ + pixel_x = 5; + pixel_y = 8 + }, +/obj/item/reagent_containers/glass/bottle/mutagen{ + pixel_y = 6 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/processing) +"fBg" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "Genetics"; + name = "Genetics Privacy Shutters" + }, +/turf/simulated/floor/plating, +/area/medical/genetics) +"fBs" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/crew_quarters/locker) +"fBN" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 4; + name = "Труба смешивания" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos) +"fCt" = ( +/obj/structure/pit/closed/grave, +/obj/item/reagent_containers/food/snacks/grown/tomato/blood{ + name = "He died for our sins"; + desc = "So bloody...so...very...bloody..."; + anchored = 1 + }, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"fCE" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/unpowered) +"fCQ" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 8 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"fCR" = ( +/obj/structure/railing{ + dir = 6 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"fCS" = ( +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"fCV" = ( +/obj/structure/table/wood, +/obj/machinery/button/windowtint{ + dir = 1; + id = "ntr"; + pixel_x = -6; + pixel_y = 8 + }, +/obj/machinery/door_control{ + id = "representative"; + name = "Privacy Shutters Control"; + pixel_x = -6; + pixel_y = -2; + req_access = list(73) + }, +/turf/simulated/floor/carpet/royalblue, +/area/ntrep) +"fDe" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"fDf" = ( +/obj/structure/table/reinforced, +/obj/item/trash/plate{ + pixel_x = 6; + pixel_y = 7 + }, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"fDp" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/snacks/fried_vox, +/obj/item/reagent_containers/food/snacks/fried_vox, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"fDx" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"fDN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) +"fDQ" = ( +/obj/machinery/constructable_frame/machine_frame, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"fEi" = ( +/obj/structure/displaycase, +/turf/simulated/floor/plasteel{ + icon_state = "darkbrown"; + dir = 8 + }, +/area/bridge/vip) +"fEl" = ( +/obj/effect/mob_spawn/human/corpse/damaged, +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"fEs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/sleeper{ + pixel_x = 3 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"fEv" = ( +/obj/item/clothing/gloves/botanic_leather, +/obj/item/reagent_containers/spray/pestspray, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/permabrig) +"fEy" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/atmos) +"fEB" = ( +/obj/structure/closet/crate/sci, +/obj/item/storage/box/monkeycubes, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/obj/item/assembly/signaler{ + pixel_y = 5 + }, +/obj/item/assembly/signaler{ + pixel_y = 5 + }, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"fEH" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/arcade/claw, +/turf/simulated/floor/carpet/arcade, +/area/crew_quarters/fitness) +"fEV" = ( +/obj/machinery/recharge_station, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "purple" + }, +/area/assembly/chargebay) +"fFf" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/perma) +"fFo" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"fFu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/lounge) +"fFP" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"fFZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin1) +"fGD" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"fGE" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"fGJ" = ( +/turf/simulated/wall/rust, +/area/hallway/secondary/entry/lounge) +"fGW" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"fHf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/storage) +"fHz" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/research) +"fHH" = ( +/obj/item/stack/sheet/wood, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"fHK" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"fHP" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"fHQ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "hopqueueshutters"; + name = "Queue Shutters" + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"fIl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/securearmory) +"fIJ" = ( +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"fIQ" = ( +/obj/machinery/shower{ + dir = 4; + tag = "icon-shower (EAST)" + }, +/obj/structure/curtain/open/shower, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/locker/locker_toilet) +"fIS" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "hydrofloor" + }, +/area/hydroponics) +"fJs" = ( +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/storage) +"fJt" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"fJy" = ( +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plating, +/area/security/securehallway) +"fJD" = ( +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"fKo" = ( +/obj/structure/table, +/obj/item/camera, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera{ + c_tag = "Permabrig"; + network = list("Prison","SS13") + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"fKy" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"fKL" = ( +/obj/item/flag/nt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/bridge) +"fKO" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Engineering"; + req_access = list(32) + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"fKQ" = ( +/mob/living/simple_animal/hostile/bear/polar{ + health = 90; + maxHealth = 90 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"fKR" = ( +/turf/simulated/floor/plasteel, +/area/quartermaster/qm) +"fKY" = ( +/obj/machinery/atmospherics/unary/tank/carbon_dioxide{ + volume = 0; + name = "Pressure Tank (Gases)" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"fLd" = ( +/obj/structure/closet/secure_closet/brig, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/permahallway) +"fLl" = ( +/obj/structure/bed, +/obj/item/bedsheet/captain, +/obj/effect/landmark/start/captain, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain/bedroom) +"fLz" = ( +/obj/structure/table/reinforced, +/obj/machinery/flasher_button{ + id = "brigkpp"; + name = "Flasher Control"; + pixel_x = 22; + pixel_y = -22 + }, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/reception) +"fLZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"fMt" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"fMF" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/hos) +"fMP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot/right, +/obj/effect/turf_decal/bot/left, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/closet/crate/engineering/electrical, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/sorting) +"fNr" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"fNu" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"fNv" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wideplating{ + color = "#332a2a"; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"fNP" = ( +/obj/structure/closet/wardrobe/grey, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"fNU" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) +"fNY" = ( +/turf/simulated/floor/plating, +/area/security/brig) +"fOf" = ( +/obj/docking_port/stationary{ + dir = 4; + dwidth = 7; + height = 5; + id = "sit_arrivals"; + name = "Colony East"; + width = 11; + area_type = /area/ruin/unpowered/coldcolony_outside; + turf_type = /turf/simulated/floor/plating/asteroid/snow/atmosphere + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"fOs" = ( +/obj/effect/decal/warning_stripes/south, +/obj/machinery/portable_atmospherics/canister/sleeping_agent, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permahallway) +"fOv" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wideplating/corner{ + color = "#332a2a"; + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"fOC" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"fOG" = ( +/obj/item/clothing/gloves/color/white, +/obj/structure/closet/crate/sci, +/obj/item/clothing/glasses/science, +/turf/simulated/floor/plating, +/area/toxins/explab) +"fOP" = ( +/obj/structure/table_frame, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"fPd" = ( +/obj/structure/table, +/obj/item/flashlight/lamp{ + layer = 4; + pixel_x = 7; + pixel_y = 14 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"fPg" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"fPn" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/abandoned_garage) +"fPp" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/processing) +"fPr" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry) +"fPt" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"fQw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"fQK" = ( +/obj/machinery/light/small, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"fQZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/brig) +"fRa" = ( +/turf/simulated/wall, +/area/maintenance/brig) +"fRb" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/lounge) +"fRn" = ( +/obj/machinery/door/airlock{ + name = "Bathroom"; + aiControlDisabled = 1; + hackProof = 1 + }, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"fRI" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/turf/simulated/floor/lava/lava_land_surface/plasma/cold, +/area/ruin/unpowered/coldcolony_outside) +"fRV" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"fSj" = ( +/obj/machinery/door/airlock/mining/glass{ + id = "qm"; + name = "Quartermaster"; + req_access = list(41) + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/qm) +"fSm" = ( +/obj/structure/table/wood, +/obj/item/dice/d10, +/obj/item/dice/d20, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library/game_zone) +"fSn" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/syndie_outpost) +"fSA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"fSD" = ( +/obj/effect/decal/rail_way{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"fSH" = ( +/obj/structure/girder, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"fSJ" = ( +/obj/item/crowbar, +/obj/structure/table/wood, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"fSL" = ( +/obj/item/storage/toolbox/emergency, +/obj/structure/table, +/obj/machinery/light{ + active_power_usage = 0; + dir = 4; + icon_state = "tube-broken"; + status = 2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"fTn" = ( +/obj/structure/bed, +/obj/item/bedsheet/red, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"fTE" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/perma) +"fTJ" = ( +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/obj/machinery/vending/clothing/departament/cargo, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"fUd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"fUB" = ( +/obj/structure/sign/directions/engineering{ + pixel_y = -10 + }, +/obj/structure/sign/directions/cargo{ + dir = 1; + pixel_y = -3 + }, +/obj/structure/sign/directions/medical{ + pixel_y = 4; + dir = 1 + }, +/obj/structure/sign/directions/security{ + dir = 1; + pixel_y = 11 + }, +/turf/simulated/wall, +/area/hallway/secondary/entry/lounge) +"fUE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/command{ + name = "Server Room"; + req_access = list(30) + }, +/turf/simulated/floor/plating, +/area/toxins/server) +"fUJ" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"fUW" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"fUZ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 6; + name = "Труба смешивания" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos) +"fVg" = ( +/obj/machinery/kitchen_machine/microwave{ + pixel_x = -1; + pixel_y = 7 + }, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/permabrig) +"fVj" = ( +/obj/machinery/computer/station_alert, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellow" + }, +/area/bridge) +"fVn" = ( +/obj/machinery/atmospherics/unary/tank/carbon_dioxide{ + volume = 0; + name = "Pressure Tank (Gases)" + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"fVo" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"fVB" = ( +/turf/simulated/wall/r_wall/rust, +/area/maintenance/brig) +"fVF" = ( +/obj/machinery/door/poddoor/preopen{ + id_tag = "ArmoryLock"; + name = "Armory Lockdown" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Armory"; + req_access = list(1); + security_level = 1 + }, +/obj/machinery/door/poddoor/shutters{ + dir = 8; + id_tag = "ArmorySecAccess"; + name = "Armory Security Shutters" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"fVH" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"fVO" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"fWc" = ( +/obj/structure/window/reinforced, +/obj/structure/table/wood, +/obj/item/clothing/glasses/hud/diagnostic/sunglasses, +/turf/simulated/floor/carpet/purple, +/area/bridge/vip) +"fWj" = ( +/obj/effect/decal/cleanable/generic, +/obj/item/stack/ore/titanium{ + amount = 11 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"fWz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"fWO" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"fWQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/turf/simulated/floor/plating, +/area/hallway/primary/central/nw) +"fWX" = ( +/obj/machinery/portable_atmospherics/canister/air{ + anchored = 1 + }, +/turf/simulated/floor/engine/air, +/area/atmos) +"fWZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"fXk" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"fXl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"fXu" = ( +/obj/effect/decal/warning_stripes/west, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/newscaster{ + pixel_x = 30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"fXD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot/right, +/obj/effect/turf_decal/bot/left, +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/iv_bag/blood/BMinus, +/obj/item/reagent_containers/iv_bag/blood/AMinus, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/salglu, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/quartermaster/sorting) +"fXI" = ( +/obj/structure/closet/secure_closet/personal, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"fXN" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"fYc" = ( +/obj/structure/table/wood/fancy/green, +/obj/item/kitchen/utensil/fork{ + pixel_x = 7 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"fYo" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/bridge/vip) +"fYB" = ( +/obj/machinery/biogenerator, +/obj/item/reagent_containers/glass/bucket, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"fYR" = ( +/obj/effect/turf_decal/bot, +/obj/structure/ore_box, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/coldcolony/ruin/abandoned_garage) +"fYX" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"fZh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light, +/turf/simulated/floor/plating, +/area/hallway/primary/central/nw) +"fZl" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"fZo" = ( +/obj/structure/kitchenspike, +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/maintenance/kitchen) +"fZq" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"fZz" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"fZP" = ( +/obj/structure/table/reinforced, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos/control) +"gav" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/hydroponics) +"gay" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) +"gaW" = ( +/obj/machinery/photocopier, +/obj/structure/sign/nuke{ + pixel_x = 32 + }, +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain) +"gbh" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"gbj" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/carpet/red, +/area/magistrateoffice) +"gbq" = ( +/obj/item/stack/ore/gold{ + amount = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"gbr" = ( +/obj/structure/sign/poster/contraband/random{ + pixel_x = 32 + }, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"gbC" = ( +/obj/item/folder/blue, +/obj/item/paper/monitorkey, +/obj/structure/table/wood, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/heads/hop) +"gbR" = ( +/obj/effect/landmark/event/revenantspawn, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"gcC" = ( +/obj/machinery/door/airlock/research/glass{ + id = "EXP"; + id_tag = "EXP"; + name = "Experimentor"; + req_access = list(47) + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/toxins/explab) +"gdh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/machinery/photocopier/faxmachine/longrange{ + department = "Quartermaster's Office" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/qm) +"geo" = ( +/obj/structure/table/reinforced, +/obj/item/storage/belt/medical, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"ger" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"gex" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"geA" = ( +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"geC" = ( +/obj/machinery/door/airlock/external{ + id_tag = "supply_home"; + locked = 1; + name = "Cargo Docking Hatch"; + req_access = list(31) + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"geO" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"gff" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"gfm" = ( +/obj/item/mecha_parts/part/ripley_right_leg, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/coldcolony/ruin/abandoned_garage) +"gfw" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "greencorner" + }, +/area/hallway/secondary/exit) +"gfy" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/structure/door_assembly/door_assembly_shuttle{ + anchored = 1 + }, +/obj/item/access_control, +/obj/item/airlock_electronics, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"gga" = ( +/obj/effect/spawner/lootdrop/maintenance/double, +/obj/structure/closet, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"ggc" = ( +/obj/effect/decal/warning_stripes/east, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"ggd" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/hallway/primary/fore) +"ggK" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 5; + name = "Труба дыхательной смеси" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"ghn" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/quartermaster/office) +"ght" = ( +/obj/structure/closet/crate/engineering, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/item/crowbar, +/obj/random/tool, +/obj/random/tool, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"ghK" = ( +/obj/structure/dresser, +/turf/simulated/floor/carpet/red, +/area/magistrateoffice) +"ghN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/permabrig) +"ghU" = ( +/obj/structure/table/wood, +/obj/item/storage/box/drinkingglasses, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"ghY" = ( +/obj/machinery/computer/crew, +/turf/simulated/floor/plasteel{ + icon_state = "bcarpet05" + }, +/area/blueshield) +"gic" = ( +/obj/machinery/door/airlock/maintenance{ + req_access = list(47) + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_maintenance) +"giq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/sleep) +"gjn" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26; + start_charge = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"gjr" = ( +/obj/effect/decal/warning_stripes/west, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"gjz" = ( +/obj/item/flashlight, +/obj/item/flashlight, +/obj/structure/closet/crate/engineering, +/obj/item/floor_painter{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/item/stack/tile/plasteel{ + amount = 50 + }, +/obj/item/stack/rods{ + amount = 10 + }, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"gjF" = ( +/obj/structure/table/glass, +/obj/item/stack/packageWrap, +/obj/item/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/chemistry) +"gjY" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/lounge) +"gkd" = ( +/obj/item/vending_refill/cigarette, +/obj/structure/rack, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"gkl" = ( +/obj/structure/table, +/obj/item/flashlight/flare{ + pixel_y = 6; + pixel_x = 4 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"gkv" = ( +/obj/effect/decal/warning_stripes/west, +/obj/structure/table/reinforced, +/obj/machinery/cell_charger{ + pixel_y = 2 + }, +/obj/item/stock_parts/cell/high/plus, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/chief) +"gkx" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"gkB" = ( +/obj/machinery/flasher{ + id = "Cell 1"; + name = "Cell 1 Flasher"; + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"gkK" = ( +/obj/machinery/door/airlock/highsecurity{ + name = "Borg Upload"; + req_access = list(30) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"gkX" = ( +/obj/structure/chair/sofa/left{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/cherry{ + icon_state = "fancy-wood-cherry-broken3" + }, +/area/library) +"glj" = ( +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = -2; + pixel_y = 7 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"glm" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker) +"gls" = ( +/obj/machinery/smartfridge/dish{ + opacity = 1 + }, +/obj/machinery/door/window/eastleft{ + base_state = "right"; + dir = 8; + icon_state = "right"; + name = "Kitchen"; + req_access = list(28) + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "Kitchen Dinner Windows"; + name = "Kitchen Shutters" + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"glE" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 1; + name = "Труба фильтрации" + }, +/obj/effect/decal/warning_stripes/east, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 4; + name = "Труба смешивания" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "caution" + }, +/area/atmos) +"gmm" = ( +/obj/structure/table/reinforced, +/obj/item/tank/internals/anesthetic, +/obj/item/clothing/mask/breath/medical, +/obj/item/clothing/gloves/color/latex, +/turf/simulated/floor/plasteel, +/area/assembly/robotics) +"gmo" = ( +/obj/structure/table/glass, +/obj/item/storage/firstaid/adv{ + pixel_x = 1; + pixel_y = 2 + }, +/obj/item/reagent_containers/glass/bottle/charcoal, +/obj/item/reagent_containers/glass/bottle/epinephrine{ + pixel_y = 2 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "whitered" + }, +/area/security/medbay) +"gmu" = ( +/obj/machinery/flasher{ + id = "Cell 4"; + name = "Cell 4 Flasher"; + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"gmy" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/permabrig) +"gmG" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/commercial) +"gmN" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"gmQ" = ( +/obj/item/radio/intercom/custom{ + frequency = 1357; + name = "station intercom (Engineering)"; + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellow" + }, +/area/bridge/vip) +"gmW" = ( +/obj/structure/table/wood, +/obj/item/kitchen/utensil/pspork, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"gna" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/officetoys, +/turf/simulated/floor/carpet/royalblue, +/area/bridge/vip) +"gnj" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "viro_lab_airlock_control"; + name = "Virology Lab Access Button"; + pixel_x = 22; + pixel_y = 22; + req_access = list(39) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/virology/lab) +"gnz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/office) +"gnA" = ( +/obj/machinery/door/airlock/medical{ + name = "Operating Theatre"; + req_access = list(45) + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"gnD" = ( +/obj/structure/table/wood, +/obj/item/lighter/zippo/hop, +/obj/item/radio/intercom/custom{ + frequency = 1349; + name = "station intercom (Service)"; + pixel_x = 28 + }, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/heads/hop) +"gnH" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel/white, +/area/crew_quarters/fitness) +"gnQ" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry) +"gnU" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/crate/internals, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/clothing/mask/breath, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"goc" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = 8 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = -3; + pixel_y = 1 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/bar/atrium) +"gof" = ( +/obj/item/reagent_containers/food/snacks/carpmeat, +/obj/effect/decal/ants, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"goC" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"goF" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"gpe" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/light_switch{ + pixel_x = 24 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"gpj" = ( +/obj/machinery/light, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"gpk" = ( +/obj/structure/table/wood, +/obj/machinery/camera{ + c_tag = "Head of Personnel's Office" + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/hop) +"gpl" = ( +/obj/item/chair/wood, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"gpv" = ( +/obj/machinery/camera{ + c_tag = "Chapel" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"gpF" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"gpZ" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/vehicle/ridden/snowmobile/key, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/lounge) +"gqg" = ( +/obj/machinery/porta_turret/syndicate/pod{ + name = "machine gun turret (4.6x30mm)"; + faction = "pirate"; + dir = 1; + stat = 1; + icon_state = "syndieturret2"; + icon_state_initial = "syndieturret2" + }, +/turf/simulated/wall/shuttle/nosmooth{ + dir = 9; + icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi'; + icon_state = "gray_walls_corners"; + density = 0 + }, +/area/shuttle/pirate_corvette) +"gqj" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/glass/beaker/large, +/turf/simulated/floor/plating, +/area/maintenance/kitchen) +"gqo" = ( +/obj/structure/table, +/obj/item/storage/box/bodybags, +/obj/item/assembly/signaler{ + code = 6; + frequency = 1445 + }, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/camera{ + c_tag = "Prison Execution Chamber"; + dir = 8; + network = list("Prison","SS13") + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/execution) +"gqE" = ( +/obj/effect/turf_decal/bot, +/obj/structure/ore_box, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"gqJ" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "BridgeShutters"; + name = "Bridge Privacy Shutters" + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "BridgeLockdown"; + name = "Bridge Lockdown" + }, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/bridge) +"gqN" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/breadslice{ + pixel_x = 3; + pixel_y = 7 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"gqV" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"grj" = ( +/obj/machinery/computer/security{ + network = list("SS13","Research Outpost","Mining Outpost") + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/reception) +"grn" = ( +/obj/effect/decal/warning_stripes/east, +/obj/machinery/computer/security/engineering, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/chief) +"gro" = ( +/obj/effect/decal/ants, +/turf/simulated/floor/wood{ + icon_state = "wood-broken" + }, +/area/maintenance/kitchen) +"grE" = ( +/obj/machinery/door/window/westleft{ + dir = 2 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light{ + icon_state = "light-fancy-wood-broken3" + }, +/area/crew_quarters/theatre) +"grF" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + id = "CargoUnload" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/office) +"grL" = ( +/obj/structure/closet/crate, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/clothing/mask/gas, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"grM" = ( +/obj/machinery/door/poddoor/preopen{ + id_tag = "BridgeLockdown"; + name = "Bridge Lockdown" + }, +/obj/effect/spawner/window/reinforced/polarized{ + id = "ntr" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "representative"; + name = "Privacy Shutters" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/ntrep) +"gsh" = ( +/obj/structure/table/wood, +/obj/item/folder/blue, +/obj/item/coin/plasma{ + pixel_x = 10 + }, +/obj/item/stamp/captain, +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain) +"gsq" = ( +/obj/effect/decal/warning_stripes/blue/hollow, +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"gsz" = ( +/obj/structure/sign/evac, +/turf/simulated/wall, +/area/crew_quarters/mrchangs) +"gsD" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/bridge) +"gsG" = ( +/turf/simulated/wall, +/area/maintenance/fsmaint2) +"gsK" = ( +/obj/structure/barricade/security, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"gsW" = ( +/obj/structure/table/wood, +/obj/item/lighter/zippo, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"gts" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"gtt" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/biogenerator, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "green" + }, +/area/hydroponics) +"gtw" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood/fancy/cherry, +/area/security/hos) +"guc" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/toxins/server) +"gud" = ( +/obj/structure/table, +/obj/item/roller{ + pixel_x = 3; + pixel_y = 10 + }, +/obj/item/roller{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/item/roller, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/sleeper) +"gue" = ( +/obj/effect/decal/warning_stripes/east, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"gur" = ( +/obj/effect/baseturf_helper/asteroid, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/security/lobby) +"gut" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/processing) +"guQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"guT" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/brig) +"gvE" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/library) +"gvM" = ( +/obj/structure/cable, +/obj/machinery/constructable_frame/machine_frame, +/obj/item/stock_parts/capacitor, +/obj/item/stock_parts/cell, +/obj/item/stock_parts/cell, +/obj/item/stock_parts/cell, +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"gvW" = ( +/obj/structure/table/wood, +/obj/machinery/door_control{ + id = "SKPP"; + name = "Privacy Shuttes Control"; + pixel_x = 6; + pixel_y = 6; + req_access = list(19) + }, +/turf/simulated/floor/carpet, +/area/bridge/checkpoint/south) +"gvX" = ( +/obj/machinery/vending/coffee, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/main) +"gvY" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"gwb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"gwv" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/sunnybush, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"gwy" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/light_switch{ + pixel_x = 24 + }, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"gwz" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"gwI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/warden) +"gwJ" = ( +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/hydroponics) +"gwW" = ( +/obj/machinery/seed_extractor, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/maintenance/garden) +"gwZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"gxi" = ( +/turf/simulated/floor/plating, +/area/maintenance/brig) +"gxA" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/vip) +"gxQ" = ( +/obj/machinery/computer/brigcells, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/reception) +"gxU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/computer/monitor, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"gyi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/greengrid, +/area/security/nuke_storage) +"gym" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/hallway/primary/fore) +"gyv" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/turf/simulated/floor/carpet/black, +/area/bridge/meeting_room) +"gyP" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/landmark/start/engineer, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine/monitor) +"gzc" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Security"; + id_tag = "BrigEnt" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/security/lobby) +"gzd" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"gzj" = ( +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-cherry" + }, +/area/crew_quarters/trading) +"gzD" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/obj/item/trash/liquidfood, +/obj/item/trash/doshik, +/obj/item/trash/chips, +/obj/item/trash/cheesie, +/obj/item/trash/can, +/obj/item/trash/can, +/obj/item/trash/semki, +/obj/item/trash/raisins, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"gzU" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"gzX" = ( +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"gAd" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"gAk" = ( +/turf/simulated/wall/r_wall/rust, +/area/medical/cmo) +"gAn" = ( +/obj/effect/baseturf_helper/asteroid, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securehallway) +"gAz" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/obj/vehicle/ridden/snowmobile/key, +/turf/simulated/floor/plasteel, +/area/medical/research) +"gAD" = ( +/turf/simulated/wall, +/area/maintenance/kitchen) +"gAQ" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"gBf" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brig) +"gBq" = ( +/obj/effect/decal/warning_stripes/west, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"gBw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/card/minor/cmo{ + dir = 8 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/cmo) +"gBH" = ( +/obj/structure/rack, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/engineering/break_room) +"gBK" = ( +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"gBM" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research/glass{ + name = "Research Division Access"; + req_access = list(47,40,39) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"gBV" = ( +/obj/structure/closet/crate/miningcar{ + name = "mining car" + }, +/obj/item/stack/ore/silver{ + amount = 9 + }, +/obj/item/stack/ore/gold{ + amount = 8 + }, +/obj/item/stack/ore/uranium{ + amount = 9 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"gCs" = ( +/obj/effect/decal/snow/sand/edge, +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 1; + name = "Residential block" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"gCH" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/assembly/robotics) +"gCR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"gCU" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"gDf" = ( +/obj/structure/table/wood, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Captain's Desk"; + departmentType = 5; + name = "Captain Requests Console"; + pixel_x = -30 + }, +/obj/item/hand_labeler, +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain) +"gDo" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/wall/rust, +/area/medical/paramedic) +"gDu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"gDz" = ( +/turf/simulated/floor/plating, +/area/coldcolony/ruin/abandoned_garage) +"gDE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/processing) +"gDN" = ( +/obj/item/chair/stool{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/maintenance/casino) +"gEj" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/kitchen) +"gEn" = ( +/obj/item/reagent_containers/food/snacks/baguette, +/obj/item/lipstick/random{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/lipstick/random{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/item/lipstick/random{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/reagent_containers/spray/waterflower, +/obj/structure/table/wood, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) +"gEt" = ( +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"gEx" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securehallway) +"gEy" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"gEB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/operating{ + dir = 8 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"gEI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/vip) +"gEJ" = ( +/obj/structure/rack, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/storage/toolbox/mechanical, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"gET" = ( +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken4" + }, +/area/ruin/unpowered) +"gFd" = ( +/turf/simulated/wall, +/area/hallway/secondary/entry/lounge) +"gFe" = ( +/obj/effect/landmark/start/scientist, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) +"gFi" = ( +/turf/simulated/wall/r_wall, +/area/toxins/explab) +"gFn" = ( +/obj/machinery/newscaster{ + pixel_y = 30 + }, +/turf/simulated/floor/carpet, +/area/library) +"gFp" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/vip) +"gFy" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"gFD" = ( +/obj/structure/table/wood, +/obj/machinery/computer/secure_data/laptop, +/obj/machinery/light, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"gFE" = ( +/obj/machinery/door/airlock/tranquillite{ + name = "Mime's Office"; + req_access = list(46) + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) +"gFK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/atmos) +"gFV" = ( +/obj/structure/chair/comfy/beige{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"gGk" = ( +/obj/structure/mineral_door/wood, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"gGH" = ( +/obj/item/flag/nt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"gGZ" = ( +/obj/structure/closet/firecloset, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"gHf" = ( +/turf/simulated/wall/rust, +/area/hallway/primary/central/nw) +"gHj" = ( +/obj/structure/closet/crate, +/obj/item/stack/spacecash/c100, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/light_switch{ + pixel_x = -24 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) +"gHD" = ( +/obj/item/clothing/accessory/stethoscope, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"gHV" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/qm) +"gHX" = ( +/obj/structure/chair/stool/bar, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"gIh" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/civilian/barber) +"gIq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"gII" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "browncorner" + }, +/area/coldcolony/ruin/ore_production) +"gIN" = ( +/obj/effect/decal/warning_stripes/southeast, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"gIP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"gIU" = ( +/obj/machinery/vending/wallmed{ + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"gJb" = ( +/obj/machinery/space_heater, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"gJk" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/garden) +"gJA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin2) +"gJO" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"gJT" = ( +/obj/structure/closet/secure_closet/hydroponics, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/clothing/suit/hooded/wintercoat/hydro, +/turf/simulated/floor/plasteel{ + icon_state = "hydrofloor" + }, +/area/hydroponics) +"gJW" = ( +/obj/effect/decal/warning_stripes/yellow/partial, +/obj/machinery/vending/chinese, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/processing) +"gKk" = ( +/turf/simulated/wall/r_wall, +/area/tcommsat/chamber) +"gKn" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) +"gKt" = ( +/obj/machinery/computer/card, +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain) +"gKw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/optable, +/obj/structure/curtain/medical, +/obj/effect/decal/cleanable/blood/gibs/body, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"gKz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"gKE" = ( +/obj/item/stock_parts/capacitor, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"gKG" = ( +/obj/item/stack/telecrystal, +/turf/simulated/floor/plating/asteroid, +/area/coldcolony/ruin/sm_chamber) +"gKH" = ( +/obj/machinery/constructable_frame/machine_frame, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"gKN" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine/monitor) +"gKW" = ( +/obj/effect/landmark/start/security_officer, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/customs) +"gLr" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 8 + }, +/obj/structure/closet/walllocker/emerglocker/west, +/obj/item/reagent_containers/food/pill/patch/silver_sulf, +/obj/item/reagent_containers/food/pill/patch/silver_sulf, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/lounge) +"gLC" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Briefing Room"; + req_access = list(63) + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"gLP" = ( +/obj/structure/closet/emcloset, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/decal/warning_stripes/blue, +/obj/machinery/light_switch{ + pixel_x = -10; + pixel_y = -24 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/research) +"gLT" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/miningeva) +"gMb" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"gMo" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitecorner" + }, +/area/crew_quarters/sleep) +"gMu" = ( +/obj/machinery/newscaster{ + pixel_x = 30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkbrown"; + dir = 4 + }, +/area/bridge/vip) +"gMv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"gMw" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/bottle/vodka{ + pixel_x = 5; + pixel_y = 15 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = -4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"gMP" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library/game_zone) +"gNb" = ( +/obj/structure/sign/directions/evac{ + pixel_y = -28 + }, +/obj/structure/sign/directions/cargo{ + pixel_y = -35; + dir = 4 + }, +/obj/structure/sign/directions/engineering{ + pixel_y = -42 + }, +/obj/structure/sign/directions/security{ + pixel_y = -21; + dir = 1 + }, +/obj/structure/flora/bush, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"gNe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "whitepurplefull" + }, +/area/medical/research) +"gNq" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Research Director Room"; + req_access = list(30) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"gNz" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/library) +"gNA" = ( +/obj/effect/decal/snow/sand/edge, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"gNE" = ( +/obj/structure/sign/poster/contraband/rebels_unite{ + pixel_x = 32 + }, +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken6" + }, +/area/coldcolony/ruin/abandoned_house) +"gNM" = ( +/turf/simulated/wall, +/area/atmos) +"gNN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"gNP" = ( +/obj/structure/table, +/obj/item/lighter/zippo/blue, +/obj/item/lighter/zippo/black{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/lighter/zippo/gonzofist{ + pixel_x = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"gNW" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/random/toolbox, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"gOa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) +"gOf" = ( +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + desc = "Труба ведёт газ на фильтрацию"; + dir = 5; + name = "Труба на фильтрацию" + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/atmos) +"gOh" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/head/helmet/alt, +/obj/item/clothing/shoes/jackboots/armored, +/obj/item/clothing/gloves/color/black/ballistic, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"gOw" = ( +/obj/structure/table/reinforced, +/obj/item/flashlight/lamp, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkblue" + }, +/area/bridge) +"gOy" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"gOF" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"gOL" = ( +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"gOP" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"gPa" = ( +/obj/structure/mineral_door/wood, +/obj/effect/decal/cleanable/blood/tracks, +/obj/structure/barricade/wooden/crude{ + layer = 3.3 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"gPb" = ( +/turf/simulated/wall/r_wall, +/area/coldcolony/ruin/sm_maintenance) +"gPd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"gPj" = ( +/obj/item/stack/ore/uranium{ + amount = 9 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"gPl" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/security/customs) +"gPu" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/exit) +"gPL" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"gPN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) +"gPO" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"gPP" = ( +/obj/structure/rack/gunrack, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/gun/energy/laser{ + pixel_x = -8 + }, +/obj/item/gun/energy/laser{ + pixel_x = 10 + }, +/obj/item/gun/energy/laser{ + pixel_x = 1 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"gPT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"gPY" = ( +/obj/machinery/photocopier, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/security/detectives_office) +"gQG" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/reception) +"gQV" = ( +/obj/structure/closet/secure_closet/personal, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"gRk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/bridge/vip) +"gRu" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"gRL" = ( +/obj/structure/closet/crate/trashcart, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/hallway/primary/central/east) +"gRO" = ( +/obj/structure/table, +/obj/machinery/power/apc/worn_out{ + cell_type = 0; + pixel_y = -26 + }, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"gRS" = ( +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkbrown"; + dir = 8 + }, +/area/bridge/vip) +"gSa" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"gSd" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"gSo" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"gSQ" = ( +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"gTe" = ( +/obj/structure/table/wood, +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor"; + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"gTh" = ( +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"gTl" = ( +/obj/structure/table/reinforced, +/obj/item/slime_scanner, +/obj/item/clothing/gloves/color/latex, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"gTm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel/white, +/area/medical/cmostore) +"gTN" = ( +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/wood{ + icon_state = "wood-broken3" + }, +/area/maintenance/kitchen) +"gUv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"gUM" = ( +/obj/machinery/cooker/deepfryer, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"gVq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/storage/box/pillbottles{ + pixel_x = 6; + pixel_y = 2 + }, +/obj/item/storage/box/patch_packs{ + pixel_x = -2; + pixel_y = 6 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"gVy" = ( +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"gVH" = ( +/obj/structure/closet/walllocker/emerglocker/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"gVO" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Research and Development"; + req_access = list(47) + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) +"gVR" = ( +/obj/item/stack/cable_coil{ + amount = 3 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"gWl" = ( +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"gWq" = ( +/turf/simulated/floor/plating, +/area/crew_quarters/theatre) +"gWt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"gWv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/carpet, +/area/maintenance/casino) +"gWC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"gWD" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id_tag = "Brig_lockdown"; + name = "Brig Lockdown" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/security/prison/cell_block/A) +"gWJ" = ( +/obj/effect/decal/cleanable/egg_smudge, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"gWN" = ( +/obj/structure/table/reinforced, +/obj/item/clipboard, +/obj/item/gps/engineering, +/obj/effect/decal/warning_stripes/east, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/chief) +"gXc" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"gXo" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA" + }, +/turf/simulated/wall, +/area/engineering/engine) +"gXt" = ( +/obj/vehicle/ridden/snowmobile/key, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/medical/research) +"gXA" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/computer/library/checkout, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"gYb" = ( +/obj/structure/table/wood{ + color = "brown" + }, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/coldcolony/ruin/miningbar) +"gYc" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/disposaloutlet{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"gYV" = ( +/obj/machinery/door/airlock{ + name = "Hydroponics"; + req_access = list(35) + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hydroponics) +"gYZ" = ( +/obj/machinery/light{ + active_power_usage = 0; + dir = 8; + icon_state = "tube-broken"; + status = 2 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door_control{ + id = "smresdesk1"; + name = "Research Shutters"; + pixel_y = -8; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -21; + pixel_y = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"gZb" = ( +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/coldcolony/ruin/miningbar) +"gZj" = ( +/turf/simulated/wall, +/area/coldcolony/ruin/miningeva) +"gZm" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"gZt" = ( +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"gZJ" = ( +/obj/structure/closet{ + custom_door_overlay = "black"; + desc = "It's a storage unit for foodservice garments."; + name = "chef's closet" + }, +/obj/item/storage/belt/chef, +/obj/item/clothing/head/chefhat, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"haa" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/suit/hooded/wintercoat/captain, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-cherry" + }, +/area/crew_quarters/trading) +"hab" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/dispenser/oxygen, +/obj/effect/decal/warning_stripes/northwest, +/obj/machinery/computer/guestpass{ + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"haN" = ( +/obj/machinery/recharge_station, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/lobby) +"haO" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library/game_zone) +"haX" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/securearmory) +"hbg" = ( +/obj/structure/table/wood, +/obj/item/storage/box/bodybags, +/obj/item/reagent_containers/glass/bottle/reagent/formaldehyde, +/obj/item/reagent_containers/dropper, +/turf/simulated/floor/wood, +/area/coldcolony/morgue) +"hbl" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, +/obj/item/reagent_containers/glass/bucket, +/obj/item/mop, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/janitor) +"hbm" = ( +/obj/structure/rack, +/obj/item/holosign_creator/atmos, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"hbE" = ( +/turf/simulated/wall, +/area/chapel/office) +"hbJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"hbU" = ( +/obj/machinery/door_control{ + desiredstate = 1; + id = "privateroom"; + name = "Privacy Room Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -26; + pixel_y = 6; + specialfunctions = 4 + }, +/obj/machinery/button/windowtint{ + id = "privateroom"; + pixel_x = -24; + pixel_y = -6 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/bar/atrium) +"hcc" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/main) +"hco" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"hcq" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"hcH" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/atmos) +"hcN" = ( +/mob/living/simple_animal/hostile/pirate{ + loot = list(/obj/effect/mob_spawn/human/corpse/pirate) + }, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"hcR" = ( +/turf/simulated/wall/rust, +/area/medical/cmostore) +"hcS" = ( +/obj/machinery/door/airlock/external{ + hackProof = 1; + id_tag = "emergency_home"; + locked = 1; + name = "Escape Airlock" + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/plating, +/area/hallway/secondary/exit) +"hds" = ( +/obj/structure/closet/crate/engineering/electrical, +/obj/item/airlock_electronics, +/obj/item/airlock_electronics, +/obj/item/access_control, +/obj/item/access_control, +/obj/item/airalarm_electronics, +/obj/item/airalarm_electronics, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"hdP" = ( +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"hdX" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"hed" = ( +/obj/machinery/atmospherics/unary/tank/oxygen{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"hef" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/hallway/primary/fore) +"hen" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"heB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"heH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/floodlight, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"heI" = ( +/obj/machinery/atmospherics/pipe/manifold/visible, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"heJ" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating, +/turf/simulated/floor/plasteel/white, +/area/crew_quarters/fitness) +"heQ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"heT" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"hfj" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"hfq" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/turf/simulated/floor/plating, +/area/security/permahallway) +"hfA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"hfG" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"hfJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker/locker_toilet) +"hfY" = ( +/obj/machinery/r_n_d/destructive_analyzer{ + pixel_y = 2 + }, +/turf/simulated/floor/plasteel, +/area/toxins/lab) +"hgs" = ( +/obj/structure/table/wood, +/turf/simulated/floor/plasteel{ + icon_state = "darkbrown" + }, +/area/bridge/vip) +"hgv" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/candle_box/full{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/simulated/floor/wood, +/area/library) +"hgE" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/sleeper{ + dir = 2 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"hgI" = ( +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"hgJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"hgQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"hgZ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/medical/research/shallway) +"hhf" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel, +/area/hallway/primary/starboard/east) +"hhk" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/brigdoor{ + dir = 2; + name = "Security Reception"; + req_access = list(1) + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "Brig_lockdown"; + name = "Brig Lockdown" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel, +/area/security/reception) +"hhs" = ( +/obj/effect/decal/warning_stripes/west, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/trainee_engineer, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine/monitor) +"hhO" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/dispenser, +/turf/simulated/floor/plasteel, +/area/storage/secure) +"hii" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/locker) +"hij" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/closet/secure_closet/security, +/obj/structure/window/reinforced{ + color = "red"; + dir = 4 + }, +/obj/item/clothing/suit/hooded/wintercoat/security, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/customs) +"hiz" = ( +/turf/simulated/wall/r_wall/rust, +/area/security/brigstaff) +"hiN" = ( +/obj/structure/table/wood, +/obj/item/folder/blue{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/lighter/zippo{ + pixel_x = -6 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel/grimy, +/area/civilian/vacantoffice) +"hiT" = ( +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/structure/cable, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"hiW" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/landmark/start/trainee_engineer, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"hjo" = ( +/obj/effect/landmark/join_late_cryo, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/sleep) +"hjp" = ( +/obj/structure/table, +/obj/machinery/kitchen_machine/microwave, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/coldcolony/ruin/miningbar) +"hjr" = ( +/obj/item/mounted/frame/alarm_frame, +/obj/structure/table, +/obj/machinery/light_construct{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"hjA" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/fitness) +"hjG" = ( +/obj/machinery/door/airlock/maintenance/external{ + req_access = list(90) + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"hjM" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"hjN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/casino) +"hjO" = ( +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"hjT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"hkf" = ( +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = -8 + }, +/obj/effect/landmark/event/blobstart, +/turf/simulated/floor/wood{ + icon_state = "wood-broken7"; + tag = "icon-wood-broken7" + }, +/area/toxins/test_chamber) +"hkt" = ( +/obj/effect/spawner/random_spawners/fungus_70, +/turf/simulated/wall, +/area/maintenance/asmaint) +"hkx" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/hallway/primary/starboard/east) +"hkB" = ( +/obj/machinery/door/airlock/research, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"hkI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"hkN" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/rack, +/obj/item/stack/sheet/mineral/plasma/fifty, +/obj/item/wrench, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"hkZ" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"hlf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/wood, +/area/toxins/storage) +"hlA" = ( +/turf/simulated/floor/plating, +/area/maintenance/garden) +"hlC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securehallway) +"hlM" = ( +/obj/structure/bed, +/obj/item/bedsheet/qm, +/obj/item/gun/projectile/shotgun/boltaction{ + name = "\improper Охотничья винтовка"; + pixel_y = 26 + }, +/turf/simulated/floor/carpet, +/area/bridge/vip) +"hlV" = ( +/turf/simulated/wall/rust, +/area/toxins/xenobiology) +"hlX" = ( +/obj/structure/table/reinforced, +/obj/item/flashlight/lamp, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/chief) +"hmb" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/processing) +"hmq" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/rack, +/obj/item/wrench, +/obj/item/stack/cable_coil, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"hmr" = ( +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/medical/research) +"hmF" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"hmQ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/crew_quarters/locker) +"hmS" = ( +/obj/structure/chair/office/dark, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"hnc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/landmark/start/janitor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/janitor) +"hne" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/hallway/secondary/exit) +"hnj" = ( +/obj/machinery/door/airlock/public{ + name = "Docks" + }, +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "escape" + }, +/area/hallway/secondary/entry/lounge) +"hnV" = ( +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/bridge/vip) +"hnW" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkbluecorners" + }, +/area/bridge/vip) +"hnZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/storage/firstaid/fire, +/obj/item/storage/firstaid/brute{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"hoo" = ( +/obj/effect/decal/warning_stripes/north, +/turf/simulated/floor/engine, +/area/security/execution) +"hoq" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkpurple" + }, +/area/bridge/vip) +"hor" = ( +/turf/simulated/wall/shuttle/nosmooth{ + dir = 6; + icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi'; + icon_state = "gray_walls_corners" + }, +/area/shuttle/pirate_corvette) +"hoD" = ( +/obj/machinery/hologram/holopad, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/shuttle/pirate_corvette) +"hoT" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"hoZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/shuttle/pirate_corvette) +"hpl" = ( +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = -8; + pixel_y = -3 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"hpn" = ( +/obj/structure/table/reinforced, +/obj/machinery/door_control{ + desc = "A remote control switch for the brig foyer."; + id = "BrigLeft"; + name = "Lower Doors Control"; + normaldoorcontrol = 1; + pixel_x = -6 + }, +/obj/machinery/door_control{ + desc = "A remote control switch for the brig foyer."; + id = "BrigRight"; + name = "Upper Doors Control"; + normaldoorcontrol = 1; + pixel_x = -6; + pixel_y = 8 + }, +/obj/machinery/door_control{ + desiredstate = 1; + id = "BrigLeft"; + name = "Lower Doors Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 6; + specialfunctions = 4 + }, +/obj/machinery/door_control{ + desiredstate = 1; + id = "BrigRight"; + name = "Upper Doors Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 6; + pixel_y = 8; + specialfunctions = 4 + }, +/obj/machinery/door_control{ + desiredstate = 1; + id = "BrigEnt"; + name = "Entrance Doors Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 6; + pixel_y = -8; + specialfunctions = 4 + }, +/obj/machinery/door_control{ + pixel_x = -6; + id = "secgarage"; + pixel_y = -8; + name = "Garage Shutters Control" + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/reception) +"hpo" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker/locker_toilet) +"hpp" = ( +/obj/structure/table, +/obj/item/storage/toolbox/syndicate, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"hpq" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"hpD" = ( +/obj/structure/bed, +/obj/item/bedsheet/centcom, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/landmark/start/magistrate, +/turf/simulated/floor/carpet/red, +/area/magistrateoffice) +"hpJ" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/processing) +"hqg" = ( +/turf/simulated/wall/r_wall/rust, +/area/coldcolony/ruin/sm_maintenance) +"hqp" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"hqy" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/obj/machinery/light, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"hqU" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"hrp" = ( +/obj/structure/table/reinforced, +/obj/item/clipboard, +/obj/item/toy/figure/secofficer, +/obj/item/radio/intercom{ + pixel_y = 24 + }, +/obj/machinery/camera{ + c_tag = "Brig Reception"; + network = list("SS13","Security") + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/reception) +"hrw" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/effect/landmark/start/hop, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/heads/hop) +"hrz" = ( +/obj/structure/window/reinforced, +/obj/machinery/vending/cola, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"hrM" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"hsd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"hsf" = ( +/obj/structure/bed, +/obj/item/bedsheet/cmo, +/turf/simulated/floor/carpet/cyan, +/area/bridge/vip) +"hsg" = ( +/obj/machinery/door/window/southright{ + dir = 8; + name = "Primate Pen"; + req_access = list(9) + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/genetics) +"hsl" = ( +/turf/simulated/floor/carpet, +/area/library) +"hsp" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"hsr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/nw) +"hsG" = ( +/obj/structure/table, +/obj/item/storage/fancy/donut_box, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker) +"hsU" = ( +/turf/simulated/floor/wood{ + icon_state = "wood-broken6" + }, +/area/coldcolony/morgue) +"htl" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"htx" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"htH" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep) +"htX" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/eastarrival) +"huj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"hup" = ( +/obj/effect/decal/warning_stripes/southwest, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"hus" = ( +/obj/structure/closet/bombclosetsecurity, +/obj/effect/decal/warning_stripes/red, +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"huM" = ( +/obj/structure/mineral_door/wood, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"hvj" = ( +/obj/structure/table/reinforced, +/obj/item/razor, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/civilian/barber) +"hvp" = ( +/obj/structure/rack, +/obj/item/storage/secure/briefcase, +/obj/item/multitool, +/obj/item/radio/intercom{ + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge) +"hvv" = ( +/obj/structure/dresser, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"hvS" = ( +/obj/structure/table/wood, +/obj/item/folder/blue, +/turf/simulated/floor/carpet, +/area/bridge/checkpoint/south) +"hvU" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor"; + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"hwb" = ( +/turf/simulated/wall/r_wall, +/area/coldcolony/ruin/sm_chamber) +"hwm" = ( +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/nuke_storage) +"hwB" = ( +/obj/structure/table, +/obj/item/storage/toolbox/electrical, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"hwL" = ( +/obj/structure/girder, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"hwR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/brig) +"hxe" = ( +/obj/structure/window/reinforced, +/obj/structure/closet/secure_closet{ + icon_state = "ce"; + req_access = list(56); + name = "chief engineer's locker" + }, +/obj/item/clothing/suit/hooded/wintercoat/engineering/ce, +/obj/item/flash, +/obj/item/reagent_containers/food/drinks/mug/ce, +/obj/item/radio/headset/heads/ce, +/obj/item/storage/garmentbag/engineering_chief, +/obj/item/storage/backpack/satchel_eng, +/obj/item/clothing/mask/gas, +/turf/simulated/floor/carpet/orange, +/area/bridge/vip) +"hxi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/stack/sheet/metal, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/shuttle/pirate_corvette) +"hxk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"hxq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/closet/crate/trashcart, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"hxB" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken4" + }, +/area/coldcolony/ruin/abandoned_house) +"hxV" = ( +/obj/structure/rack, +/obj/random/tool, +/obj/random/tool, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"hyh" = ( +/obj/structure/table/wood, +/obj/item/stack/sheet/wood, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"hyp" = ( +/obj/structure/bed, +/obj/effect/spawner/random_spawners/syndicate/loot{ + result = list(/obj/item/bedsheet/blue = 10, /obj/item/bedsheet/black = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/fluff = 10, /obj/item/bedsheet/green = 10, /obj/item/bedsheet/orange = 10, /obj/item/bedsheet/purple = 10, /obj/item/bedsheet/red = 10, /obj/item/bedsheet/yellow = 10); + name = "bedsheet" + }, +/obj/effect/landmark/join_late, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/crew_quarters/cabin1) +"hyw" = ( +/obj/structure/closet/crate/engineering, +/obj/item/intercom_electronics, +/obj/item/airlock_electronics, +/obj/item/airlock_electronics, +/obj/item/airalarm_electronics, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"hyR" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/carpet/royalblack, +/area/bridge) +"hyX" = ( +/obj/structure/sign/science, +/turf/simulated/wall, +/area/maintenance/asmaint3) +"hzf" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen{ + anchored = 1 + }, +/turf/simulated/floor/engine/n2{ + nitrogen = 10000 + }, +/area/atmos) +"hzq" = ( +/obj/structure/closet/firecloset, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/perma) +"hzG" = ( +/obj/structure/fans/tiny, +/obj/effect/decal/snow/sand/edge, +/obj/machinery/door/airlock/external/glass{ + name = "Mining External Airlock"; + welded = 1 + }, +/obj/structure/barricade/wooden/crude/snow{ + layer = 3.3 + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/miningeva) +"hzM" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/obj/structure/dresser, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"hzQ" = ( +/obj/effect/turf_decal/box{ + do_not_delete_me = 1 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"hAq" = ( +/obj/structure/table/reinforced, +/obj/item/kitchen/knife{ + layer = 3.2 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"hAz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/brig) +"hAN" = ( +/obj/structure/kitchenspike, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/crew_quarters/kitchen) +"hBc" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/central/sw) +"hBe" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"hBh" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/machinery/light, +/turf/simulated/floor/grass, +/area/hydroponics) +"hBq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/cigbutt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"hBz" = ( +/obj/machinery/computer/atmos_alert, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "caution" + }, +/area/atmos/control) +"hBE" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"hBQ" = ( +/obj/structure/flora/grass/green, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"hCg" = ( +/obj/structure/chair/barber, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/civilian/barber) +"hCq" = ( +/obj/structure/table_frame, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"hCu" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"hCQ" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"hCS" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"hCV" = ( +/obj/structure/chair/stool/bar, +/obj/structure/sign/poster/official/cohiba_robusto_ad{ + pixel_y = 32 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"hCY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/wood/oak, +/area/civilian/vacantoffice) +"hCZ" = ( +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 1 + }, +/obj/machinery/door/airlock/glass{ + name = "Chapel" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"hDc" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/tcommsat/chamber) +"hDf" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/flasher/portable, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"hDh" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "SecMedPrivInside" + }, +/turf/simulated/floor/plating, +/area/security/processing) +"hDt" = ( +/obj/machinery/cryopod{ + dir = 8 + }, +/obj/machinery/computer/cryopod{ + layer = 4; + pixel_y = -32 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"hDy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/wood{ + icon_state = "wood-broken6"; + tag = "icon-wood-broken6" + }, +/area/toxins/test_chamber) +"hDz" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"hDV" = ( +/obj/machinery/constructable_frame/machine_frame, +/obj/item/stack/sheet/glass, +/obj/item/shard{ + icon_state = "medium" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"hEa" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/brig) +"hEd" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 10 + }, +/obj/structure/closet/emcloset, +/obj/effect/decal/warning_stripes/blue, +/obj/structure/sign/nosmoking_2{ + pixel_x = -32 + }, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"hEm" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/vehicle/ridden/snowmobile/key, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"hFa" = ( +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/eastarrival) +"hFl" = ( +/obj/machinery/vending/autodrobe, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"hFn" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"hFv" = ( +/obj/machinery/door/airlock/research{ + name = "Research Division"; + welded = 1 + }, +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/obj/structure/barricade/wooden/crude{ + layer = 3.3 + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"hFB" = ( +/obj/structure/closet/walllocker/emerglocker/south, +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"hGa" = ( +/obj/structure/weightmachine/weightlifter, +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/white, +/area/crew_quarters/fitness) +"hGl" = ( +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkbrown"; + dir = 8 + }, +/area/bridge/vip) +"hGD" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"hGG" = ( +/obj/structure/bed, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"hGT" = ( +/obj/machinery/door/airlock/public/glass, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"hHb" = ( +/obj/structure/sign/poster/contraband/red_rum{ + pixel_y = -32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/shuttle/pirate_corvette) +"hHg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"hHi" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Brig Reception"; + req_access = list(63) + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/reception) +"hHI" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/structure/sign/poster/contraband/random{ + pixel_x = -32 + }, +/turf/simulated/floor/carpet/black, +/area/maintenance/casino) +"hHN" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/kitchen) +"hHU" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/security/prison/cell_block/A) +"hIV" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"hIY" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"hJd" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/wood/fancy/cherry, +/area/library/game_zone) +"hJA" = ( +/obj/machinery/door/window/brigdoor/southright{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/carpet/royalblack, +/area/bridge) +"hJE" = ( +/obj/machinery/vending/cola, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"hKa" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"hKl" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"hKn" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/hallway/secondary/exit) +"hKp" = ( +/obj/structure/table/glass, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/ai_module/reset, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"hKs" = ( +/obj/effect/decal/warning_stripes/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"hKw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) +"hKB" = ( +/obj/structure/rack, +/obj/item/soap/homemade_beer, +/obj/item/soap/homemade_beer, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"hKR" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/pill/patch/silver_sulf, +/obj/item/flashlight/lamp, +/turf/simulated/floor/wood{ + icon_state = "wood-broken3" + }, +/area/coldcolony/morgue) +"hLn" = ( +/obj/item/grenade/chem_grenade/firefighting, +/obj/structure/table, +/turf/simulated/floor/wood, +/area/toxins/storage) +"hLv" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"hLy" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"hLW" = ( +/obj/machinery/suit_storage_unit/pirate, +/obj/effect/turf_decal/delivery{ + do_not_delete_me = 1 + }, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"hMc" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/east, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"hMg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"hMt" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"hMv" = ( +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"hMW" = ( +/obj/structure/filingcabinet, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "red" + }, +/area/security/checkpoint) +"hNq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/toxins/storage) +"hNu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "viro_lab_airlock_control"; + name = "Virology Lab Access Button"; + pixel_x = -24; + pixel_y = 22; + req_access = list(39) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/virology/lab) +"hNB" = ( +/obj/structure/window/full/reinforced/ice, +/obj/structure/grille, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/chapel/main) +"hNH" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/food/snacks/doshik, +/obj/item/reagent_containers/food/snacks/boiledrice, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"hNR" = ( +/obj/effect/decal/cleanable/blood/gibs/limb, +/mob/living/simple_animal/hostile/bear/polar{ + name = "HUMANEATER"; + health = 220; + maxHealth = 220 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood/fancy/cherry, +/area/ruin/unpowered) +"hNY" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"hNZ" = ( +/turf/simulated/wall/rust, +/area/coldcolony/ruin/mining_post1) +"hOk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"hOp" = ( +/obj/effect/decal/warning_stripes/blue/hollow, +/obj/effect/decal/snow/sand/edge{ + dir = 6 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"hOD" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"hOI" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"hOW" = ( +/obj/structure/chair, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/processing) +"hPd" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/permahallway) +"hPe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/cold_sink/freezer, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"hPi" = ( +/obj/item/flag/nt, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"hPt" = ( +/obj/structure/table/reinforced, +/obj/item/storage/fancy/donut_box, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/shuttle/pirate_corvette) +"hPu" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"hPx" = ( +/turf/simulated/wall, +/area/maintenance/asmaint2) +"hPC" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"hPL" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"hPV" = ( +/obj/structure/chair/sofa/left{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/magistrateoffice) +"hPY" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wideplating{ + color = "#332a2a"; + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"hQg" = ( +/obj/structure/rack, +/obj/item/storage/bag/ore, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"hQj" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 4; + name = "Труба дыхательной смеси" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/atmos) +"hQD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"hRe" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) +"hRR" = ( +/obj/structure/chair/comfy/beige{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"hRS" = ( +/obj/structure/closet/crate/trashcart, +/obj/item/light/tube{ + icon_state = "ltube-broken"; + status = 2 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"hRZ" = ( +/obj/structure/flora/tree/pine, +/obj/structure/flora/grass/both, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"hSc" = ( +/obj/machinery/optable/abductor, +/obj/item/scalpel/alien, +/turf/simulated/floor/mineral/abductor{ + oxygen = 22; + temperature = 180; + nitrogen = 82 + }, +/area/ruin/unpowered) +"hSj" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"hSB" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"hSD" = ( +/turf/simulated/wall, +/area/maintenance/engineering) +"hSV" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/cardboard, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/wallmed{ + pixel_x = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "yellow" + }, +/area/engineering/engine/monitor) +"hTe" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/item/clothing/mask/breath, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"hTJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"hTQ" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/library) +"hUj" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"hUo" = ( +/obj/structure/table/wood, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable, +/obj/item/storage/box/matches, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/bar) +"hUt" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"hUH" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + density = 1; + dir = 2; + icon_state = "closed"; + id_tag = "Traiders Windows"; + name = "Traiders Privacy Shutters"; + opacity = 1 + }, +/obj/machinery/door/window/westright{ + dir = 1; + name = "Front Desk" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) +"hUU" = ( +/obj/item/radio/sec{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/radio/sec{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/radio/sec{ + pixel_x = -4 + }, +/obj/item/radio/sec{ + pixel_x = 4 + }, +/obj/structure/rack, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/customs) +"hVk" = ( +/obj/machinery/light, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "yellow" + }, +/area/engineering/break_room) +"hVu" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/execution) +"hVv" = ( +/turf/simulated/floor/wood/fancy/cherry, +/area/ruin/unpowered) +"hVA" = ( +/turf/simulated/wall, +/area/toxins/lab) +"hWc" = ( +/obj/effect/decal/warning_stripes/red, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/twohanded/required/kirbyplants, +/obj/item/stack/rods, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"hWg" = ( +/obj/structure/closet/secure_closet/clown, +/obj/item/grenade/confetti, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/clownoffice) +"hWD" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"hWE" = ( +/obj/structure/sign/poster/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"hWP" = ( +/turf/simulated/wall/r_wall, +/area/security/brigstaff) +"hWV" = ( +/obj/structure/chair/sofa/right{ + dir = 1 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/bar/atrium) +"hWW" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "hopprivacy"; + name = "Head of Personal Privacy Shutters" + }, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/hop) +"hWX" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"hXl" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/north) +"hXo" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/door/window{ + dir = 2; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/clothing/suit/armor/riot, +/obj/item/shield/riot, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/head/helmet/riot, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"hXT" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/bridge/vip) +"hYy" = ( +/obj/structure/closet/secure_closet/cabinet, +/obj/item/clothing/gloves/color/light_brown, +/obj/item/clothing/suit/fluff/dusty_jacket, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"hYJ" = ( +/obj/item/reagent_containers/hypospray/autoinjector/salbutamol, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"hYN" = ( +/obj/structure/table, +/obj/item/stock_parts/cell, +/obj/machinery/cell_charger, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"hZj" = ( +/obj/structure/flora/rock/pile, +/obj/structure/fence{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"hZv" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/obj/structure/fans/tiny, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical{ + name = "Medbay Entrance"; + req_access = list(5) + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/sleeper) +"hZC" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "purple" + }, +/area/assembly/robotics) +"iad" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/table, +/obj/item/plant_analyzer, +/obj/item/hatchet, +/obj/item/cultivator, +/obj/item/reagent_containers/glass/bucket, +/turf/simulated/floor/plasteel, +/area/maintenance/garden) +"iae" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/security/permahallway) +"iai" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"iam" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/toxins/lab) +"iat" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/wardrobe/atmospherics_yellow, +/obj/machinery/light, +/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"iaC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"iaS" = ( +/obj/machinery/computer/arcade/orion_trail, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/carpet/arcade, +/area/crew_quarters/fitness) +"iaW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"ibe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/warden) +"ibu" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/bar) +"ibE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/sorting) +"ibJ" = ( +/obj/structure/bookcase, +/obj/item/book/manual/sop_command, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"ibQ" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/food/snacks/cutlet, +/obj/item/reagent_containers/food/snacks/cheesewedge, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"ibX" = ( +/obj/effect/decal/warning_stripes/east, +/obj/item/mecha_parts/part/ripley_right_arm, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/coldcolony/ruin/abandoned_garage) +"icb" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/maintcentral) +"icn" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"icK" = ( +/obj/effect/decal/warning_stripes/south, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"icX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"icZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"idh" = ( +/obj/effect/landmark/start/bartender, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/bar) +"iea" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/toxins/xenobiology) +"ied" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/stool, +/turf/simulated/floor/plating, +/area/maintenance/casino) +"iee" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"iei" = ( +/obj/item/stack/sheet/wood{ + amount = 15 + }, +/obj/machinery/light_construct, +/turf/simulated/floor/plasteel, +/area/medical/research/shallway) +"ien" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/crew_quarters/bar/atrium) +"ieo" = ( +/obj/machinery/computer/pandemic, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "green" + }, +/area/medical/virology/lab) +"ieA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"ieO" = ( +/obj/item/radio/intercom/custom{ + frequency = 1347; + name = "station intercom (Supply)"; + pixel_x = 28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkbrown"; + dir = 5 + }, +/area/bridge/vip) +"ifc" = ( +/obj/effect/landmark/start/roboticist, +/turf/simulated/floor/plasteel, +/area/assembly/robotics) +"ifk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"ifo" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table/glass, +/obj/item/clothing/glasses/hud/health, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "green" + }, +/area/medical/virology/lab) +"ifC" = ( +/obj/structure/table/wood, +/obj/item/toy/figure/chaplain, +/obj/structure/sign/poster/official/religious{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"ifG" = ( +/obj/machinery/r_n_d/experimentor, +/turf/simulated/floor/plating, +/area/toxins/explab) +"ifO" = ( +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/obj/machinery/light, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"ifP" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/permabrig) +"ifW" = ( +/obj/structure/table_frame/wood, +/obj/item/stack/sheet/wood, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"igi" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"igj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"igl" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"igv" = ( +/obj/machinery/door/airlock/external{ + hackProof = 1; + id_tag = "emergency_home"; + locked = 1; + name = "Escape Airlock" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/exit) +"igz" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/flora/ausbushes/grassybush, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"igA" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"igB" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/qm) +"igP" = ( +/obj/machinery/power/apc{ + pixel_y = -26 + }, +/obj/structure/cable, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"igX" = ( +/obj/effect/decal/cleanable/generic, +/obj/effect/landmark/tiles/damageturf, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"ihi" = ( +/obj/structure/table, +/obj/item/gps/science, +/obj/item/storage/toolbox/mechanical, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whitepurple" + }, +/area/toxins/lab) +"ihk" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/space_heater, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/lobby) +"iho" = ( +/obj/machinery/door/airlock/public/glass, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "eslock" + }, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"ihA" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 4; + name = "Труба фильтрации" + }, +/turf/simulated/wall/r_wall, +/area/atmos) +"ihH" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"ihJ" = ( +/obj/machinery/door/airlock/atmos/glass{ + name = "Atmospherics Storage"; + req_access = list(24) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"iif" = ( +/obj/machinery/vending/security, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/customs) +"iil" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"iis" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"iit" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/effect/decal/cleanable/generic, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"iiI" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/sleeper) +"iiK" = ( +/obj/structure/bed/dogbed/runtime, +/mob/living/simple_animal/pet/cat/Runtime, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkblue" + }, +/area/bridge/vip) +"ijf" = ( +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"ijq" = ( +/obj/structure/toilet{ + pixel_y = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/blueshield) +"ijK" = ( +/obj/effect/decal/cleanable/blood/writing, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"ijN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "viro_lab_airlock_control"; + name = "Virology Lab Access Button"; + pixel_x = 22; + pixel_y = 22; + req_access = list(39) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"ijR" = ( +/obj/effect/landmark/start/intern, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"ikO" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkbluecorners" + }, +/area/bridge/vip) +"ild" = ( +/obj/structure/table/wood, +/obj/item/trash/popcorn, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"ilo" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/shuttle/engine/heater{ + opacity = 1 + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/pirate_corvette) +"ilH" = ( +/obj/structure/bed/old, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"imf" = ( +/obj/structure/bookcase, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/main) +"imo" = ( +/obj/structure/table/reinforced, +/obj/item/clipboard, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) +"imr" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/bridge/vip) +"imt" = ( +/obj/machinery/computer/monitor, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"imK" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"imV" = ( +/obj/structure/table/wood, +/obj/machinery/computer/med_data/laptop{ + pixel_y = 5 + }, +/turf/simulated/floor/carpet/cyan, +/area/bridge/vip) +"ina" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"inh" = ( +/obj/machinery/light_construct, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/sign/nosmoking_2{ + pixel_y = -32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"inp" = ( +/obj/effect/landmark/start/scientist, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) +"inF" = ( +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plating, +/area/medical/sleeper) +"inG" = ( +/obj/effect/decal/ants, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"inV" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/effect/decal/cleanable/generic, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plating, +/area/security/securearmory) +"ioc" = ( +/obj/structure/closet/crate/engineering, +/obj/item/stack/sheet/plasteel{ + amount = 12; + pixel_x = 3; + pixel_y = 2 + }, +/obj/item/stack/sheet/plasmarglass{ + amount = 8 + }, +/obj/item/stack/rods{ + amount = 50 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"iot" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/trash/syndi_cakes, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"ioG" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"ioL" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"ioP" = ( +/obj/effect/mob_spawn/human/corpse/damaged, +/obj/structure/table_frame, +/obj/item/shard, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"ioQ" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/door/window{ + dir = 2; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/clothing/suit/armor/riot, +/obj/item/shield/riot, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/head/helmet/riot, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"ipb" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + name = "Toilet" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/toilet4) +"ipu" = ( +/obj/structure/closet/secure_closet/brig/evidence, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/evidence) +"ipC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permahallway) +"ipT" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry) +"iqb" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/decal/warning_stripes/arrow{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light, +/obj/vehicle/ridden/snowmobile/key, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"iqh" = ( +/obj/effect/landmark/start/security_pod_pilot, +/turf/simulated/floor/plasteel{ + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"iql" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/junction/reversed{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"iqm" = ( +/turf/simulated/wall/rust, +/area/medical/research) +"iqq" = ( +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/computer/message_monitor, +/turf/simulated/floor/plating, +/area/toxins/server) +"iqz" = ( +/turf/simulated/wall, +/area/hallway/primary/central/north) +"iqN" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/newscaster{ + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/assembly/robotics) +"iqT" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_chamber) +"irc" = ( +/obj/structure/plasticflaps/mining, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) +"irw" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken6" + }, +/area/coldcolony/ruin/abandoned_house) +"irJ" = ( +/turf/simulated/wall/r_wall/rust, +/area/bridge/vip) +"isa" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "NT Representative's Office"; + req_access = list(73) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ntrep) +"isb" = ( +/obj/structure/holosign/barrier/engineering, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"isx" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction/yjunction{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"isB" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"isO" = ( +/obj/structure/table/reinforced, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"itk" = ( +/obj/machinery/power/apc/syndicate{ + dir = 4; + pixel_x = 26; + start_charge = 30 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"itn" = ( +/obj/effect/decal/warning_stripes/blue, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/storage/firstaid/o2, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"itv" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"itH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/gibs/limb, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"iug" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/head/redcoat, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/radio/intercom{ + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/crew_quarters/cabin1) +"iuz" = ( +/obj/structure/rack, +/obj/item/assembly/igniter, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/tank/internals/emergency_oxygen/engi, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"iuA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker/locker_toilet) +"iuS" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"ivi" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Permabrig Access"; + req_access = list(2) + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permahallway) +"ivk" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"ivy" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + name = "Труба дыхательной смеси" + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/atmos) +"ivA" = ( +/obj/effect/decal/cleanable/flour, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"ivM" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/purple{ + desc = "Труба ведёт газ на фильтрацию"; + dir = 1; + name = "Труба на фильтрацию" + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/atmos) +"ivY" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/white, +/area/crew_quarters/fitness) +"iwf" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/effect/landmark/start/cargo_technician, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"iwj" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitebluecorner" + }, +/area/medical/genetics) +"iwl" = ( +/obj/structure/table/wood, +/obj/item/folder/blue, +/obj/item/pen/multi/fountain, +/obj/item/paper/safe_code{ + owner = "captain"; + pixel_x = -6; + pixel_y = -6 + }, +/obj/item/paper/monitorkey, +/obj/item/lighter/zippo/cap, +/obj/item/paper/rnd_logs_key{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/light, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain/bedroom) +"iwo" = ( +/obj/machinery/recharge_station, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"iwD" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad" + }, +/obj/machinery/door/poddoor{ + id_tag = "QMLoaddoor"; + name = "supply dock loading door" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"iwG" = ( +/obj/machinery/vending/hydronutrients, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "green" + }, +/area/hydroponics) +"iwH" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"ixh" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/security/detectives_office) +"ixu" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"ixw" = ( +/obj/structure/bed, +/obj/item/bedsheet/mime, +/obj/effect/landmark/start/mime, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) +"ixx" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/syndie_outpost) +"ixD" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/storage) +"ixU" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 6 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"iyg" = ( +/obj/structure/alien/weeds/node, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"iyh" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"iys" = ( +/obj/structure/table, +/obj/item/pen, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"iyF" = ( +/obj/structure/table/wood, +/obj/item/folder/blue, +/obj/item/lighter/zippo/cmo, +/obj/item/radio/intercom/department/medbay{ + pixel_x = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/bridge/vip) +"iyZ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"izh" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin1) +"izm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"izv" = ( +/obj/structure/closet/wardrobe/red, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/clothing/suit/hooded/wintercoat/security, +/obj/item/clothing/suit/hooded/wintercoat/security, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "red" + }, +/area/security/checkpoint) +"izD" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start/engineer, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"izL" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"izV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"izW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"iAh" = ( +/obj/machinery/computer/rdconsole/core, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/toxins/lab) +"iAk" = ( +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"iAt" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/secondary/entry/lounge) +"iAx" = ( +/obj/machinery/door/airlock/public/glass, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "eslock" + }, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/north, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"iBh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"iBk" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"iBv" = ( +/obj/structure/curtain/black, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"iBA" = ( +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"iBC" = ( +/obj/structure/mecha_wreckage/ripley, +/obj/machinery/light/small{ + active_power_usage = 0; + dir = 8; + icon_state = "bulb-broken"; + status = 2 + }, +/turf/simulated/floor/mech_bay_recharge_floor, +/area/coldcolony/ruin/abandoned_garage) +"iBT" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"iBU" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/snacks/breadslice, +/obj/item/reagent_containers/food/snacks/breadslice{ + pixel_x = 3; + pixel_y = 7 + }, +/obj/item/reagent_containers/food/snacks/breadslice{ + pixel_x = -3; + pixel_y = 2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"iBY" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/energy_swords{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/shuttle/pirate_corvette) +"iCn" = ( +/obj/structure/table/wood, +/obj/item/storage/box/drinkingglasses, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"iCG" = ( +/obj/item/stamp/hos, +/obj/structure/table/wood, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"iCH" = ( +/turf/simulated/floor/plating, +/area/hallway/primary/central/nw) +"iCO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"iDd" = ( +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"iDf" = ( +/obj/structure/table/reinforced, +/obj/machinery/kitchen_machine/microwave{ + pixel_x = -1; + pixel_y = 7 + }, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"iDh" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/vehicle/ridden/snowmobile/key, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/lounge) +"iDk" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"iDD" = ( +/obj/structure/chair/wood, +/obj/effect/decal/ants, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"iEo" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) +"iEv" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"iEI" = ( +/obj/structure/table/reinforced, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/clothing/ears/earmuffs, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"iEY" = ( +/obj/structure/closet/secure_closet/warden, +/obj/item/clothing/suit/hooded/wintercoat/security, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/warden) +"iFc" = ( +/obj/structure/barricade/wooden/crude/snow{ + layer = 3.3 + }, +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/maintenance/external{ + req_access = list(26,32) + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"iFi" = ( +/obj/machinery/atmospherics/binary/pump{ + desc = "Подаёт азот для смешивания с другими газами"; + dir = 8; + name = "Азот (N2) в смеситель"; + target_pressure = 101 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos) +"iFn" = ( +/obj/structure/table/wood, +/obj/item/clipboard, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"iFr" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/clothing/glasses/welding, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "yellow" + }, +/area/engineering/break_room) +"iFs" = ( +/turf/simulated/floor/plasteel, +/area/atmos) +"iFv" = ( +/obj/machinery/door/airlock/maintenance{ + req_access = list(12,39) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"iFG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"iFL" = ( +/obj/item/stack/sheet/wood, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"iFN" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/effect/landmark/start/cargo_technician, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/office) +"iFT" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/chief) +"iGr" = ( +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"iGu" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/processing) +"iGx" = ( +/turf/simulated/wall/r_wall/rust, +/area/security/permahallway) +"iGA" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"iGT" = ( +/obj/machinery/door_control{ + id = "HoSPriv"; + name = "HoS Office Privacy Shutters Control"; + pixel_y = -23; + pixel_x = 24 + }, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"iHg" = ( +/obj/machinery/computer/scan_consolenew, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"iHo" = ( +/turf/simulated/wall, +/area/civilian/barber) +"iHq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"iHD" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"iHF" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 4; + name = "Труба дыхательной смеси" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"iIh" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/machinery/newscaster{ + pixel_x = 30 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"iIl" = ( +/obj/machinery/papershredder, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"iIr" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/vehicle/ridden/snowmobile/key, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"iIv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"iIy" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"iIL" = ( +/obj/machinery/photocopier, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkpurple" + }, +/area/bridge/vip) +"iJm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"iJo" = ( +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"iJt" = ( +/obj/item/seeds/watermelon, +/turf/simulated/floor/plating, +/area/maintenance/garden) +"iJy" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light{ + dir = 8 + }, +/obj/vehicle/ridden/snowmobile/key, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"iJA" = ( +/obj/item/folder/white, +/obj/structure/table, +/obj/item/flashlight/pen, +/obj/item/clothing/accessory/stethoscope, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"iJD" = ( +/obj/structure/wooden_sign{ + name = "STOOOOOOOOP!!!"; + desc = "THERE IS FUCKING MINE!!!" + }, +/turf/simulated/floor/plating, +/area/engineering/gravitygenerator) +"iJP" = ( +/obj/structure/bed, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"iJY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/security/lobby) +"iKm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"iKn" = ( +/obj/machinery/status_display, +/turf/simulated/wall/rust, +/area/security/processing) +"iKz" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners" + }, +/area/security/main) +"iKJ" = ( +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain/bedroom) +"iKR" = ( +/obj/structure/table/reinforced, +/obj/item/storage/box/donkpockets, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "yellow" + }, +/area/engineering/break_room) +"iKS" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"iKV" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"iKX" = ( +/obj/structure/flora/ausbushes/ppflowers, +/turf/simulated/floor/grass, +/area/hydroponics) +"iKY" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken2" + }, +/area/coldcolony/ruin/abandoned_banya) +"iLb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"iLc" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/toxins/server) +"iLh" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/exit) +"iLr" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating/asteroid, +/area/coldcolony/ruin/sm_chamber) +"iLS" = ( +/obj/effect/decal/warning_stripes/northeast, +/obj/structure/closet/walllocker/emerglocker/north, +/obj/item/reagent_containers/food/pill/patch/silver_sulf, +/obj/item/reagent_containers/food/pill/patch/silver_sulf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"iLW" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) +"iMa" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"iMl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"iMV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin1) +"iNa" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"iNp" = ( +/turf/simulated/floor/plasteel, +/area/toxins/xenobiology) +"iNr" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"iNx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/drip, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"iNz" = ( +/obj/machinery/power/terminal, +/obj/structure/cable, +/obj/structure/rack, +/obj/item/stack/sheet/mineral/plasma/fifty, +/obj/item/wrench, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"iOc" = ( +/obj/structure/bookcase, +/obj/item/book/manual/security_space_law/black, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"iOv" = ( +/obj/effect/landmark/start/atmospheric, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"iOT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"iOZ" = ( +/obj/structure/closet/secure_closet/brig{ + id = "Cell 3"; + name = "Cell 3 Locker" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"iPl" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/hallway/primary/fore) +"iPs" = ( +/obj/structure/chair/wood, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"iPG" = ( +/turf/simulated/wall/rust, +/area/engineering/engine/monitor) +"iQC" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"iQD" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"iRv" = ( +/obj/machinery/door/airlock/security{ + name = "Detective"; + req_access = list(4) + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/wood, +/area/security/detectives_office) +"iRC" = ( +/obj/structure/closet/paramedic, +/obj/machinery/newscaster{ + pixel_x = -30 + }, +/obj/item/clothing/suit/hooded/wintercoat/medical, +/turf/simulated/floor/plasteel/white, +/area/medical/paramedic) +"iRM" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"iRN" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/space_heater, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"iRO" = ( +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"iRU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/bridge/vip) +"iRV" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"iSg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/hallway/secondary/exit) +"iSn" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"iSo" = ( +/obj/effect/decal/cleanable/dust, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"iSI" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securehallway) +"iSM" = ( +/obj/structure/table/reinforced, +/obj/item/folder/red, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/warden) +"iSN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) +"iST" = ( +/turf/simulated/floor/plasteel, +/area/ruin/unpowered) +"iTa" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hydroponics) +"iTb" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/main) +"iTi" = ( +/obj/structure/table/wood, +/obj/item/dice/d12, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library/game_zone) +"iUf" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/full/reinforced/ice, +/turf/simulated/floor/plating, +/area/hallway/primary/fore) +"iUj" = ( +/obj/structure/closet/crate/trashcart, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/perma) +"iUn" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/carpet/royalblack, +/area/bridge) +"iUu" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/crew_quarters/chief) +"iUD" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/main) +"iUK" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"iUL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"iUR" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"iUX" = ( +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"iVd" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id_tag = "Brig_lockdown"; + name = "Brig Lockdown" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/security/prison/cell_block/A) +"iVg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"iVw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"iVF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/reagent_containers/applicator, +/obj/item/reagent_containers/applicator, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"iVI" = ( +/obj/effect/spawner/window/reinforced/plasma, +/obj/machinery/door/poddoor/preopen{ + id_tag = "burn"; + name = "Blast Door" + }, +/turf/simulated/floor/plating, +/area/maintenance/incinerator) +"iVK" = ( +/obj/machinery/door/window{ + base_state = "right"; + dir = 1; + icon_state = "right"; + name = "Captain's Desk Door"; + req_access = list(20) + }, +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"iVQ" = ( +/obj/structure/sign/securearea, +/turf/simulated/wall, +/area/medical/research) +"iVU" = ( +/obj/effect/decal/warning_stripes/west{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding1" + }, +/obj/effect/decal/warning_stripes/west{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "asteroid" + }, +/area/hydroponics) +"iWd" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + dir = 5 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"iWu" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/flora/ausbushes/ppflowers, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"iWx" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/genetics) +"iWY" = ( +/obj/structure/table/wood, +/obj/item/folder/yellow, +/obj/item/pen, +/turf/simulated/floor/plasteel{ + icon_state = "darkbrown"; + dir = 6 + }, +/area/bridge/vip) +"iXb" = ( +/obj/effect/decal/warning_stripes/west, +/obj/machinery/computer/station_alert, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/chief) +"iXs" = ( +/obj/machinery/atm{ + pixel_y = 32 + }, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"iXu" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/head/fedora, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitehall" + }, +/area/crew_quarters/sleep) +"iXM" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/engine/vacuum, +/area/atmos) +"iXR" = ( +/turf/simulated/wall/r_wall, +/area/engineering/engine) +"iXU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"iYd" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"iYu" = ( +/obj/item/gps{ + desc = "A positioning system designed to keep an eye on your fellow workers."; + gpstag = "CARG0"; + icon_state = "gps-m" + }, +/obj/item/cartridge/quartermaster{ + pixel_x = -1; + pixel_y = 7 + }, +/obj/item/cartridge/quartermaster{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/clipboard, +/obj/structure/closet/secure_closet{ + icon_state = "qm"; + req_access = list(41); + name = "quartermaster's locker" + }, +/obj/item/megaphone, +/obj/item/door_remote/quartermaster, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/quartermaster/qm) +"iYy" = ( +/obj/effect/turf_decal/box, +/obj/structure/closet/crate/internals, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) +"iYR" = ( +/obj/structure/table, +/obj/item/storage/box/tapes, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"iZl" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/cleanable/dirt, +/obj/item/extinguisher, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_chamber) +"iZo" = ( +/turf/simulated/wall/rust, +/area/security/checkpoint) +"iZv" = ( +/obj/structure/closet/crate/can, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"iZw" = ( +/obj/structure/chair/sofa/pew{ + dir = 4 + }, +/obj/machinery/light{ + active_power_usage = 0; + dir = 8; + icon_state = "tube-broken"; + status = 2 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"iZH" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "viro_lab_airlock_control"; + name = "Virology Lab Access Button"; + pixel_x = -24; + pixel_y = 22; + req_access = list(39) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start/virologist, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"iZI" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/warning_stripes/blue, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"iZX" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"jai" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event/xeno_spawn, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/miningeva) +"jaE" = ( +/obj/structure/table/wood, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/machinery/light, +/obj/item/storage/box/cups, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"jaK" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/junction/yjunction{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/quartermaster/storage) +"jaM" = ( +/turf/simulated/wall/rust, +/area/hallway/primary/central/east) +"jbp" = ( +/obj/structure/table/wood/fancy, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = -4 + }, +/turf/simulated/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/kitchen) +"jbI" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/effect/decal/warning_stripes/northeast, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"jbL" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"jcb" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-25"; + tag = "icon-plant-25" + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"jcy" = ( +/obj/structure/table/reinforced, +/obj/item/folder/red, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/reception) +"jcC" = ( +/obj/effect/decal/warning_stripes/south, +/obj/item/mecha_parts/mecha_equipment/generator, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/coldcolony/ruin/abandoned_garage) +"jcD" = ( +/obj/structure/gravemarker/cross, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"jcF" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"jcH" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 4; + name = "Труба фильтрации" + }, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 1; + name = "Труба дыхательной смеси" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"jcN" = ( +/obj/structure/closet/crate/can, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"jcS" = ( +/obj/machinery/door/airlock/glass{ + name = "Barber Shop" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/civilian/barber) +"jdw" = ( +/obj/structure/table/glass, +/obj/item/paper_bin, +/obj/item/pen/red, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/reagent_dispensers/virusfood{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/medical/virology/lab) +"jdA" = ( +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-cherry" + }, +/area/crew_quarters/trading) +"jdE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/door_assembly/door_assembly_med, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"jdV" = ( +/obj/structure/dresser, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"jdX" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/tape_roll, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos/control) +"jed" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) +"jei" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/miningeva) +"jep" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA" + }, +/turf/simulated/wall/r_wall, +/area/engineering/engine) +"jet" = ( +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/fitness) +"jeB" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"jeR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"jfp" = ( +/obj/structure/sign/electricshock, +/turf/simulated/wall, +/area/engineering/engine/monitor) +"jfq" = ( +/obj/machinery/flasher{ + desc = "A floor-mounted flashbulb device."; + id = "brigkpp"; + layer = 5; + pixel_y = 55; + range = 3 + }, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"jfA" = ( +/obj/structure/railing, +/obj/structure/chair, +/obj/effect/turf_decal/siding/wideplating{ + color = "#332a2a" + }, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"jfB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"jfG" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"jfJ" = ( +/obj/structure/table/reinforced, +/obj/machinery/kitchen_machine/microwave, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"jfP" = ( +/obj/item/storage/box/lights/tubes, +/obj/structure/table, +/turf/simulated/floor/plating, +/area/toxins/explab) +"jfT" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/closet/secure_closet/security, +/obj/item/clothing/suit/hooded/wintercoat/security, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/customs) +"jfW" = ( +/obj/structure/chair/wood{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"jfY" = ( +/obj/machinery/vending/cigarette, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry) +"jgc" = ( +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"jge" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkpurple" + }, +/area/bridge/vip) +"jgl" = ( +/turf/simulated/wall, +/area/crew_quarters/heads/hop) +"jgu" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/effect/landmark/start/security_officer, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"jgx" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"jgG" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"jgP" = ( +/obj/machinery/recharge_station, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"jgQ" = ( +/obj/item/flashlight/seclite, +/obj/structure/table, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/newscaster/security_unit{ + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/processing) +"jhl" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/item/shard, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"jhx" = ( +/obj/effect/spawner/lootdrop/maintenance/double, +/obj/structure/table, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"jhy" = ( +/obj/structure/table/wood, +/obj/item/folder/red, +/obj/item/pen, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"jhD" = ( +/turf/simulated/wall/r_wall, +/area/security/customs) +"jhP" = ( +/turf/simulated/wall, +/area/crew_quarters/bar/atrium) +"jhR" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light, +/obj/effect/decal/cleanable/dirt, +/obj/vehicle/ridden/snowmobile/key, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"jif" = ( +/obj/structure/table/wood, +/obj/item/taperecorder, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"jip" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26; + start_charge = 1 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"jiu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot/right, +/obj/effect/turf_decal/bot/left, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/sorting) +"jiF" = ( +/obj/structure/chair/sofa/right{ + dir = 1 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/theatre) +"jiI" = ( +/obj/effect/decal/warning_stripes/south, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"jiZ" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"jjq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"jjz" = ( +/obj/item/mounted/frame/firealarm, +/turf/simulated/floor/plating, +/area/toxins/explab) +"jjB" = ( +/obj/structure/window/reinforced, +/obj/item/folder/blue{ + pixel_x = 5 + }, +/obj/structure/table/wood, +/obj/item/lighter/zippo/rd, +/turf/simulated/floor/carpet/purple, +/area/bridge/vip) +"jjC" = ( +/obj/effect/spawner/window/reinforced/polarized{ + id = "hopqueuewindows" + }, +/turf/simulated/floor/plating, +/area/hallway/primary/fore) +"jjM" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"jjX" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/bar) +"jkt" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engineering/break_room) +"jkG" = ( +/obj/structure/chair/sofa/right{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/wood/fancy/cherry, +/area/library) +"jkP" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"jkW" = ( +/turf/simulated/wall, +/area/hallway/secondary/exit) +"jla" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"jlb" = ( +/obj/structure/bed, +/obj/machinery/flasher{ + id = "Cell 5"; + name = "Cell 5 Flasher"; + pixel_y = 28 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"jld" = ( +/obj/structure/bed, +/obj/item/bedsheet/rd, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/carpet/purple, +/area/bridge/vip) +"jln" = ( +/obj/machinery/door/airlock/bananium{ + name = "Clown's Office"; + req_access = list(46) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/lubed{ + icon_state = "bar" + }, +/area/clownoffice) +"jlD" = ( +/obj/machinery/door/poddoor/preopen{ + id_tag = "BridgeLockdown"; + name = "Bridge Lockdown" + }, +/obj/effect/spawner/window/reinforced/polarized{ + id = "ntr" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "representative"; + name = "Privacy Shutters" + }, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/ntrep) +"jlH" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"jlR" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/obj/structure/flora/grass/both, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"jlV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/suit/hooded/wintercoat/medical/cmo, +/obj/structure/closet/secure_closet{ + icon_state = "cmo"; + req_access = list(40); + name = "chief medical officer's locker" + }, +/obj/item/megaphone, +/obj/item/clothing/accessory/medal/medical, +/obj/item/door_remote/chief_medical_officer, +/obj/item/reagent_containers/hypospray/CMO, +/obj/item/storage/backpack/duffel/medical, +/obj/item/storage/belt/medical, +/obj/item/defibrillator/compact/advanced/loaded, +/obj/item/laser_pointer, +/obj/item/clothing/under/rank/medical/blue, +/obj/item/clothing/head/surgery, +/turf/simulated/floor/plasteel/white, +/area/medical/cmo) +"jmf" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/machinery/camera{ + c_tag = "Bar"; + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"jmm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"jms" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"jmu" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/warning_stripes/south, +/obj/item/paper_bin, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"jmv" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/obj/vehicle/ridden/snowmobile/key, +/turf/simulated/floor/plasteel, +/area/medical/research) +"jmF" = ( +/obj/effect/decal/warning_stripes/blue, +/obj/structure/closet/emcloset, +/obj/effect/decal/warning_stripes/west, +/obj/machinery/camera{ + c_tag = "Engineering Entrance"; + dir = 4; + network = list("Engineering","SS13"); + pixel_y = -22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"jmH" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id_tag = "Brig_lockdown"; + name = "Brig Lockdown" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "brig_detprivacy"; + name = "Detective Privacy Shutters" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/security/detectives_office) +"jmI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/decal/cleanable/dust, +/obj/effect/decal/cleanable/dust, +/obj/structure/closet/crate/secure/gear{ + req_access = list(1) + }, +/obj/item/storage/box/enforcer_rubber, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/sorting) +"jmL" = ( +/obj/structure/flora/grass/brown, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"jmZ" = ( +/turf/simulated/wall/r_wall, +/area/security/processing) +"jnn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"jnw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"jnC" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitehall" + }, +/area/crew_quarters/sleep) +"jnG" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/cleanable/ash, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"jnP" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"joe" = ( +/obj/machinery/recharge_station, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge) +"jon" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/engineering, +/obj/item/stock_parts/micro_laser, +/obj/item/stock_parts/micro_laser, +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/capacitor, +/obj/item/stock_parts/capacitor, +/obj/item/stock_parts/scanning_module, +/obj/item/stock_parts/scanning_module, +/turf/simulated/floor/plasteel, +/area/storage/secure) +"joB" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"joF" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) +"joS" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"joX" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/hydroponics) +"joZ" = ( +/obj/structure/table_frame, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/newscaster{ + pixel_x = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"jpa" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"jpb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge/vip) +"jpd" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"jpe" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"jpt" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/crate/engineering, +/obj/item/clothing/head/welding, +/obj/effect/spawner/lootdrop/maintenance/double, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"jpF" = ( +/obj/effect/spawner/random_spawners/fungus_70, +/turf/simulated/wall, +/area/crew_quarters/bar) +"jpN" = ( +/obj/structure/closet/jcloset, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/janitor) +"jpT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"jqy" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/ntrep) +"jqB" = ( +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"jrs" = ( +/obj/machinery/computer/shuttle{ + shuttleId = "pirateship"; + possible_destinations = "pirateship_home;pirateship_custom;pirateship_planet"; + use_power = 0; + req_access = list(160) + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/shuttle/pirate_corvette) +"jrw" = ( +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"jrH" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permahallway) +"jrJ" = ( +/obj/structure/sign/poster/official/random, +/turf/simulated/wall, +/area/crew_quarters/bar/atrium) +"jsb" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/fakesyndi, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) +"jsf" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/closet/secure_closet/freezer{ + icon_state = "fridge" + }, +/obj/item/reagent_containers/food/condiment/milk, +/obj/item/reagent_containers/food/snacks/chocolatebar, +/obj/item/reagent_containers/food/snacks/doshik, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/shuttle/pirate_corvette) +"jsi" = ( +/obj/machinery/light_switch{ + pixel_x = -24 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/qm) +"jsr" = ( +/obj/machinery/computer/monitor, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"jtd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/med, +/turf/simulated/wall, +/area/medical/medbay2) +"jtl" = ( +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"jty" = ( +/obj/structure/railing, +/obj/structure/disposalpipe/junction/reversed{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"jtL" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 8 + }, +/obj/machinery/constructable_frame/machine_frame, +/obj/item/reagent_containers/food/snacks/sosjerky, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"jtR" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "BridgeShutters"; + name = "Bridge Privacy Shutters" + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "BridgeLockdown"; + name = "Bridge Lockdown" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/bridge) +"jtW" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/obj/item/card/id/captains_spare, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain/bedroom) +"jtY" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/bridge/vip) +"juo" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"juI" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/birch{ + icon_state = "fancy-wood-birch-broken6" + }, +/area/bridge/checkpoint/south) +"juU" = ( +/obj/effect/spawner/random_spawners/fungus_70, +/turf/simulated/wall, +/area/crew_quarters/fitness) +"jvi" = ( +/obj/machinery/constructable_frame/machine_frame, +/obj/item/stock_parts/matter_bin{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/structure/sign/nosmoking_2{ + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"jvm" = ( +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) +"jvt" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/security/permabrig) +"jvI" = ( +/obj/structure/closet/abductor, +/obj/item/surgicaldrill/alien, +/turf/simulated/floor/mineral/abductor{ + oxygen = 22; + temperature = 180; + nitrogen = 82 + }, +/area/ruin/unpowered) +"jvP" = ( +/obj/structure/chair, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/landmark/start/security_officer, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/processing) +"jvT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/table, +/obj/random/toolbox, +/obj/item/storage/box/lights/mixed, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"jvV" = ( +/obj/machinery/vending/snack, +/obj/effect/decal/warning_stripes/yellow/partial, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge) +"jwk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"jwn" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep) +"jws" = ( +/obj/machinery/door/window/eastright{ + dir = 1; + name = "Virology Work Zone"; + req_access = list(5) + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"jwu" = ( +/obj/structure/mineral_door/wood, +/turf/simulated/floor/wood, +/area/coldcolony/morgue) +"jwz" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/brig) +"jwE" = ( +/obj/machinery/door/airlock{ + name = "Garden" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/maintenance/garden) +"jwG" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"jwW" = ( +/obj/effect/decal/cleanable/ash, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_chamber) +"jxb" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"jxk" = ( +/obj/machinery/computer/med_data{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitered" + }, +/area/security/medbay) +"jxp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/eastarrival) +"jxq" = ( +/obj/machinery/door/airlock/silver{ + name = "Bathroom" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/blueshield) +"jxr" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"jxE" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/locker) +"jxZ" = ( +/obj/structure/chair, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"jya" = ( +/obj/structure/table/wood, +/obj/machinery/door/window/westright{ + name = "Front Desk"; + req_access = list(37) + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"jyo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/security/permabrig) +"jyu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"jyw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/dark, +/obj/effect/landmark/start/cargo_technician, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"jyx" = ( +/obj/machinery/atmospherics/unary/tank/air{ + dir = 4; + volume = 20000 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"jyB" = ( +/obj/machinery/light_switch{ + pixel_x = 24; + pixel_y = 8 + }, +/obj/machinery/door_control{ + id = "brig_detprivacy"; + name = "Detective Privacy Shutters Control"; + pixel_x = 26; + pixel_y = -8 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/security/detectives_office) +"jyK" = ( +/obj/machinery/computer/camera_advanced/shuttle_docker{ + shuttleId = "pirateship"; + shuttlePortId = "pirateship_custom"; + view_range = 20; + access_derelict = 1; + access_station = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/shuttle/pirate_corvette) +"jzq" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/warning_stripes/blue, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/lounge) +"jzD" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable, +/obj/structure/closet/l3closet/scientist, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"jzT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"jAh" = ( +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"jAu" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/obj/item/reagent_containers/food/pill/patch/silver_sulf, +/obj/item/reagent_containers/food/pill/patch/silver_sulf, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"jAy" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"jAA" = ( +/turf/simulated/wall/rust, +/area/maintenance/fore) +"jAB" = ( +/obj/machinery/door/airlock/maintenance/external{ + req_access = list(12) + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"jAF" = ( +/obj/structure/table, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/miningeva) +"jAS" = ( +/obj/structure/closet/firecloset, +/obj/machinery/light{ + active_power_usage = 0; + icon_state = "tube-broken"; + status = 2 + }, +/obj/effect/decal/warning_stripes/red, +/obj/structure/sign/poster/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"jAY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"jAZ" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"jBj" = ( +/obj/structure/table/glass, +/obj/item/healthanalyzer, +/obj/machinery/light, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/medical/virology/lab) +"jBz" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/toxins/lab) +"jBK" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/clothing/glasses/welding, +/turf/simulated/floor/plasteel{ + icon_state = "yellow" + }, +/area/engineering/break_room) +"jBX" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/quartermaster/storage) +"jCf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"jCi" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/qm) +"jCm" = ( +/obj/structure/sink/kitchen{ + pixel_y = 28; + name = "sink" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/shuttle/pirate_corvette) +"jCo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"jCp" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/item/clothing/suit/hooded/wintercoat/medical, +/obj/item/storage/belt/medical, +/obj/item/clothing/glasses/hud/health, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/cmostore) +"jCt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/maintenance/garden) +"jCC" = ( +/obj/machinery/portable_atmospherics/canister/sleeping_agent, +/obj/effect/decal/warning_stripes/west, +/turf/simulated/floor/plating, +/area/security/permabrig) +"jCG" = ( +/obj/structure/table/wood, +/obj/item/paper, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"jDc" = ( +/obj/machinery/vending/tool, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engineering/engine/monitor) +"jDv" = ( +/obj/structure/table_frame/wood, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"jDw" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"jDE" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"jDL" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/structure/barricade/wooden/crude/snow{ + layer = 3.3 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"jDU" = ( +/obj/machinery/vending/engivend, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engineering/engine/monitor) +"jEq" = ( +/obj/machinery/door/morgue{ + name = "Dungeon"; + req_access = list(63) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"jEt" = ( +/obj/effect/decal/cleanable/blood/gibs/limb, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"jEu" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/atmos/control) +"jEK" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/pointybush, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/grass, +/area/hallway/secondary/exit) +"jEM" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/security/detectives_office) +"jER" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/processing) +"jET" = ( +/obj/item/clipboard, +/obj/structure/table/wood, +/obj/item/toy/figure/hos{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/hos) +"jEX" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/donut_box, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"jFa" = ( +/turf/simulated/wall/r_wall, +/area/toxins/server) +"jFy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/doctor, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"jFK" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engineering/engine/monitor) +"jFM" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin1) +"jFS" = ( +/obj/structure/sign/comand{ + name = "\improper COMMAND POST" + }, +/turf/simulated/wall, +/area/bridge/checkpoint/south) +"jFZ" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/vending/chinese, +/obj/effect/decal/warning_stripes/yellow/partial, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/hallway/secondary/exit) +"jGo" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/atmos/control) +"jGP" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker) +"jHa" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel, +/area/atmos) +"jHe" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/primary/fore) +"jHq" = ( +/obj/machinery/hydroponics/soil, +/obj/structure/sign/poster/contraband/random{ + pixel_x = -32 + }, +/turf/simulated/floor/grass, +/area/hydroponics) +"jHM" = ( +/obj/structure/bed, +/obj/effect/spawner/random_spawners/syndicate/loot{ + result = list(/obj/item/bedsheet/blue = 10, /obj/item/bedsheet/black = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/fluff = 10, /obj/item/bedsheet/green = 10, /obj/item/bedsheet/orange = 10, /obj/item/bedsheet/purple = 10, /obj/item/bedsheet/red = 10, /obj/item/bedsheet/yellow = 10); + name = "bedsheet" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/permabrig) +"jHW" = ( +/obj/structure/bed, +/obj/item/bedsheet/clown, +/obj/effect/landmark/start/clown, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/clownoffice) +"jIf" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Solitary Confinement"; + req_access = list(2) + }, +/turf/simulated/floor/plating, +/area/security/permahallway) +"jIq" = ( +/obj/structure/window/reinforced, +/obj/structure/table/reinforced, +/obj/item/clipboard, +/obj/item/folder/yellow, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge) +"jIz" = ( +/obj/structure/lattice, +/obj/item/stack/rods, +/turf/simulated/floor/plating/asteroid, +/area/coldcolony/ruin/sm_chamber) +"jIE" = ( +/obj/effect/decal/warning_stripes/red/partial, +/obj/machinery/light_switch{ + pixel_x = -22; + pixel_y = -8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/lobby) +"jIM" = ( +/obj/item/trash/candy, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"jJc" = ( +/obj/effect/landmark/start/intern, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"jJd" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/flora/ausbushes/grassybush, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"jJD" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/warden) +"jJR" = ( +/obj/item/reagent_containers/hypospray/autoinjector{ + icon_state = "autoinjector0"; + plane = 41; + spent = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"jJU" = ( +/turf/simulated/wall, +/area/atmos/control) +"jJY" = ( +/obj/machinery/atmospherics/trinary/filter{ + desc = "Отфильтровывает кислород из трубы и отправляет его в камеру хранения"; + dir = 8; + filter_type = 1; + name = "Фильтр Кислорода (O2)"; + on = 1; + target_pressure = 4500 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"jKc" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/brig) +"jKi" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/security{ + name = "Security"; + id_tag = "BrigEnt" + }, +/obj/effect/decal/snow/sand/edge{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "red" + }, +/area/security/lobby) +"jKL" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/security/prison/cell_block/A) +"jKO" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"jKQ" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/main) +"jKU" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/rack, +/obj/item/stack/sheet/mineral/plasma/fifty, +/obj/item/wrench, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"jKW" = ( +/obj/machinery/atmospherics/unary/heat_reservoir/heater{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/atmos) +"jKY" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/quartermaster/sorting) +"jLf" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge/vip) +"jLk" = ( +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = -4; + pixel_y = 4 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"jLl" = ( +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"jLu" = ( +/obj/machinery/door/airlock{ + name = "Chapel Office"; + req_access = list(22) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"jLK" = ( +/obj/machinery/vending/snack, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/securehallway) +"jLZ" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/bluegrid, +/area/turret_protected/ai_upload) +"jMa" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"jMq" = ( +/obj/machinery/vending/snack, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"jMw" = ( +/obj/machinery/message_server, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/tcommsat/chamber) +"jMF" = ( +/obj/machinery/door_control{ + id = "Traiders Windows"; + name = "Traiders Privacy Shutters"; + pixel_x = 26; + pixel_y = 6 + }, +/obj/structure/table/reinforced, +/obj/effect/spawner/lootdrop/officetoys, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) +"jMQ" = ( +/obj/machinery/door/airlock{ + id_tag = "toilet2"; + name = "Toilet" + }, +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/crew_quarters/locker/locker_toilet) +"jMX" = ( +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"jNg" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"jNo" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/machinery/light, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/bar) +"jNr" = ( +/obj/structure/table, +/obj/item/storage/box/papersack, +/obj/item/storage/box/papersack, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"jNK" = ( +/obj/structure/closet/secure_closet/brig{ + id = "Cell 2"; + name = "Cell 2 Locker" + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"jNQ" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"jOk" = ( +/obj/machinery/door/airlock/hatch{ + aiControlDisabled = 1; + hackProof = 1; + req_access = list(160) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"jOo" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"jOt" = ( +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"jOy" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securehallway) +"jOB" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"jOC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/intern, +/obj/structure/chair/comfy/teal{ + dir = 4 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"jOO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/ore_production) +"jPj" = ( +/obj/machinery/autolathe, +/obj/machinery/newscaster{ + pixel_x = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engineering/break_room) +"jPF" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"jPN" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"jPO" = ( +/obj/machinery/sleeper{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitered" + }, +/area/security/medbay) +"jPR" = ( +/obj/vehicle/ridden/snowmobile/key, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"jPZ" = ( +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredcorners" + }, +/area/security/permahallway) +"jQf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/botanist, +/turf/simulated/floor/plasteel{ + icon_state = "hydrofloor" + }, +/area/hydroponics) +"jQJ" = ( +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"jQM" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel/white, +/area/crew_quarters/fitness) +"jQP" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/table/glass, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"jRg" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 5; + name = "Труба фильтрации" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"jRh" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"jRT" = ( +/obj/structure/filingcabinet/filingcabinet, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"jSh" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"jTb" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"jTg" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external{ + id_tag = "ferry_home"; + locked = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"jTA" = ( +/obj/effect/decal/warning_stripes/south, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"jTC" = ( +/obj/structure/table/glass, +/obj/item/clothing/shoes/ducky, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"jTP" = ( +/obj/machinery/door/airlock/mining{ + name = "Mining" + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"jTT" = ( +/obj/effect/decal/cleanable/dust, +/obj/effect/landmark/event/blobstart, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"jTU" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/crew_quarters/mrchangs) +"jUa" = ( +/obj/effect/decal/warning_stripes/east, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"jUd" = ( +/obj/structure/table, +/obj/item/wrench, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/perma) +"jUh" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/rack, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/stack/cable_coil{ + pixel_x = 6; + pixel_y = -2 + }, +/obj/item/stack/cable_coil{ + pixel_x = 1 + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"jUt" = ( +/obj/machinery/door/window/westright{ + name = "Front Desk"; + req_access = list(37) + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/library) +"jUD" = ( +/obj/structure/curtain/open/shower/security{ + alpha = 255; + icon_state = "closed"; + name = "backstage"; + opacity = 1 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"jUL" = ( +/obj/structure/table, +/obj/item/stack/tape_roll{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/item/flashlight, +/obj/item/flashlight, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/entry/lounge) +"jUM" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28 + }, +/obj/machinery/camera{ + c_tag = "Command Departure Checkpoint"; + dir = 8 + }, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"jUP" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/bridge/vip) +"jVh" = ( +/obj/structure/sign/securearea{ + layer = 2.8; + pixel_y = 3 + }, +/turf/simulated/wall/r_wall, +/area/medical/virology/lab) +"jVi" = ( +/obj/structure/table, +/obj/item/hand_labeler, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"jVj" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"jVv" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"jVx" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/security/permabrig) +"jVK" = ( +/obj/effect/decal/warning_stripes/blue, +/obj/structure/closet/firecloset, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"jVM" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Engineering"; + req_access = list(32) + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"jVR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"jVU" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/crate/secure/plasma{ + req_access = list(31,32,50) + }, +/obj/item/stack/sheet/mineral/plasma/fifty, +/obj/item/stack/sheet/mineral/plasma/fifty, +/obj/item/stack/sheet/mineral/plasma/fifty, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/storage/secure) +"jWa" = ( +/obj/structure/curtain/open/shower, +/obj/machinery/shower{ + dir = 1; + layer = 5; + pixel_y = -5 + }, +/obj/effect/mist, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"jWK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/garden) +"jWS" = ( +/obj/effect/decal/ants, +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"jXd" = ( +/turf/simulated/wall, +/area/coldcolony/ruin/mining_post1) +"jXj" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"jXl" = ( +/turf/simulated/wall/shuttle/nosmooth{ + dir = 5; + icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi'; + icon_state = "gray_walls_corners" + }, +/area/shuttle/pirate_corvette) +"jXp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"jXq" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"jXy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/burnturf, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"jXB" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/chemistry) +"jXN" = ( +/obj/structure/grille, +/obj/structure/window/plasmareinforced, +/obj/structure/window/plasmareinforced{ + dir = 4 + }, +/obj/structure/window/plasmareinforced{ + dir = 1 + }, +/obj/structure/window/plasmareinforced{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 1; + name = "Труба дыхательной смеси" + }, +/turf/simulated/floor/plating, +/area/atmos) +"jYb" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/obj/structure/plasticflaps/mining, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"jYc" = ( +/turf/simulated/wall, +/area/hallway/secondary/entry/eastarrival) +"jYi" = ( +/obj/machinery/door/window/eastleft{ + dir = 1; + name = "Hydroponics Desk"; + req_access = list(35) + }, +/obj/structure/flora/ausbushes/lavendergrass, +/turf/simulated/floor/grass, +/area/hydroponics) +"jYs" = ( +/obj/structure/table/reinforced, +/obj/item/stack/packageWrap, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"jYA" = ( +/obj/structure/table/reinforced, +/obj/item/floor_painter, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/light_switch{ + pixel_x = -24; + pixel_y = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"jYF" = ( +/obj/structure/table/reinforced, +/obj/machinery/defibrillator_mount/loaded, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"jYH" = ( +/obj/structure/table/reinforced, +/obj/machinery/processor{ + pixel_y = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"jYJ" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"jYO" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"jZj" = ( +/obj/structure/sign/greencross, +/turf/simulated/wall, +/area/medical/surgery/south) +"jZt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"jZN" = ( +/obj/item/stock_parts/matter_bin{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/capacitor, +/obj/item/stock_parts/scanning_module, +/obj/item/stock_parts/micro_laser, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/manipulator, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/toxins/lab) +"jZZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"kan" = ( +/obj/structure/mineral_door/wood, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"kap" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/disposaloutlet, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"kat" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/hallway/primary/central/nw) +"kau" = ( +/obj/structure/fence/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes{ + dir = 10 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"kaE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/ntrep) +"kaH" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"kaS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"kbj" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/hallway/primary/fore) +"kbk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"kbl" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"kbw" = ( +/obj/machinery/newscaster{ + pixel_x = -30 + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"kbA" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "Bar"; + name = "Bar Privacy Shutters" + }, +/turf/simulated/floor/wood/fancy/light{ + icon_state = "light-fancy-wood-broken" + }, +/area/crew_quarters/bar) +"kbC" = ( +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"kbF" = ( +/obj/effect/baseturf_helper/asteroid, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/evidence) +"kbH" = ( +/obj/structure/table/wood, +/obj/item/mining_scanner, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"kbP" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/plant_analyzer, +/obj/item/reagent_containers/spray/plantbgone, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/permabrig) +"kbR" = ( +/obj/structure/table/wood, +/obj/machinery/kitchen_machine/microwave{ + pixel_x = -1; + pixel_y = 7 + }, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"kbY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/brig) +"kci" = ( +/obj/machinery/atmospherics/unary/cold_sink/freezer{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/atmos) +"kcz" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"kcE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"kcF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/machinery/light, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-cherry" + }, +/area/crew_quarters/trading) +"kcG" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"kcN" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"kdg" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/structure/inflatable{ + layer = 3.1 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"kdv" = ( +/obj/machinery/atmospherics/binary/pump/on{ + desc = "Отправляет дыхательную смесь из трубы распространяться по инженерии через вентиляции"; + name = "Дыхательную смесь в систему инженерии"; + target_pressure = 303.325; + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "caution" + }, +/area/atmos) +"kdH" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"kdK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"keb" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-cherry" + }, +/area/crew_quarters/trading) +"kew" = ( +/obj/structure/bookcase, +/obj/item/book/manual/faxes, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"key" = ( +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"keF" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "Clown"; + name = "Clown Privacy Shutters" + }, +/turf/simulated/floor/plating, +/area/clownoffice) +"keK" = ( +/obj/structure/weightmachine/weightlifter, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/permabrig) +"keL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"keQ" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "Cargo Office Windows"; + name = "Cargo Office Shutters"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/quartermaster/office) +"keU" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"keV" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"kfb" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light, +/turf/simulated/floor/plating, +/area/hallway/primary/central/nw) +"kfo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"kfv" = ( +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/hydroponics) +"kfO" = ( +/obj/structure/dresser, +/turf/simulated/floor/plasteel{ + icon_state = "bcarpet05" + }, +/area/blueshield) +"kgc" = ( +/obj/structure/fence/door, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"kgd" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge/vip) +"kgr" = ( +/turf/simulated/floor/carpet/royalblack, +/area/bridge) +"kgt" = ( +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/fitness) +"kgv" = ( +/obj/machinery/atmospherics/trinary/filter{ + desc = "Отфильтровывает оксид азота из трубы и отправляет его в камеру хранения."; + filter_type = 4; + name = "Фильтр Оксида Азота (NO2)"; + on = 1; + target_pressure = 4500 + }, +/obj/effect/decal/warning_stripes/east, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "caution" + }, +/area/atmos) +"kgB" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood/fancy/cherry, +/area/library/game_zone) +"kgR" = ( +/obj/structure/table, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_lab) +"khg" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood/fancy/light{ + icon_state = "light-fancy-wood-broken3" + }, +/area/crew_quarters/bar) +"khi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/bridge/vip) +"khn" = ( +/obj/structure/toilet{ + dir = 8; + layer = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/sign/poster/contraband/pinup_syn{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/shuttle/pirate_corvette) +"khv" = ( +/obj/item/gun/projectile/revolver/doublebarrel, +/obj/structure/closet/secure_closet/cabinet, +/obj/effect/decal/cleanable/dirt, +/obj/item/ammo_box/shotgun/buck, +/turf/simulated/floor/wood/fancy/cherry, +/area/ruin/unpowered) +"khJ" = ( +/turf/simulated/wall, +/area/coldcolony/ruin/miningbar) +"kiI" = ( +/obj/machinery/atmospherics/unary/vent_pump{ + external_pressure_bound = 0; + external_pressure_bound_default = 0; + frequency = 1441; + id_tag = "o2_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + internal_pressure_bound_default = 4000; + name = "oxygen vent"; + on = 1; + pressure_checks = 2; + pressure_checks_default = 2; + releasing = 0 + }, +/turf/simulated/floor/engine/o2{ + oxygen = 10000 + }, +/area/atmos) +"kja" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_chamber) +"kjg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/newscaster{ + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"kjq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/photocopier, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"kjz" = ( +/obj/structure/dresser, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/crew_quarters/cabin1) +"kjF" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"kjH" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + name = "Restaurant" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/maintenance/kitchen) +"kjI" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"kkd" = ( +/obj/structure/dresser, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/crew_quarters/cabin1) +"kke" = ( +/obj/structure/table/reinforced, +/obj/item/storage/belt/utility, +/obj/item/storage/belt/utility, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) +"kkf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brig) +"kkh" = ( +/obj/structure/dresser, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"kki" = ( +/obj/effect/decal/cleanable/spiderling_remains, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"kkr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"kkt" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/grenade/barrier{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/grenade/barrier, +/obj/item/grenade/barrier{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/barrier{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"kkD" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/light_switch{ + pixel_x = -24; + pixel_y = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/permabrig) +"kkP" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/theatre) +"kkV" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/bottle/vodka, +/obj/item/reagent_containers/food/drinks/drinkingglass, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkyellow" + }, +/area/bridge/vip) +"kll" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"klm" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/execution) +"klv" = ( +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"klD" = ( +/obj/structure/rack, +/obj/item/pickaxe, +/obj/item/pickaxe, +/obj/item/pickaxe, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"klF" = ( +/obj/effect/decal/rail_way{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"klG" = ( +/obj/structure/closet/crate/miningcar{ + name = "mining car" + }, +/obj/item/stack/ore/diamond{ + amount = 3 + }, +/obj/item/stack/ore/glass{ + amount = 21 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"klL" = ( +/obj/machinery/optable, +/obj/machinery/light, +/turf/simulated/floor/plasteel, +/area/assembly/robotics) +"kmf" = ( +/obj/structure/chair/sofa/right, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/bar/atrium) +"kmi" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/brig) +"kmm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/flour, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"kmG" = ( +/obj/machinery/computer/shuttle, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"knb" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/permahallway) +"kno" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/toilet4) +"knp" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/crew_quarters/chief) +"knr" = ( +/obj/machinery/door_control{ + desiredstate = 1; + id = "toilet3"; + name = "Toilet Bolt Control"; + normaldoorcontrol = 1; + specialfunctions = 4; + pixel_y = -24 + }, +/obj/structure/toilet{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/toilet4) +"kns" = ( +/obj/effect/mob_spawn/human/corpse/damaged, +/obj/effect/decal/cleanable/blood/gibs/limb, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"knO" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "rdprivacy"; + name = "Research Director Office Shutters" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/hor) +"knQ" = ( +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"koe" = ( +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"koh" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/toxins/explab) +"koo" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"koN" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/security/lobby) +"koV" = ( +/obj/structure/closet/crate/medical, +/obj/item/folder/white, +/obj/item/reagent_containers/dropper/precision, +/obj/item/storage/fancy/vials{ + pixel_x = 3; + pixel_y = 4 + }, +/obj/item/storage/box/gloves, +/obj/item/healthanalyzer, +/obj/item/clothing/glasses/hud/health, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"kpb" = ( +/obj/item/shard{ + icon_state = "small" + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken6" + }, +/area/coldcolony/ruin/abandoned_house) +"kpt" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/atmos) +"kpE" = ( +/obj/structure/bed, +/obj/item/bedsheet/red, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"kpG" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/dropper, +/obj/item/reagent_containers/dropper/precision, +/obj/item/storage/box/pillbottles{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/reagent_scanner/adv, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"kpJ" = ( +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plasteel, +/area/toxins/xenobiology) +"kqb" = ( +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"kqc" = ( +/obj/machinery/door_control{ + id = "engstorage"; + name = "Engineering Secure Storage Control"; + pixel_x = 8; + pixel_y = -24; + req_access = list(32) + }, +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, +/obj/effect/decal/warning_stripes/northwest, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"kqy" = ( +/obj/machinery/papershredder, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"kqU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"krg" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/fore) +"kri" = ( +/obj/machinery/vending/artvend, +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"kro" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"krZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"ksb" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/kitchen) +"ksd" = ( +/obj/structure/weightmachine/weightlifter, +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/turf/simulated/floor/plasteel/white, +/area/crew_quarters/fitness) +"ksl" = ( +/obj/machinery/door/airlock/external{ + hackProof = 1; + id_tag = "emergency_home"; + locked = 1; + name = "Security Escape Airlock"; + req_access = list(63) + }, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/exit) +"ksm" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"ksp" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/item/storage/belt/utility, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/tcommsat/chamber) +"ksv" = ( +/obj/structure/bed, +/obj/item/bedsheet/fluff, +/turf/simulated/floor/wood/fancy/cherry, +/area/ruin/unpowered) +"ksz" = ( +/obj/machinery/door/airlock/wood/glass{ + name = "Mr. Chang's" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"ksO" = ( +/obj/structure/sign/poster/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"ksP" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/item/clothing/suit/hooded/wintercoat/medical, +/obj/item/storage/belt/medical, +/obj/item/clothing/glasses/hud/health, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/cmostore) +"ksQ" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/rack, +/obj/item/circuitboard/communications{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/circuitboard/card{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/item/circuitboard/borgupload{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/circuitboard/chem_dispenser{ + pixel_x = 5; + pixel_y = -5 + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) +"ksR" = ( +/obj/item/screwdriver, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"ksU" = ( +/obj/structure/rack, +/obj/random/tool, +/obj/random/tool, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"ktp" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/obj/effect/turf_decal/weather/snow/corner, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"ktw" = ( +/turf/simulated/floor/carpet, +/area/maintenance/casino) +"ktH" = ( +/obj/machinery/flasher{ + desc = "A floor-mounted flashbulb device."; + id = "permacell2"; + layer = 5; + range = 3; + pixel_x = 24 + }, +/turf/simulated/floor/plating, +/area/security/permahallway) +"ktN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos) +"ktO" = ( +/obj/effect/decal/warning_stripes/north, +/obj/structure/table/reinforced, +/obj/machinery/photocopier/faxmachine/longrange{ + department = "Chief Engineer's Office" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/chief) +"kua" = ( +/turf/simulated/wall/r_wall, +/area/medical/cmo) +"kue" = ( +/obj/structure/table, +/obj/item/folder/yellow, +/obj/item/folder{ + pixel_x = 3; + pixel_y = 2 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/quartermaster/office) +"kui" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/atmos) +"kuC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"kuG" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/hop) +"kuQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/ore_production) +"kuV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/customs) +"kvg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"kvq" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/effect/decal/snow/sand/edge{ + dir = 6 + }, +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"kvD" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"kvQ" = ( +/obj/machinery/vending/boozeomat, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"kvS" = ( +/obj/effect/decal/warning_stripes/red/partial{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/exit) +"kvT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) +"kvW" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permahallway) +"kwb" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"kwm" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"kwC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"kwE" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/effect/decal/warning_stripes/blue/hollow, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/research) +"kwI" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/hallway/primary/starboard/east) +"kwO" = ( +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"kxd" = ( +/turf/simulated/wall/r_wall/rust, +/area/magistrateoffice) +"kxf" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkredcorners" + }, +/area/security/brig) +"kxq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"kxs" = ( +/obj/machinery/power/smes{ + charge = 4e+006; + output_level = 20000 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"kxw" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/space_heater, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "yellow" + }, +/area/engineering/break_room) +"kxD" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "researchdesk1"; + name = "Research Desk Shutters" + }, +/turf/simulated/floor/plating, +/area/toxins/lab) +"kxO" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securehallway) +"kxX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"kyq" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/wood/oak, +/area/civilian/vacantoffice) +"kyy" = ( +/obj/machinery/door/airlock/command{ + name = "Command" + }, +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkblue" + }, +/area/hallway/primary/fore) +"kyz" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/broken{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"kyE" = ( +/obj/structure/wooden_sign{ + name = "GET THE FUCK OUT!" + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"kyF" = ( +/obj/effect/turf_decal/weather/snow/corner, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"kyR" = ( +/obj/structure/table, +/obj/item/camera, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"kyS" = ( +/obj/machinery/door/airlock/research{ + name = "Chemical Testing Room"; + req_access = list(47) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"kyZ" = ( +/obj/structure/mineral_door/wood, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/ruin/unpowered) +"kzc" = ( +/turf/simulated/wall/r_wall, +/area/security/warden) +"kzi" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/security/medbay) +"kzm" = ( +/obj/machinery/roboquest_pad, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/light_switch{ + pixel_x = -24 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"kzp" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 4; + name = "Труба фильтрации" + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 1; + name = "Труба смешивания" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Atmospherics North"; + dir = 6; + network = list("SS13","Engineering") + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"kzA" = ( +/obj/machinery/power/apc{ + cell_type = 5000; + name = "Important area power controller"; + pixel_y = -26 + }, +/obj/structure/cable, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) +"kzF" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/warning_stripes/blue, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"kzJ" = ( +/obj/effect/turf_decal/bot/left, +/obj/effect/turf_decal/bot/right, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/sorting) +"kAm" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 1; + name = "Труба смешивания" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"kAE" = ( +/obj/structure/closet/crate/miningcar{ + name = "mining car" + }, +/obj/item/stack/ore/iron{ + amount = 14 + }, +/obj/item/stack/ore/plasma{ + amount = 7 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"kAP" = ( +/obj/structure/flora/grass/both, +/turf/simulated/floor/plating/asteroid, +/area/coldcolony/ruin/miningeva) +"kBe" = ( +/obj/structure/chair/comfy/brown, +/obj/effect/landmark/start/captain, +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain) +"kBk" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/plasteel{ + icon_state = "darkbrown"; + dir = 10 + }, +/area/bridge/vip) +"kBl" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken3" + }, +/area/coldcolony/ruin/abandoned_banya) +"kBy" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"kBE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"kBV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkbluecorners" + }, +/area/bridge/meeting_room) +"kBZ" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"kCh" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel/white, +/area/medical/chemistry) +"kCl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/exit) +"kCs" = ( +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"kCF" = ( +/turf/simulated/wall/mineral/wood/nonmetal, +/area/coldcolony/ruin/abandoned_banya) +"kCH" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/hallway/secondary/exit) +"kCO" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"kDa" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"kDj" = ( +/turf/simulated/wall, +/area/hydroponics) +"kDm" = ( +/obj/effect/decal/warning_stripes/northwest, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/outlet_injector/on{ + dir = 1 + }, +/turf/simulated/floor/engine, +/area/security/execution) +"kDq" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Mining Station EVA"; + req_access = list(54) + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"kDz" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"kDV" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"kEh" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"kEl" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Bridge Maintenance"; + req_access = list(26,32,17) + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"kEs" = ( +/obj/structure/closet/l3closet/virology, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/decal/warning_stripes/northwest, +/turf/simulated/floor/plasteel, +/area/medical/virology/lab) +"kEA" = ( +/obj/machinery/shower{ + dir = 4; + tag = "icon-shower (EAST)" + }, +/obj/structure/curtain/open/shower, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/locker/locker_toilet) +"kEB" = ( +/turf/simulated/wall/rust, +/area/engineering/engine) +"kEJ" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Library" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"kEQ" = ( +/turf/simulated/floor/wood, +/area/coldcolony/morgue) +"kEX" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/toxins/explab) +"kFf" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"kFh" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"kFy" = ( +/obj/structure/closet/walllocker/emerglocker/south, +/obj/item/reagent_containers/food/pill/patch/silver_sulf, +/obj/item/reagent_containers/food/pill/patch/silver_sulf, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/turf/simulated/floor/plasteel, +/area/medical/research) +"kFX" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"kGd" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/item/light/tube{ + icon_state = "ltube-broken"; + status = 2 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/toxins/explab) +"kGe" = ( +/turf/simulated/floor/plating, +/area/coldcolony/ruin/miningbar) +"kGj" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/main) +"kGl" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker/locker_toilet) +"kGw" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/machinery/vending/cart, +/turf/simulated/floor/carpet/arcade, +/area/crew_quarters/fitness) +"kGC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/security/permabrig) +"kGV" = ( +/obj/structure/table, +/obj/item/folder{ + pixel_y = 3 + }, +/obj/item/folder/yellow{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/processing) +"kGW" = ( +/obj/structure/table, +/obj/item/deck/cards/tiny, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"kHp" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"kHt" = ( +/obj/structure/chair/sofa, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/theatre) +"kHA" = ( +/obj/structure/table/wood, +/obj/item/newspaper, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"kHB" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"kHC" = ( +/obj/machinery/computer/monitor, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"kHD" = ( +/obj/machinery/door/airlock{ + id_tag = "magistrateoffice"; + name = "Magistrate's Office"; + req_access = list(74) + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"kHL" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/effect/landmark/start/chemist, +/turf/simulated/floor/plasteel/white, +/area/medical/chemistry) +"kIu" = ( +/obj/structure/table, +/obj/item/storage/box/bodybags/biohazard, +/obj/item/storage/box/bodybags{ + pixel_x = 6; + pixel_y = 3 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"kIy" = ( +/obj/structure/barricade/wooden{ + opacity = 1 + }, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"kII" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"kIR" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 1; + name = "Труба фильтрации" + }, +/obj/effect/decal/warning_stripes/east, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "caution" + }, +/area/atmos) +"kJj" = ( +/turf/simulated/wall, +/area/engineering/break_room) +"kJn" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/condiment/enzyme{ + layer = 5; + pixel_y = 14 + }, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"kJp" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/random/tool, +/obj/random/tool, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/tcommsat/chamber) +"kKm" = ( +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"kKq" = ( +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"kKA" = ( +/obj/machinery/door/airlock/command{ + name = "Head of Personnel Bedroom"; + req_access = list(57) + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"kKH" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"kKK" = ( +/obj/structure/closet, +/obj/item/weldingtool, +/obj/item/clothing/head/welding/slavic, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"kKR" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/hallway/primary/fore) +"kKW" = ( +/obj/structure/closet/secure_closet/hop, +/obj/item/clothing/suit/hooded/wintercoat/hop, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/heads/hop) +"kKX" = ( +/obj/machinery/door/window/brigdoor/southright{ + dir = 1; + name = "Security Checkpoint"; + req_access = list(1) + }, +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel, +/area/security/checkpoint) +"kLa" = ( +/turf/simulated/wall, +/area/security/medbay) +"kLt" = ( +/obj/effect/turf_decal/arrows{ + pixel_y = 14 + }, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"kLN" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) +"kLR" = ( +/obj/machinery/iv_drip, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkpurple" + }, +/area/medical/virology/lab) +"kLT" = ( +/obj/effect/decal/warning_stripes/east, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"kLU" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"kLV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"kMa" = ( +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"kMe" = ( +/obj/effect/decal/warning_stripes/east, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"kMC" = ( +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"kML" = ( +/obj/structure/chair/sofa/pew/left{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "chapel" + }, +/area/chapel/main) +"kMS" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 6; + name = "Труба дыхательной смеси" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"kNl" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/candle_box/full{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/storage/fancy/candle_box/full, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"kNA" = ( +/obj/structure/disposalpipe/junction/reversed{ + dir = 2 + }, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"kNG" = ( +/turf/simulated/wall/rust, +/area/quartermaster/qm) +"kNO" = ( +/obj/effect/turf_decal/stripes{ + dir = 1 + }, +/obj/structure/fence/post, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"kNU" = ( +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"kNZ" = ( +/turf/simulated/floor/plasteel, +/area/crew_quarters/locker) +"kOf" = ( +/obj/structure/sign/poster/official/random, +/turf/simulated/wall/rust, +/area/library/game_zone) +"kOg" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "HoSPriv"; + name = "HoS Office Privacy Shutters" + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "Brig_lockdown"; + name = "Brig Lockdown" + }, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/security/hos) +"kOh" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/syndie_outpost) +"kOw" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin2) +"kOy" = ( +/turf/simulated/wall, +/area/assembly/chargebay) +"kOS" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/security/processing) +"kOU" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Bar Maintenance"; + req_access = list(25) + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"kOX" = ( +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"kOZ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/eastarrival) +"kPE" = ( +/obj/machinery/atmospherics/air_sensor{ + id_tag = "n2_sensor" + }, +/obj/machinery/camera{ + c_tag = "Atmospherics Nitrogen Tank"; + network = list("SS13","Engineering") + }, +/turf/simulated/floor/engine/n2{ + nitrogen = 10000 + }, +/area/atmos) +"kPI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredfull" + }, +/area/security/main) +"kPK" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"kPU" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/snow/sand/edge, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"kQo" = ( +/obj/structure/dresser, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"kQJ" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"kQX" = ( +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/qm) +"kRy" = ( +/obj/structure/table/reinforced, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/obj/item/storage/toolbox/mechanical, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/permahallway) +"kRC" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"kSc" = ( +/obj/structure/closet/secure_closet/security, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/reception) +"kSd" = ( +/obj/structure/closet/secure_closet/brig, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/permabrig) +"kSi" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"kSk" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/light_switch{ + pixel_x = 24; + pixel_y = 8 + }, +/obj/item/radio/intercom{ + pixel_x = 28; + pixel_y = -8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"kSr" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/white{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"kSv" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/vending/wallmed{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/hallway/secondary/exit) +"kSN" = ( +/obj/structure/chair/office/dark, +/obj/machinery/keycard_auth{ + pixel_x = 28; + pixel_y = -24 + }, +/obj/machinery/button/windowtint{ + id = "hopqueuewindows"; + pixel_x = 40; + pixel_y = -24 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"kSP" = ( +/obj/structure/closet/firecloset, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"kSU" = ( +/obj/machinery/atmospherics/air_sensor{ + id_tag = "mix_sensor"; + output = 127 + }, +/obj/machinery/camera{ + c_tag = "Atmospherics Gas Mix Tank"; + network = list("SS13","Engineering") + }, +/turf/simulated/floor/engine/vacuum, +/area/atmos) +"kTs" = ( +/obj/item/pickaxe, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"kUj" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/sleep) +"kUt" = ( +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"kUv" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/permabrig) +"kUC" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/reception) +"kUM" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"kUO" = ( +/obj/structure/flora/grass/both, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"kVg" = ( +/obj/structure/rack, +/obj/item/stack/cable_coil, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/stack/sheet/glass{ + amount = 4 + }, +/obj/item/flashlight, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"kVl" = ( +/obj/structure/table_frame, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"kVr" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permahallway) +"kVL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"kVY" = ( +/obj/effect/decal/snow/sand/edge, +/obj/machinery/station_map/directional/south, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/secondary/entry/lounge) +"kWn" = ( +/obj/structure/plasticflaps/mining, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) +"kWr" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"kWx" = ( +/turf/simulated/wall/rust, +/area/toxins/test_chamber) +"kWD" = ( +/obj/structure/closet/firecloset, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"kWE" = ( +/turf/simulated/floor/plasteel{ + icon_state = "whitepurplefull" + }, +/area/medical/research) +"kWZ" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/processing) +"kXf" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/tcommsat/chamber) +"kXh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellowcorners" + }, +/area/bridge/vip) +"kXn" = ( +/obj/structure/spider/stickyweb, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"kXp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"kXq" = ( +/obj/structure/table/reinforced, +/obj/machinery/door_control{ + id = "piratehutters"; + name = "Shutters"; + req_access = list(160); + pixel_y = 6; + pixel_x = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/shuttle/pirate_corvette) +"kXC" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"kXE" = ( +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"kXI" = ( +/turf/simulated/wall/mineral/abductor, +/area/coldcolony/ruin/abandoned_house) +"kXM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/coldcolony/ruin/abandoned_garage) +"kXN" = ( +/obj/structure/table, +/obj/structure/alien/weeds, +/obj/item/reagent_containers/food/pill/patch/silver_sulf{ + pixel_x = -5; + pixel_y = -3 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"kXQ" = ( +/turf/simulated/wall, +/area/maintenance/garden) +"kYn" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/crew_quarters/chief) +"kYr" = ( +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"kYD" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"kYH" = ( +/obj/effect/decal/warning_stripes/east, +/obj/machinery/computer/card/minor/ce, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/chief) +"kZa" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/lobby) +"kZb" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"kZZ" = ( +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = 4; + pixel_y = 16 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"law" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "Cargo Office Windows"; + name = "Cargo Office Shutters" + }, +/turf/simulated/floor/plating, +/area/quartermaster/office) +"laB" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"laK" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/simulated/floor/wood/fancy/cherry{ + icon_state = "fancy-wood-cherry-broken2" + }, +/area/library) +"lbh" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/snacks/candy/coin, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken5" + }, +/area/coldcolony/ruin/abandoned_banya) +"lbI" = ( +/obj/structure/flora/grass/brown, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"lbV" = ( +/obj/effect/mob_spawn/human/abductor, +/obj/item/reagent_containers/glass/bottle/abductor/rezadone, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"lcc" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/customs) +"lce" = ( +/obj/machinery/conveyor_switch/oneway{ + dir = 8; + id = "QMLoad2"; + name = "Download" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) +"lci" = ( +/obj/structure/table, +/obj/item/storage/box/ids, +/obj/item/radio/intercom{ + pixel_y = -26 + }, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"lco" = ( +/obj/structure/disposaloutlet{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"lcu" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/head/fedora, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"lcz" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 10 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"lcW" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/head/helmet/alt, +/obj/item/clothing/shoes/jackboots/armored, +/obj/item/clothing/gloves/color/black/ballistic, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"ldk" = ( +/obj/structure/sign/electricshock, +/turf/simulated/wall, +/area/maintenance/apmaint) +"ldL" = ( +/obj/structure/closet/wardrobe/pink, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"ldP" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/warning_stripes/blue, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"ldR" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"lex" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/machinery/power/apc{ + pixel_y = 26; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"leE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"leK" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"lfa" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"lfj" = ( +/obj/structure/sink/kitchen{ + pixel_y = 24 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"lfk" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"lfn" = ( +/obj/docking_port/mobile{ + height = 17; + id = "pirateship"; + name = "Pirate Corvette"; + rebuildable = 1; + width = 19; + dheight = 8; + dir = 2 + }, +/obj/docking_port/stationary{ + height = 17; + id = "pirateship_planet"; + name = "Planet"; + width = 19; + pixel_x = 20; + area_type = /area/ruin/unpowered/coldcolony_outside; + turf_type = /turf/simulated/floor/plating/asteroid/snow/atmosphere; + dheight = 8; + dir = 2 + }, +/obj/effect/turf_decal/caution{ + dir = 4; + do_not_delete_me = 1 + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel/airless{ + icon_state = "podfloor_light"; + icon_regular_floor = "podfloor_light" + }, +/area/shuttle/pirate_corvette) +"lfw" = ( +/obj/effect/turf_decal/arrows, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"lfB" = ( +/obj/machinery/door/airlock/medical{ + name = "Genetics Lab"; + req_access = list(9,47) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"lfP" = ( +/obj/effect/decal/cleanable/blood/writing, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"lfQ" = ( +/obj/machinery/door/airlock/research{ + name = "Research Division Access"; + req_access = list(47) + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"lfS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"lgA" = ( +/obj/machinery/atmospherics/binary/pump/on{ + target_pressure = 303.325; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"lgB" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"lgI" = ( +/turf/simulated/wall/r_wall, +/area/security/hos) +"lgT" = ( +/turf/simulated/wall/r_wall, +/area/security/securearmory) +"lhg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/lounge) +"lhp" = ( +/obj/structure/filingcabinet/chestdrawer{ + anchored = 0 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"lhq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/maintenance/kitchen) +"lhv" = ( +/obj/effect/decal/warning_stripes/west{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding8" + }, +/obj/effect/decal/warning_stripes/west{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding4" + }, +/obj/machinery/door/window/eastleft{ + dir = 1; + name = "Hydroponics Desk"; + req_access = list(35) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "asteroid" + }, +/area/hydroponics) +"lhF" = ( +/obj/machinery/light_construct{ + dir = 4 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"lhW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"lij" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker/locker_toilet) +"ljc" = ( +/turf/simulated/wall/r_wall/rust, +/area/bridge) +"ljo" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/customs) +"ljq" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"ljy" = ( +/obj/structure/flora/grass/brown, +/obj/item/vending_refill/pai, +/obj/structure/closet/crate/sci, +/obj/item/circuitboard/vendor, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"ljE" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/processing) +"ljK" = ( +/obj/structure/fans/tiny, +/obj/effect/decal/snow/sand/edge{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/poddoor/shutters{ + id_tag = "comgarage"; + dir = 2 + }, +/obj/machinery/door_control{ + id = "comgarage"; + pixel_x = -24 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"ljL" = ( +/turf/simulated/wall/rust, +/area/assembly/robotics) +"ljY" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/hop) +"lkm" = ( +/obj/effect/landmark/start/engineer, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) +"lkO" = ( +/turf/simulated/wall, +/area/maintenance/fsmaint) +"lkR" = ( +/obj/structure/table/wood, +/obj/item/trash/broken_ashtray, +/turf/simulated/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/kitchen) +"llx" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/ruin/unpowered) +"llK" = ( +/obj/structure/table/glass, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/ai_module/freeformcore{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ai_module/robocop, +/obj/item/ai_module/paladin{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"llL" = ( +/obj/machinery/power/apc/noalarm{ + name = "Pirate Corvette APC"; + pixel_y = -28; + req_access = list(160) + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/rack, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/item/storage/belt/utility/full/multitool, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"llN" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "darkpurple" + }, +/area/bridge/vip) +"llU" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkbluecorners" + }, +/area/bridge/vip) +"lma" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/slot_machine, +/turf/simulated/floor/plating, +/area/maintenance/casino) +"lmc" = ( +/turf/simulated/wall/rust, +/area/quartermaster/office) +"lmr" = ( +/obj/effect/decal/warning_stripes/south, +/obj/structure/closet/emcloset, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/virology/lab) +"lmw" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securehallway) +"lmB" = ( +/obj/machinery/power/port_gen/pacman, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/abandoned_garage) +"lmX" = ( +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 4; + external_pressure_bound = 0; + external_pressure_bound_default = 0; + frequency = 1441; + id_tag = "mix_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + internal_pressure_bound_default = 4000; + layer = 2.4; + name = "mix vent"; + on = 1; + pressure_checks = 2; + pressure_checks_default = 2; + releasing = 0 + }, +/turf/simulated/floor/engine/vacuum, +/area/atmos) +"lnm" = ( +/obj/structure/closet/crate/medical, +/obj/item/reagent_containers/glass/bottle/charcoal, +/obj/item/reagent_containers/applicator/burn, +/obj/item/reagent_containers/glass/bottle/iodine, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"lnp" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"lnu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/office) +"lnI" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 4; + name = "Труба дыхательной смеси" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "caution" + }, +/area/atmos) +"lnR" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"lnX" = ( +/obj/machinery/vending/cigarette{ + obj_integrity = 95; + stat = 1 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"loD" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredfull" + }, +/area/security/warden) +"loL" = ( +/obj/machinery/computer/account_database, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"loR" = ( +/obj/structure/bed, +/obj/item/bedsheet/red, +/obj/machinery/flasher{ + id = "Cell 5"; + name = "Cell 5 Flasher"; + pixel_y = 28 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"loV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/permabrig) +"lpk" = ( +/obj/structure/disposaloutlet{ + dir = 8 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"lpX" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/landmark/ninja_teleport, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"lqk" = ( +/turf/simulated/wall, +/area/security/main) +"lqy" = ( +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"lqC" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"lqH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/stamp/cmo, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Chief Medical Officer's Desk"; + departmentType = 5; + name = "Chief Medical Officer Requests Console"; + pixel_x = 30 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/cmo) +"lqR" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/vehicle/ridden/snowmobile/key, +/obj/effect/decal/warning_stripes/arrow{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"lqW" = ( +/obj/structure/closet/crate/trashcart, +/obj/effect/spawner/lootdrop/maintenance/double, +/obj/item/circuitboard/operating, +/obj/item/hand_labeler, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"lqX" = ( +/turf/simulated/wall, +/area/mimeoffice) +"lrh" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"lrr" = ( +/obj/structure/table/wood, +/obj/item/ammo_box/shotgun/beanbag, +/obj/item/gun/projectile/revolver/doublebarrel, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/bar) +"lrv" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wideplating/corner{ + color = "#332a2a"; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"lrw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"lrK" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/security/reception) +"lrX" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/bottle/patron{ + pixel_y = 7 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/bar/atrium) +"lsc" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/permabrig) +"lsi" = ( +/turf/simulated/wall/rust, +/area/crew_quarters/locker) +"lta" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/brigdoor{ + armor = list("melee"=60,"bullet"=70,"laser"=70,"energy"=70,"bomb"=40,"bio"=100,"rad"=100,"fire"=70,"acid"=100); + name = "Secure Armory"; + req_access = list(1); + base_state = "rightsecure"; + icon_state = "rightsecure" + }, +/obj/machinery/door/window/brigdoor{ + armor = list("melee"=60,"bullet"=70,"laser"=70,"energy"=70,"bomb"=40,"bio"=100,"rad"=100,"fire"=70,"acid"=100); + dir = 8; + name = "Secure Armory"; + req_access = list(3) + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "ArmoryLock"; + name = "Armory Lockdown" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters{ + dir = 8; + id_tag = "ArmorySec"; + layer = 5; + name = "Armory Security Shutters" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"ltw" = ( +/obj/structure/fans/tiny, +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/obj/machinery/door/airlock/command{ + req_access = list(19); + name = "Command Room" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"lty" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkredfull" + }, +/area/shuttle/pirate_corvette) +"ltJ" = ( +/obj/machinery/atmospherics/binary/valve/digital, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/execution) +"ltV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"lub" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"lux" = ( +/obj/structure/chair/sofa/pew/left{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "chapel" + }, +/area/chapel/main) +"luE" = ( +/obj/machinery/photocopier, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/primary/fore) +"luV" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"luW" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/electrical, +/obj/item/clothing/head/welding, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/tcommsat/chamber) +"lvj" = ( +/obj/machinery/suit_storage_unit/lavaland, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"lvz" = ( +/obj/structure/sign/greencross, +/turf/simulated/wall, +/area/medical/medbay2) +"lvI" = ( +/obj/structure/disposalpipe/junction/reversed{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/brig) +"lvY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"lwb" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/closet/crate/engineering, +/obj/item/circuitboard/chem_master, +/obj/item/circuitboard/pandemic, +/obj/item/stack/sheet/metal{ + amount = 14 + }, +/obj/item/stack/sheet/glass{ + amount = 6 + }, +/obj/item/stack/cable_coil{ + amount = 11 + }, +/obj/item/stock_parts/manipulator, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"lwg" = ( +/obj/structure/table, +/obj/item/reagent_containers/hypospray/autoinjector/stimpack, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "arrival" + }, +/area/shuttle/pirate_corvette) +"lwA" = ( +/obj/structure/chair/office/light, +/obj/effect/landmark/start/research_director, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whitepurple" + }, +/area/crew_quarters/hor) +"lwI" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/manifold/hidden, +/turf/simulated/floor/plating, +/area/toxins/server) +"lwY" = ( +/obj/structure/closet/secure_closet/medical2, +/obj/machinery/light_switch{ + pixel_x = -8; + pixel_y = -24 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"lxa" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/beer, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"lxw" = ( +/obj/effect/decal/warning_stripes/west, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"lxG" = ( +/obj/structure/table, +/obj/item/storage/firstaid/regular, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/permabrig) +"lxT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/toxins/xenobiology) +"lxY" = ( +/obj/item/clothing/suit/fluff/dusty_jacket, +/obj/structure/closet/wardrobe, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"lyd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"lyx" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteredfull" + }, +/area/security/medbay) +"lyE" = ( +/mob/living/simple_animal/pet/dog/fox/forest/winter, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"lyQ" = ( +/turf/simulated/wall, +/area/security/checkpoint) +"lyU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge/vip) +"lyY" = ( +/obj/machinery/computer/card, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"lzr" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"lzU" = ( +/turf/simulated/wall, +/area/security/processing) +"lAc" = ( +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/coldcolony/ruin/abandoned_garage) +"lAf" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = -2; + pixel_y = 7 + }, +/obj/item/pen, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/grimy, +/area/civilian/vacantoffice) +"lAl" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/syndie_outpost) +"lAx" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/white, +/area/medical/cmostore) +"lAC" = ( +/obj/machinery/door_timer/cell_3{ + dir = 1; + pixel_x = -32 + }, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"lAF" = ( +/obj/effect/turf_decal/caution{ + dir = 4; + do_not_delete_me = 1 + }, +/obj/machinery/light/small{ + dir = 1; + pixel_x = 8 + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel/airless{ + icon_state = "podfloor_light"; + icon_regular_floor = "podfloor_light" + }, +/area/shuttle/pirate_corvette) +"lAI" = ( +/obj/structure/chair/office/dark, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/reception) +"lAM" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"lAO" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"lAY" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/brig) +"lBg" = ( +/turf/simulated/wall/r_wall, +/area/turret_protected/ai_upload) +"lBz" = ( +/obj/structure/table/glass, +/obj/machinery/door_control{ + id = "Genetics"; + name = "Genetic Privacy Shutters Control"; + pixel_x = -24; + pixel_y = -8 + }, +/obj/item/stock_parts/scanning_module, +/obj/effect/decal/cleanable/dust, +/obj/machinery/light_switch{ + pixel_x = -21; + pixel_y = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"lCf" = ( +/obj/structure/chair/comfy/teal, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"lCh" = ( +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Departure Lounge"; + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"lCy" = ( +/obj/machinery/computer/message_monitor, +/obj/machinery/camera/motion{ + c_tag = "AI Upload Chamber"; + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"lCB" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + dir = 10 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"lCC" = ( +/obj/structure/grille/broken, +/obj/effect/decal/snow/sand/edge{ + dir = 6 + }, +/obj/effect/decal/snow/sand/edge{ + dir = 8 + }, +/obj/item/stack/rods, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"lCK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "whitepurplefull" + }, +/area/medical/research) +"lCO" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"lCS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"lDz" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"lEj" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/drinks/bottle/cream, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/machinery/camera{ + c_tag = "Kitchen"; + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"lEp" = ( +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + desc = "Труба ведёт газ на фильтрацию"; + dir = 10; + name = "Труба на фильтрацию" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/effect/decal/warning_stripes/southwest, +/obj/item/stack/rods{ + amount = 10 + }, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/item/stack/sheet/metal{ + amount = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"lEO" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"lEU" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"lFd" = ( +/obj/effect/landmark/event/revenantspawn, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"lFl" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"lFr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"lFy" = ( +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"lFE" = ( +/obj/machinery/power/apc/noalarm{ + start_charge = 30; + pixel_y = -26 + }, +/obj/structure/cable, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"lFH" = ( +/obj/structure/table/glass, +/obj/machinery/reagentgrinder{ + pixel_x = -1; + pixel_y = 9 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"lFJ" = ( +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"lFZ" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/chem_master{ + pixel_x = -1 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "green" + }, +/area/medical/virology/lab) +"lGy" = ( +/obj/item/flag/nt, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"lGG" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4; + do_not_delete_me = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/obj/machinery/light/small{ + active_power_usage = 0; + dir = 4; + icon_state = "bulb-broken"; + status = 2 + }, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"lGI" = ( +/obj/structure/grille, +/obj/structure/window/full/shuttle/gray, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "piratehutters"; + name = "Blast Shutters" + }, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"lGY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"lHs" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"lHv" = ( +/turf/simulated/wall/mineral/wood/nonmetal, +/area/ruin/unpowered) +"lHz" = ( +/obj/machinery/door/window/brigdoor{ + dir = 2; + name = "Execution Access"; + req_access = list(2) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/execution) +"lHT" = ( +/obj/structure/chair/wood, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"lIa" = ( +/obj/structure/closet/secure_closet/cabinet/detective, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/wood, +/area/security/detectives_office) +"lIg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/machinery/keycard_auth, +/turf/simulated/floor/plasteel, +/area/quartermaster/qm) +"lIk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"lIA" = ( +/obj/machinery/atmospherics/unary/portables_connector, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"lIU" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"lIX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"lJb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"lJo" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/permabrig) +"lJw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"lJy" = ( +/obj/effect/decal/warning_stripes/east, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"lJF" = ( +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"lJK" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"lJS" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/effect/decal/rail_way{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"lJW" = ( +/obj/structure/closet/cabinet, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"lJZ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"lKf" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"lKh" = ( +/obj/structure/closet/crate/freezer, +/obj/machinery/iv_drip, +/obj/effect/decal/warning_stripes/blue/hollow, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/nitrogen, +/obj/item/tank/internals/emergency_oxygen/plasma, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/blood/OMinus, +/obj/item/reagent_containers/iv_bag/blood/OPlus, +/obj/item/reagent_containers/iv_bag/blood/APlus, +/obj/item/reagent_containers/iv_bag/blood/BPlus, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/sleeper) +"lKk" = ( +/obj/machinery/computer/supplycomp{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/office) +"lKl" = ( +/obj/structure/mineral_door/wood, +/obj/structure/barricade/wooden/crude/snow{ + layer = 3.3 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/ruin/unpowered) +"lKn" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/closet/crate, +/turf/simulated/floor/wood, +/area/toxins/storage) +"lKo" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/floor/plasteel, +/area/atmos) +"lKp" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/brig) +"lKq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"lKv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/processing) +"lKH" = ( +/obj/structure/table/wood{ + color = "brown" + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/coldcolony/ruin/miningbar) +"lKY" = ( +/obj/effect/spawner/random_spawners/fungus_70, +/turf/simulated/wall, +/area/civilian/barber) +"lLn" = ( +/obj/machinery/atmospherics/binary/pump{ + desc = "Подаёт азот в смеситель для создания дыхательной смеси, которая потом распространяется по станции"; + name = "Азот (N2) в дыхательную смесь"; + on = 1; + target_pressure = 101 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"lLE" = ( +/turf/simulated/wall/rust, +/area/hallway/secondary/entry) +"lLG" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkyellow" + }, +/area/bridge/vip) +"lLL" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/security/permabrig) +"lMa" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/structure/flora/ausbushes/palebush, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"lMc" = ( +/obj/structure/chair/comfy/beige{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/bridge/checkpoint/south) +"lMj" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/bridge/meeting_room) +"lMt" = ( +/obj/machinery/atmospherics/unary/tank/air{ + volume = 20000 + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"lMx" = ( +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/permahallway) +"lMC" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"lMH" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"lNf" = ( +/turf/simulated/wall/rust, +/area/maintenance/kitchen) +"lNh" = ( +/obj/effect/turf_decal/bot/left, +/obj/effect/turf_decal/bot/right, +/obj/structure/closet/crate/secure/plasma{ + req_access = list(31,32,50) + }, +/obj/item/stack/sheet/mineral/plasma/fifty, +/obj/item/stack/sheet/mineral/plasma/fifty, +/obj/item/stack/sheet/mineral/plasma/fifty, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/quartermaster/sorting) +"lNo" = ( +/obj/machinery/door_timer/cell_1{ + dir = 1; + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"lNq" = ( +/obj/structure/chair/stool, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"lNs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/item/radio/intercom{ + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/bridge/vip) +"lNx" = ( +/obj/machinery/atmospherics/binary/volume_pump/on{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"lNT" = ( +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"lOs" = ( +/obj/structure/chair/wood{ + dir = 1 + }, +/turf/simulated/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/kitchen) +"lOC" = ( +/obj/machinery/igniter{ + id = "disposal"; + luminosity = 2 + }, +/obj/item/trash/can{ + pixel_x = 10; + pixel_y = -5 + }, +/obj/item/trash/tapetrash, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"lOH" = ( +/obj/item/stack/sheet/metal, +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"lOJ" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "Warden"; + name = "Warden Privacy Shutters" + }, +/turf/simulated/floor/plating, +/area/security/warden) +"lPj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"lPv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/casino) +"lPE" = ( +/obj/machinery/atmospherics/binary/volume_pump{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/atmos) +"lQv" = ( +/obj/structure/sign/poster/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"lQI" = ( +/obj/structure/target_stake{ + icon = 'icons/obj/lighting.dmi'; + icon_state = "lantern-on"; + density = 0; + light_color = "#FFBF00"; + light_range = 6; + name = "Street lamp" + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"lQO" = ( +/obj/structure/table, +/obj/item/multitool, +/turf/simulated/floor/plating, +/area/maintenance/perma) +"lQW" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"lQX" = ( +/obj/structure/table, +/obj/item/paper_bin/nanotrasen, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"lRd" = ( +/obj/structure/bed, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"lRe" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"lRh" = ( +/obj/item/reagent_containers/food/snacks/grown/banana, +/obj/item/reagent_containers/food/snacks/grown/banana{ + pixel_x = -6; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/snacks/grown/banana{ + pixel_x = 7; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/snacks/pie{ + pixel_y = 7 + }, +/obj/structure/table/wood, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/clownoffice) +"lRk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/shard{ + icon_state = "small" + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"lRs" = ( +/obj/structure/window/full/reinforced/ice, +/obj/structure/grille, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/crew_quarters/kitchen) +"lRw" = ( +/obj/structure/closet/secure_closet{ + icon_state = "qm"; + req_access = list(41); + name = "quartermaster's locker" + }, +/obj/item/clothing/suit/hooded/wintercoat/cargo/qm, +/obj/item/flash, +/obj/item/radio/headset/heads/qm, +/obj/item/storage/garmentbag/quartermaster, +/obj/item/storage/backpack/cargo, +/obj/item/clothing/glasses/meson, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/gas, +/obj/item/cartridge/quartermaster, +/obj/item/ammo_box/a762, +/obj/item/ammo_box/speedloader/a762, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/bridge/vip) +"lRC" = ( +/obj/machinery/space_heater, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/power/apc{ + cell_type = 5000; + name = "Important area power controller"; + pixel_y = -26 + }, +/obj/structure/cable, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/entry/lounge) +"lRM" = ( +/obj/structure/sign/science, +/turf/simulated/wall, +/area/assembly/chargebay) +"lRP" = ( +/obj/structure/dresser, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"lSn" = ( +/obj/structure/lattice, +/turf/simulated/floor/plating/asteroid, +/area/coldcolony/ruin/sm_chamber) +"lSC" = ( +/obj/machinery/camera{ + c_tag = "Evidence Storage"; + dir = 8; + network = list("SS13","Security") + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/evidence) +"lSQ" = ( +/obj/item/stack/cable_coil{ + amount = 14 + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"lST" = ( +/turf/simulated/wall, +/area/quartermaster/storage) +"lTf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/tile/plasteel, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"lTh" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/customs) +"lTk" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"lTw" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "Kitchen Dinner Windows"; + name = "Kitchen Shutters"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/kitchen) +"lTx" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating, +/turf/simulated/floor/plasteel/white, +/area/crew_quarters/fitness) +"lUI" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/turf/simulated/floor/plasteel/grimy, +/area/civilian/vacantoffice) +"lUU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"lUX" = ( +/turf/simulated/wall/r_wall/rust, +/area/maintenance/maintcentral) +"lVr" = ( +/obj/item/storage/toolbox/emergency, +/obj/structure/table, +/obj/machinery/light, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/north) +"lVw" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/sorting) +"lVM" = ( +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/obj/structure/table, +/obj/item/flashlight/pen{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/flashlight/pen, +/obj/item/flashlight/pen{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"lVP" = ( +/obj/effect/decal/warning_stripes/eastsouthwest, +/obj/machinery/light{ + dir = 4 + }, +/obj/vehicle/ridden/ambulance, +/turf/simulated/floor/plasteel/white, +/area/medical/paramedic) +"lVR" = ( +/obj/structure/filingcabinet, +/turf/simulated/floor/wood, +/area/library) +"lVS" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"lWg" = ( +/obj/machinery/vending/chinese, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"lWn" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/security/permabrig) +"lWz" = ( +/obj/item/folder, +/obj/item/pen, +/obj/machinery/power/apc{ + pixel_y = -26 + }, +/obj/structure/cable, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"lWB" = ( +/turf/simulated/wall, +/area/security/hos) +"lWG" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"lWM" = ( +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/lounge) +"lWX" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 9; + name = "Труба фильтрации" + }, +/obj/effect/decal/warning_stripes/east, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "caution" + }, +/area/atmos) +"lXf" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "caution" + }, +/area/atmos) +"lXk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/toxins/explab) +"lXm" = ( +/obj/item/stack/rods, +/turf/simulated/floor/plating/asteroid, +/area/coldcolony/ruin/sm_chamber) +"lXt" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"lXv" = ( +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"lXJ" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/eastarrival) +"lXN" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"lXT" = ( +/turf/simulated/wall/r_wall, +/area/ntrep) +"lXY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/processing) +"lYn" = ( +/obj/structure/chair/comfy/beige{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_y = -26 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"lYo" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/landmark/start/doctor, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"lYu" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/decal/cleanable/dust, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"lYw" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"lYA" = ( +/obj/structure/railing, +/obj/structure/chair, +/obj/effect/turf_decal/siding/wideplating{ + color = "#332a2a" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"lYH" = ( +/obj/structure/flora/tree/pine, +/obj/structure/flora/rock/pile, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"lYO" = ( +/obj/structure/toilet{ + pixel_y = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/bridge/vip) +"lYS" = ( +/obj/machinery/abductor/experiment{ + stat = 1 + }, +/turf/simulated/floor/mineral/abductor{ + oxygen = 22; + temperature = 180; + nitrogen = 82 + }, +/area/ruin/unpowered) +"lZE" = ( +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"lZI" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/cans/beer{ + pixel_x = 6; + pixel_y = 8 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken4" + }, +/area/ruin/unpowered) +"lZK" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"lZO" = ( +/turf/simulated/wall/r_wall/rust, +/area/security/evidence) +"lZR" = ( +/obj/machinery/atmospherics/unary/outlet_injector/on{ + dir = 4; + id = "mix_in" + }, +/turf/simulated/floor/engine/vacuum, +/area/atmos) +"lZX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"mac" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/processing) +"mai" = ( +/obj/structure/table/wood, +/obj/machinery/recharger, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"mal" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/surgery{ + pixel_x = -1; + pixel_y = 2 + }, +/obj/structure/sign/poster/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel, +/area/assembly/robotics) +"maS" = ( +/obj/structure/shuttle/engine/heater{ + opacity = 1 + }, +/obj/item/shard, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"maT" = ( +/obj/structure/window/full/reinforced/ice, +/obj/structure/grille, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/hallway/primary/central/east) +"maU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"maW" = ( +/obj/item/stack/medical/splint/makeshift, +/turf/simulated/floor/wood/fancy/cherry, +/area/ruin/unpowered) +"maZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"mba" = ( +/obj/machinery/chem_dispenser/beer, +/obj/structure/table/wood, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/camera{ + c_tag = "Bar counter"; + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/bar) +"mbr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/toxins/explab) +"mbt" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"mbG" = ( +/obj/structure/closet/crate/hydroponics/prespawned, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/hydroponics) +"mbL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hydroponics) +"mca" = ( +/turf/simulated/floor/wood/fancy/light{ + icon_state = "light-fancy-wood-broken4"; + color = "orange" + }, +/area/magistrateoffice) +"mcj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"mcu" = ( +/obj/structure/table/wood, +/obj/item/clipboard, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"mcw" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken7" + }, +/area/coldcolony/ruin/abandoned_house) +"mcA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"mcR" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "Second Surgery Window"; + name = "Surgery Shutters" + }, +/turf/simulated/floor/plating, +/area/medical/surgery/south) +"mcY" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"mcZ" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/storage/secure) +"mda" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredcorners" + }, +/area/security/brig) +"mdc" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securehallway) +"mdi" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/lounge) +"mdu" = ( +/obj/structure/chair/sofa/pew/left{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "chapel" + }, +/area/chapel/main) +"mdy" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge) +"mdR" = ( +/obj/effect/decal/warning_stripes/southwest, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"mea" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"mec" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"mem" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"meB" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken7" + }, +/area/coldcolony/ruin/abandoned_house) +"meY" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"mfd" = ( +/obj/machinery/computer/arcade, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"mfh" = ( +/obj/machinery/atmospherics/binary/volume_pump{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"mfY" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"mgq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "browncorner" + }, +/area/coldcolony/ruin/miningeva) +"mgv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"mgw" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/item/shard, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"mgF" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/eastarrival) +"mgM" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance/double, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/item/tank/internals/generic, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"mgN" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"mhf" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/toxins/lab) +"mhn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"mhp" = ( +/mob/living/simple_animal/hostile/winter/reindeer{ + melee_damage_lower = 20; + melee_damage_upper = 30; + maxHealth = 200; + health = 200; + name = "evil reindeer" + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"mht" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"mhX" = ( +/obj/structure/fans/tiny, +/obj/effect/decal/snow/sand/edge{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/poddoor/shutters{ + dir = 1; + id_tag = "secgarage" + }, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"mig" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkpurple" + }, +/area/bridge/vip) +"mip" = ( +/mob/living/simple_animal/hostile/winter/reindeer{ + melee_damage_lower = 20; + melee_damage_upper = 30; + maxHealth = 200; + health = 200; + name = "evil reindeer" + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"mis" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"miG" = ( +/obj/structure/fans/tiny, +/obj/effect/decal/snow/sand/edge, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/poddoor/shutters{ + id_tag = "lbgarage" + }, +/obj/machinery/door_control{ + id = "lbgarage"; + pixel_y = -24 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"miM" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/radiation, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"miW" = ( +/obj/structure/table/wood, +/obj/item/gavelblock, +/obj/item/gavelhammer, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"mjf" = ( +/obj/machinery/door/airlock/external{ + id_tag = "trade_dock"; + locked = 1 + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"mjz" = ( +/obj/structure/rack, +/obj/item/reagent_containers/spray/cleaner/medical, +/obj/item/reagent_containers/glass/bottle/ether{ + pixel_x = 5; + pixel_y = -5 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"mjU" = ( +/obj/structure/table/reinforced, +/obj/item/apc_electronics, +/obj/item/airlock_electronics, +/obj/item/firelock_electronics, +/obj/item/firealarm_electronics, +/obj/item/airalarm_electronics, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/storage/secure) +"mki" = ( +/obj/machinery/vending/autodrobe, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"mkn" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/bar/atrium) +"mkr" = ( +/obj/structure/rack, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"mkt" = ( +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"mlN" = ( +/obj/structure/bed, +/obj/item/bedsheet/red, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"mlU" = ( +/obj/machinery/atmospherics/unary/tank/air{ + dir = 4; + volume = 20000 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"mlV" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"mlZ" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"mmH" = ( +/obj/structure/closet/firecloset, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"mnc" = ( +/obj/effect/decal/warning_stripes/west, +/obj/machinery/suit_storage_unit/ce, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/chief) +"mnr" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/lounge) +"mnu" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/atmos/control) +"mnC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"mnE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"mnJ" = ( +/obj/machinery/light_switch{ + pixel_x = -24; + pixel_y = 8 + }, +/obj/structure/table/reinforced, +/obj/item/mmi, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/assembly/robotics) +"mnO" = ( +/obj/structure/table, +/obj/item/stack/tape_roll, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"mnQ" = ( +/obj/machinery/light, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/atmos) +"mod" = ( +/obj/structure/table, +/obj/item/radio/intercom/locked/prison{ + pixel_y = 24 + }, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"mom" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/closet/crate/trashcart, +/obj/item/trash/doshik, +/obj/item/trash/sosjerky, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"moF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"moG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research) +"moK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"moW" = ( +/obj/structure/table/reinforced, +/obj/machinery/kitchen_machine/microwave{ + pixel_x = -1; + pixel_y = 7 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"mpd" = ( +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"mpD" = ( +/obj/effect/spawner/random_spawners/fungus_70, +/turf/simulated/wall, +/area/maintenance/garden) +"mpH" = ( +/obj/effect/landmark/marauder_entry, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"mpR" = ( +/turf/simulated/wall, +/area/coldcolony/ruin/abandoned_garage) +"mpX" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/brig) +"mqg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/crew_quarters/kitchen) +"mqo" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/processing) +"mqp" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/smes/vintage, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"mqF" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/storage/box/bodybags{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/storage/firstaid/machine, +/obj/item/storage/firstaid/machine{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/robotanalyzer, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/assembly/robotics) +"mqQ" = ( +/mob/living/simple_animal/hostile/bear/polar, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"mqZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"mrj" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/syndie_outpost) +"mrp" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"mrK" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/maintenance/kitchen) +"mrM" = ( +/obj/structure/closet/walllocker/emerglocker/east, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"mrQ" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"mrT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"msd" = ( +/obj/machinery/light/small, +/obj/machinery/slot_machine, +/turf/simulated/floor/carpet, +/area/maintenance/casino) +"msF" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/shuttle/engine/heater, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/pirate_corvette) +"mtC" = ( +/turf/simulated/wall/rust, +/area/maintenance/asmaint) +"mtM" = ( +/obj/effect/decal/cleanable/generic, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"mtY" = ( +/obj/structure/sign/directions/engineering{ + pixel_y = -10; + dir = 4 + }, +/obj/structure/sign/directions/cargo{ + dir = 4; + pixel_y = -3 + }, +/obj/structure/sign/directions/evac{ + dir = 4; + pixel_y = 4 + }, +/obj/structure/sign/directions/security{ + dir = 1; + pixel_y = 11 + }, +/turf/simulated/wall, +/area/hallway/primary/central/se) +"mul" = ( +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor"; + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"muF" = ( +/obj/machinery/power/apc{ + pixel_y = -26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library/game_zone) +"muV" = ( +/obj/structure/chair/comfy/shuttle/dark{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/shuttle/pirate_corvette) +"mvh" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/main) +"mvm" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"mvD" = ( +/obj/item/storage/firstaid/paramed, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"mvH" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood{ + icon_state = "wood-broken6" + }, +/area/maintenance/kitchen) +"mwe" = ( +/mob/living/simple_animal/pet/sloth/paperwork, +/obj/structure/bed/dogbed, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/quartermaster/qm) +"mwj" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable, +/obj/structure/table/reinforced, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"mww" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plating, +/area/quartermaster/sorting) +"mwA" = ( +/obj/machinery/computer/operating, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "arrival" + }, +/area/shuttle/pirate_corvette) +"mwK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/cmostore) +"mwQ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin2) +"mwZ" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/atmos) +"mxh" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"mxn" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"mxy" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/storage) +"mxH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/mob/living/simple_animal/hostile/bear/polar, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"mxY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"myh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"myl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/securearmory) +"myC" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/kitchen) +"myF" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"myS" = ( +/obj/machinery/atmospherics/unary/tank/carbon_dioxide{ + volume = 1000 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"myV" = ( +/obj/structure/bed, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/permabrig) +"mza" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"mze" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wideplating{ + color = "#332a2a"; + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"mzf" = ( +/obj/machinery/door_control{ + id = "burn"; + pixel_x = -24; + pixel_y = -6 + }, +/obj/machinery/ignition_switch{ + id = "disposal"; + pixel_x = -24; + pixel_y = 6 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"mzh" = ( +/turf/simulated/wall, +/area/hallway/primary/central/east) +"mzi" = ( +/obj/structure/table/wood, +/obj/item/clipboard, +/obj/machinery/door_control{ + id = "Bar"; + name = "Bar Privacy Shutters Control"; + pixel_x = -25; + pixel_y = -6; + req_access = list(28) + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/bar) +"mzo" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/hallway/primary/central/se) +"mzv" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "caution" + }, +/area/atmos) +"mzF" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/warning_stripes/blue, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/north) +"mzJ" = ( +/obj/docking_port/stationary{ + dir = 8; + dwidth = 5; + height = 7; + id = "supply_home"; + name = "supply bay"; + width = 12; + turf_type = /turf/simulated/floor/plating/asteroid/snow/atmosphere; + area_type = /area/ruin/unpowered/coldcolony_outside + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"mzR" = ( +/obj/structure/bed, +/obj/effect/spawner/random_spawners/syndicate/loot{ + result = list(/obj/item/bedsheet/blue = 10, /obj/item/bedsheet/black = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/fluff = 10, /obj/item/bedsheet/green = 10, /obj/item/bedsheet/orange = 10, /obj/item/bedsheet/purple = 10, /obj/item/bedsheet/red = 10, /obj/item/bedsheet/yellow = 10); + name = "bedsheet" + }, +/obj/effect/landmark/join_late, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"mzZ" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"mAb" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"mAf" = ( +/turf/simulated/wall/rust, +/area/maintenance/engineering) +"mAp" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/coldcolony/ruin/abandoned_garage) +"mAq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"mAs" = ( +/obj/item/storage/box/lights/mixed{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/box/lights/mixed, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "purple" + }, +/area/janitor) +"mAt" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"mAB" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"mAI" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"mBh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"mBn" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/pirate_corvette) +"mBo" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "greenfull" + }, +/area/hydroponics) +"mBt" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/processing) +"mBD" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/flora/ausbushes/palebush, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"mBG" = ( +/obj/structure/cult/archives, +/turf/simulated/floor/wood, +/area/library) +"mBO" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"mBQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) +"mBR" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/ruin/unpowered) +"mCf" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"mCn" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_x = 30 + }, +/turf/simulated/floor/carpet/royalblue, +/area/bridge/vip) +"mCq" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"mCy" = ( +/obj/item/chair/wood, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/ants, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plating, +/area/maintenance/kitchen) +"mDk" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"mDt" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/rack, +/obj/random/tool, +/obj/random/tool, +/obj/random/tool, +/obj/random/tool, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) +"mDB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"mDD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"mDI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/bridge/vip) +"mDO" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"mEd" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/engineering/engine/monitor) +"mEm" = ( +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/toxins/explab) +"mEq" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker) +"mEt" = ( +/obj/item/paper{ + info = "К чёрту эту сраную колонию, к чёрту этот аванпост и к чёрту НТ!!!! Надо сваливать на первом же рейсе отсюда"; + info_links = "К чёрту эту сраную колонию, к чёрту этот аванпост и к чёрту НТ!!!! Надо сваливать на первом же рейсе отсюда" + }, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"mFg" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"mFl" = ( +/obj/structure/closet/librarian, +/turf/simulated/floor/wood, +/area/library) +"mFm" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/brig) +"mFN" = ( +/obj/structure/chair/stool, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/lobby) +"mFZ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/maintenance/garden) +"mGf" = ( +/obj/structure/alien/weeds, +/obj/item/organ/internal/liver, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"mGY" = ( +/obj/structure/bed, +/obj/item/bedsheet/red, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"mHb" = ( +/obj/effect/decal/ants, +/turf/simulated/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/kitchen) +"mHh" = ( +/obj/structure/dresser, +/turf/simulated/floor/carpet/red, +/area/security/hos) +"mHp" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/cans/ale, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"mHr" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 9 + }, +/obj/structure/rack, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"mHs" = ( +/obj/machinery/atmospherics/binary/volume_pump{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/atmos) +"mHt" = ( +/obj/machinery/atmospherics/unary/tank/air{ + volume = 20000 + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"mHz" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/leafybush, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"mHD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"mHZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/random/tool, +/obj/effect/spawner/lootdrop/maintenance, +/obj/random/tool, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"mIj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow, +/obj/effect/decal/cleanable/dust, +/obj/structure/closet/crate/plastic, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/sorting) +"mIv" = ( +/obj/structure/sink{ + pixel_y = 22 + }, +/obj/effect/decal/warning_stripes/blue, +/obj/effect/decal/warning_stripes/southwest, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/virology/lab) +"mIC" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 4; + name = "Труба смешивания" + }, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 1; + name = "Труба дыхательной смеси" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"mIG" = ( +/obj/effect/decal/warning_stripes/north, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"mIT" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"mIU" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"mIW" = ( +/obj/structure/table/wood{ + color = "brown" + }, +/obj/item/reagent_containers/food/drinks/cans/beer, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/coldcolony/ruin/miningbar) +"mJf" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"mJi" = ( +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"mJr" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"mJs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge/vip) +"mJA" = ( +/obj/effect/decal/warning_stripes/west, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"mJJ" = ( +/obj/structure/closet/crate/engineering, +/obj/item/floor_painter, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"mJO" = ( +/obj/item/flag/nt, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"mJY" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/miningeva) +"mKl" = ( +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"mKG" = ( +/obj/machinery/slot_machine, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"mLh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"mLo" = ( +/obj/effect/turf_decal/siding/thinplating, +/turf/simulated/floor/plasteel/white, +/area/crew_quarters/fitness) +"mLw" = ( +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + desc = "Труба ведёт газ на фильтрацию"; + dir = 4; + name = "Труба на фильтрацию" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "caution" + }, +/area/atmos) +"mLA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/sign/electricshock{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"mLI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitebluecorner" + }, +/area/medical/sleeper) +"mLU" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "browncorner" + }, +/area/quartermaster/sorting) +"mMb" = ( +/obj/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/execution) +"mMe" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/security/permahallway) +"mMi" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"mMt" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/abandoned_house) +"mMw" = ( +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/wood/fancy/oak, +/area/blueshield) +"mMA" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = 11; + pixel_y = 13 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/ruin/unpowered) +"mMJ" = ( +/obj/structure/rack, +/obj/item/pickaxe, +/obj/item/flashlight/flare/glowstick, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"mML" = ( +/obj/effect/decal/warning_stripes/west, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/landmark/start/engineer, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"mMV" = ( +/obj/structure/table/reinforced, +/obj/item/stack/tape_roll, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/reception) +"mNa" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 8 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/obj/machinery/vending/cigarette{ + obj_integrity = 95; + stat = 1 + }, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"mNc" = ( +/obj/item/clothing/head/helmet/skull/Yorick, +/obj/structure/table/wood, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"mNd" = ( +/obj/machinery/door_control{ + id = "Cargo Office Windows"; + name = "Cargo Office Shutters Control"; + pixel_x = -24; + req_access = list(50) + }, +/obj/structure/table, +/obj/item/stack/packageWrap, +/obj/item/destTagger, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/office) +"mNF" = ( +/obj/effect/mob_spawn/human/corpse/damaged, +/obj/effect/decal/cleanable/blood/gibs/limb, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"mNL" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"mNN" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wideplating{ + color = "#332a2a"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/fitness) +"mOr" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/junction/reversed{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/plasteel, +/area/crew_quarters/locker) +"mOE" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/processing) +"mOT" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel, +/area/maintenance/garden) +"mPb" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"mPm" = ( +/obj/structure/table, +/obj/machinery/chem_dispenser/soda, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/coldcolony/ruin/miningbar) +"mPo" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"mPC" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkpurple" + }, +/area/bridge/vip) +"mPQ" = ( +/turf/simulated/floor/wood/fancy/light{ + icon_state = "light-fancy-wood-broken2" + }, +/area/crew_quarters/bar) +"mPV" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/food/drinks/cans/beer, +/obj/item/reagent_containers/food/drinks/cans/beer{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/reagent_containers/food/drinks/cans/beer{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/reagent_containers/food/drinks/cans/beer{ + pixel_x = -10; + pixel_y = -2 + }, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"mPW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/sorting) +"mPX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light, +/turf/simulated/floor/plasteel, +/area/quartermaster/office) +"mPZ" = ( +/obj/machinery/vending/chinese, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"mQj" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/crew_quarters/chief) +"mQl" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/light, +/turf/simulated/floor/wood/fancy/oak, +/area/blueshield) +"mQw" = ( +/obj/structure/bed/dogbed/ian, +/mob/living/simple_animal/pet/dog/corgi/Ian, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/hop) +"mQA" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library/game_zone) +"mQB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners" + }, +/area/security/warden) +"mQV" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/surgery{ + pixel_y = -6 + }, +/obj/item/implanter/mindshield{ + pixel_x = 4; + pixel_y = 12 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/processing) +"mQW" = ( +/obj/docking_port/stationary{ + dir = 8; + dwidth = 2; + height = 11; + id = "specops_home"; + name = "port bay 2"; + width = 5; + turf_type = /turf/simulated/floor/plating/asteroid/snow/atmosphere; + area_type = /area/ruin/unpowered/coldcolony_outside + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"mQZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/junction/reversed{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"mRg" = ( +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plating, +/area/medical/surgery/south) +"mRj" = ( +/obj/machinery/computer/station_alert, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "caution" + }, +/area/atmos/control) +"mRo" = ( +/obj/machinery/door/airlock/medical{ + name = "Operating Theatre"; + req_access = list(45) + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"mRD" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"mRL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "redfull" + }, +/area/security/prison/cell_block/A) +"mSk" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) +"mSn" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Engineering Maintenance"; + req_access = list(10) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"mSq" = ( +/turf/simulated/wall/rust, +/area/hallway/secondary/entry/eastarrival) +"mSs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/machinery/vending/clothing/departament/medical, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"mSx" = ( +/obj/effect/decal/warning_stripes/east, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "caution" + }, +/area/atmos) +"mSC" = ( +/mob/living/simple_animal/chicken/Wife, +/turf/simulated/floor/grass, +/area/hydroponics) +"mSE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/coldcolony/ruin/abandoned_garage) +"mSN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"mSV" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"mTc" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"mTd" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"mTe" = ( +/obj/structure/table, +/obj/item/storage/box/bodybags{ + pixel_x = 8; + pixel_y = -1 + }, +/obj/item/storage/box/masks{ + pixel_x = -6 + }, +/obj/item/storage/box/gloves{ + pixel_x = -3; + pixel_y = 6 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"mTC" = ( +/obj/machinery/door/window/westright{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"mTI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/abandoned_garage) +"mTN" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/bottle/whiskey{ + pixel_y = 18 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"mTV" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 9; + name = "Труба дыхательной смеси" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"mTX" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"mUd" = ( +/obj/item/flashlight, +/obj/structure/rack, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"mUn" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin1) +"mUx" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/bridge/meeting_room) +"mUy" = ( +/obj/structure/window/reinforced, +/obj/structure/table/reinforced, +/obj/machinery/newscaster{ + pixel_x = -30 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge) +"mUA" = ( +/obj/structure/closet/crate/medical, +/obj/item/roller{ + pixel_x = 3; + pixel_y = 10 + }, +/obj/item/reagent_containers/food/pill/patch/silver_sulf{ + pixel_x = -8 + }, +/obj/item/reagent_containers/food/pill/patch/silver_sulf{ + pixel_x = -8 + }, +/obj/item/reagent_containers/food/pill/patch/silver_sulf{ + pixel_x = -8 + }, +/obj/item/vending_refill/medical, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"mUF" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood/fancy/cherry, +/area/library/game_zone) +"mUM" = ( +/obj/structure/table/wood, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/trash/doshik, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"mVf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"mVo" = ( +/obj/effect/decal/snow/sand/edge, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/fore) +"mVL" = ( +/turf/simulated/floor/plating, +/area/medical/surgery/south) +"mVO" = ( +/obj/structure/dresser, +/turf/simulated/floor/carpet, +/area/bridge/vip) +"mVX" = ( +/obj/structure/sign/greencross, +/turf/simulated/wall, +/area/medical/cmostore) +"mWa" = ( +/obj/structure/dresser, +/turf/simulated/floor/carpet/royalblue, +/area/bridge/vip) +"mWe" = ( +/turf/simulated/wall, +/area/crew_quarters/locker/locker_toilet) +"mWo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"mWu" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"mWR" = ( +/obj/machinery/door/airlock/freezer, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/maintenance/kitchen) +"mXd" = ( +/obj/structure/flora/rock/pile, +/obj/structure/flora/grass/both, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"mXg" = ( +/obj/effect/decal/warning_stripes/yellow/partial, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/assembly/robotics) +"mXn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"mXo" = ( +/obj/effect/decal/cleanable/vomit, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"mXp" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/bottle/holywater, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"mXs" = ( +/turf/simulated/floor/plasteel{ + icon_state = "bcarpet05" + }, +/area/blueshield) +"mXD" = ( +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"mXL" = ( +/obj/structure/falsewall, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"mXY" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"mYb" = ( +/obj/effect/decal/warning_stripes/south, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"mYd" = ( +/obj/effect/decal/snow/sand/edge, +/obj/machinery/door/poddoor/shutters{ + id_tag = "evacgarage"; + dir = 8 + }, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/lounge) +"mYg" = ( +/obj/structure/closet/secure_closet/cabinet, +/obj/item/clothing/shoes/brown, +/obj/item/clothing/head/fedora/brownfedora, +/obj/item/storage/pill_bottle/random_drug_bottle, +/obj/item/clothing/under/sovietofficer, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"mYi" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"mYs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/cigbutt, +/turf/simulated/floor/wood{ + icon_state = "wood-broken6" + }, +/area/crew_quarters/bar/atrium) +"mYB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel/white, +/area/medical/cmo) +"mYR" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "Bar"; + name = "Bar Privacy Shutters" + }, +/obj/item/storage/ashtray/glass, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/bar) +"mYU" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"mYX" = ( +/turf/simulated/wall/rust, +/area/bridge/checkpoint/south) +"mZc" = ( +/obj/machinery/photocopier, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/reception) +"mZe" = ( +/obj/structure/table, +/obj/item/folder/red, +/obj/item/pen, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"mZi" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"mZo" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/hallway/primary/starboard/east) +"mZy" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/crew_quarters/hor) +"mZz" = ( +/obj/structure/bed, +/obj/effect/spawner/random_spawners/syndicate/loot{ + result = list(/obj/item/bedsheet/blue = 10, /obj/item/bedsheet/black = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/fluff = 10, /obj/item/bedsheet/green = 10, /obj/item/bedsheet/orange = 10, /obj/item/bedsheet/purple = 10, /obj/item/bedsheet/red = 10, /obj/item/bedsheet/yellow = 10); + name = "bedsheet" + }, +/obj/effect/landmark/join_late, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"mZL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/ants, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"nac" = ( +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/permabrig) +"naq" = ( +/obj/structure/table, +/obj/item/storage/belt/utility, +/obj/item/clothing/glasses/welding, +/obj/item/wrench, +/obj/machinery/power/apc{ + pixel_y = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/toxins/lab) +"naz" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/obj/effect/landmark/start/detective, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/security/detectives_office) +"naA" = ( +/obj/machinery/computer/security, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/checkpoint) +"naB" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engineering/break_room) +"naC" = ( +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"naG" = ( +/obj/machinery/light_switch{ + pixel_x = -24; + pixel_y = 8 + }, +/obj/structure/table, +/obj/item/radio, +/obj/item/radio, +/obj/item/radio, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whitehall" + }, +/area/crew_quarters/sleep) +"nbd" = ( +/obj/structure/closet/crate/miningcar{ + name = "mining car" + }, +/obj/item/stack/ore/silver{ + amount = 9 + }, +/obj/item/stack/ore/gold{ + amount = 8 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"nbx" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/machinery/camera{ + c_tag = "Command Central Hallway" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/primary/fore) +"nbC" = ( +/obj/effect/decal/warning_stripes/north, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"nbD" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"nbX" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/bridge/vip) +"nbY" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/ntrep) +"nca" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/snacks/chocolatebar, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"ncb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"ncA" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/ruin/unpowered) +"ncM" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id_tag = "Brig_lockdown"; + name = "Brig Lockdown" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/security/prison/cell_block/A) +"ncP" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen/multi{ + pixel_x = -7; + pixel_y = 5 + }, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/security/detectives_office) +"ndb" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"ndd" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/eastarrival) +"ndo" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken" + }, +/area/coldcolony/ruin/abandoned_banya) +"ndq" = ( +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/station_alert, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engineering/engine/monitor) +"ndr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"ndE" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/security{ + name = "Security"; + id_tag = "BrigEnt" + }, +/obj/effect/decal/snow/sand/edge{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "red" + }, +/area/security/lobby) +"ndO" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin2) +"neg" = ( +/obj/machinery/door/airlock/command{ + name = "Research Director's Office"; + req_access = list(30) + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"nej" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"nex" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26; + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/warden) +"neF" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/turf/simulated/floor/carpet/royalblue, +/area/ntrep) +"neK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/customs) +"neN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/photocopier, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/qm) +"neO" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"neW" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/pump, +/obj/effect/decal/warning_stripes/eastsouthwest, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engineering/break_room) +"nfo" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/library) +"nfr" = ( +/obj/structure/table/wood, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"nfs" = ( +/obj/structure/chair/comfy/beige{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/carpet, +/area/bridge/checkpoint/south) +"nfz" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 9; + name = "Труба дыхательной смеси" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"nfN" = ( +/obj/machinery/door/morgue{ + name = "Private Study"; + req_access = list(37) + }, +/turf/simulated/floor/wood, +/area/library) +"nfP" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"ngk" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/office) +"ngL" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"ngR" = ( +/obj/effect/decal/warning_stripes/blue/hollow, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/decal/warning_stripes/southwest, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"nhr" = ( +/obj/structure/closet/secure_closet/personal, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"nhE" = ( +/obj/item/storage/firstaid/regular/empty, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"nhG" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"nhJ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/secondary/entry/lounge) +"nhK" = ( +/obj/structure/bonfire, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"nhQ" = ( +/obj/structure/bookcase, +/turf/simulated/floor/wood/fancy/cherry, +/area/library) +"nhV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"niI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"niW" = ( +/obj/structure/closet/secure_closet/captains, +/obj/item/clothing/suit/hooded/wintercoat/captain, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain/bedroom) +"njh" = ( +/turf/simulated/wall/rust, +/area/crew_quarters/trading) +"njz" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/bridge/meeting_room) +"njB" = ( +/obj/structure/filingcabinet, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library/game_zone) +"njH" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/table, +/obj/item/kitchen/knife/butcher, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/kitchen) +"njS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/toxins/xenobiology) +"nkd" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/suit_storage_unit/engine, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"nke" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"nkh" = ( +/obj/structure/table/wood, +/obj/item/storage/ashtray, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"nki" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"nkk" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Medical Supplies"; + req_access = list(5) + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"nkm" = ( +/obj/structure/curtain/open/shower, +/obj/machinery/shower{ + dir = 4; + pixel_y = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/bridge/vip) +"nkE" = ( +/turf/simulated/floor/wood{ + icon_state = "wood-broken7" + }, +/area/hallway/secondary/entry/lounge) +"nkH" = ( +/obj/machinery/power/apc{ + pixel_y = 26; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"nkP" = ( +/obj/item/reagent_containers/food/snacks/bun{ + pixel_y = 6; + pixel_x = 3 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"nlb" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/machinery/camera{ + c_tag = "Theatre"; + dir = 8 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"nlc" = ( +/obj/structure/table, +/obj/structure/sign/cave{ + pixel_x = -32 + }, +/obj/item/storage/fancy/donut_box, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/office) +"nlo" = ( +/obj/structure/table, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/item/stack/tape_roll, +/obj/item/radio, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"nlr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain/bedroom) +"nlw" = ( +/obj/structure/chair/stool, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"nlA" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"nlH" = ( +/obj/machinery/atmospherics/unary/tank/air{ + volume = 20000 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"nlX" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/coffee, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"nmr" = ( +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"nmw" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"nmN" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/light{ + active_power_usage = 0; + dir = 4; + icon_state = "tube-broken"; + status = 2 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"nmO" = ( +/turf/simulated/floor/carpet, +/area/bridge/vip) +"nmQ" = ( +/obj/structure/closet/firecloset, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "red" + }, +/area/security/lobby) +"nnb" = ( +/obj/machinery/computer/arcade, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/carpet, +/area/maintenance/casino) +"nnD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"nnF" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/item/shard, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_chamber) +"nnH" = ( +/obj/structure/table/wood, +/obj/item/storage/lockbox/medal, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Captain's Room"; + dir = 6 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain/bedroom) +"nnR" = ( +/obj/structure/closet/secure_closet/brig/evidence, +/obj/item/radio/intercom{ + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/evidence) +"nnY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permahallway) +"nnZ" = ( +/obj/machinery/photocopier, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"noo" = ( +/obj/item/shard{ + icon_state = "small" + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"noO" = ( +/obj/effect/decal/snow/sand/edge, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken2" + }, +/area/ruin/unpowered) +"noW" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/processing) +"npu" = ( +/obj/structure/chair/sofa/pew{ + dir = 8 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"npA" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"npI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/locker/locker_toilet) +"nqM" = ( +/obj/structure/wooden_sign{ + name = "Investigator base" + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"nqU" = ( +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"nrq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"nrN" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Bridge"; + req_access = list(19) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"nso" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/cable_coil{ + amount = 2 + }, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"nsy" = ( +/turf/simulated/wall, +/area/coldcolony/ruin/ore_production) +"ntn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/miningeva) +"ntr" = ( +/obj/machinery/door/airlock{ + id_tag = "PermaBath"; + name = "Restroom" + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/security/permabrig) +"ntC" = ( +/obj/structure/sign/engineering, +/turf/simulated/wall/r_wall, +/area/atmos) +"ntJ" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"nuB" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel, +/area/toxins/xenobiology) +"nvD" = ( +/turf/simulated/wall, +/area/maintenance/fore) +"nvJ" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/plasteel/white, +/area/medical/cmo) +"nvO" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"nvQ" = ( +/turf/simulated/wall/r_wall, +/area/atmos) +"nvS" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "HoSPriv"; + name = "HoS Office Privacy Shutters" + }, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/poddoor/preopen{ + id_tag = "Brig_lockdown"; + name = "Brig Lockdown" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/security/hos) +"nvY" = ( +/obj/machinery/shower{ + pixel_y = 22 + }, +/obj/structure/curtain/open/shower{ + icon_state = "closed" + }, +/obj/effect/decal/warning_stripes/blue/hollow, +/obj/item/stack/cable_coil, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/security/permabrig) +"nwv" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"nwA" = ( +/obj/structure/table, +/obj/item/clipboard, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "purple" + }, +/area/janitor) +"nwL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/sleep) +"nwO" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/security/reception) +"nwW" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"nxi" = ( +/obj/item/circuitboard/pacman, +/obj/structure/cable, +/obj/machinery/constructable_frame/machine_frame, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"nxo" = ( +/turf/simulated/wall, +/area/crew_quarters/theatre) +"nxt" = ( +/obj/item/storage/firstaid/fire/empty, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "arrival" + }, +/area/shuttle/pirate_corvette) +"nxv" = ( +/obj/structure/table, +/obj/item/assembly/igniter, +/obj/item/storage/box/donkpockets{ + pixel_y = 3 + }, +/turf/simulated/floor/plating, +/area/security/permabrig) +"nxD" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "whitered" + }, +/area/security/medbay) +"nxH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/customs) +"nxK" = ( +/obj/structure/chair/office/dark, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/ntrep) +"nxL" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitehall" + }, +/area/crew_quarters/sleep) +"nym" = ( +/obj/structure/safe{ + known_by = list("hos") + }, +/obj/item/clothing/accessory/holster, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/gun/projectile/automatic/pistol/m1911, +/obj/item/ammo_box/magazine/m45, +/obj/item/ammo_box/magazine/m45, +/obj/item/ammo_box/c45, +/turf/simulated/floor/wood/fancy/cherry, +/area/security/hos) +"nyp" = ( +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"nyy" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"nzg" = ( +/obj/effect/turf_decal/siding/blue, +/turf/simulated/floor/carpet/arcade, +/area/crew_quarters/fitness) +"nzh" = ( +/obj/structure/table, +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/obj/item/stack/packageWrap, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/hallway/secondary/exit) +"nzN" = ( +/obj/item/storage/toolbox/surgery{ + pixel_x = -1; + pixel_y = 2 + }, +/obj/item/reagent_containers/spray/cleaner/brig{ + pixel_x = 4 + }, +/obj/machinery/defibrillator_mount/loaded{ + pixel_y = 32 + }, +/obj/structure/table/glass, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitered" + }, +/area/security/medbay) +"nzY" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"nzZ" = ( +/obj/structure/sign/engineering{ + pixel_y = 32; + pixel_x = 32 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"nAk" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/window{ + dir = 2; + name = "Secure Armory"; + req_access = list(1); + base_state = "right"; + icon_state = "right" + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/storage/lockbox/mindshield, +/obj/item/storage/box/trackimp, +/obj/item/storage/box/chemimp{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"nAt" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"nAy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"nAE" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/bridge/meeting_room) +"nAK" = ( +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"nAN" = ( +/obj/machinery/light_construct{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/medical/research/shallway) +"nBf" = ( +/turf/simulated/floor/plating, +/area/maintenance/fore) +"nBD" = ( +/obj/machinery/constructable_frame/machine_frame, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"nBH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/secure/gear{ + req_access = list(160) + }, +/obj/item/storage/box/syndie_kit/chameleon, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/shuttle/pirate_corvette) +"nBL" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"nBQ" = ( +/turf/simulated/wall, +/area/assembly/robotics) +"nBV" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"nCe" = ( +/obj/item/stack/tile/plasteel{ + amount = 8 + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"nCh" = ( +/obj/effect/decal/warning_stripes/west{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding8" + }, +/obj/effect/decal/warning_stripes/west{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "asteroid" + }, +/area/hydroponics) +"nCl" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/wood/fancy/light{ + icon_state = "light-fancy-wood-broken2" + }, +/area/crew_quarters/captain/bedroom) +"nCH" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) +"nCO" = ( +/obj/effect/spawner/random_spawners/fungus_70, +/turf/simulated/wall, +/area/coldcolony/ruin/miningbar) +"nCP" = ( +/obj/structure/chair/sofa, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/theatre) +"nCY" = ( +/obj/machinery/door/airlock/research{ + name = "Research Division Access"; + req_access = list(47) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"nDa" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"nDh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"nDn" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"nDs" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/machinery/atmospherics/unary/cold_sink/freezer{ + current_temperature = 80; + on = 1 + }, +/turf/simulated/floor/plating, +/area/toxins/server) +"nDJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"nDK" = ( +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"nDM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/coldcolony/ruin/miningbar) +"nEe" = ( +/obj/structure/flora/grass/green, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"nEn" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/processing) +"nEu" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"nEv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/security/lobby) +"nED" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"nEK" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/main) +"nER" = ( +/obj/structure/rack, +/obj/item/shard{ + icon_state = "small" + }, +/obj/item/light/tube, +/obj/item/light/tube, +/obj/item/light/tube, +/obj/item/stock_parts/scanning_module, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"nEY" = ( +/obj/machinery/suit_storage_unit/security, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"nFl" = ( +/obj/structure/table, +/obj/item/stack/sheet/cloth/ten, +/obj/item/stack/sheet/cloth/ten, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"nFm" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/kitchen) +"nFp" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"nFt" = ( +/obj/machinery/atmospherics/unary/portables_connector, +/obj/machinery/portable_atmospherics/canister, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"nFw" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/research) +"nFM" = ( +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"nFU" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/turf/simulated/floor/plating, +/area/hallway/secondary/exit) +"nGa" = ( +/obj/structure/holosign/barrier/engineering, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"nGb" = ( +/obj/machinery/door/airlock/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"nGc" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"nGi" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin1) +"nGt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood/fancy/cherry, +/area/security/hos) +"nGI" = ( +/obj/machinery/computer/communications, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/carpet/royalblack, +/area/bridge) +"nGL" = ( +/obj/effect/decal/cleanable/dust, +/obj/effect/decal/ants, +/obj/machinery/light{ + active_power_usage = 0; + dir = 4; + icon_state = "tube-broken"; + status = 2 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"nGM" = ( +/obj/structure/chair/stool/bar, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"nGR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/glass, +/obj/effect/decal/cleanable/dust, +/obj/item/clothing/mask/cigarette/cigar/havana{ + pixel_x = -3; + pixel_y = 3 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken" + }, +/area/coldcolony/ruin/abandoned_banya) +"nGU" = ( +/obj/machinery/nuclearbomb, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/security/nuke_storage) +"nHj" = ( +/obj/structure/chair/sofa/left, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/theatre) +"nHs" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"nHO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"nHW" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"nIv" = ( +/obj/machinery/door/airlock/medical{ + autoclose = 0; + frequency = 1379; + id_tag = "viro_lab_airlock_exterior"; + locked = 1; + name = "Virology Lab External Airlock"; + req_access = list(39) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"nIw" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/coldcolony/ruin/miningbar) +"nIN" = ( +/obj/item/light/tube{ + icon_state = "ltube-broken"; + status = 2 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/toxins/xenobiology) +"nIR" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"nJl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/dispenser/oxygen, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/cmostore) +"nJs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"nJL" = ( +/obj/structure/table/wood, +/turf/simulated/floor/carpet, +/area/bridge/checkpoint/south) +"nJM" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Monkey Pen"; + req_access = list(39) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"nJS" = ( +/obj/effect/decal/cleanable/glass, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"nJW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"nKe" = ( +/obj/effect/decal/warning_stripes/west{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding8" + }, +/obj/effect/decal/warning_stripes/west{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "asteroid" + }, +/area/hydroponics) +"nKm" = ( +/obj/machinery/seed_extractor, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"nKv" = ( +/obj/machinery/vending/chinese, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"nKK" = ( +/turf/simulated/wall, +/area/maintenance/asmaint3) +"nKM" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"nLc" = ( +/obj/structure/chair/comfy/blue{ + dir = 1 + }, +/turf/simulated/floor/carpet/royalblue, +/area/ntrep) +"nLw" = ( +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + icon_state = "whitepurplefull" + }, +/area/medical/research) +"nLI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"nLR" = ( +/obj/structure/closet/masks, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"nLS" = ( +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel, +/area/assembly/robotics) +"nLT" = ( +/obj/structure/chair/sofa/left, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/bar/atrium) +"nMB" = ( +/obj/item/trash/doshik, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"nMH" = ( +/turf/simulated/wall/rust, +/area/security/processing) +"nMI" = ( +/obj/structure/closet/secure_closet/brig{ + id = "Cell 5"; + name = "Cell 5 Locker" + }, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"nMW" = ( +/turf/simulated/wall, +/area/security/permabrig) +"nNa" = ( +/obj/structure/table/reinforced, +/obj/machinery/defibrillator_mount, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"nNd" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"nNx" = ( +/obj/structure/flora/grass/brown, +/obj/structure/sign/directions/engineering{ + pixel_y = 21 + }, +/obj/structure/sign/directions/cargo{ + pixel_y = 28 + }, +/obj/structure/sign/directions/evac{ + pixel_y = 35 + }, +/obj/structure/sign/directions/science{ + pixel_y = 42 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"nNy" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"nNC" = ( +/obj/structure/chair/comfy/shuttle/dark{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/shuttle/pirate_corvette) +"nOe" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"nOk" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"nOw" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"nOO" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/obj/structure/sign/nosmoking_2{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"nOX" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/wardrobe/atmospherics_yellow, +/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"nPf" = ( +/obj/machinery/optable, +/obj/structure/curtain/medical, +/obj/effect/decal/cleanable/blood/gibs/body, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"nPM" = ( +/obj/structure/table, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"nPT" = ( +/obj/effect/decal/snow/sand/edge, +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/maintenance/external{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"nPX" = ( +/obj/structure/chair/sofa/pew/left{ + dir = 4 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"nQd" = ( +/turf/simulated/wall/r_wall/rust, +/area/security/hos) +"nQg" = ( +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"nQh" = ( +/obj/item/paper{ + info = "Много людей отправили закладывать новый город... Но вот только строительство затянулось настолько, что мы проебали уже все полимеры На орбите остался лишь один несчастный фрегат устаревшего образца... Ещё и запасы плазмы, как жидкой так и в твёрдом состоянии на планете куда меньше, чем нам заверяли.. Хотя бы иногда отправляют еды и на том спасибо..."; + info_links = "Много людей отправили закладывать новый город... Но вот только строительство затянулось настолько, что мы проебали уже все полимеры На орбите остался лишь один несчастный фрегат устаревшего образца... Ещё и запасы плазмы, как жидкой так и в твёрдом состоянии на планете куда меньше, чем нам заверяли.. Хотя бы иногда отправляют еды и на том спасибо..." + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"nQi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/wood/fancy/royalblack, +/obj/item/stack/spacechips/c5000, +/turf/simulated/floor/plating, +/area/maintenance/casino) +"nQu" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitehall" + }, +/area/crew_quarters/sleep) +"nQD" = ( +/obj/machinery/smartfridge/medbay, +/obj/machinery/door/window/eastright{ + desc = "You have the public fridge, pal, lube off."; + name = "Anti-Theft Shield"; + req_access = list(5) + }, +/turf/simulated/floor/plating, +/area/medical/sleeper) +"nQO" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"nRn" = ( +/obj/structure/table, +/obj/item/storage/briefcase{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker) +"nRv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"nRJ" = ( +/obj/machinery/computer/operating{ + dir = 8 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"nRO" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_chamber) +"nRP" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"nRS" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"nRY" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/donut_box, +/turf/simulated/floor/carpet, +/area/bridge/checkpoint/south) +"nSb" = ( +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Chapel" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"nSc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/operating{ + dir = 8 + }, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"nSq" = ( +/obj/machinery/space_heater, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos/control) +"nSt" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"nSv" = ( +/obj/machinery/vending/hydronutrients{ + stat = 1; + obj_integrity = 95 + }, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/maintenance/garden) +"nSC" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/pump, +/obj/effect/decal/warning_stripes/eastnorthwest, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engineering/break_room) +"nSK" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26; + start_charge = 1 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/garden) +"nSL" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/greengrid, +/area/security/nuke_storage) +"nSM" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/crew_quarters/cabin1) +"nSQ" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker/locker_toilet) +"nTf" = ( +/turf/simulated/wall/r_wall/rust, +/area/turret_protected/ai_upload) +"nTj" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/secure_closet/freezer/meat/empty, +/obj/item/reagent_containers/food/snacks/meat/bird, +/obj/item/reagent_containers/food/snacks/meat/bird, +/obj/item/reagent_containers/food/snacks/meat/bird, +/obj/item/reagent_containers/food/snacks/meat/bird, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/kitchen) +"nTl" = ( +/obj/machinery/door/airlock/vault{ + locked = 1; + req_access = list(53) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"nTI" = ( +/obj/effect/decal/warning_stripes/southeast, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "purple" + }, +/area/assembly/chargebay) +"nTO" = ( +/obj/structure/closet/crate/miningcar{ + name = "mining car" + }, +/obj/item/stack/ore/silver{ + amount = 5 + }, +/obj/item/stack/ore/glass{ + amount = 21 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"nTS" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/reagent_containers/glass/beaker, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkpurple" + }, +/area/medical/virology/lab) +"nUb" = ( +/obj/machinery/door/window/brigdoor{ + dir = 8; + id = "Cell 3"; + name = "Cell 3"; + req_access = list(2) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"nUd" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/processing) +"nUf" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"nUm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"nUD" = ( +/obj/structure/flora/bush, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"nVb" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/hos) +"nVn" = ( +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"nVp" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"nVv" = ( +/turf/simulated/wall, +/area/quartermaster/sorting) +"nVR" = ( +/obj/structure/table/reinforced, +/obj/item/storage/bible, +/obj/item/reagent_containers/food/drinks/bottle/holywater, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/processing) +"nWe" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"nWk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/hydroponics) +"nWo" = ( +/obj/structure/alien/weeds, +/obj/structure/bed/nest, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"nWp" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"nWr" = ( +/obj/effect/decal/cleanable/generic, +/obj/effect/landmark/tiles/damageturf, +/obj/effect/decal/snow/sand/edge{ + dir = 5 + }, +/obj/effect/decal/snow/sand/edge{ + dir = 8 + }, +/obj/structure/barricade/wooden, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"nWx" = ( +/obj/structure/sign/securearea, +/turf/simulated/wall/r_wall, +/area/atmos) +"nWM" = ( +/obj/effect/spawner/window/reinforced/polarized{ + id = "privateroom" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/bar/atrium) +"nXd" = ( +/obj/machinery/computer/communications, +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain) +"nXg" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/bar) +"nXh" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/wood/fancy/cherry, +/area/library/game_zone) +"nXn" = ( +/obj/machinery/door_control{ + desiredstate = 1; + id = "toilet4"; + name = "Toilet Bolt Control"; + normaldoorcontrol = 1; + specialfunctions = 4; + pixel_y = -24 + }, +/obj/structure/toilet{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/toilet4) +"nXq" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"nXx" = ( +/obj/machinery/door/airlock{ + name = "Storeroom" + }, +/turf/simulated/floor/wood, +/area/coldcolony/ruin/miningbar) +"nXO" = ( +/obj/structure/closet/cabinet, +/obj/item/reagent_containers/food/drinks/bottle/whiskey, +/obj/item/reagent_containers/food/drinks/drinkingglass, +/obj/item/reagent_containers/food/drinks/drinkingglass, +/turf/simulated/floor/plasteel{ + icon_state = "bcarpet05" + }, +/area/blueshield) +"nXQ" = ( +/obj/machinery/vending/coffee, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library/game_zone) +"nXS" = ( +/obj/structure/filingcabinet, +/turf/simulated/floor/plasteel, +/area/ruin/unpowered) +"nYv" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/medical/sleeper) +"nYJ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood{ + icon_state = "wood-broken6" + }, +/area/hallway/secondary/entry/lounge) +"nYM" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay Foyer"; + req_access = list(5) + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"nYZ" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"nZb" = ( +/obj/structure/table, +/obj/item/reagent_containers/syringe/antiviral, +/obj/item/reagent_containers/syringe/charcoal, +/obj/item/reagent_containers/glass/bottle/morphine, +/obj/item/stack/medical/ointment/advanced{ + pixel_x = 6; + pixel_y = 8 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "arrival" + }, +/area/shuttle/pirate_corvette) +"nZr" = ( +/obj/structure/statue/chickenstatue, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch{ + pixel_x = 24 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"nZw" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "Bar"; + name = "Bar Privacy Shutters" + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/bar) +"nZE" = ( +/obj/effect/decal/warning_stripes/south, +/obj/machinery/status_display/supply_display{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"nZN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/securearmory) +"nZO" = ( +/obj/structure/mineral_door/wood, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel, +/area/ruin/unpowered) +"oab" = ( +/obj/item/flashlight, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"oad" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/rack, +/obj/item/wrench, +/obj/item/screwdriver, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"oal" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/security/checkpoint) +"oao" = ( +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/permabrig) +"oaw" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"oaD" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/clownoffice) +"oaM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkpurple" + }, +/area/bridge/vip) +"obl" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/crew_quarters/locker) +"obp" = ( +/turf/simulated/wall/r_wall, +/area/blueshield) +"obw" = ( +/obj/machinery/computer/arcade/battle, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/carpet/arcade, +/area/crew_quarters/fitness) +"oby" = ( +/obj/structure/closet/firecloset, +/obj/effect/decal/warning_stripes/red, +/obj/machinery/light, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"occ" = ( +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"ocl" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lantern, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"ocm" = ( +/obj/structure/chair/comfy/teal, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"ocu" = ( +/obj/item/crowbar/red, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"ocC" = ( +/obj/machinery/power/smes{ + charge = 4e+006; + output_level = 20000 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"ocE" = ( +/obj/machinery/status_display{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/main) +"ocL" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"ocM" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/locker/locker_toilet) +"odd" = ( +/obj/structure/table/wood, +/obj/item/hatchet/wooden, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"odf" = ( +/obj/machinery/door/airlock/research{ + name = "Research Division"; + welded = 1 + }, +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/wooden/crude{ + layer = 3.3 + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"odg" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/atmos) +"odm" = ( +/obj/structure/closet/secure_closet/freezer/vault, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/nuke_storage) +"odq" = ( +/turf/simulated/floor/plating, +/area/quartermaster/office) +"ody" = ( +/obj/effect/spawner/random_spawners/rodent, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"odA" = ( +/obj/structure/table, +/obj/item/kitchen/utensil/fork, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"odE" = ( +/obj/structure/table/glass, +/obj/item/folder/white, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/medical/virology/lab) +"odI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"odR" = ( +/obj/structure/ore_box, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"odY" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"oea" = ( +/obj/structure/closet/abductor, +/obj/item/cautery/alien, +/turf/simulated/floor/mineral/abductor{ + oxygen = 22; + temperature = 180; + nitrogen = 82 + }, +/area/ruin/unpowered) +"oeb" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/engineering/engine) +"oev" = ( +/obj/item/light/tube, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"oeY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"ofa" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/wood/fancy/cherry{ + icon_state = "fancy-wood-cherry-broken3" + }, +/area/library/game_zone) +"ofu" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"ofw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/virology/lab) +"ofI" = ( +/obj/machinery/photocopier, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/checkpoint) +"ofW" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"ofY" = ( +/obj/machinery/light, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"ogb" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"ogc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/landmark/start/scientist, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"ogd" = ( +/turf/simulated/floor/plating, +/area/coldcolony/ruin/syndie_outpost) +"oge" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"ogo" = ( +/obj/structure/table/reinforced, +/obj/machinery/power/apc{ + pixel_y = -26 + }, +/obj/structure/cable, +/obj/item/storage/toolbox/electrical, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/atmos/control) +"ogz" = ( +/obj/machinery/atm{ + pixel_x = -32 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"ogJ" = ( +/obj/structure/rack, +/obj/item/mecha_parts/mecha_equipment/drill, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/coldcolony/ruin/abandoned_garage) +"ogK" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/table, +/turf/simulated/floor/wood, +/area/toxins/storage) +"ohl" = ( +/obj/structure/table/tray, +/obj/item/scalpel{ + pixel_y = 5 + }, +/obj/item/autopsy_scanner, +/obj/item/clothing/gloves/color/latex, +/turf/simulated/floor/wood, +/area/coldcolony/morgue) +"ohs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"ohw" = ( +/obj/structure/bed, +/obj/item/bedsheet/red, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"ohH" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance/double, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"ohJ" = ( +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"ohL" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"ohN" = ( +/turf/simulated/floor/plasteel/white, +/area/medical/cmo) +"ohR" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"ohT" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"oib" = ( +/mob/living/simple_animal/cock/Commandor, +/turf/simulated/floor/grass, +/area/hydroponics) +"oik" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/pirate/ranged{ + loot = list(/obj/effect/mob_spawn/human/corpse/pirate/ranged) + }, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"oiv" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker) +"oiD" = ( +/obj/structure/table/wood, +/obj/item/toner{ + pixel_y = 6 + }, +/obj/item/toner{ + pixel_y = 4 + }, +/turf/simulated/floor/plasteel/grimy, +/area/civilian/vacantoffice) +"oiJ" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera{ + c_tag = "Rec Room" + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"oiP" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/carpet/royalblue, +/area/bridge/vip) +"oiQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood/fancy/oak, +/area/blueshield) +"oiS" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/portable_atmospherics/scrubber, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"ojB" = ( +/obj/effect/decal/ants, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken7" + }, +/area/coldcolony/ruin/abandoned_banya) +"ojE" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/commercial) +"ojI" = ( +/obj/machinery/reagentgrinder, +/obj/structure/table/wood, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"ojU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"ojX" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken2" + }, +/area/coldcolony/ruin/abandoned_house) +"okk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/recharge_station, +/obj/machinery/camera{ + c_tag = "Medbay Exam Room North"; + network = list("SS13","Medical") + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"okw" = ( +/obj/machinery/atmospherics/binary/volume_pump/on, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"okD" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/nuke_storage) +"okR" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"okS" = ( +/obj/machinery/computer, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"olf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/medical/research/shallway) +"olh" = ( +/obj/structure/chair/comfy/shuttle, +/obj/effect/turf_decal/siding/wideplating, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"oli" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"olk" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_lab) +"olo" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light_switch{ + pixel_y = 24; + pixel_x = 8 + }, +/obj/machinery/camera{ + c_tag = "Engineering Lobby"; + network = list("Engineering","SS13") + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 28; + pixel_x = -4 + }, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engineering/break_room) +"ols" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/obj/machinery/light_switch{ + pixel_x = -8; + pixel_y = -24 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/permahallway) +"olz" = ( +/turf/simulated/wall, +/area/crew_quarters/mrchangs) +"olS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + active_power_usage = 0; + dir = 8; + icon_state = "tube-broken"; + status = 2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"omg" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/structure/mineral_door/wood, +/obj/structure/holosign/barrier/atmos{ + alpha = 90; + layer = 2.9 + }, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"omC" = ( +/obj/structure/sink{ + pixel_y = 22 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker/locker_toilet) +"omL" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkblue" + }, +/area/bridge/vip) +"omX" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/rack, +/obj/random/tool, +/obj/item/weldingtool, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"onc" = ( +/obj/structure/sign/electricshock, +/turf/simulated/wall, +/area/maintenance/asmaint) +"onl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/circuitboard/bodyscanner, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/tank/internals/generic, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"onp" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"ons" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/bar) +"onS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin2) +"onX" = ( +/turf/simulated/wall, +/area/maintenance/asmaint) +"ooe" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/maintenance/kitchen) +"ook" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel/white, +/area/medical/chemistry) +"ooy" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/security/checkpoint) +"ooG" = ( +/obj/item/stack/cable_coil, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/turf/simulated/floor/plating, +/area/maintenance/perma) +"opa" = ( +/obj/machinery/porta_turret/syndicate/pod{ + name = "machine gun turret (4.6x30mm)"; + faction = "pirate"; + dir = 1; + stat = 1; + icon_state = "syndieturret2"; + icon_state_initial = "syndieturret2" + }, +/turf/simulated/wall/shuttle/nosmooth{ + dir = 5; + icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi'; + icon_state = "gray_walls_corners"; + density = 0 + }, +/area/shuttle/pirate_corvette) +"opu" = ( +/obj/effect/decal/warning_stripes/red/partial, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "redcorner" + }, +/area/security/lobby) +"opC" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"opF" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood/fancy/light{ + icon_state = "light-fancy-wood-broken6"; + color = "orange" + }, +/area/magistrateoffice) +"opO" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/space_heater, +/obj/machinery/light, +/obj/structure/sign/poster/official/air1{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"opP" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/holosign/barrier/engineering, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"opQ" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/wardrobe/robotics_black, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/storage/belt/utility, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/clothing/glasses/welding, +/obj/item/clothing/glasses/welding, +/obj/item/clothing/glasses/hud/diagnostic{ + pixel_x = 2; + pixel_y = 5 + }, +/obj/item/clothing/glasses/hud/diagnostic{ + pixel_x = 2; + pixel_y = 5 + }, +/obj/item/radio/headset/headset_sci{ + pixel_x = -3 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whitepurple" + }, +/area/assembly/robotics) +"oqo" = ( +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/office) +"oqu" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/structure/flora/ausbushes/sunnybush, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/grass, +/area/hallway/secondary/exit) +"oqB" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/obj/structure/sign/poster/official/pinup_b{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"oqD" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"oqJ" = ( +/obj/structure/closet/cabinet, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"oqX" = ( +/obj/structure/table, +/obj/machinery/kitchen_machine/microwave, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"ora" = ( +/obj/machinery/computer/med_data, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"ord" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"orm" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"osp" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/south, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"osq" = ( +/obj/effect/decal/warning_stripes/south, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/engine, +/area/coldcolony/ruin/sm_chamber) +"ost" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/janitor) +"osA" = ( +/obj/effect/landmark/start/bartender, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/bar) +"osD" = ( +/obj/effect/turf_decal/stripes{ + dir = 9 + }, +/obj/structure/fence/corner{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"osH" = ( +/obj/structure/closet/crate, +/obj/item/taperecorder, +/obj/item/clipboard, +/obj/item/stack/packageWrap, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/item/hand_labeler, +/turf/simulated/floor/plating, +/area/toxins/explab) +"osI" = ( +/obj/item/mounted/frame/extinguisher, +/turf/simulated/floor/plating, +/area/toxins/explab) +"osP" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/door_control{ + id = "rdprivacy"; + name = "Privacy Shutters"; + pixel_x = -24; + pixel_y = 9 + }, +/obj/machinery/computer/robotics, +/obj/machinery/light_switch{ + pixel_x = -21; + pixel_y = -8 + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/hor) +"oti" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"ott" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/hallway/primary/starboard/east) +"otB" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"otF" = ( +/obj/structure/dresser, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/crew_quarters/cabin1) +"otI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"otK" = ( +/turf/simulated/wall, +/area/medical/research/shallway) +"otO" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"otV" = ( +/obj/structure/rack, +/obj/item/pickaxe/safety, +/obj/item/pickaxe/safety, +/obj/item/storage/bag/ore, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"oub" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"ouf" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"ouk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"ouu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"ouy" = ( +/obj/item/chair/stool, +/obj/effect/decal/cleanable/ash, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"ouH" = ( +/obj/structure/sign/poster/official/random, +/turf/simulated/wall, +/area/library/game_zone) +"ouN" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/plating, +/area/maintenance/perma) +"ouS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"ouT" = ( +/obj/item/paper/crumpled, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "purplecorner" + }, +/area/coldcolony/ruin/sm_lab) +"ouV" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/security/securearmory) +"ovd" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light{ + icon_state = "light-fancy-wood-broken3"; + color = "orange" + }, +/area/magistrateoffice) +"ovo" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/firedoor, +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/mining{ + name = "Cargo" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"ovu" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/bridge/meeting_room) +"ovH" = ( +/turf/simulated/wall/r_wall, +/area/assembly/robotics) +"ovO" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/landmark/start/student_sientist, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/research) +"ovS" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/sign/poster/contraband/Enlist_Syndicate{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"owu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/nuke_storage) +"owA" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/spray/cleaner/brig{ + pixel_x = 4; + pixel_y = 7 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/processing) +"owR" = ( +/obj/structure/table, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"owV" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"owY" = ( +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"oxe" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + initialize_directions = 10 + }, +/obj/machinery/door/airlock/command/glass{ + name = "Server Room"; + req_access = list(30) + }, +/turf/simulated/floor/plating, +/area/toxins/server) +"oxj" = ( +/obj/structure/closet/secure_closet/brig{ + id = "Cell 4"; + name = "Cell 4 Locker" + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"oxk" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"oxY" = ( +/turf/simulated/wall/rust, +/area/maintenance/asmaint3) +"oya" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"oyd" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) +"oyh" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/machinery/light{ + active_power_usage = 0; + dir = 8; + icon_state = "tube-broken"; + status = 2 + }, +/obj/structure/sign/nosmoking_2{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_chamber) +"oyj" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"oyl" = ( +/obj/item/grenade/clusterbuster/honk, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"oyD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"ozb" = ( +/obj/machinery/atmospherics/binary/volume_pump{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/atmos) +"ozh" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"ozA" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"oAf" = ( +/turf/simulated/wall/r_wall, +/area/coldcolony/ruin/sm_division) +"oAg" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"oAr" = ( +/obj/machinery/door/airlock{ + name = "Unisex Showers" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker/locker_toilet) +"oAv" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"oAD" = ( +/obj/machinery/smartfridge/secure/medbay/organ, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitered" + }, +/area/security/medbay) +"oAI" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/storage/box/flashbangs, +/obj/item/storage/box/flashbangs{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"oAT" = ( +/obj/structure/table/reinforced, +/obj/machinery/kitchen_machine/microwave{ + pixel_x = -1; + pixel_y = 7 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"oAY" = ( +/turf/simulated/floor/wood{ + icon_state = "wood-broken7" + }, +/area/crew_quarters/theatre) +"oAZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/sorting) +"oBc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/landmark/marauder_entry, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"oBd" = ( +/obj/structure/window/full/reinforced/ice, +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"oBi" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteredfull" + }, +/area/security/medbay) +"oBw" = ( +/obj/structure/marker_beacon, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"oBB" = ( +/obj/machinery/vending/cigarette/free, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/hos) +"oBC" = ( +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"oBX" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/wood/oak, +/area/civilian/vacantoffice) +"oBZ" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkblue" + }, +/area/bridge/vip) +"oCf" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/critter/pig, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/sorting) +"oCJ" = ( +/obj/structure/alien/weeds, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"oDk" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/closet, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"oDp" = ( +/obj/structure/rack, +/obj/item/clothing/suit/hooded/wintercoat/miner, +/obj/item/clothing/suit/hooded/wintercoat/miner, +/obj/item/clothing/suit/hooded/wintercoat/miner, +/obj/item/clothing/suit/hooded/wintercoat/miner, +/obj/item/clothing/suit/hooded/wintercoat/miner, +/obj/item/clothing/suit/hooded/wintercoat/miner, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"oDw" = ( +/obj/structure/rack, +/obj/item/crowbar, +/obj/item/crowbar, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"oDH" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/packageWrap, +/obj/item/storage/fancy/rollingpapers, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"oEl" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/sunnybush, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"oEw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"oEz" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"oEB" = ( +/turf/simulated/wall/r_wall/rust, +/area/security/prison/cell_block/A) +"oED" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/lounge) +"oEM" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"oEW" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/hallway/primary/central/nw) +"oFe" = ( +/obj/structure/closet/wardrobe/coroner, +/obj/item/camera, +/obj/item/clothing/suit/hooded/wintercoat/medical, +/obj/item/flashlight, +/turf/simulated/floor/wood{ + broken = 1; + icon_state = "wood-broken" + }, +/area/coldcolony/morgue) +"oFn" = ( +/obj/structure/flora/ausbushes/leafybush, +/turf/simulated/floor/grass, +/area/hydroponics) +"oFH" = ( +/turf/simulated/floor/plasteel, +/area/crew_quarters/kitchen) +"oFP" = ( +/obj/machinery/space_heater, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"oGo" = ( +/obj/effect/landmark/start/brig_physician, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/security/medbay) +"oGF" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"oGI" = ( +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/main) +"oGV" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "mining_internal" + }, +/obj/machinery/mineral/unloading_machine{ + dir = 1; + icon_state = "unloader-corner" + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"oHa" = ( +/obj/structure/table, +/obj/item/hand_labeler, +/obj/item/crowbar, +/obj/machinery/vending/wallmed{ + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/janitor) +"oHc" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/coldcolony/ruin/abandoned_garage) +"oHd" = ( +/turf/simulated/wall/rust, +/area/maintenance/apmaint) +"oHA" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"oHE" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"oHK" = ( +/obj/machinery/power/smes/vintage, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"oIe" = ( +/obj/effect/turf_decal/arrows{ + dir = 8 + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/lounge) +"oIk" = ( +/obj/structure/chair/sofa/pew/left{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "chapel" + }, +/area/chapel/main) +"oIm" = ( +/obj/structure/closet/crate/sci, +/obj/item/storage/box/disks{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/box/syringes, +/obj/item/storage/box/monkeycubes, +/obj/item/storage/box/monkeycubes/neaeracubes, +/obj/item/storage/box/monkeycubes/stokcubes, +/obj/item/storage/box/monkeycubes/farwacubes, +/obj/item/storage/box/monkeycubes/wolpincubes, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/genetics) +"oIq" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining{ + name = "Escape Shuttle"; + req_access = list(31,50) + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel, +/area/quartermaster/office) +"oIs" = ( +/turf/simulated/wall/rust, +/area/atmos/control) +"oIy" = ( +/obj/structure/chair/stool/bar, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"oIF" = ( +/obj/effect/decal/warning_stripes/southeast, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"oIN" = ( +/obj/machinery/door/airlock{ + name = "Unisex Restrooms" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker/locker_toilet) +"oIT" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"oJg" = ( +/obj/effect/landmark/start/student_sientist, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/toxins/lab) +"oJn" = ( +/obj/structure/closet/firecloset, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/north) +"oJq" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"oJu" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"oJz" = ( +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/structure/fence{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"oJD" = ( +/obj/machinery/door_control{ + desiredstate = 1; + id = "Perma11"; + name = "First Cell Brig Bolts"; + normaldoorcontrol = 1; + pixel_x = -38; + req_access = list(2); + specialfunctions = 4 + }, +/obj/machinery/door_control{ + desiredstate = 1; + id = "Perma12"; + name = "First Cell Perma Bolts"; + normaldoorcontrol = 1; + pixel_x = -24; + req_access = list(2); + specialfunctions = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/permabrig) +"oJH" = ( +/obj/effect/decal/cleanable/blood/tracks, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken5" + }, +/area/coldcolony/ruin/abandoned_banya) +"oKj" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/closet/crate/trashcart, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"oKt" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"oKy" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"oKE" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engineering/break_room) +"oKN" = ( +/obj/structure/dresser, +/turf/simulated/floor/carpet/cyan, +/area/bridge/vip) +"oKT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"oKW" = ( +/obj/structure/closet/crate/sci, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/matter_bin, +/obj/item/circuitboard/monkey_recycler, +/obj/item/circuitboard/reagentgrinder, +/obj/item/circuitboard/processor, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"oLa" = ( +/obj/structure/dresser, +/turf/simulated/floor/carpet/orange, +/area/bridge/vip) +"oLi" = ( +/obj/machinery/photocopier, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/warden) +"oLq" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/stamp/hop, +/obj/item/pen/fancy, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Head of Personnel's Desk"; + departmentType = 5; + name = "Head of Personnel Requests Console"; + pixel_x = 30 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"oLH" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/portables_connector, +/obj/machinery/portable_atmospherics/canister/oxygen{ + name = "Canister: \[O2] (CRYO)" + }, +/obj/machinery/door/window/southright{ + name = "Cryo Tank Storage"; + req_access = list(5,24) + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"oLJ" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/brig) +"oLL" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutralcorner" + }, +/area/crew_quarters/kitchen) +"oLX" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/structure/chair/sofa/pew/right{ + dir = 8 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"oMe" = ( +/turf/simulated/wall/rust, +/area/medical/paramedic) +"oMp" = ( +/obj/structure/chair/comfy/black{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/grimy, +/area/civilian/vacantoffice) +"oMF" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"oMO" = ( +/obj/effect/mine/stun, +/obj/structure/flora/grass/green, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"oMR" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/worn_out{ + pixel_x = 26; + dir = 4; + cell_type = 0 + }, +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating, +/area/maintenance/casino) +"oMS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/securearmory) +"oMW" = ( +/obj/effect/decal/warning_stripes/west, +/obj/machinery/computer/atmos_alert, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/chief) +"oNw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/north, +/obj/effect/landmark/start/chemist, +/obj/effect/landmark/tiles/burnturf, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/simulated/floor/engine, +/area/medical/chemistry) +"oNU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel/grimy, +/area/civilian/vacantoffice) +"oNW" = ( +/obj/structure/closet/secure_closet/medical2{ + req_access = list(160) + }, +/obj/item/stack/nanopaste, +/obj/item/storage/box/syringes{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/storage/firstaid/doctor, +/obj/item/handheld_defibrillator, +/obj/item/storage/box/bodybags, +/obj/item/soap, +/obj/item/storage/pill_bottle/patch_pack, +/obj/item/storage/pill_bottle, +/obj/item/storage/belt/medical, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "arrivalcorner" + }, +/area/shuttle/pirate_corvette) +"oOd" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"oOB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/virology/lab) +"oON" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"oOU" = ( +/obj/effect/decal/ants, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"oPg" = ( +/obj/structure/chair/sofa/pew/right{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "chapel" + }, +/area/chapel/main) +"oPk" = ( +/obj/structure/chair/comfy/beige, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/bridge/checkpoint/south) +"oPF" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"oPG" = ( +/obj/structure/closet/secure_closet/brig{ + id = "Cell 5"; + name = "Cell 5 Locker" + }, +/obj/machinery/light, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"oPJ" = ( +/obj/effect/mine/explosive, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"oQb" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/assembly/robotics) +"oQd" = ( +/obj/machinery/computer/security/wooden_tv{ + network = list("SS13","Research Outpost","Mining Outpost") + }, +/obj/structure/table/wood, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/wood, +/area/security/detectives_office) +"oQi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) +"oQr" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkbluecorners" + }, +/area/hallway/primary/fore) +"oQx" = ( +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"oQz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/syndie_outpost) +"oQH" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"oQJ" = ( +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/obj/structure/table, +/obj/item/storage/belt/medical, +/obj/machinery/light_switch{ + pixel_x = -22; + pixel_y = 24 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/paramedic) +"oQX" = ( +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"oQY" = ( +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep) +"oRi" = ( +/turf/simulated/wall, +/area/chapel/main) +"oRk" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"oRt" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/customs) +"oRy" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/customs) +"oRN" = ( +/obj/structure/closet/fireaxecabinet{ + pixel_x = 32 + }, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/nuke_storage) +"oSt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event/revenantspawn, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"oSv" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/permabrig) +"oSI" = ( +/turf/simulated/wall/rust, +/area/crew_quarters/theatre) +"oSM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/shreds, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"oSQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/secondary/entry/lounge) +"oTf" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/bar) +"oTm" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 1; + name = "Труба фильтрации" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "caution" + }, +/area/atmos) +"oTq" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"oTY" = ( +/obj/structure/wooden_sign{ + name = "MINE!!!"; + desc = "THERE IS FUCKING MINE!!!" + }, +/turf/simulated/floor/plating, +/area/engineering/gravitygenerator) +"oUc" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"oUg" = ( +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"oUz" = ( +/obj/effect/decal/warning_stripes/northwest, +/obj/structure/table, +/obj/item/soap, +/turf/simulated/floor/plasteel, +/area/crew_quarters/kitchen) +"oUA" = ( +/obj/structure/fence, +/obj/effect/turf_decal/stripes{ + dir = 1 + }, +/obj/structure/flora/grass/brown, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"oUN" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"oVa" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 9 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"oVj" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/cmostore) +"oVy" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutralcorner" + }, +/area/crew_quarters/kitchen) +"oVF" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/palebush, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"oVR" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/warning_stripes/blue, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"oVT" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/bottle/whiskey, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/obj/item/reagent_containers/food/drinks/flask/detflask, +/obj/item/lighter/zippo/detective, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/simulated/floor/wood, +/area/security/detectives_office) +"oWc" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"oWk" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"oWq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"oWB" = ( +/turf/simulated/wall, +/area/quartermaster/office) +"oXc" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"oXQ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkpurple" + }, +/area/medical/virology/lab) +"oXV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"oXZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"oYc" = ( +/turf/simulated/floor/plating, +/area/hallway/secondary/exit) +"oYi" = ( +/obj/structure/table, +/obj/machinery/recharger{ + pixel_x = 1; + pixel_y = 3 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/processing) +"oYl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"oYo" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"oYz" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/blood/diona, +/obj/item/reagent_containers/iv_bag/blood/kidan, +/obj/item/reagent_containers/iv_bag/blood/skrell, +/obj/item/reagent_containers/iv_bag/blood/unathi, +/obj/item/reagent_containers/iv_bag/blood/vulpkanin, +/obj/effect/decal/warning_stripes/blue/hollow, +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/sleeper) +"oYW" = ( +/turf/simulated/wall/rust, +/area/medical/sleeper) +"oZd" = ( +/obj/structure/closet/wardrobe/yellow, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"oZh" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"oZm" = ( +/obj/structure/table, +/obj/item/kitchen/utensil/spoon, +/turf/simulated/floor/plasteel, +/area/crew_quarters/kitchen) +"oZD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/eastarrival) +"pai" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Magazines for SMG" + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/ammo_box/magazine/wt550m9, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = 6; + pixel_y = -6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"pap" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteredfull" + }, +/area/security/medbay) +"pax" = ( +/obj/structure/sign/poster/contraband/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"paC" = ( +/obj/structure/chair/sofa{ + dir = 1 + }, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/theatre) +"paN" = ( +/obj/effect/decal/warning_stripes/south, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"paU" = ( +/obj/structure/chair/stool, +/turf/simulated/floor/carpet, +/area/maintenance/casino) +"pbc" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"pbk" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"pbn" = ( +/obj/structure/table/wood, +/obj/item/folder/blue{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/item/storage/fancy/cigarettes/cigpack_robustgold, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/oak, +/area/blueshield) +"pbo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"pbR" = ( +/obj/item/flag/nt, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/hallway/primary/fore) +"pbT" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/bridge/meeting_room) +"pbV" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/bear/polar, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"pcE" = ( +/obj/structure/flora/grass/green, +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"pcG" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/crew_quarters/chief) +"pcU" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"pdb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredcorners" + }, +/area/security/brig) +"pdj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"pdv" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"pdw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"pdy" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/hop) +"pdA" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken7" + }, +/area/ruin/unpowered) +"pdN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/reception) +"pdZ" = ( +/obj/machinery/door/airlock/engineering{ + name = "Generators"; + req_access = list(10) + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) +"peX" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"pff" = ( +/obj/structure/table, +/obj/item/storage/firstaid/aquatic_kit/full, +/obj/item/fish_eggs/shrimp, +/obj/item/fish_eggs/shrimp, +/obj/item/fish_eggs/salmon, +/obj/item/fish_eggs/salmon, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/hydroponics) +"pfl" = ( +/obj/structure/grille, +/obj/structure/window/plasmareinforced, +/obj/structure/window/plasmareinforced{ + dir = 4 + }, +/obj/structure/window/plasmareinforced{ + dir = 1 + }, +/obj/structure/window/plasmareinforced{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 4; + name = "Труба смешивания" + }, +/turf/simulated/floor/plating, +/area/atmos) +"pfr" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/sign/poster/contraband/power_people{ + pixel_y = -32 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"pfA" = ( +/obj/structure/snowman/short, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"pfF" = ( +/obj/structure/rack, +/obj/item/reagent_containers/food/drinks/cans/beer, +/obj/item/reagent_containers/food/drinks/cans/beer, +/obj/item/reagent_containers/food/drinks/cans/beer, +/obj/item/reagent_containers/food/drinks/cans/beer, +/obj/item/reagent_containers/food/drinks/cans/beer, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"pfG" = ( +/obj/item/stock_parts/manipulator, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"pga" = ( +/obj/machinery/atmospherics/air_sensor{ + id_tag = "o2_sensor" + }, +/obj/machinery/camera{ + c_tag = "Atmospherics Oxygen Tank"; + network = list("SS13","Engineering") + }, +/turf/simulated/floor/engine/o2{ + oxygen = 10000 + }, +/area/atmos) +"pgc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"pge" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "researchdesk1"; + name = "Research Desk Shutters" + }, +/turf/simulated/floor/plating, +/area/toxins/lab) +"pgh" = ( +/obj/effect/decal/warning_stripes/arrow{ + pixel_y = 15 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/fore) +"pgC" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/item/reagent_containers/food/drinks/bottle/vodka{ + desc = "For the Cargonia!"; + name = "Molotov cocktail" + }, +/obj/structure/table, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"pgK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkpurple" + }, +/area/medical/virology/lab) +"pgT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"phb" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 6 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/decal/warning_stripes/blue/hollow, +/obj/structure/sign/poster/official/help_others{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"pho" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/item/stack/sheet/metal, +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"phA" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"pig" = ( +/turf/simulated/floor/mineral/abductor{ + oxygen = 22; + temperature = 180; + nitrogen = 82 + }, +/area/ruin/unpowered) +"pip" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "Mime"; + name = "Mime Privacy Shutters" + }, +/turf/simulated/floor/plating, +/area/mimeoffice) +"piJ" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"piK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"piX" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"pjd" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"pjr" = ( +/turf/simulated/floor/plating, +/area/security/processing) +"pjw" = ( +/obj/structure/chair/sofa/right{ + dir = 8 + }, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/theatre) +"pjB" = ( +/obj/structure/table, +/obj/item/storage/fancy/crayons, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"pjE" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"pjN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/hallway/primary/fore) +"pkj" = ( +/obj/machinery/recharge_station, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"pks" = ( +/obj/machinery/vending/cigarette, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/bridge) +"pkx" = ( +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"pky" = ( +/obj/item/flag/cargo, +/obj/machinery/button/windowtint{ + dir = 1; + id = "qm_snow"; + pixel_x = 5; + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/quartermaster/qm) +"pkD" = ( +/obj/item/chair/wood{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"pkE" = ( +/turf/simulated/wall/r_wall/rust, +/area/security/execution) +"pkT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"pkW" = ( +/obj/machinery/power/apc{ + pixel_y = 26; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkblue" + }, +/area/bridge/vip) +"plh" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/quartermaster/storage) +"plo" = ( +/obj/structure/chair/sofa/right{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/magistrateoffice) +"plA" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/officetoys, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"plB" = ( +/obj/effect/decal/cleanable/ash, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"plM" = ( +/obj/structure/table/wood/poker, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"pmk" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"pmm" = ( +/obj/structure/table/wood, +/obj/item/storage/briefcase, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/carpet, +/area/bridge/checkpoint/south) +"pmr" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"pmv" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/table/wood{ + color = "brown" + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/coldcolony/ruin/miningbar) +"pmA" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"pmH" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/structure/barricade/wooden/crude/snow{ + layer = 3.3 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/miningbar) +"pmP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/walllocker/emerglocker/east, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"pmQ" = ( +/obj/machinery/computer/general_air_control/large_tank_control{ + input_tag = "mix_in"; + name = "Gas Mix Tank Control"; + output_tag = "mix_out"; + sensors = list("mix_sensor"="Tank") + }, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 4; + name = "Труба фильтрации" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"pmV" = ( +/obj/structure/chair, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"pnh" = ( +/obj/item/paper{ + pixel_x = 3; + pixel_y = -8 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"pni" = ( +/obj/structure/closet/secure_closet/atmos_personal, +/obj/item/extinguisher/mini, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/decal/warning_stripes/south, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"pnH" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/glass/rag, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"pnK" = ( +/obj/item/trash/semki, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"pnP" = ( +/obj/machinery/photocopier, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/lobby) +"pnR" = ( +/turf/simulated/wall, +/area/hallway/primary/central/nw) +"pnT" = ( +/obj/machinery/door/poddoor/shutters{ + id_tag = "engigarage"; + dir = 1 + }, +/obj/structure/fans/tiny, +/obj/effect/decal/warning_stripes/yellow, +/obj/effect/decal/snow/sand/edge{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"pnW" = ( +/obj/structure/sign/directions/cargo{ + pixel_y = -7 + }, +/obj/structure/sign/directions/science{ + pixel_y = 7 + }, +/obj/structure/sign/directions/evac, +/turf/simulated/wall/mineral/wood/nonmetal, +/area/coldcolony/morgue) +"poc" = ( +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"pof" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"ppl" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken" + }, +/area/ruin/unpowered) +"ppy" = ( +/obj/effect/mine/stun, +/obj/structure/flora/grass/brown, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"ppK" = ( +/obj/structure/chair/stool, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"ppP" = ( +/obj/item/reagent_containers/food/snacks/pistachios, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_lab) +"ppQ" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/metal{ + amount = 10 + }, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engineering/break_room) +"ppS" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/hallway/primary/fore) +"pqi" = ( +/turf/simulated/floor/plasteel, +/area/hallway/secondary/exit) +"pqq" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/table, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"pqw" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker) +"pqy" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/main) +"pqO" = ( +/obj/effect/mine/stun, +/obj/structure/flora/grass/both, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"pqU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"pre" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"prj" = ( +/turf/simulated/wall, +/area/coldcolony/ruin/sm_division) +"prs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/nosmoking_2{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"prv" = ( +/obj/structure/lattice, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating/asteroid, +/area/coldcolony/ruin/sm_chamber) +"prw" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/table, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/obj/item/stack/tape_roll, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "whitehall" + }, +/area/crew_quarters/sleep) +"prz" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder{ + pixel_x = -1; + pixel_y = 9 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "green" + }, +/area/hydroponics) +"prR" = ( +/obj/structure/table/wood, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"pss" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 5 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken6" + }, +/area/ruin/unpowered) +"psx" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/candle_box/eternal, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"psI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"psL" = ( +/obj/structure/table/wood, +/obj/machinery/keycard_auth{ + pixel_y = 7; + pixel_x = 6 + }, +/obj/item/folder/blue, +/obj/item/paper{ + info = "Колония должна выжить!!!"; + info_links = "Колония должна выжить!!!" + }, +/turf/simulated/floor/wood/fancy/light, +/area/bridge) +"pta" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) +"ptd" = ( +/turf/simulated/wall, +/area/library) +"pth" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"ptv" = ( +/obj/item/book/manual/supermatter_engine, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"ptz" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/structure/flora/ausbushes/sunnybush, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"puj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"puk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"puu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"puE" = ( +/obj/structure/bed, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"puF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "caution" + }, +/area/atmos) +"puK" = ( +/obj/structure/dispenser/oxygen, +/obj/effect/decal/warning_stripes/red, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"puM" = ( +/obj/effect/decal/warning_stripes/east, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/coldcolony/ruin/abandoned_garage) +"puP" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel, +/area/security/checkpoint) +"puX" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/bottle/cognac, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/heads/hop) +"pvf" = ( +/obj/structure/chair/sofa/pew/right{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "chapel" + }, +/area/chapel/main) +"pvk" = ( +/obj/machinery/shower{ + dir = 8; + tag = "icon-shower (WEST)" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"pvn" = ( +/turf/simulated/wall/shuttle/nosmooth{ + icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' + }, +/area/shuttle/pirate_corvette) +"pvu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"pvM" = ( +/obj/structure/toilet{ + anchored = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"pwe" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel/grimy, +/area/civilian/vacantoffice) +"pwi" = ( +/obj/machinery/door_timer/cell_2{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"pwn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"pws" = ( +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"pwt" = ( +/turf/simulated/wall/r_wall/coated, +/area/toxins/test_chamber) +"pww" = ( +/obj/structure/table/wood, +/obj/machinery/computer/security/wooden_tv, +/turf/simulated/floor/wood/fancy/light, +/area/bridge) +"pwQ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"pwR" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry) +"pxc" = ( +/obj/effect/decal/warning_stripes/west, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"pxs" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction, +/turf/simulated/wall/r_wall, +/area/coldcolony/ruin/sm_chamber) +"pxx" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"pxI" = ( +/obj/structure/closet/secure_closet/brig, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/permabrig) +"pyp" = ( +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"pyB" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 1; + name = "Труба фильтрации" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "caution" + }, +/area/atmos) +"pyL" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/closet/secure_closet/roboticist, +/obj/item/radio/headset/headset_sci{ + pixel_x = -3 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/assembly/robotics) +"pyS" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"pyZ" = ( +/obj/effect/spawner/random_spawners/fungus_70, +/turf/simulated/wall, +/area/maintenance/kitchen) +"pzh" = ( +/obj/structure/bookcase, +/turf/simulated/floor/plasteel/grimy, +/area/civilian/vacantoffice) +"pzw" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/turf/simulated/floor/wood{ + icon_state = "wood-broken3" + }, +/area/crew_quarters/bar/atrium) +"pzy" = ( +/obj/structure/dresser, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep) +"pzH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/scientist, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"pzL" = ( +/turf/simulated/wall/rust, +/area/security/brigstaff) +"pzR" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plating, +/area/crew_quarters/fitness) +"pzW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/brig) +"pAf" = ( +/obj/machinery/computer/general_air_control{ + name = "Tank Monitor"; + sensors = list("n2_sensor"="Nitrogen","o2_sensor"="Oxygen","air_sensor"="Air Mix","mix_sensor"="Gas Mix Tank") + }, +/obj/machinery/light_switch{ + pixel_y = 24; + pixel_x = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos/control) +"pAh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"pAk" = ( +/obj/effect/turf_decal/weather/snow/corner, +/obj/structure/fence/door/opened{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"pAo" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"pAv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + active_power_usage = 0; + dir = 4; + icon_state = "tube-broken"; + status = 2 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"pAH" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"pBo" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/condiment/enzyme{ + layer = 5; + pixel_y = 14 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"pBp" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"pBs" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"pBE" = ( +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"pBM" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "red" + }, +/area/hallway/primary/starboard/east) +"pBT" = ( +/turf/simulated/wall/rust, +/area/crew_quarters/mrchangs) +"pCj" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) +"pCm" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"pCu" = ( +/obj/structure/closet/secure_closet/chaplain, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"pCA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) +"pCB" = ( +/obj/machinery/door/airlock/highsecurity{ + heat_proof = 1; + name = "Waste Incinerator"; + req_access = list(12,24,39) + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"pCF" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkredcorners" + }, +/area/security/brig) +"pCO" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "restaurant"; + layer = 2; + name = "Restaurant Shutters"; + dir = 2 + }, +/turf/simulated/floor/plating, +/area/maintenance/kitchen) +"pCV" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"pDk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/medical3, +/obj/item/clothing/suit/hooded/wintercoat/medical, +/obj/item/storage/belt/medical, +/obj/item/clothing/glasses/hud/health, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/cmostore) +"pDl" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"pDp" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/abandoned_garage) +"pDq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"pDt" = ( +/obj/structure/window/reinforced, +/obj/machinery/bodyscanner, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/execution) +"pDJ" = ( +/obj/item/toy/figure/mime{ + pixel_x = -5; + pixel_y = 1 + }, +/obj/item/stamp/mime{ + pixel_x = 5 + }, +/obj/structure/table/wood, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) +"pDT" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"pDU" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"pEu" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"pEQ" = ( +/obj/machinery/chem_dispenser, +/turf/simulated/floor/engine, +/area/medical/chemistry) +"pES" = ( +/turf/simulated/wall/rust, +/area/assembly/chargebay) +"pET" = ( +/obj/effect/decal/cleanable/tomato_smudge, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"pFb" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/permahallway) +"pFr" = ( +/obj/structure/table, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/destTagger, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"pFE" = ( +/obj/structure/table/wood, +/obj/item/restraints/handcuffs, +/obj/item/flash, +/turf/simulated/floor/wood/fancy/light, +/area/bridge) +"pFF" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/hallway/primary/fore) +"pFQ" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/hallway/primary/starboard/east) +"pGm" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"pGn" = ( +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"pGF" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"pGX" = ( +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/heads/hop) +"pHg" = ( +/obj/effect/spawner/random_spawners/rodent, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"pHk" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"pHA" = ( +/obj/structure/window/reinforced, +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen/fancy, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge) +"pHP" = ( +/obj/machinery/door/airlock/command{ + name = "Blueshield"; + req_access = list(67) + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/blueshield) +"pHQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/maintenance/casino) +"pHU" = ( +/obj/structure/table/wood, +/obj/structure/reagent_dispensers/beerkeg, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/bar) +"pHW" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"pHX" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/storage) +"pIk" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge/vip) +"pIC" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"pID" = ( +/turf/simulated/floor/wood{ + icon_state = "wood-broken5" + }, +/area/coldcolony/morgue) +"pIH" = ( +/obj/item/radio/sec, +/obj/structure/table, +/turf/simulated/floor/plasteel, +/area/ruin/unpowered) +"pIZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"pJb" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"pJc" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/table, +/obj/item/restraints/handcuffs{ + pixel_y = 3 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/shuttle/pirate_corvette) +"pJJ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"pJZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"pKr" = ( +/obj/structure/closet/crate, +/obj/item/storage/fancy/donut_box, +/obj/item/circuitboard/microwave, +/obj/item/stock_parts/micro_laser, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"pKE" = ( +/obj/machinery/newscaster{ + pixel_x = -30 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkpurple" + }, +/area/bridge/vip) +"pKK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/warden) +"pKL" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/maintenance/kitchen) +"pKO" = ( +/obj/machinery/photocopier, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/office) +"pLi" = ( +/obj/structure/table, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"pLs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/hydroponics) +"pLA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"pLF" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"pLS" = ( +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"pLY" = ( +/obj/structure/curtain/open/shower, +/obj/machinery/shower{ + dir = 8; + tag = "icon-shower (WEST)" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/blueshield) +"pMf" = ( +/obj/machinery/power/terminal, +/obj/structure/cable, +/obj/structure/rack, +/obj/item/stack/sheet/mineral/plasma/fifty, +/obj/item/wrench, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"pMp" = ( +/obj/structure/closet/secure_closet/cabinet, +/obj/item/reagent_containers/food/drinks/bottle/vodka, +/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"pMB" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/item/reagent_containers/glass/bucket, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "green" + }, +/area/hydroponics) +"pML" = ( +/obj/machinery/camera{ + c_tag = "Arrivals West" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"pMP" = ( +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"pMQ" = ( +/obj/effect/decal/cleanable/dust, +/obj/item/broken_bottle, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken3" + }, +/area/coldcolony/ruin/abandoned_banya) +"pNm" = ( +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/permahallway) +"pNn" = ( +/obj/structure/table/holotable, +/obj/item/clipboard, +/obj/item/folder/blue, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/clothing/glasses/hud/health, +/turf/simulated/floor/plasteel/white, +/area/medical/cmo) +"pNq" = ( +/obj/machinery/power/apc{ + pixel_y = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/perma) +"pNr" = ( +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker/locker_toilet) +"pNs" = ( +/obj/machinery/photocopier, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library/game_zone) +"pNw" = ( +/obj/structure/closet/firecloset, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/brig) +"pNG" = ( +/obj/effect/spawner/random_spawners/fungus_70, +/turf/simulated/wall, +/area/maintenance/asmaint3) +"pNH" = ( +/obj/effect/decal/warning_stripes/east, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"pNP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/bag/plants/portaseeder, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"pNV" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"pOb" = ( +/obj/structure/closet/crate/engineering/electrical, +/obj/item/airlock_electronics, +/obj/item/airlock_electronics, +/obj/item/access_control, +/obj/item/access_control, +/obj/item/airalarm_electronics, +/obj/item/airalarm_electronics, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"pOc" = ( +/obj/structure/flora/tree/pine, +/obj/structure/flora/grass/brown, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"pOe" = ( +/obj/structure/table/reinforced, +/obj/item/radio/sec{ + pixel_x = -4 + }, +/obj/item/radio/sec{ + pixel_x = 4 + }, +/obj/item/radio/sec{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/radio/sec{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/main) +"pOk" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/storage) +"pOm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/hallway/primary/central/sw) +"pOs" = ( +/obj/item/stack/sheet/wood{ + amount = 3 + }, +/obj/effect/decal/cleanable/blood/writing, +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"pOw" = ( +/obj/structure/closet/crate/sci, +/obj/item/storage/box/monkeycubes, +/obj/item/storage/box/monkeycubes, +/obj/item/storage/bag/bio, +/obj/item/clothing/glasses/hud/health, +/obj/item/storage/box/syringes, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"pOW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/pirate/ranged{ + loot = list(/obj/effect/mob_spawn/human/corpse/pirate/ranged) + }, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"pPc" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"pPh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"pPo" = ( +/obj/machinery/door/airlock{ + id_tag = "toilet1"; + name = "Toilet" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel, +/area/crew_quarters/locker/locker_toilet) +"pPv" = ( +/obj/machinery/recharge_station, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engineering/engine/monitor) +"pQk" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/med_data/laptop, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"pQC" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/kitchen) +"pRk" = ( +/obj/structure/rack, +/obj/item/flashlight/flare, +/obj/item/radio/intercom{ + pixel_y = 24 + }, +/obj/machinery/light{ + active_power_usage = 0; + icon_state = "tube-broken"; + status = 2; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"pRp" = ( +/obj/item/trash/tapetrash, +/obj/effect/decal/cleanable/dust, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/genetics) +"pRs" = ( +/obj/machinery/optable, +/obj/structure/curtain/medical, +/obj/effect/decal/cleanable/blood/gibs/body, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"pRx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"pRE" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Bridge Maintenance"; + req_access = list(19) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"pRS" = ( +/obj/machinery/vending/medical, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"pSa" = ( +/obj/machinery/sleeper/upgraded, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "arrival" + }, +/area/shuttle/pirate_corvette) +"pSc" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/central/se) +"pSF" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/item/shard/plasma, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"pSO" = ( +/obj/effect/decal/warning_stripes/southeast, +/obj/structure/table/reinforced, +/obj/item/taperecorder, +/turf/simulated/floor/engine, +/area/security/execution) +"pSQ" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/carpet, +/area/maintenance/casino) +"pSV" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"pTa" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"pTc" = ( +/obj/structure/chair/sofa/left{ + dir = 1 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/bar/atrium) +"pTo" = ( +/obj/item/storage/bag/plasticbag, +/obj/structure/grille/broken, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"pTy" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"pTC" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"pTF" = ( +/obj/structure/bed, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/permabrig) +"pUd" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"pUo" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkpurple" + }, +/area/bridge/vip) +"pUq" = ( +/mob/living/simple_animal/moth, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) +"pUM" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/security/prison/cell_block/A) +"pUP" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"pWC" = ( +/obj/structure/morgue{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/coldcolony/morgue) +"pXq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/bodyscanner{ + dir = 2; + pixel_y = 4 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"pXB" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"pXS" = ( +/obj/structure/table, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/item/storage/fancy/cigarettes/cigpack_med, +/obj/item/storage/firstaid/o2, +/obj/item/storage/firstaid/toxin{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"pXY" = ( +/obj/structure/table/wood, +/obj/machinery/light, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/hos) +"pYb" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"pYd" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"pYu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"pYz" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 8; + name = "Труба смешивания" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"pYL" = ( +/obj/structure/table/wood, +/obj/item/radio/sec{ + pixel_x = 5 + }, +/obj/item/taperecorder{ + pixel_x = -5 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"pYS" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/medical/surgery/south) +"pYW" = ( +/obj/machinery/atmospherics/binary/volume_pump, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/atmos) +"pZa" = ( +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"pZh" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/grass, +/area/hydroponics) +"pZm" = ( +/turf/simulated/wall/rust, +/area/maintenance/asmaint2) +"pZz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/security/permabrig) +"pZA" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/security/permahallway) +"pZB" = ( +/obj/structure/table/reinforced, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/shuttle/pirate_corvette) +"pZD" = ( +/obj/effect/turf_decal/arrows, +/turf/simulated/floor/plasteel, +/area/medical/research) +"pZJ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"pZM" = ( +/obj/machinery/light{ + active_power_usage = 0; + dir = 4; + icon_state = "tube-broken"; + status = 2 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"pZP" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) +"pZT" = ( +/obj/structure/table/wood, +/obj/machinery/photocopier/faxmachine/longrange{ + department = "Magistrate's Office" + }, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"pZW" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood{ + icon_state = "wood-broken"; + tag = "icon-wood-broken" + }, +/area/hallway/secondary/entry/lounge) +"qap" = ( +/obj/machinery/door/airlock/security/glass{ + id = "execution"; + name = "Prisoner Lockers"; + req_access = list(2) + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/execution) +"qaO" = ( +/obj/structure/table/wood, +/obj/structure/disposalpipe/junction{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/carpet/black, +/area/bridge/meeting_room) +"qaZ" = ( +/obj/item/flag/nt, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"qbc" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"qbi" = ( +/obj/effect/decal/warning_stripes/south, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"qbx" = ( +/obj/structure/bed/abductor, +/obj/item/circular_saw/alien, +/turf/simulated/floor/mineral/abductor{ + oxygen = 22; + temperature = 180; + nitrogen = 82 + }, +/area/ruin/unpowered) +"qbF" = ( +/obj/random/toolbox, +/obj/structure/table, +/obj/machinery/light_switch{ + pixel_x = 24 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"qbJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"qbL" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"qcc" = ( +/obj/structure/chair/stool, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"qcr" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/medical/research) +"qcQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel, +/area/quartermaster/office) +"qcT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"qcV" = ( +/obj/machinery/papershredder, +/obj/machinery/light, +/turf/simulated/floor/wood/fancy/birch{ + icon_state = "fancy-wood-birch-broken3" + }, +/area/bridge/checkpoint/south) +"qcZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"qde" = ( +/obj/machinery/keycard_auth{ + pixel_y = -24 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/cmo) +"qdh" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/simulated/floor/plasteel, +/area/storage/secure) +"qdE" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/carpet, +/area/bridge/checkpoint/south) +"qdM" = ( +/obj/structure/table/wood, +/obj/item/paicard, +/obj/item/radio/intercom/custom{ + frequency = 1351; + name = "station intercom (Service)"; + pixel_x = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkpurple" + }, +/area/bridge/vip) +"qdX" = ( +/obj/structure/ore_box, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"qen" = ( +/obj/effect/decal/warning_stripes/south, +/obj/structure/lattice, +/turf/simulated/floor/plating/asteroid, +/area/coldcolony/ruin/sm_chamber) +"qeA" = ( +/obj/effect/mob_spawn/human/abductor, +/obj/item/wrench/abductor, +/turf/simulated/floor/mineral/abductor{ + oxygen = 22; + temperature = 180; + nitrogen = 82 + }, +/area/ruin/unpowered) +"qeI" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/wood, +/area/toxins/storage) +"qfl" = ( +/obj/machinery/atmospherics/binary/pump/on{ + target_pressure = 303.325; + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"qfs" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/head/beanie/christmas, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/crew_quarters/cabin1) +"qfL" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/main) +"qfO" = ( +/obj/machinery/computer/message_monitor, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"qfR" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"qfX" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitehall" + }, +/area/crew_quarters/sleep) +"qgp" = ( +/obj/effect/decal/warning_stripes/east, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"qgM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"qgP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"qgZ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"qhF" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Brig Cell Block"; + req_access = list(63) + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/prison/cell_block/A) +"qhQ" = ( +/turf/simulated/wall/r_wall/rust, +/area/atmos) +"qid" = ( +/turf/simulated/wall, +/area/crew_quarters/cabin1) +"qii" = ( +/obj/effect/baseturf_helper/asteroid, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkblue" + }, +/area/ntrep) +"qil" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"qiA" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) +"qiR" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"qiW" = ( +/obj/machinery/pipedispenser/disposal, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"qjd" = ( +/obj/machinery/gibber, +/obj/effect/decal/warning_stripes/west, +/turf/simulated/floor/plasteel, +/area/crew_quarters/kitchen) +"qji" = ( +/obj/machinery/station_map/directional/south, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/sleep) +"qjm" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"qjw" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"qjy" = ( +/obj/item/restraints/handcuffs{ + pixel_y = 3 + }, +/obj/structure/table, +/obj/item/restraints/handcuffs{ + pixel_y = -3 + }, +/obj/structure/sign/redcross{ + pixel_y = 32 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/processing) +"qjz" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 1 + }, +/obj/structure/reagent_dispensers/oil, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"qjL" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/obj/machinery/light_switch{ + pixel_x = 8; + pixel_y = 24 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/bar) +"qjN" = ( +/obj/structure/rack, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/item/storage/briefcase/inflatable{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/storage/briefcase/inflatable, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/engineering/engine/monitor) +"qjQ" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"qjY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"qjZ" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"qkk" = ( +/obj/machinery/light, +/obj/structure/table/glass, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "whitered" + }, +/area/security/medbay) +"qkt" = ( +/obj/machinery/light/small, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/door_control{ + desiredstate = 1; + id = "toilet2"; + name = "Toilet Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/obj/structure/toilet{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/crew_quarters/locker/locker_toilet) +"qkx" = ( +/obj/effect/landmark/start/roboticist, +/turf/simulated/floor/mech_bay_recharge_floor, +/area/assembly/robotics) +"qkz" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"qkL" = ( +/turf/simulated/wall/r_wall/rust, +/area/security/customs) +"qkS" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/flashlight/seclite{ + pixel_y = 5; + pixel_x = 2 + }, +/obj/item/flashlight/seclite{ + pixel_y = 5; + pixel_x = 2 + }, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"qkY" = ( +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/blueshield) +"qlg" = ( +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/obj/machinery/camera{ + c_tag = "Captain's Quarters"; + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"qls" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"qlv" = ( +/obj/machinery/computer/rdservercontrol, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/turf/simulated/floor/plating, +/area/toxins/server) +"qlw" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/flashlight, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"qlL" = ( +/turf/simulated/wall/rust, +/area/crew_quarters/toilet4) +"qlZ" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"qmg" = ( +/obj/machinery/keycard_auth{ + pixel_x = 8; + pixel_y = -24 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/crew_quarters/chief) +"qmp" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"qmt" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/suit_storage_unit/captain, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain/bedroom) +"qmx" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/processing) +"qmI" = ( +/obj/item/storage/box/donkpockets, +/obj/structure/table/wood, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"qmK" = ( +/obj/machinery/camera{ + c_tag = "First Surgery"; + network = list("SS13","Medical"); + pixel_x = 32 + }, +/turf/simulated/floor/plating, +/area/medical/surgery/north) +"qmN" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/evidence) +"qmU" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table/wood, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/item/pinpointer, +/obj/item/disk/nuclear, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain/bedroom) +"qmX" = ( +/obj/structure/spider/stickyweb, +/turf/simulated/floor/wood{ + icon_state = "wood-broken"; + tag = "icon-wood-broken" + }, +/area/toxins/test_chamber) +"qnw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"qny" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"qnH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"qnN" = ( +/obj/structure/table, +/obj/item/radio/intercom/locked/prison{ + pixel_x = -28 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"qob" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/execution) +"qog" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/rack, +/obj/random/tool, +/obj/random/tool, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"qor" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/light, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/entry/lounge) +"qox" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"qoz" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/storage) +"qoH" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/securearmory) +"qoT" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/purple{ + desc = "Труба ведёт газ на фильтрацию"; + dir = 1; + name = "Труба на фильтрацию" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos) +"qpi" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Brig Warden's Office"; + dir = 9; + network = list("SS13","Security") + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/warden) +"qpv" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/kitchen) +"qpw" = ( +/turf/simulated/floor/wood, +/area/library) +"qpz" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + external_pressure_bound = 0; + external_pressure_bound_default = 0; + frequency = 1441; + id_tag = "air_out"; + internal_pressure_bound = 2000; + internal_pressure_bound_default = 2000; + on = 1; + pressure_checks = 2; + pressure_checks_default = 2; + releasing = 0 + }, +/turf/simulated/floor/engine/air, +/area/atmos) +"qpB" = ( +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"qpU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"qpW" = ( +/obj/structure/table, +/obj/item/storage/backpack/satchel, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/coldcolony/ruin/miningbar) +"qql" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"qqw" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"qqx" = ( +/obj/machinery/door/airlock/external{ + hackProof = 1; + id_tag = "emergency_home"; + locked = 1; + name = "Security Escape Airlock"; + req_access = list(63) + }, +/turf/simulated/floor/plating, +/area/hallway/secondary/exit) +"qqC" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/customs) +"qqD" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 1 + }, +/obj/structure/barricade/wooden, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"qqE" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"qqI" = ( +/obj/machinery/door/airlock{ + locked = 1; + name = "Trading room"; + welded = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-cherry" + }, +/area/crew_quarters/trading) +"qqM" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/flask/gold, +/obj/item/razor, +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain/bedroom) +"qqW" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"qrf" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"qrr" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"qrH" = ( +/obj/structure/fence/corner{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"qrN" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"qrO" = ( +/obj/structure/door_assembly/door_assembly_research{ + anchored = 1 + }, +/obj/item/airlock_electronics, +/obj/item/access_control, +/obj/effect/landmark/tiles/damageturf, +/obj/machinery/door/firedoor/closed, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"qrT" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/barricade/wooden/crude{ + layer = 3.3 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/casino) +"qrV" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/crate/engineering, +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/micro_laser, +/obj/item/stock_parts/micro_laser, +/obj/item/stock_parts/micro_laser, +/obj/item/stock_parts/scanning_module, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/capacitor, +/obj/item/stock_parts/capacitor, +/obj/item/stock_parts/capacitor, +/obj/item/stock_parts/cell/upgraded/plus, +/obj/item/stock_parts/cell/upgraded/plus, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/assembly/robotics) +"qsn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"qsq" = ( +/obj/structure/closet/firecloset, +/obj/effect/decal/warning_stripes/red, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"qst" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/under/pants/white, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"qsT" = ( +/obj/effect/turf_decal/caution{ + dir = 8; + do_not_delete_me = 1 + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel/airless{ + icon_state = "podfloor_light"; + icon_regular_floor = "podfloor_light" + }, +/area/shuttle/pirate_corvette) +"qtk" = ( +/obj/effect/decal/warning_stripes/west, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"qts" = ( +/obj/machinery/seed_extractor, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/hydroponics) +"qtM" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/stack/ore/silver{ + amount = 9 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"qtN" = ( +/obj/structure/table, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_x = 5; + pixel_y = 6 + }, +/obj/item/shovel/spade, +/obj/item/cultivator{ + pixel_y = -2; + pixel_x = -3 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/machinery/camera{ + c_tag = "Hydroponics"; + dir = 10 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/hydroponics) +"qub" = ( +/obj/effect/decal/warning_stripes/south, +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/cleanable/ash, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine, +/area/coldcolony/ruin/sm_chamber) +"que" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/warden) +"qum" = ( +/obj/machinery/embedded_controller/radio/airlock/access_controller{ + id_tag = "viro_lab_airlock_control"; + name = "Virology Lab Access Console"; + pixel_x = 22; + req_access = list(39); + tag_exterior_door = "viro_lab_airlock_exterior"; + tag_interior_door = "viro_lab_airlock_interior" + }, +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"qur" = ( +/obj/random/toolbox, +/obj/structure/rack, +/turf/simulated/floor/wood, +/area/toxins/storage) +"quu" = ( +/obj/machinery/power/apc{ + pixel_y = 26; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/nuke_storage) +"quB" = ( +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"quT" = ( +/obj/effect/decal/warning_stripes/red, +/obj/structure/closet/firecloset, +/obj/effect/decal/warning_stripes/west, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"quW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"quY" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkblue" + }, +/area/bridge/vip) +"qvh" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"qvU" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"qwe" = ( +/obj/machinery/door/airlock{ + id_tag = "toilet3"; + name = "Toilet" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/toilet4) +"qwo" = ( +/obj/structure/closet/secure_closet/security, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/clothing/suit/hooded/wintercoat/security, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/customs) +"qwr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"qwv" = ( +/obj/structure/sign/electricshock{ + pixel_x = -32 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"qwC" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"qwF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/eastarrival) +"qwH" = ( +/obj/machinery/computer/security/engineering, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/light_switch{ + pixel_y = 8; + pixel_x = -24 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engineering/engine/monitor) +"qwT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"qxk" = ( +/obj/machinery/vending/cigarette{ + obj_integrity = 95; + stat = 1 + }, +/obj/item/storage/fancy/cigarettes/cigpack_robust, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/miningbar) +"qxs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/north, +/obj/machinery/chem_heater, +/obj/effect/landmark/tiles/burnturf, +/obj/machinery/light_switch{ + pixel_x = 24; + pixel_y = -8 + }, +/turf/simulated/floor/engine, +/area/medical/chemistry) +"qxx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/sorting) +"qxH" = ( +/obj/effect/decal/warning_stripes/east, +/obj/effect/landmark/start/engineer, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"qxX" = ( +/obj/structure/table/reinforced, +/obj/item/book/manual/security_space_law{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/megaphone, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/reception) +"qyb" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "hydrofloor" + }, +/area/hydroponics) +"qyg" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/rack, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/stack/sheet/mineral/plasma/fifty, +/obj/item/wrench, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"qyj" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"qyn" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/atmos) +"qyN" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/junction/reversed{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker) +"qzd" = ( +/obj/structure/chair/office{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"qzu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"qzC" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/warning_stripes/southwest, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/clothing/glasses/sunglasses/blindfold/black, +/turf/simulated/floor/engine, +/area/security/execution) +"qzN" = ( +/obj/effect/decal/warning_stripes/west, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"qzO" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge/vip) +"qzV" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/dispenser, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"qAa" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/commercial) +"qAz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"qAD" = ( +/obj/machinery/papershredder, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"qAK" = ( +/obj/structure/sign/holy, +/turf/simulated/wall, +/area/chapel/main) +"qAX" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"qBi" = ( +/obj/structure/flora/rock/pile, +/obj/structure/flora/grass/brown, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"qBO" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/simulated/floor/carpet, +/area/library) +"qBT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"qBY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"qBZ" = ( +/obj/machinery/space_heater, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"qCb" = ( +/obj/machinery/constructable_frame/machine_frame, +/obj/item/stack/cable_coil{ + amount = 3 + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"qCk" = ( +/obj/machinery/vending/clothing/departament/engineering, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"qCm" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Brig Dormitory"; + req_access = list(63) + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"qCp" = ( +/turf/simulated/wall, +/area/engineering/engine) +"qCw" = ( +/obj/machinery/computer/security, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/bridge) +"qCC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"qCR" = ( +/obj/machinery/hydroponics/soil, +/obj/item/seeds/carrot, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/grass, +/area/security/permabrig) +"qCV" = ( +/obj/effect/landmark/start/trainee_engineer, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) +"qDo" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/crate/engineering, +/obj/item/extinguisher/mini, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"qDu" = ( +/obj/structure/window/full/reinforced/ice, +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"qDG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"qDM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/crew_quarters/kitchen) +"qDT" = ( +/obj/machinery/blackbox_recorder, +/obj/machinery/power/apc{ + pixel_y = 26; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/tcommsat/chamber) +"qDW" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"qEh" = ( +/obj/item/cigbutt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_lab) +"qEp" = ( +/turf/simulated/floor/plasteel, +/area/medical/research) +"qEu" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"qEx" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/chief) +"qEA" = ( +/obj/structure/dresser, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/crew_quarters/cabin1) +"qED" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"qEF" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/atmos/control) +"qEK" = ( +/obj/machinery/hydroponics/soil, +/obj/effect/decal/warning_stripes/west{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding1" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/grass, +/area/hydroponics) +"qEM" = ( +/obj/effect/mob_spawn/human/corpse/damaged/legioninfested{ + pickable_species = list("Human") + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"qFj" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/lounge) +"qFs" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker) +"qFu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/paramedic) +"qFv" = ( +/obj/effect/decal/warning_stripes/east, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/landmark/start/engineer, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"qFY" = ( +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"qGm" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"qGo" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) +"qGp" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/security/medbay) +"qGs" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"qGR" = ( +/turf/simulated/wall, +/area/medical/medbay2) +"qHg" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"qHq" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/processing) +"qHA" = ( +/obj/machinery/light{ + active_power_usage = 0; + icon_state = "tube-broken"; + status = 2 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"qHH" = ( +/obj/machinery/door/airlock{ + name = "Chapel Office"; + req_access = list(22) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) +"qHP" = ( +/turf/simulated/floor/plating, +/area/crew_quarters/trading) +"qHT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"qHW" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brig) +"qIj" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/mineral/plasma{ + amount = 5 + }, +/obj/machinery/reagentgrinder{ + pixel_x = -1; + pixel_y = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"qIn" = ( +/obj/structure/door_assembly/door_assembly_min, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"qIo" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"qIu" = ( +/obj/machinery/light/small, +/obj/effect/landmark/start/civilian, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/door_control{ + desiredstate = 1; + id = "toilet1"; + name = "Toilet Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/obj/structure/toilet{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/locker/locker_toilet) +"qIy" = ( +/obj/structure/closet/crate/freezer, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/reagent_containers/food/snacks/meat/ham, +/obj/item/reagent_containers/food/snacks/meat/ham, +/obj/item/reagent_containers/food/snacks/meat/ham, +/obj/item/reagent_containers/food/snacks/meat/ham, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/kitchen) +"qID" = ( +/obj/structure/table_frame/wood, +/obj/item/stack/sheet/wood, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/coldcolony/ruin/miningbar) +"qIN" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/photocopier, +/turf/simulated/floor/wood/fancy/light, +/area/bridge) +"qJn" = ( +/obj/effect/decal/warning_stripes/yellow/partial, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/assembly/robotics) +"qJo" = ( +/obj/effect/decal/ants, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"qJt" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"qJv" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -3; + pixel_y = 11 + }, +/obj/item/reagent_containers/food/condiment/peppermill{ + pixel_x = 3; + pixel_y = 11 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"qKd" = ( +/obj/structure/table_frame/wood, +/obj/item/shard{ + icon_state = "small" + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"qKl" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/security/permahallway) +"qKo" = ( +/obj/machinery/vending/wallmed{ + pixel_x = 25 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/permabrig) +"qKx" = ( +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"qKP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"qKQ" = ( +/obj/structure/closet/secure_closet/atmos_personal, +/obj/item/extinguisher/mini, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/decal/warning_stripes/south, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"qLj" = ( +/obj/structure/table, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/destTagger, +/obj/machinery/light, +/obj/item/stack/tape_roll, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"qLu" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/power/port_gen/pacman, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"qLv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"qLF" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"qLG" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id_tag = "BridgeLockdown"; + name = "Bridge Lockdown" + }, +/obj/machinery/door/airlock/command{ + name = "Command"; + req_access = list(19) + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"qLJ" = ( +/obj/item/toy/figure/clown{ + pixel_x = 5; + pixel_y = 1 + }, +/obj/item/stamp/clown{ + pixel_x = -5 + }, +/obj/structure/table/wood, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/clownoffice) +"qLN" = ( +/obj/machinery/kitchen_machine/oven, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"qLX" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/captain/bedroom) +"qMf" = ( +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"qMg" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"qMl" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"qMt" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"qMC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door_control{ + id = "First Surgery Window"; + name = "Surgery Window Shutters Control"; + pixel_x = -25; + pixel_y = -24 + }, +/obj/effect/landmark/start/doctor, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"qOe" = ( +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/securearmory) +"qOf" = ( +/obj/machinery/r_n_d/server/core, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/toxins/server) +"qOg" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"qOh" = ( +/obj/structure/lattice, +/obj/item/light/tube{ + icon_state = "ltube-broken"; + status = 2 + }, +/obj/machinery/light_construct{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid, +/area/coldcolony/ruin/sm_chamber) +"qOr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/eastarrival) +"qOD" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/decal/warning_stripes/blue/hollow, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"qOH" = ( +/obj/structure/sign/poster/contraband/have_a_puff{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"qOS" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/vending/snack, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"qPk" = ( +/obj/machinery/door/window/westleft{ + dir = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"qPn" = ( +/obj/structure/dresser, +/turf/simulated/floor/wood, +/area/library) +"qPs" = ( +/obj/structure/flora/ausbushes/palebush, +/obj/structure/flora/ausbushes/brflowers, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/grass, +/area/hallway/secondary/exit) +"qPx" = ( +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/wood/fancy/light, +/area/maintenance/fsmaint) +"qPJ" = ( +/obj/machinery/constructable_frame/machine_frame, +/obj/item/circuitboard/biogenerator, +/obj/effect/landmark/tiles/damageturf, +/obj/item/stock_parts/manipulator, +/obj/effect/decal/cleanable/generic, +/obj/item/shard{ + icon_state = "small" + }, +/turf/simulated/floor/plasteel, +/area/maintenance/garden) +"qPL" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"qPS" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellow" + }, +/area/bridge/vip) +"qPW" = ( +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/virology/lab) +"qQg" = ( +/obj/structure/table, +/obj/item/lighter/zippo/ce, +/obj/machinery/newscaster{ + pixel_x = -30 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkyellow" + }, +/area/bridge/vip) +"qQl" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Engineering"; + req_access = list(10) + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine/monitor) +"qQS" = ( +/obj/machinery/vending/wallmed{ + pixel_x = 25 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/processing) +"qQW" = ( +/obj/machinery/mineral/processing_unit_console, +/turf/simulated/wall, +/area/coldcolony/ruin/ore_production) +"qQX" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"qRC" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"qRG" = ( +/obj/structure/dresser, +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain/bedroom) +"qRH" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table/glass, +/obj/item/reagent_containers/dropper/precision, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/medical/virology/lab) +"qRW" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/canister, +/turf/simulated/floor/plasteel, +/area/atmos) +"qSa" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/hallway/primary/fore) +"qSm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/eastarrival) +"qSq" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/cleanable/ash, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"qSA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"qSD" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"qSG" = ( +/obj/structure/flora/tree/dead, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"qSH" = ( +/obj/structure/table/wood, +/obj/item/clipboard, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/hop) +"qTy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"qTG" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/execution) +"qTI" = ( +/obj/structure/table, +/obj/item/deck/cards, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"qTN" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkyellow" + }, +/area/bridge/vip) +"qUo" = ( +/obj/structure/flora/tree/pine, +/obj/structure/flora/grass/green, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"qUp" = ( +/obj/effect/decal/cleanable/blood/writing, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken5" + }, +/area/coldcolony/ruin/abandoned_house) +"qUx" = ( +/turf/simulated/wall, +/area/coldcolony/ruin/sm_lab) +"qUC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"qUF" = ( +/obj/machinery/constructable_frame/machine_frame, +/obj/item/stock_parts/micro_laser, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"qUH" = ( +/obj/structure/railing/corner, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"qUT" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"qVd" = ( +/obj/machinery/computer/crew, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/paramedic) +"qVy" = ( +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"qVA" = ( +/obj/structure/sign/electricshock, +/turf/simulated/wall, +/area/maintenance/asmaint2) +"qVE" = ( +/turf/simulated/floor/plating, +/area/maintenance/perma) +"qVJ" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellow" + }, +/area/bridge/vip) +"qVK" = ( +/obj/machinery/vending/security, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/main) +"qVO" = ( +/obj/machinery/door_control{ + id = "magistrate"; + name = "Privacy Shutters Control"; + pixel_x = 26; + pixel_y = 6; + req_access = list(74) + }, +/turf/simulated/floor/carpet, +/area/magistrateoffice) +"qVW" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/bar) +"qWi" = ( +/obj/structure/closet/l3closet/janitor, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "purple" + }, +/area/janitor) +"qWj" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Chief Medical Officer Room"; + req_access = list(40) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"qWp" = ( +/obj/structure/table, +/obj/item/storage/bag/trash, +/obj/item/storage/bag/trash, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/hallway/primary/central/east) +"qWA" = ( +/obj/structure/chair/sofa, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/bar/atrium) +"qWM" = ( +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"qXe" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library/game_zone) +"qXj" = ( +/obj/structure/closet/secure_closet/atmos_personal, +/obj/item/extinguisher/mini, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"qXl" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/oak, +/area/blueshield) +"qXo" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"qXs" = ( +/obj/structure/janitorialcart, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/janitor) +"qXu" = ( +/obj/structure/table, +/obj/item/storage/toolbox/emergency, +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"qXx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel/white, +/area/medical/chemistry) +"qXS" = ( +/obj/structure/sign/science{ + name = "\improper Supermatter Testing Lab" + }, +/turf/simulated/wall/r_wall, +/area/coldcolony/ruin/sm_division) +"qYk" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"qYu" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"qYw" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "First Surgery Window"; + name = "Surgery Shutters" + }, +/turf/simulated/floor/plating, +/area/medical/surgery/north) +"qYK" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"qZe" = ( +/obj/structure/sign/directions/engineering{ + pixel_y = -10; + dir = 4 + }, +/obj/structure/sign/directions/evac{ + pixel_y = 4; + dir = 4 + }, +/obj/structure/sign/directions/cargo{ + pixel_y = -3; + dir = 4 + }, +/obj/structure/sign/directions/science{ + pixel_y = 11 + }, +/turf/simulated/wall/r_wall, +/area/security/lobby) +"qZl" = ( +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitered" + }, +/area/security/medbay) +"qZt" = ( +/obj/structure/table/reinforced, +/obj/item/wrench, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkblue" + }, +/area/bridge) +"qZO" = ( +/obj/structure/bed, +/obj/item/bedsheet/hop, +/obj/effect/landmark/start/hop, +/obj/machinery/light, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/heads/hop) +"qZY" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Hydroponics Maintenance"; + req_access = list(35) + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hydroponics) +"rab" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/southeast, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"raf" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"rar" = ( +/obj/effect/baseturf_helper/asteroid, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/warden) +"raz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"raE" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/parrot/Poly, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/crew_quarters/chief) +"raG" = ( +/obj/machinery/camera{ + c_tag = "Server Room"; + dir = 8; + network = list("SS13","Research") + }, +/obj/machinery/atmospherics/unary/vent_pump{ + external_pressure_bound = 140; + external_pressure_bound_default = 140; + name = "server vent"; + on = 1; + pressure_checks = 0 + }, +/turf/simulated/floor/plating, +/area/toxins/server) +"raI" = ( +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"raL" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"raT" = ( +/obj/effect/decal/warning_stripes/west, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"rba" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"rbp" = ( +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/execution) +"rbx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Office"; + req_access = list(31,50) + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel, +/area/quartermaster/office) +"rbC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"rbF" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"rbH" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) +"rbI" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/security/permahallway) +"rbO" = ( +/obj/effect/decal/warning_stripes/east, +/obj/structure/closet/secure_closet{ + icon_state = "ce"; + req_access = list(56); + name = "chief engineer's locker" + }, +/obj/item/clothing/suit/hooded/wintercoat/engineering/ce, +/obj/item/megaphone, +/obj/item/storage/box/permits, +/obj/item/clothing/accessory/medal/engineering, +/obj/item/door_remote/chief_engineer, +/obj/item/holosign_creator/atmos, +/obj/item/storage/backpack/duffel/engineering, +/obj/item/cartridge/ce, +/obj/item/clothing/glasses/welding/superior, +/obj/item/clothing/gloves/color/yellow, +/obj/item/areaeditor/blueprints/ce, +/obj/item/multitool, +/obj/item/storage/belt/utility/chief/full, +/obj/item/clothing/mask/gas, +/obj/item/rpd, +/obj/item/storage/bag/construction, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/chief) +"rbP" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"rci" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"rcj" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/light{ + active_power_usage = 0; + dir = 4; + icon_state = "tube-broken"; + status = 2 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"rcs" = ( +/obj/machinery/door/poddoor/preopen{ + id_tag = "BridgeLockdown"; + name = "Bridge Lockdown" + }, +/obj/effect/spawner/window/reinforced/polarized{ + id = "ntr" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "representative"; + name = "Privacy Shutters" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/ntrep) +"rcS" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/stack/sheet/mineral/plasma{ + amount = 4 + }, +/obj/item/wrench, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/abandoned_garage) +"rdg" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"rdj" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/shaker, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/bar) +"rdl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"rdx" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/space_heater, +/obj/machinery/light, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"rdA" = ( +/obj/effect/decal/snow/sand/edge, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"rdM" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"rdO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/quartermaster/office) +"reo" = ( +/turf/simulated/wall/rust, +/area/civilian/vacantoffice) +"reA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"reB" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"reE" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"reG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/wallmed{ + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"reH" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction{ + dir = 2 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"reI" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/crayons, +/obj/item/lighter/zippo/black, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"reR" = ( +/turf/simulated/floor/plating, +/area/coldcolony/ruin/miningeva) +"reS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/toilet4) +"reU" = ( +/turf/simulated/wall/r_wall/rust, +/area/crew_quarters/chief) +"reV" = ( +/obj/structure/closet/crate/radiation, +/obj/item/clothing/suit/radiation, +/obj/item/clothing/head/radiation, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"reY" = ( +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"rfa" = ( +/obj/machinery/door/airlock/medical{ + name = "Brig Medical Bay"; + req_access = list(63) + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/security/processing) +"rfc" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"rfq" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/effect/baseturf_helper/asteroid/snow{ + baseturf = /turf/simulated/floor/plating/asteroid/snow/planet + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"rfB" = ( +/obj/structure/fence/corner{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"rfE" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/decal/warning_stripes/blue/hollow, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"rfH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/item/clothing/suit/hooded/wintercoat/cargo/qm, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/qm) +"rfO" = ( +/obj/effect/decal/snow/sand/edge, +/obj/machinery/door/airlock/public{ + name = "Docks" + }, +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/secondary/entry/lounge) +"rfY" = ( +/obj/machinery/photocopier, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/crew_quarters/hor) +"rgi" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"rgt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/landmark/start/janitor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/janitor) +"rgB" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"rgF" = ( +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"rgH" = ( +/obj/structure/table/wood, +/obj/machinery/photocopier/faxmachine/longrange{ + department = "Chief Medical Officer's Office" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/cmo) +"rgO" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/security/reception) +"rho" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/evidence) +"rht" = ( +/obj/structure/bed, +/obj/effect/spawner/random_spawners/syndicate/loot{ + result = list(/obj/item/bedsheet/blue = 10, /obj/item/bedsheet/black = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/fluff = 10, /obj/item/bedsheet/green = 10, /obj/item/bedsheet/orange = 10, /obj/item/bedsheet/purple = 10, /obj/item/bedsheet/red = 10, /obj/item/bedsheet/yellow = 10); + name = "bedsheet" + }, +/obj/effect/landmark/join_late, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"rhz" = ( +/obj/machinery/vending/hydroseeds, +/obj/machinery/light_switch{ + pixel_x = 8; + pixel_y = 24 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hydroponics) +"rhC" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/disposal, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"rhO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel/white, +/area/medical/chemistry) +"rhV" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/machinery/door_control{ + desiredstate = 1; + id = "toilet3"; + name = "Toilet Bolt Control"; + normaldoorcontrol = 1; + specialfunctions = 4; + pixel_y = -24 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/landmark/start/mechanic, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"rhW" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 4; + name = "Труба фильтрации" + }, +/obj/machinery/computer/general_air_control/large_tank_control{ + input_tag = "air_in"; + name = "Mixed Air Supply Control"; + output_tag = "air_out"; + pressure_setting = 2000; + sensors = list("air_sensor"="Tank") + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"rhX" = ( +/obj/effect/decal/cleanable/generic, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"ric" = ( +/obj/machinery/recharge_station, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"rid" = ( +/obj/structure/closet/wardrobe/mixed, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"ril" = ( +/obj/machinery/suit_storage_unit/lavaland, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"rio" = ( +/obj/structure/bed, +/obj/effect/spawner/random_spawners/syndicate/loot{ + result = list(/obj/item/bedsheet/blue = 10, /obj/item/bedsheet/black = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/fluff = 10, /obj/item/bedsheet/green = 10, /obj/item/bedsheet/orange = 10, /obj/item/bedsheet/purple = 10, /obj/item/bedsheet/red = 10, /obj/item/bedsheet/yellow = 10); + name = "bedsheet" + }, +/obj/effect/landmark/join_late, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/crew_quarters/cabin1) +"rit" = ( +/obj/machinery/power/apc/noalarm{ + dir = 8; + pixel_x = -26; + start_charge = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"riZ" = ( +/obj/machinery/cryopod{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/crew_quarters/sleep) +"rjf" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"rjr" = ( +/turf/simulated/wall/r_wall, +/area/bridge/meeting_room) +"rjt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"rjL" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/bar) +"rkf" = ( +/obj/machinery/vending/medical{ + req_access = list(3,5,19) + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitered" + }, +/area/security/medbay) +"rkj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/hallway/primary/fore) +"rkv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"rkz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/main) +"rkK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"rkQ" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/engineering/gravitygenerator) +"rkU" = ( +/obj/machinery/crema_switch{ + pixel_y = 26; + pixel_x = 8 + }, +/obj/structure/table, +/obj/item/storage/box/bodybags, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) +"rkX" = ( +/obj/structure/table, +/obj/structure/sign/poster/contraband/revolver{ + pixel_y = 32 + }, +/obj/item/ammo_box/magazine/m10mm{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/gun/projectile/automatic/pistol{ + pixel_y = 6; + pixel_x = -2 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/shuttle/pirate_corvette) +"rld" = ( +/obj/structure/table/reinforced, +/obj/item/storage/box/donkpockets, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"rls" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"rlG" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/atmos) +"rlJ" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"rlM" = ( +/obj/structure/closet/firecloset, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"rlV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"rlY" = ( +/obj/structure/rack, +/obj/item/stack/sheet/mineral/plasma/fifty, +/obj/item/wrench, +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"rma" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/arrow{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/fireaxecabinet{ + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"rml" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/casino) +"rmm" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"rmo" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/miningbar) +"rmJ" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken6" + }, +/area/coldcolony/ruin/abandoned_house) +"rmU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/medical/research/shallway) +"rmX" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"rnc" = ( +/obj/structure/chair/sofa/pew/left{ + dir = 8 + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"rnA" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"rnW" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"rnY" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"rod" = ( +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + desc = "Труба ведёт газ на фильтрацию"; + dir = 4; + name = "Труба на фильтрацию" + }, +/obj/machinery/atmospherics/meter, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos) +"roh" = ( +/obj/structure/sign/fire, +/turf/simulated/wall/r_wall, +/area/atmos) +"rok" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"roo" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"roH" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/flora/ausbushes/palebush, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"roI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"roP" = ( +/turf/simulated/wall/r_wall/rust, +/area/coldcolony/ruin/sm_chamber) +"roT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/brig) +"roX" = ( +/obj/structure/bed, +/obj/item/bedsheet/syndie, +/obj/effect/mob_spawn/human/corpse/tacticool, +/obj/effect/decal/cleanable/vomit, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"rpq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"rpt" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"rpA" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/permahallway) +"rpG" = ( +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"rpP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/janitor) +"rpT" = ( +/obj/machinery/portable_atmospherics/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"rpW" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"rpY" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/random/tool, +/obj/random/tool, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"rqe" = ( +/obj/item/apc_electronics, +/obj/structure/closet/crate/engineering, +/obj/item/analyzer, +/obj/item/stack/sheet/wood{ + amount = 15 + }, +/obj/effect/decal/cleanable/dust, +/obj/item/mounted/frame/newscaster_frame, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"rqh" = ( +/obj/structure/chair/comfy/shuttle/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/shuttle/pirate_corvette) +"rqy" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/item/storage/firstaid/regular, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge) +"rqC" = ( +/obj/structure/closet/crate/miningcar{ + name = "mining car" + }, +/obj/item/stack/ore/diamond{ + amount = 3 + }, +/obj/item/stack/ore/uranium{ + amount = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"rqG" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/atmos) +"rqI" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"rqU" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permahallway) +"rqX" = ( +/obj/structure/table/reinforced, +/obj/item/folder/blue, +/obj/item/paper/tcommskey, +/obj/item/stamp/ce, +/obj/item/paper/monitorkey, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/chief) +"rrm" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/closet/secure_closet/freezer/kitchen, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "hydrofloor" + }, +/area/hydroponics) +"rrr" = ( +/turf/simulated/wall/rust, +/area/medical/surgery/north) +"rrw" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/pirate{ + loot = list(/obj/effect/mob_spawn/human/corpse/pirate) + }, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"rrO" = ( +/obj/structure/spawner/nether/bluespace_tap, +/turf/simulated/floor/plating/asteroid, +/area/coldcolony/ruin/sm_chamber) +"rrU" = ( +/obj/machinery/dna_scannernew, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"rrV" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/evidence) +"rss" = ( +/turf/simulated/wall, +/area/quartermaster/qm) +"rsv" = ( +/obj/structure/bed, +/obj/effect/spawner/random_spawners/syndicate/loot{ + result = list(/obj/item/bedsheet/blue = 10, /obj/item/bedsheet/black = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/fluff = 10, /obj/item/bedsheet/green = 10, /obj/item/bedsheet/orange = 10, /obj/item/bedsheet/purple = 10, /obj/item/bedsheet/red = 10, /obj/item/bedsheet/yellow = 10); + name = "bedsheet" + }, +/obj/effect/landmark/join_late, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/crew_quarters/cabin1) +"rsy" = ( +/obj/machinery/door/airlock{ + name = "Custodial Closet"; + req_access = list(26) + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/janitor) +"rsz" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"rsL" = ( +/obj/structure/chair/sofa/pew/left, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"rsT" = ( +/obj/machinery/vending/artvend, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"rtc" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker) +"rtg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "browncorner" + }, +/area/quartermaster/office) +"rtA" = ( +/obj/structure/flora/ash/rock/style_random, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"rtH" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/structure/rack, +/obj/item/wrench, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"rtM" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engineering/break_room) +"rtN" = ( +/obj/effect/decal/cleanable/glass, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"rtV" = ( +/obj/structure/table, +/obj/item/storage/box/syringes{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/storage/box/iv_bags{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/storage/box/beakers{ + pixel_x = 4 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"rtY" = ( +/obj/effect/decal/warning_stripes/yellow/partial, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/research) +"ruc" = ( +/turf/simulated/floor/plating, +/area/security/permahallway) +"ruj" = ( +/obj/machinery/computer/operating{ + name = "Robotics Operating Computer" + }, +/turf/simulated/floor/plasteel, +/area/assembly/robotics) +"rup" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken3" + }, +/area/coldcolony/ruin/abandoned_house) +"ruu" = ( +/obj/structure/table, +/obj/item/reagent_containers/glass/bucket, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/hydroponics) +"ruK" = ( +/turf/simulated/wall, +/area/hallway/primary/starboard/east) +"ruX" = ( +/obj/machinery/kitchen_machine/oven, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"rve" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"rvl" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"rvn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"rvp" = ( +/obj/structure/closet, +/obj/effect/spawner/random_spawners/syndicate/loot{ + result = list(/obj/item/storage/toolbox/syndicate = 1, /obj/item/storage/fancy/cigarettes/cigpack_syndicate = 1, /obj/item/deck/cards/syndicate = 1, /obj/item/storage/secure/briefcase/syndie = 1, /obj/item/toy/syndicateballoon = 1, /obj/item/soap/syndie = 1, /obj/item/clothing/under/syndicate = 1, /obj/item/clothing/under/syndicate/tacticool = 1, /obj/item/clothing/mask/gas/syndicate = 1, /obj/item/suppressor = 1, /obj/item/coin/antagtoken/syndicate = 1, /obj/item/storage/box/syndie_kit/cutouts = 1) + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"rvt" = ( +/obj/effect/decal/cleanable/generic, +/obj/effect/decal/snow/sand/edge{ + dir = 6 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"rvQ" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Engineering"; + req_access = list(32) + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"rwh" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"rwj" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 8 + }, +/obj/machinery/vending/coffee, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"rwq" = ( +/obj/structure/closet/walllocker/emerglocker/west, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/north) +"rwG" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plating, +/area/medical/medbay2) +"rwK" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"rxa" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"rxc" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"rxi" = ( +/turf/simulated/floor/wood{ + icon_state = "wood-broken3" + }, +/area/coldcolony/morgue) +"rxz" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"rxN" = ( +/obj/effect/decal/warning_stripes/northwest, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"ryn" = ( +/obj/effect/decal/warning_stripes/west{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding2" + }, +/obj/effect/decal/warning_stripes/west{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding1" + }, +/turf/simulated/floor/plasteel{ + icon_state = "asteroid" + }, +/area/hydroponics) +"ryr" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) +"ryA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"ryG" = ( +/obj/machinery/cryopod{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/crew_quarters/sleep) +"rzd" = ( +/obj/structure/closet/crate/miningcar{ + name = "mining car" + }, +/obj/item/stack/ore/iron{ + amount = 9 + }, +/obj/item/stack/ore/silver{ + amount = 5 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"rzL" = ( +/obj/machinery/computer/crew{ + name = "Pirate hack monitoring computer" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/shuttle/pirate_corvette) +"rzS" = ( +/obj/machinery/kitchen_machine/microwave, +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"rzW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"rAg" = ( +/obj/effect/decal/cleanable/dust, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/medical/genetics) +"rAk" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"rAo" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "BridgeShutters"; + name = "Bridge Privacy Shutters" + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "BridgeLockdown"; + name = "Bridge Lockdown" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/bridge) +"rAA" = ( +/obj/structure/chair/sofa/right, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/theatre) +"rAC" = ( +/obj/structure/chair/office/dark, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/landmark/start/security_officer, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/reception) +"rAE" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkbluecorners" + }, +/area/bridge) +"rAI" = ( +/obj/machinery/hydroponics/soil, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/simulated/floor/grass, +/area/hydroponics) +"rBf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"rBz" = ( +/obj/structure/chair/wood, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"rBA" = ( +/obj/item/clothing/head/beanie, +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/crew_quarters/cabin1) +"rBJ" = ( +/obj/structure/table/wood, +/obj/item/toy/russian_revolver, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/ruin/unpowered) +"rBM" = ( +/obj/effect/landmark/event/blobstart, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"rBP" = ( +/obj/structure/bed, +/turf/simulated/floor/plating, +/area/security/permahallway) +"rCi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"rCn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/stool, +/turf/simulated/floor/plating, +/area/maintenance/casino) +"rCp" = ( +/obj/structure/chair/sofa/left, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/theatre) +"rCz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera{ + c_tag = "Secure Armory West"; + dir = 4; + network = list("SS13","Security") + }, +/obj/machinery/light_switch{ + pixel_x = -20; + pixel_y = -8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securearmory) +"rCG" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/plasteel, +/area/ruin/unpowered) +"rCR" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkpurple" + }, +/area/bridge/vip) +"rCW" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"rDb" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 1 + }, +/turf/simulated/floor/carpet/arcade, +/area/crew_quarters/fitness) +"rDl" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/security/lobby) +"rDu" = ( +/obj/structure/rack, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/decal/warning_stripes/north, +/obj/item/grenade/chem_grenade/metalfoam, +/obj/item/grenade/chem_grenade/metalfoam{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"rDQ" = ( +/obj/structure/sign/poster/official/obey{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/permabrig) +"rDR" = ( +/obj/machinery/atmospherics/unary/tank/carbon_dioxide{ + volume = 0; + name = "Pressure Tank (Gases)"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"rDW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"rDZ" = ( +/obj/structure/grille/broken, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"rEr" = ( +/turf/simulated/floor/carpet/black, +/area/bridge/meeting_room) +"rEA" = ( +/obj/effect/landmark/start/internal_affairs, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"rEW" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/warden) +"rFb" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/vehicle/ridden/snowmobile/key, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"rFl" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/shuttle/pirate_corvette) +"rFu" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, +/obj/structure/mirror{ + pixel_x = 28 + }, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"rFv" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/mug/rd, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkpurple" + }, +/area/bridge/vip) +"rFE" = ( +/obj/machinery/vending/cola{ + obj_integrity = 95; + stat = 1 + }, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"rFW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"rGp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/cmo) +"rGT" = ( +/turf/simulated/floor/plasteel, +/area/security/lobby) +"rHb" = ( +/obj/effect/landmark/start/atmospheric, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"rHc" = ( +/obj/structure/rack, +/obj/item/wrench, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/syndie_outpost) +"rHk" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 5; + name = "Труба фильтрации" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"rHq" = ( +/obj/machinery/atmospherics/binary/volume_pump{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/atmos) +"rHx" = ( +/obj/structure/holosign/barrier/engineering, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"rHE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/kitchen) +"rHJ" = ( +/obj/machinery/power/apc/noalarm{ + dir = 4; + pixel_x = 26; + start_charge = 1 + }, +/obj/structure/rack, +/obj/item/assembly/prox_sensor, +/obj/item/screwdriver, +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"rIu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/firstaid/syndie/empty, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"rIv" = ( +/obj/machinery/atmospherics/binary/volume_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"rIA" = ( +/obj/machinery/papershredder, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"rIP" = ( +/obj/structure/closet/crate/sci, +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/capacitor, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/cell/high, +/obj/item/stack/sheet/glass, +/obj/item/circuitboard/chem_dispenser, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"rIV" = ( +/obj/machinery/door/airlock/public{ + name = "Kitchen"; + req_access = list(28) + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/kitchen) +"rJh" = ( +/obj/structure/chair/sofa/pew/right{ + dir = 4 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"rJH" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"rKm" = ( +/obj/structure/closet/walllocker/emerglocker/south, +/obj/machinery/camera{ + c_tag = "Primary Security Hallway East"; + dir = 10 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/security/lobby) +"rKv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permahallway) +"rKQ" = ( +/obj/item/trash/plate, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"rLb" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/effect/landmark/start/security_officer, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"rLG" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 4; + name = "Труба смешивания" + }, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 1; + name = "Труба дыхательной смеси" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos) +"rLN" = ( +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + desc = "Труба ведёт газ на фильтрацию"; + dir = 4; + name = "Труба на фильтрацию" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos) +"rLU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/processing) +"rLW" = ( +/obj/structure/sign/poster/official/healthy, +/turf/simulated/wall, +/area/medical/sleeper) +"rLY" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/light, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"rLZ" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/crate/vault{ + name = "nt crate" + }, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"rMc" = ( +/obj/structure/closet/walllocker/emerglocker/west, +/obj/item/reagent_containers/food/pill/patch/silver_sulf, +/obj/item/reagent_containers/food/pill/patch/silver_sulf, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"rMe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/crowbar, +/obj/structure/cable, +/obj/machinery/power/apc/noalarm{ + start_charge = 30; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/coldcolony/ruin/abandoned_garage) +"rMi" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"rMo" = ( +/obj/machinery/door/airlock/mining{ + name = "Mining" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"rMu" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"rMD" = ( +/obj/structure/plasticflaps/mining, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"rME" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/wood/fancy/oak, +/area/blueshield) +"rMF" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/warning_stripes/blue, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"rMO" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/arrow{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/sorting) +"rMP" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"rNa" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/permabrig) +"rNf" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel, +/area/medical/research) +"rNM" = ( +/obj/machinery/door_control{ + id = "Mime"; + name = "Mimes Privacy Shutters Control"; + pixel_x = 8; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) +"rNR" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Engineering"; + req_access = list(32) + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"rOb" = ( +/turf/simulated/wall/rust, +/area/clownoffice) +"rOc" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/sorting) +"rOt" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"rOz" = ( +/obj/structure/computerframe, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"rPF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_containers/food/pill/patch/silver_sulf{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrivalcorner" + }, +/area/shuttle/pirate_corvette) +"rPM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"rPN" = ( +/obj/structure/sign/evac, +/turf/simulated/wall, +/area/hallway/secondary/entry/lounge) +"rQj" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) +"rQn" = ( +/obj/machinery/station_map/engineering/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engineering/break_room) +"rQp" = ( +/obj/structure/chair, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"rQz" = ( +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/bodyscanner{ + dir = 2 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"rQG" = ( +/turf/simulated/wall/r_wall, +/area/security/detectives_office) +"rRy" = ( +/obj/effect/decal/cleanable/generic, +/obj/machinery/power/apc/noalarm{ + pixel_y = 26; + dir = 1; + start_charge = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"rRD" = ( +/obj/machinery/door/airlock/command{ + req_access = list(19); + name = "Command Room" + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood/fancy/birch{ + icon_state = "fancy-wood-birch-broken2" + }, +/area/bridge/checkpoint/south) +"rRE" = ( +/obj/effect/decal/warning_stripes/east, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"rRK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"rRL" = ( +/obj/effect/turf_decal/stripes/line{ + do_not_delete_me = 1; + dir = 4 + }, +/obj/effect/decal/cleanable/dust, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"rRR" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Brig Maintenance"; + req_access = list(26,32) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"rSb" = ( +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"rSe" = ( +/obj/structure/disposalpipe/junction/reversed{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"rSk" = ( +/obj/structure/closet/crate/vault, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/nuke_storage) +"rSv" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/item/trash/semki, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"rSx" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/hallway/primary/starboard/east) +"rSF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "redcorner" + }, +/area/security/prison/cell_block/A) +"rSN" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/main) +"rTm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/checkpoint) +"rTy" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/closet/secure_closet/medical1, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "green" + }, +/area/medical/virology/lab) +"rTB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"rUc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"rUn" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"rUu" = ( +/obj/effect/decal/cleanable/confetti, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"rUz" = ( +/obj/machinery/photocopier/faxmachine/longrange{ + department = "Captain's Office" + }, +/obj/structure/table/wood, +/turf/simulated/floor/wood/fancy/light, +/area/bridge) +"rUV" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/floodlight, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/storage/secure) +"rVT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/internal_affairs, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "red" + }, +/area/security/lobby) +"rWa" = ( +/obj/structure/firelock_frame, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"rWd" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"rWf" = ( +/obj/machinery/space_heater, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/toxins/lab) +"rWr" = ( +/obj/structure/closet/secure_closet/personal, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"rWL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkbrown"; + dir = 1 + }, +/area/bridge/vip) +"rWU" = ( +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/camera{ + c_tag = "Permabrig Office West"; + network = list("Prison","SS13"); + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/permabrig) +"rXs" = ( +/turf/simulated/wall, +/area/medical/biostorage) +"rXK" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25; + req_access = list(160); + name = "Pirate Corvette Air alarm" + }, +/obj/machinery/light/small{ + active_power_usage = 0; + dir = 8; + icon_state = "bulb-broken"; + status = 2 + }, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"rXS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/reception) +"rXU" = ( +/obj/structure/table, +/obj/item/kitchen/knife/plastic, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"rYQ" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/processing) +"rYW" = ( +/obj/effect/turf_decal/loading_area, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) +"rZd" = ( +/turf/simulated/floor/plating/asteroid, +/area/coldcolony/ruin/sm_chamber) +"rZm" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/garden) +"rZn" = ( +/obj/machinery/door/airlock/freezer{ + req_access = list(28) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/crew_quarters/kitchen) +"rZI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/ninja_teleport, +/turf/simulated/floor/wood{ + icon_state = "wood-broken"; + tag = "icon-wood-broken" + }, +/area/toxins/storage) +"rZY" = ( +/obj/machinery/gravity_generator/main/station, +/turf/simulated/floor/plating, +/area/engineering/gravitygenerator) +"sac" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/briefcase, +/obj/structure/table/wood, +/turf/simulated/floor/carpet, +/area/maintenance/casino) +"sad" = ( +/obj/structure/table/reinforced, +/obj/item/kitchen/rollingpin, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"sag" = ( +/obj/effect/decal/warning_stripes/west, +/obj/machinery/atm{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"sam" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/eastleft{ + name = "Hydroponics Desk"; + req_access = list(35); + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hydroponics) +"saz" = ( +/obj/structure/dresser, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"saG" = ( +/obj/effect/decal/warning_stripes/southeast, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"sbi" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/simulated/floor/carpet, +/area/bridge/checkpoint/south) +"sbp" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"sbt" = ( +/turf/simulated/wall/rust, +/area/crew_quarters/bar/atrium) +"sbv" = ( +/obj/effect/decal/cleanable/blood/gibs/robot, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"sbz" = ( +/obj/machinery/computer/rdconsole/robotics, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/assembly/robotics) +"sbB" = ( +/obj/structure/sign/electricshock{ + pixel_y = 32 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"sbN" = ( +/obj/machinery/vending/cola, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/securehallway) +"sci" = ( +/obj/structure/bookcase, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/library) +"scE" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/security/hos) +"scG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) +"scH" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securehallway) +"scN" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plating, +/area/maintenance/garden) +"sdb" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/kitchen) +"sdi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"sdq" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"sdu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"sdB" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/civilian/barber) +"sdV" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/snacks/cookie, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"sdW" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"sem" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/quartermaster/storage) +"sen" = ( +/obj/structure/rack, +/obj/item/tank/internals/emergency_oxygen/engi/syndi, +/obj/item/clothing/mask/gas/syndicate, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"seL" = ( +/obj/machinery/conveyor{ + id = "mining_internal" + }, +/obj/machinery/mineral/processing_unit{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"seM" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"seO" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 1 + }, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"seT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot/left, +/obj/effect/turf_decal/bot/right, +/obj/structure/closet/crate/secure/engineering{ + req_access = list(10) + }, +/obj/item/rcd, +/obj/item/rcd_ammo, +/obj/item/rcd_ammo, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/sorting) +"seV" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/light_switch{ + pixel_x = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/office) +"sfc" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/processing) +"sfl" = ( +/obj/machinery/door/airlock/public/glass{ + id_tag = "Perma22" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"sfG" = ( +/obj/machinery/power/apc/worn_out{ + pixel_x = 26; + dir = 4; + cell_type = 0 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"sfR" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"sga" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkblue" + }, +/area/bridge/vip) +"sgn" = ( +/obj/machinery/atmospherics/unary/outlet_injector/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"shP" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/civilian/barber) +"shX" = ( +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/structure/fence/corner{ + dir = 5 + }, +/obj/structure/fence/post{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"shZ" = ( +/obj/structure/chair, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"sid" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/wood{ + icon_state = "wood-broken7" + }, +/area/coldcolony/morgue) +"sig" = ( +/obj/structure/table/reinforced, +/obj/item/lighter/zippo/engraved{ + pixel_x = 8 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"sio" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"siB" = ( +/obj/structure/closet/secure_closet/medical2, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"siE" = ( +/obj/machinery/door/airlock/external{ + req_access = list(160); + hackProof = 1; + aiControlDisabled = 1 + }, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"siG" = ( +/obj/item/reagent_containers/food/pill/patch/silver_sulf{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/pill/patch/silver_sulf{ + pixel_x = -5; + pixel_y = -3 + }, +/obj/item/reagent_containers/food/pill/patch/silver_sulf, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"siP" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/pirate/ranged{ + loot = list(/obj/effect/mob_spawn/human/corpse/pirate/ranged) + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/shuttle/pirate_corvette) +"siS" = ( +/obj/effect/decal/cleanable/generic, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"sjb" = ( +/obj/machinery/suit_storage_unit/security/hos, +/obj/effect/decal/warning_stripes/southwest, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/hos) +"sjv" = ( +/turf/simulated/wall/rust, +/area/maintenance/fsmaint) +"sjV" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/securearmory) +"ske" = ( +/obj/structure/fluff/grave{ + name = "The grave of the colony fighters" + }, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"skr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"sld" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"sle" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start/engineer, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"slM" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/item/paper/crumpled, +/obj/machinery/newscaster{ + pixel_x = 30 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"slU" = ( +/obj/machinery/door/poddoor{ + id_tag = "engstorage"; + name = "Secure Storage Blast Doors" + }, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/effect/decal/warning_stripes/southwestcorner, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"smr" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 5 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"smD" = ( +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/secondary/entry/lounge) +"smN" = ( +/obj/machinery/vending/cigarette, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"snk" = ( +/obj/item/reagent_containers/food/snacks/meat{ + pixel_y = -4; + pixel_x = -7 + }, +/obj/effect/decal/ants, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"snl" = ( +/obj/machinery/recharge_station, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"snr" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/carpet/cyan, +/area/bridge/vip) +"sny" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"snz" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/bar) +"snJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/effect/landmark/start/janitor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"snM" = ( +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"snO" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/plasma{ + amount = 4 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"soh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"soj" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/sign/poster/random{ + pixel_x = 32 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"soJ" = ( +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Lethal Bullets" + }, +/obj/item/ammo_box/magazine/enforcer/lethal{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/ammo_box/magazine/enforcer/lethal, +/obj/item/ammo_box/magazine/enforcer/lethal{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/magazine/enforcer/lethal{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"soN" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"soV" = ( +/obj/structure/table/wood, +/obj/machinery/bottler, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/bar) +"soZ" = ( +/turf/simulated/wall, +/area/clownoffice) +"spc" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"spj" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purplecorner" + }, +/area/coldcolony/ruin/sm_chamber) +"spn" = ( +/obj/structure/fans/tiny, +/obj/effect/decal/snow/sand/edge{ + dir = 4 + }, +/obj/effect/decal/snow/sand/edge{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/maintenance/external{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"spt" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/obj/structure/chair/stool/bar, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"spG" = ( +/obj/item/soap, +/obj/structure/curtain{ + name = "shower" + }, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"spJ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"spL" = ( +/obj/machinery/autolathe/security, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/customs) +"spX" = ( +/obj/structure/table/wood/fancy/red, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"spY" = ( +/obj/structure/sink{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/bridge/vip) +"sqc" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Bar" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"sql" = ( +/obj/structure/closet/boxinggloves, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"sqp" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"sre" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"srq" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/main) +"srs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"srJ" = ( +/obj/structure/rack, +/obj/item/melee/baseball_bat/ablative, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"srM" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/main) +"srP" = ( +/obj/machinery/atmospherics/unary/outlet_injector/on{ + id = "air_in" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/engine/air, +/area/atmos) +"srW" = ( +/obj/structure/closet/crate, +/obj/item/vending_refill/cigarette, +/obj/item/vending_refill/snack, +/obj/item/vending_refill/coffee, +/obj/item/vending_refill/cola, +/obj/item/circuitboard/vendor, +/obj/item/circuitboard/vendor, +/obj/item/circuitboard/vendor, +/obj/item/circuitboard/vendor, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"ssz" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"ssG" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/structure/flora/ausbushes/sunnybush, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"ssR" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"ssV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"ssW" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/bridge) +"stk" = ( +/obj/structure/closet/crate/freezer{ + opened = 1; + icon_state = "freezeropen" + }, +/obj/item/reagent_containers/food/snacks/bun, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"stp" = ( +/obj/structure/table/wood, +/obj/item/stamp/magistrate, +/obj/item/pen/multi/gold, +/obj/item/lighter/zippo/engraved{ + pixel_x = 8 + }, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"stt" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/engineering{ + name = "Uranium generator"; + req_access = list(10) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) +"stA" = ( +/obj/machinery/shower{ + dir = 4; + tag = "icon-shower (EAST)"; + pixel_y = 4 + }, +/obj/effect/decal/warning_stripes/blue, +/obj/effect/decal/warning_stripes/south, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/virology/lab) +"stD" = ( +/obj/structure/alien/weeds, +/obj/item/stack/medical/bruise_pack, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"stQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/sleeper{ + dir = 2 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"sua" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"sui" = ( +/obj/structure/closet/secure_closet/paramedic, +/obj/item/defibrillator/loaded, +/obj/item/clothing/glasses/hud/health, +/turf/simulated/floor/plasteel/white, +/area/medical/paramedic) +"sva" = ( +/obj/structure/chair/wood{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"svk" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"svq" = ( +/obj/machinery/hydroponics/soil, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/seeds/orange, +/turf/simulated/floor/grass, +/area/security/permabrig) +"svW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"svZ" = ( +/obj/structure/rack, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/random/tool, +/obj/random/tool, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"swk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"swx" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/public, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library/game_zone) +"swG" = ( +/obj/effect/turf_decal/caution{ + dir = 8; + do_not_delete_me = 1 + }, +/obj/machinery/light/small{ + dir = 1; + pixel_x = -8 + }, +/turf/simulated/floor/plasteel/airless{ + icon_state = "podfloor_light"; + icon_regular_floor = "podfloor_light" + }, +/area/shuttle/pirate_corvette) +"swN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker) +"sxa" = ( +/obj/machinery/optable, +/obj/item/tank/internals/anesthetic, +/obj/item/clothing/mask/breath/medical, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitered" + }, +/area/security/medbay) +"sxv" = ( +/obj/structure/table/reinforced, +/obj/item/stamp/warden{ + pixel_y = 10 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/warden) +"sxx" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + name = "Труба дыхательной смеси" + }, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/atmos) +"sxI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/clown, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/clownoffice) +"sxJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/garden) +"sxQ" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/snow/sand/edge{ + dir = 4 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"sxW" = ( +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/obj/machinery/computer/merch{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/office) +"syf" = ( +/obj/structure/grille/broken, +/obj/item/shard{ + icon_state = "medium"; + pixel_x = -3; + pixel_y = -5 + }, +/obj/effect/decal/snow/sand/edge{ + dir = 10 + }, +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/obj/effect/decal/cleanable/glass, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"syi" = ( +/obj/structure/table/reinforced, +/obj/item/mmi/robotic_brain, +/obj/item/multitool{ + pixel_x = 3 + }, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/assembly/robotics) +"syy" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/camera{ + c_tag = "Cargo Office South-West"; + dir = 4 + }, +/obj/machinery/light_switch{ + pixel_x = -24 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/storage) +"syT" = ( +/turf/simulated/floor/carpet/red, +/area/magistrateoffice) +"szr" = ( +/obj/machinery/door/airlock/maintenance/external{ + req_access = list(12) + }, +/obj/effect/decal/snow/sand/edge, +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"szw" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken4" + }, +/area/coldcolony/ruin/abandoned_banya) +"szx" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"szA" = ( +/obj/machinery/door/poddoor/shutters{ + dir = 2; + id_tag = "rndgarage" + }, +/obj/structure/fans/tiny, +/obj/effect/decal/snow/sand/edge{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel, +/area/medical/research) +"szH" = ( +/obj/structure/table/reinforced, +/obj/item/restraints/handcuffs, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/bridge) +"szM" = ( +/obj/structure/sign/electricshock, +/turf/simulated/wall, +/area/maintenance/asmaint3) +"szN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"szT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/brig) +"szW" = ( +/obj/effect/decal/snow/sand/edge, +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 1; + name = "Residential block" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"sAo" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"sAv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"sAD" = ( +/obj/structure/sign/directions/medical{ + pixel_y = 7; + dir = 1 + }, +/obj/structure/sign/directions/security{ + dir = 1 + }, +/obj/structure/sign/directions/cargo{ + dir = 1; + pixel_y = -7 + }, +/turf/simulated/wall/rust, +/area/maintenance/asmaint3) +"sAK" = ( +/turf/simulated/wall/indestructible/rock, +/area/ruin/unpowered/coldcolony_outside) +"sAR" = ( +/obj/machinery/recycler, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"sBl" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"sBm" = ( +/obj/machinery/recharge_station, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/light, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"sBE" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"sBU" = ( +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"sCP" = ( +/obj/effect/decal/cleanable/confetti, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"sCQ" = ( +/obj/structure/flora/ausbushes/palebush, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"sCU" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood/fancy/cherry, +/area/ruin/unpowered) +"sDe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"sDf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/qm) +"sDh" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/officetoys, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/carpet/royalblue, +/area/ntrep) +"sDl" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"sDw" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/wood, +/area/security/detectives_office) +"sDO" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/simulated/floor/carpet/royalblue, +/area/ntrep) +"sDU" = ( +/obj/structure/table/reinforced, +/obj/item/paicard, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/chief) +"sEc" = ( +/obj/structure/railing/corner, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"sEw" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/evidence) +"sED" = ( +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "whitered" + }, +/area/security/medbay) +"sER" = ( +/obj/structure/table/wood, +/obj/item/storage/briefcase, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library/game_zone) +"sEX" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"sFd" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"sFe" = ( +/turf/simulated/wall, +/area/engineering/engine/monitor) +"sFp" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry) +"sFr" = ( +/obj/structure/flora/grass/brown, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"sFw" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkredcorners" + }, +/area/security/permahallway) +"sFE" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"sFF" = ( +/obj/structure/table, +/obj/item/reagent_containers/syringe/antiviral, +/obj/item/reagent_containers/syringe/charcoal, +/obj/item/reagent_containers/syringe/insulin, +/obj/item/reagent_containers/glass/bottle/morphine, +/obj/item/reagent_containers/glass/bottle/epinephrine, +/obj/item/reagent_containers/syringe, +/obj/item/stack/medical/bruise_pack/advanced{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/stack/medical/ointment/advanced{ + pixel_x = 6; + pixel_y = 8 + }, +/obj/item/reagent_containers/food/pill/patch/styptic{ + pixel_y = 6 + }, +/obj/item/reagent_containers/food/pill/patch/styptic{ + pixel_x = 2; + pixel_y = 8 + }, +/obj/item/reagent_containers/food/pill/patch/silver_sulf{ + pixel_x = -8; + pixel_y = 6 + }, +/obj/item/reagent_containers/food/pill/patch/silver_sulf{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/storage/pill_bottle/painkillers{ + pixel_x = -6; + pixel_y = -3 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"sFJ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_lab) +"sGd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"sGh" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "CMO Shutters"; + name = "CMO Privacy Shutters" + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/medical/cmo) +"sGB" = ( +/obj/effect/decal/ants, +/turf/simulated/floor/wood{ + icon_state = "wood-broken6" + }, +/area/maintenance/kitchen) +"sGI" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/brig) +"sGS" = ( +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"sGT" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"sHc" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/camera{ + c_tag = "Second Surgery"; + network = list("SS13","Medical") + }, +/obj/item/storage/wallet, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"sHt" = ( +/obj/structure/rack, +/obj/random/tool, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"sHA" = ( +/turf/simulated/wall/rust, +/area/coldcolony/ruin/miningbar) +"sHL" = ( +/obj/machinery/door/airlock/public{ + name = "Docks" + }, +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/lounge) +"sHP" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"sHU" = ( +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"sIh" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkbluecorners" + }, +/area/bridge/vip) +"sIq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkpurple" + }, +/area/bridge/vip) +"sIH" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window/brigdoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/genetics) +"sII" = ( +/obj/structure/table, +/obj/item/storage/fancy/donut_box, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/machinery/light_switch{ + pixel_x = -12; + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"sIS" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced, +/obj/machinery/recharger{ + pixel_x = 1; + pixel_y = 3 + }, +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain/bedroom) +"sIW" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 1; + name = "Труба смешивания" + }, +/obj/effect/decal/warning_stripes/south, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/atmos) +"sJf" = ( +/obj/item/flag/species/vox, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"sJh" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/dispenser/oxygen, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"sJy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/junction/reversed{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"sJD" = ( +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"sJH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/cyborg, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/hallway/primary/fore) +"sJN" = ( +/obj/machinery/power/smes{ + charge = 4e+006; + output_level = 10000 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"sJS" = ( +/obj/machinery/flasher{ + id = "Cell 2"; + name = "Cell 2 Flasher"; + pixel_y = 28 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"sKa" = ( +/obj/machinery/crematorium, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) +"sKl" = ( +/obj/machinery/computer/secure_data, +/turf/simulated/floor/carpet/royalblue, +/area/ntrep) +"sKm" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"sKt" = ( +/obj/item/snowball, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"sKD" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "eslock" + }, +/turf/simulated/floor/plating, +/area/hallway/secondary/exit) +"sKH" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"sKI" = ( +/turf/simulated/wall, +/area/janitor) +"sKL" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"sKN" = ( +/obj/effect/decal/cleanable/blood/tracks, +/obj/machinery/door/window/westleft{ + dir = 2 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"sLc" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) +"sLq" = ( +/obj/machinery/recharge_station, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/eastarrival) +"sLs" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/officetoys, +/obj/machinery/keycard_auth{ + pixel_x = -26; + pixel_y = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain) +"sLL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/junction{ + dir = 2 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkblue" + }, +/area/bridge/vip) +"sLO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/mounted/frame/extinguisher, +/obj/item/extinguisher, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"sMa" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"sMu" = ( +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/bridge) +"sMD" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkblue" + }, +/area/hallway/primary/fore) +"sMP" = ( +/obj/effect/decal/ants, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"sMQ" = ( +/obj/structure/rack, +/obj/item/shovel, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"sMT" = ( +/obj/item/reagent_containers/food/snacks/meat/humanoid/human, +/obj/item/reagent_containers/food/snacks/meat/humanoid/human, +/obj/item/reagent_containers/food/snacks/meat/humanoid/human, +/obj/item/reagent_containers/food/snacks/meat/humanoid/human, +/obj/item/reagent_containers/food/snacks/meat/humanoid/human, +/obj/item/reagent_containers/food/snacks/meat/humanoid/human, +/obj/item/reagent_containers/food/snacks/meat/humanoid/human, +/obj/item/reagent_containers/food/snacks/meat/humanoid/human, +/obj/structure/table/wood, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"sNd" = ( +/obj/effect/mine/explosive, +/turf/simulated/floor/plating, +/area/engineering/gravitygenerator) +"sNh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = -1; + pixel_y = 7 + }, +/obj/item/pen{ + pixel_x = 4; + pixel_y = 7 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/qm) +"sNm" = ( +/obj/machinery/power/apc{ + pixel_y = 26; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/light_switch{ + pixel_y = 24; + pixel_x = 12 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/crew_quarters/chief) +"sNz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/item/qm_quest_tablet{ + pixel_y = -3 + }, +/obj/item/flashlight/lamp{ + pixel_x = -3; + pixel_y = 13 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/qm) +"sNB" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/cigcase, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"sNF" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_x = -4 + }, +/obj/machinery/door_control{ + id = "eslock"; + name = "Paths Lockdown Control"; + pixel_x = 7; + pixel_y = -3; + req_access = list(1) + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/security/checkpoint) +"sNJ" = ( +/obj/item/chair/wood, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/maintenance/kitchen) +"sNQ" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_chamber) +"sOa" = ( +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"sOw" = ( +/obj/machinery/photocopier, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/processing) +"sOz" = ( +/obj/structure/table, +/obj/item/storage/box/mousetraps, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/janitor) +"sOI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"sOU" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 9 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"sOW" = ( +/obj/structure/bed, +/obj/item/bedsheet/black, +/obj/effect/landmark/start/nanotrasen_rep, +/turf/simulated/floor/carpet/royalblue, +/area/bridge/vip) +"sPc" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"sQa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"sQf" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/shower{ + dir = 4; + pixel_y = 4; + tag = "icon-shower (EAST)" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/genetics) +"sQs" = ( +/obj/structure/chair/comfy/red{ + dir = 8 + }, +/obj/effect/landmark/start/librarian, +/turf/simulated/floor/carpet, +/area/library) +"sQM" = ( +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/toxins/explab) +"sRe" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "QMLoad"; + name = "Upload" + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) +"sRk" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/brig) +"sRt" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor"; + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"sSa" = ( +/obj/structure/table/reinforced, +/obj/item/radio/sec, +/obj/machinery/light_switch{ + pixel_x = -24 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "red" + }, +/area/security/checkpoint) +"sSg" = ( +/obj/effect/decal/snow/sand, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"sSr" = ( +/obj/machinery/atmospherics/trinary/filter{ + desc = "Отфильтровывает углекислый газ из трубы и отправляет его в камеру хранения"; + filter_type = 3; + name = "Фильтр Углекислого Газа (СO2)"; + on = 1; + target_pressure = 4500 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "caution" + }, +/area/atmos) +"sSw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"sSy" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/securearmory) +"sSX" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/kitchen) +"sSZ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securehallway) +"sTe" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"sTg" = ( +/obj/structure/table, +/obj/item/restraints/handcuffs, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/hallway/primary/starboard/east) +"sTy" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"sTT" = ( +/obj/item/trash/candy, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"sTZ" = ( +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/quartermaster/sorting) +"sUa" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/flora/ausbushes/sunnybush, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"sUd" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"sUl" = ( +/obj/item/trash/plate, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"sUW" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "garbage" + }, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/trash/semki, +/obj/item/lighter/zippo, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"sUZ" = ( +/obj/structure/table, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"sVp" = ( +/obj/structure/table/reinforced, +/obj/effect/spawner/lootdrop/officetoys, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) +"sVt" = ( +/obj/effect/decal/cleanable/dust, +/obj/effect/landmark/start/scientist, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) +"sVx" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/crew_quarters/locker) +"sVE" = ( +/obj/structure/rack{ + dir = 1 + }, +/obj/item/storage/box/bodybags{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/storage/box/evidence, +/obj/item/storage/box/evidence{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/hand_labeler, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/evidence) +"sVG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/wardrobe/chemistry_white, +/obj/item/storage/bag/chemistry, +/obj/item/clothing/glasses/science{ + pixel_y = 3 + }, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/obj/machinery/camera{ + c_tag = "Medbey Chemistry"; + dir = 5; + network = list("Medical","SS13") + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"sWa" = ( +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/obj/machinery/camera/motion{ + c_tag = "Vault"; + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/security/nuke_storage) +"sWc" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitehall" + }, +/area/crew_quarters/sleep) +"sWi" = ( +/obj/machinery/mecha_part_fabricator, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/assembly/robotics) +"sWq" = ( +/obj/structure/table, +/obj/item/gps/mining, +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"sWC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) +"sWG" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = -5 + }, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"sWP" = ( +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/lounge) +"sWU" = ( +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/cmo) +"sXi" = ( +/obj/structure/rack, +/obj/item/clothing/suit/space/syndicate/black/red, +/obj/item/clothing/head/helmet/space/syndicate/black/red, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"sXm" = ( +/obj/structure/closet/crate/trashcart, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"sXB" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"sYr" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen/fancy, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"sYK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"sYN" = ( +/obj/effect/landmark/start/student_sientist, +/turf/simulated/floor/plasteel, +/area/medical/research) +"sYU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"sZt" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"sZE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"sZF" = ( +/obj/machinery/light, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/kitchen) +"sZH" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wideplating{ + color = "#332a2a"; + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"sZT" = ( +/obj/effect/turf_decal/stripes/line{ + do_not_delete_me = 1; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"sZY" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"tab" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/fore) +"tak" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/sleep) +"taC" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood{ + icon_state = "wood-broken6" + }, +/area/crew_quarters/theatre) +"taD" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/space_heater, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry) +"taH" = ( +/obj/machinery/atmospherics/binary/pump{ + desc = "Подаёт кислород в смеситель для создания дыхательной смеси, которая потом распространяется по станции"; + name = "Кислород (O2) в дыхательную смесь"; + on = 1; + target_pressure = 101 + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 4; + name = "Труба смешивания" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"taP" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"taU" = ( +/turf/simulated/wall, +/area/bridge/checkpoint/south) +"tbp" = ( +/obj/item/clothing/head/fedora, +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitehall" + }, +/area/crew_quarters/sleep) +"tbC" = ( +/turf/simulated/floor/wood{ + icon_state = "wood-broken3"; + tag = "icon-wood-broken3" + }, +/area/hallway/secondary/entry/lounge) +"tbD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"tbG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"tbN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_lab) +"tcb" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"tcg" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + name = "Труба смешивания" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/atmos) +"tci" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/effect/landmark/start/scientist, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/toxins/lab) +"tco" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/permabrig) +"tcx" = ( +/obj/structure/table/wood, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/carpet, +/area/bridge/checkpoint/south) +"tcy" = ( +/obj/machinery/door_control{ + id = "ArmorySec"; + name = "Armory Security Window Control"; + pixel_y = -8; + req_access = list(3) + }, +/obj/machinery/door_control{ + id = "ArmorySecAccess"; + name = "Armory Security Access Control"; + pixel_y = 8; + req_access = list(3) + }, +/turf/simulated/wall/r_wall, +/area/security/securearmory) +"tcS" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engineering/break_room) +"tcX" = ( +/obj/structure/chair/sofa/pew/right{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "chapel" + }, +/area/chapel/main) +"tdj" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/disposal, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/medical/virology/lab) +"tdw" = ( +/obj/structure/cable, +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"tdO" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + id = "mining_internal" + }, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"tdZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/shuttle/pirate_corvette) +"teq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purplecorner" + }, +/area/coldcolony/ruin/sm_division) +"ter" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"teu" = ( +/obj/structure/table/wood, +/obj/item/storage/pill_bottle/dice, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/library) +"tey" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/security/medbay) +"teC" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos) +"teG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"teL" = ( +/obj/structure/flora/grass/green, +/turf/simulated/floor/wood{ + icon_state = "wood-broken" + }, +/area/coldcolony/morgue) +"teP" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkredcorners" + }, +/area/security/main) +"teZ" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/lounge) +"tfI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/bridge) +"tfM" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"tfZ" = ( +/turf/simulated/floor/plating, +/area/maintenance/kitchen) +"tga" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/binary/pump/on{ + target_pressure = 303.325 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"tgo" = ( +/obj/structure/sign/biohazard, +/turf/simulated/wall/r_wall, +/area/medical/virology/lab) +"tgM" = ( +/obj/machinery/computer/aiupload/cyborg, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"tgU" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securehallway) +"tgW" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/brig) +"tgY" = ( +/obj/structure/table/wood, +/obj/item/healthanalyzer, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"tgZ" = ( +/turf/simulated/wall, +/area/toxins/test_chamber) +"tha" = ( +/obj/structure/flora/grass/brown, +/obj/structure/sign/poster/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"thc" = ( +/obj/effect/landmark/event/xeno_spawn, +/turf/simulated/floor/carpet, +/area/maintenance/casino) +"thh" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/ore_production) +"thA" = ( +/obj/machinery/chem_dispenser/soda, +/obj/structure/table/wood, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/bar) +"thB" = ( +/obj/machinery/door/airlock/tranquillite{ + name = "Mime's Office"; + req_access = list(46) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) +"thC" = ( +/obj/structure/closet/secure_closet/security, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/clothing/suit/hooded/wintercoat/security, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/customs) +"thE" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Chief Engineer Room"; + req_access = list(56) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"thJ" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"tic" = ( +/obj/structure/table/reinforced, +/obj/item/clipboard, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/warden) +"tih" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/flora/ausbushes/leafybush, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"tik" = ( +/obj/machinery/computer/security, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/warden) +"tis" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"tix" = ( +/obj/structure/chair, +/obj/effect/turf_decal/siding/wideplating{ + color = "#332a2a" + }, +/obj/structure/railing, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"tiS" = ( +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain/bedroom) +"tjf" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"tjm" = ( +/obj/effect/landmark/start/security_officer, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/customs) +"tju" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"tjz" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/security/detectives_office) +"tjT" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"tkc" = ( +/obj/machinery/libraryscanner, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"tkO" = ( +/obj/effect/decal/ants, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"tkU" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"tkX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/wood/oak, +/area/civilian/vacantoffice) +"tlb" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permahallway) +"tlg" = ( +/obj/effect/decal/ants, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"tlh" = ( +/obj/structure/table/wood, +/obj/item/candle{ + pixel_x = 2 + }, +/turf/simulated/floor/wood/fancy/cherry{ + icon_state = "fancy-wood-cherry-broken4" + }, +/area/library/game_zone) +"tly" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"tlB" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"tlP" = ( +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/commercial) +"tma" = ( +/obj/machinery/photocopier, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/toxins/lab) +"tmk" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/effect/landmark/start/cargo_technician, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"tmx" = ( +/turf/simulated/wall/rust, +/area/medical/medbay2) +"tmN" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12 + }, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"tmP" = ( +/obj/machinery/cryopod{ + dir = 8 + }, +/obj/machinery/computer/cryopod{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/crew_quarters/sleep) +"tnH" = ( +/obj/effect/decal/warning_stripes/north, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"tnK" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/hor) +"tnO" = ( +/obj/machinery/photocopier, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/heads/hop) +"tnP" = ( +/obj/structure/table, +/obj/item/gun/syringe{ + pixel_y = 6 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"tnY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"tnZ" = ( +/turf/simulated/floor/plating, +/area/security/permabrig) +"toa" = ( +/obj/machinery/atmospherics/binary/pump{ + desc = "Подаёт кислород для смешивания с другими газами"; + dir = 8; + name = "Кислород (O2) в смеситель"; + target_pressure = 101 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos) +"tok" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"ton" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/tank/air{ + dir = 4; + volume = 20000 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"tou" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"toB" = ( +/obj/machinery/atmospherics/binary/volume_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"toL" = ( +/obj/structure/alien/weeds/node, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"toS" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"toY" = ( +/obj/machinery/telepad_cargo, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"tpf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"tps" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/maintenance/kitchen) +"tpG" = ( +/obj/structure/rack, +/obj/item/holosign_creator/atmos, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"tpN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/sorting) +"tpO" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry) +"tqd" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"tqk" = ( +/obj/structure/table/reinforced, +/obj/machinery/reagentgrinder{ + pixel_x = -1; + pixel_y = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"tqG" = ( +/obj/machinery/light_construct, +/obj/item/light/tube{ + icon_state = "ltube-broken"; + status = 2 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_chamber) +"tqW" = ( +/obj/machinery/door/airlock/command{ + id_tag = "captainofficedoor"; + name = "Captain's Office"; + req_access = list(20) + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"tqY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/hallway/primary/central/east) +"trl" = ( +/obj/structure/closet/crate/miningcar{ + name = "mining car" + }, +/obj/item/stack/ore/gold{ + amount = 3 + }, +/obj/item/stack/ore/iron{ + amount = 9 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"trA" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"trH" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"trS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/junction{ + dir = 2 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"trW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/storage) +"tsa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sink{ + dir = 1; + layer = 5; + pixel_y = -5 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"tsb" = ( +/obj/structure/closet/crate/miningcar{ + name = "mining car" + }, +/obj/item/stack/ore/titanium{ + amount = 11 + }, +/obj/item/stack/ore/silver{ + amount = 5 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"tsc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/gibs/limb, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken2" + }, +/area/coldcolony/ruin/abandoned_banya) +"tsm" = ( +/obj/structure/flora/rock/pile, +/obj/structure/flora/grass/green, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"tsw" = ( +/turf/simulated/wall/rust, +/area/hallway/primary/starboard/east) +"tsV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/eastarrival) +"ttc" = ( +/obj/docking_port/stationary{ + dwidth = 2; + height = 12; + id = "ferry_home"; + name = "port bay 3"; + width = 5; + dir = 4; + turf_type = /turf/simulated/floor/plating/asteroid/snow/atmosphere; + area_type = /area/ruin/unpowered/coldcolony_outside + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"ttu" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-cherry" + }, +/area/crew_quarters/trading) +"ttw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/flashlight, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "browncorner" + }, +/area/coldcolony/ruin/miningeva) +"ttz" = ( +/turf/simulated/floor/plating, +/area/crew_quarters/fitness) +"ttB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/sorting) +"ttY" = ( +/obj/machinery/vending/plasmaresearch{ + anchored = 0 + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"tuf" = ( +/obj/structure/alien/weeds, +/obj/structure/alien/egg/burst, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"tuh" = ( +/obj/structure/table, +/obj/machinery/cell_charger{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/stock_parts/cell, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"tui" = ( +/obj/machinery/bodyscanner{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitered" + }, +/area/security/medbay) +"tul" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction, +/turf/simulated/wall/r_wall/rust, +/area/coldcolony/ruin/sm_chamber) +"tun" = ( +/obj/structure/safe/floor, +/obj/item/gun/projectile/revolver/nagant, +/obj/structure/spider/stickyweb, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"tuu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/intern, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"tuv" = ( +/obj/structure/signpost{ + desc = "На указателе написанно: Запад - Рем. мастерская, медблок, жилой блок. Север - Охрана, администрация. Юг - Инженерия." + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"tuB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"tuS" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"tuV" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/condiment/peppermill{ + pixel_x = -5 + }, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -3; + pixel_y = 11 + }, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"tvb" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/checkpoint) +"tvf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"tvs" = ( +/turf/simulated/wall, +/area/blueshield) +"tvJ" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/light{ + active_power_usage = 0; + dir = 8; + icon_state = "tube-broken"; + status = 2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"tvN" = ( +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/effect/spawner/random_spawners/syndicate/loot/stetchkin, +/obj/structure/closet/cabinet, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"tvR" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Engineering"; + req_access = list(32) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"tvS" = ( +/obj/effect/decal/warning_stripes/arrow{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/office) +"tvU" = ( +/obj/effect/decal/warning_stripes/west, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "yellow" + }, +/area/engineering/engine/monitor) +"twb" = ( +/obj/machinery/computer/mech_bay_power_console, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/coldcolony/ruin/abandoned_garage) +"twg" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"twi" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id_tag = "BridgeLockdown"; + name = "Bridge Lockdown" + }, +/obj/machinery/door/airlock/command{ + name = "Command"; + req_access = list(19) + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"twl" = ( +/obj/structure/table, +/obj/machinery/cell_charger{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/stock_parts/cell, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"twC" = ( +/turf/simulated/wall, +/area/hallway/primary/central/se) +"twE" = ( +/obj/item/circuitboard/pandemic, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"twL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"twU" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/civilian/barber) +"txf" = ( +/obj/machinery/computer/atmos_alert, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkyellow" + }, +/area/bridge) +"txp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/obj/effect/mist, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"txq" = ( +/obj/machinery/atmospherics/trinary/mixer{ + dir = 1 + }, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"txF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/security/medbay) +"txI" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"txM" = ( +/obj/machinery/recharge_station, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"tyd" = ( +/obj/structure/closet/wardrobe/pjs{ + anchored = 1 + }, +/obj/effect/decal/warning_stripes/red, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"tyC" = ( +/obj/item/toy/russian_revolver{ + pixel_y = -9 + }, +/obj/item/toy/russian_revolver{ + pixel_x = 9; + pixel_y = 2 + }, +/obj/item/toy/russian_revolver{ + pixel_y = 12; + pixel_x = -2 + }, +/obj/item/toy/russian_revolver{ + pixel_x = -12; + pixel_y = 2 + }, +/obj/item/deck/cards/black, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/table/wood/poker, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"tyV" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/heads/hop) +"tyX" = ( +/obj/machinery/atmospherics/unary/vent_pump{ + external_pressure_bound = 0; + external_pressure_bound_default = 0; + frequency = 1441; + id_tag = "n2_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + internal_pressure_bound_default = 4000; + name = "n2 vent"; + on = 1; + pressure_checks = 2; + pressure_checks_default = 2; + releasing = 0 + }, +/turf/simulated/floor/engine/n2{ + nitrogen = 10000 + }, +/area/atmos) +"tzr" = ( +/obj/structure/table, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/item/paper/monitorkey, +/obj/item/paper/rnd_logs_key{ + pixel_x = 6; + pixel_y = 6 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/crew_quarters/hor) +"tzB" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1; + do_not_delete_me = 1 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"tzE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/holosign/barrier/engineering, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"tzP" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"tAL" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction/reversed{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"tAM" = ( +/obj/structure/table, +/obj/item/stack/wrapping_paper, +/obj/item/stack/wrapping_paper, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"tAO" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research{ + req_access = list(47,40,39) + }, +/turf/simulated/floor/plating, +/area/assembly/chargebay) +"tBa" = ( +/obj/structure/holosign/barrier/engineering, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"tBf" = ( +/obj/machinery/gameboard{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/radio/intercom{ + pixel_y = 24 + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"tBo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"tBp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"tBy" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Research"; + req_access = list(47) + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_lab) +"tBG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/casino) +"tBN" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/commercial) +"tBP" = ( +/obj/structure/fans/tiny, +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/obj/effect/decal/snow/sand/edge, +/obj/machinery/door/poddoor/shutters{ + dir = 8; + id_tag = "paramedic"; + name = "Paramedic Garage" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/paramedic) +"tCb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"tCc" = ( +/obj/structure/toilet/captain_toilet{ + pixel_y = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/captain/bedroom) +"tCf" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/brig) +"tCy" = ( +/turf/simulated/wall/rust, +/area/medical/biostorage) +"tCC" = ( +/obj/machinery/computer/mech_bay_power_console, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/coldcolony/ruin/abandoned_garage) +"tCI" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/item/stack/cable_coil{ + amount = 3 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"tCQ" = ( +/obj/machinery/recharge_station, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/north) +"tCS" = ( +/obj/machinery/vending/crittercare, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"tDn" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/hallway/primary/fore) +"tDu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"tDC" = ( +/obj/item/radio/intercom{ + pixel_y = -26 + }, +/turf/simulated/floor/carpet/royalblue, +/area/ntrep) +"tDE" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/security/detectives_office) +"tDV" = ( +/turf/simulated/floor/plasteel/grimy, +/area/civilian/vacantoffice) +"tEb" = ( +/obj/effect/decal/warning_stripes/blue, +/obj/effect/decal/snow/sand/edge{ + dir = 5 + }, +/obj/structure/closet/emcloset, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"tEj" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/structure/holosign/barrier/engineering, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"tEk" = ( +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"tEy" = ( +/obj/item/flag/sec, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"tEJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/landmark/start/botanist, +/turf/simulated/floor/plasteel{ + icon_state = "asteroid" + }, +/area/hydroponics) +"tEM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"tEN" = ( +/obj/machinery/light{ + active_power_usage = 0; + icon_state = "tube-broken"; + status = 2 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"tET" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/carpet, +/area/medical/cmo) +"tFk" = ( +/obj/structure/closet/secure_closet/brigdoc{ + req_access = list(2,5) + }, +/obj/item/handheld_defibrillator, +/obj/item/storage/belt/medical, +/obj/item/storage/pill_bottle, +/obj/item/storage/pill_bottle/patch_pack, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whitered" + }, +/area/security/medbay) +"tFr" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/security/permabrig) +"tFw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/tank/air{ + dir = 8; + volume = 20000 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"tFB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hydroponics) +"tFG" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "escape" + }, +/area/hallway/secondary/entry/lounge) +"tFW" = ( +/obj/machinery/door/airlock/command{ + id_tag = "captainofficedoor"; + name = "Captain's Office"; + req_access = list(20) + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain/bedroom) +"tGa" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/simulated/floor/lava/lava_land_surface/plasma/cold, +/area/ruin/unpowered/coldcolony_outside) +"tGh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/brig) +"tGm" = ( +/obj/structure/ore_box, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"tGA" = ( +/obj/effect/landmark/observer_start, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research) +"tGE" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wideplating{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"tGK" = ( +/obj/effect/decal/cleanable/generic, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"tGO" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/sleep) +"tHl" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"tHG" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/simulated/floor/carpet, +/area/library) +"tIr" = ( +/obj/machinery/door/window/brigdoor{ + dir = 1; + name = "Creature Pen"; + req_access = list(47) + }, +/obj/machinery/door/window/brigdoor{ + dir = 2; + name = "Creature Pen"; + req_access = list(47) + }, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"tIL" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"tJa" = ( +/obj/structure/chair/sofa/left{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/theatre) +"tJm" = ( +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"tJs" = ( +/obj/structure/rack, +/obj/item/stack/sheet/mineral/plasma/fifty, +/obj/item/wrench, +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"tJy" = ( +/obj/structure/closet/crate/can, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"tJF" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"tJP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/chef, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/kitchen) +"tJS" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"tJU" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "red" + }, +/area/hallway/primary/starboard/east) +"tJV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners" + }, +/area/security/brig) +"tKj" = ( +/obj/structure/table/wood, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/item/flashlight, +/obj/item/flashlight{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"tLB" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/landmark/start/engineer, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"tLD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"tLE" = ( +/turf/simulated/wall, +/area/library/game_zone) +"tMx" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"tMz" = ( +/turf/simulated/floor/carpet/cyan, +/area/bridge/vip) +"tMW" = ( +/obj/effect/decal/cleanable/dust, +/obj/effect/decal/cleanable/blood/tracks, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"tMZ" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"tNa" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 1; + name = "Труба дыхательной смеси" + }, +/obj/machinery/atmospherics/meter, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"tNe" = ( +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"tNq" = ( +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research) +"tNu" = ( +/mob/living/simple_animal/pig/Sanya, +/obj/structure/flora/ausbushes/fernybush, +/turf/simulated/floor/grass, +/area/hydroponics) +"tNF" = ( +/obj/effect/spawner/random_spawners/fungus_70, +/turf/simulated/wall, +/area/coldcolony/ruin/miningeva) +"tNK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"tNQ" = ( +/obj/machinery/power/port_gen/pacman, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"tNS" = ( +/obj/effect/turf_decal/weather/snow/corner, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"tOb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"tOe" = ( +/obj/machinery/newscaster/security_unit{ + pixel_x = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securearmory) +"tOm" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/atmos) +"tPc" = ( +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/obj/machinery/light_switch{ + pixel_x = -24; + pixel_y = -8 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"tPC" = ( +/obj/docking_port/stationary{ + dir = 4; + dwidth = 11; + height = 18; + id = "emergency_home"; + name = "emergency evac bay"; + width = 29; + turf_type = /turf/simulated/floor/plating/asteroid/snow/atmosphere; + area_type = /area/ruin/unpowered/coldcolony_outside + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"tPF" = ( +/obj/structure/bed/dogbed{ + name = "kitty basket" + }, +/mob/living/simple_animal/pet/cat/floppa, +/turf/simulated/floor/wood/fancy/oak, +/area/blueshield) +"tPO" = ( +/obj/machinery/atmospherics/unary/tank/nitrous_oxide{ + volume = 3000 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"tQz" = ( +/obj/machinery/atmospherics/air_sensor{ + id_tag = "air_sensor"; + output = 23 + }, +/obj/machinery/camera{ + c_tag = "Atmospherics Air Tank"; + network = list("SS13","Engineering") + }, +/turf/simulated/floor/engine/air, +/area/atmos) +"tQE" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Brig Reception"; + req_access = list(63) + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/reception) +"tQF" = ( +/obj/structure/sign/chemistry, +/turf/simulated/wall, +/area/medical/sleeper) +"tQU" = ( +/obj/structure/chair, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"tRe" = ( +/obj/machinery/power/apc{ + pixel_y = -26 + }, +/obj/structure/cable, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/main) +"tRg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"tRh" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"tRn" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"tRp" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/maintenance/perma) +"tRq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"tRI" = ( +/turf/simulated/floor/carpet, +/area/magistrateoffice) +"tRK" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"tRQ" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securehallway) +"tSm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/civilian/barber) +"tSq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"tSG" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/bridge/meeting_room) +"tSJ" = ( +/obj/structure/bed, +/obj/item/bedsheet/red, +/obj/machinery/light, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"tSM" = ( +/obj/structure/rack, +/obj/item/wrench, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/lounge) +"tSN" = ( +/obj/structure/dresser, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"tSW" = ( +/turf/simulated/wall/r_wall, +/area/magistrateoffice) +"tSZ" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "eslock" + }, +/turf/simulated/floor/plating, +/area/hallway/secondary/exit) +"tTa" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/security/checkpoint) +"tTi" = ( +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"tTj" = ( +/obj/structure/fence, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"tTp" = ( +/turf/simulated/floor/plating, +/area/toxins/explab) +"tTq" = ( +/obj/structure/chair/stool, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"tTu" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 4 + }, +/obj/structure/closet/crate, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"tTB" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/machinery/light{ + active_power_usage = 0; + icon_state = "tube-broken"; + status = 2 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"tTI" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26; + pixel_x = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/reception) +"tTO" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 28 + }, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"tTQ" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/robot_parts/robot_suit, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/assembly/robotics) +"tTY" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/obj/effect/landmark/start/student_sientist, +/turf/simulated/floor/mech_bay_recharge_floor, +/area/assembly/chargebay) +"tUc" = ( +/obj/effect/decal/warning_stripes/red, +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/permabrig) +"tUh" = ( +/obj/structure/morgue, +/turf/simulated/floor/wood{ + icon_state = "wood-broken5" + }, +/area/coldcolony/morgue) +"tUk" = ( +/obj/machinery/computer/monitor{ + name = "Command Power Monitoring Console" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkyellow" + }, +/area/bridge) +"tUo" = ( +/obj/machinery/light_construct{ + dir = 8 + }, +/obj/effect/spawner/random_spawners/rodent, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"tUs" = ( +/obj/machinery/constructable_frame/machine_frame, +/obj/item/stack/cable_coil{ + amount = 5 + }, +/obj/item/screwdriver, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/research) +"tUz" = ( +/obj/machinery/door/window/brigdoor{ + id = "Cell 1"; + name = "Cell 1"; + req_access = list(2); + base_state = "rightsecure"; + icon_state = "rightsecure" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"tUH" = ( +/obj/structure/bed, +/obj/effect/spawner/random_spawners/syndicate/loot{ + result = list(/obj/item/bedsheet/blue = 10, /obj/item/bedsheet/black = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/fluff = 10, /obj/item/bedsheet/green = 10, /obj/item/bedsheet/orange = 10, /obj/item/bedsheet/purple = 10, /obj/item/bedsheet/red = 10, /obj/item/bedsheet/yellow = 10); + name = "bedsheet" + }, +/obj/effect/landmark/join_late, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/crew_quarters/cabin1) +"tUQ" = ( +/obj/effect/decal/warning_stripes/yellow/partial, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "hopqueueshutters"; + name = "Queue Shutters" + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"tUU" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"tVk" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/light, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"tVz" = ( +/obj/machinery/door/airlock/external{ + hackProof = 1; + id_tag = "emergency_home"; + locked = 1; + name = "Escape Airlock" + }, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/exit) +"tVC" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/door_control{ + id = "researchdesk1"; + name = "Primary Research Shutters"; + pixel_y = -8; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -21; + pixel_y = 8 + }, +/obj/machinery/newscaster{ + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whitepurple" + }, +/area/toxins/lab) +"tVF" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/medical/medbay2) +"tWl" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"tWz" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"tWF" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"tWT" = ( +/obj/effect/decal/warning_stripes/northeastcorner, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"tWW" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/ammo_box/shotgun/beanbag, +/obj/item/ammo_box/shotgun/beanbag{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/shotgun/tranquilizer{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"tWX" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/research) +"tXg" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"tXv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "greencorner" + }, +/area/hallway/secondary/exit) +"tXw" = ( +/obj/machinery/computer/card, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkblue" + }, +/area/bridge) +"tXD" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"tXH" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/shuttle/pirate_corvette) +"tXL" = ( +/obj/structure/chair/comfy/beige, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"tXR" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/door_control{ + id = "restaurant"; + name = "Restaurant Shutters control"; + pixel_x = -24 + }, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"tYh" = ( +/obj/item/shard, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"tYs" = ( +/obj/machinery/door/airlock/bananium{ + name = "Clown's Office"; + req_access = list(46) + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/clownoffice) +"tYw" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"tYA" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/captain/bedroom) +"tYF" = ( +/obj/structure/table, +/obj/item/folder/red, +/turf/simulated/floor/plasteel, +/area/ruin/unpowered) +"tYL" = ( +/obj/machinery/pipedispenser, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"tYQ" = ( +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"tYV" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wideplating{ + color = "#332a2a"; + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"tYZ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"tZf" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"tZl" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"tZn" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/medical/sleeper) +"tZp" = ( +/obj/structure/sign/engineering, +/turf/simulated/wall, +/area/engineering/break_room) +"tZr" = ( +/obj/machinery/porta_turret/syndicate/pod{ + name = "machine gun turret (4.6x30mm)"; + dir = 8 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/sign/poster/contraband/Enlist_Gorlex{ + pixel_y = 32 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"tZR" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Chief Engineer"; + req_access = list(56) + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/chief) +"uab" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/obj/item/multitool, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"uac" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"uae" = ( +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"uak" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/reception) +"uan" = ( +/obj/machinery/vending/snack, +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engineering/break_room) +"uap" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plating, +/area/hallway/primary/starboard/east) +"uay" = ( +/obj/machinery/atmospherics/unary/portables_connector, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"uaD" = ( +/obj/effect/decal/ants, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/coldcolony/ruin/miningbar) +"uaE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/bodyscanner{ + dir = 4; + pixel_x = -3 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"uaO" = ( +/obj/structure/table/wood, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/bar) +"uaS" = ( +/obj/structure/closet/crate/engineering, +/obj/item/stack/sheet/metal{ + amount = 8 + }, +/obj/item/stack/sheet/glass{ + amount = 6 + }, +/obj/item/rpd, +/obj/item/access_control, +/obj/item/airlock_electronics, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"uaT" = ( +/obj/structure/table/reinforced, +/obj/item/storage/box/lights/mixed, +/obj/item/lightreplacer{ + pixel_y = 5 + }, +/obj/item/lightreplacer{ + pixel_y = 5 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/engineering/engine/monitor) +"uaX" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/bridge/meeting_room) +"ubf" = ( +/obj/machinery/flasher{ + desc = "A floor-mounted flashbulb device."; + id = "permacell1"; + layer = 5; + range = 3; + pixel_x = -24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/security/permahallway) +"ubl" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "whitepurplefull" + }, +/area/toxins/lab) +"ubo" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/coldcolony/morgue) +"ubp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"ubF" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/hallway/primary/fore) +"ubP" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"ubR" = ( +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/brig) +"ubU" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 4; + name = "Труба дыхательной смеси" + }, +/obj/effect/decal/warning_stripes/southwestcorner, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/atmos) +"ucB" = ( +/obj/machinery/computer/mech_bay_power_console, +/obj/effect/decal/warning_stripes/south, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/assembly/chargebay) +"ucF" = ( +/obj/machinery/portable_atmospherics/scrubber, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"ucM" = ( +/obj/machinery/pdapainter, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"ucT" = ( +/obj/machinery/space_heater, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"udc" = ( +/obj/structure/noticeboard, +/turf/simulated/wall, +/area/quartermaster/sorting) +"udf" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/reagent_dispensers/virusfood{ + pixel_x = -32 + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"udH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"udZ" = ( +/obj/machinery/computer/secure_data, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"uek" = ( +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"uep" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) +"uer" = ( +/turf/simulated/wall/rust, +/area/quartermaster/storage) +"ueu" = ( +/obj/machinery/newscaster/security_unit{ + pixel_y = -28 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/security/hos) +"uez" = ( +/obj/structure/table, +/obj/item/flashlight, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"ueB" = ( +/turf/simulated/floor/plating, +/area/engineering/gravitygenerator) +"ueG" = ( +/obj/structure/table/abductor, +/obj/item/hemostat/alien, +/turf/simulated/floor/mineral/abductor{ + oxygen = 22; + temperature = 180; + nitrogen = 82 + }, +/area/ruin/unpowered) +"ueY" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/hallway/primary/fore) +"ufl" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"ufq" = ( +/obj/machinery/photocopier, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood/oak, +/area/civilian/vacantoffice) +"ufv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"ufA" = ( +/obj/machinery/computer/prisoner{ + dir = 8 + }, +/obj/machinery/newscaster/security_unit{ + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/checkpoint) +"ufB" = ( +/obj/machinery/atm{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"ufD" = ( +/obj/machinery/slot_machine, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"ufQ" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/structure/fence/door, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"ufU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"ugc" = ( +/obj/item/storage/firstaid/adv, +/obj/structure/rack, +/obj/item/storage/firstaid/adv{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/light_switch{ + pixel_x = -8; + pixel_y = -24 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"ugn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera{ + c_tag = "Dorm Hallway"; + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"ugy" = ( +/obj/machinery/door/airlock/security/glass{ + id_tag = "BrigRight"; + name = "Brig"; + req_access = list(63) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/brig) +"ugH" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"ugW" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/eastarrival) +"uha" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/effect/landmark/start/cargo_technician, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"uhn" = ( +/obj/structure/chair/office/light, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel/grimy, +/area/civilian/vacantoffice) +"uhx" = ( +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + desc = "Труба ведёт газ на фильтрацию"; + dir = 4; + name = "Труба на фильтрацию" + }, +/obj/machinery/computer/general_air_control/large_tank_control{ + input_tag = "n2_in"; + name = "Nitrogen Supply Control"; + output_tag = "n2_out"; + sensors = list("n2_sensor"="Tank") + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"uhC" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/space_heater, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"uhH" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"uhI" = ( +/obj/effect/decal/ants, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"uij" = ( +/obj/structure/disposalpipe/junction/reversed{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"uiF" = ( +/turf/simulated/floor/greengrid, +/area/security/nuke_storage) +"uiI" = ( +/obj/machinery/light/small{ + active_power_usage = 0; + dir = 1; + icon_state = "bulb-broken"; + status = 2 + }, +/turf/simulated/floor/mech_bay_recharge_floor, +/area/coldcolony/ruin/abandoned_garage) +"uiO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/toxins/explab) +"uiR" = ( +/obj/structure/table, +/obj/item/stack/packageWrap, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/hydroponics) +"ujc" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/item/reagent_containers/glass/bucket, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"ujj" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "Warden"; + name = "Warden Privacy Shutters" + }, +/turf/simulated/floor/plating, +/area/security/warden) +"ujo" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"ujt" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/kitchen) +"ujw" = ( +/obj/machinery/vending/snack, +/obj/effect/decal/warning_stripes/yellow/partial, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"ujB" = ( +/mob/living/simple_animal/slime, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"ujQ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"ujR" = ( +/obj/structure/fans/tiny, +/obj/effect/decal/snow/sand/edge{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/research{ + name = "Research Division" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research) +"ujV" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/brig) +"ujW" = ( +/turf/simulated/floor/wood/fancy/light{ + icon_state = "light-fancy-wood-broken2"; + color = "orange" + }, +/area/magistrateoffice) +"ujY" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 5 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"ukA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/landmark/start/cmo, +/obj/machinery/door_control{ + id = "CMO Shutters"; + name = "CMO Privacy Shutters Control"; + pixel_x = 26; + pixel_y = 7 + }, +/obj/machinery/light_switch{ + pixel_x = 24; + pixel_y = -8 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/cmo) +"ukB" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"ukG" = ( +/obj/effect/turf_decal/arrows{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"ukT" = ( +/obj/structure/closet/radiation, +/turf/simulated/floor/wood, +/area/toxins/storage) +"ulb" = ( +/obj/structure/table/wood, +/turf/simulated/floor/wood/fancy/cherry, +/area/library/game_zone) +"ulc" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkblue" + }, +/area/tcommsat/chamber) +"ult" = ( +/obj/machinery/constructable_frame/machine_frame, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/item/stock_parts/cell, +/obj/item/stock_parts/capacitor, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/abandoned_garage) +"ulQ" = ( +/obj/machinery/power/apc/worn_out{ + cell_type = 0; + pixel_y = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"umq" = ( +/obj/machinery/disposal/deliveryChute{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"umr" = ( +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library/game_zone) +"umy" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"umD" = ( +/obj/structure/extinguisher_cabinet/empty{ + pixel_y = 30 + }, +/obj/effect/landmark/tiles/damageturf, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"umQ" = ( +/obj/machinery/door/poddoor/shutters{ + dir = 2; + id_tag = "rndgarage" + }, +/obj/structure/fans/tiny, +/obj/effect/decal/snow/sand/edge{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door_control{ + pixel_x = -24; + id = "rndgarage" + }, +/turf/simulated/floor/plasteel, +/area/medical/research) +"umR" = ( +/turf/simulated/wall/r_wall, +/area/security/execution) +"umT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hydroponics) +"uni" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"unl" = ( +/obj/effect/decal/cleanable/generic, +/obj/effect/landmark/tiles/burnturf, +/obj/item/stack/sheet/wood, +/obj/effect/decal/snow/sand/edge{ + dir = 9 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"unn" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/flora/ausbushes/grassybush, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"unr" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/camera{ + c_tag = "Secure Armory East"; + dir = 8; + network = list("SS13","Security") + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securearmory) +"unv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/storage) +"unE" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"unG" = ( +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/structure/rack, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"unP" = ( +/obj/machinery/computer/security, +/obj/machinery/camera{ + c_tag = "HoS Office"; + network = list("SS13","Security"); + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"unZ" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken5" + }, +/area/ruin/unpowered) +"uog" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/table_frame, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_chamber) +"uoj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"uol" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"uom" = ( +/obj/machinery/cooker/deepfryer, +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"uoq" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/crayons, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/clownoffice) +"uoP" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/library/game_zone) +"uoQ" = ( +/obj/item/stack/tile/plasteel{ + amount = 10 + }, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"uoW" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"upi" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"upj" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 5; + pixel_y = 12 + }, +/obj/item/pen{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"upt" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/hop) +"upA" = ( +/obj/item/clothing/suit/hooded/wintercoat/medical/science/rd, +/obj/structure/closet/secure_closet{ + icon_state = "rd"; + req_access = list(30); + name = "research director's locker" + }, +/obj/item/megaphone, +/obj/item/clothing/accessory/medal/science, +/obj/item/door_remote/research_director, +/obj/item/clothing/glasses/hud/diagnostic, +/obj/item/clothing/suit/armor/reactive/teleport, +/obj/item/t_scanner/experimental, +/obj/item/tank/internals/air, +/obj/item/clothing/mask/gas, +/obj/item/cartridge/rd, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/crew_quarters/hor) +"upR" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securehallway) +"upT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"uqb" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/processing) +"uqt" = ( +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"urs" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/brflowers, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"usf" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"usV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"utl" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "caution" + }, +/area/atmos) +"uto" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/eastarrival) +"utC" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/assembly/robotics) +"uuq" = ( +/obj/structure/fans/tiny, +/obj/structure/mineral_door/wood{ + name = "Morgue" + }, +/turf/simulated/floor/wood, +/area/coldcolony/morgue) +"uuI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"uuJ" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/blueshield) +"uuZ" = ( +/obj/structure/table_frame/wood, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"uvb" = ( +/obj/effect/spawner/random_spawners/rodent, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"uvm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/eastarrival) +"uvn" = ( +/obj/machinery/light/small, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/exit) +"uvv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/warden) +"uvI" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/space_heater, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/north) +"uvJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"uvK" = ( +/obj/structure/flora/rock/pile, +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"uvL" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"uvN" = ( +/obj/machinery/optable, +/obj/structure/curtain/medical, +/obj/effect/decal/cleanable/blood/gibs/body, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"uvT" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"uvY" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Security Checkpoint"; + req_access = list(1) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/security/checkpoint) +"uwr" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"uwu" = ( +/obj/item/access_control, +/obj/structure/rack, +/obj/item/airlock_electronics, +/obj/item/stack/cable_coil{ + amount = 5 + }, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/wood, +/area/toxins/storage) +"uwR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot/right, +/obj/effect/turf_decal/bot/left, +/obj/item/storage/fancy/donut_box, +/obj/structure/closet/crate/plastic, +/obj/item/storage/fancy/donut_box{ + pixel_x = -2; + pixel_y = -5 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/sorting) +"uxf" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) +"uxk" = ( +/obj/machinery/door/airlock/public/glass{ + id_tag = "Perma12" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"uxC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + icon_state = "whitepurplefull" + }, +/area/toxins/lab) +"uxJ" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/crate/secure/engineering{ + req_access = list(10) + }, +/obj/item/stack/sheet/mineral/uranium{ + amount = 20 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) +"uxT" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/bar) +"uxX" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"uyc" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/structure/barricade/wooden/crude/snow{ + layer = 3.3 + }, +/turf/simulated/floor/plating, +/area/ruin/unpowered) +"uyk" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker/locker_toilet) +"uyK" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/starboard/east) +"uzx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"uzJ" = ( +/obj/structure/table_frame, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"uAf" = ( +/obj/structure/chair{ + desc = "Этот красивый стул был отлит из двух трофейных боргов синдиката."; + name = "Дизайнерский стул" + }, +/obj/machinery/shower{ + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/security/processing) +"uAq" = ( +/obj/effect/decal/warning_stripes/west, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"uAA" = ( +/obj/structure/closet/secure_closet/cabinet, +/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"uAV" = ( +/obj/machinery/status_display/supply_display, +/turf/simulated/wall, +/area/quartermaster/office) +"uBa" = ( +/obj/structure/closet/lasertag/red, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"uBb" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/structure/cable, +/obj/machinery/power/apc{ + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/customs) +"uBf" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 1 + }, +/turf/simulated/wall/mineral/titanium, +/area/ruin/unpowered) +"uBh" = ( +/obj/machinery/abductor/gland_dispenser, +/turf/simulated/floor/mineral/abductor{ + oxygen = 22; + temperature = 180; + nitrogen = 82 + }, +/area/ruin/unpowered) +"uBr" = ( +/obj/effect/decal/warning_stripes/east, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"uBC" = ( +/obj/machinery/hydroponics/soil, +/obj/item/seeds/wheat/rice, +/turf/simulated/floor/grass, +/area/security/permabrig) +"uBU" = ( +/obj/structure/closet/athletic_mixed, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"uCd" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"uCe" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/camera{ + c_tag = "Medbay Staff Room"; + network = list("SS13","Medical"); + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"uCg" = ( +/obj/structure/bed, +/obj/effect/spawner/random_spawners/syndicate/loot{ + result = list(/obj/item/bedsheet/blue = 10, /obj/item/bedsheet/black = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/fluff = 10, /obj/item/bedsheet/green = 10, /obj/item/bedsheet/orange = 10, /obj/item/bedsheet/purple = 10, /obj/item/bedsheet/red = 10, /obj/item/bedsheet/yellow = 10); + name = "bedsheet" + }, +/obj/effect/landmark/join_late, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/crew_quarters/cabin1) +"uCp" = ( +/obj/structure/flora/grass/brown, +/obj/structure/fence{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"uCv" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"uCJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"uDA" = ( +/obj/effect/decal/warning_stripes/arrow{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/fore) +"uDK" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securehallway) +"uDL" = ( +/obj/machinery/portable_atmospherics/scrubber/huge, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"uDQ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker) +"uDV" = ( +/obj/structure/table, +/obj/item/storage/firstaid/regular, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"uEc" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/mineral/abductor{ + oxygen = 22; + temperature = 180; + nitrogen = 82 + }, +/area/ruin/unpowered) +"uEu" = ( +/obj/machinery/door/airlock/glass{ + id = "privateroom"; + id_tag = "privateroom"; + name = "Private Room" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"uFs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/cigbutt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"uFx" = ( +/turf/simulated/floor/wood{ + icon_state = "wood-broken" + }, +/area/toxins/storage) +"uFE" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"uFF" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Warden's Office"; + req_access = list(3) + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/warden) +"uFY" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"uGa" = ( +/obj/machinery/power/apc{ + pixel_y = 26; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"uGf" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"uGu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/wood/fancy/oak, +/area/blueshield) +"uGM" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"uGW" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/bar) +"uHo" = ( +/obj/machinery/computer/med_data, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"uHx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hydroponics) +"uHy" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/security/prison/cell_block/A) +"uHG" = ( +/obj/structure/sign/directions/science{ + pixel_y = 4 + }, +/obj/structure/sign/directions/engineering{ + pixel_y = -10 + }, +/obj/structure/sign/directions/security{ + pixel_y = 11; + dir = 1 + }, +/obj/structure/sign/directions/evac{ + pixel_y = -3 + }, +/turf/simulated/wall, +/area/medical/paramedic) +"uHR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/securearmory) +"uIf" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteredfull" + }, +/area/security/medbay) +"uIn" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/decal/warning_stripes/northeast, +/obj/structure/closet{ + icon_state = "bio_virology" + }, +/turf/simulated/floor/plasteel, +/area/medical/virology/lab) +"uIq" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/security/prison/cell_block/A) +"uIZ" = ( +/obj/machinery/photocopier, +/obj/machinery/light_switch{ + pixel_x = 8; + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/hos) +"uJj" = ( +/obj/machinery/computer/monitor, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"uJI" = ( +/obj/structure/sign/poster/official/random, +/turf/simulated/wall, +/area/crew_quarters/theatre) +"uJL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"uJR" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"uKa" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"uKg" = ( +/obj/machinery/computer/security{ + network = list("SS13","Research Outpost","Mining Outpost") + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"uKl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"uKm" = ( +/obj/machinery/door/airlock/silver{ + name = "Bathroom"; + id_tag = "comtoilet" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/bridge/vip) +"uKp" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/sign/electricshock{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securehallway) +"uKJ" = ( +/turf/simulated/wall, +/area/civilian/vacantoffice) +"uKU" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/constructable_frame/machine_frame, +/obj/item/reagent_containers/glass/beaker, +/obj/item/reagent_containers/glass/beaker, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"uLt" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"uLy" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/optable, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "arrival" + }, +/area/shuttle/pirate_corvette) +"uLL" = ( +/obj/effect/decal/warning_stripes/west, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"uMh" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/door_control{ + id = "BridgeShutters"; + name = "Bridge Shutters"; + pixel_x = -24; + pixel_y = -8; + req_access = list(62) + }, +/obj/machinery/door_control{ + id = "BridgeLockdown"; + name = "Bridge Lockdown"; + pixel_x = -24; + pixel_y = 8; + req_access = list(62) + }, +/turf/simulated/floor/wood/fancy/light, +/area/bridge) +"uMk" = ( +/obj/structure/table/wood/fancy, +/obj/item/clothing/mask/cigarette/cigar/cohiba, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"uMp" = ( +/turf/simulated/wall, +/area/maintenance/casino) +"uMr" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Righting ring"; + welded = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/barricade/wooden/crude{ + layer = 3.3 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"uMv" = ( +/obj/structure/closet/secure_closet/medical2, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"uMy" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/white/corner, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"uMI" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"uNj" = ( +/obj/machinery/camera{ + c_tag = "Canteen"; + dir = 1 + }, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"uNx" = ( +/obj/item/clothing/suit/hooded/wintercoat/miner, +/obj/item/clothing/suit/hooded/wintercoat/miner, +/obj/structure/table, +/obj/machinery/power/apc/worn_out{ + cell_type = 0; + pixel_y = -26 + }, +/obj/structure/cable, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"uNN" = ( +/obj/machinery/camera{ + c_tag = "Arrivals East" + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/eastarrival) +"uNQ" = ( +/obj/structure/chair/wood, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"uOK" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/hallway/primary/central/sw) +"uOM" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"uOT" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/machinery/station_map/directional/east, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"uOX" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"uPc" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) +"uPd" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"uPm" = ( +/obj/structure/filingcabinet/filingcabinet, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"uPn" = ( +/obj/structure/table/wood, +/obj/item/paper/safe_code{ + owner = "hos" + }, +/obj/item/lighter/zippo/hos, +/turf/simulated/floor/wood/fancy/cherry, +/area/security/hos) +"uPq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/evidence) +"uPA" = ( +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"uPI" = ( +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"uPP" = ( +/obj/machinery/light, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"uPW" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "yellow" + }, +/area/engineering/break_room) +"uPY" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/structure/flora/grass/both, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"uQu" = ( +/obj/effect/decal/cleanable/glass, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"uQv" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/vending/sustenance/additional, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"uQx" = ( +/obj/item/card/id/thunderdome/red{ + name = "Pirate ID"; + registered_name = "Pirate"; + access = list(160,26); + desc = "A card used to determine access across."; + assignment = "Pirate" + }, +/turf/simulated/floor/plating, +/area/engineering/gravitygenerator) +"uQz" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"uQB" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atm{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "escape" + }, +/area/hallway/secondary/entry/lounge) +"uQF" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/snow/sand/edge{ + dir = 10 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"uQX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/checkpoint) +"uRa" = ( +/obj/item/stack/tile/plasteel{ + amount = 30 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/toxins/explab) +"uRz" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"uRB" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "browncorner" + }, +/area/coldcolony/ruin/ore_production) +"uRC" = ( +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"uRM" = ( +/obj/effect/decal/warning_stripes/east, +/obj/machinery/camera{ + c_tag = "Atmospherics South"; + network = list("SS13","Engineering"); + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "caution" + }, +/area/atmos) +"uSf" = ( +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"uSg" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"uSp" = ( +/turf/simulated/floor/carpet/green, +/area/crew_quarters/cabin2) +"uSH" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"uSN" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken5" + }, +/area/coldcolony/ruin/abandoned_banya) +"uSU" = ( +/obj/structure/statue/bananium/clown/unique{ + name = "Статуя Великого Кекеги" + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/clownoffice) +"uTr" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"uTu" = ( +/obj/structure/table, +/obj/item/storage/fancy/crayons, +/obj/item/radio/intercom/locked/prison{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"uTD" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/captain) +"uTG" = ( +/obj/machinery/suit_storage_unit/lavaland, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"uTX" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "browncorner" + }, +/area/quartermaster/qm) +"uUn" = ( +/obj/structure/closet/secure_closet/blueshield, +/obj/item/stack/tape_roll, +/obj/item/taperecorder, +/obj/item/clothing/suit/hooded/wintercoat/fluff, +/turf/simulated/floor/plasteel{ + icon_state = "bcarpet05" + }, +/area/blueshield) +"uUq" = ( +/obj/structure/table/wood, +/turf/simulated/floor/plasteel{ + icon_state = "darkbrown"; + dir = 9 + }, +/area/bridge/vip) +"uUI" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"uUK" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"uVe" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/flasher{ + id = "hopflash"; + pixel_x = 58 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"uVn" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hydroponics) +"uVz" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/carpet/black, +/area/bridge/meeting_room) +"uVC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker/locker_toilet) +"uVF" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/security/lobby) +"uVG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker/locker_toilet) +"uVM" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel/grimy, +/area/civilian/vacantoffice) +"uVV" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"uVZ" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/medical/genetics) +"uWm" = ( +/obj/structure/closet, +/obj/item/roller, +/obj/item/roller{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/storage/box/masks{ + pixel_x = 2 + }, +/obj/item/storage/box/gloves{ + pixel_y = 2 + }, +/obj/item/storage/box/bodybags{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/item/storage/box/bodybags/biohazard, +/obj/machinery/camera{ + c_tag = "Brig Medical Bay"; + dir = 8; + network = list("SS13","Security") + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitered" + }, +/area/security/medbay) +"uWn" = ( +/obj/structure/table/glass, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"uWr" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/research{ + name = "Mech Bay"; + req_access = list(29) + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"uWE" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/processing) +"uWW" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"uXd" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"uXz" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"uXA" = ( +/obj/structure/sign/poster/contraband/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"uXY" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 5; + name = "Труба дыхательной смеси" + }, +/obj/effect/decal/warning_stripes/south, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/atmos) +"uYd" = ( +/obj/machinery/fishtank/tank, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/hydroponics) +"uYk" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken3" + }, +/area/ruin/unpowered) +"uYv" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Vacant Office" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood/oak, +/area/civilian/vacantoffice) +"uYw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"uYx" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Brig Reception"; + req_access = list(63) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/reception) +"uYC" = ( +/obj/machinery/bodyscanner, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "arrival" + }, +/area/shuttle/pirate_corvette) +"uYI" = ( +/obj/structure/chair/comfy/beige{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/carpet/black, +/area/bridge/meeting_room) +"uYL" = ( +/turf/simulated/wall/r_wall, +/area/bridge/vip) +"uYP" = ( +/obj/effect/spawner/random_spawners/rodent, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"uYT" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"uYZ" = ( +/obj/machinery/vending/cola/free, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/permabrig) +"uZd" = ( +/obj/item/flag/cargo, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/quartermaster/qm) +"uZz" = ( +/obj/structure/fence/corner, +/obj/effect/turf_decal/stripes{ + dir = 6 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"uZM" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"vab" = ( +/obj/effect/decal/warning_stripes/east, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"vaf" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"vah" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/reception) +"vai" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"vaD" = ( +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/security/lobby) +"vbe" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken7" + }, +/area/coldcolony/ruin/abandoned_banya) +"vbo" = ( +/turf/simulated/wall/rust, +/area/bridge/vip) +"vbM" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/bridge/meeting_room) +"vbN" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"vca" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/securearmory) +"vcl" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/structure/fence/door/opened{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"vcn" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/obj/machinery/door/poddoor{ + id_tag = "QMLoaddoor2"; + name = "supply dock loading door" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"vcp" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/flashlight/lamp, +/turf/simulated/floor/wood/fancy/light, +/area/bridge) +"vcz" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/ore_production) +"vcF" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/light_switch{ + pixel_x = 8; + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"vcO" = ( +/obj/machinery/vending/cigarette/free, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/bar) +"vde" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/brig) +"vdA" = ( +/obj/effect/decal/warning_stripes/south, +/obj/machinery/constructable_frame/machine_frame, +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/maintenance/kitchen) +"vdI" = ( +/obj/machinery/suit_storage_unit/pirate, +/obj/effect/turf_decal/delivery{ + do_not_delete_me = 1 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"vdL" = ( +/obj/machinery/atmospherics/unary/portables_connector, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"vdR" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "RoboPrivat"; + name = "Robotics Privacy Shutter" + }, +/turf/simulated/floor/plating, +/area/assembly/robotics) +"vdV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"vea" = ( +/obj/machinery/door/window/eastleft{ + dir = 8; + name = "Hydroponics Desk"; + req_access = list(35) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "hydrofloor" + }, +/area/hydroponics) +"veg" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/item/trash/doshik, +/obj/item/trash/cheesie, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/engine, +/area/maintenance/incinerator) +"ves" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/casino) +"veC" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal{ + amount = 20 + }, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"veG" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Brig Customs"; + req_access = list(63) + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/customs) +"veO" = ( +/obj/structure/fence{ + dir = 4 + }, +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"veW" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/cigarettes/cigpack_syndicate, +/turf/simulated/floor/wood, +/area/coldcolony/ruin/miningbar) +"vfk" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/structure/flora/ausbushes/palebush, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/grass, +/area/hallway/secondary/exit) +"vfn" = ( +/turf/simulated/floor/plating, +/area/medical/sleeper) +"vfG" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/main) +"vfI" = ( +/obj/structure/table/wood, +/obj/item/storage/briefcase{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"vfV" = ( +/obj/structure/table/reinforced, +/obj/item/book/manual/chef_recipes, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"vfX" = ( +/obj/structure/noticeboard{ + pixel_y = 30 + }, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"vgq" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"vgu" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"vgv" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"vgP" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/power/apc{ + pixel_y = 26; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/closet/fireaxecabinet{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/bridge) +"vgU" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Research"; + req_access = list(47) + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"vhf" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/assembly/robotics) +"vhl" = ( +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/brig) +"vhG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"vhH" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/wall, +/area/medical/paramedic) +"vhI" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_chamber) +"vhN" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "hydrofloor" + }, +/area/hydroponics) +"vhS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plating, +/area/toxins/explab) +"vhU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"viq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/crew_quarters/locker) +"viw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/chemistry) +"viz" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/junction/reversed{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"viH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"vjp" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"vjt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/security/checkpoint) +"vjJ" = ( +/obj/structure/table, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/sign/poster/random{ + pixel_x = 32 + }, +/obj/machinery/recharger{ + pixel_x = 1; + pixel_y = 3 + }, +/obj/item/rcs, +/obj/item/rcs, +/obj/item/rcs, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"vjK" = ( +/obj/machinery/door_timer/cell_4{ + pixel_x = 32 + }, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"vjV" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"vjY" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"vjZ" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) +"vkd" = ( +/obj/structure/table/reinforced, +/obj/item/crowbar, +/obj/item/analyzer, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "caution" + }, +/area/atmos/control) +"vkp" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/genetics) +"vkJ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass{ + req_access = list(28) + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/hydroponics) +"vkP" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/security/reception) +"vkU" = ( +/obj/structure/sign/poster/official/random, +/turf/simulated/wall/r_wall, +/area/security/prison/cell_block/A) +"vlm" = ( +/obj/machinery/power/smes{ + charge = 4e+006; + output_level = 30000 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"vlt" = ( +/obj/structure/bed/pod, +/obj/effect/landmark/start/shaft_miner, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"vlu" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/closet/crate/medical, +/obj/item/reagent_containers/food/pill/patch/styptic, +/obj/item/reagent_containers/food/pill/patch/styptic{ + pixel_x = 2; + pixel_y = 8 + }, +/obj/item/reagent_containers/hypospray/autoinjector, +/obj/item/reagent_containers/food/pill/patch/silver_sulf{ + pixel_x = -5; + pixel_y = -3 + }, +/obj/machinery/light{ + active_power_usage = 0; + icon_state = "tube-broken"; + status = 2; + dir = 1 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"vlx" = ( +/obj/structure/table/glass, +/obj/item/stack/rods{ + amount = 3 + }, +/obj/effect/decal/cleanable/dust, +/obj/machinery/camera{ + c_tag = "Medbay Genetics Office"; + network = list("Medical","SS13"); + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"vlE" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel, +/area/crew_quarters/locker) +"vlI" = ( +/obj/structure/flora/grass/brown, +/obj/structure/flora/grass/green, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"vmb" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"vmq" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/library) +"vmB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/virology/lab) +"vmN" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 9; + name = "Труба дыхательной смеси" + }, +/obj/machinery/pipedispenser, +/obj/structure/sign/nosmoking_2{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"vmS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad" + }, +/obj/structure/plasticflaps/mining, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"vmW" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/warden) +"vne" = ( +/obj/machinery/space_heater, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"vni" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/landmark/start/geneticist, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/genetics) +"vnl" = ( +/obj/effect/decal/cleanable/generic, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"vnn" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/grown/geranium, +/obj/item/reagent_containers/food/snacks/grown/lily{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/reagent_containers/food/snacks/grown/poppy{ + pixel_x = -4; + pixel_y = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"vny" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel/white, +/area/medical/biostorage) +"vnD" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"vnF" = ( +/obj/structure/bed, +/obj/effect/spawner/random_spawners/syndicate/loot{ + result = list(/obj/item/bedsheet/blue = 10, /obj/item/bedsheet/black = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/fluff = 10, /obj/item/bedsheet/green = 10, /obj/item/bedsheet/orange = 10, /obj/item/bedsheet/purple = 10, /obj/item/bedsheet/red = 10, /obj/item/bedsheet/yellow = 10); + name = "bedsheet" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/permabrig) +"vnR" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/landmark/start/security_officer, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/processing) +"vol" = ( +/obj/docking_port/stationary{ + dheight = 1; + dir = 8; + dwidth = 7; + height = 18; + id = "trade_dock"; + name = "port bay 1 at Malta"; + width = 15; + turf_type = /turf/simulated/floor/plating/asteroid/snow/atmosphere; + area_type = /area/ruin/unpowered/coldcolony_outside + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"von" = ( +/obj/structure/bed, +/obj/effect/spawner/random_spawners/syndicate/loot{ + result = list(/obj/item/bedsheet/blue = 10, /obj/item/bedsheet/black = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/fluff = 10, /obj/item/bedsheet/green = 10, /obj/item/bedsheet/orange = 10, /obj/item/bedsheet/purple = 10, /obj/item/bedsheet/red = 10, /obj/item/bedsheet/yellow = 10); + name = "bedsheet" + }, +/obj/effect/landmark/join_late, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"vor" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera{ + c_tag = "Residential Block North Entrance"; + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"vow" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/ore_production) +"voF" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permahallway) +"voH" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"voL" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/fore) +"vpd" = ( +/obj/machinery/door/window/eastleft{ + name = "Break Room Bar" + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/coldcolony/ruin/miningbar) +"vpe" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"vpt" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/security/main) +"vpF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/space_heater, +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light_switch{ + pixel_x = -22; + pixel_y = 24 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/office) +"vpW" = ( +/obj/structure/table, +/obj/item/storage/box/donkpockets, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"vqc" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/obj/item/trash/pistachios, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"vqf" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/fitness) +"vqi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"vqp" = ( +/turf/simulated/wall/r_wall/rust, +/area/security/brig) +"vqr" = ( +/obj/item/stack/sheet/wood, +/obj/effect/landmark/tiles/damageturf, +/obj/effect/turf_decal/weather/snow/corner, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"vqs" = ( +/obj/machinery/light{ + active_power_usage = 0; + dir = 8; + icon_state = "tube-broken"; + status = 2 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"vqw" = ( +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + desc = "Труба ведёт газ на фильтрацию"; + name = "Труба на фильтрацию" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"vqy" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/permabrig) +"vqH" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/head/ushanka, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"vqR" = ( +/obj/structure/bookcase, +/obj/item/book/manual/sop_security, +/obj/item/book/manual/sop_legal, +/obj/item/book/manual/security_space_law, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/warden) +"vrl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/item/cartridge/signal/toxins, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"vrn" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/computer/mecha, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/hor) +"vrL" = ( +/obj/structure/filingcabinet/chestdrawer/autopsy, +/turf/simulated/floor/wood, +/area/coldcolony/morgue) +"vrN" = ( +/obj/effect/decal/cleanable/generic, +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/snow/sand/edge{ + dir = 5 + }, +/obj/item/stack/sheet/wood, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"vrS" = ( +/obj/item/stack/sheet/wood{ + amount = 3 + }, +/obj/structure/closet/crate/trashcart, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = -8 + }, +/obj/item/light/tube{ + icon_state = "ltube-broken"; + status = 2 + }, +/obj/machinery/light_construct{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"vsc" = ( +/obj/machinery/light, +/turf/simulated/floor/wood, +/area/security/detectives_office) +"vsj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"vsm" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"vst" = ( +/obj/effect/decal/warning_stripes/southeast, +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"vsA" = ( +/obj/structure/table, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/obj/item/laser_pointer, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/crew_quarters/hor) +"vsC" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/library) +"vsQ" = ( +/obj/item/stack/sheet/metal, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"vsV" = ( +/obj/structure/chair/office/dark, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/landmark/start/virologist, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"vta" = ( +/obj/structure/table, +/obj/item/tank/jetpack/oxygen, +/obj/item/tank/jetpack/oxygen{ + pixel_x = -7; + pixel_y = 4 + }, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"vtr" = ( +/obj/structure/table, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/clothing/head/cone{ + desc = "Старый дорожный конус. Говорят он увеличивает интеллект носителя."; + name = "Символ Разумизма"; + pixel_x = -4; + pixel_y = 7 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whitepurple" + }, +/area/crew_quarters/hor) +"vtQ" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/captain/bedroom) +"vub" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"vuv" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"vuw" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/westleft{ + dir = 2; + name = "Cargo Bay Desk"; + req_access = list(31) + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "Cargo Office Windows"; + name = "Cargo Office Shutters" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/office) +"vuO" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"vuR" = ( +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"vuS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/stamp/denied{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/stamp/granted{ + pixel_x = 3; + pixel_y = -4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/office) +"vuT" = ( +/obj/item/clothing/suit/hooded/wintercoat/medical/science/rd, +/obj/structure/closet/secure_closet{ + icon_state = "rd"; + req_access = list(30); + name = "research director's locker" + }, +/obj/item/flash, +/obj/item/radio/headset/heads/rd, +/obj/item/storage/garmentbag/RD, +/obj/item/storage/backpack/science, +/turf/simulated/floor/carpet/purple, +/area/bridge/vip) +"vuU" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"vvg" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 8; + name = "Труба смешивания" + }, +/turf/simulated/floor/plasteel, +/area/atmos) +"vvu" = ( +/obj/structure/table, +/obj/item/newspaper, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"vvA" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"vvB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"vvD" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/stack/cable_coil, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"vvG" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/obj/structure/marker_beacon, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"vvJ" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/disposaloutlet{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"vvU" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"vwb" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"vwd" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/effect/landmark/start/head_of_security, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"vwj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"vwl" = ( +/turf/simulated/floor/plasteel, +/area/medical/research/shallway) +"vwx" = ( +/turf/simulated/wall, +/area/crew_quarters/fitness) +"vwD" = ( +/obj/structure/table/reinforced, +/obj/item/flashlight/lamp, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"vwK" = ( +/obj/structure/chair/office/light{ + dir = 4; + pixel_y = 3 + }, +/turf/simulated/floor/carpet/cyan, +/area/bridge/vip) +"vxd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"vxh" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"vxv" = ( +/obj/structure/table, +/obj/item/stack/tape_roll, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"vxG" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/warning_stripes/blue, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/brig) +"vxK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/ants, +/turf/simulated/floor/plating, +/area/maintenance/kitchen) +"vxT" = ( +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"vxW" = ( +/obj/structure/closet/walllocker/emerglocker/south, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"vyg" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"vyj" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 4; + name = "Труба дыхательной смеси" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/atmos) +"vyr" = ( +/obj/machinery/newscaster{ + pixel_x = -30 + }, +/obj/machinery/computer/monitor{ + name = "Engineering Power Monitoring Computer" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/engineering/engine/monitor) +"vyu" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/civilian/barber) +"vyA" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "CargoUnload"; + name = "Unload" + }, +/obj/machinery/light, +/obj/machinery/light_switch{ + pixel_y = -24; + pixel_x = 8 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) +"vyC" = ( +/obj/effect/baseturf_helper/asteroid, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/securearmory) +"vyI" = ( +/obj/machinery/computer/crew, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge) +"vyO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch{ + pixel_x = -22 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/cmostore) +"vzb" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"vzo" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/kitchen) +"vzy" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/landmark/tiles/damageturf, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"vzz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"vzF" = ( +/obj/structure/table, +/obj/item/book/manual/security_space_law, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"vzO" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"vzU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine/monitor) +"vAd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/toxins/server) +"vAg" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "mining_internal"; + name = "mining conveyor" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"vBa" = ( +/obj/machinery/atm{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"vBc" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/processing) +"vBh" = ( +/obj/structure/bed, +/obj/effect/spawner/random_spawners/syndicate/loot{ + result = list(/obj/item/bedsheet/blue = 10, /obj/item/bedsheet/black = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/fluff = 10, /obj/item/bedsheet/green = 10, /obj/item/bedsheet/orange = 10, /obj/item/bedsheet/purple = 10, /obj/item/bedsheet/red = 10, /obj/item/bedsheet/yellow = 10); + name = "bedsheet" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/permabrig) +"vBo" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"vBy" = ( +/obj/structure/disposalpipe/junction/reversed{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light, +/obj/structure/sign/poster/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"vBF" = ( +/obj/structure/table/reinforced, +/obj/item/stack/packageWrap, +/obj/item/hand_labeler, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) +"vBH" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"vCd" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood{ + icon_state = "wood-broken7" + }, +/area/crew_quarters/bar/atrium) +"vCq" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/simulated/floor/carpet, +/area/bridge/checkpoint/south) +"vCs" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/bridge/vip) +"vCt" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/warning_stripes/blue, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"vCF" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken2" + }, +/area/ruin/unpowered) +"vCG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"vDh" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"vDr" = ( +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkblue" + }, +/area/bridge/vip) +"vDu" = ( +/obj/structure/table/wood/fancy/green, +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"vDR" = ( +/obj/machinery/door_control{ + id = "QMLoaddoor"; + layer = 4; + name = "Loading Doors"; + pixel_x = 24; + pixel_y = -8 + }, +/obj/machinery/door_control{ + id = "QMLoaddoor2"; + layer = 4; + name = "Loading Doors"; + pixel_x = 24; + pixel_y = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"vDS" = ( +/obj/structure/chair/office/dark, +/turf/simulated/floor/plasteel{ + icon_state = "bcarpet05" + }, +/area/blueshield) +"vDT" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "caution" + }, +/area/atmos) +"vEe" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"vEi" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/coldcolony/ruin/miningbar) +"vEt" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/camera{ + c_tag = "Research and Development"; + dir = 9; + network = list("Research","SS13") + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/toxins/lab) +"vEw" = ( +/obj/machinery/door/poddoor{ + id_tag = "engstorage"; + name = "Secure Storage Blast Doors" + }, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/effect/decal/warning_stripes/southeastcorner, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"vEz" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/brig) +"vEG" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/civilian/barber) +"vEK" = ( +/obj/effect/decal/cleanable/blood/tracks, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"vFf" = ( +/obj/structure/table/wood, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/item/clothing/head/beanie/waldo, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/clownoffice) +"vFt" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"vFJ" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "rdprivacy"; + name = "Research Director Office Shutters" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/hor) +"vFN" = ( +/turf/simulated/wall/rust, +/area/security/medbay) +"vGr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"vGy" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/mug/hos, +/obj/effect/spawner/lootdrop/officetoys, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"vGK" = ( +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/toilet4) +"vGS" = ( +/obj/structure/table/reinforced, +/obj/item/folder/red{ + pixel_y = 3 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"vGX" = ( +/obj/structure/bookcase, +/obj/item/book/manual/sop_command, +/obj/item/book/manual/sop_engineering, +/obj/item/book/manual/sop_general, +/obj/item/book/manual/sop_legal, +/obj/item/book/manual/sop_medical, +/obj/item/book/manual/sop_science, +/obj/item/book/manual/sop_security, +/obj/item/book/manual/sop_service, +/obj/item/book/manual/sop_supply, +/turf/simulated/floor/carpet/royalblue, +/area/ntrep) +"vHa" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, +/obj/machinery/vending/wallmed{ + pixel_x = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/engineering/break_room) +"vHk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"vHn" = ( +/obj/structure/fence{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"vHy" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/slot_machine, +/turf/simulated/floor/plating, +/area/maintenance/casino) +"vHz" = ( +/obj/machinery/door/airlock/security/glass{ + id_tag = "BrigRight"; + name = "Brig"; + req_access = list(63) + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/brig) +"vHI" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"vHS" = ( +/obj/effect/decal/warning_stripes/south, +/obj/structure/mecha_wreckage/ripley, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/coldcolony/ruin/abandoned_garage) +"vHX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"vHY" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"vIj" = ( +/obj/structure/chair/sofa/left{ + dir = 8 + }, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/theatre) +"vIL" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/station_map/directional/east, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"vIW" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/portable_atmospherics/scrubber, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"vJa" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/light, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"vJb" = ( +/obj/structure/table/glass, +/obj/machinery/light, +/obj/item/mounted/frame/intercom, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"vJl" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/medical/biostorage) +"vJn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"vJt" = ( +/obj/machinery/kitchen_machine/oven, +/obj/effect/landmark/tiles/burnturf, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"vJy" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"vJV" = ( +/obj/machinery/portable_atmospherics/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"vJY" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/firedoor, +/obj/structure/barricade/wooden/crude/snow{ + layer = 3.3 + }, +/obj/machinery/door/airlock/mining/glass{ + name = "Miners bar"; + welded = 1 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/miningbar) +"vKf" = ( +/obj/effect/landmark/start/cyborg, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/hallway/primary/fore) +"vKy" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"vKE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/effect/baseturf_helper/asteroid, +/obj/machinery/camera{ + c_tag = "Library"; + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"vKF" = ( +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"vKI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/brig) +"vLi" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 8 + }, +/obj/machinery/vending/cola{ + obj_integrity = 95; + stat = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"vLl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"vLH" = ( +/obj/item/chair, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"vMb" = ( +/obj/machinery/atmospherics/trinary/filter{ + desc = "Отфильтровывает токсины из трубы и отправляет их в камеру хранения"; + name = "Фильтр Токсинов (Плазма)"; + on = 1; + target_pressure = 4500 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "caution" + }, +/area/atmos) +"vMc" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, +/obj/item/radio/intercom{ + pixel_x = 28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/tcommsat/chamber) +"vMh" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 4; + name = "Труба смешивания" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"vMn" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/item/cigbutt, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"vMs" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"vNm" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"vNG" = ( +/obj/effect/decal/cleanable/blood/tracks, +/obj/item/trash/spentcasing, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"vNP" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26; + start_charge = 0 + }, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/wood, +/area/toxins/storage) +"vNV" = ( +/obj/effect/decal/warning_stripes/blue, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/storage/firstaid/brute, +/obj/item/storage/firstaid/toxin{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"vNZ" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"vOp" = ( +/obj/item/firelock_electronics, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"vOt" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"vOu" = ( +/obj/machinery/abductor/pad, +/turf/simulated/floor/mineral/abductor{ + oxygen = 22; + temperature = 180; + nitrogen = 82 + }, +/area/ruin/unpowered) +"vOX" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/assembly/robotics) +"vPb" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"vPw" = ( +/turf/simulated/mineral/random{ + turf_type = /turf/simulated/floor/plating/asteroid/snow/planet + }, +/area/ruin/unpowered/coldcolony_outside) +"vPC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"vPQ" = ( +/obj/machinery/space_heater, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"vQg" = ( +/turf/simulated/wall, +/area/medical/research) +"vQh" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/wood, +/area/toxins/storage) +"vQi" = ( +/turf/simulated/floor/wood{ + icon_state = "wood-broken3" + }, +/area/crew_quarters/theatre) +"vQj" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"vQB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/camera{ + c_tag = "Chaplain's Office"; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"vQQ" = ( +/obj/machinery/vending/cigarette, +/obj/effect/decal/warning_stripes/yellow/partial, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) +"vRg" = ( +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"vRh" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Theatre" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"vRl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/hallway/primary/central/se) +"vRs" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"vRu" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 6; + name = "Труба дыхательной смеси" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/atmos) +"vRC" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/item/shard, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"vRQ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Residential Block South Entrance"; + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"vRU" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/execution) +"vSe" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/obj/structure/closet/radiation, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"vSn" = ( +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"vSS" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/processing) +"vST" = ( +/turf/simulated/floor/wood{ + icon_state = "wood-broken3" + }, +/area/toxins/test_chamber) +"vSY" = ( +/obj/machinery/door/airlock{ + name = "Bar Office"; + req_access = list(25) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/bar) +"vTb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/lounge) +"vTe" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/storage/box/bodybags/biohazard, +/obj/item/storage/box/monkeycubes, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"vTf" = ( +/obj/effect/decal/warning_stripes/south, +/obj/structure/chair/e_chair{ + dir = 1 + }, +/turf/simulated/floor/engine, +/area/security/execution) +"vTq" = ( +/obj/machinery/shower{ + pixel_y = 22 + }, +/obj/structure/curtain/open/shower, +/obj/effect/decal/warning_stripes/blue/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/security/permabrig) +"vTB" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"vTC" = ( +/obj/effect/turf_decal/weather/snow/corner, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"vTE" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/decal/rail_way{ + dir = 8 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"vTK" = ( +/obj/effect/decal/cleanable/glass, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"vTM" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/perma) +"vTQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"vUh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/shard{ + icon_state = "small" + }, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"vUj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hydroponics) +"vUY" = ( +/obj/effect/decal/warning_stripes/south, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/coldcolony/ruin/abandoned_garage) +"vVi" = ( +/turf/simulated/floor/carpet/green, +/area/crew_quarters/bar/atrium) +"vVm" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Bay"; + req_access = list(31,50) + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/office) +"vVu" = ( +/obj/item/clothing/head/welding, +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"vVG" = ( +/obj/machinery/suit_storage_unit/security, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"vVI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/warden) +"vVP" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"vWa" = ( +/obj/structure/table/reinforced, +/obj/item/storage/box/teargas, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/warden) +"vWi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"vWo" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/simulated/floor/wood, +/area/coldcolony/ruin/miningbar) +"vWu" = ( +/obj/structure/closet/secure_closet/magistrate, +/obj/item/radio/headset/heads/magistrate/alt, +/obj/item/megaphone, +/turf/simulated/floor/carpet/red, +/area/magistrateoffice) +"vWC" = ( +/turf/simulated/wall/mineral/wood/nonmetal, +/area/coldcolony/morgue) +"vWI" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/nw) +"vWW" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredfull" + }, +/area/security/main) +"vXa" = ( +/obj/effect/turf_decal/weather/snow/corner, +/turf/simulated/mineral/random{ + turf_type = /turf/simulated/floor/plating/asteroid/snow/planet + }, +/area/ruin/unpowered/coldcolony_outside) +"vXd" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"vXs" = ( +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"vXt" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "BridgeShutters"; + name = "Bridge Privacy Shutters" + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "BridgeLockdown"; + name = "Bridge Lockdown" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/bridge) +"vXx" = ( +/obj/effect/spawner/random_spawners/fungus_70, +/turf/simulated/wall, +/area/coldcolony/ruin/ore_production) +"vXD" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"vXE" = ( +/obj/machinery/atmospherics/unary/outlet_injector/on{ + id = "o2_in" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/engine/o2{ + oxygen = 10000 + }, +/area/atmos) +"vXF" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Security Lounge"; + req_access = list(63) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/starboard/east) +"vXL" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/structure/safe/floor, +/obj/item/gun/magic/wand/door{ + charges = 2; + max_charges = 2 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"vYs" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"vYt" = ( +/obj/machinery/autolathe, +/obj/machinery/camera{ + c_tag = "Cargo Office" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/office) +"vYv" = ( +/obj/structure/table/wood, +/obj/item/toy/figure/assistant, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"vYK" = ( +/obj/machinery/door/airlock/command{ + name = "Command" + }, +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/hallway/primary/fore) +"vZj" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkblue" + }, +/area/tcommsat/chamber) +"vZz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/scrubber, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"vZV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"wal" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/emergency, +/obj/item/wrench, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge) +"waq" = ( +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/wood/fancy/cherry, +/area/bridge/meeting_room) +"waB" = ( +/obj/structure/closet/crate/engineering, +/obj/item/extinguisher, +/obj/item/extinguisher, +/obj/item/storage/belt/utility, +/turf/simulated/floor/plasteel, +/area/toxins/xenobiology) +"waQ" = ( +/obj/machinery/vending/boozeomat, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"waW" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"waZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"wbe" = ( +/obj/structure/table/wood, +/obj/machinery/power/apc{ + pixel_y = -26 + }, +/obj/structure/cable, +/obj/item/clothing/head/beanie/striped, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) +"wbz" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/warden) +"wbQ" = ( +/obj/structure/bed, +/obj/item/bedsheet/red, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"wcm" = ( +/obj/item/paper/crumpled, +/obj/item/shard, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/glass, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"wct" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"wcB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"wcD" = ( +/obj/effect/decal/warning_stripes/southwestcorner, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"wcL" = ( +/obj/machinery/pipedispenser/disposal, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"wcW" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/main) +"wdf" = ( +/turf/simulated/wall/r_wall, +/area/security/permahallway) +"wdh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/camera{ + c_tag = "Medbay Central Hall"; + network = list("Medical","SS13") + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"wdw" = ( +/turf/simulated/wall/r_wall, +/area/bridge) +"wdY" = ( +/obj/structure/sign/poster/contraband/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"wec" = ( +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"wef" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 4; + name = "Труба дыхательной смеси" + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/atmos) +"wet" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/item/stamp/denied, +/obj/item/stamp/granted{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/qm) +"wev" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_chamber) +"wey" = ( +/obj/machinery/atmospherics/binary/pump/on{ + target_pressure = 303.325; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) +"weD" = ( +/obj/structure/table/glass, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/item/ai_module/purge, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"weS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"weT" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "Warden"; + name = "Warden Privacy Shutters" + }, +/turf/simulated/floor/plating, +/area/security/warden) +"wfc" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/sleep) +"wfi" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"wfA" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/obj/machinery/recharger, +/obj/item/stack/tile/plasteel{ + pixel_x = 10; + pixel_y = 10; + amount = 5 + }, +/obj/item/airlock_painter, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/toxins/lab) +"wgh" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"wgl" = ( +/obj/structure/computerframe, +/obj/machinery/power/apc/worn_out{ + pixel_x = 26; + dir = 4; + cell_type = 0 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"wgy" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"wgA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_lab) +"wgI" = ( +/obj/structure/table/reinforced, +/obj/item/folder/yellow{ + pixel_y = 1 + }, +/obj/item/lighter/zippo/qm{ + pixel_x = 10; + pixel_y = 4 + }, +/obj/item/toy/figure/qm{ + pixel_x = -8; + pixel_y = 2 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/qm) +"wgS" = ( +/obj/structure/closet/secure_closet/security, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/clothing/suit/hooded/wintercoat/security, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/customs) +"wha" = ( +/obj/structure/mineral_door/wood, +/obj/effect/decal/cleanable/blood/tracks, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"whk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/eastarrival) +"whw" = ( +/obj/machinery/vending/suitdispenser, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"whJ" = ( +/obj/structure/table/wood, +/obj/item/lighter/zippo/blue{ + pixel_x = 7; + pixel_y = 4 + }, +/obj/item/storage/ashtray/glass{ + pixel_x = -4; + pixel_y = -4 + }, +/turf/simulated/floor/wood/fancy/oak, +/area/blueshield) +"whM" = ( +/obj/effect/decal/warning_stripes/northwest, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/eastarrival) +"whS" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/toxins/lab) +"whU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/brig) +"whV" = ( +/turf/simulated/wall/r_wall, +/area/medical/virology/lab) +"wif" = ( +/obj/machinery/hydroponics/soil, +/turf/simulated/floor/grass, +/area/hydroponics) +"wil" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"wim" = ( +/obj/effect/decal/snow/sand/edge{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/obj/structure/fans/tiny, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical{ + name = "Medbay Entrance"; + req_access = list(5) + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/sleeper) +"win" = ( +/obj/structure/curtain/open/shower, +/obj/item/soap/deluxe, +/obj/item/bikehorn/rubberducky/captain, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/shower{ + dir = 4; + pixel_y = 6; + tag = "icon-shower (EAST)" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/captain/bedroom) +"wit" = ( +/obj/effect/decal/warning_stripes/east, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "caution" + }, +/area/atmos) +"wiy" = ( +/obj/machinery/door/airlock/public/glass, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/east, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"wiE" = ( +/obj/structure/table/reinforced, +/obj/item/flashlight/lamp, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "caution" + }, +/area/atmos/control) +"wiF" = ( +/obj/structure/closet/secure_closet/security, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "red" + }, +/area/security/checkpoint) +"wiH" = ( +/obj/effect/landmark/start/doctor, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"wiJ" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/light_switch{ + pixel_x = -20; + pixel_y = 12 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin2) +"wiS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"wja" = ( +/obj/structure/railing, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"wje" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + active_power_usage = 0; + icon_state = "tube-broken"; + status = 2; + dir = 1 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken4" + }, +/area/coldcolony/ruin/abandoned_banya) +"wjk" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/machinery/computer/cryopod{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitehall" + }, +/area/crew_quarters/sleep) +"wjQ" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/heads/hop) +"wjU" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/decal/warning_stripes/red, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"wjX" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 8; + name = "Труба смешивания" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/atmos) +"wku" = ( +/turf/simulated/wall, +/area/crew_quarters/sleep) +"wkv" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "restaurant"; + layer = 2; + name = "Restaurant Shutters" + }, +/turf/simulated/floor/plating, +/area/maintenance/garden) +"wkD" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/vehicle/ridden/snowmobile/key, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"wkH" = ( +/obj/structure/closet/crate/engineering, +/obj/item/stack/sheet/metal{ + amount = 30 + }, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/item/storage/toolbox/mechanical, +/obj/item/stack/cable_coil, +/obj/item/airlock_electronics, +/obj/item/airlock_electronics, +/obj/item/access_control, +/obj/item/access_control, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"wkQ" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"wkS" = ( +/obj/item/stack/sheet/wood, +/obj/effect/decal/cleanable/generic, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"wkV" = ( +/obj/structure/table/wood, +/obj/machinery/bottler, +/obj/machinery/light{ + active_power_usage = 0; + icon_state = "tube-broken"; + status = 2; + dir = 1 + }, +/turf/simulated/floor/wood, +/area/coldcolony/ruin/miningbar) +"wkY" = ( +/obj/machinery/smartfridge, +/obj/machinery/door/window/eastleft{ + dir = 8; + name = "Hydroponics Desk"; + req_access = list(35) + }, +/obj/machinery/door/window/eastleft{ + name = "Kitchen Desk"; + req_access = list(28) + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hydroponics) +"wlf" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"wln" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/crew_quarters/chief) +"wlv" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/pirate/ranged{ + loot = list(/obj/effect/mob_spawn/human/corpse/pirate/ranged); + maxHealth = 150; + health = 150 + }, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"wlB" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"wlG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dust, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/miningeva) +"wlM" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 1; + name = "Труба дыхательной смеси" + }, +/turf/simulated/wall/r_wall, +/area/atmos) +"wlN" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/permahallway) +"wlR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"wme" = ( +/turf/simulated/floor/wood{ + icon_state = "wood-broken3" + }, +/area/maintenance/kitchen) +"wmt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge/vip) +"wmG" = ( +/obj/structure/closet/walllocker/emerglocker/south, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/commercial) +"wnh" = ( +/obj/structure/fence/door, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"wnE" = ( +/obj/structure/chair/comfy/black, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/carpet/black, +/area/bridge/meeting_room) +"wnN" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/sw) +"wnQ" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random_spawners/syndicate/loot/stetchkin, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"wnZ" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/table, +/obj/item/radio, +/turf/simulated/floor/plasteel, +/area/shuttle/pirate_corvette) +"woc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"woe" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 6; + name = "Труба дыхательной смеси" + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/atmos) +"wos" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/poddoor/preopen{ + id_tag = "leftpirat_blast" + }, +/obj/effect/decal/cleanable/dust, +/obj/item/stack/sheet/metal, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"woD" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"woJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/camera{ + c_tag = "Mech Lab"; + dir = 1; + network = list("Research","SS13") + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"woK" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/grown/tomato{ + pixel_x = 6; + pixel_y = 11 + }, +/obj/item/reagent_containers/food/snacks/grown/tomato, +/obj/item/reagent_containers/food/snacks/grown/tomato{ + pixel_x = -5; + pixel_y = 9 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"woV" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/rack, +/obj/item/stack/sheet/mineral/plasma/fifty, +/obj/item/wrench, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"wpq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/plasteel, +/area/toxins/xenobiology) +"wpG" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"wqe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken4" + }, +/area/coldcolony/ruin/abandoned_banya) +"wqn" = ( +/obj/structure/chair/office/dark, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/library/game_zone) +"wqM" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"wqS" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 5; + name = "Труба фильтрации" + }, +/obj/effect/decal/warning_stripes/south, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"wrh" = ( +/turf/simulated/floor/carpet/royalblue, +/area/bridge/vip) +"wrr" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"wse" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/carpet/black, +/area/bridge/meeting_room) +"wsg" = ( +/obj/structure/window/reinforced, +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken7" + }, +/area/coldcolony/ruin/abandoned_banya) +"wss" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/turf/simulated/floor/wood/fancy/cherry, +/area/library/game_zone) +"wsH" = ( +/obj/structure/table/wood, +/obj/machinery/photocopier/faxmachine/longrange{ + department = "NT Representative's Office" + }, +/turf/simulated/floor/carpet/royalblue, +/area/ntrep) +"wsT" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkyellow" + }, +/area/bridge/vip) +"wtb" = ( +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_x = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"wtt" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"wtv" = ( +/obj/machinery/optable, +/turf/simulated/floor/wood, +/area/coldcolony/morgue) +"wtG" = ( +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, +/obj/structure/closet/crate/secure/plasma{ + req_access = list(31,32,50) + }, +/obj/item/stack/sheet/mineral/plasma/fifty, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/coldcolony/ruin/ore_production) +"wtK" = ( +/obj/effect/spawner/lootdrop/officetoys, +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"wub" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"wul" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkredfull" + }, +/area/security/main) +"wut" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"wuD" = ( +/obj/machinery/door/airlock/command{ + name = "Command" + }, +/obj/machinery/door/firedoor, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkblue" + }, +/area/hallway/primary/fore) +"wuJ" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkredcorners" + }, +/area/security/processing) +"wuL" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/item/seeds/potato, +/turf/simulated/floor/plating, +/area/maintenance/garden) +"wuS" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/permabrig) +"wuV" = ( +/obj/structure/dresser, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"wuY" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/beer, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/coldcolony/ruin/miningbar) +"wvb" = ( +/obj/machinery/computer/monitor, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"wvl" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/recharge_station, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central/se) +"wvq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"wwn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"www" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/partial, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"wwA" = ( +/obj/structure/window/full/reinforced/ice, +/obj/structure/grille, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/ruin/unpowered) +"wwE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/entry/lounge) +"wwF" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/closet/crate/hydroponics, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/sorting) +"wwY" = ( +/obj/structure/table/glass, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/ai_module/crewsimov{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ai_module/corp, +/obj/item/ai_module/nanotrasen{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"wxa" = ( +/obj/effect/decal/warning_stripes/east, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/junction/reversed{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"wxh" = ( +/obj/structure/sign/poster/official/safety_report, +/turf/simulated/wall/r_wall, +/area/security/lobby) +"wxj" = ( +/obj/structure/displaycase/captain, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain) +"wxy" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/ruin/unpowered) +"wxM" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 1; + name = "Труба фильтрации" + }, +/obj/effect/decal/warning_stripes/southeastcorner, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "caution" + }, +/area/atmos) +"wxN" = ( +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners" + }, +/area/security/brig) +"wxO" = ( +/obj/structure/rack, +/obj/machinery/light{ + active_power_usage = 0; + icon_state = "tube-broken"; + status = 2; + dir = 1 + }, +/obj/item/weldingtool, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/coldcolony/ruin/abandoned_garage) +"wxW" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/quartermaster/sorting) +"wyc" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/purple{ + desc = "Труба ведёт газ на фильтрацию"; + dir = 8; + name = "Труба на фильтрацию" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos) +"wyf" = ( +/turf/simulated/wall/r_wall, +/area/storage/secure) +"wyt" = ( +/obj/structure/sign/cargo, +/turf/simulated/wall, +/area/quartermaster/sorting) +"wyz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/spentcasing, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"wyB" = ( +/obj/structure/closet/secure_closet/ntrep, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/simulated/floor/carpet/royalblue, +/area/bridge/vip) +"wyD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"wzo" = ( +/obj/structure/chair/comfy/beige{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/carpet, +/area/bridge/checkpoint/south) +"wAa" = ( +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"wAd" = ( +/obj/structure/alien/weeds, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/mining_post1) +"wAf" = ( +/turf/simulated/wall, +/area/crew_quarters/trading) +"wAB" = ( +/obj/structure/sign/engineering, +/turf/simulated/wall/r_wall, +/area/crew_quarters/chief) +"wAV" = ( +/obj/structure/table/reinforced, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/processing) +"wBe" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"wBn" = ( +/obj/structure/chair, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light_switch{ + pixel_x = 8; + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/processing) +"wBt" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/processing) +"wBz" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"wCd" = ( +/turf/simulated/wall, +/area/crew_quarters/toilet4) +"wCe" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"wCh" = ( +/obj/machinery/light, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/permabrig) +"wCl" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/maintenance/garden) +"wCr" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"wCz" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/salglu, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/nitrogen, +/obj/item/tank/internals/emergency_oxygen/plasma, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "arrival" + }, +/area/shuttle/pirate_corvette) +"wCH" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"wDc" = ( +/obj/structure/closet/secure_closet/personal, +/obj/item/radio/intercom{ + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"wDj" = ( +/obj/structure/table/wood, +/obj/item/clothing/mask/cigarette/cigar/havana{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/mask/cigarette/cigar/cohiba{ + pixel_x = 2 + }, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/heads/hop) +"wDl" = ( +/obj/machinery/computer/secure_data, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/bridge) +"wDv" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"wDM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/maintenance/kitchen) +"wEa" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/item/trash/spentcasing, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"wEc" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hydroponics) +"wEi" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 4; + name = "Труба дыхательной смеси" + }, +/obj/machinery/atmospherics/meter, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/atmos) +"wEv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry/commercial) +"wEy" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/head/ushanka, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitehall" + }, +/area/crew_quarters/sleep) +"wEC" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 6; + name = "Труба смешивания" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"wED" = ( +/obj/effect/decal/rail_way{ + dir = 8 + }, +/obj/structure/closet/crate/miningcar{ + name = "mining car" + }, +/obj/item/stack/ore/uranium{ + amount = 9 + }, +/obj/item/stack/ore/diamond{ + amount = 7 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"wEI" = ( +/turf/simulated/wall, +/area/medical/research/nhallway) +"wEN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/security/lobby) +"wEY" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/head/beret, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep) +"wFg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) +"wFu" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/warning_stripes/blue, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"wFw" = ( +/obj/effect/decal/warning_stripes/east, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/landmark/start/engineer, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"wFH" = ( +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + desc = "Труба ведёт газ на фильтрацию"; + dir = 4; + name = "Труба на фильтрацию" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos) +"wFX" = ( +/obj/structure/table/reinforced, +/obj/machinery/door_control{ + id = "ArmorySec"; + name = "Armory Security Window Control"; + pixel_x = 7; + pixel_y = 7; + req_access = list(3) + }, +/obj/machinery/door_control{ + id = "ArmorySecAccess"; + name = "Armory Security Access Control"; + pixel_x = 7; + pixel_y = -2; + req_access = list(3) + }, +/obj/machinery/door_control{ + id = "Warden"; + name = "Warden Privacy Shutters Control"; + pixel_x = -7; + pixel_y = 7; + req_access = list(3) + }, +/obj/machinery/door_control{ + id = "ArmoryLock"; + name = "Armory Lockdown"; + pixel_x = -7; + pixel_y = -2; + req_access = list(3) + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/warden) +"wGc" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkbluecorners" + }, +/area/bridge) +"wGe" = ( +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"wGi" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8; + color = "#9932CC" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"wGY" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin2) +"wHe" = ( +/turf/simulated/wall/rust, +/area/coldcolony/ruin/sm_division) +"wHn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"wHw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) +"wHE" = ( +/obj/structure/flora/grass/green, +/obj/structure/flora/tree/dead, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"wHR" = ( +/obj/structure/closet/chefcloset, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "hydrofloor" + }, +/area/hydroponics) +"wHS" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securehallway) +"wId" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_lab) +"wIm" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"wIt" = ( +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"wIu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/supplyquest, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/qm) +"wIC" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkpurple" + }, +/area/bridge/vip) +"wIH" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel/white, +/area/medical/cmostore) +"wIN" = ( +/obj/structure/closet/crate/miningcar{ + name = "mining car" + }, +/obj/item/stack/ore/bluespace_crystal, +/obj/item/stack/ore/iron{ + amount = 14 + }, +/obj/item/stack/ore/titanium{ + amount = 6 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"wJd" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"wJs" = ( +/obj/effect/spawner/window/reinforced/polarized{ + id = "library_gameroom" + }, +/turf/simulated/floor/plating, +/area/library/game_zone) +"wJD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) +"wJX" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"wKe" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/simulated/floor/plasteel, +/area/atmos) +"wKj" = ( +/obj/structure/bed/pod, +/obj/item/clothing/under/pants/galifepants{ + name = "Lis West pants"; + desc = "Штаны широкого фасона в бёдрах, ткань в районе коленей порвана и свисает открывая обзор на отверстия, ширинка грубо разорвана, голень штанины в крови как и в целом общая часть покрытия. На бирке пришитой к задней стороне штанов надпись 'Лейтенант Лис Вест, 6-ой разведывательный батальон СолГов'" + }, +/obj/item/restraints/handcuffs/cable/zipties/used, +/obj/effect/decal/cleanable/pie_smudge, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"wKm" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/security/processing) +"wKo" = ( +/obj/machinery/atmospherics/unary/vent_pump{ + external_pressure_bound = 140; + external_pressure_bound_default = 140; + name = "server vent"; + on = 1; + pressure_checks = 0; + releasing = 0 + }, +/turf/simulated/floor/plating, +/area/toxins/server) +"wKt" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/structure/closet/walllocker/emerglocker/west, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_chamber) +"wKI" = ( +/obj/machinery/power/port_gen/pacman/super{ + anchored = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/syndie_outpost) +"wKU" = ( +/obj/machinery/computer/robotics, +/obj/machinery/turretid/stun{ + control_area = "Borg Upload Chamber"; + name = "Borg Upload Turret Control"; + pixel_y = 24; + req_access = list(75) + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkpurple" + }, +/area/bridge) +"wLm" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/bun, +/obj/item/reagent_containers/food/snacks/bun, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"wLv" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Armory"; + req_access = list(3); + security_level = 1 + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "ArmoryLock"; + name = "Armory Lockdown" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/warden) +"wLA" = ( +/obj/item/cigbutt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"wLO" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/structure/inflatable{ + layer = 3.1 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"wMb" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wideplating{ + color = "#332a2a"; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/crew_quarters/fitness) +"wMk" = ( +/obj/machinery/atmospherics/unary/tank/air{ + volume = 20000; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"wMo" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"wMt" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/customs) +"wMB" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"wMC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay Foyer"; + req_access = list(5) + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"wMT" = ( +/obj/machinery/recharge_station, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"wMY" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"wNt" = ( +/turf/simulated/wall/rust, +/area/security/detectives_office) +"wNx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/bridge/vip) +"wNI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood/fancy/cherry, +/area/security/hos) +"wNP" = ( +/obj/machinery/door/poddoor/preopen{ + id_tag = "BridgeLockdown"; + name = "Bridge Lockdown" + }, +/obj/effect/spawner/window/reinforced/polarized{ + id = "ntr" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "representative"; + name = "Privacy Shutters" + }, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/ntrep) +"wNS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredcorners" + }, +/area/security/processing) +"wNZ" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "SKPP"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/bridge/checkpoint/south) +"wOj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"wOo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/baseturf_helper/asteroid, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_maintenance) +"wOq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"wOs" = ( +/obj/machinery/door/window/southright{ + req_access = list(20) + }, +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain/bedroom) +"wOx" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/item/light/tube{ + icon_state = "ltube-broken"; + status = 2 + }, +/obj/machinery/light_construct{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/engine, +/area/coldcolony/ruin/sm_chamber) +"wOC" = ( +/obj/machinery/constructable_frame/machine_frame, +/obj/machinery/light_switch{ + pixel_y = 8; + pixel_x = -24 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"wOY" = ( +/obj/structure/spider/stickyweb, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"wPd" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/baconpizzaslice, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"wPt" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/poddoor/shutters{ + id_tag = "comgarage"; + dir = 2 + }, +/obj/effect/decal/snow/sand/edge{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"wPx" = ( +/obj/effect/landmark/event/revenantspawn, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-cherry" + }, +/area/crew_quarters/trading) +"wPM" = ( +/turf/simulated/wall, +/area/toxins/explab) +"wQd" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/captain) +"wQp" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"wQq" = ( +/obj/structure/fence, +/obj/effect/turf_decal/stripes{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"wQK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"wQV" = ( +/obj/effect/decal/cleanable/spiderling_remains, +/turf/simulated/floor/plating, +/area/crew_quarters/trading) +"wQW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"wRe" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkyellow" + }, +/area/bridge/vip) +"wRm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin1) +"wRn" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/obj/random/figure, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"wRE" = ( +/obj/structure/chair/comfy/green, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"wRR" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"wRZ" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/permabrig) +"wSc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"wSm" = ( +/obj/machinery/power/apc/noalarm{ + pixel_y = -26; + start_charge = 1 + }, +/obj/structure/cable, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"wSn" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/rack/gunrack, +/obj/item/gun/energy/gun{ + pixel_x = -7 + }, +/obj/item/gun/energy/gun{ + pixel_x = 9 + }, +/obj/item/gun/energy/gun, +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"wSH" = ( +/obj/machinery/computer/operating{ + dir = 4 + }, +/obj/machinery/light_switch{ + pixel_x = -22; + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitered" + }, +/area/security/medbay) +"wSI" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkredcorners" + }, +/area/shuttle/pirate_corvette) +"wSJ" = ( +/obj/structure/table, +/obj/machinery/kitchen_machine/microwave, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"wSO" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securehallway) +"wSQ" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/turf/simulated/floor/plasteel/white, +/area/medical/sleeper) +"wST" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"wTb" = ( +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"wTh" = ( +/obj/structure/table/wood/fancy/royalblack, +/obj/item/clipboard, +/turf/simulated/floor/carpet/black, +/area/maintenance/casino) +"wTo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"wTs" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/power/port_gen/pacman, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/storage/secure) +"wUp" = ( +/obj/machinery/suit_storage_unit/atmos, +/obj/effect/decal/warning_stripes/west, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"wUy" = ( +/obj/machinery/door/window/brigdoor{ + dir = 1; + id = "Cell 5"; + name = "General Detention Cell"; + req_access = list(2); + base_state = "rightsecure"; + icon_state = "rightsecure" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"wUA" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel/white, +/area/crew_quarters/fitness) +"wUD" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 1; + name = "Труба смешивания" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"wUJ" = ( +/turf/simulated/wall/rust, +/area/maintenance/fsmaint2) +"wUN" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/checkpoint/south) +"wUX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/landmark/start/scientist, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) +"wVa" = ( +/obj/structure/flora/ausbushes/pointybush, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"wVf" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitecorner" + }, +/area/hallway/secondary/entry) +"wVm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"wVt" = ( +/obj/structure/rack, +/obj/item/camera_film, +/obj/item/camera{ + desc = "A one use - polaroid camera. 30 photos left."; + name = "detectives camera"; + pictures_left = 30 + }, +/obj/item/taperecorder, +/obj/item/storage/briefcase, +/obj/item/hand_labeler, +/obj/item/storage/box/evidence, +/obj/item/storage/box/evidence, +/obj/item/storage/box/tapes, +/turf/simulated/floor/wood, +/area/security/detectives_office) +"wVv" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"wVy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/plating, +/area/toxins/test_chamber) +"wVz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/quartermaster/storage) +"wVM" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_containers/food/pill/patch/silver_sulf, +/obj/item/reagent_containers/food/pill/patch/silver_sulf{ + pixel_x = -5; + pixel_y = -3 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) +"wVO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/sorting) +"wVW" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/brig) +"wWe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel, +/area/security/prison/cell_block/A) +"wWq" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "blue" + }, +/area/crew_quarters/cabin1) +"wWr" = ( +/obj/structure/sign/poster/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"wWt" = ( +/obj/structure/table, +/obj/item/grenade/plastic/x4/thermite, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/shuttle/pirate_corvette) +"wXh" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"wXp" = ( +/obj/effect/landmark/start/doctor, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"wXx" = ( +/obj/structure/table/reinforced, +/obj/machinery/chem_dispenser/soda, +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"wXQ" = ( +/mob/living/simple_animal/hostile/bear/polar, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/shuttle/pirate_corvette) +"wXS" = ( +/obj/machinery/door/airlock{ + name = "Toilet" + }, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"wYe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/bridge/vip) +"wYf" = ( +/obj/machinery/door/airlock/hatch{ + aiControlDisabled = 1; + hackProof = 1; + req_access = list(160); + name = "Bridge" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/shuttle/pirate_corvette) +"wYh" = ( +/obj/effect/landmark/start/security_officer, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkredcorners" + }, +/area/security/customs) +"wYj" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"wYp" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/hallway/secondary/exit) +"wYq" = ( +/turf/simulated/wall/r_wall, +/area/security/permabrig) +"wYz" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "eslock" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plating, +/area/hallway/secondary/exit) +"wYH" = ( +/turf/simulated/wall/mineral/wood/nonmetal, +/area/coldcolony/ruin/abandoned_house) +"wZg" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/brig) +"wZq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/shieldwallgen, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/sorting) +"wZu" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"wZG" = ( +/obj/machinery/power/apc{ + pixel_y = 26; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"wZR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/toxins/xenobiology) +"wZS" = ( +/turf/simulated/wall, +/area/toxins/storage) +"xac" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permabrig) +"xae" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/medical2, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/machinery/light_switch{ + pixel_x = 8; + pixel_y = -24 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"xag" = ( +/turf/simulated/wall/r_wall/rust, +/area/coldcolony/ruin/sm_division) +"xat" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Bar" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"xaA" = ( +/obj/effect/mob_spawn/human/corpse/russian, +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"xaB" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/cabin1) +"xaG" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brig) +"xaZ" = ( +/obj/structure/dresser, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/heads/hop) +"xbT" = ( +/obj/effect/decal/warning_stripes/northeast, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) +"xcb" = ( +/obj/effect/decal/cleanable/vomit, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"xcj" = ( +/obj/machinery/atm{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/office) +"xcr" = ( +/obj/structure/flora/tree/pine, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"xcH" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"xcJ" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"xda" = ( +/obj/structure/bed, +/obj/effect/spawner/random_spawners/syndicate/loot{ + result = list(/obj/item/bedsheet/blue = 10, /obj/item/bedsheet/black = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/brown = 10, /obj/item/bedsheet/fluff = 10, /obj/item/bedsheet/green = 10, /obj/item/bedsheet/orange = 10, /obj/item/bedsheet/purple = 10, /obj/item/bedsheet/red = 10, /obj/item/bedsheet/yellow = 10); + name = "bedsheet" + }, +/obj/effect/landmark/join_late, +/turf/simulated/floor/plasteel{ + icon_state = "green" + }, +/area/crew_quarters/cabin2) +"xdH" = ( +/obj/structure/flora/grass/both, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/obj/effect/turf_decal/weather/snow/corner, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"xdQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table_frame, +/obj/effect/landmark/tiles/burnturf, +/turf/simulated/floor/plating{ + temperature = 180 + }, +/area/shuttle/pirate_corvette) +"xdR" = ( +/turf/simulated/wall/rust, +/area/crew_quarters/cabin2) +"xdW" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"xdZ" = ( +/obj/structure/flora/grass/both, +/obj/structure/flora/tree/pine, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"xep" = ( +/turf/simulated/wall/mineral/titanium, +/area/ruin/unpowered) +"xeA" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/portable_atmospherics/scrubber/huge, +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/atmos/control) +"xfi" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/arrow{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/quartermaster/sorting) +"xfS" = ( +/obj/machinery/mech_bay_recharge_port{ + dir = 2 + }, +/obj/effect/decal/warning_stripes/north, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/assembly/chargebay) +"xfY" = ( +/obj/machinery/vending/medical, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/cmostore) +"xgb" = ( +/obj/item/chair/wood{ + dir = 4 + }, +/obj/effect/decal/ants, +/turf/simulated/floor/wood{ + icon_state = "wood-broken3" + }, +/area/maintenance/kitchen) +"xgc" = ( +/turf/simulated/wall/r_wall, +/area/security/brig) +"xge" = ( +/obj/machinery/vending/boozeomat, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/bar) +"xgt" = ( +/obj/structure/rack, +/obj/item/tank/internals/generic, +/obj/item/holosign_creator/atmos, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"xgv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor{ + id = "CargoUnload"; + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/office) +"xgE" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/structure/inflatable{ + layer = 3.1 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"xgX" = ( +/turf/simulated/wall/shuttle{ + icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' + }, +/area/shuttle/pirate_corvette) +"xhd" = ( +/turf/simulated/wall/rust, +/area/engineering/break_room) +"xhl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/crew_quarters/chief) +"xho" = ( +/obj/structure/sign/comand{ + name = "\improper COMMAND" + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/fore) +"xhw" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/bridge/meeting_room) +"xhG" = ( +/obj/structure/closet/crate, +/obj/item/light/tube, +/obj/item/poster/random_official, +/obj/item/poster/random_official, +/obj/item/poster/random_official, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"xhI" = ( +/obj/structure/mineral_door/wood, +/obj/structure/curtain/black, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"xhJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"xic" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/shieldwallgen, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/sorting) +"xig" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"xiq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/walllocker/emerglocker/west, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"xis" = ( +/obj/structure/closet, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/head/beanie/black, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/radio/intercom{ + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/central/north) +"xiu" = ( +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/security/medbay) +"xiz" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/decal/cleanable/dirt, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/structure/closet/crate/engineering, +/turf/simulated/floor/plasteel, +/area/storage/secure) +"xiB" = ( +/obj/machinery/vending/wallmed{ + pixel_x = -25 + }, +/obj/effect/decal/warning_stripes/blue, +/obj/structure/closet/emcloset, +/obj/effect/decal/snow/sand/edge{ + dir = 10 + }, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/office) +"xiD" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/library/game_zone) +"xiL" = ( +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"xiU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/bridge/vip) +"xiV" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"xjd" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/flora/ausbushes/grassybush, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"xjg" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/item/shard{ + icon_state = "medium"; + pixel_x = -7; + pixel_y = -10 + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"xjo" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) +"xju" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"xjK" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"xjM" = ( +/obj/effect/landmark/tiles/burnturf, +/obj/effect/decal/cleanable/ash, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/ruin/unpowered) +"xjN" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 9; + name = "Труба смешивания" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"xjX" = ( +/obj/structure/closet/lasertag/blue, +/turf/simulated/floor/plasteel, +/area/crew_quarters/fitness) +"xkh" = ( +/turf/simulated/wall/r_wall/rust, +/area/blueshield) +"xkw" = ( +/obj/machinery/door/airlock/glass{ + name = "Kitchen"; + req_access = list(28) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/hydroponics) +"xkz" = ( +/turf/simulated/wall, +/area/medical/cmostore) +"xkO" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/processing) +"xkR" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/lounge) +"xlc" = ( +/obj/structure/table/wood, +/obj/item/storage/ashtray/bronze{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/item/clothing/mask/cigarette/cigar/havana{ + layer = 2.8; + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/flashlight/lamp/green{ + pixel_x = -4; + pixel_y = 10 + }, +/obj/machinery/door_control{ + id = "magistrateoffice"; + name = "Office Door"; + normaldoorcontrol = 1; + pixel_y = -2; + req_access = list(74); + pixel_x = 14 + }, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/magistrateoffice) +"xli" = ( +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"xll" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/main) +"xlt" = ( +/obj/machinery/vending/artvend, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"xlC" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"xlQ" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"xlX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/brig) +"xmi" = ( +/obj/item/reagent_containers/food/snacks/meat{ + pixel_x = -8 + }, +/obj/effect/decal/ants, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"xml" = ( +/obj/effect/decal/cleanable/glass, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"xmm" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/space_heater, +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"xmq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"xmr" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/wood/fancy/cherry, +/area/library/game_zone) +"xms" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"xmy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/securearmory) +"xmT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/sign/poster/official/state_laws{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"xnv" = ( +/obj/machinery/atmospherics/trinary/mixer{ + desc = "Смешивает кислород и азот, создавая смесь для дыхания на станции"; + dir = 8; + name = "Дыхательный смеситель"; + node1_concentration = 0.8; + node2_concentration = 0.2; + on = 1; + target_pressure = 4500 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"xnL" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/spawner/random_spawners/oil_20, +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/turf/simulated/floor/plating, +/area/maintenance/asmaint3) +"xnN" = ( +/obj/machinery/status_display{ + pixel_x = -32 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/table/reinforced, +/obj/item/cartridge/signal/toxins{ + pixel_x = 6 + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/hor) +"xoa" = ( +/obj/structure/table/wood/fancy/green, +/obj/item/kitchen/knife, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"xol" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/storage/firstaid/regular, +/obj/structure/table/wood, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkblue" + }, +/area/bridge/vip) +"xoy" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "First Surgery Window"; + name = "Surgery Shutters" + }, +/turf/simulated/floor/plating, +/area/medical/surgery/north) +"xoA" = ( +/obj/machinery/power/smes{ + charge = 4e+006; + output_level = 30000 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"xoR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "redcorner" + }, +/area/security/lobby) +"xpc" = ( +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"xpd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/exit) +"xpg" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar/atrium) +"xpI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"xpN" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"xpV" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/carpet/orange, +/area/bridge/vip) +"xqu" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/quartermaster/office) +"xqx" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"xqL" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/sleep) +"xqZ" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/donut_box, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library/game_zone) +"xrn" = ( +/obj/machinery/door/airlock/public/glass, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/east, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/exit) +"xrx" = ( +/turf/simulated/wall, +/area/crew_quarters/bar) +"xrC" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/grenade/barrier{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/grenade/barrier, +/obj/item/grenade/barrier{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/barrier{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"xrE" = ( +/obj/item/reagent_containers/food/snacks/doshik, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whitehall" + }, +/area/crew_quarters/sleep) +"xrO" = ( +/obj/item/stack/rods, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"xrP" = ( +/obj/structure/table, +/obj/item/radio/intercom/locked/prison{ + pixel_x = -28 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"xsk" = ( +/obj/item/bedsheet/blue, +/obj/structure/bed, +/obj/effect/landmark/start/blueshield, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bcarpet05" + }, +/area/blueshield) +"xsq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"xsW" = ( +/obj/item/flag/clown, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/clownoffice) +"xsY" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"xtc" = ( +/obj/structure/closet/secure_closet/hos, +/obj/item/clothing/suit/hooded/wintercoat/security/hos, +/turf/simulated/floor/carpet/red, +/area/security/hos) +"xtl" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research) +"xtt" = ( +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = -4; + pixel_y = -4 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"xtw" = ( +/obj/machinery/power/smes, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/syndie_outpost) +"xtI" = ( +/obj/structure/rack, +/obj/item/stack/sheet/cardboard, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"xtJ" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/random/tool, +/turf/simulated/floor/plating, +/area/maintenance/perma) +"xtO" = ( +/obj/structure/closet/secure_closet/brig{ + id = "Cell 5"; + name = "Cell 5 Locker" + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"xtW" = ( +/obj/structure/spider/stickyweb, +/mob/living/simple_animal/hostile/poison/giant_spider/hunter, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"xuk" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"xul" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/effect/landmark/start/cargo_technician, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"xur" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"xuz" = ( +/obj/structure/girder, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"xuF" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/bridge/meeting_room) +"xuN" = ( +/obj/structure/rack, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/engineering/break_room) +"xuO" = ( +/obj/effect/decal/warning_stripes/yellow/partial, +/obj/machinery/vending/cigarette, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"xvr" = ( +/obj/structure/dispenser/oxygen, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/coldcolony/ruin/miningeva) +"xvE" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 4; + name = "Труба дыхательной смеси" + }, +/obj/effect/decal/warning_stripes/south, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/atmos) +"xvJ" = ( +/turf/simulated/wall/rust, +/area/library) +"xvN" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/permahallway) +"xvQ" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/white{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/chapel/main) +"xvW" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"xwe" = ( +/obj/machinery/door/airlock/public/glass, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/east) +"xwp" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"xww" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/mop, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"xwx" = ( +/obj/structure/table/wood/poker, +/obj/item/deck/cards, +/obj/item/stack/spacechips/c5000, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"xwA" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/coldcolony/ruin/miningbar) +"xwT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) +"xwY" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Prisoner Processing"; + req_access = list(63) + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/processing) +"xxa" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 4; + name = "Труба фильтрации" + }, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 1; + name = "Труба дыхательной смеси" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"xxh" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/brigstaff) +"xxQ" = ( +/turf/simulated/wall, +/area/security/detectives_office) +"xyf" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) +"xym" = ( +/obj/machinery/papershredder, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/primary/fore) +"xyT" = ( +/obj/structure/closet/secure_closet/reagents, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"xzd" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/toxins/lab) +"xzg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/carpet/green, +/area/crew_quarters/mrchangs) +"xzt" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/plating/asteroid, +/area/ruin/unpowered) +"xzu" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"xzw" = ( +/obj/structure/sink{ + pixel_y = 22 + }, +/obj/effect/decal/warning_stripes/blue, +/obj/effect/decal/warning_stripes/southeast, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/virology/lab) +"xzx" = ( +/obj/structure/window/reinforced, +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_x = 1; + pixel_y = 3 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/bridge) +"xzy" = ( +/obj/structure/chair/wood{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar/atrium) +"xzC" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/vending/wallmed{ + pixel_x = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/toxins/lab) +"xzK" = ( +/obj/machinery/atmospherics/unary/outlet_injector/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/permabrig) +"xzV" = ( +/obj/effect/landmark/start/security_officer, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/customs) +"xzW" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"xAc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/crate/medical, +/obj/item/storage/firstaid/adv, +/obj/item/storage/firstaid/regular{ + pixel_x = 2; + pixel_y = -2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/sorting) +"xAe" = ( +/obj/machinery/vending/clothing, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"xAh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"xAk" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/light, +/obj/effect/decal/warning_stripes/blue/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"xAq" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/hydroponics) +"xAw" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/pill/patch/silver_sulf, +/obj/item/reagent_containers/food/pill/patch/silver_sulf{ + pixel_x = -8; + pixel_y = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/entry/lounge) +"xAA" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"xAE" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/decal/warning_stripes/eastnorthwest, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engineering/break_room) +"xBo" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) +"xBA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/junction/reversed{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"xBK" = ( +/obj/effect/landmark/start/chef, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"xCd" = ( +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/chargebay) +"xCi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"xCB" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/junction/yjunction{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"xCJ" = ( +/obj/machinery/autolathe, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/brigdoor{ + id = "Autolathe"; + name = "Autolathe Access"; + req_access = list(47); + dir = 2 + }, +/obj/item/stack/sheet/metal{ + amount = 20 + }, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/toxins/lab) +"xCK" = ( +/obj/effect/decal/warning_stripes/west, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"xCO" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"xCP" = ( +/obj/effect/decal/warning_stripes/west{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding2" + }, +/obj/effect/decal/warning_stripes/west{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding8" + }, +/obj/effect/decal/warning_stripes/west{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "asteroid" + }, +/area/hydroponics) +"xCX" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"xCZ" = ( +/obj/machinery/kitchen_machine/microwave, +/obj/structure/table/wood, +/obj/machinery/camera{ + c_tag = "Command Meeting Room East"; + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/bridge/meeting_room) +"xDg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"xDP" = ( +/obj/structure/flora/grass/brown, +/obj/structure/flora/tree/dead, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"xEi" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitecorner" + }, +/area/hallway/secondary/entry) +"xEI" = ( +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/wood/fancy/light{ + icon_state = "light-fancy-wood-broken4" + }, +/area/crew_quarters/captain) +"xEL" = ( +/obj/effect/landmark/tiles/damageturf, +/turf/simulated/floor/plating, +/area/hallway/secondary/exit) +"xER" = ( +/obj/structure/table, +/obj/item/taperecorder, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/processing) +"xFx" = ( +/obj/structure/table/wood/fancy, +/obj/item/trash/plate{ + pixel_x = -5; + pixel_y = -1 + }, +/obj/item/kitchen/utensil/fork, +/turf/simulated/floor/wood, +/area/maintenance/kitchen) +"xFJ" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = -1; + pixel_y = 3 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"xFN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"xGa" = ( +/obj/effect/landmark/tiles/damageturf, +/obj/machinery/newscaster{ + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"xGd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random{ + pixel_x = -32 + }, +/obj/item/firstaid_arm_assembly, +/obj/structure/rack, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"xGJ" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/obj/effect/turf_decal/weather/snow/corner, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"xHb" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull"; + temperature = 180 + }, +/area/ruin/unpowered) +"xHg" = ( +/obj/structure/closet/crate, +/obj/item/stack/packageWrap, +/obj/item/hand_labeler{ + pixel_x = -2; + pixel_y = 7 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/item/paper_bin, +/obj/item/pen/red, +/obj/item/folder/white, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"xHj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/kitchen) +"xHk" = ( +/obj/structure/table/wood, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/carpet/black, +/area/bridge/meeting_room) +"xHl" = ( +/obj/machinery/computer/security{ + name = "Pirate hack camera console"; + network = list("SS13","Mining Outpost","PPrison") + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/shuttle/pirate_corvette) +"xHy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dust, +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/obj/machinery/camera{ + c_tag = "Arrivals End"; + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "arrival" + }, +/area/hallway/secondary/entry) +"xHG" = ( +/obj/machinery/papershredder, +/turf/simulated/floor/carpet/royalblue, +/area/ntrep) +"xIb" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel, +/area/atmos) +"xIj" = ( +/obj/structure/table, +/obj/machinery/kitchen_machine/microwave{ + pixel_x = -1; + pixel_y = 7 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"xIm" = ( +/obj/effect/landmark/start/geneticist, +/obj/structure/chair/office/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/genetics) +"xIo" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken5" + }, +/area/coldcolony/ruin/abandoned_house) +"xIz" = ( +/obj/effect/decal/cleanable/ash, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_lab) +"xIA" = ( +/obj/structure/table/wood, +/obj/item/newspaper, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/library/game_zone) +"xIB" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 2 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/medical/research/nhallway) +"xIF" = ( +/obj/machinery/papershredder, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/hos) +"xIP" = ( +/turf/simulated/floor/wood/cherry{ + temperature = 180; + icon_state = "wood-cherry-broken5" + }, +/area/ruin/unpowered) +"xIR" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/bed/amb_trolley, +/obj/effect/decal/warning_stripes/eastnorthwest, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel/white, +/area/medical/paramedic) +"xIT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/genetics) +"xJc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom{ + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/brig) +"xJf" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/sorting) +"xJj" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/vehicle/ridden/snowmobile/key, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"xJm" = ( +/obj/machinery/atm{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"xJr" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_x = 1; + pixel_y = 3 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/security/main) +"xJu" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/sunnybush, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/grass, +/area/hallway/primary/central/sw) +"xJx" = ( +/obj/structure/closet/crate/medical{ + icon_state = "medicalcrateopen"; + opened = 1 + }, +/obj/item/reagent_containers/food/pill/patch/silver_sulf, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"xJK" = ( +/turf/simulated/floor/plasteel{ + icon_state = "hydrofloor" + }, +/area/hydroponics) +"xJO" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/effect/spawner/window/reinforced/plasma, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_chamber) +"xJS" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/station_map/directional/east, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/se) +"xKl" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/shoes/sandal/white, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"xKF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/carpet/royalblack, +/area/bridge) +"xKT" = ( +/obj/structure/table/reinforced, +/obj/item/trash/plate, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_x = 7; + pixel_y = 14 + }, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/kitchen) +"xKZ" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/item/trash/spacetwinkie, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) +"xLb" = ( +/obj/effect/decal/warning_stripes/southwest, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) +"xLe" = ( +/obj/effect/decal/remains/mouse, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"xLn" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/decal/cleanable/confetti, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/theatre) +"xLw" = ( +/obj/structure/chair/sofa/right{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/magistrateoffice) +"xLx" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/brig) +"xLR" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/secure_closet/cargotech, +/obj/item/clothing/suit/hooded/wintercoat/cargo, +/obj/item/clothing/suit/hooded/wintercoat/cargo, +/obj/item/clothing/suit/hooded/wintercoat/cargo, +/obj/item/clothing/suit/hooded/wintercoat/cargo, +/obj/item/stamp/granted, +/obj/item/stamp/denied, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"xMt" = ( +/obj/structure/table/glass, +/obj/machinery/newscaster{ + pixel_x = -30 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"xMz" = ( +/obj/structure/table, +/obj/machinery/kitchen_machine/microwave, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/locker) +"xMA" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) +"xMW" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/north) +"xMZ" = ( +/obj/structure/door_assembly/door_assembly_science, +/turf/simulated/floor/plating, +/area/toxins/explab) +"xNx" = ( +/obj/structure/sign/botany, +/turf/simulated/wall, +/area/hydroponics) +"xNy" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/west{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding8" + }, +/obj/effect/decal/warning_stripes/west{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding2" + }, +/obj/effect/decal/warning_stripes/west{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding1" + }, +/turf/simulated/floor/plasteel{ + icon_state = "asteroid" + }, +/area/hydroponics) +"xNX" = ( +/obj/machinery/atmospherics/pipe/manifold/visible, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"xOg" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) +"xOh" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "Kitchen Dinner Windows"; + name = "Kitchen Shutters" + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"xOl" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/sorting) +"xOm" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/vending/wallmed{ + pixel_x = 25 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securehallway) +"xOo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology/lab) +"xOs" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/effect/landmark/start/atmospheric, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"xOz" = ( +/obj/structure/flora/grass/both, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"xPi" = ( +/obj/structure/table, +/obj/item/radio/intercom/locked/prison{ + pixel_x = 28 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"xPG" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/kitchen) +"xPJ" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/closet/secure_closet/engineering_electrical, +/obj/item/clothing/gloves/color/fyellow, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"xPY" = ( +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/tcommsat/chamber) +"xQf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/security/hos) +"xQj" = ( +/obj/structure/table/wood, +/obj/structure/disposalpipe/junction/reversed{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/carpet/black, +/area/bridge/meeting_room) +"xQl" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkblue" + }, +/area/ntrep) +"xQt" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/brig) +"xQE" = ( +/obj/structure/table/wood, +/obj/item/lipstick/white, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) +"xQZ" = ( +/obj/machinery/door/airlock/maintenance{ + req_access = list(12); + welded = 1 + }, +/obj/structure/barricade/wooden/crude{ + layer = 3.3 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"xRg" = ( +/obj/machinery/door/airlock/atmos/glass{ + name = "Atmospherics Desc"; + req_access = list(10,24) + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos/control) +"xRm" = ( +/obj/item/paper_bin, +/obj/item/pen, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/ruin/unpowered) +"xRL" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/sm_division) +"xSa" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel, +/area/ruin/unpowered) +"xSc" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"xSk" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "NT Representative Room"; + req_access = list(73) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood/fancy/birch, +/area/bridge/vip) +"xSm" = ( +/obj/structure/table, +/obj/item/radio/off, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "purple" + }, +/area/coldcolony/ruin/sm_division) +"xSu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/wood/fancy/royalblack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/casino) +"xTg" = ( +/obj/structure/wooden_sign{ + name = "DANGER!"; + desc = "BEARS!" + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"xTh" = ( +/obj/machinery/conveyor_switch/oneway{ + dir = 8; + id = "garbage"; + name = "Garbage" + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"xTi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/shard{ + icon_state = "medium"; + pixel_x = -3; + pixel_y = -5 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"xTl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/ninja_teleport, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"xTQ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/mechanical, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) +"xTS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"xTV" = ( +/obj/machinery/atmospherics/unary/tank/nitrous_oxide{ + volume = 3000 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"xUf" = ( +/obj/item/reagent_containers/glass/bottle/ethanol{ + pixel_y = -5 + }, +/obj/structure/closet, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"xUh" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + desc = "Труба содержит дыхательную смесь для подачи на станцию"; + dir = 6; + name = "Труба дыхательной смеси" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) +"xUn" = ( +/obj/structure/chair/comfy/shuttle/dark{ + dir = 4 + }, +/obj/item/radio/intercom/syndicate{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/shuttle/pirate_corvette) +"xUD" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/constructable_frame/machine_frame, +/obj/item/stack/cable_coil{ + amount = 2 + }, +/obj/item/stock_parts/manipulator, +/turf/simulated/floor/plating, +/area/shuttle/pirate_corvette) +"xUM" = ( +/obj/effect/decal/rail_way{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow/corner, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"xUN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/cable, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/securearmory) +"xVd" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/shaker, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/coldcolony/ruin/miningbar) +"xVq" = ( +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"xVs" = ( +/obj/machinery/dye_generator, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/civilian/barber) +"xVC" = ( +/obj/structure/bed, +/obj/item/bedsheet/red, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"xVM" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"xVN" = ( +/obj/structure/table/abductor, +/obj/item/retractor/alien, +/turf/simulated/floor/mineral/abductor{ + oxygen = 22; + temperature = 180; + nitrogen = 82 + }, +/area/ruin/unpowered) +"xVQ" = ( +/obj/effect/decal/warning_stripes/west, +/obj/structure/table/reinforced, +/obj/item/clothing/glasses/meson/sunglasses, +/obj/item/rcd_ammo, +/obj/item/rcd_ammo, +/obj/item/rcd_ammo, +/obj/item/rcd_ammo, +/obj/item/rcd_ammo, +/obj/item/rcd/combat, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/chief) +"xVX" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) +"xWi" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/hallway/primary/fore) +"xWk" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/bottle/whiskey, +/turf/simulated/floor/wood/fancy/birch{ + icon_state = "fancy-wood-birch-broken6" + }, +/area/bridge/checkpoint/south) +"xWB" = ( +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/maintenance/kitchen) +"xWP" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/fore) +"xXs" = ( +/obj/structure/reagent_dispensers/oil, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/assembly/chargebay) +"xXu" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/dispenser/oxygen, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/hallway/primary/fore) +"xXw" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/crew_quarters/kitchen) +"xXS" = ( +/obj/machinery/atmospherics/binary/volume_pump{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/atmos) +"xYj" = ( +/turf/simulated/wall, +/area/crew_quarters/locker) +"xYn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/machinery/defibrillator_mount/loaded, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/north) +"xYw" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 1; + name = "Труба фильтрации" + }, +/obj/effect/decal/warning_stripes/east, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "caution" + }, +/area/atmos) +"xYZ" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/sw) +"xZf" = ( +/obj/machinery/door_control{ + id = "Second Surgery Window"; + name = "Surgery Window Shutters Control"; + pixel_x = 25; + pixel_y = -24 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel/white, +/area/medical/surgery/south) +"xZg" = ( +/obj/machinery/door/airlock{ + name = "Chapel Morgue"; + req_access = list(27) + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) +"xZs" = ( +/obj/machinery/light_construct{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/toxins/test_chamber) +"xZt" = ( +/obj/structure/bookcase, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library) +"xZN" = ( +/obj/effect/decal/warning_stripes/red, +/obj/structure/closet/emcloset, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/vip) +"xZQ" = ( +/obj/item/mining_scanner, +/turf/simulated/floor/plasteel, +/area/coldcolony/ruin/miningeva) +"xZS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/locker) +"yad" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/fitness) +"yai" = ( +/obj/effect/decal/warning_stripes/east, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/assembly/chargebay) +"yam" = ( +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/flash, +/obj/item/flash, +/obj/item/crowbar, +/obj/structure/table/reinforced, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whitepurple" + }, +/area/assembly/robotics) +"yaw" = ( +/obj/structure/grille, +/obj/structure/window/full/reinforced/ice, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id_tag = "Brig_lockdown"; + name = "Brig Lockdown" + }, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/security/prison/cell_block/A) +"yaJ" = ( +/obj/machinery/papershredder, +/turf/simulated/floor/carpet/orange, +/area/crew_quarters/heads/hop) +"yaN" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/brig) +"ybb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/chemistry) +"ybe" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"ybw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel, +/area/quartermaster/office) +"ybP" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/double, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) +"ybQ" = ( +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/sleeper) +"ybU" = ( +/turf/simulated/wall/rust, +/area/crew_quarters/bar) +"ycd" = ( +/obj/machinery/button/windowtint{ + id = "library_gameroom"; + pixel_x = -3; + pixel_y = -26; + range = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light_switch{ + pixel_x = 5; + pixel_y = -26 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/library/game_zone) +"yce" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/simulated/floor/plating/asteroid{ + temperature = 180 + }, +/area/ruin/unpowered/coldcolony_outside) +"ych" = ( +/obj/machinery/r_n_d/server/robotics, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/toxins/server) +"ycN" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/britcup, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel/white, +/area/medical/medbay2) +"ycV" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkblue" + }, +/area/bridge/vip) +"ycW" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"ydD" = ( +/obj/machinery/space_heater, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/security/processing) +"ydE" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/item/paper/monitorkey, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/coldcolony/ruin/syndie_outpost) +"ydR" = ( +/obj/structure/sign/greencross, +/turf/simulated/wall, +/area/medical/sleeper) +"ydV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) +"ydZ" = ( +/obj/random/plushie, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"yer" = ( +/turf/simulated/wall/shuttle/nosmooth{ + dir = 9; + icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi'; + icon_state = "gray_walls_corners" + }, +/area/shuttle/pirate_corvette) +"yes" = ( +/obj/structure/table/wood, +/obj/structure/sign/poster/official/vodka{ + pixel_x = 32 + }, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"yeG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/north, +/obj/machinery/disposal, +/obj/effect/landmark/tiles/burnturf, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/engine, +/area/medical/chemistry) +"yeU" = ( +/obj/machinery/porta_turret{ + dir = 8 + }, +/turf/simulated/floor/bluegrid, +/area/turret_protected/ai_upload) +"yfF" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/security/hos) +"yfH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel/white, +/area/medical/chemistry) +"ygl" = ( +/turf/simulated/wall/r_wall/rust, +/area/storage/secure) +"ygt" = ( +/obj/effect/decal/ants, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_banya) +"ygz" = ( +/turf/simulated/wall/rust, +/area/coldcolony/ruin/sm_maintenance) +"ygI" = ( +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/cabin1) +"ygL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/soap/syndie, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/security/permabrig) +"yhh" = ( +/obj/structure/flora/grass/green, +/obj/effect/decal/snow/sand/edge, +/turf/simulated/floor/plating/asteroid/snow/planet, +/area/ruin/unpowered/coldcolony_outside) +"yhl" = ( +/obj/structure/chair/sofa/pew/right{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "chapel" + }, +/area/chapel/main) +"yhx" = ( +/obj/machinery/pipedispenser, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) +"yhy" = ( +/mob/living/simple_animal/hostile/pirate{ + loot = list(/obj/effect/mob_spawn/human/corpse/pirate) + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/shuttle/pirate_corvette) +"yhK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/intern, +/obj/structure/chair/comfy/teal{ + dir = 4 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"yie" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/securehallway) +"yii" = ( +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/locker/locker_toilet) +"yin" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/medical/research/shallway) +"yis" = ( +/obj/item/wrench, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/coldcolony/ruin/sm_division) +"yiE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/tastybread, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-cherry" + }, +/area/crew_quarters/trading) +"yiZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/prison/cell_block/A) +"yjl" = ( +/obj/structure/chair/sofa/pew/right{ + dir = 1 + }, +/turf/simulated/floor/carpet{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"yjo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/asteroid, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/crew_quarters/locker/locker_toilet) +"yjy" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/wood, +/area/security/detectives_office) +"yjK" = ( +/obj/structure/sign/poster/contraband/communist_state{ + pixel_y = 32 + }, +/turf/simulated/floor/wood/cherry{ + temperature = 180 + }, +/area/coldcolony/ruin/abandoned_house) +"ykg" = ( +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/turf/simulated/floor/wood, +/area/toxins/storage) +"ykj" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/civilian/barber) +"yku" = ( +/obj/structure/window/reinforced, +/turf/simulated/floor/carpet/arcade, +/area/crew_quarters/fitness) +"yky" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/ninja_teleport, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"ykW" = ( +/obj/machinery/light_construct{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/toxins/storage) +"ylh" = ( +/obj/structure/table/wood, +/obj/item/paicard, +/turf/simulated/floor/wood/fancy/cherry, +/area/library/game_zone) +"yli" = ( +/turf/simulated/wall, +/area/hallway/secondary/entry/commercial) +"ylm" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_x = 1; + pixel_y = 3 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 5; + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/customs) +"yln" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/security/reception) +"ylv" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/security/lobby) +"ylA" = ( +/obj/structure/chair, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/processing) + +(1,1,1) = {" +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(2,1,1) = {" +sAK +rkQ +ueB +ueB +ueB +ueB +sNd +ueB +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +mpR +mpR +mpR +mpR +mpR +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +rSb +rSb +rSb +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(3,1,1) = {" +sAK +clY +ueB +ueB +rZY +ueB +ueB +sNd +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +mpR +cEN +iBC +twb +mpR +vPw +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +sAK +sAK +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +sAK +sAK +sAK +sAK +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(4,1,1) = {" +sAK +eAE +ueB +ueB +ueB +ueB +sNd +ueB +sNd +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +mpR +mpR +mpR +cyX +puM +ibX +mpR +mpR +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +"} +(5,1,1) = {" +sAK +ueB +ueB +ueB +ueB +sNd +ueB +sNd +ueB +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +mpR +eSY +vUY +mAp +mAp +mAp +fYR +mpR +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +xOz +rSb +abG +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +"} +(6,1,1) = {" +sAK +ueB +ueB +ueB +ueB +ueB +sNd +ueB +sNd +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +hBQ +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +mpR +uiI +jcC +gDz +lAc +eTL +evA +mpR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +dkR +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +"} +(7,1,1) = {" +sAK +uQx +ueB +ueB +ueB +sNd +ueB +sNd +ueB +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +mpR +tCC +vHS +mAp +gfm +mAp +lAc +bkk +rSb +rSb +abG +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xcr +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +erA +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +abG +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +vPw +vPw +vPw +"} +(8,1,1) = {" +sAK +sAK +ueB +ueB +sNd +ueB +sNd +ueB +sNd +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +mpR +mpR +mpR +wxO +kXM +oHc +rMe +mpR +rMu +kTs +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +xOz +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +jXd +jTP +jDL +jXd +jXd +jXd +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +"} +(9,1,1) = {" +sAK +sAK +ueB +sNd +ueB +sNd +ueB +sNd +ueB +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +mpR +ogJ +mSE +mAp +eDR +mpR +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xcr +rSb +xOz +rSb +jXd +cMk +oCJ +stD +tuf +hNZ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +"} +(10,1,1) = {" +sAK +sAK +sNd +ueB +sNd +ueB +sNd +ueB +sNd +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +mpR +mpR +fPn +mpR +mpR +mpR +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +hNZ +wAd +oCJ +iyg +tuf +hNZ +hNZ +hNZ +jXd +vPw +vPw +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +aTd +rSb +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +vPw +"} +(11,1,1) = {" +sAK +sAK +sAK +ueB +ueB +sNd +ueB +sNd +ueB +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +hBQ +hBQ +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +mpR +ult +mTI +mpR +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +jXd +jXd +tuf +ddJ +oCJ +mGf +nWo +rtN +ulQ +jXd +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +"} +(12,1,1) = {" +sAK +sAK +sAK +iJD +sNd +ueB +sNd +ueB +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +mpR +rcS +pDp +mpR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +jXd +sMQ +oCJ +wAd +cFz +oCJ +nWo +fwn +omX +hNZ +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +xcr +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +"} +(13,1,1) = {" +sAK +sAK +sAK +oTY +ueB +sNd +ueB +sNd +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +vPw +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +xOz +rSb +rSb +rSb +rSb +rSb +aFh +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +mpR +lmB +pDp +mpR +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +mXd +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rtA +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +jXd +tuf +eXz +toL +oCJ +nWo +dJL +kwC +cyT +hNZ +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +vPw +"} +(14,1,1) = {" +sAK +sAK +sAK +sAK +ueB +ueB +sNd +ueB +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xdZ +rSb +rSb +abG +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +mpR +mpR +mpR +mpR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +jXd +kXN +wAd +wAd +oCJ +oli +gMv +kwC +rgF +jXd +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +"} +(15,1,1) = {" +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +jXd +gkl +kwC +kwC +kwC +cMk +dHq +hNZ +jXd +jXd +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +xOz +rSb +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rtA +rSb +hBQ +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +dkR +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +"} +(16,1,1) = {" +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +rSb +rSb +abG +xOz +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +aTd +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +jXd +hNZ +hNZ +jDL +jTP +jDL +jXd +hNZ +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +qBi +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +"} +(17,1,1) = {" +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +gBV +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xOz +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +xOz +rSb +rSb +rSb +aTd +rSb +rSb +vPw +"} +(18,1,1) = {" +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +abG +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +rSb +rSb +dkR +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +vPw +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +vlI +rSb +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +"} +(19,1,1) = {" +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +hBQ +rSb +rSb +abG +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +vPw +rSb +rSb +rSb +vPw +vPw +rSb +xOz +xOz +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xcr +rSb +xOz +rSb +ppy +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +"} +(20,1,1) = {" +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +vPw +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +lqC +tNe +wKj +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xcr +abG +rSb +rSb +rSb +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +xOz +rSb +dkR +abG +rSb +rSb +rSb +rSb +rSb +pqO +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +"} +(21,1,1) = {" +sAK +sAK +sAK +sAK +sAK +sAK +sAK +vPw +vPw +sAK +sAK +sAK +vPw +sAK +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +tNe +tNe +oBw +aIP +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +vPw +vPw +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +xcr +rSb +abG +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +ezi +ezi +ezi +ezi +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +vPw +vPw +vPw +"} +(22,1,1) = {" +sAK +sAK +sAK +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +baR +tNe +tNe +huM +tNe +tNe +tNe +tuS +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +bGU +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +ezi +ezi +sen +sXi +ezi +tZr +rSb +rSb +oMO +rSb +rSb +pqO +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +"} +(23,1,1) = {" +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +oON +tNe +tNe +aKh +aKh +aKh +aKh +aKh +vPw +vPw +vPw +vPw +vPw +vPw +hBQ +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +ezi +rvp +lNT +lNT +hjG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +"} +(24,1,1) = {" +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +aXY +tNe +tNe +siG +aKh +tNe +tNe +oBw +tNe +tGm +aKh +oDp +oDw +hyh +dUz +srJ +klD +vPw +vPw +vPw +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +bGU +rSb +rSb +rSb +rSb +rSb +xdZ +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +abG +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +abG +rSb +xcr +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +ezi +ezi +ezi +rvp +bYb +lNT +ezi +vPw +vPw +vPw +rSb +xOz +rSb +rSb +xcr +rSb +rtA +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +"} +(25,1,1) = {" +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +xOz +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +hDz +tNe +oBw +tNe +iBv +tNe +tNe +tNe +tNe +tGm +aKh +tNe +tNe +tNe +tNe +tNe +oBw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +ezi +ezi +ezi +ezi +ezi +xIj +wnQ +bYb +bYb +aeM +dWc +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +"} +(26,1,1) = {" +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +eXP +tNe +tNe +xzt +aKh +tNe +pfF +hKB +unG +aKh +aKh +tNe +tNe +tNe +tNe +tNe +tNe +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +ezi +fSn +ogd +djN +ezi +cmX +bYb +bYb +sXB +ctd +ezi +ezi +ezi +ezi +vPw +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +vPw +"} +(27,1,1) = {" +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +uXz +tNe +tNe +ann +aKh +huM +aKh +aKh +aKh +aKh +aKh +oBw +tNe +tNe +tNe +tNe +tNe +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +dkR +rSb +bGU +rSb +rSb +abG +rSb +rSb +rSb +abG +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +ezi +rHc +lAl +oQz +ezi +bNt +ogd +aLX +sXB +sXB +bYb +bYb +iKS +ezi +vPw +vPw +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +"} +(28,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +ske +ske +fcb +ske +aKh +aKh +tNe +oBw +tNe +hxV +aKh +tNe +tNe +kcz +tNe +tNe +huM +tNe +tNe +odd +vPw +vPw +omg +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rtA +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +ezi +wKI +kOh +mrj +cOZ +sTy +sTy +phA +bYb +sXB +sXB +bYb +uKg +ezi +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +"} +(29,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +tNe +tNe +tNe +tNe +huM +tNe +tNe +tNe +tNe +hxV +aKh +oBw +tNe +tNe +tNe +oBw +vPw +vPw +mcY +vPw +vPw +vPw +sSg +woD +lrh +sSg +igl +yce +rSb +iee +qQX +ufQ +aex +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +vPw +vPw +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +bGU +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +ezi +ezi +xtw +ixx +ezi +gqN +gmW +lnp +sXB +bYb +bYb +fjO +qfO +ezi +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +mXd +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +vPw +vPw +"} +(30,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +ske +ske +fCt +ske +aKh +aKh +aKh +aKh +aKh +aKh +aKh +tNe +tNe +tNe +tNe +tNe +vPw +vPw +vPw +vPw +vPw +vPw +qHg +vvG +sSg +sSg +sSg +rSb +sUd +awI +awI +eUC +rSb +rSb +fKQ +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +xcr +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +ezi +ezi +ezi +ezi +aMD +nNy +itk +ovS +rIu +lAl +bYb +ydE +ezi +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +qBi +rSb +rSb +rSb +xOz +rSb +rSb +rSb +vPw +vPw +vPw +vPw +"} +(31,1,1) = {" +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xdZ +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +aKh +aKh +aKh +aKh +aKh +aKh +xhI +aKh +qlZ +kbH +bXN +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +nqM +rSb +tTj +ajt +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +ezi +ezi +dWc +ezi +ezi +bYb +jJR +ezi +ezi +ezi +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +"} +(32,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +aKh +vlt +tNe +tNe +sMT +tNe +tNe +aKh +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vHn +vHn +vHn +bPX +fxp +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +bGU +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +wVa +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +ezi +roX +tvN +ezi +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +"} +(33,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vlt +tNe +tNe +tNe +tNe +tNe +oBw +blT +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +ezi +ezi +ezi +ezi +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +"} +(34,1,1) = {" +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +tNe +tNe +tNe +nhK +mEt +tNe +tNe +hQg +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +abG +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +abG +xOz +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +xOz +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(35,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +xOz +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vlt +tNe +tNe +tNe +tNe +tNe +bXQ +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +vPw +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +bGU +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(36,1,1) = {" +hBQ +rSb +rSb +xcr +rSb +rSb +lYH +rSb +xOz +rSb +xOz +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +tNe +oBw +tNe +tNe +tNe +ewM +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +abG +bGU +rSb +rSb +vPw +rSb +rSb +rSb +rSb +abG +rSb +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +xOz +xOz +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +hBQ +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(37,1,1) = {" +rSb +rSb +dkR +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +ewM +tNe +tNe +vlt +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +vPw +vPw +vPw +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +bGU +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +xOz +rSb +rSb +rSb +rSb +rSb +aTd +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(38,1,1) = {" +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +hBQ +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +hBQ +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +abG +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +abG +rSb +rSb +rSb +bGU +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +"} +(39,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +xcr +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +vPw +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +xOz +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +"} +(40,1,1) = {" +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +dde +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +xcr +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +xcr +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +hBQ +vPw +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +dkR +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +"} +(41,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wVa +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +"} +(42,1,1) = {" +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +bGU +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +hBQ +rSb +vPw +vPw +rSb +abG +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +mXd +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +"} +(43,1,1) = {" +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xOz +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +xcr +rSb +rSb +rSb +vPw +vPw +rSb +rSb +nUD +rSb +qBi +rSb +bGU +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +vPw +vPw +rSb +rSb +vPw +vPw +vPw +vPw +"} +(44,1,1) = {" +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +vPw +vPw +vPw +vPw +"} +(45,1,1) = {" +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +vPw +rSb +rSb +rSb +xcr +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +rSb +rSb +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(46,1,1) = {" +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +abG +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +abG +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(47,1,1) = {" +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +hBQ +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +xOz +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +vPw +vPw +rSb +rSb +rtA +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(48,1,1) = {" +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +xOz +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +hBQ +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +bGU +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(49,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +xOz +xOz +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +vPw +vPw +rSb +rSb +rSb +rSb +rSb +bGU +rSb +hBQ +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(50,1,1) = {" +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +abG +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +dkR +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +xOz +xOz +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(51,1,1) = {" +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +hBQ +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +bGU +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rtA +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(52,1,1) = {" +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +hBQ +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +dkR +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +wVa +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(53,1,1) = {" +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +bGU +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(54,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rtA +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xOz +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +dkR +rSb +rSb +bGU +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(55,1,1) = {" +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +"} +(56,1,1) = {" +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +dkR +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +bGU +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rtA +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +"} +(57,1,1) = {" +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +fKQ +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +rSb +rSb +abG +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +xOz +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +vPw +vPw +vPw +vPw +"} +(58,1,1) = {" +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +bGU +rSb +rSb +vPw +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +"} +(59,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rtA +rSb +rSb +rSb +abG +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +bGU +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +nUD +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +abG +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +hBQ +rSb +rSb +abG +rSb +dkR +rSb +rSb +vPw +cMU +fRI +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +"} +(60,1,1) = {" +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +bGU +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +tGa +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +"} +(61,1,1) = {" +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +abG +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +"} +(62,1,1) = {" +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +hBQ +rSb +hBQ +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +vPw +vPw +vPw +"} +(63,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rtA +rSb +rSb +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +bGU +rSb +rSb +rSb +rSb +abG +rSb +vPw +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +"} +(64,1,1) = {" +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xOz +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +vPw +vPw +vPw +vPw +vPw +"} +(65,1,1) = {" +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xOz +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +vPw +vPw +vPw +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +bGU +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +rSb +rSb +wVa +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +vPw +vPw +vPw +vPw +"} +(66,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +abG +rSb +xcr +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +abG +rSb +bGU +rSb +rSb +rSb +rSb +xcr +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +hBQ +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(67,1,1) = {" +xcr +rSb +rSb +rSb +xcr +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +tsm +rSb +rSb +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(68,1,1) = {" +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rtA +rSb +abG +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +hBQ +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +bGU +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(69,1,1) = {" +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +hBQ +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(70,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xOz +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rtA +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +abG +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +vPw +vPw +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(71,1,1) = {" +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +bGU +rSb +rSb +rSb +xOz +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(72,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +abG +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +dkR +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +"} +(73,1,1) = {" +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +xOz +rSb +rSb +rSb +rtA +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +qBi +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +xOz +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +"} +(74,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +xcr +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rtA +rSb +bGU +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +"} +(75,1,1) = {" +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +xOz +rSb +rSb +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +dkR +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rtA +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +"} +(76,1,1) = {" +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +abG +vPw +vPw +rSb +hBQ +rSb +rSb +rSb +abG +rSb +vPw +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +"} +(77,1,1) = {" +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +bGU +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +"} +(78,1,1) = {" +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xcr +rSb +rSb +rSb +bGU +rSb +rSb +abG +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +xcr +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(79,1,1) = {" +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xOz +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xOz +xOz +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +lHv +lHv +lHv +lHv +lHv +lHv +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +hRZ +rSb +rSb +rSb +xcr +rSb +rSb +"} +(80,1,1) = {" +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +xcr +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +lHv +jDE +kwb +vCF +fZz +lHv +lHv +rSb +rSb +rSb +hBQ +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +xOz +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(81,1,1) = {" +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +dkR +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +lHv +ayk +rAk +kwb +uYk +fhD +lHv +rSb +abG +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +qBi +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +xOz +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +"} +(82,1,1) = {" +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +vPw +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +bGU +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +lHv +dPg +lZI +kwb +kwb +kwb +kan +rSb +rSb +rSb +fKQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +"} +(83,1,1) = {" +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +sGS +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +qBi +rSb +xOz +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +hBQ +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +hBQ +abG +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +lHv +nlw +nlw +cxM +qEM +aer +lHv +rSb +rSb +xOz +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +"} +(84,1,1) = {" +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +sGS +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rtA +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +hBQ +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +lHv +lHv +lHv +uAA +kwb +mMJ +lHv +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +abG +rSb +rSb +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +xOz +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +"} +(85,1,1) = {" +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +awI +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +lHv +lHv +lHv +lHv +lHv +vPw +vPw +vPw +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(86,1,1) = {" +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +xOz +rSb +rSb +rSb +rSb +rSb +nUD +rSb +bGU +rSb +rSb +xOz +rSb +rSb +nUD +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +qBi +rSb +rSb +rSb +rSb +vPw +vPw +abG +rSb +rSb +rSb +xcr +xOz +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +"} +(87,1,1) = {" +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +klF +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +"} +(88,1,1) = {" +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +mXd +rSb +rSb +bGU +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +abG +dkR +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +"} +(89,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +xOz +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +abG +rSb +rSb +xcr +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(90,1,1) = {" +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xUM +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +vPw +vPw +vPw +rSb +rSb +rSb +rSb +abG +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +"} +(91,1,1) = {" +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +xOz +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +abG +rSb +rSb +rSb +xUM +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +aTd +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +wVa +rSb +rSb +rSb +"} +(92,1,1) = {" +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +xOz +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +hBQ +rSb +bGU +rSb +rSb +abG +rSb +rSb +rSb +xOz +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +xcr +rSb +rSb +rSb +rSb +"} +(93,1,1) = {" +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +pOc +rSb +rSb +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +bGU +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +xOz +hBQ +rSb +rSb +"} +(94,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +xOz +rSb +abG +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rtA +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +hBQ +rSb +abG +rSb +bGU +rSb +rSb +xcr +dkR +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +"} +(95,1,1) = {" +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +xOz +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +bGU +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xdZ +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +"} +(96,1,1) = {" +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +wMY +bGU +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +"} +(97,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +gAD +gAD +gAD +gAD +lNf +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +asH +bGU +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +"} +(98,1,1) = {" +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lNf +dlV +mrK +fZo +lNf +rSb +rSb +rSb +hBQ +rSb +rSb +xOz +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +vPw +vPw +vPw +vPw +rSb +abG +rSb +rSb +fSD +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(99,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +lNf +vdA +pKL +pKL +gAD +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +kXQ +kXQ +kXQ +kXQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +rSb +rSb +rSb +vTC +dlp +rSb +rSb +hBQ +vPw +vPw +vPw +vPw +vPw +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +"} +(100,1,1) = {" +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +lNf +gAD +gAD +gAD +gAD +fdJ +ooe +gAD +lNf +gAD +dmW +dmW +dmW +lNf +lNf +gAD +rSb +rSb +kXQ +kXQ +gwW +iad +kXQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +ePa +bGU +rSb +rSb +rSb +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +aTd +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +"} +(101,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +gAD +sad +tmN +fDp +gAD +mWR +pyZ +lNf +tuV +sfR +awz +wme +vzo +bIZ +tfZ +pyZ +pnR +pnR +kXQ +bke +hlA +mFZ +cvn +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +woD +kyF +bGU +rSb +abG +rSb +rSb +xOz +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(102,1,1) = {" +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +hBQ +rSb +hBQ +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +gAD +iDf +ezW +jWS +tXR +tfZ +kLV +aep +tfZ +boa +nBV +gro +iDD +jbp +dfa +pyZ +fbz +mPZ +kXQ +nSv +mFZ +scN +cvn +kXQ +kXQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +jpa +kyF +wED +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(103,1,1) = {" +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +gAD +vfV +ezW +kJn +vzo +pnH +ltV +gAD +eLn +oOU +xFx +tfZ +dqo +sGB +xgb +gAD +ssV +vWI +wkv +bGt +hlA +wCl +iJt +eoq +mpD +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +abG +rSb +rSb +igl +mec +mec +sGS +kyF +fSD +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +adm +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +"} +(104,1,1) = {" +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +rSb +rSb +gAD +fXN +ezW +eAi +vUh +hAq +uhI +kEh +lhq +tps +sNJ +pHg +cez +jjq +lJF +pCO +vWI +fuA +jwE +jWK +sxJ +jCt +mFZ +eFN +mpD +rSb +rSb +xcr +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +lyE +rSb +rSb +rSb +rSb +rSb +rSb +xcr +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +ceA +ceA +ceA +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +jpa +sGS +vTE +qQX +lrh +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +abG +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +qBi +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +"} +(105,1,1) = {" +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lNf +gZJ +tfZ +jYs +iNx +xKT +kmm +gqj +vzo +wme +wDM +vxK +pkD +uMk +lOs +pCO +vWI +aVT +wkv +fiW +gJk +rZm +mOT +fhb +kXQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +rSb +xcr +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +ceA +ceA +ceA +ceA +vPw +vPw +vPw +vPw +vPw +rSb +hBQ +rSb +rSb +jpa +sGS +lJS +gPO +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +ceA +ceA +ceA +ceA +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +"} +(106,1,1) = {" +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lNf +cFw +ezW +nVn +inG +faQ +ezW +fDf +dfa +dyz +aHq +oOU +gTN +cIi +sZF +gAD +ssV +kkr +kXQ +qPJ +nSK +wuL +eKQ +eBA +kXQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +xcr +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +vPw +vPw +vPw +vPw +vPw +ceA +ceA +ceA +ceA +vPw +vPw +vPw +rSb +rSb +rSb +rSb +wpG +kyF +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +ceA +ceA +ceA +ceA +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +"} +(107,1,1) = {" +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +lNf +gAD +uTr +wXx +vHI +vHI +vHI +bBO +jlH +jlH +gEj +kNA +pQC +bHR +kFf +kjH +eEN +tzP +lkO +lkO +lkO +lkO +lkO +sjv +lkO +lkO +lkO +oBd +oBd +lkO +lkO +sjv +jAB +lkO +lkO +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +gsG +gsG +gsG +gsG +gsG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +hBQ +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +ePa +rSb +abG +vPw +vPw +vPw +vPw +vPw +ceA +ceA +ceA +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +xcr +rSb +rSb +rSb +abG +rSb +xcr +rSb +hBQ +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +"} +(108,1,1) = {" +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +gAD +gAD +gAD +qLN +bAk +uom +gAD +lkR +fzL +mCy +fWz +nFm +mHb +mvH +xWB +ssV +vsj +lkO +eQr +czc +xvW +eWK +hjO +ybP +wtK +atw +lFd +fiE +arl +lkO +hdX +wJd +sHt +lkO +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +gsG +gNP +iGr +flW +gsG +rSb +abG +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +gZj +gZj +dTR +hzG +dnF +dnF +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +xOz +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +"} +(109,1,1) = {" +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +gAD +lNf +gAD +lNf +gAD +pyZ +gAD +gAD +fWz +tkO +awz +fIJ +gAD +ssV +oWk +kWr +sre +dAz +dzm +mWo +cYI +cYI +sYK +cYI +czc +fiE +rci +fSA +fiE +fiE +jhx +lkO +lkO +lkO +sjv +sjv +oBd +oBd +lkO +lkO +lkO +lkO +lkO +dlQ +iGr +sJf +gsG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vXa +vPw +vPw +vPw +gZj +dnF +xvr +joB +tYQ +nQg +dnF +gZj +vPw +vPw +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(110,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +lHv +lHv +lHv +lHv +lHv +xcr +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +abG +rSb +rSb +gAD +mJr +jip +avS +cWF +gAD +pbo +pvu +lkO +fiE +bQa +vwx +vwx +cof +vwx +vwx +exZ +oev +occ +rDW +ccI +fri +czc +fiE +nGb +czc +czc +iMl +uYP +fiE +xtI +xuz +czc +pax +fVH +lkO +gsG +mXL +wUJ +wUJ +gsG +gsG +gsG +rSb +rSb +xcr +rSb +rSb +rSb +xcr +abG +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +vPw +gZj +dDT +ttw +cBm +agz +mgq +uTG +tNF +vPw +vPw +vPw +vPw +vPw +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +xOz +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xOz +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +"} +(111,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lHv +ksv +khv +bZv +lHv +lHv +hBQ +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +hBQ +rSb +gAD +lNf +lNf +gAD +gAD +gAD +sdi +uCv +vwx +xQZ +vwx +vwx +nLR +uBU +sql +cof +cof +vwx +vwx +vwx +vwx +juU +juU +vwx +lkO +rCi +wcm +fiE +fiE +czc +fri +czc +auh +czc +fiE +nGb +iGr +hbJ +ydV +iGr +bsM +geA +gsG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +gZj +sWq +agz +etP +reR +agz +ril +tNF +vPw +vPw +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +hBQ +rSb +"} +(112,1,1) = {" +xcr +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lHv +hNR +sCU +sCU +sCU +lKl +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +xOz +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +nUD +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +gHf +dlE +vWI +uol +vwx +nHW +rMP +cUy +rMP +rMP +rMP +kXp +olS +pLi +vwx +pDU +emC +tAM +jNr +tCS +lkO +fiE +fiE +hjO +rBM +gga +hyw +nxo +oSI +qPx +nxo +nxo +qXo +caI +iGr +iGr +iGr +iGr +wUJ +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +vPw +vPw +gZj +otV +cBm +mJY +eSG +agz +ril +tNF +vPw +vPw +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +abG +abG +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +"} +(113,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +lHv +hVv +hVv +maW +lHv +lHv +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cta +cta +cta +cta +cta +cta +rSb +rSb +qBi +rSb +hBQ +pnR +tWz +ftR +eIx +vwx +nHW +dLC +adq +mze +mNN +mNN +mze +fOv +nFl +vwx +qMt +hBE +rMP +nHW +nHW +uSf +fiE +luV +soZ +soZ +soZ +rOb +nxo +hFl +jMX +rsT +nxo +lqX +lqX +lqX +lqX +hbJ +qCC +gsG +gsG +qDu +qDu +qDu +gsG +gsG +qDu +qDu +qDu +gsG +gsG +gsG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xdZ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xGJ +rSb +rSb +vPw +gZj +pRk +cBm +jai +wlG +xZQ +lvj +gZj +vPw +vPw +abG +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +xcr +"} +(114,1,1) = {" +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lHv +uyc +lHv +lHv +lHv +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +cta +cta +jIM +fhv +sKH +mzf +cta +cta +jAA +jAA +nvD +nvD +nvD +nvD +mIT +pYd +juU +nHW +lYA +azV +azV +azV +azV +azV +mTC +tGK +vqf +lTx +xsq +rMP +dYR +iHo +iHo +lKY +lKY +soZ +hWg +jHW +uoq +nxo +woK +jMX +vfI +nxo +xQE +ixw +dhP +fzT +qCC +qCC +thJ +iGr +iGr +qCC +qCC +qCC +qCC +iGr +iGr +iGr +iGr +ddD +gsG +uMp +uMp +uMp +uMp +uMp +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xdZ +rSb +rSb +rSb +rSb +rSb +qSG +tNS +rSb +rSb +vPw +dnF +nTO +jei +cBm +etX +gLT +uNx +gZj +vPw +vPw +rSb +rSb +lyE +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +"} +(115,1,1) = {" +rSb +rSb +xcr +abG +rSb +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cta +euZ +veg +bBZ +qmp +dIr +cqq +cta +dVP +hqp +bpp +sUW +auC +jAA +vWI +owV +juU +nHW +jfA +hjA +pzR +hjA +hjA +hjA +hPY +kxq +vqf +aaV +dPb +nHW +ksd +iHo +xVs +hCg +ykj +soZ +lRh +sxI +qLJ +nxo +pGm +iVg +ivk +nxo +pDJ +dls +gEn +lqX +cZd +oDk +iGr +qCC +eEQ +xUf +vVu +gbr +geA +qCC +qCC +nDn +iGr +iGr +wUJ +bzn +hHI +aru +bzn +uMp +uMp +uMp +uMp +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +woD +kyF +rSb +rSb +rSb +dnF +odR +kAP +jei +ntn +agz +jAF +dnF +vPw +rSb +rSb +rSb +rSb +xcr +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +hBQ +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +"} +(116,1,1) = {" +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +cta +lOC +aWC +dFt +iyZ +pcU +kcN +pCB +oEz +sBE +sAR +nvD +vqc +raI +ssV +kfb +juU +rMP +jfA +hjA +jet +azV +kgt +hjA +bpu +pdj +vwx +mLo +dPb +rMP +jQM +iHo +bFl +tSm +hvj +soZ +vFf +cAf +oaD +tYs +jMX +hkI +jMX +gFE +jed +iLW +wbe +xrx +xrx +xrx +xrx +xrx +ybU +xrx +xrx +xrx +xrx +jpF +jpF +xrx +hbJ +alN +gsG +wTh +xSu +nQi +tBG +pSQ +gDN +lma +uMp +rSb +abG +xcr +rSb +rSb +rSb +rSb +lyE +rSb +rSb +rSb +rSb +rSb +rSb +rSb +jpa +kyF +abG +ybe +rSb +dnF +wFu +reR +lQv +mem +dBn +rdM +gZj +rSb +rSb +rSb +xcr +hBQ +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +"} +(117,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +xcr +rSb +rSb +cta +bjl +rSv +bBZ +egt +txq +eZJ +cta +sDl +nrq +soN +xTh +cvS +jAA +bPe +bwf +cof +bqb +lYA +azV +hjA +hjA +hjA +eNm +fNv +dzb +vwx +gnH +dPb +rMP +wUA +iHo +shP +twU +gIh +soZ +uSU +xsW +eVm +nxo +sCP +hkI +jMX +nxo +rNM +alC +ard +xrx +rdj +mzi +thA +mba +vcO +xge +xrx +dgw +pHU +efO +soV +xrx +weS +hfA +qrT +cSK +ves +cSK +gWv +thc +rCn +msd +uMp +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +jpa +kyF +rSb +nsy +nsy +nsy +vXx +abI +nsy +kDq +vXx +vXx +nsy +rSb +rSb +rSb +rSb +hBQ +rSb +hBQ +rSb +rSb +xcr +rSb +xOz +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +abG +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +"} +(118,1,1) = {" +xcr +abG +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cta +cta +sUl +iVI +bRA +hed +cta +cta +dXx +woc +iQD +vXs +lZK +nvD +bsQ +gex +cof +nHW +lYA +hjA +kgt +hjA +hjA +azV +tYV +ubp +vqf +aaV +xsq +nHW +hGa +iHo +vyu +sdB +dAd +soZ +keF +keF +jln +nxo +jUD +daf +jUD +nxo +thB +pip +pip +xrx +qjL +rjL +nXg +eXS +ons +khg +bau +uxT +uGW +idh +qVW +kOU +iGr +qnH +gsG +ied +bPY +paU +pHQ +lPv +ktw +sac +uMp +rSb +rSb +rSb +jcD +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xcr +rSb +rSb +rSb +jpa +kyF +lyE +nsy +hgI +pBE +kNU +cCL +vqs +kcE +cCL +mDk +abI +abG +rSb +xOz +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +"} +(119,1,1) = {" +rSb +rSb +hBQ +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +abG +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +cta +cta +cta +cta +cta +cta +myF +sDl +vpe +umq +sDl +iot +nvD +cVf +iJm +vwx +wgy +tix +azV +hjA +azV +hjA +azV +bpA +bPh +vqf +heJ +jmm +xqx +ivY +iHo +vEG +jcS +vEG +nxo +tEk +tEk +sYU +qPk +jMX +hkI +jMX +grE +arH +tEk +tEk +ybU +snz +mPQ +ibu +osA +jjX +jNo +xrx +lrr +oTf +hUo +uaO +xrx +bPH +wYj +gsG +cwk +vHy +nnb +oMR +rml +bsp +hjN +uMp +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +jpa +kyF +rSb +abI +bWa +gqE +uxX +ajw +pBE +jOO +fjs +dmn +abI +dkR +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +"} +(120,1,1) = {" +rSb +rSb +rSb +xcr +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +jAA +cES +sDl +fxl +sDl +sDl +oZh +nvD +fzp +rbC +vwx +nHW +bQx +sZH +wMb +wMb +wMb +wMb +lrv +vPC +uMr +mnC +iBh +hBq +oXZ +srs +nHW +hjM +oHE +oSI +rAA +rAA +sYU +fFo +jMX +hkI +jMX +cZz +sYU +dNo +jiF +ybU +nZw +nZw +nZw +mYR +nZw +kbA +xrx +xrx +vSY +xrx +xrx +xrx +gsG +qnH +gsG +gsG +gsG +gsG +gsG +wUJ +fwf +wUJ +gsG +gsG +gsG +rtA +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rtA +jpa +kyF +abG +nsy +oGV +vcz +vAg +aAC +gII +thh +auR +rqC +dTT +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xcr +rSb +rSb +rSb +lYH +rSb +xOz +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +"} +(121,1,1) = {" +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +hBQ +rSb +nvD +cES +nBf +qYK +rwK +kFh +lpk +nvD +fMt +fZh +juU +nHW +ttz +bqn +waZ +quW +rMP +rMP +nHW +puk +vwx +xju +dio +vai +rMP +nHW +eNm +qgZ +eyk +nxo +nCP +kHt +sYU +fFo +jMX +aVZ +sCP +cZz +sYU +paC +paC +jhP +spt +gHX +gHX +eBX +gHX +gHX +ogz +jOB +xpg +vCd +ien +vjV +oQX +wlB +rok +ehv +ehv +eVA +eVA +oEw +deb +iGr +iGr +fmY +gsG +gsG +gsG +kDj +kDj +kDj +kDj +rSb +rSb +rSb +rSb +rSb +rSb +rSb +jpa +kyF +rSb +nsy +chE +abI +qQW +nsy +ctF +aHl +kuQ +sHU +dTT +rSb +rtA +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +"} +(122,1,1) = {" +rSb +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +hBQ +rSb +abG +rSb +rSb +rSb +xOz +rSb +rSb +xcr +abG +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +nvD +nvD +kKm +nvD +jAA +nvD +nvD +vWI +oEW +juU +vwx +vwx +vwx +vwx +vwx +cof +uDV +fSL +nNd +vwx +hgQ +heB +fEH +dZM +arY +bOh +qgZ +sBm +uJI +rCp +nHj +sYU +cdN +xLn +ssz +mXY +fCR +sYU +bUl +tJa +jhP +gvY +aHU +nAt +chn +mxY +chn +mxY +raz +cML +qGs +eMS +smN +gsG +gkd +ebl +nDn +dMl +dTw +ads +fSH +iGr +pNP +qCC +iGr +dUv +hsp +gsG +jHq +xNy +wif +kDj +xcr +rSb +rSb +rSb +rSb +rSb +rSb +jpa +kyF +rSb +abI +dab +dab +seL +tdO +euC +cxZ +jTT +vPQ +nsy +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +"} +(123,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hbE +hbE +hbE +hbE +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +nvD +nvD +duM +dNk +voH +tUU +jAA +hsr +ssV +kat +wku +nxL +wjk +nQu +nxL +nxL +cof +vwx +vwx +vwx +vwx +oiJ +iCO +aRx +dlo +dfO +yku +hjM +qqw +kkP +tEk +tEk +vPb +tEk +cqT +diX +tEk +eQZ +sYU +aby +ajP +cod +hJE +eMS +apT +mXD +qkz +qkz +mXD +gWC +mXD +qkz +rLY +jhP +jhP +jhP +jhP +jhP +gsG +gsG +gsG +gsG +xVM +qCC +iGr +nDn +iGr +iGr +wUJ +wif +ryn +wif +kDj +kDj +kDj +kDj +kDj +rSb +xcr +rSb +jpa +kyF +rSb +khJ +khJ +khJ +khJ +khJ +ohJ +kaS +mAB +gRO +nsy +nsy +rSb +rSb +xOz +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +"} +(124,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +hbE +mcu +ifC +hbE +hbE +hbE +hbE +hbE +hbE +hbE +hbE +hbE +nvD +xVq +nBf +nBf +aTo +nBf +qMf +qSA +ssV +vCG +wku +hjo +hjo +hjo +hjo +hjo +naG +sWc +qfX +gMo +vwx +tBf +dHs +rDb +dlo +dlo +nzg +hjM +nHW +vRh +cqT +oAY +dmG +pjw +vIj +csq +pjw +vIj +sYU +eii +tEk +sqc +qGs +frD +hKl +lHT +nfr +faO +jfW +sMa +lHT +xwx +xzy +jhP +eKT +hbU +vVi +vVi +twC +rMF +kWD +kDj +kDj +eKR +qZY +kDj +kDj +kDj +eKR +wif +ryn +wif +eKR +pZh +bjt +iKX +kDj +rSb +rSb +rSb +jpa +kyF +hWE +khJ +veW +bWX +vWo +khJ +wtG +oSM +ajw +uRB +jAZ +nsy +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(125,1,1) = {" +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +fKQ +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +lyE +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hbE +dNf +dNf +ijf +reI +hbE +qLF +bSq +hzM +hbE +aFQ +bUP +nvD +rlY +sDl +sDl +aTo +dXa +nvD +dGc +ssV +bwf +wku +wEY +oQY +oQY +oQY +xqL +wfc +xqL +xqL +wEy +vwx +daP +heB +aRx +czj +czj +yku +qgZ +dav +kkP +ccX +cqT +sYU +pjw +vIj +csq +adx +vIj +sYU +eii +bdn +cod +pzw +qls +iql +mXD +pDT +pDT +mXD +gWC +mXD +pDT +mXD +nWM +vVi +kmf +dhb +hWV +twC +mCf +iUK +kDj +iwG +anl +fiU +esO +pMB +qEK +rAI +wif +ryn +wif +wif +enR +oib +mSC +kDj +rSb +rSb +rSb +jpa +kyF +rSb +sHA +wkV +gZb +wuY +nCO +eLh +aJc +eBd +ajw +jAS +nsy +rSb +rSb +rSb +rSb +abG +rSb +xOz +xOz +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +abG +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +lyE +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(126,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xOz +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +adr +ijf +flo +btO +kNl +hbE +vnn +kLN +kLN +xZg +sWC +dag +jAA +vlm +evC +iUR +bCF +ksU +nvD +nvD +iCH +npA +wku +dKh +oQY +oQY +oQY +xqL +nwL +fom +giq +iXu +vwx +eWR +heB +edV +iaS +obw +kGw +qgZ +oby +nxo +qrf +gWq +sYU +pjw +vIj +csq +pjw +vIj +vPb +cqT +jaE +jhP +ufD +xzy +ohR +mXD +qkz +qkz +vjY +ieA +mYs +qGs +eMS +uEu +vVi +qWA +lrX +bKd +twC +gFy +wrr +sam +cDQ +vUj +mbL +tFB +pLs +lhv +nCh +nCh +tEJ +nKe +xCP +jYi +oFn +hBh +kDj +rSb +rSb +rSb +jpa +kyF +hBQ +sHA +cwV +nIw +dZh +nCO +vow +mhn +nQO +nQO +tRh +nsy +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +pOc +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +"} +(127,1,1) = {" +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +hBQ +rSb +hbE +kCO +jiZ +iFn +vJa +hbE +flp +mBQ +pCu +hbE +sWC +scG +jAA +uJj +tXD +ryA +ftf +iUR +diw +nvD +tzE +opP +wku +bJi +oQY +oQY +oQY +xqL +kUj +cBD +tak +tbp +vwx +nlo +gOP +xzu +xdW +ioG +vKy +yad +xjX +nxo +vYv +tEk +sYU +sAo +gwz +lHs +rdl +icn +sYU +vQi +kHA +jhP +mKG +xzy +ohR +lHT +nkh +iQC +bNg +dOy +mXD +qkz +mXD +nWM +vVi +nLT +goc +pTc +twC +vJn +iUK +sam +aPY +vUj +ePY +exE +qts +qEK +wif +wif +iVU +wif +wif +dyp +tNu +bjt +kDj +rSb +rSb +rSb +jpa +kyF +rSb +khJ +khJ +nXx +khJ +sHA +nsy +rMo +vXx +vXx +abI +nsy +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +dkR +rSb +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(128,1,1) = {" +lYH +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +aTd +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +hbE +gVy +iYd +xMA +vQB +hbE +juo +sWC +mXp +hbE +rkU +dag +nvD +bXh +tfM +toB +otO +lMC +hbm +nvD +nqU +amv +wku +htH +oQY +oQY +jwn +xqL +xrE +prw +tGO +jnC +vwx +dHf +nHW +nHW +dUL +nHW +nHW +nHW +uBa +nxo +mai +seM +kSk +mis +taC +nlb +aLL +qpU +xVX +tEk +wMT +jhP +mKG +xzy +ohR +mXD +gmN +jmf +mXD +ieA +lHT +cTC +xzy +jhP +vVi +vVi +vVi +mkn +twC +kjg +iUK +kDj +rhz +uHx +mBo +uVn +qtN +kDj +rrm +rrm +vea +dgs +kDj +kDj +eKR +eKR +kDj +kDj +rSb +rSb +jpa +kyF +rSb +khJ +mPm +eFK +mIW +ppK +tvJ +dIR +fnN +nzY +sHA +vPw +rSb +xcr +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +"} +(129,1,1) = {" +rSb +hBQ +rSb +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +hbE +brQ +wFg +cmi +bFe +qHH +kLN +eJW +jhy +hbE +sKa +sWC +nvD +fKY +hSj +tBo +xWP +wkQ +wCe +nvD +fWQ +sZt +wku +dKh +oQY +oQY +oQY +xqL +wku +wku +bKK +wku +vwx +vwx +vqf +vqf +eZR +ukB +vqf +vqf +vwx +nxo +uJI +nxo +nxo +kkP +aio +nxo +vRh +kkP +nxo +oSI +oSI +jhP +jhP +cod +xat +cod +jrJ +jhP +cod +aVm +cod +jhP +jrJ +jhP +sbt +nWM +nWM +jhP +twC +siS +oTq +gYV +iTa +wEc +umT +eCC +mbG +kDj +qyb +fIS +jQf +vhN +vkJ +kfv +gav +nWk +uYd +kDj +xcr +rSb +jpa +kyF +rSb +pmH +hjp +eFK +bkF +qcc +xcb +dIR +fmR +mHp +khJ +vPw +vPw +rSb +eFj +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +lYH +rSb +xOz +rSb +xOz +rSb +rSb +rSb +"} +(130,1,1) = {" +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +hBQ +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +oRi +oRi +jLu +oRi +oRi +oRi +oRi +oRi +oRi +oRi +oRi +oRi +nvD +lIA +lMC +pTC +rnA +aUA +vvD +nvD +pbo +vzy +wku +pzy +oQY +oQY +oQY +qji +wku +mzF +iNa +rwq +bSU +xYj +vlE +kNZ +swN +jGP +kNZ +vlE +hBc +oVF +ioL +mHz +gqV +jJd +iUL +tcb +dpm +lRe +wVv +oVF +ace +pdv +sUa +wCr +roI +xjd +pbk +jfG +rve +bSZ +ssG +oVF +tih +mBD +tcb +lRe +oEl +wVv +pSc +wrr +ene +xNx +gtt +ruu +joX +joX +prz +kDj +xJK +wHR +eOV +gJT +kDj +xAq +nWk +nWk +gwJ +kDj +xOz +rSb +jpa +kyF +rSb +pmH +qpW +uaD +gYb +ouy +beh +eHn +fmR +oqB +khJ +vPw +vPw +vPw +rSb +rSb +xcr +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +"} +(131,1,1) = {" +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +abG +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +oRi +pqy +nDh +oGI +iUD +oGI +oGI +oGI +iUD +oGI +oGI +imf +nvD +nlH +xNX +eSn +kKH +dwv +crG +nvD +frM +npA +wku +hjo +hjo +hjo +hjo +hjo +wku +oJn +iNa +kuC +kuC +oiv +jGP +jGP +pqw +rtc +rtc +rtc +lDz +dpm +dpm +pOm +vTQ +vTQ +spJ +vTQ +vTQ +pTa +uvT +tIL +vTQ +kBZ +dpm +vTQ +fHK +dpm +dpm +dpm +pOm +jZt +xCi +hBe +vTQ +tIL +dpm +vTQ +vTQ +uFs +vEe +wrr +ene +kDj +kDj +kDj +bEO +wkY +kDj +kDj +xkw +kDj +kDj +kDj +kDj +cdw +uiR +pff +uYd +kDj +rSb +dkR +jpa +kyF +qSG +pmH +xVd +nDM +qID +vnl +xwA +fWO +rUu +uRz +khJ +vPw +vPw +vPw +rSb +rSb +xcr +xcr +rSb +rSb +xcr +abG +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +"} +(132,1,1) = {" +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +abG +rSb +oRi +oGI +bTh +oGI +oGI +lux +kML +oIk +kML +oIk +oGI +dhk +nvD +nlH +aLp +sOU +bSS +hMg +fYX +nvD +ssV +gex +wku +riZ +tmP +ryG +riZ +riZ +wku +tCQ +twg +qOg +heT +mEq +glm +glm +qyN +uDQ +ezV +uDQ +kFX +ezD +lFl +ojU +ojU +eRt +oeY +jkP +rmm +lKf +vuO +lfk +ezD +xYZ +uOK +jkP +xBA +jkP +jkP +ezD +jkP +geO +ezD +oUN +kDa +iSn +uXd +ezD +jkP +jkP +iBk +cGQ +xCB +bQv +vcF +gUM +nyp +evT +lEj +efC +nyp +qJv +eNN +xOz +kDj +kDj +kDj +kDj +kDj +kDj +rSb +rSb +jpa +kyF +tsb +khJ +dAG +vEi +lKH +ppK +bcV +iai +fnN +pDl +khJ +khJ +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +fKQ +rSb +rSb +rSb +rSb +rSb +rSb +nUD +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +"} +(133,1,1) = {" +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +oRi +sPc +ocl +xvQ +oGI +pvf +oPg +pvf +tcX +abd +oGI +pqy +nvD +nvD +nvD +nvD +kMC +nvD +nvD +nvD +cbH +qqD +wku +wku +wku +wku +wku +wku +wku +hXl +viz +hen +lVr +xYj +hii +kNZ +qFs +rtc +jxE +vlE +hBc +unn +iUL +ptz +rxa +urs +cKl +pmk +agy +xJu +adg +wnN +igz +iWu +xpN +gwv +isB +pmk +xpN +lMa +hIV +iEv +aCa +agy +cyU +gzU +mqZ +oJu +roH +isB +pSc +bSQ +iNr +lTw +lKq +oXV +oXV +ivA +oXV +nyp +nyp +bRI +eNN +rSb +rSb +rSb +rSb +xdZ +rSb +rSb +rSb +rSb +jpa +kyF +rSb +khJ +khJ +vpd +pmv +fnN +bfq +tyC +sva +rmo +qxk +khJ +vPw +vPw +vPw +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +xOz +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +"} +(134,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +dkR +hNB +gpv +maZ +epB +lIX +eja +eja +emF +iGA +qEu +oRk +nWe +hCZ +dEJ +krZ +mLA +isx +xzW +heT +ewI +aYp +mQZ +okR +fUW +ocL +dmu +fkB +wIm +bUR +heT +hMt +dLe +asj +xYj +whw +htl +htl +vgu +ssR +ujw +mWe +mWe +oIN +mWe +mWe +mWe +mWe +mWe +mWe +mWe +mWe +tLE +tLE +ouH +wJs +wJs +wJs +wJs +tLE +dLF +xvJ +kEJ +vsC +vsC +vsC +vsC +ctr +ptd +ptd +ptd +twC +kBE +fPt +lTw +lKq +moW +oAT +nyp +cRJ +nca +oXV +ail +bQv +bQv +bQv +bQv +eNN +eNN +bQv +bQv +rSb +rSb +jpa +kyF +nGa +vJY +beh +fnN +fnN +beh +qVy +oxk +fnN +mxh +jMq +khJ +vPw +vPw +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +pOc +rSb +"} +(135,1,1) = {" +rSb +rSb +xOz +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +xcr +rSb +xOz +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +rSb +rSb +abG +rSb +rSb +rSb +hNB +uUI +qBY +uMy +qqW +uZM +agA +qqW +rUn +uZM +reB +qqW +nSb +kuC +tlB +hen +rpq +vIL +cYh +xMW +jjM +ozh +tYw +ugn +iDk +hen +ozh +hen +mbt +tlB +iDk +kuC +uvI +xYj +ehZ +kNZ +sVx +chJ +jxE +xuO +mWe +ePQ +lij +hpo +bFi +mWe +fIQ +kEA +mWe +fIQ +fIQ +tLE +mQA +umr +umr +umr +haO +haO +dDM +tLE +nhQ +cBX +gkX +eOz +eOz +jkG +bZI +sci +nhQ +nhQ +twC +vJn +fPt +bQv +lfj +atE +oKT +hsd +nyp +gWJ +nyp +kbC +rZn +eOC +ksb +cCw +qIy +njH +hAN +bQv +rSb +xcr +jpa +sGS +tEj +vJY +beh +uOT +kGe +sfG +pZM +igj +oYl +beh +iZv +sHA +vPw +vPw +rSb +rSb +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +hRZ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +lYH +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +"} +(136,1,1) = {" +vHn +vHn +vHn +vHn +vHn +vHn +rfB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +oRi +vgv +psx +kSr +oGI +oIk +eOY +oIk +mdu +oIk +dST +pqy +qAK +iqz +iqz +agF +iqz +iqz +iqz +uae +kII +qid +qid +qid +eNF +qid +qid +dEz +dEz +dEz +fjY +dEz +dEz +xYj +afH +kNZ +bTn +pjB +mOr +nSt +mWe +omC +uVG +hfJ +yjo +oAr +yii +ocM +npI +ocM +cWH +tLE +njB +umr +bOF +nXh +mUF +kgB +qXe +swx +xjK +pHk +gvE +dWD +hTQ +gNz +bZI +laK +nfo +vmq +pSc +mzo +dFw +rIV +oge +jYH +pBo +xBK +tqk +clk +kbC +vJt +bQv +sSX +xPG +tJP +bON +qpv +hHN +bQv +vPw +rSb +jpa +kyF +rSb +khJ +khJ +sHA +sHA +khJ +sHA +khJ +chF +khJ +khJ +khJ +bjs +bjs +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +hBQ +rSb +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +dkR +rSb +abG +rSb +rSb +rSb +xcr +"} +(137,1,1) = {" +hBQ +rSb +rSb +rSb +xcr +rSb +tTj +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +oRi +oGI +rkz +hcc +hcc +pvf +yhl +pvf +yhl +abd +dST +jKQ +oRi +rSb +xOz +rSb +rSb +rSb +iqz +reY +hen +qid +bMN +ddr +izh +iMV +bBP +dEz +wXh +wiJ +emE +onS +bSx +xYj +gQV +kNZ +wOj +wec +xZS +lWz +mWe +erK +uVC +kGl +uyk +mWe +dRG +dRG +mWe +clQ +clQ +tLE +iTi +umr +wqn +xIA +xiD +ofa +muF +tLE +nhQ +hNY +ekY +udH +vKE +aoB +cUN +pGF +ina +bNY +twC +vEe +rUc +bQv +mpd +oXV +nyp +oXV +oXV +oXV +tXg +ruX +bQv +sdb +nTj +bTP +dgc +oUz +qjd +bQv +rSb +rSb +jpa +kyF +rSb +hlV +aQM +aQM +bLk +pCV +fPg +aQq +rHx +bYh +qKd +aQM +bVL +bjs +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +nvQ +nvQ +nvQ +nvQ +rSb +xcr +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +"} +(138,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +tTj +abG +rSb +abG +abG +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +oRi +pqy +dvQ +oGI +mvh +hcc +hcc +oGI +mvh +nEK +vfG +imf +oRi +rSb +rSb +abG +rSb +rSb +iqz +dCY +kuC +qid +uCg +ern +fFZ +jFM +rio +dEz +von +fcp +axl +fcp +mzR +xYj +fXI +kNZ +cvi +pBs +jxE +aBQ +mWe +baQ +pNr +mWe +mWe +sKI +sKI +sKI +sKI +sKI +sKI +tLE +sER +haO +wqn +cTM +cSi +uoP +ycd +tLE +ptd +ptd +ptd +ptd +ptd +gXA +jya +ant +jUt +xZt +twC +cQf +sEc +bQv +xOh +xOh +xOh +xOh +xOh +gls +bQv +bQv +bQv +bQv +bQv +bQv +bQv +bQv +bQv +bQv +rSb +rSb +jpa +kyF +rSb +hlV +aQM +puj +ujB +tIr +aQM +aQM +nki +iNp +iNp +pTo +bjs +bjs +bjs +bjs +bjs +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +nvQ +kSU +iXM +nvQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +"} +(139,1,1) = {" +rSb +xOz +rSb +rSb +rSb +rSb +tTj +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +oRi +oRi +oRi +oRi +oRi +hNB +hNB +hNB +oRi +oRi +oRi +oRi +oRi +rSb +rSb +dkR +rSb +iqz +iqz +jAu +kuC +qid +eQQ +ern +fFZ +jFM +kkd +dEz +awu +fcp +axl +wGY +bOM +xYj +gQV +kNZ +hsG +nRn +obl +vpW +mWe +baQ +hfJ +jMQ +qkt +sKI +mAs +sOz +oHa +eml +nwA +tLE +fSm +umr +dae +wss +tlh +hJd +gMP +cfo +ptd +hgv +qPn +mBG +ptd +gFn +sQs +hsl +dpW +bSb +twC +reG +jty +qiR +oFH +oFH +mqg +oFH +oFH +dol +bQv +vPw +vPw +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xOz +rSb +jpa +kyF +eaZ +bjs +aQM +puj +puj +uVV +iEI +nuB +wpq +aQM +iNp +iNp +gBK +aQM +aQM +eeO +hlV +abG +rSb +rSb +rSb +rSb +rSb +xcr +xcr +rSb +rSb +rSb +xcr +rSb +ntC +qhQ +qhQ +qhQ +nvQ +nvQ +nvQ +qhQ +qhQ +nvQ +nvQ +lmX +lZR +nvQ +rSb +rSb +rSb +rSb +abG +rSb +rSb +dkR +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +"} +(140,1,1) = {" +rSb +rSb +xcr +abG +rSb +rSb +tTj +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +fKQ +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +hBQ +iqz +cdD +rTB +eea +qid +iug +nGi +wRm +mUn +rBA +dEz +vqH +ndO +gJA +mwQ +nYZ +xYj +wDc +sVx +jQJ +qny +hmQ +xMz +mWe +baQ +nSQ +mWe +mWe +sKI +qXs +rgt +rpP +hnc +jpN +tLE +aCT +umr +wqn +ylh +bvX +xmr +umr +xqZ +ptd +teu +dCw +qpw +nfN +hsl +hsl +qBO +tHG +jif +pSc +wrr +cdA +vxh +oFH +oFH +oFH +eFf +oFH +gPL +bQv +vPw +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +jpa +kyF +rSb +bjs +bjs +bjs +bjs +bjs +gTl +aQM +wZR +gHD +oKW +aQM +puj +puj +puj +puj +bjs +rSb +dkR +rSb +rSb +xOz +abG +rSb +rSb +dkR +rSb +rSb +rSb +rSb +nvQ +eWP +csd +rHk +myS +csd +jRg +tPO +csd +wqS +nvQ +pfl +ihA +nvQ +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +rtA +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +"} +(141,1,1) = {" +rSb +rSb +rSb +rSb +xcr +rSb +tTj +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +iqz +xis +hen +kvg +qid +rsv +ern +ern +ern +tUH +dEz +xda +fcp +fcp +fcp +rht +xYj +gQV +sVx +fmA +qny +hmQ +txM +mWe +baQ +iuA +pPo +qIu +sKI +bWZ +ost +hbl +cjO +qWi +tLE +pNs +umr +wqn +dEs +ulb +xmr +umr +nXQ +ptd +mFl +qpw +lVR +ptd +tkc +qAD +gpe +adN +cwm +twC +ufB +cdA +shZ +tMZ +nFp +oFH +shZ +tMZ +koo +bQv +rSb +xcr +woD +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +sGS +kyF +rtA +bjs +puj +ujB +bLk +pCV +fPg +puj +njS +iAk +iAk +iAk +gBK +aQM +puj +puj +hlV +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +nvQ +eWP +nyy +bqN +myS +vJy +bqN +xTV +nyy +osp +wEC +xjN +pmQ +nvQ +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +nUD +rSb +rSb +rSb +rSb +rSb +rSb +nUD +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +fjp +fjp +fjp +fjp +fjp +rSb +rSb +xcr +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +"} +(142,1,1) = {" +rSb +rSb +rSb +abG +rSb +rSb +tTj +xcr +rSb +fKQ +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +nUD +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +iqz +bCX +hen +vor +qid +qEA +ern +xaB +ern +kjz +dEz +lRP +kOw +fcp +fcp +saz +xYj +xAe +sVx +oDH +kyR +hmQ +xmm +mWe +mWe +mWe +mWe +cpJ +sKI +sKI +sKI +sKI +rsy +ezT +tLE +dLF +kOf +wJs +wJs +wJs +wJs +tLE +tLE +ptd +ptd +xvJ +ptd +ptd +ptd +ptd +ptd +ptd +ptd +twC +iUX +cdA +jxZ +oZm +baj +oFH +pmV +oZm +hUj +bQv +abG +rSb +jpa +sGS +awI +awI +awI +awI +awI +awI +awI +awI +gPO +rSb +bjs +puj +aQM +aQM +tIr +puj +nAy +nIN +waB +iuz +bsi +bjs +bjs +bjs +bjs +bjs +rSb +hBQ +rSb +rSb +xcr +xcr +rSb +abG +rSb +hBQ +rSb +rSb +rSb +nvQ +rRE +cik +jXj +gue +fyv +hMc +gue +fyv +rab +cnA +xFN +bMa +nvQ +nvQ +nvQ +nvQ +nvQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +fjp +fjp +oea +bEv +jvI +fjp +fjp +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(143,1,1) = {" +xOz +rSb +xcr +rSb +rSb +rSb +tTj +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +iqz +uvI +hen +eAn +qid +qfs +ygI +ygI +ygI +nSM +dEz +fyI +uSp +uSp +uSp +lcu +xYj +xlt +kNZ +viq +kNZ +jxE +mxn +xwe +hfG +toS +bTp +oGF +eZh +oGF +sdq +wGi +aNk +acM +oGF +hfG +sdu +hfG +oGF +oGF +bUu +twC +iIr +iIr +iJy +iIr +iIr +twC +eYu +mNa +rwj +wvl +jcb +twC +pLS +wja +tQU +odA +oIT +oFH +ena +sUZ +xCX +eNN +rSb +rSb +jpa +kyF +lQI +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +bjs +aQM +aQM +aQM +uVV +adQ +wVm +gjn +iea +lxT +puj +gBK +aQM +xww +puj +bjs +rtA +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +qhQ +ejr +vMb +oTm +oTm +sSr +pyB +wxM +kgv +xYw +glE +kIR +lWX +uRM +wit +cOt +mSx +nvQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +xOz +rSb +fjp +lYS +pig +pig +pig +uBh +fjp +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +"} +(144,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +tTj +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +iqz +cUQ +kuC +hen +qid +hyp +ygI +ygI +ygI +rio +dEz +mZz +uSp +uSp +uSp +rht +xYj +mki +kNZ +kNZ +sVx +fBs +eNu +hGT +esx +lEU +rJH +pmr +tis +rfc +fxv +mza +snJ +eAS +aNv +exQ +tqY +eAS +eAS +keL +keL +rvl +ohs +sQa +vRl +ohs +iaC +vqi +uJL +iUK +wLA +wrr +wrr +rxz +wrr +pmA +xHj +oFH +myC +mqg +mqg +oFH +uNj +eNN +rSb +rSb +jpa +kyF +rSb +xOz +rSb +rSb +rSb +whV +whV +whV +whV +whV +whV +bjs +bjs +otK +dKf +isb +otK +otK +kpJ +iea +aQM +aQM +puj +aQM +aQM +bjs +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +nvQ +nvQ +nvQ +nvQ +ajX +fUZ +pYz +bbj +wUD +kAm +sIW +vvg +wjX +tcg +rHq +lKo +lKo +kui +pYW +eCm +qhQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +fjp +ueG +pig +hSc +pig +xVN +fjp +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +"} +(145,1,1) = {" +rSb +rSb +xcr +rSb +rSb +abG +tTj +xcr +rSb +dkR +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +abG +abG +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +qrH +vHn +vHn +vHn +vHn +iqz +iqz +kuC +hen +qid +qEA +ygI +ygI +ygI +otF +dEz +lRP +uSp +uSp +uSp +jdV +xYj +uUK +ldL +rid +oZd +fNP +gSd +mzh +mzh +mzh +maT +maT +mzh +jaM +mzh +gRL +bnk +qWp +mzh +mzh +mzh +uGM +hfG +hfG +oGF +vEe +iUK +wrr +iUK +wrr +ujQ +wWr +vRQ +oti +iHD +iHD +xJS +qUH +uGf +tjT +hQD +qDM +rHE +oFH +oFH +oFH +pYu +bQv +rSb +abG +jpa +kyF +qSG +whV +whV +whV +whV +whV +qIj +jYA +pQk +xFJ +whV +aQM +oyl +otK +kwO +yin +qIn +otK +hds +pOw +aCr +gBK +nBD +puj +aQM +bjs +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +nvQ +tQz +qpz +wlM +xxa +rLG +mIC +tNa +aju +aju +uXY +lPE +mHs +xXS +kci +jKW +gFK +qyn +eCm +iFs +qhQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +fjp +vOu +qeA +uEc +pig +qbx +fjp +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +"} +(146,1,1) = {" +rSb +rSb +rSb +rSb +anp +anp +anp +anp +anp +anp +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +tTj +rSb +rSb +rSb +xOz +rSb +iqz +rpt +szW +qid +qid +wWq +bca +wWq +qid +dEz +dEz +avb +owR +hNH +dEz +xYj +xYj +xYj +xYj +lsi +lsi +xYj +mzh +rSb +rSb +rSb +xOz +rSb +rzd +mzh +mzh +cJB +mzh +mzh +rSb +mzh +mzh +maT +maT +mzh +twC +ukG +iDd +oad +iIr +iIr +twC +twC +pbc +fZq +twC +twC +twC +avt +eYo +oLL +oFH +ujt +oFH +rQp +tMZ +fVO +bQv +rSb +rSb +jpa +kyF +rSb +whV +nTS +kLR +oXQ +qRC +vTe +kOX +jXq +fFP +whV +whV +whV +whV +whV +yin +eix +tgZ +tgZ +tgZ +wZS +wZS +wZS +wZS +wZS +wZS +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +nvQ +fWX +srP +jXN +jcH +rLG +cWP +aju +ggK +qjZ +xvE +qRW +aKM +odg +tOm +bPf +kpt +tOm +ozb +mwZ +qhQ +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xaA +rSb +euO +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +rSb +rSb +xcr +rSb +fjp +kXI +dor +nBL +nBL +wYH +wYH +wYH +wYH +wYH +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(147,1,1) = {" +xOz +woD +eDF +rSb +anp +fCE +fCE +fCE +fCE +anp +rSb +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +dkR +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +woD +qQX +eDF +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +tTj +rSb +abG +rSb +rSb +rSb +xcr +jpa +kyF +lQI +qid +qid +qid +qid +qid +wIN +xdR +xdR +xdR +dEz +dEz +rSb +rSb +rSb +rSb +xOz +jgc +rSb +rSb +rSb +xcr +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +kUO +rSb +rSb +rSb +rSb +rSb +rSb +twC +ehs +miG +twC +twC +twC +twC +aDY +qMl +wrr +rMc +azl +twC +mAt +oFH +shZ +tMZ +koo +oFH +jxZ +oZm +adI +bQv +rSb +hBQ +jpa +kyF +rSb +whV +dhp +pgK +amx +nJM +uoj +kOX +bUH +koV +lwb +twE +udf +rOz +whV +nAN +mrT +kWx +dWK +frV +wZS +cAV +qeI +ykW +qur +wZS +wZS +rSb +rSb +rSb +rSb +rSb +abG +rSb +rtA +rSb +nvQ +nvQ +nvQ +nvQ +rhW +toa +vMh +xFN +iHF +kUM +ubU +xCK +qzN +uLL +xCK +gBq +fXu +xCK +uAq +cLG +nvQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wkS +rup +uWW +gEy +rup +uWW +cFE +uQz +wYH +wYH +wYH +wYH +wYH +wYH +wYH +wYH +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +"} +(148,1,1) = {" +mec +awI +awI +qQX +kyZ +fCE +fCE +fCE +fCE +kyZ +vOt +vOt +vOt +vOt +vOt +vOt +vOt +vOt +vOt +vOt +vOt +vOt +vOt +vOt +vOt +vOt +awI +lbI +awI +mec +mec +mec +mec +mec +mec +mec +mec +mec +mec +mec +qQX +dRm +rSb +rSb +qBi +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +nEe +qQX +mec +mec +mec +mec +mec +mec +mec +mec +mec +qQX +eDF +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +tTj +rSb +rSb +hBQ +rSb +rSb +rSb +jpa +kyF +rSb +jgc +hBQ +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +jgc +rSb +rSb +xcr +rSb +rSb +rSb +lQI +rSb +abG +rSb +rSb +rSb +rSb +rSb +abG +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +jpa +kyF +lQI +aPj +rSb +twC +jYJ +wrr +wrr +cRS +opO +twC +sdV +oFH +jxZ +oZm +tqd +oFH +ena +odA +ohL +bQv +uCp +vHn +vcl +pAk +vHn +whV +iZX +jpe +cym +whV +kRC +xOo +htx +dRu +jws +izV +hmS +vJb +whV +twL +hgZ +mNL +bqk +qmX +wZS +bvg +ykg +rZI +bvg +ukT +wZS +wZS +rSb +xcr +abG +dkR +rSb +rSb +rSb +rSb +nvQ +pga +kiI +bQG +dXN +fBN +taH +aju +xnv +nmw +dXJ +iat +gNM +rlG +ihJ +rlG +gNM +mzv +puF +lXf +nvQ +klG +nzZ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +kZZ +rSb +rSb +abG +rSb +xtt +rSb +rSb +rSb +hBQ +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +wYH +ifW +xIo +uWW +uWW +uWW +kpb +uOX +gGk +qwC +qwC +qwC +hrM +eRr +uab +wYH +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +wVa +rSb +rSb +rSb +"} +(149,1,1) = {" +rSb +rSb +xcr +jpa +anp +anp +bFd +xSa +anp +anp +jPR +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +wpG +awI +mec +mec +mec +mec +mec +mec +mec +mec +mec +mec +vOt +vOt +vOt +vOt +awI +gPO +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +wpG +awI +mec +mec +mec +mec +mec +mec +mec +qQX +qQX +qQX +mec +wnh +mec +mec +fAJ +rSb +rSb +abG +jpa +kyF +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +hBQ +rSb +rSb +woD +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +eNo +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +sGS +kyF +rSb +rSb +rSb +twC +qXu +eCc +wrr +kMa +sJh +twC +oqX +oVy +ena +odA +oIT +oFH +mqg +xXw +pHW +bQv +rSb +rtA +jpa +kyF +rSb +whV +uaS +bXX +lSQ +jdE +swk +abg +gMb +xHg +uKU +rhC +biM +jQP +whV +hwL +hgZ +mNL +kXn +brv +bvg +hNq +cnz +hlf +hNq +hNq +lKn +wZS +rSb +rSb +rSb +rSb +rSb +nUD +rSb +rSb +nvQ +blS +vXE +aZN +jJY +fUZ +xjN +mea +iHF +vRs +hQj +nOX +rlG +vsm +iOv +qzV +rlG +aoE +fEy +mnQ +nvQ +nvQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dzU +rSb +rSb +rSb +rSb +hpl +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +wYH +wYH +wYH +uWW +uWW +cED +uWW +hxB +uWW +meB +wYH +iil +kKK +ksR +eqX +pkx +pkx +wYH +rSb +rSb +rSb +xOz +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +xcr +rSb +rSb +rSb +rSb +"} +(150,1,1) = {" +xcr +rSb +rSb +jpa +anp +dDd +wxy +ncA +xRm +anp +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +wpG +awI +gPO +rSb +tTj +xTg +rSb +fid +mec +mec +mec +awI +awI +mec +mec +qQX +fAJ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +woD +sGS +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +sGS +kyF +abG +rtA +rSb +mtY +tEb +iUK +wrr +hOp +twC +twC +bQv +fJD +rjt +xwp +gOF +gOF +djb +rXU +bQv +bQv +rSb +rSb +jpa +kyF +rSb +whV +rWa +vOp +nCe +qbc +mzZ +hCq +kOX +tCb +lFZ +tdj +qRH +ifo +whV +jDv +mrT +kWx +dtJ +sBl +wZS +uwu +vNP +hLn +vQh +uFx +ogK +wZS +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nvQ +nvQ +nvQ +nvQ +dwJ +iFi +xFN +xUh +nfz +kPK +fAS +eaU +gNM +bYP +lFJ +bKj +gNM +jHa +rqG +gFK +cPo +nvQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +xOz +rSb +xcr +glj +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wYH +uWW +mcw +leK +xIo +ett +lbV +fHH +ett +pfr +wYH +wYH +wYH +wYH +eFm +pkx +pkx +wYH +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +xOz +hBQ +rSb +rSb +"} +(151,1,1) = {" +xOz +hBQ +rSb +wpG +nZO +iST +iST +iST +iST +anp +rSb +dkR +xOz +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xOz +tTj +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rtA +rSb +rSb +wpG +awI +mec +mec +mec +mec +mec +mec +mec +mec +sGS +kyF +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +fgr +rSb +hBQ +rSb +rSb +rSb +rSb +lQI +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +jpa +kyF +rSb +rSb +rSb +twC +axN +fRV +gCs +axN +twC +xDP +bQv +bQv +eNN +lRs +lRs +lRs +bQv +bQv +bQv +rSb +rSb +rSb +jpa +kyF +rSb +whV +whV +whV +whV +whV +whV +whV +xiV +usf +eIE +wSc +vsV +jBj +whV +ohH +cEZ +tgZ +iBA +vTK +tgZ +tgZ +tgZ +pwt +pwt +pwt +pwt +pwt +pwt +pwt +abG +rSb +rSb +rSb +rSb +rSb +nvQ +kPE +tyX +bQG +kzp +fBN +lLn +mTV +oKt +dVZ +kdv +cZC +gNM +wUp +wUp +wUp +gNM +hcH +xIb +aTf +wKe +nvQ +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +jLk +rSb +rSb +rSb +aTg +rSb +rSb +rSb +glj +rSb +hBQ +gNA +pOs +bQi +bQi +qUp +lqy +jEt +uuZ +cJA +ett +aDV +isO +dsW +jfJ +wYH +mqp +hmq +tdw +wYH +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +"} +(152,1,1) = {" +rSb +rSb +rSb +rSb +anp +rCG +nXS +tYF +pIH +anp +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +lyE +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +tTj +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +lQI +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +jpa +kyF +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +jZj +dMg +dMg +dMg +cEU +dMg +dMg +rSb +xcr +jmL +hBQ +rSb +rSb +rSb +hBQ +xcr +rSb +cGV +kyF +rSb +hBQ +rSb +rSb +aPj +jpa +kyF +rSb +lQI +rSb +rSb +rSb +rSb +dkR +rSb +nUD +rSb +rSb +jgc +rSb +abG +rSb +jpa +kyF +abG +whV +aCv +qED +lNx +uCJ +qTy +iFv +gNN +sua +rTy +odE +jdw +ieo +whV +qil +xpI +kWx +bqk +dwt +xZs +eMx +hSB +pwt +uhH +iBA +iBA +iBA +iBA +pwt +rSb +rSb +rSb +xcr +abG +hBQ +nvQ +hzf +aMv +aZN +eVG +teC +sqp +jzT +ccO +vRu +vmN +wyf +wyf +wyf +wyf +wyf +wyf +wyf +aIL +aIL +mSn +aIL +hSD +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +fKQ +rSb +wYH +bsa +plB +uWW +iFL +ijK +vuv +plM +ett +aDV +irw +uWW +mMi +wYH +wYH +wYH +wYH +wYH +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +"} +(153,1,1) = {" +rSb +rSb +xcr +hBQ +anp +anp +anp +anp +anp +anp +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +lyE +rSb +tTj +rSb +rSb +rtA +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rtA +rSb +lQI +jpa +kyF +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dMg +eaf +eBZ +uvN +nRJ +uMv +dMg +cmF +cmF +eAW +cmF +cmF +cmF +eAW +cmF +abG +jcD +jpa +kyF +rSb +rSb +rSb +rSb +bIy +jpa +kyF +wHE +rSb +rSb +aPj +rSb +rSb +woD +eDF +rSb +rSb +hBQ +rSb +lQI +rSb +rSb +jpa +kyF +hWE +whV +vdL +mfh +nvO +bXX +iKm +whV +qum +ijN +uwr +whV +whV +whV +whV +lCS +uvb +kWx +hjr +hDy +qzd +qJo +bqk +ddT +iBA +iBA +iBA +tkU +iBA +pwt +rSb +rSb +rSb +rSb +rSb +rSb +nvQ +nvQ +nvQ +nvQ +uhx +ktN +qjZ +pdw +xFN +wef +gNM +wyf +eqg +rUV +qql +diM +diM +wyf +lnR +iRO +vVP +hwB +hSD +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +rtA +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xcr +rSb +hBQ +wYH +wYH +wYH +ojX +jMa +duK +ett +gpl +nOw +ogb +lFE +wYH +wYH +wYH +kQo +kpE +wYH +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +"} +(154,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +tTj +rtA +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wdY +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +tTj +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +jpa +kyF +lQI +rSb +xcr +rSb +rSb +rSb +xcr +cpt +xig +vSn +xig +pIC +mRg +mcR +ook +xyT +dvU +sVG +art +yeG +fgZ +cmF +rSb +pfA +jpa +sGS +qQX +qQX +qQX +qQX +qQX +sGS +sGS +qQX +qQX +qQX +qQX +qQX +qQX +sGS +sGS +qQX +qQX +qQX +qQX +eNo +qQX +qQX +sGS +kyF +rSb +whV +fsS +uMI +gRu +qbJ +wey +whV +whV +cEI +tgo +whV +fEB +kwO +mrT +olf +iei +tgZ +veC +sBl +gMw +mXo +bqk +pwt +iBA +eqb +uhH +uhH +iBA +pwt +rSb +xcr +xOz +rSb +rSb +rSb +rSb +rSb +rSb +nvQ +lEp +wyc +vqw +aQK +aju +sxx +kqc +wyf +aTl +ksQ +igi +blM +blM +wyf +aIL +wBe +dBI +ntJ +hSD +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +abG +rSb +rSb +rSb +rSb +rSb +rSb +wYH +uWW +uWW +uWW +uWW +rmJ +uWW +kki +uWW +wYH +hYy +uWW +wOY +tun +wYH +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +"} +(155,1,1) = {" +rSb +rSb +abG +rSb +rSb +rSb +tTj +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wdf +wdf +wdf +iGx +umR +umR +umR +umR +umR +umR +xLx +xLx +xLx +xLx +xLx +hWP +hWP +hWP +hWP +hWP +hiz +qkL +jhD +jhD +jhD +jhD +dsY +dsY +dsY +dsY +dsY +dsY +dsY +dsY +oEB +dsY +dsY +dsY +dsY +dsY +dsY +dsY +rSb +rSb +hBQ +jpa +kyF +rSb +rSb +xcr +rSb +dkR +rSb +rSb +cpt +tsa +nNa +hDV +aDF +lZX +gnA +evO +oXc +qXx +qXx +jXy +oNw +dEB +eAW +hBQ +rSb +wpG +awI +awI +awI +awI +awI +awI +awI +sGS +sGS +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +gPO +rSb +whV +mHt +oHA +tTu +rtH +mHr +whV +stA +hNu +qPW +whV +kbk +sDe +sDe +pvM +xhG +tgZ +mJJ +vST +vLH +hkf +sBl +pGn +iBA +iBA +uhH +uhH +iBA +pwt +vHn +vHn +dch +hZj +jJU +jJU +jJU +jJU +jJU +chR +qKQ +qoT +eNU +pdw +kMS +sxx +hLy +slU +xLb +aHg +igi +caK +mcZ +fVo +aIL +kUt +yky +dbv +hSD +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +mMt +uWW +hxB +uWW +cED +uWW +uWW +xIo +uWW +wYH +wOY +wOY +wOY +uWW +wYH +wYH +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(156,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +tTj +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +wdf +fOs +lMx +fjE +umR +deO +rbp +eMP +ltJ +hVu +xLx +aic +gxi +gbh +sJD +ahq +fTn +qvh +qvh +fTn +ahq +wgS +xzV +lTh +xzV +thC +dsY +lRd +fAP +lNq +mfd +bUX +mlV +ekH +vbN +uHy +qnN +mlN +uIq +xrP +hGG +dsY +rSb +xcr +rSb +jpa +kyF +rSb +rSb +abG +rSb +lyE +rSb +rSb +cpt +vSn +mVL +pYS +cbn +xZf +mcR +ybb +meY +enJ +rhO +lIk +qxs +pEQ +cmF +rSb +xcr +lQI +rSb +rSb +rSb +rSb +xcr +rSb +rSb +jpa +kyF +rSb +rtA +rSb +xcr +abG +rSb +qSG +jmL +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +whV +whV +whV +whV +whV +whV +whV +mIv +ofw +kEs +whV +csM +mrT +tgZ +kWx +kWx +tgZ +bTc +ocu +qUC +xLe +cPN +pGn +iBA +iBA +iBA +uhH +tkU +pwt +rSb +rSb +xGJ +rSb +oIs +nFM +taP +taP +taP +chR +qXj +wFH +tou +nHO +xur +vyj +mIG +awU +jTA +pth +aDQ +xDg +viH +dLM +aIL +fcG +pYb +dZz +hSD +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +wYH +yjK +uWW +uWW +mcw +uWW +hxB +uWW +uWW +asr +wOY +xtW +wOY +wOY +kQo +wYH +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +"} +(157,1,1) = {" +rSb +rSb +xcr +rSb +rSb +xOz +tTj +abG +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +abG +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +pOc +rSb +rtA +rSb +wdf +avC +pFb +rpA +bug +vRU +qob +mMb +kDm +qzC +xLx +tJs +hxk +gxi +bCD +ahq +hvv +qvh +qvh +hvv +ahq +aML +tjm +ljo +tjm +qwo +dsY +uPA +qFY +tTq +mfd +hHU +yiZ +sFd +ozA +dsY +dPw +mDD +dsY +sJS +sZE +yaw +rSb +rSb +rSb +wpG +kyF +rSb +rtA +abG +rSb +rSb +xcr +rSb +dMg +sHc +fOP +pRs +wgl +xae +dMg +viw +pwQ +gjF +jXB +eDb +cmF +cmF +cmF +rSb +rSb +abG +rSb +xcr +rSb +sKt +rSb +rSb +rSb +jpa +kyF +rSb +bAg +vQg +vQg +vQg +vQg +iqm +iqm +rtA +trl +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +vPw +vPw +vPw +whV +lmr +vmB +ahH +whV +csM +cEZ +tgZ +qjQ +rIP +lFy +iBA +uhH +tlg +iBA +gKH +pGn +iBA +tkU +iBA +uhH +iBA +pwt +rSb +woD +kyF +hBQ +oIs +pUP +aMK +aMK +rwh +chR +pni +rod +kdK +nXq +gKz +wEi +ahr +vEw +saG +jSh +ouf +ryr +jon +mjU +aIL +cPP +vVP +sXm +mAf +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +dkR +rSb +rSb +wYH +rsL +sWG +dcJ +uWW +uWW +uWW +gNE +tgY +wYH +mYg +dqn +wOY +wOY +kpE +wYH +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +"} +(158,1,1) = {" +rSb +rSb +abG +rSb +abG +rSb +tTj +rSb +rSb +rSb +rSb +rSb +rSb +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +wdf +ajS +xvN +nnY +qap +klm +qTG +lHz +hoo +vTf +xLx +xoA +gxi +hxk +hxq +ahq +wbQ +qvh +xxh +tSJ +ahq +aML +tjm +oRy +tjm +qwo +dsY +jlb +jRh +ozA +nMI +pUM +clF +mRL +ozA +uHy +iOZ +kVL +uIq +jNK +dsL +dsY +rSb +rSb +abG +rSb +tNS +rSb +rSb +rSb +rSb +rtA +rSb +rSb +dMg +cEU +cEU +dMg +dMg +dMg +dMg +yfH +oQx +lFH +uYT +kpG +cmF +rSb +rSb +qSG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +qSG +rSb +jpa +kyF +rSb +vQg +eqe +jmv +gAz +cTA +gXt +vQg +rSb +kOy +kOy +kOy +kOy +lRM +rSb +rSb +rSb +rSb +hBQ +rSb +vPw +vPw +vPw +whV +xzw +oOB +uIn +whV +kyz +rzW +kyS +gwZ +gwZ +fqv +wVy +vrS +ioc +rDZ +pOb +pwt +iBA +uhH +iBA +iBA +iBA +pwt +xOz +jpa +gPO +rSb +oIs +nFM +qIo +qIo +aCc +azv +bOc +rLN +qjZ +izW +qjZ +ado +rDu +wyf +wTs +jVU +gff +xiz +hhO +ygl +aIL +qSD +trS +bld +mAf +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +wYH +aZE +yes +yjl +uWW +irw +pMp +wYH +wYH +wYH +wYH +wYH +wYH +wYH +wYH +eQj +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(159,1,1) = {" +hBQ +rSb +rSb +rSb +rSb +rSb +tTj +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +rSb +xOz +rSb +wdf +kRy +sFw +rpA +bug +dBE +gqo +pDt +ceo +pSO +xLx +hGD +mfY +gxi +heH +ahq +wuV +qvh +xxh +hvv +ahq +aML +tjm +oRy +tjm +qwo +dsY +ccD +lVS +eeA +oPG +dsY +pXB +arw +ozA +dsY +uHy +nUb +dsY +uHy +aJj +vkU +rSb +nUD +rSb +rSb +tNS +rSb +rSb +rSb +xcr +rSb +abG +rSb +acY +fhw +ecK +nPf +gEB +lwY +acY +kCh +kHL +eNv +nQD +tQF +eNv +eNv +eNv +eNv +xcr +eNv +eNv +eNv +eNv +eNv +ydR +abx +rSb +jpa +sGS +qQX +umQ +pZD +qcr +qEp +qcr +kFy +vQg +kOy +kOy +xfS +tTY +ucB +pES +pES +kOy +nUD +rSb +rSb +rSb +rSb +vPw +vPw +whV +bhu +gnj +qPW +whV +dGf +tBa +kWx +kWx +tgZ +tgZ +tgZ +tgZ +tgZ +tgZ +tgZ +pwt +pwt +pwt +pwt +pwt +pwt +pwt +rSb +hpq +rtA +rSb +jJU +rma +raT +gjr +bzD +chR +jmu +mLw +utl +gAd +vDT +lnI +cMH +ygl +bFX +jVU +uSg +qdh +qdh +ygl +uLt +izL +upi +pZa +hSD +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +rSb +rSb +rSb +rSb +wYH +wYH +wYH +wYH +mMt +mMt +wYH +wYH +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +"} +(160,1,1) = {" +abG +abG +rSb +qBi +rSb +rSb +tTj +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xcr +rSb +rSb +rSb +rSb +wdf +fLd +kvW +pNm +umR +umR +umR +umR +pkE +umR +xLx +gxU +eTa +eTa +mHZ +pzL +fTn +wct +xxh +fTn +ahq +jfT +wYh +dXZ +gKW +hij +dsY +qTI +mrp +gCR +lrw +bIR +lrw +pJb +bys +lAC +pLA +nDa +pwi +pwn +fJt +gWD +rSb +rSb +hBQ +hBQ +tNS +rSb +xcr +rSb +rSb +rSb +rSb +rSb +qYw +nHs +iMa +iMa +kaH +qMC +xoy +enp +gEt +eNv +ouk +mXn +iJA +lVM +pRS +eNv +oYW +eNv +ecA +gud +sFF +hEd +dPq +rSb +abG +jpa +sGS +awI +szA +hmr +qEp +sYN +qcr +rNf +vQg +dkk +dOF +baA +yai +nTI +kzm +bUT +kOy +kOy +kOy +otK +otK +duy +otK +otK +whV +jVh +nIv +tgo +whV +nJW +rmU +jzD +tYL +qiW +wPM +osH +aUd +koh +tTp +jfP +gFi +tTp +tTp +tTp +gFi +rSb +rSb +rSb +rSb +rSb +rSb +jJU +nSq +afR +rHb +xeA +chR +nWx +ivM +gOf +fKO +woe +ivy +roh +ygl +wyf +wyf +wyf +wyf +wyf +wyf +hSD +mSn +hSD +hSD +hSD +qCp +kEB +kEB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +hBQ +rSb +rtA +rSb +xcr +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +"} +(161,1,1) = {" +rSb +rSb +rSb +rSb +xcr +rSb +tTj +rSb +rSb +xcr +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wdf +bRw +kvW +jPZ +ols +wdf +qKl +ubf +rBP +xLx +rlM +vBo +gxi +dMP +lAO +ahq +hvv +qvh +qvh +kkh +ahq +crx +hUU +ljo +oRy +iif +dsY +mod +mrp +izm +dWv +wUy +wWe +iIy +rSF +vjK +ufv +oqD +lNo +wQK +dBX +iVd +rSb +rSb +lQI +woD +kyF +rSb +rSb +rSb +rSb +nUD +rSb +rSb +qYw +bbZ +xYn +pXq +mSN +tLD +mRo +pPh +eWj +nYM +knQ +goF +goF +wXp +aSS +inF +tPc +xiq +goF +aSS +aSS +aSS +wim +qQX +qQX +sGS +kyF +lQI +vQg +ees +fHz +tWX +fHz +tUs +bAg +eXZ +arT +klv +bpJ +klv +bmK +klv +fEV +xXs +kOy +grL +reV +mrT +xGd +vvU +otK +kwO +iZH +lCO +eOr +tOb +vwl +hgZ +kwO +bzL +gcC +kGd +kEX +fnk +tTp +tTp +gFi +tTp +lXk +uiO +gFi +rSb +xcr +rSb +nUD +rSb +rSb +jEu +fZP +rnY +wlf +ogo +jJU +bmf +xAE +cRv +cwW +nSC +neW +kxw +mEd +vyr +ndq +qwH +qjN +fmO +iPG +nhG +mDO +mwj +yhx +wcL +cHU +cla +qCp +rSb +rSb +iXR +iXR +iXR +jep +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +wVa +rSb +rSb +"} +(162,1,1) = {" +vHn +vHn +vHn +vHn +vHn +vHn +bPX +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +wYq +wYq +wYq +wYq +wYq +wYq +wYq +wYq +wYq +wdf +fLd +pZA +jrH +tlb +jIf +ruc +iae +hfq +xLx +dHn +ayF +okw +jcF +rDR +pzL +mGY +xxh +xxh +xxh +bfX +crx +ylm +oRt +neK +bSf +dsY +caU +gkx +dEn +xtO +dsY +cQv +dEZ +ozA +dsY +uHy +cHa +dsY +uHy +tUz +dsY +xcr +abG +rSb +jpa +kyF +rSb +xcr +abG +rSb +rSb +rSb +rSb +qYw +qmK +nHs +ewd +vLl +bcK +xoy +enp +vxW +eNv +ate +hFn +agn +eXu +rsz +rsz +bix +rsz +eXu +nYv +iiI +rsz +hZv +awI +awI +sGS +sGS +qQX +ujR +dUN +nLw +tGA +gNe +moG +gBM +sAv +ogc +dJU +qUT +oMF +jgx +bev +nRP +xCd +tAO +mrT +mrT +kwO +mrT +kwO +hkB +mrT +nKM +rjf +rjf +reH +rjf +aWv +ght +lhp +wPM +fOG +tTp +tTp +uiO +ckf +ccF +lXk +tTp +lXk +gFi +rSb +rSb +woD +eDF +rSb +xOz +jEu +jdX +afR +maU +qEF +mnu +rtM +gIq +gIq +niI +uPd +gIq +hVk +mEd +jFK +gyP +chp +hhs +tvU +jfp +ugH +eMu +uPc +qCV +bgo +rbH +tTi +qCp +qCp +qCp +iXR +cSm +uxJ +iXR +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +xcr +rSb +rSb +rSb +"} +(163,1,1) = {" +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +adm +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wYq +nac +daN +tco +rWU +kkD +oJD +vqy +oSv +rbI +aNs +kVr +voF +eGN +wdf +wdf +wdf +wdf +fVB +eyx +sny +qfl +vXD +seO +pzL +tSN +dnQ +ago +dos +wSJ +crx +ylm +oRy +kuV +dUj +dsY +loR +clF +iqh +nMI +bUX +lVS +bvi +dXz +uHy +oxj +ifk +uIq +bYr +duF +dsY +rSb +rSb +rSb +jpa +kyF +rSb +rSb +rSb +rSb +xcr +rSb +rtA +acY +mjz +bJR +gKw +nSc +siB +acY +tnY +blG +eNv +vNV +hFn +kCs +jVi +pRS +knQ +hFn +knQ +fEs +hFn +xSc +phb +dPq +jPR +rSb +rfq +sGS +awI +aRz +tNq +kWE +xtl +lCK +abq +btK +vuU +vuU +woJ +kOy +pUd +eRO +lJK +qBZ +xmT +kOy +vvU +tpG +kwO +fDe +ttY +otK +oUc +ody +mUd +pZm +pZm +qVA +eYi +hPx +hPx +wPM +sQM +sQM +lXk +lXk +tTp +ccF +tTp +ifG +lXk +gFi +rSb +xOz +jpa +gPO +dkR +rSb +jJU +pAf +tJF +sGT +wRR +xRg +ats +ckM +qFv +wxa +wFw +tWT +lAM +qQl +cIY +gKN +vzU +era +beA +pdZ +ter +mSk +vBF +kke +aSC +uxf +ufU +stt +gay +qGo +stt +gay +abZ +iXR +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xOz +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +xOz +hBQ +rSb +"} +(164,1,1) = {" +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +wYq +wRZ +rbF +dKv +xac +qLv +rmX +acm +kqU +ivi +rKv +rqU +tlb +ipC +jIf +ruc +mMe +hfq +xLx +dlU +umy +hxk +rOt +wMk +ahq +fTn +xxh +bQC +qvh +iBU +crx +ylm +lcc +nxH +spL +dsY +uPA +jms +ecf +uPA +hHU +qYk +uKl +ozA +dsY +gmu +mDD +dsY +gkB +jeR +yaw +rSb +rSb +xcr +jpa +kyF +abG +abG +rSb +rSb +rSb +rSb +abG +acY +acY +rrr +acY +acY +acY +acY +enp +rwG +eNv +itn +hUt +ybQ +eNv +eNv +rQz +hUt +wiH +jYF +ksm +gOL +eNv +ydR +lQI +rSb +jpa +kyF +ljy +bAg +kwE +nFw +ovO +rtY +gLP +iVQ +nOO +mBO +vBy +nBQ +nBQ +vdR +vdR +nBQ +uWr +nBQ +otK +otK +duy +otK +otK +hPx +hPx +hPx +hPx +hPx +hKa +hRS +nbD +uDL +hPx +aGO +tTp +lXk +lXk +mbr +tTp +mEm +lXk +tTp +tTp +gFi +rSb +rSb +ePa +rSb +rSb +rSb +jJU +cot +xOs +pjd +jGo +mnu +jkt +mYb +gBH +aud +xuN +tnH +edJ +mEd +uaT +jDU +jDc +pPv +hSV +sFe +kZb +bgo +bHs +imo +xTQ +vjZ +ofY +gXo +qCp +qCp +iXR +fNU +mDt +iXR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +fKQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(165,1,1) = {" +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +wYq +lsc +bDc +ahY +jCC +cSn +eXF +rNa +tUc +rbI +hPd +dwj +wlN +knb +wdf +qKl +ktH +rBP +xLx +jvT +wTo +hCS +gxi +xQt +ahq +hvv +dhQ +puu +bbD +ibQ +crx +qqC +wMt +brH +uBb +dsY +ohw +uPA +uPA +fAP +pUM +bYd +dEZ +ecf +uHy +aXh +iJP +uIq +xPi +xVC +dsY +rSb +rSb +rSb +jpa +kyF +rSb +rSb +vPw +rSb +abG +rSb +rSb +rXs +bCg +oBC +jAy +lfS +mSs +rXs +wdh +mrQ +eNv +eZa +sbp +vfn +tuh +tZn +wRE +hUt +ouk +ouk +hUt +xSc +dPq +abG +abG +rSb +jpa +kyF +fAN +hVA +hVA +pge +eOE +pge +hVA +hVA +hVA +uPI +dex +nBQ +sbz +aRH +nLS +dcP +kxX +nBQ +vPw +vPw +hBQ +rSb +rSb +hPx +mlU +mAb +fqO +jsr +eSv +pws +vhG +ucT +hPx +tTp +lXk +jjz +tTp +tTp +osI +gFi +lXk +tTp +tTp +gFi +xcr +rSb +wpG +eDF +rSb +rSb +jJU +wiE +hBz +mRj +vkd +jJU +naB +qbi +cAB +fut +bwR +tnH +bSB +iFT +iFT +iFT +iFT +iFT +iFT +iFT +cKM +rbH +bgo +lkm +eHz +bgo +cxs +qCp +rSb +rSb +iXR +iXR +iXR +jep +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +"} +(166,1,1) = {" +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +wYq +lLL +dOm +lLL +wYq +lLL +eMs +lLL +wYq +wdf +wdf +ctP +wdf +wdf +wdf +wdf +wdf +wdf +xLx +fRa +rRR +fRa +fRa +fRa +ahq +ahq +ahq +qCm +ahq +ahq +crx +crx +fhp +veG +gPl +dsY +dsY +jKL +uIq +dsY +dsY +uHy +qhF +uIq +dsY +dsY +ncM +dsY +dsY +ncM +bWt +bWt +rSb +rSb +jpa +kyF +rSb +rSb +abG +rSb +rSb +rSb +rSb +cXo +tnP +dWP +jFy +cWi +sOI +nkk +pPh +pMP +eNv +okk +hFn +tuu +oFP +tZn +tXL +hUt +ouk +ouk +hFn +kCs +dPq +mUA +sKt +abG +jpa +kyF +bSi +hVA +tVC +oJg +xzd +oJg +iAh +hfY +hVA +gUv +kYD +nBQ +sWi +cZa +qkx +tTQ +gDu +nBQ +vPw +vPw +rSb +rSb +rtA +hPx +keV +eCY +mgv +vgq +hWX +wZu +itv +gYc +hPx +tTp +lXk +uRa +lXk +vhS +tTp +tTp +tTp +tTp +gFi +gFi +rSb +rSb +rSb +ePa +abG +dUH +kJj +kJj +kJj +kJj +kJj +kJj +olo +wcD +cYb +mML +lxw +eTR +cEE +iFT +rbO +bxV +gWN +grn +kYH +iFT +cdc +xPJ +nkd +jUh +qyg +qLu +tNQ +kEB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +rSb +xOz +rSb +rSb +xcr +rSb +rSb +rSb +"} +(167,1,1) = {" +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wYq +kUv +mcj +dcR +lLL +kUv +eXF +bfl +baI +sbN +upR +eAo +uDK +upR +hlC +gEx +mdc +gAn +fJy +aJo +lmw +uKp +wHS +tRQ +hAz +roT +dhh +cwt +tCf +fNY +cPW +mpX +roT +kkf +tCf +hAz +jKc +tgW +tCf +oLJ +ugy +tCf +mda +roT +dtg +jIE +awv +bcW +cuD +bZf +cAY +jKi +qQX +qQX +sGS +kyF +rSb +rSb +xcr +rtA +rSb +rSb +rSb +cXo +mTe +dWP +cPq +pXS +dWP +vJl +enp +eWj +oYW +stQ +hFn +wJX +wSQ +tZn +lCf +hFn +jJc +geo +jgG +bTX +eNv +eNv +rSb +qSG +jpa +kyF +xcr +hVA +tma +jvm +fmK +fmK +tci +cpv +xCJ +gUv +iLb +ljL +aEg +qJn +fqE +arQ +eds +nBQ +vPw +vPw +vPw +rSb +rSb +hPx +ciB +hkN +hiT +ciy +rpT +qJt +pws +adC +hPx +aaE +tTp +tTp +lXk +xMZ +eLz +gFi +gFi +gFi +gFi +rSb +abG +rSb +woD +kyF +rSb +xhd +hab +jmF +qtk +quT +ngR +bMW +oKE +gIq +roo +hoT +kXC +gIq +iFr +iFT +sNm +bZE +mQj +aAe +qmg +iFT +iFT +kEB +kEB +oeb +oeb +qCp +qCp +qCp +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +xOz +rSb +abG +rSb +"} +(168,1,1) = {" +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +fTE +fTE +fTE +wYq +myV +hHg +kSd +lLL +pTF +eXF +pxI +baI +jLK +wSO +scH +kxO +xOm +yie +jOy +tgU +kxO +dgi +kxO +big +arM +sSZ +iSI +sRk +sRk +sRk +vEz +lAY +lKp +sRk +sRk +sRk +lvI +pCF +wxN +lKp +guT +kxf +dvd +vHz +sGI +aBo +wZg +cjw +opu +ylv +xoR +gzc +nEv +wEN +ndE +awI +awI +sGS +kyF +rSb +rSb +rSb +rSb +rSb +abG +abG +cXo +rtV +dWP +iVF +nER +cSH +vJl +fQw +efJ +eNv +hPe +duV +dMx +eNv +rLW +hgE +hFn +ouk +uaE +gwb +lXt +lKh +oYW +pfA +sKt +jpa +kyF +rSb +kxD +whS +sVt +ubl +gFe +cLE +frj +hVA +gUv +fKy +nBQ +qrV +mXg +utC +hZC +psI +nBQ +nBQ +ljL +ljL +rSb +vPw +hPx +hPx +hPx +hPx +hPx +hPx +hPx +szr +hPx +hPx +wPM +wPM +wPM +wPM +wPM +wPM +wPM +rSb +rSb +xdZ +rSb +rSb +woD +sGS +sGS +qQX +rvQ +tnH +uPd +ouS +gIq +mYb +tvR +gIq +gIq +izD +tLB +sle +uPd +jBK +fsr +dRf +iUu +hlX +qEx +kYn +ktO +iFT +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +"} +(169,1,1) = {" +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +fTE +fTE +hzq +ouN +wYq +lLL +sfl +lLL +wYq +lLL +uxk +lLL +kzc +kzc +ujj +uFF +ujj +kzc +kzc +lqk +lqk +vpt +gLC +vpt +lqk +lqk +kLa +kLa +cqH +cqH +cqH +kLa +lzU +nMH +lzU +lzU +lzU +wKm +xwY +bTj +wKm +lzU +dKx +cJc +blj +nwO +lrK +rgO +blj +kZa +jfq +rKm +bWt +dFE +bWt +qZe +lQI +rSb +jpa +kyF +rSb +rSb +rSb +xcr +rSb +rSb +rSb +onX +gVq +mJi +vny +dWP +ijR +vJl +mnE +igP +eNv +cVt +heI +icZ +wQW +ndr +qAz +jyu +eTg +eXJ +mLI +lYo +oYz +eNv +rSb +rSb +jpa +kyF +rSb +kxD +jZN +fmK +dUA +oyd +jBz +naq +hVA +uoQ +wwn +nBQ +nBQ +opQ +pyL +vOX +aBS +mnJ +oQb +ruj +nBQ +rSb +vPw +vPw +vPw +vPw +rSb +abG +ksO +qwv +rSb +rSb +xOz +rSb +xcr +xcr +rSb +rSb +ksO +rSb +rSb +rSb +rSb +rSb +woD +sGS +awI +awI +awI +jVM +tnH +gIq +ebn +tvf +icK +rNR +wvq +jVR +wVM +hCQ +bdm +ihH +ihH +tZR +wln +xhl +ewL +aLE +kYn +bli +iFT +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +xcr +rSb +hBQ +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +"} +(170,1,1) = {" +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +fTE +xtJ +vTM +qVE +wYq +lxG +hHg +lJo +eCV +uYZ +eXF +rDQ +kzc +que +nex +rEW +eiD +iEY +kzc +ayU +pOe +srM +vxd +qfL +gvX +dNy +kLa +dQR +tui +jPO +rkf +gmo +lzU +oYi +fnG +hpJ +xkO +jER +eKU +wNS +wBt +lzU +ubR +kbY +blj +qxX +hpn +jcy +blj +fxX +fLZ +vaD +rfE +kzF +bWt +rSb +rSb +abG +jpa +kyF +rSb +rSb +rSb +abG +onX +onX +onX +hkt +mtC +tCy +hnZ +bhh +ugc +rXs +enp +xlC +eNv +oLH +sKL +mcA +dej +kIu +eNv +kqb +rls +rsz +bix +prs +aNT +eNv +rSb +abG +jpa +kyF +rSb +hVA +wfA +inp +pta +wUX +uxC +joF +gVO +aJM +uij +dJF +nBQ +iqN +qwT +vHX +qDG +vhf +ifc +klL +nBQ +rSb +vPw +vPw +vPw +rSb +rSb +rSb +xcr +xOz +rSb +lQI +rSb +dkR +rSb +rSb +xOz +rSb +xcr +abG +rSb +woD +qQX +qQX +sGS +kyF +rSb +rSb +lQI +kJj +iLS +qxH +kMe +ael +vst +bMW +tcS +gIq +dOi +hiW +czC +pre +uPW +fsr +kYn +aBm +rqX +sDU +feM +abH +reU +rSb +xcr +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +xcr +rSb +"} +(171,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +fTE +ooG +tRp +pNq +wYq +fVg +pZz +ifP +bCj +jyo +tuB +jvt +kzc +iSM +bHj +gwI +cfP +tik +lOJ +kGj +cIp +bHx +lPj +mgN +mgN +tRe +kLa +wSH +xiu +xiu +uIf +qkk +lzU +sfc +bmI +bmI +bmI +qbL +qbL +sJy +noW +wKm +hwR +whU +yln +gxQ +efL +asy +ase +ciM +lyd +koN +rGT +kLt +cFP +eDF +hBQ +rSb +jpa +kyF +rSb +dkR +rSb +rSb +onX +xKZ +lco +lJb +lqW +hkt +mtC +aSK +onX +mtC +cXl +xsY +eNv +oYW +eNv +oYW +eNv +eNv +oYW +hPu +buk +kBy +ouk +kua +kua +kua +kua +rSb +jpa +kyF +rSb +hVA +ihi +xzC +iam +vEt +rWf +mhf +hVA +kXE +aZb +vjp +nBQ +yam +fpi +syi +gCH +mqF +gmm +mal +nBQ +rSb +rSb +vPw +rSb +abG +woD +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +eDF +rSb +woD +qQX +qQX +vOt +sGS +awI +awI +sGS +sGS +qQX +qQX +qQX +pnT +lfw +xjo +xjo +xjo +jAh +xhd +rQn +wQp +gIq +pCm +gIq +gIq +iKR +iFT +knp +raE +dmE +pcG +aQE +iFT +wAB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(172,1,1) = {" +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +fTE +iUj +qVE +fFf +etN +jPF +gWt +kll +fWZ +eRF +cRD +keK +kzc +oLi +wbz +loD +eEO +vmW +lOJ +kGj +rLb +rLb +bgs +jgu +rLb +wcW +vFN +sxa +oGo +oBi +tey +dEk +hDh +qmx +qbL +fPp +hmb +vSS +nEn +pRx +cdr +wKm +hwR +kmi +hHi +bTS +fsU +rAC +hhk +mFN +xTS +gur +rGT +aWe +mhX +awI +mec +mec +sGS +kyF +rSb +rSb +rSb +rSb +iFc +auF +aeR +eSF +qfR +qjz +oyj +qyj +kVg +onc +fQw +cWx +dpT +bKE +rpW +bob +ocm +nlX +qGR +jtd +wMC +kua +sGh +kua +pNn +jlV +kua +rSb +jpa +kyF +tha +hVA +hVA +hVA +hVA +hVA +hVA +hVA +hVA +nkH +mYi +wEI +nBQ +nBQ +ovH +ovH +ovH +ovH +ovH +ovH +ovH +rSb +rSb +xcr +rSb +woD +sGS +awI +awI +awI +awI +awI +awI +awI +awI +awI +vOt +awI +awI +gPO +rSb +kHB +rSb +rSb +jlR +awI +awI +awI +awI +bBm +gzX +xjo +xjo +jAh +vBa +xhd +vHa +jPj +uPd +ppQ +uan +cYM +anG +iFT +mnc +gkv +xVQ +oMW +iXb +iFT +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +"} +(173,1,1) = {" +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +fTE +bOi +qVE +vTM +wYq +cYT +oOd +mBh +hWc +mBh +ghN +lLL +kzc +bcX +azf +pKK +rar +ajr +lOJ +kGj +rLb +rLb +bgs +rLb +dZN +srq +kLa +nzN +kzi +qGp +pap +dns +rfa +rPM +wcB +jvP +fPd +iYR +kWZ +dQs +dEg +iKn +hEa +vKI +vkP +mZc +euR +fLz +cuI +pnP +hOD +rDl +jrw +jhR +wxh +rSb +rSb +rSb +jpa +kyF +vPw +rSb +rSb +xcr +onX +dTd +lpX +nOk +qvU +tSq +tga +ord +mTd +fiJ +tAL +ejt +rgB +rgB +tDu +pNV +pIZ +nGc +gCU +bor +szN +gAk +rgH +sWU +mYB +ohN +kua +hRZ +jpa +kyF +rSb +cTc +xMt +lBz +vlx +uWn +sIH +sQf +cTc +vKF +cTm +pKr +wkH +srW +jFa +iqq +nDs +guc +wKo +qOf +jFa +rSb +hBQ +rSb +woD +sGS +gPO +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +lQI +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +kJj +bbm +bbm +bhE +bbm +bbm +kJj +kJj +kJj +wXS +kJj +kJj +xhd +kJj +iFT +iFT +iFT +reU +reU +iFT +iFT +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +"} +(174,1,1) = {" +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +xOz +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +fTE +fTE +jUd +lQO +wYq +fEv +sgn +daH +bCc +iRN +xzK +jHM +kzc +bls +mQB +qpi +tic +sxv +eTx +eCZ +eoP +wul +kPI +vWW +eoP +cmw +kLa +oAD +txF +lyx +eaL +nxD +hDh +vBc +bmI +hOW +xER +nPM +ljE +bmI +gJW +lzU +mFm +tGh +blj +hrp +rXS +tTI +blj +haN +eTA +iJY +bXt +rFb +frE +rSb +abG +rSb +jpa +kyF +rSb +rSb +rSb +rSb +onX +oUg +pMf +kxs +tFw +vZz +hkZ +bCW +onl +onX +eTj +tbD +fcd +fcd +vhH +gDo +lvY +cUi +hCu +jnn +gXc +egU +rGp +tET +gBw +qde +kua +rSb +jpa +kyF +rSb +fBg +lnm +xIT +rAg +pRp +uVZ +xli +lfB +kXE +qnw +wST +vNm +goC +fUE +vAd +bxX +oxe +cMw +lwI +jFa +rSb +rSb +woD +sGS +gPO +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wVa +rSb +rSb +rSb +hRZ +rSb +rSb +tZp +kJj +xhd +kJj +kJj +xhd +kJj +qCk +xjo +xjo +jAh +xjo +cLT +xjo +xhd +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rtA +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +"} +(175,1,1) = {" +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +fTE +fTE +fTE +wYq +kbP +ecV +uTu +nMW +fKo +gmy +vnF +kzc +vWa +vVI +kzc +weT +weT +kzc +bKn +tJm +vwD +vGS +byq +tJm +dah +kLa +kLa +qZl +bNB +djf +sED +lzU +qjy +bmI +dfB +frx +fgt +gDE +bmI +mBt +wKm +hwR +xJc +blj +nwO +tQE +rgO +blj +ihk +qsn +aJz +mPb +xJj +uVF +rSb +rSb +rSb +jpa +kyF +xcr +rtA +abG +rSb +onX +onX +onX +onX +onX +mtC +mtC +onX +qGR +qGR +pgc +tbD +fcd +cBL +qVd +fcd +fcd +yhK +jOC +jnn +uCe +kua +nvJ +fwa +lqH +ukA +kua +rSb +jpa +kyF +rSb +fBg +amd +xIm +aMW +iWx +iwj +bFz +edx +aJM +dJH +xAA +jPN +skr +jFa +qlv +iLc +eGW +raG +ych +jFa +aTd +rSb +jpa +kyF +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +kJj +xcJ +fXl +rFu +kJj +aJH +kJj +spG +xhd +rSb +rSb +rtA +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +"} +(176,1,1) = {" +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +wYq +qCR +jvt +nxv +nMW +bOn +gmy +vBh +kzc +wFX +uvv +kzc +qVK +qfL +qfL +teP +cIp +cIp +biT +raL +uoW +srq +snl +kLa +tFk +jxk +uWm +eYb +lzU +jgQ +qbL +fPp +eeW +bXH +uqb +pjr +uWE +wKm +fNY +tGh +blj +aPI +uak +mMV +blj +nmQ +xTS +rVT +rEA +wkD +bWt +rSb +rSb +xcr +jpa +kyF +rSb +xcr +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +abG +rSb +qGR +kcG +aQk +jZZ +fcd +oQJ +cyL +iRC +fcd +sII +ycN +usV +xuk +kua +kua +kua +kua +kua +kua +rSb +jpa +kyF +qSG +cTc +rrU +iHg +otB +bAX +hsg +vkp +cTc +gUv +piK +gUv +kXE +lTf +jFa +jFa +jFa +jFa +jFa +jFa +jFa +rSb +lQI +jpa +kyF +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +qUo +rSb +rtA +rSb +kJj +xhd +xhd +kJj +xhd +rhV +kJj +pvk +kJj +rSb +rSb +rSb +rSb +rSb +rSb +rSb +nUD +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +nUD +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +hBQ +rSb +"} +(177,1,1) = {" +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wYq +uBC +wRZ +tnZ +tyd +oyD +wCh +lLL +kzc +vqR +vVI +kzc +eBi +uoW +uoW +iKz +ocE +cSN +xll +rSe +iTb +rSN +jKO +lzU +lzU +nMH +lzU +lzU +lzU +wBn +bmI +ylA +cum +vzF +cCe +bmI +ekk +lzU +cRr +tGh +blj +aev +cNL +gQG +blj +tSW +kHD +eoL +eoL +tSW +tSW +jDw +rSb +rSb +jpa +gPO +lQI +rSb +rSb +hBQ +vWC +vWC +vWC +vWC +vWC +vWC +vWC +nUD +qGR +qsq +nwW +wil +eZf +aKw +bmA +sui +fcd +cVP +arg +key +jwk +etV +djF +vyO +oVj +ksP +xkz +xOz +jpa +kyF +spc +tnK +tnK +tnK +tnK +tnK +vni +oIm +cTc +sLO +iLb +gjz +cpA +fxs +pNG +waW +eRB +mom +cDJ +apU +nKK +jDw +hBQ +jpa +kyF +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hRZ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cmD +rSb +rSb +hBQ +xhd +kJj +kJj +kJj +xhd +rSb +rSb +xcr +rSb +dkR +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +"} +(178,1,1) = {" +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +wYq +svq +cir +oyD +rbF +tnZ +gmy +dZa +kzc +jJD +ibe +kzc +xJr +cIp +xll +bpm +lgI +lgI +bJD +dzc +bJD +lgI +lgI +lgI +owA +fBc +wAV +doi +lzU +vBc +bmI +hOW +vxv +mZe +vnR +qbL +mac +lzU +jwz +xlX +blj +kSc +kUC +vah +eWS +tSW +rFW +tly +tly +jOt +tSW +rtA +rSb +rSb +ePa +rSb +rSb +vWC +vWC +vWC +vWC +hKR +vrL +cBa +tUh +cBa +vWC +rSb +tmx +vCt +asc +nej +fcd +elr +clc +qFu +oMe +hdP +huj +huj +tRq +hcR +nJl +lAx +gTm +pDk +hcR +rSb +jpa +kyF +rSb +tnK +osP +vrn +xnN +tnK +tnK +tnK +tnK +vKF +hqy +wEI +oxY +pNG +nKK +hmF +wTb +sTe +oSt +hFB +nKK +rSb +rSb +jpa +kyF +rSb +rSb +xOz +rSb +rSb +rSb +nUD +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +dkR +rSb +rSb +xOz +rSb +rSb +rSb +xcr +rSb +rSb +kgc +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +adm +rSb +rSb +rSb +rSb +abG +rSb +rSb +dkR +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +"} +(179,1,1) = {" +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +abG +rSb +wYq +cIB +oao +rNa +loV +rbF +gmy +nWp +kzc +kzc +wLv +kzc +tcy +fVF +lta +lgT +lgI +uIZ +cnG +xQf +cnG +scE +fMF +lgI +nVR +bmI +kOS +kOS +lzU +rLU +qbL +dfB +bYu +cGM +qHq +bmI +kGV +lzU +cRr +vKI +blj +cDb +pdN +lAI +grj +tSW +iHq +ujW +gFV +jOt +kxd +rSb +hBQ +rSb +jpa +eDF +abG +vWC +ohl +wtv +vWC +hbg +pID +kEQ +kEQ +hsU +vWC +abG +tmx +qGR +lWg +anm +fcd +xIR +lVP +aoe +fcd +ora +upj +kjq +rFE +xkz +eIn +lAx +wIH +jCp +hcR +rSb +jpa +kyF +rSb +knO +lwA +cUx +cFv +vsA +tzr +brU +vFJ +gUv +iLb +rqe +oxY +acK +cxn +hmF +nUf +dda +ton +rMi +oxY +abG +xcr +jpa +kyF +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +wVa +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +tTj +wVa +rSb +rSb +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +"} +(180,1,1) = {" +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wYq +wYq +nKm +fYB +qKo +oyD +wuS +hDt +lgT +vVG +myl +xUN +rCz +een +oMS +bjA +lgI +cIz +czG +wNI +gtw +cnG +pXY +lgI +dRJ +bmI +uAf +upT +jEq +vBc +qbL +bmI +bmI +pqU +qbL +bmI +iGu +wKm +yaN +fQZ +blj +blj +uYx +blj +blj +tSW +ouu +xlc +stp +gFD +tSW +rSb +rSb +rSb +jpa +kyF +rSb +vWC +teL +dFC +vWC +aKR +kEQ +sid +kEQ +kEQ +vWC +rSb +rSb +lvz +qGR +qGR +uHG +fcd +fcd +tBP +fcd +tVF +tVF +tVF +qGR +xkz +xfY +mwK +axS +edX +xkz +rSb +cGV +kyF +rSb +knO +cBZ +vxT +qjm +vvB +vWi +xhJ +neg +rlV +xIB +aJM +acq +xnL +rqI +bAJ +hco +aCo +sSw +kLU +spn +rSb +rSb +jpa +kyF +rSb +rtA +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +nUD +rSb +kAE +gsz +olz +olz +olz +aRq +aRq +aRq +aRq +aRq +aRq +aRq +aRq +aRq +aRq +shX +aRq +aRq +aRq +kau +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +"} +(181,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wYq +wYq +wYq +wYq +ntr +wYq +wYq +lgT +nEY +fIl +gPP +soJ +wSn +uHR +xrC +lgI +nVb +cnG +nGt +cnG +cnG +xIF +lgI +mQV +nUd +lKv +mOE +lzU +lXY +pjr +qQS +wuJ +pqU +qbL +bmI +bmI +bEF +qHW +pdb +wVW +roT +gBf +xgc +dXQ +opF +bbQ +pZT +dEu +oQH +tSW +hBQ +rSb +qBi +jpa +kyF +rSb +vWC +ubo +kEQ +jwu +kEQ +rxi +pWC +pWC +pWC +vWC +rSb +rSb +rSb +rSb +xOz +rSb +rSb +lQI +ePa +rSb +xOz +rSb +rSb +rSb +xkz +xkz +xkz +xkz +xkz +mVX +rSb +jpa +kyF +gNb +tnK +ewG +mZy +cHA +upA +rfY +vtr +vFJ +kXE +pzH +ucF +szM +qlw +mgM +iBT +wvb +sJN +jKU +cGk +nKK +sbB +rSb +jpa +kyF +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +olz +olz +pBT +pBT +olz +fuU +nKv +olz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +abG +rSb +hBQ +rSb +rSb +xcr +hBQ +rSb +rSb +hRZ +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +xcr +rSb +"} +(182,1,1) = {" +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wYq +nvY +ert +kGC +kGC +ygL +lgT +wjU +xmy +lcW +ouV +cAu +uHR +kkt +lgI +dOK +yfF +jAY +oub +tEy +lWB +lgI +lgI +lgI +fsn +fsn +fsn +alQ +fsn +jmZ +mqo +pqU +qbL +bmI +rYQ +wKm +hwR +tJV +vde +aqS +vhl +xgc +lQX +ndb +otI +sGd +rBf +frv +tSW +rSb +xcr +rSb +jpa +kyF +rSb +vWC +aOW +oFe +vWC +vWC +uuq +vWC +vWC +vWC +vWC +rSb +rSb +hBQ +rSb +rSb +xOz +rSb +rSb +ePa +rSb +rSb +dkR +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +jpa +kyF +rSb +eRo +tnK +tnK +tnK +tnK +tnK +tnK +tnK +wEI +wEI +wEI +nKK +nKK +nKK +sAD +oxY +nKK +nKK +nKK +hyX +hBQ +rSb +jpa +sGS +qQX +qQX +qQX +qQX +qQX +qQX +fAJ +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +olz +iPs +fYc +eeS +owY +naC +bvM +olz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xag +oAf +xag +xag +oAf +oAf +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(183,1,1) = {" +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +wYq +vTq +lWn +jVx +tFr +boM +lgT +puK +haX +cCm +ouV +ioQ +qoH +aiv +nQd +oBB +sBU +pYL +iCG +unP +lWB +mHh +aKb +xtc +fsn +est +sEw +qmN +sVE +jmZ +sOw +cGM +gut +bYu +ydD +nMH +cRr +vKI +xgc +cDd +fdF +xgc +aFA +jOt +vXd +oAv +ovd +kqy +tSW +rSb +rSb +rSb +jpa +kyF +rSb +vWC +pnW +vWC +vWC +jPR +ePa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +ePa +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +qSG +rSb +hBQ +rSb +jpa +kyF +rSb +rSb +hBQ +xcr +xcr +rSb +rSb +hBQ +rSb +xcr +uXA +abG +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +jpa +sGS +awI +awI +sGS +sGS +sGS +sGS +sGS +eDF +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +jTU +naC +naC +iis +eyE +bvM +naC +olz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +qXS +oAf +xag +hEm +fyZ +xRL +sOa +xag +ePo +ePo +hqg +hqg +hqg +gPb +gPb +rSb +xOz +hBQ +rSb +dkR +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +hBQ +rSb +"} +(184,1,1) = {" +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +wYq +wYq +wYq +wYq +wYq +wYq +lgT +cYK +vca +cCm +ouV +ioQ +vyC +oAI +nQd +eeq +kro +vGy +vwd +ifO +lWB +brr +brr +brr +fsn +nnR +uPq +dXR +ipu +rQG +tDE +iRv +xxQ +tjz +xxQ +wNt +ujV +aTH +tSW +tSW +tSW +tSW +kQJ +jOt +jOt +jOt +jOt +uPP +tSW +nNx +rSb +lQI +jpa +kyF +rSb +xcr +rSb +abG +rSb +rSb +ePa +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +xcr +xcr +rSb +ePa +rSb +rSb +rSb +qSG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +jpa +kyF +rSb +rSb +xcr +rSb +abG +xcr +xcr +abG +rSb +xcr +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +jpa +kyF +abG +lQI +jpa +sGS +sGS +sGS +sGS +kyF +lQI +rSb +abG +rSb +rSb +rSb +hBQ +rSb +jTU +naC +bvM +teG +soh +bvM +sld +pBT +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +dwG +fQK +oAf +mFg +lQW +gSo +ciO +prj +jtL +vLi +fdy +dZX +qog +nxi +gPb +hqg +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +lYH +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +abG +"} +(185,1,1) = {" +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +uXA +rSb +rSb +rSb +lgT +inV +sSy +gOh +ouV +hXo +nZN +tWW +lgI +jET +mHD +dCe +hLv +sBU +aLV +cnG +cnG +ueu +fsn +ipu +rho +kbF +ipu +rQG +oVT +yjy +ncP +oQd +gPY +dWE +hwR +szT +tSW +ghK +syT +syT +mca +jOt +tRI +hPV +plo +tRI +tSW +rSb +rSb +rSb +jpa +kyF +rSb +woD +qQX +qQX +qQX +mec +sGS +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +sGS +qQX +qQX +qQX +qQX +mec +qQX +qQX +qQX +qQX +qQX +qQX +qQX +sGS +kyF +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +aTd +rSb +hBQ +rSb +lQI +abG +rSb +xcr +rSb +rSb +abG +xcr +jpa +kyF +rPN +gFd +bxb +mYd +gFd +hnj +sHL +rfO +rPN +rSb +rSb +rSb +rSb +rSb +rSb +rSb +olz +iPs +vDu +buT +xzg +nZr +xoa +olz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +hBQ +rSb +dkR +lEO +aAq +odf +aAq +eue +tNK +eLO +nCY +ppP +avv +ygz +uni +daK +kjF +gKE +hqg +gPb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +"} +(186,1,1) = {" +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +lgT +hDf +aHa +eYk +pai +hus +nZN +cMv +lgI +aMN +sBU +dUh +sBU +xiL +lWB +cnG +cnG +dGi +fsn +ipu +rho +dXR +ipu +rQG +dlt +jEM +ixh +naz +vsc +xxQ +xaG +pzW +tSW +hpD +syT +syT +jOt +jOt +tRI +dxj +dxj +tRI +tSW +rSb +rSb +xcr +wpG +awI +vOt +awI +awI +awI +cTk +rSb +wpG +awI +awI +awI +awI +awI +awI +sGS +awI +awI +awI +awI +awI +awI +awI +awI +awI +gPO +rSb +wpG +awI +awI +awI +awI +awI +awI +sGS +sGS +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +uPY +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +qQX +sGS +kyF +fUB +dnL +oIe +bGK +gLr +qFj +lhg +kVY +gFd +wCd +wCd +wCd +wCd +wCd +qlL +wCd +olz +pBT +pBT +olz +ksz +olz +olz +olz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +efr +dZO +hFv +sOa +dZO +uzx +avY +lfQ +wyD +tpf +ygz +jxr +kfo +vHY +txI +ufl +gPb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +"} +(187,1,1) = {" +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +lgT +nAk +qOe +dKo +unr +tOe +sjV +euD +lgI +boC +sBU +mTN +iGT +exp +lWB +sjb +nym +uPn +fsn +ipu +rrV +lSC +ipu +rQG +lIa +jyB +sDw +eVX +wVt +xxQ +pNw +vxG +tSW +vWu +syT +gbj +miW +mNc +qVO +xLw +eKC +tRI +kxd +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +abG +rSb +rSb +rSb +rSb +lQI +rSb +rSb +xcr +rSb +rSb +tNS +rSb +lQI +rSb +rSb +abG +rSb +xcr +rSb +rSb +lQI +rSb +rSb +xcr +xcr +rSb +rSb +xcr +lQI +jpa +sGS +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +awI +sGS +sGS +awI +awI +awI +awI +awI +awI +awI +awI +awI +gPO +abO +iDh +lWM +dAq +lhg +lhg +lhg +oSQ +cih +qlL +kno +vGK +cCv +qwe +knr +wCd +oiD +oNU +dXu +uKJ +svW +gOy +gmG +yli +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +bEq +dRr +xag +gsq +guQ +orm +dMv +prj +vRg +olk +gic +fnX +wOo +vHY +aLB +kjF +hqg +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +"} +(188,1,1) = {" +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lgT +lgT +lgT +lgT +lgT +lgT +lgT +lgT +lgI +lgI +lgI +nvS +kOg +lgI +lgI +lgI +lgI +nQd +fsn +fsn +fsn +lZO +lZO +rQG +rQG +rQG +jmH +eAD +rQG +rQG +vqp +xgc +tSW +tSW +tSW +tSW +fmp +fmp +tSW +tSW +tSW +tSW +tSW +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rtA +xcr +xcr +hBQ +hBQ +rSb +abG +rSb +rSb +rSb +tNS +rSb +xcr +hBQ +rSb +rSb +xcr +rSb +rtA +rSb +xcr +rSb +abG +rSb +abG +abG +rSb +hBQ +hBQ +jpa +kyF +tuv +rSb +rSb +nQh +rSb +rSb +abG +lQI +rSb +rSb +wVa +rSb +rSb +jpa +kyF +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +fGJ +gpZ +dAq +sWP +fRb +lhg +lhg +oSQ +jzq +wCd +reS +cib +dxd +wCd +wCd +wCd +hiN +uVM +tDV +uKJ +cLe +vHk +yli +yli +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xcr +qXS +oAf +oAf +wHe +bzf +bzf +prj +wHe +noo +inh +fdy +ofW +rHJ +uez +bsB +pBp +hqg +rSb +hBQ +rSb +xOz +rSb +xcr +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +"} +(189,1,1) = {" +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +tTj +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +woD +kyF +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +jpa +kyF +rSb +rSb +rSb +hBQ +dkR +rSb +rSb +rSb +rSb +xcr +rSb +dkR +rSb +wpG +kyF +rSb +nUD +rSb +rSb +dkR +rSb +rSb +abG +rSb +spc +fGJ +cJL +wwE +sWP +tSM +mdi +lhg +fpv +gFd +wCd +ipb +qlL +cCv +dcD +nXn +wCd +lUI +ePU +bkG +reo +lTk +hTJ +yli +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +oAf +kDz +iys +gYZ +nMB +eTZ +wOC +wHe +umD +mTc +ygz +ygz +ygz +ygz +fdy +ygz +hqg +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(190,1,1) = {" +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +xcr +xcr +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +tTj +rSb +hBQ +hBQ +rSb +hBQ +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rtA +rSb +abG +rSb +xcr +woD +sGS +sFr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +hBQ +rtA +rSb +rSb +abG +nUD +rSb +rSb +rSb +rSb +jpa +kyF +rSb +rSb +rSb +xcr +rtA +rSb +rSb +rSb +rSb +rSb +xcr +xcr +rSb +rSb +tNS +rSb +rSb +rSb +rSb +xcr +hBQ +rSb +rSb +hBQ +rSb +lyQ +lyQ +lyQ +lyQ +lyQ +uQB +lhg +aky +nhr +rWr +eCb +qlL +qlL +wCd +wCd +wCd +pzh +aHC +apb +uKJ +oKy +mLh +cEq +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +xag +ePN +dZO +gVR +fhc +yis +pnK +lZE +rhX +uCd +qUx +gnU +oiS +bjP +rLZ +qDW +ePo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +"} +(191,1,1) = {" +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +tTj +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +jpa +gPO +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +dkR +rSb +rSb +jpa +kyF +nUD +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +woD +kyF +rSb +abG +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rtA +lyQ +sSa +ofI +hMW +lyQ +tFG +mnr +teZ +pZW +oWq +eCb +kbw +aoU +gFd +tDV +lAf +oMp +oBX +tkX +uYv +icX +cKN +cEq +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +xcr +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +fjU +aIs +sOa +kVl +gSa +dZO +fym +prj +qHT +bBD +cZW +cHQ +cHQ +lXv +hOk +cHQ +dmQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +"} +(192,1,1) = {" +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +tTj +rSb +rSb +rSb +xcr +rSb +rSb +dkR +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +hBQ +rSb +rSb +ePa +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +jpa +kyF +rSb +hBQ +rSb +xOz +rSb +rSb +rSb +rSb +hBQ +rSb +hBQ +rSb +rSb +jpa +kyF +lQI +rSb +rtA +rSb +wVa +rSb +rSb +rSb +xcr +rSb +oal +rTm +uQX +vjt +uvY +cPS +gjY +smD +cGH +oWq +cVE +nkE +aoU +gFd +uhn +ddM +oMp +kyq +aYL +uKJ +lTk +iOT +yli +yli +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +xcr +hBQ +rSb +oAf +rRy +dZO +vrl +gPT +pfG +qcZ +vgU +wgA +vMn +qUx +jpt +dhJ +lXv +qDo +miM +ePo +rSb +rtA +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +"} +(193,1,1) = {" +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +kgc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +woD +kyF +rSb +rSb +xOz +dkR +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wVa +rSb +rSb +xcr +rSb +rSb +jpa +kyF +rSb +rSb +wVa +abG +rSb +rSb +hBQ +rSb +rtA +rSb +rSb +rSb +jFS +ltw +cqF +taU +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +lyQ +ufA +aoY +sNF +tTa +fmI +oED +nhJ +mUM +nYJ +tjf +ejB +qor +fGJ +tDV +tDV +pwe +hCY +ufq +uKJ +pML +vHk +sdW +aoW +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xag +ujo +aAq +fph +uek +qCb +jvi +prj +xIz +qHA +dVt +dVt +dVt +dVt +qUx +qUx +ePo +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +"} +(194,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +tTj +rSb +xcr +rSb +rtA +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +woD +sGS +kyF +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +hBQ +rSb +abG +rSb +rSb +rSb +rtA +abG +jpa +kyF +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +taU +biI +biI +taU +mKl +mKl +taU +biI +biI +taU +rSb +xcr +abG +rSb +hBQ +rSb +lyQ +naA +puP +bmN +kKX +fmI +fFu +iAt +pLF +mZi +axM +xkR +lRC +gFd +wAf +wAf +wAf +njh +njh +wAf +rxc +wlR +gzd +cEq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wVa +rSb +oAf +xSm +mnO +lhF +teq +sOa +eQk +wHe +lXv +cnc +qUx +ptv +rit +tUo +nUm +jRT +dmQ +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(195,1,1) = {" +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +tTj +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +jpa +sGS +gPO +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +jpa +kyF +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +taU +dgL +lMH +bcg +mKl +mKl +lGy +mKl +dmA +mYX +rSb +rSb +rSb +rSb +rSb +xcr +lyQ +dMe +tvb +ooy +tTa +eSu +vTb +oSQ +kYr +tbC +kYr +fqQ +jUL +gFd +cmO +gzj +ttu +ecu +gHj +wAf +wEv +mLh +gzd +cEq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +oAf +oAf +xag +xag +joZ +qUF +bOf +prj +tZf +cJs +dVt +uzJ +tbN +nOe +ouT +uPm +ePo +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +dkR +rSb +"} +(196,1,1) = {" +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +hBQ +rSb +rSb +abG +rSb +rSb +tTj +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +woD +sGS +kyF +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +rSb +jpa +kyF +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +wNZ +mKl +vuR +vuR +mKl +dCE +mKl +mKl +uHo +mYX +rSb +hBQ +rSb +rSb +rSb +rSb +iZo +izv +cZg +wiF +lyQ +eSu +vTb +aky +pqq +qbF +jpd +kri +xAw +fGJ +haa +qHP +pUq +anf +fDN +qqI +jfB +qAa +bNI +yli +rSb +rSb +rSb +rSb +rSb +rSb +rSb +vol +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +oAf +xag +oAf +oAf +xag +aDC +sFJ +tBy +pyS +uQu +rba +nRv +ePo +ePo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +xOz +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +"} +(197,1,1) = {" +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +tTj +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +jpa +sGS +gPO +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +lQI +jpa +kyF +jmL +rSb +rSb +xcr +rSb +rSb +xcr +rSb +xOz +wNZ +mKl +vCq +lMc +lMc +lMc +doh +mKl +cGr +taU +rSb +rSb +rSb +xcr +jkW +jkW +lyQ +lyQ +tTa +lyQ +iZo +xrn +wiy +xrn +jkW +jkW +jkW +jkW +jkW +ebV +ebV +qHP +wHw +yiE +kcF +wAf +oKy +wmG +yli +yli +cEq +cEq +aoW +yli +cEq +cEq +mjf +mjf +cEq +yli +yli +veO +veO +veO +uZz +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +lYH +rSb +hBQ +rSb +rtA +rSb +rSb +rSb +ePo +qHT +vDh +qUx +vRg +qEh +kgR +avv +ePo +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(198,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +wdw +wdw +wdw +jtR +gqJ +wdw +wdw +vXt +rAo +wdw +ljc +kuG +kuG +kuG +kuG +kuG +kuG +rSb +rSb +rSb +woD +sGS +kyF +lQI +rSb +auy +rSb +rSb +rtA +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rtA +abG +rSb +rSb +rSb +rSb +rSb +ffQ +jpa +kyF +oWB +rSb +rtA +abG +hBQ +rSb +rSb +hBQ +rSb +taU +cld +oPk +hvS +nRY +nJL +nfs +mKl +qcV +taU +rSb +rSb +dkR +rSb +jkW +wCH +iwo +hrz +pxx +fif +lzr +ldR +rRK +aiN +uFY +igA +pxx +uQv +lfa +fXk +ebV +hRe +wPx +keb +wJD +hUH +wEv +vHk +ojE +rxN +aqU +aqU +pxc +sag +aqU +aqU +fvW +fvW +mdR +iZI +yli +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +hBQ +rSb +crv +wId +gpj +dVt +fuW +slM +nmN +jNQ +dmQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +"} +(199,1,1) = {" +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +xcr +rSb +xOz +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +wdw +wDl +sMu +tfI +ssW +mUy +uMh +kgr +xKF +hyR +pFE +kuG +tnO +yaJ +puX +wDj +kuG +rSb +rSb +xho +krg +tab +mVo +xho +rSb +rSb +wMY +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +nbd +rSb +ghn +oWB +ovo +dtj +oWB +ghn +rSb +rSb +rSb +rSb +rSb +rSb +rSb +mYX +wUN +oPk +gvW +tcx +pmm +wzo +rnW +dqR +taU +rSb +rSb +xcr +rSb +jkW +vIW +ldR +aiN +byJ +ldR +aiN +aiN +tBp +qjY +qjY +vQj +aiN +aiN +jTb +kSv +jkW +wQV +gPN +jdA +agK +hUH +wEv +iXU +tBN +dUe +dqZ +dqZ +dqZ +vGr +tlP +aTQ +aTQ +aTQ +cUt +sdW +yli +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +dmQ +jLl +hWD +ePo +ePo +dmQ +ePo +dmQ +dmQ +hwb +roP +roP +hwb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +"} +(200,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +dlx +dlx +dlx +dlx +dlx +rSb +lBg +nTf +lBg +lBg +wdw +qCw +uac +mpH +nke +jIq +pww +kgr +xKF +kgr +rUz +kuG +wjQ +pGX +pGX +pGX +kuG +kuG +voL +voL +kyy +vYK +wuD +voL +voL +rSb +kHB +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +wyt +nVv +nVv +bfw +bfw +nVv +nVv +oWB +ghn +dDX +bpV +bpV +xiB +ghn +lmc +oWB +oWB +keQ +keQ +oWB +oWB +oWB +mKl +sbi +cpu +cpu +cpu +qdE +emT +lci +taU +rSb +xOz +rSb +rSb +jkW +qOS +ldR +edS +etB +etB +boU +hKn +rRK +tXv +etB +lYu +vNZ +hKn +wut +jFZ +ebV +ttu +ttu +ttu +qHP +hUH +lTk +mLh +few +xbT +vab +uBr +kLT +jUa +vab +uBr +ggc +lJy +gIN +mmH +yli +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +abG +rSb +hBQ +hwb +roP +roP +hwb +dmQ +tMx +aYb +dmQ +wIt +wIt +wIt +wIt +wIt +wIt +wIt +wIt +aCS +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +"} +(201,1,1) = {" +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dlx +dlx +rSk +hwm +odm +dlx +dlx +lBg +lCy +wwY +llK +wdw +szH +nke +aYN +nke +pHA +psL +aOV +xKF +kgr +amX +kuG +gbC +hrw +pGX +pGX +pGX +qZO +voL +qOD +kbj +arK +xWi +ldP +voL +rSb +rSb +rSb +xcr +rSb +rSb +rSb +nUD +rSb +nVv +nVv +fXD +uwR +fMP +jiu +sTZ +emo +oWB +ybw +boy +iRM +bpV +ngk +sxW +oWB +rdO +mNd +gnz +pKO +nlc +kue +lmc +mKl +mKl +opC +jUM +mrM +nlA +mKl +gwy +taU +ruK +ruK +ruK +tsw +jkW +iXs +ldR +kCH +qPs +aTz +oqu +fzC +rRK +kCH +jEK +vfk +fdC +fzC +wut +nzh +jkW +cQI +sVp +jsb +jMF +wAf +lTk +tbG +yli +yli +cEq +cEq +yli +aoW +cEq +cEq +yli +yli +yli +yli +yli +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +hwb +wIt +wIt +wIt +dmQ +fGE +qGm +dmQ +hwb +hwb +wIt +roP +roP +hwb +hwb +wIt +hwb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +adm +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +"} +(202,1,1) = {" +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +dlx +okD +uiF +aAX +uiF +sWa +dlx +yeU +aTA +ddN +aTA +wdw +wKU +nke +mpH +nke +xzx +vcp +nGI +hJA +iUn +qIN +kuG +cxT +gnD +pGX +tyV +xaZ +kKW +voL +xXu +kbj +pjN +xWi +rdx +voL +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +nVv +lNh +mLU +jKY +mww +dbw +lVw +fmz +oWB +vpF +mAq +vhU +bpV +eKv +tvS +law +lnu +kDV +bpV +kDV +bpV +kSi +lmc +qYu +mKl +uJR +taU +taU +rRD +diB +taU +taU +cvp +dRx +hhf +pFQ +tSZ +jnP +aiN +gfw +tWl +fDx +fDx +cKQ +gPd +gfw +fDx +kbl +vFt +bqH +wut +bng +jkW +wAf +wAf +wAf +wAf +wAf +bMA +vyg +yli +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +roP +wIt +hwb +roP +hwb +qrO +azM +hwb +wKt +cZs +nRO +dzy +wev +bew +hwb +wIt +hwb +hwb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +"} +(203,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +abG +abG +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +rSb +rtA +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +dlx +quu +cPE +nGU +gyi +owu +nTl +lhW +lhW +dtz +jXp +gkK +moK +moK +iFG +nke +fKL +bCN +ssW +tfI +tXw +kuG +kuG +kuG +kuG +kKA +kuG +kuG +voL +voL +deo +kbj +arK +xWi +twl +afx +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +nVv +cbt +dbw +wZq +xic +jmI +lVw +iYy +oWB +bkd +iRV +cpq +odq +oqo +xqu +law +vYt +bpV +bpV +kDV +kDV +cDc +oWB +mKl +mKl +xWk +taU +gGH +reA +tju +aWI +jVj +tju +fvH +eDi +tju +iho +ldR +aiN +aiN +oAg +ldR +xEL +oYc +aJT +aiN +ldR +ldR +pAo +aiN +eJN +ldR +wYz +cHn +lIU +pgT +nVp +jCo +wVf +rvn +sFp +abG +rSb +rSb +rSb +rSb +rSb +rtA +cUB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +dkR +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +roP +wIt +hwb +sNQ +nAK +nAK +tCI +oyh +cYg +iZl +cdg +lSn +sFE +odY +roP +wIt +wIt +roP +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +"} +(204,1,1) = {" +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dlx +okD +uiF +faT +nSL +oRN +dlx +yeU +jLZ +cSx +acb +wdw +wal +nke +xwT +nke +wDv +nke +nke +aYN +dLn +kuG +bQt +qSH +elx +pSV +lXN +kuG +xCO +fHQ +uDA +kbj +arK +cwT +mIU +afx +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +nVv +seT +bLa +ibE +xAc +mIj +eaJ +kzA +lmc +xgv +www +coS +gWl +eKv +mPX +uAV +vuS +cKg +bpV +nRS +bpV +xAk +oWB +juI +mKl +iCn +taU +neO +quB +qrr +mAI +eec +tZl +lub +hOI +hOI +bIS +pof +pof +vwb +eGv +vwb +pof +pof +cEL +vwb +pof +pof +kHp +pof +ety +vwb +iAx +gts +rWd +lgB +rWd +jNg +xEi +uFE +sFp +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +bvN +rSb +rSb +rSb +hwb +wIt +roP +xjg +jnG +sFE +xAh +ent +vRC +nAK +lSn +lSn +eeh +tqG +roP +hwb +wIt +hwb +dbV +ycW +ycW +ycW +ycW +iWd +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(205,1,1) = {" +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +nUD +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dlx +dlx +exR +ePp +eth +dlx +dlx +lBg +tgM +hKp +weD +wdw +rqy +nke +myh +oBc +lJZ +fuQ +leE +lYw +joe +kuG +bKy +bKy +uRC +qwr +jwG +cvf +iuS +cjV +aSq +kbj +arK +ggd +drJ +iUf +rSb +wMY +wVa +abG +rSb +rSb +xcr +hBQ +rSb +bfw +eAR +bLa +dbw +rOc +mPW +tpN +vyA +lmc +xgv +www +pAh +pkT +eKv +qcQ +vuw +iFN +nmr +bpV +nDJ +kDV +ric +oWB +mPV +wPd +kbR +taU +edD +nED +ruK +uyK +uyK +bis +vXF +uyK +uyK +jkW +kvS +wtb +bfm +pmP +vBH +bJm +rCW +lCh +bfm +wtb +bfm +wYp +hne +aiN +iSg +sKD +fPr +dPm +pwR +tpO +jfY +xpc +xHy +fks +dkR +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +gsK +roP +nAK +roP +hTe +iit +jIz +nAK +eeh +eFq +nfP +sbv +nAK +nAK +spj +vhI +xJO +sHP +tul +aeF +dbV +ycW +ycW +ycW +aeF +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +"} +(206,1,1) = {" +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +dlx +dlx +dlx +dlx +dlx +rSb +lBg +lBg +lBg +lBg +wdw +vyI +uac +nke +nke +raf +oJq +xwT +nke +hvp +kuG +mQw +bKy +xms +qKP +eZW +hWW +iuS +jjC +luE +kbj +arK +ggd +drJ +voL +rSb +tNS +rSb +rSb +xcr +rSb +rSb +rSb +rSb +nVv +kzJ +xJf +wwF +ttB +oAZ +tpN +rYW +grF +cmq +dXp +vwj +bpV +xcj +cUS +oWB +lKk +rtg +bpV +qgM +kDV +vMs +oWB +taU +taU +taU +taU +eDi +tRg +ruK +awh +hkx +tju +eUl +kwI +tJU +jkW +ksl +jkW +tVz +jkW +aBP +ebV +aBP +jkW +igv +jkW +tVz +jkW +aoi +aWU +fbi +ebV +lLE +lLE +fks +fks +fks +wAa +lFr +fks +fks +rSb +rSb +rSb +rSb +rSb +nUD +cUB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +roP +kdg +nAK +jIz +nfP +roP +rZd +rZd +wIt +roP +roP +iqT +fUJ +nAK +lSn +jwW +kja +hwb +wIt +hwb +rSb +wMo +dbV +iWd +dbV +iWd +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +hBQ +rSb +"} +(207,1,1) = {" +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wdw +aPt +rAE +mvm +wGc +qZt +gOw +iKV +emD +dFz +ljY +pdy +bKy +uRC +qzu +loL +jgl +joS +jjC +xym +kbj +iPl +xWi +jeB +ljK +qQX +gPO +rSb +rSb +abG +rSb +qBi +rSb +rSb +nVv +xOl +dbw +oCf +qxx +cJy +eSo +nVv +oWB +oWB +oWB +vVm +ejh +oWB +oWB +oWB +oWB +cNY +kDV +lGY +uvJ +vzO +oWB +tju +eDi +eDi +uap +tju +reA +ruK +sTg +tju +eDi +hPL +eDi +eDi +qqx +pqi +iLh +aYf +nFU +rSb +rSb +xOz +nFU +aYf +iLh +aYf +jkW +aBP +aBP +aBP +jkW +rSb +rSb +rSb +xOz +fks +lJw +vZV +taD +sFp +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +oPJ +xgE +nfP +lSn +lSn +rZd +rZd +rZd +rZd +rZd +rZd +rZd +rZd +pSF +frN +lSn +lSn +dnI +xJO +sHP +pxs +iWd +lCB +aeF +lCB +aeF +wMo +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +"} +(208,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +tYA +uTD +uTD +wdw +wdw +tUk +fVj +txf +gsD +fbq +ehz +nke +jvV +kuG +gpk +upt +uRC +qzu +udZ +cvf +iuS +jjC +jHe +ubF +ueY +xWi +jeB +wPt +gPO +rSb +sCQ +rSb +rSb +rSb +rSb +rSb +rSb +nVv +xfi +axw +axw +dJn +rMO +wVO +bLu +pJZ +wVz +syy +pOk +trW +bci +jaK +hcq +rbx +fwH +seV +bMw +dcY +bZo +oIq +faV +qqE +mTX +qqE +soj +vzb +ruK +eBH +ott +dCt +dCt +mZo +pBM +iLh +uvn +iLh +kCl +nFU +rSb +lYH +rSb +nFU +xpd +iLh +gPu +nFU +rSb +wVa +rSb +rSb +rSb +abG +rSb +rSb +fks +xGa +pDq +gnQ +aDk +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +roP +wIt +lSn +dWO +rZd +rZd +rZd +rZd +rZd +iLr +rZd +rZd +cdg +vsQ +lSn +aRM +nnF +roP +wIt +roP +lCB +ycW +ycW +ycW +ycW +aeF +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +xcr +"} +(209,1,1) = {" +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +hBQ +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +tYA +tYA +tYA +tYA +tYA +tYA +tYA +gDf +sLs +gKt +wdw +wdw +wdw +wdw +wdw +pks +ehz +nke +azS +kuG +lex +mlZ +tRK +chc +lyY +hWW +iuS +cjV +nbx +kbj +cxu +ggd +iqb +voL +rSb +rSb +rSb +xOz +rSb +rSb +qUo +rSb +rSb +nVv +eQe +lce +bkz +sRe +eEK +sLc +udc +toY +ixD +rkK +uha +uha +rkK +mxy +tHl +rss +rss +rss +rss +fSj +rss +rss +rss +cxF +vne +kSP +ruK +tsw +tsw +ruK +ruK +rSx +rSx +rSx +ruK +ebV +bSt +jkW +hcS +jkW +rSb +rSb +rSb +ebV +hcS +jkW +hcS +jkW +hBQ +rSb +rSb +abG +rSb +rSb +dkR +rSb +sFp +tok +iwH +ipT +aDk +rSb +rSb +rSb +rSb +rSb +dkR +cUB +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +xcr +rSb +rSb +rSb +rSb +hwb +wIt +wIt +iit +rZd +rZd +rZd +rZd +rZd +rZd +rrO +rZd +rZd +nAK +jIz +nAK +odY +hwb +wIt +hwb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +"} +(210,1,1) = {" +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +tYA +qRG +qqM +sIS +tiS +niW +tYA +dCA +dCA +aXc +sEX +qlg +fpp +uSH +wdw +vgP +vdV +nke +mdy +kuG +hPC +jxb +kjI +xBo +kSN +aHB +uVe +tUQ +pgh +kbj +cxu +ggd +lqR +afx +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +nVv +irc +wxW +aKu +wxW +kWn +bfw +bfw +cvD +pHX +jyw +kGW +drM +iwf +mxy +qLj +rss +uZd +anY +gHV +sDf +jsi +mwe +rss +ruK +ruK +ruK +ruK +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +tPC +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +sFp +die +pDq +eCH +sFp +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rtA +rSb +rSb +rSb +xcr +rSb +rSb +hwb +wIt +roP +wOx +rZd +rZd +rrO +rZd +gKG +rZd +rZd +rZd +lXm +aRM +nAK +lSn +eFq +qWM +wIt +roP +rSb +rSb +hBQ +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +"} +(211,1,1) = {" +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +tYA +fLl +iKJ +wOs +tiS +jtW +tYA +dCA +kBe +gsh +iVK +gTh +sNB +jEX +wdw +wdw +dUq +nrN +wdw +kuG +iaW +dsm +ucM +oLq +cHo +kuG +eNC +voL +xJm +gym +cxu +xWi +pkj +afx +rSb +rSb +xcr +rSb +hBQ +abG +rSb +hBQ +rSb +uer +hfj +jbL +rkK +gIP +hIY +jiI +koe +koe +pHX +jyw +bwC +vvu +xul +eLX +vQQ +ffP +igB +gdh +sNz +flT +eeP +wgI +rss +rSb +rSb +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lLE +die +ftp +fks +fks +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +xOz +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +roP +lSn +nAK +rZd +rZd +rZd +rZd +rZd +rZd +rZd +rZd +rZd +rZd +nfP +nAK +lSn +hwb +hwb +wIt +hwb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +"} +(212,1,1) = {" +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +tYA +tYA +tYA +tYA +qmU +aVk +iwl +tYA +aQt +dCA +nXd +rgi +xEI +laB +tVk +uTD +qaZ +hKw +gKn +mJO +kuG +edL +kuG +kuG +kuG +kuG +kuG +voL +voL +rpG +kKR +fyN +bws +hRR +afx +rSb +rSb +rSb +rSb +nUD +rSb +rSb +rSb +rSb +plh +hfj +jbL +vDR +jbL +hIY +nZE +koe +nhV +pHX +ckT +aNY +tmk +jbL +unv +ezC +ffP +jCi +cav +wet +adE +fKR +rfH +rss +rSb +rSb +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +fks +oya +vZV +lLE +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +bvN +rSb +rSb +xgE +lSn +lSn +vaf +rZd +rZd +nfP +sFE +wIt +nfP +roP +sFE +vaf +tTB +roP +roP +roP +wIt +wIt +roP +abG +rSb +abG +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +"} +(213,1,1) = {" +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +tYA +tCc +win +tYA +nnH +nlr +cyP +tFW +wHn +wHn +wHn +bij +wQd +fGD +cBB +uTD +gIU +hKw +gKn +cce +gVH +rkv +cYm +avd +gsW +svk +vvA +rjr +hPi +rpG +kbj +rkj +xWi +bSg +voL +rSb +xOz +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +plh +jYb +geC +lST +geC +vmS +lST +hYN +koe +sem +fJs +fJs +qoz +fHf +fgj +rld +ffP +igB +lIg +sNh +eeP +fKR +wIu +rss +rSb +xcr +abG +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +fks +lJw +pDq +sFp +rSb +rSb +rSb +mQW +rSb +rSb +abG +cUB +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +oPJ +xgE +nAK +lSn +lSn +nAK +lSn +nAK +lSn +lSn +ffr +osq +vaf +prv +nJS +dWO +wIt +wIt +wIt +hwb +hwb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +"} +(214,1,1) = {" +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +tYA +qLX +vtQ +auB +aHM +nCl +qmt +tYA +bAI +gaW +wxj +qPL +kvQ +pEu +bmy +tqW +pZP +anq +gKn +gKn +qiA +pCA +uep +uep +gKn +gKn +cce +qLG +aaQ +aaQ +oQr +rkj +xWi +lYn +voL +icb +icb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +plh +vcn +koe +bZN +nhV +iwD +jBX +dNR +pFr +vjJ +fyE +ctR +koe +tWF +tEM +rzS +rss +pky +kQX +aZm +uTX +fuJ +doW +kNG +rSb +rSb +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +fks +hqU +aTO +fks +hBQ +rSb +rSb +rSb +xOz +rSb +rSb +cUB +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +hBQ +rSb +wLO +wIt +roP +cBv +awy +iyh +lSn +fDQ +nfP +ezJ +qub +qWM +lSn +aGI +xrO +wIt +hwb +hwb +roP +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +"} +(215,1,1) = {" +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +tYA +tYA +tYA +tYA +tYA +tYA +tYA +tYA +uTD +uTD +uTD +uTD +uTD +uTD +uTD +uTD +iIl +kvT +vbM +njz +xhw +nAE +njz +njz +aQW +nCH +aXK +twi +pFF +qSa +qSa +tDn +sMD +rpG +kEl +gZt +icb +rSb +rSb +xcr +rSb +osD +oJz +oJz +plh +rMD +cBC +lST +cBC +dno +plh +plh +uer +lST +lST +wZG +pZJ +unE +tJS +cfJ +rss +rss +rss +rss +iYu +neN +rss +rss +rSb +hBQ +rSb +oUA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +jYc +htX +bly +jYc +mSq +mSq +lXJ +lXJ +lXJ +jYc +jYc +jYc +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +gsK +roP +wIt +roP +css +lSn +nAK +nAK +rZd +rZd +lSn +qen +aRM +bmh +uog +roP +wIt +roP +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +"} +(216,1,1) = {" +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +obp +kfO +mXs +nXO +cli +mMw +cLW +tPF +tvs +nnZ +kvT +tSG +rEr +uVz +dmO +gyv +rEr +waq +hKw +tKj +rjr +pbR +ppS +vKf +sJH +sJH +hef +voL +eIR +icb +rSb +rSb +rSb +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lST +rkK +jbL +jbL +rkK +brx +oHd +jyx +jyx +rss +rss +rss +rss +rSb +rSb +rSb +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lXJ +qSm +qOr +ubP +whM +mJA +bIl +bIl +bIl +hup +oVR +jYc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +roP +wIt +hwb +hwb +lSn +hwb +nfP +lSn +qOh +dSb +nAK +roP +hwb +hwb +roP +wIt +roP +xOz +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +"} +(217,1,1) = {" +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +obp +xsk +mXs +vDS +whJ +qXl +cLW +mQl +tvs +sYr +iEo +xuF +wnE +xQj +qaO +xHk +uYI +diR +anq +jgP +lXT +lXT +rcs +grM +jlD +wNP +lXT +lXT +uYw +icb +icb +rSb +xdH +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lST +gJb +fTJ +xLR +xLR +xOg +oHd +egh +qjw +trA +gpF +dmJ +rSb +rSb +rSb +xcr +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lXJ +mgF +oZD +ngL +nbC +pyp +dUW +nIR +dUW +paN +pPc +jYc +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +hwb +wIt +wIt +wIt +qWM +hwb +nfP +hwb +roP +nfP +nfP +wIt +wIt +wIt +wIt +wIt +hwb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +"} +(218,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +lyE +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xkh +uUn +mXs +mXs +rME +uGu +dNT +oiQ +pHP +oQi +iSN +cVJ +rEr +ddm +wse +eiq +rEr +waq +hKw +uhC +lXT +bFq +nbY +xQl +fCV +sKl +xHG +lXT +dOU +qAX +icb +vHn +aFx +vHn +kNO +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dmJ +dmJ +dmJ +dmJ +ldk +cmo +dmJ +fyF +lgA +fNu +dmp +dmJ +rSb +rSb +rSb +rSb +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lXJ +mgF +qwF +ubP +jbI +hKs +qgp +qgp +pNH +oIF +gGZ +jYc +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +hwb +roP +hwb +roP +roP +wIt +wIt +wIt +wIt +wIt +hwb +hwb +roP +roP +hwb +hwb +hwb +rSb +abG +rSb +rSb +rSb +abG +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +"} +(219,1,1) = {" +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +obp +obp +ghY +mXs +cLW +pbn +cxo +ahk +tvs +ibJ +gKn +lMj +pbT +mUx +eJw +ovu +pbT +uaX +pCj +bbV +isa +kaE +dVy +nxK +aml +nLc +aUo +lXT +gZt +oab +icb +rSb +kHB +wVa +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +oHd +vJV +uvL +pgC +xgt +vnD +ujc +rlJ +rbP +xTl +xlQ +dmJ +rSb +abG +rSb +rtA +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +jYc +qSm +tsV +jYc +jYc +jYc +lXJ +jTg +lXJ +mSq +mSq +jYc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +roP +hwb +hwb +roP +roP +roP +roP +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(220,1,1) = {" +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +obp +obp +tvs +jxq +tvs +tvs +tvs +tvs +iOc +gKn +uep +gKn +cwA +gOa +rQj +gKn +gKn +hKw +reE +lXT +arv +jqy +qii +cRn +fwP +ewv +lXT +gZt +keU +icb +dkR +hBQ +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dmJ +fNu +fNu +mRD +mht +aWr +iVw +gbR +qrN +fNu +ger +dmJ +rSb +xcr +rSb +rSb +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +jYc +dbn +dwh +jYc +rSb +rSb +rSb +ttc +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xOz +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +abG +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(221,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +obp +ijq +qkY +emZ +oKN +hsf +emZ +kew +gKn +ghU +iIh +vYs +gOa +xCZ +qmI +wLm +kBV +oaw +lXT +fwP +fwP +dpQ +fwP +fwP +tDC +lXT +pAH +gZt +icb +xcr +rSb +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dmJ +kKq +kKq +mRD +oWc +oPF +hjT +fNu +kKq +kKq +qKx +oHd +rSb +rSb +hBQ +rSb +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +mSq +uNN +uvm +lXJ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +"} +(222,1,1) = {" +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +obp +pLY +uuJ +emZ +cvQ +tMz +emZ +emZ +qWj +emZ +emZ +emZ +gNq +emZ +emZ +emZ +kgd +dFy +lXT +vGX +sDh +sDO +fss +neF +wsH +lXT +cSj +uYw +icb +rSb +rSb +xcr +wQq +rSb +rSb +rSb +rSb +rSb +rSb +mzJ +rSb +rSb +rSb +rSb +rSb +dmJ +wGe +iNz +eha +kHC +cal +peX +uKa +oKj +kap +gzD +dmJ +rSb +rSb +rSb +rSb +xcr +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +mSq +kOZ +jxp +lXJ +abG +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +xcr +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(223,1,1) = {" +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +obp +obp +obp +uYL +snr +tMz +xol +aLo +hXT +iiK +emZ +hoq +qox +pKE +efi +emZ +mJs +nbX +lXT +lXT +lXT +lXT +lXT +lXT +lXT +lXT +aFw +dOU +icb +rSb +rSb +rSb +btS +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +dmJ +dmJ +oHd +oHd +dmJ +rdg +kKq +vub +dmJ +dmJ +oHd +dmJ +rSb +rSb +rSb +rSb +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +jYc +mgF +uto +jYc +rSb +rSb +rSb +rSb +rSb +rSb +abG +cUB +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +"} +(224,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +lYH +rSb +xOz +rSb +xOz +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +uYL +vwK +tMz +dzI +kvD +kvD +vCs +emZ +rFv +qox +kvD +llN +emZ +wmt +hnW +hXT +hXT +hXT +jUP +iRU +hXT +ycV +uYL +uGa +gZt +icb +rSb +rSb +rSb +rSb +rSb +rSb +mPo +eDF +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dmJ +dmJ +nPT +dmJ +dpe +cnB +rSb +rSb +rSb +rSb +abG +rSb +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lXJ +qSm +whk +mSq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +lYH +rSb +xOz +rSb +xOz +rSb +rSb +rSb +"} +(225,1,1) = {" +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +uYL +imV +cTP +oBZ +iyF +bsm +quY +emZ +mPC +erm +pUo +iIL +emZ +lyU +ikO +gRk +gRk +gRk +uOM +gRk +mDI +sLL +pRE +bHw +gZt +icb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wpG +jVv +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +qwv +tNS +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lXJ +mgF +hFa +lXJ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +"} +(226,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +uYL +uYL +uYL +uYL +uYL +emZ +emZ +emZ +sIq +oaM +emZ +emZ +emZ +jpb +lNs +emZ +emZ +emZ +thE +emZ +emZ +emZ +uYL +nnD +dOU +icb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +mPo +gPO +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +jYc +ndd +ugW +lXJ +xOz +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +xcr +rSb +hBQ +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +"} +(227,1,1) = {" +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +uYL +vuT +fzZ +fWc +mig +rCR +emZ +pkW +dWj +llU +xiU +emZ +qQg +kkV +mVf +qTN +wRe +svZ +uYL +mDB +uYw +icb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +mSq +sLq +bJh +jYc +rSb +rSb +rSb +rSb +rSb +rSb +dkR +cUB +rSb +xcr +rSb +rSb +rSb +rSb +nUD +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +"} +(228,1,1) = {" +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +abG +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +dkR +rSb +rSb +rSb +uYL +jld +fzZ +fzZ +jge +wIC +emZ +qzO +sIh +wYe +sga +emZ +gmQ +kvD +mVf +kvD +wsT +gEJ +uYL +mDB +gZt +icb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +btS +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +veO +jYc +mSq +jYc +jYc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +lYH +rSb +xOz +rSb +xOz +rtA +rSb +rSb +rSb +hBQ +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +"} +(229,1,1) = {" +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +kCF +kCF +kCF +kCF +kCF +kCF +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rtA +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +uYL +dPX +fzZ +jjB +qdM +bzv +emZ +dzI +dAQ +piJ +emZ +emZ +eyK +qVJ +kXh +tYZ +wsT +mkr +irJ +mDB +dOU +icb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rtA +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +pOc +rSb +"} +(230,1,1) = {" +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +kCF +kCF +kCF +kCF +kCF +chH +eQK +lxa +dcz +kCF +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +dkR +rSb +rSb +rSb +rSb +uYL +emZ +emZ +emZ +emZ +vbo +emZ +pIk +imr +xZN +emZ +xpV +eYR +eYR +qPS +sKm +wsT +brJ +uYL +nnD +gNW +lUX +rSb +xcr +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +"} +(231,1,1) = {" +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +qBi +rSb +rSb +rSb +xcr +kCF +snO +cxg +wBz +kCF +ojI +bNF +bmt +bNF +kCF +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +dkR +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +uYL +uUq +hGl +gRS +fEi +kBk +emZ +dzI +khi +jVK +emZ +dcK +oLa +hxe +dOO +cUO +lLG +plA +uYL +cgt +uuI +icb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +wQq +rSb +rSb +rSb +rSb +rSb +rSb +rSb +cUB +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +dkR +rSb +abG +rSb +rSb +rSb +xcr +"} +(232,1,1) = {" +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +kCF +vlu +pTy +pTy +daq +ede +sio +ede +sMP +kCF +kCF +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +uYL +ehb +dpz +ceT +emQ +dbL +eNw +dbL +fYo +emZ +emZ +emZ +emZ +emZ +emZ +uYL +uYL +uYL +uYL +xmq +eun +icb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +btS +veO +veO +veO +veO +veO +veO +veO +uZz +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +"} +(233,1,1) = {" +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +abG +rSb +abG +kCF +wiS +cxg +kCF +kCF +waQ +gJO +iKY +hgJ +bNF +kCF +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rtA +rSb +uYL +lRw +nmO +rWL +bOb +eTi +emZ +dzI +wNx +emZ +gFp +ccA +oiP +wrh +dFX +uYL +lMt +vmb +eoK +lUU +dwV +icb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +dkR +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +"} +(234,1,1) = {" +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +kCF +oHK +ixu +kCF +fHP +mZL +kBl +crF +cKm +vbe +kCF +hBQ +jOo +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +xOz +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +uYL +hlM +nmO +fvv +dMT +hgs +emZ +aOQ +wNx +emZ +ebJ +all +wrh +wrh +gna +uYL +uay +trH +iJo +kwm +egk +icb +rSb +rSb +abG +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xOz +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +"} +(235,1,1) = {" +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +kCF +kCF +kCF +kCF +kCF +kCF +kCF +mkt +kCF +fxH +sig +fwo +dYv +lbh +tEN +kCF +kCF +syf +kCF +kCF +kCF +kCF +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +uYL +mVO +nmO +ieO +gMu +iWY +emZ +jLf +dAQ +emZ +adZ +bqJ +wrh +wrh +wyB +uYL +fVn +vmb +rIv +wOq +cQn +icb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +xcr +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +"} +(236,1,1) = {" +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +kCF +wub +rJh +iZw +nPX +fza +kCF +kCF +kCF +hCV +nGM +nGM +nGM +oIy +wSm +kCF +lJW +fCS +spX +bNF +bmt +kCF +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +uYL +uYL +uYL +uYL +uYL +uYL +uYL +dzI +qgP +xSk +gEI +gxA +wrh +wrh +sOW +uYL +nFt +trH +nLI +xcH +icb +icb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xOz +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +xOz +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +"} +(237,1,1) = {" +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +abG +kCF +jla +nGR +jTC +ioP +wqe +cNA +kCF +wgh +bNF +szw +bAK +mNF +ygt +bNF +kCF +vfX +uNQ +spX +sTT +bNF +bJo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +uYL +vDr +omL +emZ +coU +bCQ +mCn +wrh +mWa +uYL +ofu +gZt +jpT +vSe +icb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +nUD +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(238,1,1) = {" +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +nWr +crF +rnc +npu +oLX +bNF +wqM +kCF +qMg +gJO +gJO +fZl +szw +sZY +fZl +kCF +ohT +mJf +spX +ojB +bNF +kCF +kyE +wMY +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +uYL +emZ +uKm +emZ +emZ +emZ +uYL +uYL +uYL +uYL +imt +gZt +dOU +eYy +icb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +lyE +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +"} +(239,1,1) = {" +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +hBQ +hBQ +rSb +dkR +rSb +kCF +bNF +bAK +pMQ +eHc +wsg +jWa +kCF +xKl +bmt +rBz +prR +iSo +crF +ild +kCF +wje +bAK +mNF +bAK +gJO +lCC +lWG +ePa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +nUD +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +uYL +spY +fjI +bDK +hnV +nkm +icb +ocC +wMB +wMB +xyf +wMB +czR +eQz +icb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +nUD +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +abG +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +hBQ +rSb +rSb +lyE +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +"} +(240,1,1) = {" +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +kCF +hvU +sRt +mhp +gJO +sKN +wEa +wha +tMW +crF +oJH +vNG +bAK +vEK +bNF +gPa +vEK +wyz +ndo +gJO +xTi +kCF +rSb +ktp +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +uYL +lYO +fjI +jtY +fjI +bVe +icb +woV +gZt +dOU +fUd +gZt +gZt +vvJ +icb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +fOf +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +rSb +xcr +rSb +bwE +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +"} +(241,1,1) = {" +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +xcr +rSb +xOz +rSb +rSb +kCF +gTe +mul +bNF +tsc +bNn +jWa +kCF +qst +vbe +nGL +uSN +bNF +pAv +bNF +kCF +ujY +sxQ +bNF +eeM +eYI +kCF +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +uYL +uYL +uYL +uYL +uYL +uYL +icb +nDK +dOU +dOU +fUd +dOU +gZt +cSb +icb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +nUD +rSb +rSb +xcr +rSb +rSb +ydZ +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(242,1,1) = {" +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +kCF +gTe +mul +rcj +txp +bNF +onp +kCF +kCF +kCF +kCF +lnX +jcN +kCF +kCF +kCF +kCF +kCF +vrN +cBH +kCF +kCF +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +icb +icb +fNr +fNr +dpf +rpY +szx +icb +icb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +abG +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hYJ +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +"} +(243,1,1) = {" +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +rSb +rSb +kCF +kCF +kCF +kCF +kCF +kCF +kCF +kCF +rSb +rSb +kCF +kCF +kCF +kCF +rSb +rSb +rSb +rSb +cJv +cJv +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +icb +lUX +lUX +fwt +icb +icb +icb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +abG +rSb +rSb +rSb +xOz +xcr +rSb +rSb +rSb +wRn +rSb +rSb +rSb +rSb +rSb +qBi +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +wVa +rSb +rSb +rSb +"} +(244,1,1) = {" +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +abG +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +gKk +kJp +hDc +aSr +xPY +ksp +gKk +rSb +rSb +abG +rSb +nUD +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +nhE +rSb +rSb +bwE +rSb +rSb +rSb +xcr +rSb +abG +rSb +xcr +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +xcr +rSb +rSb +rSb +rSb +"} +(245,1,1) = {" +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +xcr +xOz +rSb +rSb +rSb +xOz +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +wMY +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +gKk +qDT +vZj +kXf +ulc +jMw +gKk +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rtA +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +hBQ +dwS +rSb +rSb +lYH +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +hBQ +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +xOz +hBQ +rSb +rSb +"} +(246,1,1) = {" +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +woD +mec +cTk +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +gKk +gKk +vMc +alA +luW +gKk +gKk +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +duR +abG +abG +mvD +rSb +rSb +hBQ +rSb +rSb +qBi +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(247,1,1) = {" +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +lHv +lHv +lHv +lHv +lHv +rSb +rSb +rSb +rSb +rSb +mPo +gPO +rSb +rSb +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +hBQ +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +gKk +gKk +gKk +gKk +gKk +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +rSb +dkR +xOz +rSb +rSb +xJx +rSb +jOo +jOo +rSb +abG +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +"} +(248,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +lHv +ilH +btl +kwb +lHv +igX +drF +kdH +rSb +rSb +rSb +rSb +rSb +lHv +lHv +lHv +lHv +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +rSb +xOz +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +xcr +rSb +rSb +rSb +xcr +rSb +xcr +ixU +oVa +lcz +lWG +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +rSb +xOz +rSb +rSb +xcr +rSb +rSb +rSb +rSb +"} +(249,1,1) = {" +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +lHv +kwb +bhK +uYk +fCQ +kwb +kwb +vqr +rSb +rSb +rSb +lHv +lHv +lHv +fSJ +bPa +lHv +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rtA +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +aDz +rSb +nhE +ixU +oVa +sGS +rdA +smr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +xOz +rSb +abG +rSb +rSb +"} +(250,1,1) = {" +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +lHv +cxM +duc +xIP +lRk +eXd +noO +lHv +rSb +rSb +rSb +lHv +oqJ +kwb +xIP +piX +lHv +hBQ +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +xOz +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +ixU +oVa +sGS +sGS +sGS +lcz +smr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +"} +(251,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +lHv +kwb +itH +rKQ +apx +aer +kwb +dlR +rSb +wMY +rSb +dlR +kwb +piX +piX +kwb +bYZ +lWG +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +hBQ +rSb +adm +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +xcr +rSb +gNA +oVa +sGS +sGS +hMv +sGS +sGS +lcz +lWG +rSb +bwE +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +"} +(252,1,1) = {" +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +lHv +kwb +rBJ +mMA +kwb +bhK +kwb +lHv +rSb +ktp +rSb +lHv +unZ +jnw +piX +cxM +rvt +lWG +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +xOz +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +lYH +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +gNA +bLB +sGS +sGS +sGS +sGS +sGS +rdA +cAQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +xcr +rSb +rSb +"} +(253,1,1) = {" +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +xcr +rSb +rSb +lHv +kwb +mBR +llx +btl +kwb +oqJ +lHv +rSb +rSb +gNA +unl +kwb +vCF +fEl +kwb +lHv +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +abG +rSb +rSb +hBQ +rSb +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +gNA +bLB +sGS +sGS +sGS +hMv +sGS +rdA +lWG +rSb +nEu +bwE +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +"} +(254,1,1) = {" +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lHv +lHv +lHv +lHv +lHv +lHv +lHv +lHv +rSb +rSb +gNA +anW +fip +eXd +kwb +ppl +lHv +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rtA +rSb +rSb +abG +rSb +abG +abG +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +gNA +bLB +hMv +sGS +sGS +sGS +sGS +rdA +lWG +xcr +bwE +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +"} +(255,1,1) = {" +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lHv +pss +mWu +bOv +puE +lHv +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +bwE +rSb +yhh +bLB +sGS +sGS +xml +sGS +sGS +rdA +pcE +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +"} +(256,1,1) = {" +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +xOz +rSb +rSb +hBQ +lHv +lHv +lHv +lHv +lHv +lHv +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rtA +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +gNA +bLB +sGS +sGS +sGS +sGS +sGS +rdA +lWG +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +"} +(257,1,1) = {" +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lyE +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +hBQ +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +gNA +bLB +sGS +sGS +sGS +hMv +sGS +rdA +cAQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +"} +(258,1,1) = {" +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +jOo +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +lyE +rSb +rSb +xcr +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +fcF +bLB +sGS +sGS +sGS +sGS +sGS +rdA +lWG +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +hBQ +rSb +rSb +"} +(259,1,1) = {" +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +hBQ +rSb +rSb +lHv +lHv +lHv +lHv +kan +lHv +dSK +lHv +lHv +lHv +lHv +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +abG +bwE +rSb +gNA +bLB +sGS +sGS +sGS +sGS +sGS +rdA +cAQ +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(260,1,1) = {" +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +lHv +bhK +kwb +bvS +kwb +kwb +jtl +jtl +jtl +jtl +lHv +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +xOz +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +xcr +nEu +rSb +gNA +uBf +xep +wfi +wfi +wfi +xep +ezX +lWG +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +"} +(261,1,1) = {" +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +wwA +kwb +kns +kwb +bhK +pnh +xIP +jtl +clf +fGW +lHv +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +xcr +hBQ +gNA +xep +eZV +fOC +gAQ +aRl +qtM +xep +lWG +fKQ +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +xcr +"} +(262,1,1) = {" +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +wwA +kwb +bhK +ppl +mWu +jCG +eMo +xjM +pjE +fGW +lHv +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +hBQ +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +gNA +xep +xHb +xHb +gbq +qdX +gPj +xep +lWG +rSb +abG +rSb +rSb +rSb +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +"} +(263,1,1) = {" +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +lHv +kwb +kwb +kwb +kwb +pdA +kwb +uYk +gET +jtl +uQF +lWG +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +gNA +xep +poc +poc +mgw +coL +fWj +xep +lWG +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +xcr +rSb +rSb +"} +(264,1,1) = {" +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +lHv +lHv +kan +lHv +lHv +lHv +lHv +lHv +clf +jtl +eFo +lWG +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +xOz +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +hBQ +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +bwE +gNA +xep +clf +clf +clf +poc +eup +xep +lWG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(265,1,1) = {" +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lHv +tJy +kwb +xIP +kwb +kwb +dya +ppl +jtl +jtl +kPU +lWG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +pOc +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +wVa +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +xcr +rSb +gNA +bLB +sGS +sGS +mCq +clf +clf +xep +lWG +rSb +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +hBQ +rSb +rSb +"} +(266,1,1) = {" +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +wwA +kwb +bhK +kwb +uYk +kwb +ePA +jtl +bQS +jtl +kvq +lWG +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lYH +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +gNA +bLB +sGS +sGS +sGS +sGS +gof +rdA +lWG +hBQ +xcr +rSb +rSb +xcr +abG +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +"} +(267,1,1) = {" +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +wwA +kwb +uYk +aer +kwb +bhK +vCF +qSq +cuu +cPX +lHv +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +abG +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +hBQ +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +gNA +bLB +sGS +sGS +xmi +pET +sGS +rdA +uvK +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +"} +(268,1,1) = {" +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +lHv +gZm +rIA +lxY +mWu +drb +kwb +vXL +pjE +jtl +lHv +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +gNA +bLB +sGS +sGS +sGS +stk +snk +rdA +lWG +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +"} +(269,1,1) = {" +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +lHv +lHv +lHv +lHv +lHv +lHv +lHv +lHv +lHv +lHv +lHv +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +hBQ +xcr +rSb +rSb +abG +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +gNA +bRK +aLA +clf +hMv +sGS +nkP +rdA +lWG +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +"} +(270,1,1) = {" +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rtA +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +xcr +fKQ +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +adm +rSb +xOz +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +rSb +xOz +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +gNA +xep +poc +ljq +clf +clf +clf +xep +pcE +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rtA +"} +(271,1,1) = {" +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +xOz +rSb +rSb +rSb +rSb +rSb +adm +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +abG +rSb +rSb +gNA +xep +xep +xep +gfy +xep +xep +xep +lWG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(272,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +gNA +xep +olh +snM +xHb +jhl +eRA +xep +cAQ +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +"} +(273,1,1) = {" +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +hBQ +xep +olh +bEX +qpB +uqt +tGE +xep +rSb +nUD +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +mXd +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +mqQ +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +"} +(274,1,1) = {" +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +fKQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xep +dlN +aGX +kmG +okS +dlN +xep +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +doD +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +"} +(275,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +pOc +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +dlN +dlN +dlN +dlN +dlN +rSb +rSb +xOz +abG +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +mqQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +"} +(276,1,1) = {" +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +adm +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rtA +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +"} +(277,1,1) = {" +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +adm +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +dkR +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +lYH +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +fKQ +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +hBQ +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +dkR +rSb +rSb +"} +(278,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +xOz +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +hBQ +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +gqg +pvn +swG +qsT +qsT +pvn +enu +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +"} +(279,1,1) = {" +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +evW +lfP +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +hBQ +rSb +yer +pvn +pvn +csN +pvn +wos +pvn +csN +csN +csN +aBT +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(280,1,1) = {" +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +mip +evW +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +gqg +xgX +xgX +pvn +rkX +eiT +iBY +csN +jYO +csN +hLW +hzQ +eIU +pvn +xgX +csN +enu +rSb +rSb +rSb +xcr +rSb +rSb +"} +(281,1,1) = {" +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +eUJ +rSb +csD +rSb +evW +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xgX +fhP +pJc +nBH +tXH +wXQ +yhy +csN +lOH +csN +qOH +oEM +hcN +anw +xUD +ilo +mBn +rSb +hBQ +rSb +rSb +rSb +rSb +"} +(282,1,1) = {" +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +mip +rSb +lfP +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xgX +siP +wSI +tXH +lty +agg +hoZ +csN +sZT +tzB +oYo +hpp +qkS +mxH +dxw +msF +mBn +rSb +rSb +rSb +xcr +rSb +rSb +"} +(283,1,1) = {" +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +lfP +evW +lfP +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +jXl +xgX +pvn +wWt +eek +jsf +tdZ +hxi +bJY +bJY +imK +tTO +rrw +nso +gvM +pvn +hor +rSb +rSb +xcr +rSb +rSb +hBQ +"} +(284,1,1) = {" +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +xcr +adm +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +jXl +pvn +csN +csN +csN +csN +csN +csN +pho +pvn +pvn +llL +pvn +hor +rSb +rSb +xOz +rSb +rSb +rSb +rSb +"} +(285,1,1) = {" +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +lGI +kXq +aoZ +xHl +csN +wnZ +vta +nJs +csN +mYU +pvn +pvn +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +"} +(286,1,1) = {" +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +abG +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +hBQ +lGI +jrs +rqh +muV +csN +bPb +tRn +nJs +csN +kIy +msF +mBn +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +"} +(287,1,1) = {" +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +qUo +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lGI +cks +hoD +fwb +wYf +moF +cyt +pbV +fRn +rFl +msF +mBn +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +"} +(288,1,1) = {" +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +abG +rSb +lGI +jyK +nNC +xUn +csN +qcT +mSV +ncb +csN +jCm +msF +mBn +hBQ +rSb +rSb +nUD +rSb +tsm +rSb +rSb +"} +(289,1,1) = {" +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +rSb +lGI +hPt +pZB +rzL +csN +cdM +nwv +oik +csN +khn +pvn +pvn +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +"} +(290,1,1) = {" +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rtA +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +xcr +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +hBQ +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +yer +pvn +csN +csN +csN +csN +csN +csN +jOk +pvn +pvn +rXK +pvn +aBT +rSb +rSb +rSb +rSb +rSb +xcr +hBQ +"} +(291,1,1) = {" +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lYH +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +yer +xgX +pvn +wCz +lwg +nZb +rPF +bWb +iIv +jCf +qBT +vzz +qBT +qBT +jqB +pvn +aBT +hBQ +rSb +rSb +rSb +rSb +rSb +"} +(292,1,1) = {" +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +nUD +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +hBQ +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xgX +aFp +azt +gSQ +tRn +heQ +odI +csN +rRL +lGG +qBT +aMn +xdQ +qBT +tYh +avg +wtt +rSb +xcr +rSb +rSb +abG +rSb +"} +(293,1,1) = {" +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +xcr +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +dkR +rSb +rSb +xgX +mwA +uLy +uYC +gSQ +wlv +hHb +csN +siE +csN +jqB +pOW +pJJ +bNw +mtM +maS +wtt +rSb +rSb +rSb +rSb +rSb +hBQ +"} +(294,1,1) = {" +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +xOz +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +opa +xgX +xgX +pvn +pSa +oNW +nxt +csN +vTB +csN +vdI +eCJ +eCJ +pvn +xgX +csN +aMf +rSb +xcr +rSb +rSb +hBQ +rSb +"} +(295,1,1) = {" +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +xcr +rSb +abG +rSb +rSb +rSb +abG +abG +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xOz +rSb +rSb +rSb +jXl +csN +csN +csN +pvn +dxv +pvn +csN +csN +csN +hor +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +"} +(296,1,1) = {" +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +xcr +rSb +abG +rSb +rSb +xcr +rSb +rSb +abG +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +xOz +rSb +xcr +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +abG +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +adm +rSb +rSb +rSb +rSb +rSb +opa +pvn +lAF +lfn +dfD +pvn +aMf +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +"} +(297,1,1) = {" +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +hBQ +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +"} +(298,1,1) = {" +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +abG +abG +rSb +qBi +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +hBQ +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +dkR +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +xcr +"} +(299,1,1) = {" +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +abG +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +pOc +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +qUo +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +xOz +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +"} +(300,1,1) = {" +abG +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +lYH +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +abG +rSb +rSb +rSb +xcr +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +xOz +rSb +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +abG +rSb +rSb +rSb +rSb +xOz +hBQ +rSb +rSb +xcr +rSb +abG +abG +rSb +rSb +xOz +rSb +abG +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +hBQ +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +abG +abG +rSb +rSb +lYH +rSb +xOz +rSb +xOz +rSb +abG +rSb +rSb +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +xcr +rSb +wVa +rSb +rSb +rSb +rSb +abG +abG +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +lYH +rSb +xOz +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +dkR +rSb +rSb +rSb +hBQ +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xcr +rSb +xcr +rSb +rSb +rSb +xcr +rSb +rSb +rSb +rSb +rSb +rSb +rSb +xOz +rSb +rSb +rSb +rSb +"} diff --git a/_maps/map_files/event/Station/delta_old.dmm b/_maps/map_files/event/Station/delta_old.dmm index 11e9489913ce..3a156f1f9072 100644 --- a/_maps/map_files/event/Station/delta_old.dmm +++ b/_maps/map_files/event/Station/delta_old.dmm @@ -940,7 +940,7 @@ dir = 8; icon_state = "darkbluecorners" }, -/area/construction/hallway) +/area/aisat/aihallway) "aon" = ( /obj/structure/table/wood, /obj/item/camera, @@ -3392,18 +3392,6 @@ icon_state = "neutralcorner" }, /area/hallway/primary/fore) -"aGE" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 3; - name = "3maintenance loot spawner" - }, -/obj/machinery/conveyor{ - id = "cargodelivery"; - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/delivery) "aGF" = ( /obj/machinery/camera{ c_tag = "Arrivals Shuttle South West"; @@ -4061,13 +4049,6 @@ "aKD" = ( /turf/simulated/floor/plating, /area/maintenance/casino) -"aKF" = ( -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/storage) "aKK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -4130,6 +4111,31 @@ }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"aKW" = ( +/obj/machinery/autolathe, +/obj/machinery/door/window/brigdoor{ + dir = 1; + id = "Autolathe"; + name = "Autolathe Access"; + req_access = list(47) + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/door/firedoor, +/obj/item/stack/sheet/metal{ + amount = 10 + }, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "researchdesk1"; + name = "Research Desk Shutters" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) "aKY" = ( /obj/machinery/door/airlock/engineering/glass{ name = "Turbine Generator Access"; @@ -4703,6 +4709,17 @@ icon_state = "brown" }, /area/crew_quarters/chief) +"aOC" = ( +/obj/structure/window/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "aOF" = ( /obj/structure/cable{ icon_state = "1-2" @@ -5247,20 +5264,6 @@ icon_state = "arrival" }, /area/hallway/secondary/entry) -"aSl" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/obj/machinery/conveyor{ - id = "garbage"; - dir = 9 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "aSy" = ( /turf/simulated/wall/r_wall, /area/maintenance/turbine) @@ -6807,17 +6810,6 @@ /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry) -"bcz" = ( -/obj/machinery/disposal/deliveryChute{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk, -/obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/quartermaster/sorting) "bcA" = ( /obj/effect/spawner/window/reinforced, /obj/structure/sign/vacuum, @@ -9076,18 +9068,6 @@ }, /turf/simulated/floor/plasteel, /area/atmos) -"brF" = ( -/obj/structure/plasticflaps/mining, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/quartermaster/storage) "brG" = ( /obj/machinery/door/airlock/engineering/glass{ name = "Mechanic Workshop"; @@ -9372,13 +9352,6 @@ icon_state = "brown" }, /area/quartermaster/storage) -"bta" = ( -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 9 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/storage) "btd" = ( /turf/simulated/wall/r_wall, /area/turret_protected/ai) @@ -11549,17 +11522,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/disposal) -"bCh" = ( -/obj/structure/window/reinforced, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/conveyor{ - id = "garbage"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "bCj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -11890,6 +11852,14 @@ icon_state = "vault" }, /area/storage/tech) +"bDE" = ( +/obj/machinery/recycler, +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "bDG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -12045,7 +12015,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "bEr" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -12110,6 +12080,13 @@ }, /turf/space, /area/space) +"bEE" = ( +/obj/effect/decal/warning_stripes/southeastcorner, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "bEG" = ( /obj/effect/decal/warning_stripes/south, /obj/structure/disposalpipe/segment, @@ -12787,6 +12764,9 @@ /obj/structure/cable{ icon_state = "1-8" }, +/obj/item/qm_quest_tablet{ + pixel_y = -3 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -13186,30 +13166,12 @@ icon_state = "dark" }, /area/bridge/meeting_room) -"bKF" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/conveyor{ - id = "garbage"; - dir = 5 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "bKH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /turf/simulated/floor/bluegrid, /area/turret_protected/ai_upload) -"bKK" = ( -/obj/machinery/recycler, -/obj/machinery/conveyor{ - id = "garbage"; - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "bKN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -13751,7 +13713,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "bNS" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -13947,7 +13909,7 @@ /turf/simulated/floor/plasteel, /area/engineering/controlroom) "bOG" = ( -/obj/item/aiModule/reset, +/obj/item/ai_module/reset, /obj/structure/table/glass, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -14007,20 +13969,6 @@ /obj/machinery/ai_status_display, /turf/simulated/wall, /area/hallway/secondary/entry/lounge) -"bOT" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/bed/dogbed, -/mob/living/simple_animal/pet/sloth/paperwork, -/obj/machinery/computer/guestpass{ - pixel_x = 30 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "brown" - }, -/area/quartermaster/qm) "bOU" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -14206,7 +14154,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "bPU" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 4 @@ -14639,7 +14587,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "bRF" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/emitter{ @@ -14669,7 +14617,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "bRT" = ( /obj/structure/cable{ icon_state = "1-2" @@ -16394,7 +16342,6 @@ scrub_N2O = 1; scrub_Toxins = 1 }, -/obj/effect/landmark/start/barber, /turf/simulated/floor/plasteel{ icon_state = "barber" }, @@ -17087,7 +17034,7 @@ /obj/structure/lattice, /obj/machinery/light/small, /turf/space, -/area/aisat) +/area/aisat/aihallway) "ccC" = ( /obj/machinery/status_display{ pixel_y = 32 @@ -17359,25 +17306,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/maintcentral) -"cdQ" = ( -/obj/effect/decal/warning_stripes/east, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/storage) -"cdR" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/conveyor/inverted{ - id = "QMLoad2"; - dir = 6 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/storage) "cdS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -18904,14 +18832,6 @@ /obj/structure/chair/comfy/brown, /turf/simulated/floor/carpet/black, /area/bridge/vip) -"clQ" = ( -/obj/structure/plasticflaps/mining, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/quartermaster/storage) "clT" = ( /obj/machinery/atmospherics/pipe/simple/visible/universal{ dir = 4 @@ -19415,14 +19335,6 @@ icon_state = "arrival" }, /area/hallway/secondary/entry/commercial) -"cod" = ( -/obj/effect/decal/warning_stripes/southeast, -/turf/simulated/floor/plasteel, -/area/engineering/engine) -"cof" = ( -/obj/effect/decal/warning_stripes/southeast, -/turf/simulated/floor/plasteel, -/area/storage/secure) "coh" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/plating, @@ -19644,16 +19556,6 @@ }, /turf/simulated/floor/plating, /area/engineering/engine) -"cpi" = ( -/obj/effect/decal/warning_stripes/southeastcorner, -/turf/simulated/floor/plasteel, -/area/engineering/engine) -"cpk" = ( -/obj/machinery/power/tesla_coil, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel, -/area/storage/secure) "cpl" = ( /obj/structure/table/reinforced, /obj/machinery/cell_charger, @@ -19931,11 +19833,6 @@ icon_state = "purplefull" }, /area/janitor) -"cqU" = ( -/obj/machinery/pipedispenser/disposal, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel, -/area/storage/secure) "cqW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -19961,37 +19858,6 @@ }, /turf/simulated/wall, /area/janitor) -"cqZ" = ( -/obj/structure/plasticflaps, -/obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/quartermaster/sorting) -"cra" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel, -/area/storage/secure) -"crg" = ( -/obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/quartermaster/sorting) -"crh" = ( -/obj/machinery/camera{ - c_tag = "Cargo Backroom" - }, -/obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/quartermaster/sorting) "crj" = ( /obj/machinery/atmospherics/trinary/tvalve/digital{ dir = 8 @@ -20163,17 +20029,6 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/storage/secure) -"csn" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/quartermaster/sorting) "cso" = ( /obj/machinery/power/emitter, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -20235,17 +20090,6 @@ icon_state = "neutralcorner" }, /area/crew_quarters/serviceyard) -"csv" = ( -/obj/structure/disposaloutlet{ - dir = 8 - }, -/obj/structure/disposalpipe/trunk, -/obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/quartermaster/sorting) "csz" = ( /obj/structure/table/wood, /obj/item/radio/intercom{ @@ -21249,7 +21093,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "cwL" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -22660,7 +22504,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "cCE" = ( /turf/simulated/wall/rust, /area/space/nearstation) @@ -23734,15 +23578,6 @@ icon_state = "neutralcorner" }, /area/crew_quarters/serviceyard) -"cGl" = ( -/obj/machinery/conveyor{ - id = "QMLoad"; - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/quartermaster/storage) "cGm" = ( /obj/effect/landmark/marauder_entry, /turf/simulated/floor/plasteel{ @@ -24042,7 +23877,7 @@ network = list("SS13","MiniSat") }, /turf/space, -/area/aisat) +/area/aisat/aihallway) "cHJ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -25151,22 +24986,6 @@ icon_state = "whiteyellow" }, /area/medical/chemistry) -"cMr" = ( -/obj/structure/table/glass, -/obj/item/storage/box/masks, -/obj/item/storage/box/gloves{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/reagent_containers/spray/cleaner{ - desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; - name = "Chemistry Cleaner" - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whiteyellow" - }, -/area/medical/chemistry) "cMs" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -26291,31 +26110,6 @@ tag = "icon-whitepurple (NORTHWEST)" }, /area/medical/genetics) -"cRb" = ( -/obj/machinery/autolathe, -/obj/machinery/door/window/brigdoor{ - dir = 1; - id = "Autolathe"; - name = "Autolathe Access"; - req_access = list(47) - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/machinery/door/firedoor, -/obj/item/stack/sheet/metal{ - amount = 10 - }, -/obj/item/stack/sheet/glass{ - amount = 10 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "researchdesk1"; - name = "Research Desk Shutters"; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/toxins/lab) "cRe" = ( /obj/structure/chair{ dir = 4 @@ -26518,6 +26312,22 @@ }, /turf/simulated/floor/plasteel, /area/engineering/controlroom) +"cRL" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/applicator/burn, +/obj/item/reagent_containers/glass/bottle/charcoal, +/obj/machinery/requests_console{ + department = "Genetics"; + departmentType = 1; + name = "Genetics Requests Console"; + pixel_x = -2; + pixel_y = 25 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) "cRT" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 @@ -27093,6 +26903,13 @@ tag = "icon-whiteblue (SOUTHWEST)" }, /area/medical/biostorage) +"cUm" = ( +/obj/effect/decal/warning_stripes/southeast, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "cUn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -27321,22 +27138,6 @@ }, /turf/simulated/floor/wood, /area/bridge/meeting_room) -"cVs" = ( -/obj/machinery/camera{ - c_tag = "Research and Development"; - dir = 9; - network = list("Research","SS13") - }, -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Research Request Console"; - pixel_x = 30 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/toxins/lab) "cVy" = ( /obj/structure/chair/comfy/teal, /turf/simulated/floor/plasteel{ @@ -27520,11 +27321,11 @@ }, /area/medical/research/shallway) "cWa" = ( -/obj/item/aiModule/protectStation{ +/obj/item/ai_module/protect_station{ pixel_x = -2; pixel_y = 2 }, -/obj/item/aiModule/nanotrasen{ +/obj/item/ai_module/nanotrasen{ pixel_x = 2; pixel_y = -2 }, @@ -28445,7 +28246,7 @@ dir = 9; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "cZS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -28519,7 +28320,7 @@ dir = 5; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "daj" = ( /obj/structure/window/reinforced{ dir = 8 @@ -28928,19 +28729,6 @@ /obj/structure/flora/ausbushes/genericbush, /turf/simulated/floor/grass, /area/medical/sleeper) -"dcq" = ( -/obj/structure/plasticflaps, -/obj/structure/closet/crate/internals, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 3; - name = "3maintenance loot spawner" - }, -/obj/machinery/conveyor{ - id = "cargodelivery"; - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/sorting) "dcs" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -29464,7 +29252,7 @@ dir = 1; icon_state = "darkbluecorners" }, -/area/construction/hallway) +/area/aisat/aihallway) "deB" = ( /obj/structure/cable{ icon_state = "1-2" @@ -29652,7 +29440,7 @@ dir = 4; icon_state = "darkbluecorners" }, -/area/construction/hallway) +/area/aisat/aihallway) "deX" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/wood, @@ -29736,7 +29524,7 @@ dir = 5; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "dfr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -30299,7 +30087,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dhw" = ( /obj/structure/table/wood, /obj/machinery/light{ @@ -30635,9 +30423,9 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "diX" = ( -/obj/machinery/computer/borgupload, +/obj/machinery/computer/aiupload/cyborg, /obj/item/radio/intercom/private{ pixel_y = -28 }, @@ -30944,13 +30732,6 @@ icon_state = "white" }, /area/medical/research) -"dko" = ( -/obj/machinery/conveyor{ - id = "QMLoad"; - dir = 5 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/storage) "dkp" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -31303,7 +31084,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dlL" = ( /obj/machinery/reagentgrinder, /obj/structure/table/reinforced, @@ -31543,7 +31324,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dmz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -32468,7 +32249,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "dpR" = ( /obj/machinery/door/airlock/public{ name = "Bar"; @@ -33057,7 +32838,7 @@ dir = 10; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "dsx" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -33155,7 +32936,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "dsR" = ( /obj/item/radio/intercom{ pixel_x = -32 @@ -33252,7 +33033,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "dte" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp, @@ -33739,6 +33520,13 @@ }, /turf/simulated/floor/plating, /area/maintenance/engineering) +"dvH" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "dvJ" = ( /obj/structure/closet/secure_closet/medical2, /obj/structure/cable{ @@ -34234,7 +34022,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dxT" = ( /obj/structure/cable{ icon_state = "1-2" @@ -34286,7 +34074,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dyn" = ( /obj/structure/cable{ icon_state = "0-4" @@ -35815,7 +35603,7 @@ network = list("SS13","MiniSat") }, /turf/space, -/area/maintenance/ai) +/area/aisat/aihallway) "dFa" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -37649,14 +37437,6 @@ /obj/structure/chair/stool, /turf/simulated/floor/plating, /area/engineering/engine) -"dMs" = ( -/obj/structure/plasticflaps, -/obj/machinery/conveyor{ - id = "cargodelivery"; - dir = 8 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/delivery) "dMu" = ( /obj/structure/chair/office/dark{ dir = 8 @@ -38936,16 +38716,6 @@ icon_state = "dark" }, /area/security/permabrig) -"dSb" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/lattice, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/space, -/area/aisat) "dSc" = ( /obj/structure/window/reinforced, /obj/structure/closet/coffin, @@ -39156,19 +38926,6 @@ }, /turf/simulated/floor/plasteel, /area/engineering/engine) -"dSH" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "yellowfull" - }, -/area/engineering/engine) "dSI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -39507,16 +39264,6 @@ icon_state = "neutralcorner" }, /area/crew_quarters/locker) -"dTT" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/lattice, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/space, -/area/aisat) "dTW" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/structure/chair, @@ -40715,7 +40462,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dYc" = ( /obj/machinery/camera{ c_tag = "Central Ring Hallway West 4"; @@ -40857,7 +40604,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dYz" = ( /obj/effect/decal/warning_stripes/south, /obj/machinery/atmospherics/pipe/simple/visible{ @@ -41062,7 +40809,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "dZk" = ( /obj/structure/lattice/catwalk, /obj/structure/disposalpipe/segment{ @@ -41747,14 +41494,6 @@ icon_state = "neutralcorner" }, /area/hallway/primary/starboard/east) -"egs" = ( -/obj/machinery/light, -/obj/machinery/conveyor{ - id = "cargodelivery"; - dir = 8 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/sorting) "egu" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -41848,6 +41587,13 @@ icon_state = "whitegreencorner" }, /area/medical/virology) +"ehy" = ( +/obj/effect/decal/warning_stripes/southeast, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "ehA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -42421,17 +42167,6 @@ /obj/item/toy/figure/detective, /turf/simulated/floor/wood, /area/security/detectives_office) -"eqQ" = ( -/obj/machinery/door/poddoor{ - id_tag = "QMLoaddoor2"; - name = "supply dock loading door" - }, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/quartermaster/storage) "eqY" = ( /obj/machinery/photocopier, /turf/simulated/floor/plasteel{ @@ -42483,6 +42218,20 @@ /obj/effect/decal/cleanable/cobweb, /turf/simulated/floor/wood, /area/maintenance/library) +"erM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/machinery/conveyor{ + dir = 9; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "erO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -42762,7 +42511,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "evo" = ( /obj/structure/chair/wood{ dir = 1 @@ -42800,6 +42549,15 @@ icon_state = "neutralfull" }, /area/crew_quarters/locker) +"ewr" = ( +/obj/machinery/power/tesla_coil, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "ewt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -42975,6 +42733,16 @@ tag = "icon-whiteblue (NORTH)" }, /area/medical/sleeper) +"eyz" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) "eyI" = ( /obj/structure/chair/office/dark{ dir = 8 @@ -44509,7 +44277,7 @@ dir = 10; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "eTz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -45182,6 +44950,14 @@ icon_state = "grimy" }, /area/crew_quarters/heads/hop) +"fbZ" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + dir = 8; + id = "cargodelivery" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/delivery) "fcN" = ( /obj/structure/chair/stool, /turf/simulated/floor/plasteel{ @@ -45189,6 +44965,17 @@ icon_state = "neutralfull" }, /area/crew_quarters/locker) +"fcP" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "cargodisposals" + }, +/turf/simulated/floor/plating, +/area/quartermaster/sorting) "fcZ" = ( /obj/machinery/door/airlock/hatch/gamma{ locked = 1; @@ -45501,6 +45288,18 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/cabin3) +"fin" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor{ + id_tag = "engstorage"; + name = "Secure Storage Blast Doors" + }, +/obj/effect/decal/warning_stripes/west, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "fiH" = ( /obj/structure/cable{ icon_state = "1-2" @@ -45701,7 +45500,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "fkX" = ( /obj/effect/decal/warning_stripes/east, /obj/machinery/atmospherics/unary/vent_scrubber{ @@ -45791,7 +45590,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "fmF" = ( /obj/effect/decal/warning_stripes/north, /obj/machinery/hologram/holopad, @@ -47418,7 +47217,7 @@ network = list("SS13","MiniSat") }, /turf/space, -/area/aisat) +/area/aisat/aihallway) "fKF" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/portable_atmospherics/canister/oxygen, @@ -47522,7 +47321,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "fLz" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/atmospherics/pipe/simple/visible/yellow{ @@ -48656,16 +48455,6 @@ /obj/effect/landmark/event/blobstart, /turf/simulated/floor/plating, /area/maintenance/engineering) -"fZe" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/quartermaster/storage) "fZf" = ( /obj/effect/decal/warning_stripes/south, /obj/machinery/atmospherics/unary/vent_scrubber{ @@ -49322,6 +49111,28 @@ }, /turf/simulated/floor/engine, /area/toxins/test_chamber) +"gkH" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) "gkQ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -49484,6 +49295,16 @@ icon_state = "red" }, /area/security/customs) +"gmf" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) "gmk" = ( /obj/structure/cult/archives, /obj/machinery/newscaster{ @@ -50930,10 +50751,10 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/aiModule/oxygen, -/obj/item/aiModule/oneCrewMember, -/obj/item/aiModule/purge, -/obj/item/aiModule/antimov, +/obj/item/ai_module/oxygen, +/obj/item/ai_module/one_crew_member, +/obj/item/ai_module/purge, +/obj/item/ai_module/antimov, /obj/structure/table/glass, /turf/simulated/floor/bluegrid, /area/turret_protected/ai_upload) @@ -51836,24 +51657,15 @@ icon_state = "dark" }, /area/security/permabrig) -"gOq" = ( -/obj/structure/table/reinforced, -/obj/item/folder, -/obj/item/pen, -/obj/machinery/door/window/southleft{ - name = "Research Lab Desk"; - req_access = list(47) - }, -/obj/machinery/door/window/northleft, -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "researchdesk1"; - name = "Research Desk Shutters"; - dir = 1 +"gOs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable{ + icon_state = "4-8" }, /turf/simulated/floor/plasteel, -/area/toxins/lab) +/area/storage/secure) "gOv" = ( /obj/effect/decal/warning_stripes/northeast, /turf/simulated/floor/plating/airless, @@ -52510,7 +52322,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, -/area/construction/hallway) +/area/aisat/aihallway) "gXk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -52921,6 +52733,14 @@ /obj/item/stock_parts/cell/high, /turf/simulated/floor/bluegrid, /area/tcommsat/chamber) +"hdD" = ( +/obj/structure/plasticflaps/mining, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plating, +/area/quartermaster/storage) "hdG" = ( /turf/simulated/floor/plasteel{ dir = 1 @@ -53026,7 +52846,7 @@ "heT" = ( /obj/machinery/door/airlock/external, /turf/simulated/floor/plating, -/area/construction/hallway) +/area/aisat/aihallway) "heZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -54136,6 +53956,27 @@ /obj/effect/decal/warning_stripes/southwestcorner, /turf/simulated/floor/plating/airless, /area/engineering/engine) +"hvS" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/bed/dogbed, +/mob/living/simple_animal/pet/sloth/paperwork, +/obj/machinery/computer/guestpass{ + pixel_x = 30 + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Quartermaster's Desk"; + departmentType = 5; + name = "Quartermaster Requests Console"; + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/qm) "hvW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/decal/cleanable/dirt, @@ -55892,6 +55733,27 @@ /obj/structure/sign/securearea, /turf/simulated/wall, /area/engineering/engine) +"hUu" = ( +/obj/structure/disposaloutlet{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "hUH" = ( /obj/structure/sign/biohazard, /turf/simulated/wall, @@ -55987,6 +55849,16 @@ icon_state = "dark" }, /area/maintenance/asmaint2) +"hVE" = ( +/obj/machinery/camera{ + c_tag = "Cargo Backroom" + }, +/obj/machinery/conveyor{ + dir = 8; + id = "cargodisposals" + }, +/turf/simulated/floor/plating, +/area/quartermaster/sorting) "hVL" = ( /obj/machinery/embedded_controller/radio/airlock/airlock_controller{ id_tag = "engineering_west_airlock"; @@ -56043,6 +55915,13 @@ icon_state = "brown" }, /area/quartermaster/miningdock) +"hWy" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "cargodisposals" + }, +/turf/simulated/floor/plating, +/area/quartermaster/sorting) "hWA" = ( /turf/simulated/floor/wood{ icon_state = "wood-broken"; @@ -56123,6 +56002,15 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint) +"hXP" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) "hYi" = ( /obj/structure/cable{ icon_state = "1-2" @@ -57662,20 +57550,6 @@ icon_state = "purple" }, /area/quartermaster/miningdock) -"iuG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/conveyor{ - id = "garbage"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "iuQ" = ( /obj/machinery/vending/medical, /turf/simulated/floor/plasteel{ @@ -59441,18 +59315,6 @@ icon_state = "purple" }, /area/maintenance/xenozoo) -"iVt" = ( -/obj/effect/spawner/window/reinforced, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "researchdesk1"; - name = "Research Desk Shutters"; - dir = 1 - }, -/turf/simulated/floor/plating, -/area/toxins/lab) "iVE" = ( /obj/structure/cable{ icon_state = "1-2" @@ -59500,6 +59362,13 @@ icon_state = "white" }, /area/medical/research/restroom) +"iVR" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "iWe" = ( /obj/effect/decal/warning_stripes/east, /turf/simulated/floor/plasteel{ @@ -60326,7 +60195,7 @@ network = list("SS13","MiniSat") }, /turf/space, -/area/aisat) +/area/aisat/aihallway) "jiS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -60644,6 +60513,14 @@ }, /turf/simulated/floor/plating, /area/security/checkpoint/south) +"jnm" = ( +/obj/machinery/pipedispenser/disposal, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "jnn" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -61532,7 +61409,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "jxS" = ( /obj/machinery/alarm{ dir = 8; @@ -61610,16 +61487,6 @@ icon_state = "dark" }, /area/hydroponics) -"jyC" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/conveyor{ - id = "garbage"; - dir = 1 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "jyF" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -62603,6 +62470,16 @@ icon_state = "escape" }, /area/crew_quarters/fitness) +"jMU" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "QMLoad" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) "jNa" = ( /obj/effect/decal/warning_stripes/yellow, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -63195,15 +63072,6 @@ tag = "icon-stage_stairs" }, /area/medical/reception) -"jWn" = ( -/obj/structure/plasticflaps, -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/sorting) "jWq" = ( /obj/structure/table/glass, /obj/machinery/reagentgrinder{ @@ -63492,6 +63360,18 @@ icon_state = "dark" }, /area/crew_quarters/courtroom) +"kaU" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/obj/machinery/conveyor{ + dir = 8; + id = "cargodelivery" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) "kaX" = ( /obj/structure/cable{ icon_state = "1-2" @@ -63772,7 +63652,7 @@ dir = 4 }, /turf/space, -/area/maintenance/ai) +/area/aisat/aihallway) "kgz" = ( /obj/structure/girder, /turf/simulated/floor/plating, @@ -63782,6 +63662,22 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/xenozoo) +"kgT" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) "khf" = ( /obj/structure/cable{ icon_state = "2-4" @@ -64060,7 +63956,7 @@ dir = 8 }, /turf/space, -/area/maintenance/ai) +/area/aisat/aihallway) "klw" = ( /turf/simulated/floor/engine/n20, /area/atmos) @@ -64256,7 +64152,7 @@ dir = 4; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "kna" = ( /turf/simulated/wall/r_wall, /area/atmos/control) @@ -64976,18 +64872,6 @@ tag = "icon-whiteblue (WEST)" }, /area/medical/medbay) -"kyY" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/window/reinforced, -/obj/machinery/conveyor{ - id = "garbage"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "kzc" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -65506,7 +65390,7 @@ /area/chapel/office) "kGQ" = ( /obj/structure/table/reinforced, -/obj/item/aiModule/reset, +/obj/item/ai_module/reset, /obj/item/flash, /obj/item/flash, /obj/effect/decal/warning_stripes/yellow, @@ -65716,27 +65600,6 @@ icon_state = "white" }, /area/medical/chemistry) -"kKd" = ( -/obj/structure/disposaloutlet{ - dir = 8 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/conveyor{ - id = "garbage"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "kKi" = ( /obj/structure/cable{ icon_state = "4-8" @@ -67113,7 +66976,7 @@ network = list("SS13","MiniSat") }, /turf/space, -/area/maintenance/ai) +/area/aisat/aihallway) "liE" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -67296,7 +67159,7 @@ dir = 1 }, /turf/space, -/area/aisat) +/area/aisat/aihallway) "llN" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, @@ -67887,6 +67750,18 @@ tag = "icon-whiteblue (WEST)" }, /area/medical/ward) +"luH" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "researchdesk1"; + name = "Research Desk Shutters" + }, +/turf/simulated/floor/plating, +/area/toxins/lab) "luK" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/structure/closet/crate/internals, @@ -68278,6 +68153,18 @@ icon_state = "yellow" }, /area/engineering/break_room) +"lAj" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/obj/machinery/conveyor{ + dir = 1; + id = "cargodelivery" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/delivery) "lAr" = ( /obj/structure/cable{ icon_state = "4-8" @@ -71201,7 +71088,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "mpA" = ( /obj/structure/cable{ icon_state = "4-8" @@ -71445,7 +71332,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "msG" = ( /obj/structure/window/reinforced, /obj/structure/chair/comfy/black{ @@ -71621,7 +71508,7 @@ dir = 5; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "muV" = ( /obj/structure/cable{ icon_state = "4-8" @@ -71997,7 +71884,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "mzZ" = ( /obj/structure/sign/science{ icon_state = "doors" @@ -72471,16 +72358,6 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central/west) -"mEg" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/machinery/conveyor{ - id = "QMLoad"; - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/quartermaster/storage) "mEt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -72984,6 +72861,13 @@ icon_state = "green" }, /area/hallway/secondary/exit) +"mLQ" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "QMLoad" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) "mLS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -73029,6 +72913,18 @@ icon_state = "darkred" }, /area/security/warden) +"mMj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced, +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "mMo" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/machinery/atmospherics/unary/vent_scrubber{ @@ -73086,14 +72982,6 @@ icon_state = "darkblue" }, /area/aisat/maintenance) -"mME" = ( -/obj/structure/plasticflaps, -/obj/machinery/conveyor{ - id = "cargodelivery"; - dir = 4 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/delivery) "mMH" = ( /obj/structure/sign/poster/official/work_for_a_future{ pixel_x = 32 @@ -73737,6 +73625,19 @@ }, /turf/simulated/floor/plating, /area/engineering/engine) +"mWW" = ( +/obj/structure/plasticflaps, +/obj/structure/closet/crate/internals, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/obj/machinery/conveyor{ + dir = 1; + id = "cargodelivery" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) "mWY" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -73825,6 +73726,21 @@ icon_state = "darkblue" }, /area/turret_protected/ai) +"mYP" = ( +/obj/structure/table/wood, +/obj/item/camera_film, +/obj/item/book/manual/security_space_law, +/obj/item/reagent_containers/food/drinks/flask/detflask, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/requests_console{ + department = "Detective"; + name = "Detective Requests Console"; + pixel_x = -32 + }, +/turf/simulated/floor/carpet, +/area/security/detectives_office) "mYX" = ( /obj/structure/cable{ icon_state = "4-8" @@ -76781,13 +76697,6 @@ icon_state = "dark" }, /area/security/permahallway) -"nNc" = ( -/obj/machinery/conveyor{ - id = "QMLoad"; - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/storage) "nNj" = ( /obj/structure/closet/firecloset, /obj/effect/decal/warning_stripes/yellow, @@ -77436,7 +77345,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "nWY" = ( /obj/effect/decal/warning_stripes/west, /turf/simulated/floor/plating, @@ -78197,13 +78106,6 @@ /obj/effect/landmark/event/xeno_spawn, /turf/simulated/floor/plating, /area/maintenance/library) -"oht" = ( -/obj/machinery/conveyor{ - id = "garbage"; - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "ohx" = ( /obj/structure/cable{ icon_state = "1-2" @@ -79423,28 +79325,6 @@ temperature = 80 }, /area/toxins/server) -"oyI" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/quartermaster/storage) "oyP" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -82025,6 +81905,17 @@ icon_state = "red" }, /area/security/processing) +"pir" = ( +/obj/machinery/door/poddoor{ + id_tag = "QMLoaddoor2"; + name = "supply dock loading door" + }, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plating, +/area/quartermaster/storage) "piB" = ( /obj/machinery/light/small{ dir = 4 @@ -82062,7 +81953,7 @@ network = list("SS13","MiniSat") }, /turf/space, -/area/aisat) +/area/aisat/aihallway) "pjj" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -82087,7 +81978,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "pjI" = ( /obj/machinery/access_button{ command = "cycle_exterior"; @@ -83040,7 +82931,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "puB" = ( /turf/simulated/wall/r_wall, /area/toxins/storage) @@ -83373,6 +83264,16 @@ icon_state = "whitepurple" }, /area/medical/research/nhallway) +"pAK" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/conveyor/inverted{ + dir = 6; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) "pAL" = ( /obj/structure/cable{ icon_state = "1-2" @@ -83880,6 +83781,17 @@ }, /turf/simulated/floor/plasteel, /area/atmos) +"pGs" = ( +/obj/structure/disposaloutlet{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk, +/obj/machinery/conveyor{ + dir = 8; + id = "cargodisposals" + }, +/turf/simulated/floor/plating, +/area/quartermaster/sorting) "pGt" = ( /obj/structure/sign/greencross, /turf/simulated/wall, @@ -84991,7 +84903,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "pUL" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -86485,6 +86397,20 @@ }, /turf/simulated/floor/wood, /area/maintenance/gambling_den) +"qnZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "qol" = ( /obj/effect/decal/cleanable/blood/xeno, /obj/machinery/power/apc{ @@ -88580,15 +88506,6 @@ /obj/item/folder/blue, /turf/simulated/floor/carpet, /area/bridge/meeting_room) -"qRa" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/decal/warning_stripes/east, -/obj/machinery/conveyor{ - id = "QMLoad"; - dir = 4 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/storage) "qRn" = ( /obj/effect/decal/warning_stripes/north, /turf/simulated/floor/plasteel{ @@ -89536,6 +89453,13 @@ icon_state = "dark" }, /area/security/permahallway) +"rdz" = ( +/obj/machinery/conveyor{ + dir = 5; + id = "QMLoad" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) "rdB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -90599,7 +90523,7 @@ dir = 9; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "rtb" = ( /obj/structure/closet/coffin, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -91030,7 +90954,7 @@ /turf/simulated/wall, /area/security/processing) "rzo" = ( -/obj/item/aiModule/quarantine, +/obj/item/ai_module/quarantine, /obj/structure/table/glass, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -91663,31 +91587,6 @@ icon_state = "neutralcorner" }, /area/crew_quarters/fitness) -"rHz" = ( -/obj/structure/closet/crate{ - name = "solar pack crate" - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/item/paper/solar, -/obj/item/circuitboard/solar_control, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/tracker_electronics, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/storage/secure) "rHD" = ( /obj/machinery/atmospherics/unary/portables_connector, /obj/machinery/light{ @@ -92219,6 +92118,19 @@ "rPI" = ( /turf/simulated/wall/rust, /area/toxins/mixing) +"rPM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "rPP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -92746,6 +92658,14 @@ }, /turf/simulated/floor/plating, /area/medical/virology) +"rWG" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + dir = 8; + id = "cargodisposals" + }, +/turf/simulated/floor/plating, +/area/quartermaster/sorting) "rWW" = ( /turf/simulated/floor/plasteel{ dir = 6; @@ -93761,6 +93681,14 @@ icon_state = "dark" }, /area/bridge) +"snO" = ( +/obj/machinery/light, +/obj/machinery/conveyor{ + dir = 8; + id = "cargodelivery" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) "snP" = ( /turf/simulated/wall, /area/maintenance/disposal) @@ -94714,6 +94642,34 @@ icon_state = "darkred" }, /area/security/securearmory) +"szN" = ( +/obj/structure/closet/crate{ + name = "solar pack crate" + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/paper/solar, +/obj/item/circuitboard/solar_control, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/tracker_electronics, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "szQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/wood, @@ -94738,6 +94694,13 @@ icon_state = "purplecorner" }, /area/hallway/primary/aft) +"sAe" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) "sAv" = ( /obj/machinery/light/small, /obj/effect/decal/warning_stripes/yellow, @@ -94766,7 +94729,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "sAQ" = ( /obj/effect/decal/warning_stripes/north, /turf/simulated/floor/plasteel{ @@ -95183,7 +95146,7 @@ dir = 5; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "sGl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -95720,7 +95683,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "sOC" = ( /obj/structure/closet/secure_closet/exile, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -96061,6 +96024,28 @@ tag = "icon-cult" }, /area/lawoffice) +"sTN" = ( +/obj/structure/table/glass, +/obj/item/storage/box/masks, +/obj/item/storage/box/gloves{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; + name = "Chemistry Cleaner" + }, +/obj/machinery/requests_console{ + department = "Chemistry"; + departmentType = 2; + name = "Chemistry Requests Console"; + pixel_x = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) "sTO" = ( /obj/structure/sign/poster/official/random{ pixel_y = 32 @@ -96311,6 +96296,14 @@ icon_state = "darkblue" }, /area/security/detectives_office) +"sYg" = ( +/obj/machinery/power/emitter, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "sYB" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ dir = 1; @@ -96356,6 +96349,24 @@ }, /turf/simulated/floor/carpet/black, /area/bridge/vip) +"sZd" = ( +/obj/structure/table/reinforced, +/obj/item/folder, +/obj/item/pen, +/obj/machinery/door/window/southleft{ + name = "Research Lab Desk"; + req_access = list(47) + }, +/obj/machinery/door/window/northleft, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "researchdesk1"; + name = "Research Desk Shutters" + }, +/turf/simulated/floor/plasteel, +/area/toxins/lab) "sZg" = ( /obj/effect/decal/remains/xeno, /obj/effect/decal/cleanable/blood/xeno, @@ -99355,7 +99366,7 @@ "tOj" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, -/area/construction/hallway) +/area/aisat/aihallway) "tOq" = ( /obj/machinery/camera{ c_tag = "Arrivals South End"; @@ -100514,7 +100525,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "ufo" = ( /obj/structure/cable{ icon_state = "1-2" @@ -101385,7 +101396,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "urC" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction, /turf/simulated/wall/r_wall/coated, @@ -101758,7 +101769,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "uwZ" = ( /obj/machinery/ai_slipper, /obj/structure/cable{ @@ -101949,15 +101960,6 @@ icon_state = "dark" }, /area/turret_protected/aisat) -"uAf" = ( -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/quartermaster/storage) "uAh" = ( /obj/structure/closet/crate/freezer, /obj/item/reagent_containers/iv_bag/blood/OMinus, @@ -102245,7 +102247,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "uEV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -102415,6 +102417,15 @@ icon_state = "neutralfull" }, /area/crew_quarters/locker) +"uHj" = ( +/obj/structure/plasticflaps, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/conveyor{ + dir = 1; + id = "cargodisposals" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) "uHk" = ( /obj/structure/closet/secure_closet/security, /obj/machinery/alarm{ @@ -102777,6 +102788,16 @@ }, /turf/simulated/floor/bluegrid, /area/aisat) +"uKS" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/conveyor{ + dir = 1; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "uKT" = ( /obj/machinery/computer/security/telescreen/entertainment{ pixel_y = 32 @@ -102928,7 +102949,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "uNn" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -103010,7 +103031,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, -/area/construction/hallway) +/area/aisat/aihallway) "uOt" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -103392,7 +103413,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, -/area/construction/hallway) +/area/aisat/aihallway) "uTm" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -103845,7 +103866,7 @@ dir = 9; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "uYT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -103885,7 +103906,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "uZl" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, @@ -104235,7 +104256,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "vfb" = ( /obj/machinery/door/airlock/security/glass{ name = "Briefing Room"; @@ -104457,15 +104478,6 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/locker/locker_toilet) -"vhR" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/applicator/burn, -/obj/item/reagent_containers/glass/bottle/charcoal, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whitepurple" - }, -/area/medical/genetics) "vhU" = ( /obj/machinery/light/small{ dir = 1 @@ -105034,7 +105046,7 @@ dir = 10; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "vpK" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/yellow{ @@ -105309,7 +105321,7 @@ network = list("SS13","MiniSat") }, /turf/space, -/area/maintenance/ai) +/area/aisat/aihallway) "vtR" = ( /obj/machinery/light/small{ dir = 1 @@ -105611,7 +105623,7 @@ network = list("SS13","MiniSat") }, /turf/space, -/area/maintenance/ai) +/area/aisat/aihallway) "vxk" = ( /obj/structure/chair/office/dark{ dir = 1 @@ -106584,6 +106596,10 @@ }, /turf/simulated/floor/plating, /area/bridge/meeting_room) +"vIK" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/shuttle, +/area/shuttle/arrival/station) "vJn" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -106692,6 +106708,15 @@ "vKJ" = ( /turf/simulated/wall/r_wall, /area/security/detectives_office) +"vKP" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) "vLk" = ( /obj/structure/cable{ icon_state = "1-4" @@ -106872,16 +106897,6 @@ icon_state = "whitepurple" }, /area/medical/genetics) -"vOC" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/conveyor/inverted{ - id = "QMLoad"; - dir = 10 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/storage) "vOF" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable, @@ -107424,20 +107439,6 @@ icon_state = "white" }, /area/medical/ward) -"vUq" = ( -/obj/structure/table/wood, -/obj/item/camera_film, -/obj/item/book/manual/security_space_law, -/obj/item/reagent_containers/food/drinks/flask/detflask, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/requests_console{ - name = "Detective Requests Console"; - pixel_x = -32 - }, -/turf/simulated/floor/carpet, -/area/security/detectives_office) "vUu" = ( /obj/structure/cable{ icon_state = "4-8" @@ -107724,18 +107725,6 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central/south) -"vXN" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 3; - name = "3maintenance loot spawner" - }, -/obj/machinery/conveyor{ - id = "cargodelivery"; - dir = 8 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/sorting) "vYj" = ( /obj/structure/cable{ icon_state = "4-8" @@ -107915,6 +107904,15 @@ icon_state = "red" }, /area/security/customs) +"vZC" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/warning_stripes/east, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) "vZG" = ( /obj/structure/chair/office/dark, /obj/structure/cable{ @@ -107984,7 +107982,7 @@ dir = 4 }, /turf/space, -/area/maintenance/ai) +/area/aisat/aihallway) "waS" = ( /obj/structure/window/reinforced{ dir = 4 @@ -108084,7 +108082,7 @@ dir = 8 }, /turf/space, -/area/maintenance/ai) +/area/aisat/aihallway) "wcl" = ( /obj/machinery/door/airlock/external{ frequency = 1379; @@ -108096,7 +108094,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "wcr" = ( /obj/structure/lattice/catwalk, /obj/machinery/access_button{ @@ -108417,7 +108415,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "whc" = ( /obj/structure/cable{ icon_state = "4-8" @@ -108546,16 +108544,6 @@ icon_state = "whitepurple" }, /area/assembly/robotics) -"wjh" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/quartermaster/storage) "wjj" = ( /turf/simulated/wall/rust, /area/maintenance/library) @@ -109306,7 +109294,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "wsN" = ( /obj/structure/cable{ icon_state = "4-8" @@ -110217,6 +110205,18 @@ icon_state = "dark" }, /area/engineering/hardsuitstorage) +"wEG" = ( +/obj/structure/plasticflaps/mining, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plating, +/area/quartermaster/storage) "wEJ" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -110595,7 +110595,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "wKB" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -110678,7 +110678,7 @@ dir = 8; icon_state = "vault" }, -/area/construction/hallway) +/area/aisat/aihallway) "wMm" = ( /obj/effect/decal/warning_stripes/yellow, /obj/machinery/navbeacon{ @@ -111124,7 +111124,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluecorners" }, -/area/construction/hallway) +/area/aisat/aihallway) "wRB" = ( /obj/item/twohanded/required/kirbyplants, /obj/machinery/light_switch{ @@ -111495,7 +111495,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, -/area/construction/hallway) +/area/aisat/aihallway) "wWK" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -111612,6 +111612,22 @@ dir = 1 }, /area/security/customs) +"wYP" = ( +/obj/machinery/camera{ + c_tag = "Research and Development"; + dir = 9; + network = list("Research","SS13") + }, +/obj/machinery/requests_console{ + department = "Research"; + departmentType = 2; + name = "Research Request Console"; + pixel_x = 30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) "wYQ" = ( /turf/simulated/floor/wood{ broken = 1; @@ -111712,6 +111728,15 @@ /obj/structure/bookcase, /turf/simulated/floor/wood, /area/library) +"xaw" = ( +/obj/effect/decal/warning_stripes/east, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) "xaE" = ( /obj/structure/cable{ icon_state = "4-8" @@ -111740,7 +111765,7 @@ /turf/simulated/wall/r_wall/coated, /area/toxins/mixing) "xbr" = ( -/obj/item/aiModule/freeform, +/obj/item/ai_module/freeform, /obj/structure/table/glass, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -112569,7 +112594,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "xkm" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -112579,6 +112604,14 @@ icon_state = "neutralfull" }, /area/hallway/secondary/exit) +"xkL" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + dir = 4; + id = "cargodelivery" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/delivery) "xkY" = ( /obj/structure/lattice/catwalk, /turf/space, @@ -113167,11 +113200,11 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/aiModule/crewsimov, -/obj/item/aiModule/freeformcore, -/obj/item/aiModule/corp, -/obj/item/aiModule/paladin, -/obj/item/aiModule/robocop, +/obj/item/ai_module/crewsimov, +/obj/item/ai_module/freeformcore, +/obj/item/ai_module/corp, +/obj/item/ai_module/paladin, +/obj/item/ai_module/robocop, /obj/structure/table/glass, /turf/simulated/floor/bluegrid, /area/turret_protected/ai_upload) @@ -113402,6 +113435,13 @@ icon_state = "bluecorner" }, /area/hallway/primary/central/south) +"xuw" = ( +/obj/machinery/conveyor{ + dir = 9; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) "xux" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable, @@ -113665,7 +113705,7 @@ dir = 6; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "xwM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -114115,7 +114155,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway) +/area/aisat/aihallway) "xBS" = ( /obj/effect/decal/warning_stripes/northeastcorner, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -114325,6 +114365,17 @@ icon_state = "white" }, /area/assembly/robotics) +"xFg" = ( +/obj/machinery/disposal/deliveryChute{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk, +/obj/machinery/conveyor{ + dir = 8; + id = "cargodisposals" + }, +/turf/simulated/floor/plating, +/area/quartermaster/sorting) "xFk" = ( /obj/machinery/ai_status_display{ pixel_y = -32 @@ -115071,6 +115122,16 @@ icon_state = "neutralcorner" }, /area/toxins/mixing) +"xNv" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/conveyor{ + dir = 5; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "xNy" = ( /obj/item/radio/intercom{ dir = 4; @@ -115570,7 +115631,7 @@ dir = 8; icon_state = "vault" }, -/area/construction/hallway) +/area/aisat/aihallway) "xTh" = ( /obj/machinery/camera{ c_tag = "Server Room"; @@ -115682,7 +115743,7 @@ dir = 1; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "xUL" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/cobweb_left_frequent, @@ -115737,6 +115798,16 @@ }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"xWf" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) "xWh" = ( /obj/structure/cable{ icon_state = "2-8" @@ -116197,7 +116268,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "ybL" = ( /obj/structure/table/reinforced, /obj/item/wrench, @@ -116774,7 +116845,7 @@ dir = 5; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "yiC" = ( /obj/structure/cable{ icon_state = "1-2" @@ -116831,7 +116902,7 @@ dir = 10; icon_state = "darkblue" }, -/area/construction/hallway) +/area/aisat/aihallway) "yjA" = ( /obj/structure/particle_accelerator/particle_emitter/left{ dir = 8 @@ -122865,7 +122936,7 @@ dYy wVe iGo fFm -dSb +kfX iGo iGo iGo @@ -123117,7 +123188,7 @@ iGo iGo iGo iGo -dSb +kfX iGo iGw iGw @@ -127743,7 +127814,7 @@ dxZ dxZ dxZ dxZ -dTT +klv dxZ iGw iGw @@ -128005,7 +128076,7 @@ dZj eER dxZ fHS -dTT +klv dxZ dxZ dxZ @@ -140897,7 +140968,7 @@ nkf dXD qlu dQT -dSH +kgT dXD nkf dXD @@ -141154,7 +141225,7 @@ cbj vCh ptE tED -cpi +bEE tPv etT sMJ @@ -141411,7 +141482,7 @@ vtm fui uCs cmR -cod +ehy cpl mDe mDe @@ -141668,7 +141739,7 @@ utt cpm nqL fId -nqL +fin cpm mDe bQr @@ -141925,7 +141996,7 @@ utt wQP rSt cnB -cof +cUm cpn mDe vSK @@ -142182,7 +142253,7 @@ utt wUC dWc cpo -cqU +jnm tZR mDe vly @@ -142439,7 +142510,7 @@ utt igP dOZ dRd -cpk +ewr csm mDe feE @@ -142696,7 +142767,7 @@ utt wUC dOZ dRd -cso +sYg cso mDe vDd @@ -142953,7 +143024,7 @@ dJU lTF xKq cmO -cso +sYg cpr mDe iVc @@ -143210,7 +143281,7 @@ utt uqq pus dRe -rHz +szN cqX mDe hCy @@ -143467,7 +143538,7 @@ utt dNd qFn dRw -dWc +iVR kpR mDe yfQ @@ -143724,7 +143795,7 @@ utt qFn teJ dRw -dWc +iVR xvB mDe vly @@ -143981,7 +144052,7 @@ utt gxS cna iYh -cra +gOs tEE mDe prK @@ -144238,7 +144309,7 @@ utt jtS coh cmV -dOZ +rPM ufR mDe smf @@ -152225,7 +152296,7 @@ oBH hnE ugy iQQ -cRb +aKW oIq fVX nsS @@ -152996,7 +153067,7 @@ qhT dkn iQQ tot -iVt +luH gjV cTR cTU @@ -153253,11 +153324,11 @@ bJP vyT ugy tot -gOq +sZd aiF cTB cUY -cVs +wYP oIq cYB daE @@ -153395,7 +153466,7 @@ aaa awU aMt aMt -aRN +vIK aRN ayi nlE @@ -153510,7 +153581,7 @@ qhT dkn bNH wId -iVt +luH hXm ohz cUZ @@ -154969,14 +155040,14 @@ rVF avf axj ayA -bcz +xFg ays tZI rxE cKZ cOv cQU -vXN +kaU ayA kiI blB @@ -155226,21 +155297,21 @@ bZN bEO chC ayA -crg -jWn +hWy +uHj dQc cLc cLc cOw pqC -egs +snO ayA deG -mME +xkL dfM bxv dfM -dMs +fbZ deG grq eqN @@ -155483,7 +155554,7 @@ nhF jWD jWD ayA -cqZ +rWG ayA azs cLc @@ -155491,8 +155562,8 @@ cLc cOw cnp csF -dcq -aGE +mWW +lAj dqv cGc cKb @@ -155740,7 +155811,7 @@ aSd bbl avb ayA -crg +hWy cyH cBM cLc @@ -155837,7 +155908,7 @@ vec ueo djS dfv -vhR +cRL vkl dvr drE @@ -155997,7 +156068,7 @@ bZO bbl bNA ayA -crh +hVE bXh aCx aEB @@ -156254,7 +156325,7 @@ bZP bbl bNC ayA -csn +fcP bXh cLc cdN @@ -156511,7 +156582,7 @@ dgP wff jWD ayA -crg +hWy bXh cLc cdN @@ -156768,7 +156839,7 @@ qsv bFv bAf ayA -csv +pGs bXB azv cdN @@ -159084,7 +159155,7 @@ hCZ cua mdr aBS -oyI +gkH nKJ bzc lXS @@ -159092,7 +159163,7 @@ ctv vgm qpZ djV -cGl +hXP eZs hXt cSh @@ -159161,7 +159232,7 @@ pbX dzf pfD cKR -cMr +sTN cXs jsJ dix @@ -159341,7 +159412,7 @@ hSN cue ric tiq -uAf +vKP nKJ bzc iGN @@ -159349,7 +159420,7 @@ dmq pHT gus djV -mEg +eyz eZs luK cSh @@ -159598,7 +159669,7 @@ rsC aCE dri bxD -fZe +xWf pNE cOS lwr @@ -159606,7 +159677,7 @@ ctv eZs cYL eZs -cGl +hXP djV vKa wTS @@ -159637,7 +159708,7 @@ iGw vKJ bFQ cLe -vUq +mYP vcG vTX wwg @@ -159855,7 +159926,7 @@ dmq cuw bYJ hVC -wjh +gmf nKJ aJg vKa @@ -159863,7 +159934,7 @@ eZs vKa sZV djV -cGl +hXP eZs vKa cSh @@ -160112,7 +160183,7 @@ dmq cux gNy jvq -uAf +vKP cKW aJg dAZ @@ -160120,7 +160191,7 @@ tFA tNh hOD eZs -cGl +hXP eZs vKa dNf @@ -160369,7 +160440,7 @@ dmq cuz gNy hVC -uAf +vKP nKJ oZo eZs @@ -160377,7 +160448,7 @@ djV djV aJm eZs -cGl +hXP ebV rup cSh @@ -160626,7 +160697,7 @@ dmq cuO bZh mHQ -cdQ +xaw cLd mHQ mHQ @@ -160634,7 +160705,7 @@ dHr dHr dHr vfD -qRa +vZC dHr dHr dNr @@ -160883,15 +160954,15 @@ dmq cuS cSf cSf -cdR -aKF -bta +pAK +sAe +xuw ddO cYX ddO -dko -nNc -vOC +rdz +mLQ +jMU tkx eWq jgZ @@ -161142,7 +161213,7 @@ bBM bBM bBM bBM -brF +wEG nyK bBM nyK @@ -161399,7 +161470,7 @@ iGw iGw iGw eqA -eqQ +pir qak cOy mbm @@ -161656,7 +161727,7 @@ aaa aaa iGw bBM -clQ +hdD nyK bBM nyK @@ -161671,7 +161742,7 @@ bSJ duw bIp duw -bOT +hvS dDb cqB dXb @@ -162158,10 +162229,10 @@ aaa aaa iGw puN -bKF -jyC -jyC -aSl +xNv +uKS +uKS +erM aUq snP iGw @@ -162415,10 +162486,10 @@ aaa aaa iGw puN -bKK +bDE snP snP -bCh +aOC jkM snP iGw @@ -162672,10 +162743,10 @@ aaa aaa aaa bBS -oht +dvH qBA hrt -kyY +mMj qyB bBS iGw @@ -162929,10 +163000,10 @@ aaa aaa iGw bBS -oht +dvH ocv eMA -iuG +qnZ ose bBS aaa @@ -163186,10 +163257,10 @@ aaa iGw iGw bBS -oht +dvH wyH dWk -kKd +hUu hnU bBS iGw diff --git a/_maps/map_files/event/Station/towerstation.dmm b/_maps/map_files/event/Station/towerstation.dmm index 80238a9e0393..6ffc5f5192df 100644 --- a/_maps/map_files/event/Station/towerstation.dmm +++ b/_maps/map_files/event/Station/towerstation.dmm @@ -232,10 +232,10 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/aiModule/oxygen, -/obj/item/aiModule/oneCrewMember, -/obj/item/aiModule/purge, -/obj/item/aiModule/antimov, +/obj/item/ai_module/oxygen, +/obj/item/ai_module/one_crew_member, +/obj/item/ai_module/purge, +/obj/item/ai_module/antimov, /obj/structure/table/reinforced, /obj/machinery/door/window{ base_state = "right"; @@ -704,8 +704,8 @@ req_access = list(39) }, /turf/simulated/floor/plasteel{ - icon_state = "whitegreen"; - dir = 6 + dir = 6; + icon_state = "whitegreen" }, /area/medical/virology) "atz" = ( @@ -858,8 +858,8 @@ pixel_y = -28 }, /turf/simulated/floor/plasteel{ - icon_state = "whitegreen"; - dir = 10 + dir = 10; + icon_state = "whitegreen" }, /area/medical/virology) "axJ" = ( @@ -916,8 +916,8 @@ /area/hallway/secondary/exit) "azA" = ( /obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 4 + dir = 4; + id = "cargodisposals" }, /obj/structure/sign/deathsposal{ pixel_y = -32 @@ -972,9 +972,9 @@ "aBP" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; id_tag = "chemshuts"; - name = "Chemistry Shutters"; - dir = 2 + name = "Chemistry Shutters" }, /turf/simulated/floor/plating, /area/medical/chemistry) @@ -1319,8 +1319,8 @@ "aPe" = ( /obj/machinery/door/window{ dir = 1; - req_access = list(61); - name = "Telecommunications Access" + name = "Telecommunications Access"; + req_access = list(61) }, /turf/simulated/floor/plasteel/dark/telecomms, /area/tcommsat/server) @@ -2051,6 +2051,10 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/bar/atrium) +"bnN" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel, +/area/hallway/primary/starboard) "boT" = ( /turf/simulated/floor/bluegrid, /area/turret_protected/ai_upload) @@ -2213,8 +2217,8 @@ dir = 6 }, /turf/simulated/floor/plasteel{ - icon_state = "whitebluecorner"; - dir = 8 + dir = 8; + icon_state = "whitebluecorner" }, /area/medical/sleeper) "bvB" = ( @@ -2766,8 +2770,8 @@ /obj/machinery/door_control{ id = "researchshuts"; name = "Research Shutters Control"; - req_access = list(33); - pixel_y = 26 + pixel_y = 26; + req_access = list(33) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -2880,6 +2884,10 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/lawoffice) +"bRT" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel, +/area/hallway/secondary/exit) "bSd" = ( /obj/effect/landmark/start/doctor, /turf/simulated/floor/plasteel{ @@ -3239,8 +3247,8 @@ /obj/machinery/door_control{ id = "brigshuts"; name = "Brig Shutters Control"; - req_access = list(1,4); - pixel_y = 36 + pixel_y = 36; + req_access = list(1,4) }, /turf/simulated/floor/plasteel{ icon_state = "redfull" @@ -3309,8 +3317,8 @@ /area/space) "cdz" = ( /turf/simulated/floor/plasteel{ - icon_state = "whitegreen"; - dir = 9 + dir = 9; + icon_state = "whitegreen" }, /area/medical/virology) "cdB" = ( @@ -3416,9 +3424,9 @@ pixel_x = -8 }, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; id_tag = "kitchen"; - name = "Kitchen Shutters"; - dir = 2 + name = "Kitchen Shutters" }, /turf/simulated/floor/plasteel, /area/crew_quarters/kitchen) @@ -3815,9 +3823,9 @@ "cyG" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; id_tag = "brigshuts"; - name = "Brig Shutters"; - dir = 1 + name = "Brig Shutters" }, /turf/simulated/floor/plating, /area/security/main) @@ -3908,8 +3916,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 + dir = 8; + icon_state = "whiteblue" }, /area/medical/sleeper) "cAL" = ( @@ -4244,8 +4252,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 + dir = 8; + icon_state = "whiteblue" }, /area/medical/sleeper) "cRi" = ( @@ -5063,8 +5071,8 @@ pixel_x = 24 }, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 4 + dir = 4; + icon_state = "whitepurple" }, /area/toxins/mixing) "dsw" = ( @@ -5721,9 +5729,9 @@ /obj/item/storage/fancy/donut_box, /obj/item/reagent_containers/food/snacks/soup/misosoup, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; id_tag = "kitchen"; - name = "Kitchen Shutters"; - dir = 2 + name = "Kitchen Shutters" }, /turf/simulated/floor/plasteel/white, /area/crew_quarters/kitchen) @@ -5779,8 +5787,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 1 + dir = 1; + icon_state = "whitepurple" }, /area/toxins/mixing) "dTl" = ( @@ -6956,9 +6964,9 @@ "eIB" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; id_tag = "brigshuts"; - name = "Brig Shutters"; - dir = 8 + name = "Brig Shutters" }, /turf/simulated/floor/plating, /area/security/main) @@ -7164,6 +7172,10 @@ icon_state = "whiteblue" }, /area/medical/medbay) +"eOW" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel, +/area/medical/medbay) "ePS" = ( /obj/effect/turf_decal/delivery, /obj/structure/window/reinforced{ @@ -7237,6 +7249,17 @@ /obj/structure/closet/wardrobe/mixed, /turf/simulated/floor/shuttle, /area/shuttle/arrival/station) +"eTD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Quartermaster's Desk"; + departmentType = 5; + name = "Quartermaster Requests Console"; + pixel_x = -30 + }, +/turf/simulated/floor/carpet/black, +/area/quartermaster/storage) "eTG" = ( /obj/structure/rack, /obj/item/ammo_box/shotgun/beanbag, @@ -7508,6 +7531,16 @@ }, /turf/simulated/floor/plasteel/dark, /area/hallway/primary/central) +"fbw" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel, +/area/hallway/primary/aft) "fbE" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -7608,8 +7641,8 @@ }, /obj/effect/landmark/start/virologist, /turf/simulated/floor/plasteel{ - icon_state = "whitegreen"; - dir = 8 + dir = 8; + icon_state = "whitegreen" }, /area/medical/virology) "feZ" = ( @@ -8404,6 +8437,12 @@ "fBs" = ( /obj/effect/turf_decal/delivery, /obj/machinery/computer/scan_consolenew, +/obj/machinery/requests_console{ + department = "Genetics"; + departmentType = 1; + name = "Genetics Requests Console"; + pixel_x = -30 + }, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "whitepurple" @@ -8749,8 +8788,8 @@ /obj/effect/decal/warning_stripes/yellow, /obj/machinery/plantgenes, /turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 1 + dir = 1; + icon_state = "blue" }, /area/hydroponics) "fIT" = ( @@ -9119,8 +9158,8 @@ icon_state = "2-4" }, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 1 + dir = 1; + icon_state = "whitepurple" }, /area/toxins/mixing) "fXq" = ( @@ -9604,8 +9643,8 @@ "gpQ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 4 + dir = 4; + id = "cargodisposals" }, /turf/simulated/floor/plasteel, /area/quartermaster/storage) @@ -10594,15 +10633,15 @@ /obj/structure/cable{ icon_state = "0-2" }, -/obj/item/aiModule/protectStation{ +/obj/item/ai_module/protect_station{ pixel_x = -2; pixel_y = 2 }, -/obj/item/aiModule/nanotrasen{ +/obj/item/ai_module/nanotrasen{ pixel_x = 2; pixel_y = -2 }, -/obj/item/aiModule/freeform, +/obj/item/ai_module/freeform, /turf/simulated/floor/bluegrid, /area/turret_protected/ai_upload) "gUk" = ( @@ -10735,8 +10774,8 @@ }, /obj/machinery/computer/card/minor/hos, /obj/item/radio/intercom{ - pixel_y = -28; - pixel_x = 28 + pixel_x = 28; + pixel_y = -28 }, /obj/machinery/keycard_auth{ pixel_x = 28; @@ -10904,8 +10943,8 @@ }, /obj/structure/plasticflaps, /obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 4 + dir = 4; + id = "cargodisposals" }, /turf/simulated/floor/plasteel, /area/quartermaster/storage) @@ -11019,6 +11058,11 @@ }, /turf/simulated/floor/engine/vacuum, /area/atmos) +"hfO" = ( +/obj/machinery/camera/autoname, +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel, +/area/crew_quarters/dorms) "hgz" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -11157,10 +11201,10 @@ /area/toxins/lab) "hjb" = ( /obj/machinery/atmospherics/trinary/filter{ + dir = 4; filter_type = "n2"; name = "nitrogen filter"; - on = 1; - dir = 4 + on = 1 }, /turf/simulated/floor/plasteel, /area/atmos) @@ -11352,8 +11396,8 @@ /obj/machinery/door_control{ id = "briglock"; name = "Brig Lockdown"; - req_access = list(3); - pixel_x = -26 + pixel_x = -26; + req_access = list(3) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -12114,6 +12158,9 @@ dir = 1; pixel_y = 28 }, +/obj/item/qm_quest_tablet{ + pixel_y = -3 + }, /turf/simulated/floor/carpet/black, /area/quartermaster/storage) "hNH" = ( @@ -12655,8 +12702,8 @@ dir = 4 }, /obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 4 + dir = 4; + id = "cargodisposals" }, /turf/simulated/floor/plasteel, /area/quartermaster/storage) @@ -13288,9 +13335,9 @@ name = "Access Queue" }, /obj/machinery/door/window/brigdoor/northleft{ + dir = 8; name = "Access Desk"; - req_access = list(57); - dir = 8 + req_access = list(57) }, /obj/machinery/door/poddoor/shutters/preopen{ dir = 2; @@ -13372,8 +13419,8 @@ /obj/machinery/light, /obj/machinery/chem_master, /turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 6 + dir = 6; + icon_state = "blue" }, /area/hydroponics) "iGn" = ( @@ -13474,9 +13521,9 @@ pixel_x = 30 }, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; id_tag = "kitchen"; - name = "Kitchen Shutters"; - dir = 2 + name = "Kitchen Shutters" }, /turf/simulated/floor/plasteel, /area/crew_quarters/kitchen) @@ -13506,6 +13553,10 @@ /obj/structure/cable, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry) +"iJe" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel, +/area/crew_quarters/bar/atrium) "iJx" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/turf_decal/delivery, @@ -13725,11 +13776,11 @@ /obj/machinery/alarm{ pixel_y = 24 }, -/obj/item/aiModule/reset{ +/obj/item/ai_module/reset{ pixel_x = -3; pixel_y = 3 }, -/obj/item/aiModule/quarantine{ +/obj/item/ai_module/quarantine{ pixel_y = -3 }, /turf/simulated/floor/bluegrid, @@ -14164,8 +14215,8 @@ }, /obj/machinery/door/window/brigdoor/security{ dir = 2; - req_access = list(63); - name = "Brig Medical Bay" + name = "Brig Medical Bay"; + req_access = list(63) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -14569,11 +14620,11 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/aiModule/crewsimov, -/obj/item/aiModule/freeformcore, -/obj/item/aiModule/corp, -/obj/item/aiModule/paladin, -/obj/item/aiModule/robocop, +/obj/item/ai_module/crewsimov, +/obj/item/ai_module/freeformcore, +/obj/item/ai_module/corp, +/obj/item/ai_module/paladin, +/obj/item/ai_module/robocop, /obj/structure/table/reinforced, /obj/machinery/door/window{ base_state = "right"; @@ -14833,8 +14884,8 @@ }, /obj/item/reagent_containers/glass/bucket, /turf/simulated/floor/plasteel{ - icon_state = "green"; - dir = 10 + dir = 10; + icon_state = "green" }, /area/hydroponics) "jAi" = ( @@ -15189,6 +15240,18 @@ }, /turf/simulated/floor/plasteel, /area/security/main) +"jMQ" = ( +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Blueshield"; + departmentType = 5; + name = "Blueshield Requests Console"; + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bcarpet05" + }, +/area/bridge) "jMV" = ( /obj/structure/window/reinforced{ dir = 4 @@ -15393,9 +15456,9 @@ "jUc" = ( /obj/structure/table/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; id_tag = "kitchen"; - name = "Kitchen Shutters"; - dir = 2 + name = "Kitchen Shutters" }, /turf/simulated/floor/plasteel, /area/crew_quarters/kitchen) @@ -16454,6 +16517,12 @@ /obj/structure/window/reinforced, /turf/simulated/floor/glass/reinforced, /area/hallway/secondary/entry) +"kFx" = ( +/obj/machinery/computer/supplyquest/workers{ + pixel_y = -2 + }, +/turf/simulated/wall/r_wall, +/area/quartermaster/storage) "kFy" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -16500,8 +16569,8 @@ /obj/machinery/door_control{ id = "briglock"; name = "Brig Lockdown"; - req_access = list(3); - pixel_x = -26 + pixel_x = -26; + req_access = list(3) }, /turf/simulated/wall/r_wall, /area/security/warden) @@ -17305,18 +17374,18 @@ /obj/machinery/door_control{ id = "engsm"; name = "Supermatter Blast Doors"; + pixel_x = -24; pixel_y = -8; - req_access = list(10); - pixel_x = -24 + req_access = list(10) }, /obj/machinery/door_control{ id = "smbolts"; name = "Supermatter Bolt Control"; normaldoorcontrol = 1; + pixel_x = -24; pixel_y = 8; req_access = list(56); - specialfunctions = 4; - pixel_x = -24 + specialfunctions = 4 }, /turf/simulated/floor/engine, /area/engineering/engine) @@ -17884,9 +17953,9 @@ "lCt" = ( /obj/structure/table/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; id_tag = "kitchen"; - name = "Kitchen Shutters"; - dir = 2 + name = "Kitchen Shutters" }, /turf/simulated/floor/plasteel/white, /area/crew_quarters/kitchen) @@ -18366,7 +18435,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, -/obj/effect/landmark/start/barber, /turf/simulated/floor/plasteel{ icon_state = "barber" }, @@ -18580,8 +18648,8 @@ dir = 8 }, /turf/simulated/floor/glass/reinforced{ - oxygen = 0; nitrogen = 0; + oxygen = 0; temperature = 2.7 }, /area/space) @@ -19057,8 +19125,8 @@ dir = 10 }, /turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 + dir = 8; + icon_state = "whiteblue" }, /area/medical/sleeper) "mmJ" = ( @@ -19072,6 +19140,10 @@ }, /turf/simulated/floor/plating/airless, /area/toxins/test_area) +"mmO" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel, +/area/medical/research) "mmX" = ( /obj/machinery/door/airlock/atmos{ name = "Atmospherics Access"; @@ -19131,8 +19203,8 @@ }, /obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 4 + dir = 4; + icon_state = "whitepurple" }, /area/toxins/mixing) "mqd" = ( @@ -19681,8 +19753,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ - icon_state = "whitebluecorner"; - dir = 8 + dir = 8; + icon_state = "whitebluecorner" }, /area/medical/sleeper) "mIi" = ( @@ -20313,6 +20385,13 @@ icon_state = "whiteblue" }, /area/medical/sleeper) +"ncm" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel/dark, +/area/hallway/secondary/entry) "ncD" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp, @@ -20714,8 +20793,8 @@ /area/turret_protected/ai_upload) "nrB" = ( /obj/machinery/atmospherics/trinary/filter{ - dir = 8; desc = "Отфильтровывает углекислый газ из трубы и отправляет его в камеру хранения"; + dir = 8; filter_type = 3; name = "Фильтр Углекислого Газа (СO2)"; on = 1; @@ -21522,8 +21601,8 @@ /area/gateway) "nSq" = ( /turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 1 + dir = 1; + icon_state = "blue" }, /area/hydroponics) "nTs" = ( @@ -22233,9 +22312,9 @@ req_access = list(35) }, /obj/machinery/door/window/eastleft{ + dir = 8; name = "Kitchen Desk"; - req_access = list(28); - dir = 8 + req_access = list(28) }, /turf/simulated/floor/plating, /area/crew_quarters/kitchen) @@ -22256,8 +22335,8 @@ /area/crew_quarters/dorms) "oqA" = ( /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 9 + dir = 9; + icon_state = "whitepurple" }, /area/toxins/mixing) "orb" = ( @@ -22312,8 +22391,8 @@ /area/medical/medbay) "otM" = ( /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 1 + dir = 1; + icon_state = "whitepurple" }, /area/toxins/mixing) "ouf" = ( @@ -22842,8 +22921,8 @@ /area/hallway/primary/aft) "oLj" = ( /turf/simulated/floor/glass/reinforced{ - oxygen = 0; nitrogen = 0; + oxygen = 0; temperature = 2.7 }, /area/space) @@ -23023,8 +23102,8 @@ /area/hallway/primary/starboard) "oSt" = ( /obj/machinery/atmospherics/trinary/filter{ - dir = 8; desc = "Отфильтровывает оксид азота из трубы и отправляет его в камеру хранения."; + dir = 8; filter_type = 4; name = "Фильтр Оксида Азота (N2O)"; on = 1; @@ -23428,8 +23507,8 @@ pixel_y = -32 }, /obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 4 + dir = 4; + id = "cargodisposals" }, /turf/simulated/floor/plasteel, /area/quartermaster/storage) @@ -23860,8 +23939,8 @@ icon_state = "1-2" }, /turf/simulated/floor/plasteel{ - icon_state = "whitegreen"; - dir = 4 + dir = 4; + icon_state = "whitegreen" }, /area/medical/virology) "pxE" = ( @@ -24150,9 +24229,9 @@ "pFi" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; id_tag = "chemshuts"; - name = "Chemistry Shutters"; - dir = 1 + name = "Chemistry Shutters" }, /turf/simulated/floor/plating, /area/medical/chemistry) @@ -24207,9 +24286,9 @@ dir = 4 }, /obj/machinery/door/window/southleft{ + dir = 8; name = "Research Lab Desk"; - req_access = list(47); - dir = 8 + req_access = list(47) }, /obj/machinery/door/poddoor/shutters/preopen{ id_tag = "researchshuts"; @@ -24294,8 +24373,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ - icon_state = "whitebluecorner"; - dir = 1 + dir = 1; + icon_state = "whitebluecorner" }, /area/medical/sleeper) "pHL" = ( @@ -24630,8 +24709,8 @@ dir = 1 }, /obj/item/radio/intercom{ - pixel_y = -28; - pixel_x = -28 + pixel_x = -28; + pixel_y = -28 }, /turf/simulated/floor/plasteel{ icon_state = "bcarpet05" @@ -24716,8 +24795,8 @@ pixel_x = 28 }, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 4 + dir = 4; + icon_state = "whitepurple" }, /area/toxins/mixing) "pVk" = ( @@ -24770,8 +24849,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 1 + dir = 1; + icon_state = "whitepurple" }, /area/toxins/mixing) "pWM" = ( @@ -24831,7 +24910,7 @@ /turf/simulated/floor/plasteel/stairs/left, /area/crew_quarters/dorms) "pYG" = ( -/obj/machinery/computer/borgupload, +/obj/machinery/computer/aiupload/cyborg, /obj/structure/cable{ icon_state = "1-8" }, @@ -24917,8 +24996,8 @@ /area/security/permabrig) "qcu" = ( /obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 4 + dir = 4; + id = "cargodisposals" }, /turf/simulated/floor/plasteel, /area/quartermaster/storage) @@ -25181,8 +25260,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 5 + dir = 5; + icon_state = "whitepurple" }, /area/toxins/mixing) "qkI" = ( @@ -25295,8 +25374,8 @@ pixel_x = 32 }, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 4 + dir = 4; + icon_state = "whitepurple" }, /area/toxins/mixing) "qph" = ( @@ -25509,12 +25588,12 @@ pixel_x = 32 }, /obj/item/radio/intercom/custom{ - pixel_y = 14; - pixel_x = 32 + pixel_x = 32; + pixel_y = 14 }, /obj/item/radio/intercom{ - pixel_y = -15; - pixel_x = 32 + pixel_x = 32; + pixel_y = -15 }, /turf/simulated/floor/greengrid, /area/turret_protected/aisat) @@ -25532,8 +25611,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 1 + dir = 1; + icon_state = "whitepurple" }, /area/toxins/mixing) "qxq" = ( @@ -26493,8 +26572,8 @@ "rdP" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow, /turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 6 + dir = 6; + icon_state = "blue" }, /area/atmos) "ree" = ( @@ -27228,8 +27307,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ - icon_state = "whitebluecorner"; - dir = 8 + dir = 8; + icon_state = "whitebluecorner" }, /area/medical/sleeper) "rBV" = ( @@ -27690,6 +27769,12 @@ pixel_x = 26; req_access = list(33) }, +/obj/machinery/requests_console{ + department = "Chemistry"; + departmentType = 2; + name = "Chemistry Requests Console"; + pixel_y = -30 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whiteyellow" @@ -28198,6 +28283,10 @@ }, /turf/simulated/floor/plasteel, /area/security/main) +"skG" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel, +/area/engineering/break_room) "sla" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -28627,7 +28716,7 @@ pixel_y = 3 }, /obj/machinery/requests_console{ - department = "Science"; + department = "Research"; departmentType = 2; name = "Research Request Console"; pixel_x = 30 @@ -29656,8 +29745,8 @@ req_access = list(39) }, /turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 + dir = 8; + icon_state = "whiteblue" }, /area/medical/sleeper) "tiH" = ( @@ -30111,8 +30200,8 @@ /area/hallway/secondary/entry) "tzj" = ( /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 8 + dir = 8; + icon_state = "whitepurple" }, /area/toxins/mixing) "tzx" = ( @@ -30151,8 +30240,8 @@ created_name = "Officer Podsky"; desc = "Ты не узнаешь ценность чего-либо, пока не потеряешь это..."; name = "Обломки офицера Подски"; - pixel_y = 14; - pixel_x = -5 + pixel_x = -5; + pixel_y = 14 }, /turf/simulated/floor/plasteel{ dir = 1; @@ -30491,8 +30580,8 @@ tag_interior_door = "viro_lab_airlock_interior" }, /turf/simulated/floor/plasteel{ - icon_state = "whitegreen"; - dir = 4 + dir = 4; + icon_state = "whitegreen" }, /area/medical/virology) "tKy" = ( @@ -30606,8 +30695,8 @@ icon_state = "4-8" }, /turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 1 + dir = 1; + icon_state = "blue" }, /area/hydroponics) "tQb" = ( @@ -31511,8 +31600,8 @@ dir = 8 }, /obj/machinery/door/window/brigdoor/security{ - req_access = list(2); - name = "Rrocessing" + name = "Rrocessing"; + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -31659,7 +31748,6 @@ }, /area/atmos) "uvM" = ( -/obj/effect/landmark/start/barber, /turf/simulated/floor/plasteel{ icon_state = "barber" }, @@ -31806,8 +31894,8 @@ /obj/machinery/door_control{ id = "execblast"; name = "Vacuum Execution"; - req_access = list(2); - pixel_x = -26 + pixel_x = -26; + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -32309,8 +32397,8 @@ dir = 5 }, /turf/simulated/floor/plasteel{ - icon_state = "whitebluecorner"; - dir = 1 + dir = 1; + icon_state = "whitebluecorner" }, /area/medical/sleeper) "uQL" = ( @@ -32433,8 +32521,8 @@ /obj/machinery/chem_dispenser/botanical, /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 9 + dir = 9; + icon_state = "blue" }, /area/hydroponics) "uUg" = ( @@ -32548,8 +32636,8 @@ icon_state = "1-2" }, /turf/simulated/floor/plasteel{ - icon_state = "whitegreen"; - dir = 5 + dir = 5; + icon_state = "whitegreen" }, /area/medical/virology) "vbn" = ( @@ -33519,9 +33607,9 @@ "vDD" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; id_tag = "brigshuts"; - name = "Brig Shutters"; - dir = 1 + name = "Brig Shutters" }, /obj/machinery/door/poddoor{ density = 0; @@ -33676,10 +33764,10 @@ "vIe" = ( /obj/structure/showcase{ dir = 4; - pixel_x = -9; icon = 'icons/mob/robots.dmi'; icon_state = "Robot-STD"; name = "Cyborg Statue"; + pixel_x = -9; pixel_y = 2 }, /turf/simulated/floor/bluegrid, @@ -33898,9 +33986,9 @@ "vNU" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; id_tag = "chemshuts"; - name = "Chemistry Shutters"; - dir = 8 + name = "Chemistry Shutters" }, /turf/simulated/floor/plating, /area/medical/chemistry) @@ -34145,9 +34233,9 @@ "vXi" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; id_tag = "brigshuts"; - name = "Brig Shutters"; - dir = 2 + name = "Brig Shutters" }, /obj/machinery/door/poddoor{ density = 0; @@ -34789,9 +34877,9 @@ "wqQ" = ( /obj/machinery/biogenerator, /obj/machinery/door/window/eastleft{ + dir = 1; name = "Hydroponics Desk"; - req_access = list(35); - dir = 1 + req_access = list(35) }, /turf/simulated/floor/plating, /area/hydroponics) @@ -34807,6 +34895,10 @@ }, /turf/simulated/floor/plasteel, /area/medical/medbay) +"wrc" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel, +/area/hallway/primary/central) "wri" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -36166,8 +36258,8 @@ "xef" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ - icon_state = "whitegreen"; - dir = 8 + dir = 8; + icon_state = "whitegreen" }, /area/medical/virology) "xeu" = ( @@ -36209,8 +36301,8 @@ }, /obj/item/toy/figure/roboticist, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 5 + dir = 5; + icon_state = "whitepurple" }, /area/assembly/robotics) "xeR" = ( @@ -37108,8 +37200,8 @@ dir = 4 }, /obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 4 + dir = 4; + id = "cargodisposals" }, /obj/structure/disposalpipe/trunk{ dir = 1 @@ -37553,8 +37645,8 @@ /obj/item/reagent_containers/glass/bucket, /obj/item/reagent_containers/glass/bucket, /turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 8 + dir = 8; + icon_state = "blue" }, /area/hydroponics) "xYz" = ( @@ -37865,15 +37957,15 @@ pixel_y = 2 }, /obj/item/clothing/gloves/combat{ - pixel_y = -3; - pixel_x = -3 + pixel_x = -3; + pixel_y = -3 }, /obj/item/clothing/gloves/combat{ pixel_y = -3 }, /obj/item/clothing/gloves/combat{ - pixel_y = -3; - pixel_x = 3 + pixel_x = 3; + pixel_y = -3 }, /obj/item/shield/riot{ pixel_x = 3; @@ -37913,8 +38005,8 @@ dir = 8 }, /turf/simulated/floor/plasteel{ - icon_state = "whitebluecorner"; - dir = 8 + dir = 8; + icon_state = "whitebluecorner" }, /area/medical/sleeper) "yjR" = ( @@ -69713,7 +69805,7 @@ wBh bap mKS alT -ifb +fbw oxq oNw mBm @@ -132679,7 +132771,7 @@ oNy oNy oNy xOC -guh +ncm jnG fvr xOC @@ -200528,7 +200620,7 @@ mma mma mma jXL -uJh +iJe uJh uJh jXL @@ -266064,7 +266156,7 @@ oQA oQA oQA gWA -sEB +hfO rUg rUg gWA @@ -333656,7 +333748,7 @@ jar jar jar lNH -xgF +eOW xgF hQl lNH @@ -336224,7 +336316,7 @@ lli jxt llI jxt -swj +kFx but llI brb @@ -337765,7 +337857,7 @@ vvq uJy cxo uYB -cYO +eTD cYO wwa jxt @@ -399192,7 +399284,7 @@ iZj iZj iZj ptv -fKq +mmO fKq gAH ptv @@ -464728,7 +464820,7 @@ oVX oVX oVX riC -tbt +skG tbt jjQ riC @@ -530264,7 +530356,7 @@ iHe iHe iHe sYJ -sUW +bnN sUW sIR sYJ @@ -590154,7 +590246,7 @@ nOE vtz tMi kFM -qiF +jMQ ckr eBD rgz @@ -595800,7 +595892,7 @@ uJV uJV uJV pIt -mBa +wrc mBa pLN pIt @@ -661336,7 +661428,7 @@ pZj pZj pZj nKk -azd +bRT azd tCb nKk diff --git a/_maps/map_files/generic/Admin_Zone.dmm b/_maps/map_files/generic/Admin_Zone.dmm index 29e8283512a8..1127c4355426 100644 --- a/_maps/map_files/generic/Admin_Zone.dmm +++ b/_maps/map_files/generic/Admin_Zone.dmm @@ -4,17 +4,13 @@ /turf/simulated/floor/wood, /area/admin) "ac" = ( -/turf/simulated/floor/indestructible{ - icon_state = "floor" - }, +/turf/simulated/floor/indestructible/snow, /area/tdome/newtdome) "ad" = ( /obj/machinery/door/poddoor/shutters/invincible{ id_tag = "TD_CloseCombat" }, -/turf/simulated/floor/indestructible{ - icon_state = "floor" - }, +/turf/simulated/floor/indestructible/snow, /area/tdome/newtdome) "ah" = ( /obj/structure/table/wood/poker, @@ -248,6 +244,10 @@ }, /turf/simulated/floor/wood, /area/admin) +"cD" = ( +/obj/structure/snowman/medium, +/turf/simulated/floor/indestructible/snow, +/area/tdome/newtdome/CQC) "cE" = ( /turf/simulated/floor/holofloor{ dir = 10; @@ -490,6 +490,9 @@ /obj/item/gun/energy/immolator/multi/cyborg, /turf/simulated/floor/wood, /area/admin) +"eT" = ( +/turf/simulated/wall/indestructible/snow, +/area/tdome/newtdome/CQC) "eW" = ( /obj/structure/flora/grass/green, /turf/simulated/floor/holofloor{ @@ -630,7 +633,10 @@ /turf/simulated/floor/wood, /area/admin) "ga" = ( -/turf/simulated/wall/indestructible, +/obj/structure/table/reinforced{ + armor = list("melee" = 1000, "bullet" = 1000, "laser" = 1000, "energy" = 1000, "bomb" = 1000, "bio" = 1000, "rad" = 1000, "fire" = 500, "acid" = 500) + }, +/turf/simulated/floor/indestructible/snow, /area/tdome/newtdome/CQC) "ge" = ( /obj/structure/table/wood, @@ -2175,9 +2181,7 @@ }, /area/admin) "yQ" = ( -/turf/simulated/floor/indestructible{ - icon_state = "floor" - }, +/turf/simulated/floor/indestructible/snow, /area/tdome/newtdome/CQC) "yT" = ( /obj/structure/table/wood, @@ -2474,6 +2478,10 @@ /obj/item/suppressor/specialoffer, /turf/simulated/floor/wood, /area/admin) +"BI" = ( +/obj/structure/snowman/short, +/turf/simulated/floor/indestructible/snow, +/area/tdome/newtdome) "BN" = ( /obj/structure/table/wood, /obj/item/gun/projectile/automatic/sniper_rifle/syndicate/penetrator, @@ -2600,6 +2608,10 @@ icon_state = "navybluecorners" }, /area/adminconstruction) +"Du" = ( +/obj/structure/snowman/high, +/turf/simulated/floor/indestructible/snow, +/area/tdome/newtdome) "DF" = ( /obj/structure/table/wood, /obj/item/gun/magic/wand/fireball, @@ -2940,6 +2952,10 @@ icon_state = "hierophant1" }, /area/admin) +"Ie" = ( +/obj/item/decorations/sticky_decorations/flammable/snowflake, +/turf/simulated/wall/indestructible/snow, +/area/tdome/newtdome/CQC) "If" = ( /obj/structure/table/wood, /obj/item/gun/energy/alien, @@ -3300,6 +3316,12 @@ /obj/item/gun/projectile/automatic/pistol/deagle/camo, /turf/simulated/floor/wood, /area/admin) +"Nv" = ( +/obj/structure/flora/tree/pine/xmas{ + armor = list("melee" = 1000, "bullet" = 1000, "laser" = 1000, "energy" = 1000, "bomb" = 1000, "bio" = 1000, "rad" = 1000, "fire" = 500, "acid" = 500) + }, +/turf/simulated/floor/indestructible/snow, +/area/tdome/newtdome/CQC) "NA" = ( /obj/structure/table/wood, /obj/item/gun/energy/laser/captain, @@ -3688,6 +3710,9 @@ icon_state = "hierophant1" }, /area/admin) +"To" = ( +/turf/simulated/wall/indestructible/snow, +/area/space) "Tr" = ( /obj/machinery/teleport/hub/upgraded{ admin_usage = 1 @@ -3816,9 +3841,7 @@ /obj/minigame_anchor/thunderdome_poller/melee, /obj/minigame_anchor/thunderdome_poller/mixed, /obj/minigame_anchor/thunderdome_poller/ranged, -/turf/simulated/floor/indestructible{ - icon_state = "floor" - }, +/turf/simulated/floor/indestructible/snow, /area/tdome/newtdome/CQC) "UB" = ( /obj/structure/table/wood, @@ -4182,7 +4205,7 @@ /turf/space, /area/space) "Yz" = ( -/turf/simulated/wall/indestructible, +/turf/simulated/wall/indestructible/snow, /area/tdome/newtdome) "YC" = ( /turf/simulated/floor/beach/sand, @@ -59375,29 +59398,29 @@ Yq Yq Yq Yq -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ +To +To +To +To +To +To +To +To +To +To +To +To +To +To +To +To +To +To +To +To +To +To +To Yq Yq Yq @@ -59632,7 +59655,7 @@ Yq Yq Yq Yq -QQ +To ac Yz ac @@ -59654,7 +59677,7 @@ ac ac Yz ac -QQ +To Yq Yq Yq @@ -59889,7 +59912,7 @@ Yq Yq Yq Yq -QQ +To ac ac Yz @@ -59911,7 +59934,7 @@ ac Yz ac ac -QQ +To Yq Yq Yq @@ -60146,7 +60169,7 @@ Yq Yq Yq Yq -QQ +To ac ac ac @@ -60168,7 +60191,7 @@ ac ac ac ac -QQ +To Yq Yq Yq @@ -60403,9 +60426,9 @@ Yq Yq Yq Yq -QQ -ac +To ac +Du ac ad ad @@ -60425,7 +60448,7 @@ ad ac ac ac -QQ +To Yq Yq Yq @@ -60660,7 +60683,7 @@ Yq Yq Yq Yq -QQ +To ac ac ac @@ -60682,7 +60705,7 @@ ad ac ac ac -QQ +To Yq Yq Yq @@ -60917,29 +60940,29 @@ Yq Yq Yq Yq -QQ +To ac ac ac ad yQ yQ -ga +eT yQ yQ yQ -ga +eT yQ yQ yQ -ga +eT yQ yQ ad ac ac ac -QQ +To Yq Yq Yq @@ -61174,7 +61197,7 @@ Yq Yq Yq Yq -QQ +To ac ac Yz @@ -61196,7 +61219,7 @@ ad Yz ac ac -QQ +To Yq Yq Yq @@ -61431,7 +61454,7 @@ Yq Yq Yq Yq -QQ +To ac ac ac @@ -61440,7 +61463,7 @@ yQ yQ yQ yQ -ga +eT yQ yQ yQ @@ -61453,7 +61476,7 @@ ad ac ac ac -QQ +To Yq Yq Yq @@ -61688,7 +61711,7 @@ Yq Yq Yq Yq -QQ +To ac ac ac @@ -61698,19 +61721,19 @@ yQ yQ yQ yQ -ga +Ie yQ ga yQ yQ -yQ +cD yQ yQ ad ac ac ac -QQ +To Yq Yq Yq @@ -61945,7 +61968,7 @@ Yq Yq Yq Yq -QQ +To ac ac ac @@ -61967,7 +61990,7 @@ ad ac ac ac -QQ +To Yq Yq Yq @@ -62202,29 +62225,29 @@ Yq Yq Yq Yq -QQ +To ac Yz ac ad yQ -ga -yQ +eT yQ -ga yQ +eT +Nv Uw yQ ga yQ yQ -ga +eT yQ ad ac Yz ac -QQ +To Yq Yq Yq @@ -62459,7 +62482,7 @@ Yq Yq Yq Yq -QQ +To ac ac ac @@ -62481,7 +62504,7 @@ ad ac ac ac -QQ +To Yq Yq Yq @@ -62716,7 +62739,7 @@ Yq Yq Yq Yq -QQ +To ac ac ac @@ -62726,7 +62749,7 @@ yQ yQ yQ yQ -ga +Ie yQ ga yQ @@ -62738,7 +62761,7 @@ ad ac ac ac -QQ +To Yq Yq Yq @@ -62973,7 +62996,7 @@ Yq Yq Yq Yq -QQ +To ac ac ac @@ -62982,7 +63005,7 @@ yQ yQ yQ yQ -ga +eT yQ yQ yQ @@ -62995,7 +63018,7 @@ ad ac ac ac -QQ +To Yq Yq Yq @@ -63230,7 +63253,7 @@ Yq Yq Yq Yq -QQ +To ac ac Yz @@ -63252,7 +63275,7 @@ ad Yz ac ac -QQ +To Yq Yq Yq @@ -63487,29 +63510,29 @@ Yq Yq Yq Yq -QQ +To ac ac ac ad yQ yQ -ga +eT yQ yQ yQ -ga +eT yQ yQ yQ -ga +eT yQ yQ ad ac ac ac -QQ +To Yq Yq Yq @@ -63744,7 +63767,7 @@ Yq Yq Yq Yq -QQ +To ac ac ac @@ -63766,7 +63789,7 @@ ad ac ac ac -QQ +To Yq Yq Yq @@ -64001,7 +64024,7 @@ Yq Yq Yq Yq -QQ +To ac ac ac @@ -64021,9 +64044,9 @@ ad ad ad ac +BI ac -ac -QQ +To Yq Yq Yq @@ -64258,7 +64281,7 @@ Yq Yq Yq Yq -QQ +To ac ac ac @@ -64280,7 +64303,7 @@ ac ac ac ac -QQ +To Yq Yq Yq @@ -64515,7 +64538,7 @@ Yq Yq Yq Yq -QQ +To ac ac Yz @@ -64537,7 +64560,7 @@ ac Yz ac ac -QQ +To Yq Yq Yq @@ -64772,7 +64795,7 @@ Yq Yq Yq Yq -QQ +To ac Yz ac @@ -64794,7 +64817,7 @@ ac ac Yz ac -QQ +To Yq Yq Yq @@ -65029,29 +65052,29 @@ Yq Yq Yq Yq -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ -QQ +To +To +To +To +To +To +To +To +To +To +To +To +To +To +To +To +To +To +To +To +To +To +To Yq Yq Yq diff --git a/_maps/map_files/generic/CentComm.dmm b/_maps/map_files/generic/CentComm.dmm index 0975e33a88b6..b014787f2431 100644 --- a/_maps/map_files/generic/CentComm.dmm +++ b/_maps/map_files/generic/CentComm.dmm @@ -26,6 +26,10 @@ icon_state = "warning" }, /area/shuttle/escape) +"aab" = ( +/mob/living/simple_animal/turkey, +/turf/simulated/floor/grass, +/area/centcom/evac) "aac" = ( /obj/structure/window/reinforced{ dir = 4 @@ -57,6 +61,21 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) +"aag" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/structure/weightmachine/stacklifter, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" + }, +/area/centcom/jail) "aao" = ( /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -76,16 +95,6 @@ icon_state = "rampbottom" }, /area/syndicate_mothership) -"aat" = ( -/obj/machinery/door/airlock/centcom{ - name = "ERT Service Room"; - opacity = 1; - req_access = list(109) - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "aaA" = ( /obj/effect/turf_decal/siding/thinplating/dark, /obj/effect/turf_decal/siding/thinplating/dark{ @@ -122,23 +131,21 @@ /obj/machinery/plantgenes, /turf/simulated/floor/wood, /area/centcom/evac) -"abg" = ( -/obj/structure/table/glass, -/obj/machinery/photocopier/faxmachine/longrange{ - department = "Central Command" - }, -/obj/machinery/status_display{ - layer = 4; - pixel_y = 32 - }, -/turf/simulated/floor/carpet, -/area/centcom/specops) "abk" = ( /obj/machinery/light, /turf/simulated/floor/plasteel{ icon_state = "navybluealt" }, /area/centcom/specops) +"abn" = ( +/obj/structure/sign/poster/official/space_cops{ + pixel_x = -32 + }, +/turf/simulated/floor/indestructible{ + dir = 9; + icon_state = "darkgreynavyblue" + }, +/area/centcom/specops) "abs" = ( /turf/simulated/floor/shuttle{ icon = 'icons/turf/floors.dmi'; @@ -156,12 +163,11 @@ name = "floor" }, /area/vox_station) -"acu" = ( -/obj/machinery/vending/nta/ertarmory/yellow{ - req_access = list(104,109) - }, +"acx" = ( +/obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ - icon_state = "navyblue" + dir = 5; + icon_state = "darkredalt" }, /area/centcom/specops) "acz" = ( @@ -194,18 +200,6 @@ }, /turf/simulated/floor/carpet, /area/centcom/zone2) -"adj" = ( -/obj/structure/chair/sofa/corp/right, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone3) -"adl" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) "ads" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /obj/effect/turf_decal/bot_red, @@ -214,20 +208,59 @@ name = "floor" }, /area/vox_station) +"adC" = ( +/obj/structure/table/glass, +/obj/item/folder/blue{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/paper/rnd_logs_key{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/paper/monitorkey{ + pixel_x = 3; + pixel_y = 4 + }, +/obj/item/paper/safe_code{ + owner = "captain"; + pixel_y = 1 + }, +/obj/item/paper/safe_code{ + owner = "hos"; + pixel_x = -3; + pixel_y = -2 + }, +/turf/simulated/floor/carpet/cyan, +/area/centcom/zone2) +"adL" = ( +/obj/structure/safe{ + known_by = list("NNC") + }, +/obj/item/reagent_containers/food/drinks/bottle/goldschlager, +/obj/item/coin/gold, +/obj/item/toy/plushie/corgi, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/stack/spacecash/c1000000{ + name = "1000000 Credit" + }, +/obj/item/stack/spacecash/c1000000{ + name = "1000000 Credit" + }, +/obj/item/stack/spacecash/c1000000{ + name = "1000000 Credit" + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "adM" = ( /obj/item/bedsheet/brown, /obj/structure/bed, /turf/simulated/floor/carpet/blue, /area/shuttle/trade/sol) -"adO" = ( -/obj/effect/turf_decal/tile/neutral{ - alpha = 150; - color = "black"; - icon_state = "tile_full"; - layer = 9 - }, -/turf/simulated/floor/plating, -/area/centcom/supply) "adQ" = ( /obj/item/flag/species/greys, /turf/simulated/floor/plasteel{ @@ -239,6 +272,14 @@ /obj/structure/flora/grass/both, /turf/simulated/floor/indestructible/snow, /area/ninja/outside) +"adZ" = ( +/obj/structure/table/glass, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 6 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) "aef" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /turf/simulated/floor/indestructible/vox{ @@ -262,12 +303,6 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/jail) -"aeD" = ( -/turf/simulated/floor/wood{ - icon_state = "wood-broken7"; - tag = "icon-wood-broken7" - }, -/area/centcom/zone2) "aeF" = ( /obj/structure/railing{ dir = 1 @@ -276,12 +311,11 @@ icon_state = "darkredcorners" }, /area/syndicate_mothership/elite_squad) -"aeH" = ( -/obj/effect/turf_decal/stripes/gold{ - dir = 1 +"aeQ" = ( +/turf/simulated/floor/plasteel{ + icon_state = "Dark" }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) +/area/centcom/supplypod/loading/one) "aeY" = ( /obj/item/deck/cards, /obj/structure/table/wood, @@ -289,49 +323,61 @@ icon_state = "grimy" }, /area/centcom/jail) -"afa" = ( -/turf/space/transit/east{ - icon_state = "black" - }, -/area/space) "afP" = ( /turf/simulated/wall/indestructible/reinforced, /area/centcom/supply) -"agC" = ( -/obj/machinery/door/poddoor/shutters{ - dir = 8; - id_tag = "ERT_Drop" +"agb" = ( +/obj/structure/closet/l3closet/security, +/obj/item/clothing/mask/gas, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/reagent_containers/spray/cleaner, +/obj/item/watertank/janitor{ + max_integrity = 1500; + volume = 1500 }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" +/obj/item/grenade/chem_grenade/cleaner, +/turf/simulated/floor/indestructible{ + dir = 9; + icon_state = "darkpurple" }, /area/centcom/specops) -"agG" = ( -/obj/structure/closet/secure_closet/guncabinet{ - layer = 2.9; - name = "L.W.A.P. Sniper Rifle" - }, -/obj/item/gun/energy/sniperrifle, -/obj/item/gun/energy/sniperrifle, -/obj/machinery/light/spot{ - dir = 4; - tag = "icon-tube1 (EAST)" - }, -/obj/machinery/ai_status_display{ - pixel_y = 32 +"agl" = ( +/obj/structure/grille, +/obj/structure/window/full/shuttle, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "adminshuttleshutters"; + name = "Blast Shutters" }, +/turf/simulated/floor/plating, +/area/shuttle/administration) +"ago" = ( /obj/structure/window/reinforced{ - dir = 1 + dir = 8 }, /obj/structure/window/reinforced{ - dir = 4 + layer = 2.9 + }, +/obj/structure/table, +/obj/item/paper_bin/nanotrasen{ + pixel_x = 3; + pixel_y = 12 + }, +/obj/item/pen/multi/fountain, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) +"agB" = ( +/obj/machinery/computer/shuttle/ert, +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the Special Ops team."; + name = "Spec Ops Monitor"; + network = list("ERT"); + pixel_x = -30 }, /turf/simulated/floor/shuttle{ icon_state = "floor4" }, -/area/shuttle/gamma) +/area/shuttle/specops) "ahk" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /obj/effect/decal/cleanable/blood/oil, @@ -383,6 +429,16 @@ name = "floor" }, /area/vox_station) +"ahD" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1; + pixel_y = 6 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "ahK" = ( /obj/structure/barricade/wooden{ layer = 3.5 @@ -404,6 +460,32 @@ name = "floor" }, /area/vox_station) +"aie" = ( +/obj/structure/window/full/reinforced{ + layer = 2 + }, +/obj/machinery/door/poddoor/shutters/invincible{ + density = 0; + dir = 1; + icon_state = "open"; + id_tag = "CC_space_jail_sec"; + layer = 50; + level = 3; + locked = 1; + name = "Central Command Jail"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/centcom/jail) +"aig" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkredalt" + }, +/area/centcom/jail) "aim" = ( /obj/structure/chair{ dir = 4 @@ -431,20 +513,25 @@ name = "floor" }, /area/vox_station) -"aix" = ( -/obj/structure/table/glass, -/obj/effect/turf_decal/siding{ - color = "#444444" +"aiz" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) -"aiy" = ( -/turf/simulated/wall/shuttle/nosmooth{ - dir = 9; - icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi'; - icon_state = "gray_walls_corners" +/turf/simulated/wall/indestructible/reinforced, +/area/centcom/zone3) +"aiB" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkyellow" }, -/area/shuttle/ussp) +/area/centcom/supplypod/loading/one) +"aiQ" = ( +/obj/structure/table, +/obj/item/storage/box/cups, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "aji" = ( /obj/machinery/light{ dir = 8 @@ -454,6 +541,35 @@ icon_state = "darkredalt" }, /area/centcom/jail) +"ajk" = ( +/obj/machinery/vending/wallmed{ + layer = 3.3; + name = "Emergency NanoMed"; + pixel_y = 32 + }, +/obj/structure/rack, +/obj/item/roller/holo, +/obj/item/roller/holo, +/obj/item/roller/holo, +/obj/item/roller/holo, +/obj/item/roller/holo, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkbluealt" + }, +/area/centcom/specops) +"ajs" = ( +/obj/item/radio/intercom/specops{ + pixel_x = -10; + pixel_y = 35 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor4" + }, +/area/shuttle/specops) "ajJ" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -463,20 +579,35 @@ icon_state = "brownoldfull" }, /area/syndicate_mothership/jail) +"ajM" = ( +/obj/effect/turf_decal/siding/white/corner{ + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "ajO" = ( /turf/simulated/wall/indestructible/fakeglass, /area/centcom/zone1) +"ajU" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkyellow" + }, +/area/centcom/specops) "akg" = ( /obj/structure/flora/rock/jungle, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"akv" = ( -/turf/simulated/wall/shuttle/nosmooth{ - dir = 5; - icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi'; - icon_state = "gray_walls_corners" +"akk" = ( +/obj/machinery/door/airlock/centcom{ + id_tag = "Zone3_bathroom2"; + name = "Bathroom"; + opacity = 1 }, -/area/shuttle/ussp) +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/centcom/zone3) "akD" = ( /obj/machinery/door/window/brigdoor{ color = "#d70000"; @@ -487,32 +618,11 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/control) -"akQ" = ( -/obj/structure/closet/secure_closet/brig, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9 - }, -/obj/structure/window/reinforced, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkredalt" - }, -/area/centcom/jail) "akW" = ( /turf/simulated/floor/plasteel{ icon_state = "darkfull" }, /area/syndicate_mothership/control) -"akY" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "O2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "ald" = ( /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -525,15 +635,6 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"alp" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/item/radio/intercom{ - pixel_x = -28 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_4) "alt" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -552,6 +653,28 @@ icon_state = "light-fancy-wood" }, /area/syndicate_mothership/control) +"alw" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/table/wood/fancy/royalblack, +/obj/item/reagent_containers/food/drinks/bottle/wine{ + pixel_x = -12; + pixel_y = 10 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "dark" + }, +/area/shuttle/administration) "alF" = ( /obj/effect/turf_decal{ dir = 5; @@ -601,26 +724,11 @@ icon_state = "fancy-wood-cherry" }, /area/shuttle/trade/sol) -"alO" = ( -/obj/structure/chair/comfy/shuttle{ +"alR" = ( +/obj/effect/landmark/ert_director, +/obj/structure/chair/office/dark{ dir = 4 }, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_3) -"alU" = ( -/obj/structure/sign/poster/official/work_for_a_future{ - pixel_y = -32 - }, -/obj/effect/turf_decal/siding/blue/corner{ - color = "#444444" - }, -/obj/effect/turf_decal/siding/blue/corner{ - color = "#444444"; - dir = 8 - }, /turf/simulated/floor/carpet/black, /area/centcom/specops) "amE" = ( @@ -634,15 +742,12 @@ name = "floor" }, /area/vox_station) -"amO" = ( -/obj/structure/fans/tiny, -/obj/effect/turf_decal/stripes/full, -/obj/machinery/door/poddoor/impassable{ - id_tag = "Admin_shuttle_access" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"amK" = ( +/obj/machinery/photocopier, +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 8 }, +/turf/simulated/floor/carpet/black, /area/centcom/zone3) "amV" = ( /obj/machinery/vending/dinnerware, @@ -679,94 +784,44 @@ name = "floor" }, /area/vox_station) -"anJ" = ( -/obj/machinery/conveyor{ - id = "CC_crate"; +"anE" = ( +/obj/item/flag/nt, +/obj/machinery/light{ dir = 4 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) -"anL" = ( -/obj/structure/bookcase/manuals, -/obj/item/book/manual/security_space_law{ - pixel_x = 3 - }, -/obj/item/book/manual/security_space_law{ - pixel_x = 3 - }, -/obj/item/book/manual/security_space_law{ - pixel_x = 3 +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "darkgrey" }, -/obj/item/book/manual/security_space_law{ - pixel_x = 3 +/area/shuttle/administration) +"anK" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkyellowaltstrip" }, -/obj/effect/turf_decal/siding/yellow, -/turf/simulated/floor/carpet, -/area/centcom/evac) +/area/centcom/specops) "aoc" = ( /obj/structure/window/full/reinforced{ layer = 2 }, /turf/simulated/floor/plating, /area/centcom/bridge) -"aok" = ( -/obj/structure/bookcase, -/turf/simulated/floor/wood{ - icon_state = "wood-broken7"; - tag = "icon-wood-broken7" - }, -/area/centcom/zone2) -"aov" = ( -/obj/structure/table/glass, -/obj/item/flashlight/lamp/green, -/obj/item/stamp/centcom{ - pixel_x = -5; - pixel_y = -7 - }, -/turf/simulated/floor/carpet/cyan, -/area/centcom/zone2) -"aoA" = ( -/turf/simulated/floor/wood/fancy/light, -/area/centcom/evac) -"aoZ" = ( -/obj/structure/table/reinforced, -/obj/item/pizzabox/meat, -/obj/item/pizzabox/meat, -/obj/item/pizzabox/meat, -/obj/item/pizzabox/meat, -/obj/item/pizzabox/margherita, -/obj/item/pizzabox/margherita, -/obj/item/pizzabox/margherita, -/obj/item/pizzabox/hawaiian, -/obj/item/pizzabox/hawaiian, -/obj/item/pizzabox/hawaiian, -/obj/item/pizzabox/vegetable, -/obj/item/pizzabox/vegetable, -/obj/machinery/light, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"aoS" = ( +/turf/simulated/floor/indestructible{ + dir = 1; + icon_state = "darkgreynavyblue" }, /area/centcom/specops) -"apo" = ( -/obj/machinery/door/poddoor/shutters/invincible/fake_r_wall{ - dir = 2; - id_tag = "ERT_Quarantine" - }, -/obj/machinery/porta_turret/centcom/pulse{ - armor = list("melee"=90,"bullet"=90,"laser"=95,"energy"=95,"bomb"=80,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - color = "#666666"; - damtype = "burn"; - health = 1250; - region_max = 12; - scan_range = 12; - shot_delay = 8; - name = "Quarantine Pulse Turret" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"aoW" = ( +/obj/structure/railing, +/turf/simulated/wall/indestructible/reinforced, +/area/centcom/specops) +"apl" = ( +/obj/structure/falsewall/reinforced{ + layer = 5; + req_access = list(114) }, +/turf/simulated/floor/fakespace, /area/centcom/specops) "app" = ( /obj/structure/window/reinforced{ @@ -786,83 +841,45 @@ /obj/effect/mapping_helpers/light, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"apZ" = ( -/obj/machinery/photocopier, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 5 +"apC" = ( +/obj/machinery/computer/communications, +/obj/structure/window/reinforced{ + dir = 4 }, -/turf/simulated/floor/wood/fancy/light, +/turf/simulated/floor/carpet, /area/centcom/specops) -"aqe" = ( -/obj/structure/sign/securearea{ - pixel_y = -32 +"apH" = ( +/obj/machinery/door/airlock/centcom{ + name = "CentCom SOO"; + opacity = 1; + req_access = list(114) + }, +/obj/machinery/door/poddoor/shutters/invincible{ + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + dir = 2; + id_tag = "ERT_director_office_shutters2"; + layer = 5; + locked = 1; + name = "CentCom SOO Briefing" }, /turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "navybluealt" + dir = 1; + icon_state = "navybluecorners" }, /area/centcom/specops) -"aqo" = ( -/obj/structure/table, -/obj/item/clothing/gloves/boxing/hologlove{ - icon_state = "boxinggreen"; - item_state = "boxinggreen" - }, -/obj/item/clothing/gloves/boxing/hologlove{ - icon_state = "boxinggreen"; - item_state = "boxinggreen" +"aqV" = ( +/obj/effect/turf_decal/siding/yellow{ + dir = 8 }, -/obj/item/clothing/gloves/boxing/hologlove{ - icon_state = "boxinggreen"; - item_state = "boxinggreen" - }, -/obj/item/clothing/gloves/boxing/hologlove, -/obj/item/clothing/gloves/boxing/hologlove, -/obj/item/clothing/gloves/boxing/hologlove, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone1) -"aqp" = ( -/obj/structure/table/reinforced{ - color = "#444444" - }, -/obj/item/radio/intercom/specops{ - pixel_x = 30 - }, -/obj/item/assault_pod/nt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "navybluealt" - }, -/area/centcom/specops) -"aqG" = ( -/obj/structure/toilet{ - dir = 8; - name = "Трон старшего администратора" - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/door_control{ - id = "CC_toilet_unit11"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - pixel_y = 25; - specialfunctions = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/centcom/specops) -"arg" = ( -/obj/item/broken_bottle, -/turf/simulated/floor/shuttle/objective_check/vox, -/area/shuttle/vox) -"art" = ( -/obj/structure/window/reinforced{ - dir = 1 +/turf/simulated/floor/carpet, +/area/centcom/evac) +"arg" = ( +/obj/item/broken_bottle, +/turf/simulated/floor/shuttle/objective_check/vox, +/area/shuttle/vox) +"art" = ( +/obj/structure/window/reinforced{ + dir = 1 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -880,14 +897,6 @@ name = "floor" }, /area/vox_station) -"arK" = ( -/obj/structure/table/glass, -/obj/machinery/light, -/obj/item/storage/ashtray/glass, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone2) "arL" = ( /obj/structure/table/wood, /turf/simulated/floor/wood, @@ -905,6 +914,31 @@ tag = "icon-redfull (NORTHWEST)" }, /area/centcom/jail) +"arZ" = ( +/obj/effect/decal/nanotrasen_logo{ + icon_state = "logo3"; + pixel_x = 16 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"ase" = ( +/obj/structure/table/glass, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = -32 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone3) +"ash" = ( +/obj/structure/chair/sofa/corp/right{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "ask" = ( /obj/structure/rack/holorack, /obj/effect/turf_decal/box/white, @@ -924,6 +958,15 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/control) +"asJ" = ( +/obj/machinery/newscaster{ + pixel_x = -32 + }, +/turf/simulated/floor/indestructible{ + dir = 8; + icon_state = "darkgreynavyblue" + }, +/area/centcom/specops) "asM" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/wood, @@ -959,6 +1002,15 @@ water_overlay_icon_state = null }, /area/syndicate_mothership/outside) +"atQ" = ( +/obj/machinery/computer/card/centcom, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) "atT" = ( /turf/simulated/floor/plasteel/freezer, /area/trader_station/sol) @@ -1003,18 +1055,18 @@ }, /turf/simulated/floor/plasteel/freezer, /area/trader_station/sol) -"aus" = ( -/obj/structure/table/glass, -/obj/item/storage/box/bodybags, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/paper/Cloning{ - pixel_x = 6 +"aux" = ( +/obj/structure/window/reinforced{ + layer = 2.9 + }, +/obj/effect/turf_decal/siding/white{ + dir = 8 }, +/obj/effect/turf_decal/siding/white, /turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "whiteblue" + icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/jail) "auB" = ( /obj/structure/table, /obj/item/storage/toolbox/surgery, @@ -1026,6 +1078,22 @@ icon_state = "white" }, /area/centcom/zone1) +"auF" = ( +/obj/effect/turf_decal/stripes/black{ + dir = 5; + do_not_delete_me = 1 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/administration) +"avx" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "avP" = ( /obj/effect/turf_decal/box/white/corners, /turf/simulated/floor/plasteel{ @@ -1033,150 +1101,12 @@ icon_state = "darkblue" }, /area/centcom/zone1) -"avR" = ( -/obj/structure/rack/holorack, -/obj/item/clothing/under/assistantformal, -/obj/item/clothing/under/captain_fly{ - name = "rogue uniform" - }, -/obj/item/clothing/under/captainparade{ - name = "parade uniform" - }, -/obj/item/clothing/under/captainparade{ - name = "parade uniform" - }, -/obj/item/clothing/under/captain_fly{ - name = "rogue uniform" - }, -/obj/item/clothing/under/assistantformal, -/obj/item/clothing/under/fluff/benjaminfallout, -/obj/item/clothing/under/fluff/benjaminfallout, -/obj/item/clothing/under/fluff/elishirt, -/obj/item/clothing/under/fluff/elishirt, -/obj/item/clothing/under/fluff/jay_turtleneck, -/obj/item/clothing/under/fluff/jay_turtleneck, -/obj/item/clothing/under/lawyer/black, -/obj/item/clothing/under/lawyer/black, -/obj/item/clothing/under/lawyer/blue, -/obj/item/clothing/under/lawyer/blue, -/obj/item/clothing/under/lawyer/bluesuit, -/obj/item/clothing/under/lawyer/bluesuit, -/obj/item/clothing/under/lawyer/female, -/obj/item/clothing/under/lawyer/female, -/obj/item/clothing/under/lawyer/oldman, -/obj/item/clothing/under/lawyer/oldman, -/obj/item/clothing/under/lawyer/red, -/obj/item/clothing/under/lawyer/red, -/obj/item/clothing/under/mafia{ - name = "black outfit" - }, -/obj/item/clothing/under/mafia{ - name = "black outfit" - }, -/obj/item/clothing/under/mafia/white{ - name = "white outfit" - }, -/obj/item/clothing/under/mafia/white{ - name = "white outfit" - }, -/obj/item/clothing/under/misc/durathread, -/obj/item/clothing/under/misc/durathread, -/obj/item/clothing/under/retro/engineering, -/obj/item/clothing/under/retro/engineering, -/obj/item/clothing/under/retro/medical, -/obj/item/clothing/under/retro/medical, -/obj/item/clothing/under/retro/science, -/obj/item/clothing/under/retro/science, -/obj/item/clothing/under/retro/security, -/obj/item/clothing/under/retro/security, -/obj/item/clothing/under/color/black{ - icon_state = "hosblueclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "hosblueclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "hosdnavyclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "hosdnavyclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "hostanclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "hostanclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "officerblueclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "officerblueclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "officerdnavyclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "officerdnavyclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "officertanclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "officertanclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "wardenblueclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "wardenblueclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "wardendnavyclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "wardendnavyclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "wardentanclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "wardentanclothes"; - name = "jumpsuit" - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) "awg" = ( /obj/structure/chair/sofa{ dir = 8 }, /turf/simulated/floor/carpet/red, /area/centcom/zone1) -"awn" = ( -/obj/machinery/clonepod/upgraded, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "whiteblue"; - tag = "icon-whiteblue (NORTHEAST)" - }, -/area/centcom/specops) "awu" = ( /obj/structure/energy_caltrops/noselfdestroy, /obj/structure/flora/grass/both, @@ -1201,19 +1131,17 @@ icon_state = "grimy" }, /area/syndicate_mothership) -"awU" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/bridge) "axc" = ( /obj/structure/energy_caltrops/noselfdestroy, /turf/simulated/floor/indestructible/snow, /area/ninja/outside) +"axr" = ( +/obj/structure/filingcabinet/security, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkredalt" + }, +/area/centcom/jail) "axB" = ( /obj/machinery/atmospherics/pipe/manifold/visible{ dir = 4 @@ -1223,42 +1151,15 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"axF" = ( -/obj/structure/window/reinforced{ - dir = 8; - layer = 9.1 - }, -/obj/structure/flora/rock, -/obj/structure/flora/ausbushes/stalkybush, -/obj/effect/turf_decal/tile/neutral{ - alpha = 85; - icon_state = "seadeep"; - layer = 9; - icon = 'icons/misc/beach.dmi' - }, -/turf/simulated/floor/indestructible/beach/water/deep/sand_floor, -/area/centcom/specops) -"axM" = ( -/obj/machinery/vending/chinese/free, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone2) -"axQ" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/library, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9 +"axP" = ( +/obj/machinery/bodyscanner{ + dir = 4; + layer = 3.5 }, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" +/turf/simulated/floor/shuttle{ + icon_state = "floor3" }, -/area/centcom/jail) +/area/shuttle/administration) "axR" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/snacks/superbiteburger, @@ -1270,6 +1171,21 @@ icon_state = "darkyellowfull" }, /area/syndicate_mothership/cargo) +"axT" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/machinery/defibrillator_mount/loaded{ + pixel_x = -30 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/centcom/specops) "axW" = ( /obj/effect/decal/cleanable/blood/oil, /turf/simulated/floor/indestructible/vox{ @@ -1277,6 +1193,15 @@ name = "floor" }, /area/vox_station) +"aya" = ( +/obj/structure/window/reinforced, +/obj/structure/sign/poster/official/random{ + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) "ayi" = ( /obj/effect/turf_decal{ dir = 1; @@ -1303,8 +1228,8 @@ "ayt" = ( /obj/machinery/syndiepad/receivepad, /obj/machinery/conveyor{ - id = "SFBQMLoad"; - dir = 8 + dir = 8; + id = "SFBQMLoad" }, /turf/simulated/floor/plasteel{ dir = 1; @@ -1317,6 +1242,12 @@ icon_state = "warnwhite" }, /area/centcom/zone1) +"ayG" = ( +/obj/effect/turf_decal/siding/brown, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone3) "ayR" = ( /obj/structure/chair/comfy/shuttle{ dir = 4 @@ -1329,6 +1260,14 @@ icon_state = "darkreddarkfull" }, /area/shuttle/escape) +"azd" = ( +/obj/machinery/vending/cola/free, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault"; + tag = "icon-vault (WEST)" + }, +/area/centcom/specops) "azv" = ( /turf/simulated/wall/indestructible/fakeglass{ base_icon_state = "fake_plastitanium_glass"; @@ -1362,12 +1301,6 @@ icon_state = "floor4" }, /area/shuttle/syndicate) -"aAm" = ( -/obj/structure/closet/walllocker{ - pixel_x = -32 - }, -/turf/simulated/floor/plasteel/freezer, -/area/centcom/specops) "aAn" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 9 @@ -1377,12 +1310,32 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) +"aAr" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/light, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) +"aAF" = ( +/obj/effect/turf_decal/siding/yellow/corner, +/turf/simulated/floor/carpet, +/area/centcom/evac) "aAL" = ( /turf/simulated/floor/indestructible/vox{ icon_state = "darkfull"; name = "floor" }, /area/vox_station) +"aAP" = ( +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "navybluealt" + }, +/area/centcom/specops) "aAR" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -1426,21 +1379,18 @@ name = "floor" }, /area/vox_station) +"aBV" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "burst_r" + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/transport) "aBX" = ( /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/bridge) -"aCb" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/machinery/status_display{ - layer = 4; - pixel_x = 32 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_3) "aCe" = ( /obj/structure/window/reinforced{ dir = 1 @@ -1449,6 +1399,35 @@ /obj/machinery/recharger, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) +"aCs" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -8; + pixel_y = 30 + }, +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_x = 6; + pixel_y = 30 + }, +/turf/simulated/floor/wood, +/area/centcom/zone2) +"aCC" = ( +/obj/machinery/door_control/secure{ + id = "CC_BSA"; + name = "BSA room"; + pixel_x = -24; + pixel_y = 24; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "navybluealtstrip" + }, +/area/centcom/specops) +"aCM" = ( +/obj/item/flag/nt, +/turf/simulated/floor/carpet/black, +/area/centcom/zone3) "aDf" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/stripes/red/line{ @@ -1460,6 +1439,14 @@ name = "floor" }, /area/vox_station) +"aDh" = ( +/obj/machinery/vending/security/ert{ + density = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "aDl" = ( /obj/structure/shuttle/engine/huge, /turf/space, @@ -1475,6 +1462,11 @@ name = "floor" }, /area/syndicate_mothership/outside) +"aDR" = ( +/turf/simulated/floor/plasteel{ + icon_state = "Dark" + }, +/area/centcom/supply) "aDX" = ( /obj/machinery/computer/syndie_supplycomp, /turf/simulated/floor/plasteel{ @@ -1532,31 +1524,15 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"aFy" = ( -/obj/machinery/portable_atmospherics/canister/toxins{ - maximum_pressure = 50000 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/machinery/conveyor{ - id = "Toxin"; +"aFM" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; dir = 1 }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/supply) -"aFB" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) +/area/centcom/bridge) "aFT" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance, @@ -1568,36 +1544,31 @@ name = "floor" }, /area/vox_station) -"aFX" = ( -/obj/effect/decal/warning_stripes/white/hollow, -/obj/machinery/vending/nta/ertarmory/red{ +"aGw" = ( +/turf/simulated/floor/plasteel{ dir = 4; - req_access = list(104,109) + icon_state = "darkred" }, -/turf/simulated/floor/plasteel{ - icon_state = "darkredfull" +/area/syndicate_mothership/elite_squad) +"aGx" = ( +/obj/structure/window/reinforced{ + dir = 4 }, -/area/centcom/specops) -"aGt" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkbluealt" }, -/obj/effect/turf_decal/siding{ - color = "#444444" +/area/centcom/zone2) +"aGD" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -5 }, -/obj/effect/turf_decal/siding{ - color = "#444444"; +/obj/structure/window/reinforced{ dir = 8 }, -/turf/simulated/floor/glass/reinforced, -/area/centcom/bridge) -"aGw" = ( -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkred" - }, -/area/syndicate_mothership/elite_squad) +/turf/simulated/floor/carpet/black, +/area/centcom/zone3) "aGX" = ( /obj/item/reagent_containers/food/condiment/saltshaker{ pixel_x = -3; @@ -1617,6 +1588,12 @@ name = "floor" }, /area/vox_station) +"aHe" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "navyblue" + }, +/area/centcom/supplypod/loading/ert) "aHf" = ( /obj/item/target, /obj/effect/decal/cleanable/confetti, @@ -1641,17 +1618,6 @@ name = "floor" }, /area/vox_station) -"aHN" = ( -/obj/effect/decal/warning_stripes/north, -/obj/effect/decal/warning_stripes/south, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 1; - id_tag = "CC_Armory_GYGAX" - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" - }, -/area/centcom/specops) "aHO" = ( /obj/structure/sink{ dir = 4; @@ -1675,22 +1641,72 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) -"aIb" = ( -/obj/structure/table/wood, -/obj/item/paicard, -/obj/item/paper_bin, -/obj/item/pen, -/turf/simulated/floor/carpet/black, -/area/centcom/zone1) -"aIk" = ( -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 32; - pixel_y = 32 +"aHU" = ( +/obj/structure/closet{ + icon_closed = "syndicate1"; + icon_opened = "syndicate1open"; + icon_state = "syndicate1" }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/gun/projectile/automatic/proto, +/obj/item/gun/energy/gun/blueshield, +/obj/item/clothing/glasses/hud/security/sunglasses/aviators, +/obj/item/reagent_containers/food/snacks/candy/mre, +/obj/item/reagent_containers/hypospray/combat, +/obj/item/radio/headset/ert/alt{ + desc = null; + name = "SRT bowman headset" }, -/area/centcom/specops) +/obj/item/clothing/head/beret/centcom/officer/navy{ + desc = null; + name = "SRT beret" + }, +/obj/item/clothing/shoes/combat/swat{ + name = "SRT special shoes" + }, +/obj/item/clothing/gloves/combat{ + name = "Combat gloves" + }, +/obj/item/storage/belt/security/webbing/srt/full, +/obj/item/storage/backpack/satchel_blueshield/srt, +/obj/item/clothing/suit/storage/blueshield/srt, +/obj/item/clothing/suit/armor/bulletproof{ + name = "SRT bulletproof vest" + }, +/obj/item/shield/riot/tele, +/obj/item/suppressor, +/obj/item/CQC_manual, +/obj/item/implanter/mindshield/ert, +/obj/item/card/id/centcom{ + name = "Special Reaction Team Member card"; + rank = "Special Reaction Team Member"; + registered_name = "Special Reaction Team Member" + }, +/obj/item/storage/box/responseteam, +/obj/item/clothing/under/fluff/jay_turtleneck{ + desc = null; + name = "SRT uniform" + }, +/obj/item/gun/projectile/automatic/pistol/sp8/sp8ar, +/obj/item/ammo_box/magazine/sp8, +/obj/item/ammo_box/magazine/sp8, +/obj/item/implanter/dust, +/obj/item/clothing/accessory/holster, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "navyblue" + }, +/area/centcom/specops) +"aIb" = ( +/obj/structure/table/wood, +/obj/item/paicard, +/obj/item/paper_bin, +/obj/item/pen, +/turf/simulated/floor/carpet/black, +/area/centcom/zone1) "aIq" = ( /obj/machinery/light/small{ dir = 4 @@ -1784,11 +1800,8 @@ name = "floor" }, /area/vox_station) -"aKm" = ( -/obj/effect/decal/nanotrasen_logo{ - icon_state = "logo6"; - pixel_x = 16 - }, +"aKz" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -1810,36 +1823,40 @@ name = "floor" }, /area/vox_station) -"aKY" = ( -/obj/item/gun/projectile/automatic/sniper_rifle, -/obj/item/gun/projectile/automatic/sniper_rifle, -/obj/item/gun/projectile/automatic/sniper_rifle, -/obj/item/gun/projectile/automatic/sniper_rifle, -/obj/item/gun/projectile/automatic/sniper_rifle, -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - layer = 2.9; - name = "Sniper Rifle"; - req_access = list(114) +"aLg" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -30; + pixel_y = 30 }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "vault" +/turf/simulated/floor/shuttle{ + icon_state = "floor4" }, -/area/centcom/jail) -"aLe" = ( -/obj/effect/decal/warning_stripes/northwestsouth, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "ERT_armory_lvl3"; - name = "Armory level 3"; - layer = 5 +/area/shuttle/specops) +"aLo" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/conveyor{ + dir = 1; + id = "CO2" }, /turf/simulated/floor/plasteel{ - icon_state = "darkfull" + icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/supply) +"aLy" = ( +/obj/structure/window/reinforced, +/obj/effect/turf_decal/siding/yellow{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/centcom/evac) +"aLA" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "burst_l" + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating/airless, +/area/shuttle/pod_4) "aLC" = ( /obj/effect/decal/cleanable/blood/old, /obj/effect/decal/cleanable/dirt{ @@ -1862,33 +1879,23 @@ name = "floor" }, /area/vox_station) -"aLI" = ( -/obj/effect/turf_decal/siding/white/corner{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"aLD" = ( +/obj/machinery/vending/chinese/free{ + pixel_y = 7 }, -/area/centcom/jail) +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "aLV" = ( /obj/structure/closet/secure_closet/personal, /turf/simulated/floor/wood, /area/trader_station/sol) -"aLY" = ( -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkbluealt" - }, -/area/centcom/zone2) -"aNf" = ( -/obj/structure/chair/sofa/corp/left{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"aMV" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 9 }, -/area/centcom/zone3) +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) "aNy" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo16" @@ -1903,17 +1910,28 @@ /obj/machinery/light/small, /turf/simulated/floor/carpet, /area/centcom/zone1) -"aNU" = ( -/obj/structure/chair/comfy/black, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) "aNX" = ( /obj/item/twohanded/required/kirbyplants, /obj/structure/window/reinforced/tinted, /turf/simulated/floor/carpet/black, /area/trader_station/sol) +"aOd" = ( +/obj/structure/closet/secure_closet/freezer/meat{ + req_access = list(102) + }, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/item/reagent_containers/food/snacks/meat, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "redfull"; + tag = "icon-redfull (NORTHWEST)" + }, +/area/centcom/zone1) "aOe" = ( /obj/structure/spacepoddoor/invincible{ dir = 4 @@ -1926,6 +1944,18 @@ /mob/living/simple_animal/pig, /turf/simulated/floor/plating, /area/syndicate_mothership/control) +"aOA" = ( +/obj/machinery/door_control/secure{ + id = "CC_Armory_SRT1"; + name = "SRT Team 2"; + pixel_x = -25; + pixel_y = -25; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + icon_state = "navybluealtstrip" + }, +/area/centcom/specops) "aOB" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/structure/curtain/black{ @@ -1967,6 +1997,18 @@ name = "floor" }, /area/syndicate_mothership) +"aOM" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkyellowalt" + }, +/area/centcom/supply) +"aOO" = ( +/obj/effect/turf_decal/siding/yellow{ + dir = 1 + }, +/turf/simulated/floor/glass/reinforced, +/area/centcom/evac) "aOR" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/item/clothing/head/kitty, @@ -1974,6 +2016,19 @@ /obj/item/clothing/suit/storage/browntrenchcoat, /turf/simulated/floor/carpet, /area/centcom/zone1) +"aPi" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/black{ + dir = 5; + do_not_delete_me = 1 + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "podfloor_dark" + }, +/area/shuttle/administration) "aPx" = ( /obj/structure/sink{ dir = 8; @@ -1986,20 +2041,17 @@ /turf/simulated/floor/plasteel/freezer, /area/trader_station/sol) "aPy" = ( -/obj/machinery/vending/nta/ertarmory/green/cc_jail, -/turf/simulated/floor/wood, -/area/centcom/jail) -"aQh" = ( -/obj/vehicle/ridden/motorcycle{ - dir = 8 - }, -/obj/structure/sign/poster/contraband/random{ - pixel_x = 30 +/obj/machinery/iv_drip, +/turf/simulated/floor/shuttle{ + icon_state = "floor3" }, -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-oak" +/area/shuttle/administration) +"aPL" = ( +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "navybluealt" }, -/area/syndicate_mothership) +/area/centcom/specops) "aQv" = ( /obj/machinery/light/small{ dir = 4 @@ -2021,6 +2073,32 @@ /obj/item/reagent_containers/glass/beaker/bluespace, /turf/simulated/floor/wood, /area/centcom/evac) +"aRd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5 + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "darkgrey" + }, +/area/shuttle/administration) +"aRJ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/chair/comfy/lime, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "dark" + }, +/area/shuttle/administration) "aRW" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -2052,20 +2130,6 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/control) -"aTh" = ( -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/computer/mech_bay_power_console, -/obj/machinery/light/spot{ - dir = 4; - tag = "icon-tube1 (EAST)" - }, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" - }, -/area/shuttle/gamma) "aTE" = ( /obj/structure/table, /obj/item/clothing/head/soft/solgov, @@ -2083,6 +2147,21 @@ icon_state = "floor4" }, /area/shuttle/syndicate) +"aTQ" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1; + icon_state = "heater3x3"; + tag = "icon-heater (NORTH)" + }, +/obj/structure/shuttle/engine/platform{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/plasmareinforced{ + color = "#00f700" + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/ninja) "aTZ" = ( /turf/simulated/floor/plasteel{ icon_state = "darkbluecorners" @@ -2094,38 +2173,14 @@ icon_state = "darkredcornersalt" }, /area/syndicate_mothership/control) -"aUo" = ( -/obj/structure/reagent_dispensers/spacecleanertank{ - pixel_x = -32 - }, -/obj/structure/sink{ - dir = 1 - }, -/turf/simulated/floor/indestructible{ - dir = 10; - icon_state = "darkpurple" - }, -/area/centcom/specops) -"aUs" = ( -/obj/effect/decal/cleanable/blood/old, +"aUX" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel{ - icon_state = "darkfull" + icon_state = "dark" }, -/area/centcom/jail) -"aUM" = ( -/obj/structure/closet/crate/can, -/obj/item/paper/central_command/archive/station_reports, -/obj/item/paper/central_command/archive/station_reports, -/obj/item/paper/central_command/archive/station_reports, -/obj/item/paper/central_command/archive/station_reports, -/obj/item/paper/central_command/archive/station_reports, -/obj/item/paper/central_command/archive/station_reports, -/obj/item/paper/central_command/archive/station_reports, -/obj/item/paper/central_command/archive/station_reports, -/obj/item/paper/central_command/archive/station_reports, -/obj/item/paper/central_command/archive/station_reports, -/turf/simulated/floor/plating, -/area/centcom/zone2) +/area/centcom/specops) "aUY" = ( /obj/structure/urinal{ pixel_y = 32 @@ -2142,6 +2197,15 @@ icon_state = "freezerfloor" }, /area/syndicate_mothership) +"aVs" = ( +/obj/structure/bed, +/obj/item/bedsheet/rd, +/obj/effect/mine/sound/bwoink{ + alpha = 0; + layer = 2.9 + }, +/turf/simulated/floor/carpet/arcade, +/area/centcom/zone1) "aVE" = ( /obj/structure/closet/secure_closet/contractor, /turf/simulated/floor/carpet/black, @@ -2171,12 +2235,41 @@ icon_state = "darkyellowaltstrip" }, /area/centcom/supply) -"aWp" = ( +"aWr" = ( +/obj/machinery/door/airlock/centcom{ + damage_deflection = 999; + name = "Prison"; + opacity = 1; + req_access = list(104) + }, +/obj/effect/decal/warning_stripes/red/hollow, /turf/simulated/floor/plasteel{ dir = 6; - icon_state = "darkyellowaltstrip" + icon_state = "darkredaltstrip" + }, +/area/centcom/jail) +"aWz" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/item/radio/intercom/specops{ + pixel_x = 32 + }, +/obj/effect/turf_decal/siding/blue/corner{ + color = "#444444"; + dir = 8 + }, +/obj/machinery/light{ + dir = 4 }, +/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) +"aWA" = ( +/obj/effect/turf_decal/siding/white{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "aWO" = ( /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership) @@ -2226,14 +2319,6 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"aXC" = ( -/obj/machinery/atmospherics/unary/cryo_cell/upgraded{ - layer = 3.5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "aXD" = ( /obj/item/pizzabox{ icon_state = "pizzabox_open" @@ -2244,6 +2329,20 @@ name = "floor" }, /area/vox_station) +"aXP" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table/glass, +/obj/item/toy/desk/fan, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) +"aYk" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "navyblue" + }, +/area/centcom/supplypod/loading/ert) "aYm" = ( /obj/structure/window/plasmareinforced{ color = "#00f700"; @@ -2259,6 +2358,13 @@ icon_state = "floor13" }, /area/shuttle/ninja) +"aYp" = ( +/obj/structure/chair/sofa/corp/left, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "aYy" = ( /obj/structure/flora/tree/pine{ pixel_x = 1 @@ -2266,56 +2372,12 @@ /obj/structure/flora/ausbushes/brflowers, /turf/simulated/floor/indestructible/snow, /area/ninja/outside) -"aYD" = ( -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkyellow" - }, -/area/centcom/specops) -"aZl" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/table/glass, -/obj/item/toy/desk/fan, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"aZs" = ( -/obj/machinery/door_control/secure{ - id = "CC_Armory_NG"; - name = "Nerve Gas"; - pixel_x = -24; - pixel_y = 24; - req_access = list(114) - }, -/obj/structure/sign/greencross{ - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "navybluecorners" - }, -/area/centcom/specops) "aZv" = ( /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkblue" }, /area/centcom/zone1) -"aZw" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 - }, -/obj/effect/turf_decal/siding{ - color = "#444444" - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 - }, -/turf/simulated/floor/glass/reinforced, -/area/centcom/bridge) "aZy" = ( /obj/structure/table/reinforced/brass, /obj/machinery/cell_charger, @@ -2374,19 +2436,44 @@ name = "floor" }, /area/vox_station) -"bbi" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/filingcabinet/chestdrawer, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "bbk" = ( /obj/structure/chair/sofa/left{ dir = 4 }, /turf/simulated/floor/carpet/black, /area/centcom/zone3) +"bbq" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4; + icon_state = "burst_l" + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/supply) +"bbv" = ( +/obj/item/gun/energy/sniperrifle, +/obj/item/gun/energy/sniperrifle, +/obj/item/gun/energy/sniperrifle, +/obj/item/gun/energy/sniperrifle, +/obj/item/gun/energy/sniperrifle, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 4; + layer = 2.9 + }, +/obj/structure/rack/gunrack, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) +"bbE" = ( +/obj/machinery/computer/operating, +/turf/simulated/floor/shuttle{ + icon_state = "floor3" + }, +/area/shuttle/administration) "bbR" = ( /obj/machinery/light{ dir = 1 @@ -2409,17 +2496,29 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"bcs" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - dir = 8; - id_tag = "ERT_director_office_shutters2"; - layer = 5; - locked = 1; - name = "CentCom SOO Briefing" +"bcx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 }, -/turf/simulated/wall/indestructible/fakeglass, -/area/centcom/specops) +/obj/machinery/door/airlock/external{ + frequency = 1331; + id_tag = "admin_s_inner"; + name = "Ship External Access"; + req_access = list(101) + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1331; + master_tag = "admin_s_air_control"; + pixel_x = -1; + pixel_y = -29; + req_access = list(101) + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "podfloor_dark" + }, +/area/shuttle/administration) "bdh" = ( /obj/structure/chair, /obj/effect/landmark/voxstart, @@ -2435,97 +2534,82 @@ }, /turf/simulated/floor/carpet, /area/syndicate_mothership/control) -"bdQ" = ( -/obj/machinery/vending/cola/free, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"bdw" = ( +/obj/structure/coatrack, +/obj/structure/window/reinforced{ + dir = 4 }, -/area/centcom/zone2) -"beu" = ( -/obj/structure/railing{ - layer = 4.3; - pixel_y = 32 +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/zone1) +"bdB" = ( +/turf/simulated/floor/glass/reinforced, +/area/centcom/specops) +"beg" = ( +/obj/structure/chair/office/dark{ + dir = 8 }, -/obj/structure/chair/comfy/beige{ +/turf/simulated/floor/plasteel{ dir = 8; - layer = 5; - pixel_y = -2 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) -"beG" = ( -/obj/item/gun/energy/gun/advtaser{ - pixel_y = -2 + icon_state = "darkredalt" }, -/obj/item/gun/energy/gun/advtaser{ - pixel_y = -2 +/area/centcom/jail) +"bej" = ( +/obj/structure/chair/comfy/shuttle, +/obj/machinery/light{ + dir = 1 }, -/obj/item/gun/energy/gun/advtaser{ - pixel_y = -2 +/turf/simulated/floor/shuttle, +/area/shuttle/pod_1) +"beS" = ( +/obj/structure/lattice, +/turf/simulated/wall/shuttle{ + icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' }, -/obj/item/gun/energy/gun/advtaser{ - pixel_y = -2 +/area/shuttle/specops) +"beU" = ( +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_x = 6; + pixel_y = 27 }, -/obj/item/gun/energy/gun/advtaser{ - pixel_y = -2 +/obj/structure/extinguisher_cabinet{ + pixel_x = -6; + pixel_y = 27 }, -/obj/item/gun/energy/gun/advtaser{ - pixel_y = 7 +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel/grimy, +/area/trader_station/sol) +"beX" = ( +/obj/structure/chair/sofa/left, +/turf/simulated/floor/plasteel{ + icon_state = "darkgrey" }, -/obj/item/gun/energy/gun/advtaser{ - pixel_y = 7 +/area/syndicate_mothership) +"bfa" = ( +/obj/machinery/ai_status_display{ + pixel_y = 32 }, -/obj/item/gun/energy/gun/advtaser{ - pixel_y = 7 - }, -/obj/item/gun/energy/gun/advtaser{ - pixel_y = 7 - }, -/obj/item/gun/energy/gun/advtaser{ - pixel_y = 7 - }, -/obj/structure/rack/gunrack, -/obj/machinery/recharger/wallcharger{ - pixel_x = -24; - pixel_y = -3 - }, -/obj/machinery/recharger/wallcharger{ - pixel_x = -24; - pixel_y = 5 - }, -/obj/machinery/recharger/wallcharger{ - pixel_x = -24; - pixel_y = -11 - }, -/obj/effect/decal/warning_stripes/white, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/specops) -"beU" = ( -/obj/machinery/vending/wallmed{ - name = "Emergency NanoMed"; - pixel_x = 6; - pixel_y = 27 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = -6; - pixel_y = 27 - }, -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/plasteel/grimy, -/area/trader_station/sol) -"beX" = ( -/obj/structure/chair/sofa/left, -/turf/simulated/floor/plasteel{ - icon_state = "darkgrey" - }, -/area/syndicate_mothership) "bfg" = ( /turf/simulated/floor/wood{ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/control) +"bfo" = ( +/obj/machinery/vending/nta{ + dir = 4; + products = list(/obj/item/grenade/flashbang=4,/obj/item/flash=5,/obj/item/flashlight/seclite=4,/obj/item/restraints/legcuffs/bola/energy=8,/obj/item/ammo_box/shotgun=4,/obj/item/ammo_box/shotgun/buck=4,/obj/item/ammo_box/shotgun/rubbershot=4,/obj/item/ammo_casing/shotgun/stunslug=35,/obj/item/ammo_casing/shotgun/ion=14,/obj/item/ammo_casing/shotgun/laserslug=35,/obj/item/ammo_box/speedloader/shotgun=8,/obj/item/ammo_box/magazine/lr30mag=12,/obj/item/ammo_box/magazine/enforcer=18,/obj/item/ammo_box/magazine/enforcer/lethal=28,/obj/item/ammo_box/magazine/sp8=8,/obj/item/ammo_box/magazine/laser=12,/obj/item/ammo_box/magazine/wt550m9=20,/obj/item/ammo_box/magazine/m556=12,/obj/item/ammo_box/a40mm=4,/obj/item/ammo_box/c46x30mm=8,/obj/item/ammo_box/inc46x30mm=4,/obj/item/ammo_box/tox46x30mm=4,/obj/item/ammo_box/ap46x30mm=4,/obj/item/ammo_box/laserammobox=4); + req_access = list(104,109) + }, +/obj/effect/decal/warning_stripes/white/hollow, +/obj/effect/decal/warning_stripes/white/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "bfx" = ( /obj/structure/holohoop{ dir = 1 @@ -2535,11 +2619,30 @@ icon_state = "asteroid" }, /area/centcom/evac) -"bgm" = ( -/obj/item/twohanded/required/kirbyplants, +"bfH" = ( +/obj/structure/table/glass, +/obj/machinery/photocopier/faxmachine/longrange{ + department = "Central Command" + }, +/turf/simulated/floor/carpet/cyan, +/area/centcom/zone2) +"bfQ" = ( +/obj/machinery/door/airlock/centcom{ + name = "CentCom SOO"; + opacity = 1; + req_access = list(114) + }, +/obj/machinery/door/poddoor/shutters/invincible{ + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + dir = 1; + id_tag = "ERT_director_office_shutters"; + layer = 5; + locked = 1; + name = "CentCom SOO" + }, +/obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkredalt" + icon_state = "dark" }, /area/centcom/specops) "bgu" = ( @@ -2562,25 +2665,20 @@ icon_state = "floor12" }, /area/shuttle/syndicate) -"bgL" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - id_tag = "CC_ERT2" - }, -/obj/machinery/door/firedoor, -/obj/effect/decal/warning_stripes/yellow, -/turf/simulated/floor/wood{ - icon_state = "light-fancy-wood" - }, -/area/centcom/specops) -"bgN" = ( -/obj/effect/decal/warning_stripes/white/hollow, -/obj/machinery/vending/nta/ertarmory/green{ - req_access = list(104,109) +"bgJ" = ( +/obj/structure/chair/comfy/shuttle, +/obj/machinery/light{ + dir = 1 }, -/turf/simulated/floor/plasteel{ - icon_state = "darkgreenfull" +/turf/simulated/floor/shuttle, +/area/shuttle/pod_2) +"bhf" = ( +/obj/machinery/light/small{ + dir = 4; + tag = "icon-bulb1 (EAST)" }, -/area/centcom/specops) +/turf/simulated/floor/shuttle, +/area/shuttle/nt_droppod) "bhg" = ( /obj/structure/railing{ dir = 1 @@ -2591,9 +2689,16 @@ tag = "icon-stage_stairs" }, /area/ninja/holding) -"bhp" = ( -/turf/simulated/floor/plasteel{ - icon_state = "darkgreen" +"bhj" = ( +/obj/structure/sign/poster/official/high_class_martini{ + pixel_x = 32 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/turf/simulated/floor/wood{ + icon_state = "light-fancy-wood" }, /area/centcom/specops) "bht" = ( @@ -2627,15 +2732,6 @@ icon_state = "floorgrime" }, /area/ninja/holding) -"bhM" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4; - pixel_x = -14 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/evac) "bhR" = ( /obj/effect/turf_decal{ dir = 1; @@ -2674,40 +2770,41 @@ icon_state = "darkyellowalt" }, /area/syndicate_mothership/cargo) -"bim" = ( -/obj/machinery/door/window/brigdoor{ - dir = 1 - }, +"biy" = ( +/obj/machinery/vending/clothing, /turf/simulated/floor/plasteel{ - icon_state = "grimy" + icon_state = "dark" }, -/area/centcom/jail) -"biy" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 +/area/centcom/supply) +"biD" = ( +/obj/structure/table/wood/fancy/black, +/obj/item/reagent_containers/food/snacks/soup/beetsoup{ + desc = "Со вкусом политических убийств"; + name = "Борщ"; + pixel_y = 16 }, -/turf/simulated/floor/shuttle, -/area/shuttle/nt_droppod) -"biT" = ( -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkredalt" +/obj/effect/turf_decal/siding/wood{ + dir = 9 }, -/area/centcom/zone2) +/obj/item/stack/spacecash/c1000000{ + name = "1000000 Credit" + }, +/obj/item/stack/telecrystal/twohundred_fifty{ + amount = 115; + desc = null + }, +/obj/item/stack/telecrystal/twohundred_fifty{ + amount = 115; + desc = null + }, +/turf/simulated/floor/carpet/red, +/area/syndicate_mothership/control) "bje" = ( /turf/simulated/floor/plasteel{ dir = 6; icon_state = "darkredaltstrip" }, /area/centcom/jail) -"bji" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/evac) "bjl" = ( /turf/simulated/floor/plasteel{ dir = 6; @@ -2746,15 +2843,6 @@ icon_state = "fancy-wood-cherry" }, /area/shuttle/trade/sol) -"bjK" = ( -/obj/structure/bed, -/obj/item/bedsheet/clown, -/obj/effect/mine/sound/bwoink{ - layer = 2.9; - alpha = 0 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone1) "bjM" = ( /obj/machinery/light{ dir = 4 @@ -2764,28 +2852,16 @@ }, /turf/simulated/floor/shuttle, /area/shuttle/spacebar) -"bjO" = ( -/obj/machinery/door/airlock/centcom{ - id_tag = "Zone3_bathroom2"; - name = "Bathroom"; - opacity = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/centcom/zone3) -"bkc" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 9 - }, -/turf/simulated/floor/glass/reinforced, -/area/centcom/specops) -"bki" = ( -/turf/simulated/floor/indestructible{ - dir = 4; - icon_state = "darkgreynavyblue" +"bjP" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + dir = 8; + id_tag = "ERT_director_office_shutters2"; + layer = 5; + locked = 1; + name = "CentCom SOO Briefing" }, +/turf/simulated/wall/indestructible/fakeglass, /area/centcom/specops) "bkk" = ( /obj/structure/flora/tree/jungle, @@ -2812,26 +2888,6 @@ name = "floor" }, /area/vox_station) -"bkR" = ( -/obj/item/melee/baton{ - color = "#b30086" - }, -/turf/simulated/floor/plating, -/area/centcom/specops) -"bla" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - layer = 2.9 - }, -/obj/effect/turf_decal/siding/white{ - dir = 10 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) "blf" = ( /obj/effect/turf_decal{ icon_state = "golden_stripes" @@ -2919,32 +2975,14 @@ name = "floor" }, /area/vox_station) -"bmO" = ( -/obj/machinery/photocopier, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/centcom/jail) -"bnd" = ( -/obj/effect/turf_decal/caution/stand_clear{ - dir = 8; - pixel_y = -16 - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkyellowaltstrip" - }, -/area/centcom/specops) -"bnf" = ( -/obj/structure/window/reinforced, -/obj/machinery/light, -/obj/effect/turf_decal/siding/white{ - dir = 6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"bni" = ( +/obj/structure/chair/comfy/lime, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2 }, -/area/centcom/evac) +/turf/simulated/floor/wood, +/area/centcom/zone3) "bnO" = ( /obj/machinery/cryopod{ dir = 8 @@ -2965,34 +3003,43 @@ icon_state = "darkredaltstrip" }, /area/centcom/zone3) -"boG" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 +"boQ" = ( +/obj/effect/turf_decal/tile/neutral{ + color = "black"; + icon_state = "tile_full"; + layer = 9 + }, +/obj/effect/step_trigger/teleporter{ + icon = 'icons/mob/screen_gen.dmi'; + icon_state = "x2"; + teleport_x = 175; + teleport_y = 62; + teleport_z = 1 }, /turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkyellow" + color = "gray"; + dir = 8; + icon_state = "rampbottom" }, /area/centcom/specops) -"bpl" = ( -/obj/structure/window/reinforced{ - layer = 3.1; - armor = list("melee"=100,"bullet"=100,"laser"=0,"energy"=0,"bomb"=25,"bio"=100,"rad"=100,"fire"=80,"acid"=100) +"bpI" = ( +/obj/structure/table/wood{ + color = "#996633" }, -/turf/simulated/floor/wood{ - icon_state = "light-fancy-wood" +/obj/item/pen/multi/fountain{ + pixel_x = 5; + pixel_y = 5 }, -/area/centcom/specops) -"bpE" = ( -/obj/machinery/computer/secure_data, -/obj/structure/window/reinforced{ - dir = 4 +/obj/item/pen/multi/fountain{ + pixel_x = 5; + pixel_y = 5 }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkredfull" +/obj/item/pen/multi/fountain{ + pixel_x = 5; + pixel_y = 5 }, -/area/centcom/bridge) +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "bpJ" = ( /turf/simulated/wall/shuttle/nosmooth{ dir = 8; @@ -3000,30 +3047,6 @@ icon_state = "ninja_walls_T_alt" }, /area/shuttle/ninja) -"bpN" = ( -/obj/effect/decal/warning_stripes/north, -/obj/effect/decal/warning_stripes/south, -/obj/effect/turf_decal/caution/stand_clear, -/obj/machinery/door/poddoor/shutters/preopen/invincible{ - id_tag = "ERT_armory_lvl1"; - name = "Armory level 1"; - dir = 2 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" - }, -/area/centcom/specops) -"bpS" = ( -/obj/effect/decal/warning_stripes/northeastsouth, -/obj/machinery/door/poddoor/shutters/preopen/invincible{ - id_tag = "ERT_armory_lvl1"; - name = "Armory level 1"; - dir = 2 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" - }, -/area/centcom/specops) "bqb" = ( /obj/structure/sign/poster/official/safety_internals{ pixel_x = 32 @@ -3033,51 +3056,6 @@ name = "floor" }, /area/vox_station) -"bqo" = ( -/obj/structure/flora/ausbushes/sparsegrass, -/obj/structure/statue/artchair{ - layer = 10; - pixel_y = 10 - }, -/obj/effect/turf_decal/plaque{ - layer = 3 - }, -/turf/simulated/floor/grass, -/area/centcom/evac) -"bqy" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/light, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"bqR" = ( -/obj/machinery/door/airlock/centcom{ - name = "Office"; - opacity = 1; - req_access = list(666) - }, -/turf/space, -/area/centcom/specops) -"bra" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/item/radio/intercom{ - pixel_x = -28 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_2) -"bri" = ( -/obj/structure/bed, -/obj/item/bedsheet/rd, -/obj/effect/mine/sound/bwoink{ - layer = 2.9; - alpha = 0 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone1) "brr" = ( /obj/machinery/light/small{ dir = 1 @@ -3105,13 +3083,6 @@ icon_state = "white" }, /area/centcom/jail) -"bsy" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/coatrack, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/zone1) "bsK" = ( /obj/item/reagent_containers/food/drinks/bottle/vodka{ pixel_x = -8; @@ -3140,11 +3111,26 @@ /obj/structure/window/full/shuttle, /turf/simulated/floor/plating, /area/shuttle/escape) +"buk" = ( +/obj/effect/turf_decal/stripes/black{ + dir = 4; + do_not_delete_me = 1 + }, +/obj/effect/turf_decal/stripes/black{ + dir = 8; + do_not_delete_me = 1 + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "white" + }, +/area/shuttle/administration) "bul" = ( -/obj/structure/table/glass, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/structure/chair/comfy/lime{ + dir = 1 }, +/obj/structure/window/reinforced, +/turf/simulated/floor/wood, /area/centcom/zone3) "bur" = ( /obj/structure/chair/comfy/shuttle{ @@ -3197,16 +3183,23 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/ninja/outside) -"buT" = ( -/obj/structure/table/reinforced, -/turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/centcom/jail) "buW" = ( /obj/structure/chair/office/dark, /turf/simulated/floor/carpet/black, /area/centcom/zone2) +"buY" = ( +/obj/structure/piano/unanchored{ + dir = 8; + layer = 2.5 + }, +/obj/structure/flora/ausbushes, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/window/full/reinforced{ + armor = list("melee"=80,"bullet"=80,"laser"=0,"energy"=0,"bomb"=80,"bio"=100,"rad"=100,"fire"=80,"acid"=100); + layer = 5 + }, +/turf/simulated/floor/grass, +/area/centcom/specops) "bvu" = ( /obj/structure/table/reinforced/brass, /turf/simulated/floor/indestructible/vox{ @@ -3225,17 +3218,38 @@ name = "floor" }, /area/vox_station) -"bvD" = ( -/obj/structure/bookcase, -/obj/effect/decal/cleanable/fungus{ - pixel_x = -32; - pixel_y = 32 +"bvK" = ( +/obj/machinery/door_control/secure{ + id = "CC_Main_Office_1_1"; + req_access = list(114) }, -/obj/item/paper/central_command/archive/memes{ - info = "
"; - name = "Коллективное решение" +/turf/simulated/wall/indestructible/reinforced, +/area/centcom/bridge) +"bwb" = ( +/obj/machinery/computer/camera_advanced, +/obj/structure/railing, +/obj/structure/window/reinforced{ + dir = 4 }, -/turf/simulated/floor/plating, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) +"bwd" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/table, +/obj/item/pen/multi/fountain, +/obj/item/paper_bin/nanotrasen{ + pixel_x = 3; + pixel_y = 12 + }, +/turf/simulated/floor/carpet/black, /area/centcom/zone2) "bwf" = ( /obj/structure/window/reinforced, @@ -3261,6 +3275,22 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) +"bwK" = ( +/obj/structure/closet/secure_closet/guncabinet{ + layer = 2.9; + name = "advanced energy gun" + }, +/obj/item/gun/energy/gun/nuclear, +/obj/item/gun/energy/gun/nuclear, +/obj/item/gun/energy/gun/nuclear, +/obj/item/gun/energy/gun/nuclear, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor4" + }, +/area/shuttle/gamma) "bwU" = ( /obj/structure/chair/comfy/shuttle{ dir = 1 @@ -3270,19 +3300,6 @@ icon_state = "darkreddarkfull" }, /area/shuttle/escape) -"bxi" = ( -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkredaltstrip" - }, -/area/centcom/zone2) -"byq" = ( -/obj/structure/window/reinforced, -/obj/effect/turf_decal/siding/brown{ - dir = 4 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "byz" = ( /obj/structure/chair/comfy/shuttle{ dir = 8 @@ -3317,21 +3334,54 @@ /obj/machinery/reagentgrinder, /turf/simulated/floor/wood, /area/centcom/zone1) +"byD" = ( +/obj/machinery/door/airlock/external{ + id_tag = "s_docking_airlock"; + name = "Shuttle Airlock"; + req_access = list(150) + }, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "syndicate_sit_1"; + name = "Side Hull Door"; + opacity = 0; + req_access = list(150) + }, +/obj/structure/fans/tiny, +/obj/machinery/door_control/secure{ + id = "syndicate_sit_1"; + name = "Blast Doors"; + pixel_y = -23; + req_access = list(150) + }, +/obj/docking_port/mobile{ + dir = 4; + dwidth = 7; + height = 5; + id = "sit"; + name = "SIT shuttle"; + port_direction = 4; + preferred_direction = 2; + roundstart_move = "sit_away"; + width = 11 + }, +/obj/docking_port/stationary{ + dir = 4; + dwidth = 7; + height = 5; + id = "sit_away"; + name = "Syndicate Base"; + turf_type = /turf/simulated/floor/indestructible/plating; + width = 11 + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/syndicate_sit) "byG" = ( /obj/structure/flora/grass/both, /obj/item/storage/fancy/cigarettes/cigpack_robustgold, /turf/simulated/floor/indestructible/snow, /area/ninja/outside) -"byS" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/shuttle/engine/heater, -/turf/simulated/floor/plating/airless, -/area/shuttle/pod_3) "byZ" = ( /obj/structure/railing{ dir = 8 @@ -3379,19 +3429,23 @@ icon_state = "floorgrime" }, /area/ninja/holding) -"bAW" = ( +"bAT" = ( /obj/structure/table/glass, -/obj/item/paper, -/obj/item/folder/blue{ - pixel_x = 5; - pixel_y = -5 +/obj/item/pizzabox/vegetable, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellow" }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"bBg" = ( -/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - frequency = 1331; - id_tag = "synd_airlock_bottom"; +/area/centcom/specops) +"bBe" = ( +/turf/simulated/floor/plasteel{ + icon_state = "Dark" + }, +/area/centcom/specops) +"bBg" = ( +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1331; + id_tag = "synd_airlock_bottom"; pixel_x = -32; req_access = list(150); tag_airpump = "synd_pump_bottom"; @@ -3418,12 +3472,9 @@ icon_state = "dark" }, /area/shuttle/syndicate) -"bBo" = ( -/obj/effect/turf_decal/siding/yellow{ - dir = 8 - }, -/turf/simulated/floor/carpet, -/area/centcom/evac) +"bBh" = ( +/turf/simulated/floor/plating, +/area/centcom/zone2) "bBD" = ( /obj/effect/turf_decal/delivery, /obj/structure/closet/crate/syndicate, @@ -3489,6 +3540,35 @@ icon_state = "darkred" }, /area/syndicate_mothership/elite_squad) +"bCw" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + req_access = list(114) + }, +/obj/item/door_remote/centcomm, +/obj/item/clothing/head/beret/centcom/captain, +/obj/item/clothing/under/rank/centcom/captain, +/obj/item/clothing/shoes/centcom{ + desc = null; + name = "Dress shoes" + }, +/obj/item/clothing/gloves/color/white, +/obj/item/storage/box/centcomofficer, +/obj/item/radio/headset/centcom, +/obj/item/clothing/glasses/hud/security/sunglasses/aviators, +/obj/item/clothing/accessory/holster, +/obj/item/storage/backpack/satcheldeluxe, +/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka{ + pixel_x = -4; + pixel_y = 8 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = 10; + pixel_y = 12 + }, +/obj/item/megaphone, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "bCI" = ( /obj/effect/turf_decal/box/red, /turf/simulated/floor/indestructible/vox{ @@ -3496,6 +3576,10 @@ name = "floor" }, /area/vox_station) +"bCT" = ( +/obj/effect/turf_decal/siding/yellow, +/turf/simulated/floor/carpet/black, +/area/centcom/zone3) "bCU" = ( /obj/machinery/computer/shuttle/trade/sol, /turf/simulated/floor/plasteel/grimy, @@ -3507,19 +3591,25 @@ /obj/effect/turf_decal/stripes/black, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/jail) +"bDa" = ( +/turf/simulated/floor/indestructible{ + dir = 8; + icon_state = "darkgreynavyblue" + }, +/area/centcom/specops) +"bDb" = ( +/obj/structure/bookcase, +/turf/simulated/floor/wood{ + icon_state = "wood-broken7"; + tag = "icon-wood-broken7" + }, +/area/centcom/zone2) "bDo" = ( /turf/simulated/floor/plasteel{ dir = 1; icon_state = "dark" }, /area/syndicate_mothership/jail) -"bDp" = ( -/obj/structure/coatrack, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/zone1) "bDH" = ( /turf/simulated/floor/plasteel/grimy, /area/trader_station/sol) @@ -3545,24 +3635,12 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) -"bEk" = ( -/obj/structure/sign/poster/official/nanotrasen_logo{ - pixel_x = 32 - }, -/obj/structure/window/reinforced, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-22"; - tag = "icon-plant-22" - }, -/obj/machinery/light/small{ - dir = 4 +"bEA" = ( +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkyellow" }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"bEx" = ( -/obj/structure/reagent_dispensers/water_cooler, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) +/area/centcom/supplypod/loading/one) "bEB" = ( /obj/structure/showcase{ desc = "This one has an old damaged suit in it. Not working..."; @@ -3583,34 +3661,29 @@ icon_state = "floor4" }, /area/shuttle/syndicate) -"bGq" = ( -/obj/machinery/smartfridge, -/obj/structure/window/reinforced, -/turf/simulated/floor/wood, -/area/centcom/evac) -"bGt" = ( -/obj/structure/table/wood, -/obj/item/storage/lockbox/mindshield, -/obj/item/storage/lockbox/mindshield, -/obj/item/storage/lockbox/mindshield, -/obj/item/door_remote/centcomm, -/obj/item/storage/box/permits, -/obj/item/megaphone{ - pixel_x = -5; - pixel_y = 7 +"bEW" = ( +/obj/structure/railing{ + density = 0; + pixel_y = 32 }, -/obj/item/camera_bug/ert{ - pixel_y = 10 +/turf/simulated/floor/plasteel{ + color = "gray"; + dir = 8; + icon_state = "rampbottom" }, +/area/centcom/specops) +"bFM" = ( /obj/structure/window/reinforced{ dir = 4 }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) +"bGq" = ( +/obj/machinery/smartfridge, +/obj/structure/window/reinforced, +/turf/simulated/floor/wood, +/area/centcom/evac) "bGz" = ( /obj/machinery/door/airlock/syndicate/public{ name = "Скромный зал славы"; @@ -3620,6 +3693,15 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) +"bGO" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/centcom/zone1) "bGP" = ( /obj/structure/table/abductor{ color = "#99ff99"; @@ -3638,6 +3720,13 @@ icon_state = "floor" }, /area/ninja/holding) +"bGQ" = ( +/obj/vehicle/ridden/secway{ + layer = 3.5 + }, +/obj/item/key/security, +/turf/simulated/floor/plating, +/area/centcom/specops) "bGZ" = ( /obj/machinery/power/smes/magical{ color = "#444455"; @@ -3680,13 +3769,30 @@ icon_state = "floorgrime" }, /area/ninja/holding) -"bIj" = ( -/obj/item/flag/nt, -/turf/simulated/floor/plasteel{ +"bHU" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/gold{ dir = 5; - icon_state = "darkredalt" + do_not_delete_me = 1 }, -/area/centcom/jail) +/turf/simulated/floor/carpet/royalblack, +/area/shuttle/administration) +"bIE" = ( +/obj/effect/decal/nanotrasen_logo{ + icon_state = "logo4"; + pixel_x = 16 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"bIN" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/one) "bIU" = ( /obj/machinery/smartfridge/secure/chemistry/preloaded/syndicate, /turf/simulated/floor/plasteel{ @@ -3694,35 +3800,6 @@ icon_state = "navybluealt" }, /area/syndicate_mothership/control) -"bJk" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/turf_decal/siding/white{ - dir = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) -"bJo" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 - }, -/obj/effect/turf_decal/siding{ - color = "#444444" - }, -/turf/simulated/floor/glass, -/area/centcom/zone3) "bJL" = ( /obj/structure/ninjatele{ pixel_y = 25 @@ -3732,15 +3809,29 @@ icon_state = "floorgrime" }, /area/ninja/holding) -"bKu" = ( -/obj/machinery/computer/card/centcom, -/obj/structure/window/reinforced{ - dir = 8 +"bKz" = ( +/obj/machinery/vending/nta/ertarmory/yellow{ + req_access = list(104,109) }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "navyblue" }, -/area/centcom/bridge) +/area/centcom/specops) +"bKX" = ( +/obj/structure/rack, +/obj/item/melee/baton/telescopic{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/melee/baton/telescopic{ + pixel_y = 1 + }, +/obj/item/melee/baton/telescopic{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/simulated/floor/carpet/black, +/area/syndicate_mothership/jail) "bLb" = ( /obj/structure/table/abductor{ color = "#99ff99"; @@ -3765,10 +3856,17 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"bLx" = ( -/obj/effect/turf_decal/siding/white, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) +"bLr" = ( +/obj/structure/railing{ + layer = 4.3; + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/centcom/specops) "bLD" = ( /obj/machinery/light, /turf/simulated/floor/wood, @@ -3798,11 +3896,12 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership) -"bMS" = ( -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkgreen" +"bMP" = ( +/obj/structure/shuttle/engine/heater{ + icon_state = "heater3x3"; + tag = "icon-heater (NORTH)" }, +/turf/simulated/floor/plating/airless, /area/centcom/specops) "bNc" = ( /obj/machinery/door/window/brigdoor{ @@ -3815,6 +3914,17 @@ icon_state = "floorgrime" }, /area/ninja/holding) +"bNp" = ( +/obj/machinery/vending/dinnerware, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault"; + tag = "icon-vault (WEST)" + }, +/area/centcom/specops) "bNW" = ( /obj/item/flashlight/lamp, /obj/structure/table/reinforced/brass, @@ -3831,44 +3941,6 @@ icon_state = "darkyellowaltstrip" }, /area/syndicate_mothership/cargo) -"bOG" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - dir = 1; - id_tag = "ERT_director_office_shutters"; - layer = 5; - locked = 1; - name = "CentCom SOO" - }, -/obj/machinery/door_control/secure{ - id = "ERT_director_office_shutters"; - pixel_x = 32; - req_access = list(114) - }, -/turf/simulated/wall/indestructible/fakeglass, -/area/centcom/specops) -"bOU" = ( -/obj/item/flag/nt, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "navybluealt" - }, -/area/centcom/specops) -"bOX" = ( -/obj/item/stack/wrapping_paper, -/obj/item/stack/wrapping_paper, -/obj/item/stack/wrapping_paper, -/obj/item/stack/packageWrap, -/obj/item/stack/packageWrap, -/obj/structure/table, -/obj/item/paper{ - info = "

Особенности отправки оборудования с помощью шаттла отдела снабжения


С целью минимизации рисков провоза опасных грузов и/или контрабанды сотрудники департамента защиты активов NanoTrasen регулярно осуществляют проверки шаттла снабжения. Эти проверки включают в себя снятие внешней упаковки с контейнеров для проверки манифестов, а также уничтожение любых объектов, не находящихся в контейнерах. Контроль груза осуществляется:
  1. Непосредственно после отлета шаттла с АКН Трурль на объект NanoTrasen;
  2. После отлета шаттла с объекта NanoTrasen до прибытия на АКН Трурль;
  3. Непосредственно после стыковки шаттла с АКН Трурль.

Для отправки оборудования на объект NanoTrasen с помощью шаттла снабжения необходимо обернуть контейнер упаковочной бумагой или поместить его еще в один контейнер."; - name = "Особенности отправки оборудования с помощью шаттла отдела снабжения" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "bPp" = ( /obj/machinery/syndiepad/admin/loadpad{ target_id = "syndie_cargo_port2" @@ -3881,59 +3953,19 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"bPw" = ( -/obj/item/gun/energy/laser/instakill/blue, -/obj/item/gun/energy/laser/instakill/blue, -/obj/item/gun/energy/laser/instakill/blue, -/obj/item/gun/energy/laser/instakill/blue, -/obj/item/gun/energy/laser/instakill/blue, -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - layer = 2.9; - name = "Secret Fun"; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "vault" +"bPG" = ( +/obj/structure/window/reinforced, +/obj/effect/turf_decal/siding/yellow{ + dir = 8 }, -/area/centcom/jail) +/turf/simulated/floor/carpet, +/area/centcom/evac) "bQi" = ( /obj/machinery/computer, /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, /area/centcom/bridge) -"bQo" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 - }, -/turf/simulated/floor/glass, -/area/centcom/bridge) -"bQr" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/machinery/iv_drip, -/obj/item/reagent_containers/iv_bag/salglu, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/nitrogen, -/obj/item/tank/internals/emergency_oxygen/plasma, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkbluealt" - }, -/area/centcom/specops) "bQu" = ( /obj/machinery/vending/artvend, /turf/simulated/floor/wood, @@ -3945,14 +3977,6 @@ icon_state = "ninja_walls_corners" }, /area/shuttle/ninja) -"bQK" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 1; - icon_state = "propulsion_l"; - tag = "icon-propulsion_l (NORTH)" - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/funeral) "bQZ" = ( /obj/structure/table, /obj/item/reagent_containers/food/drinks/coffee{ @@ -3966,10 +3990,6 @@ }, /turf/simulated/floor/shuttle, /area/shuttle/spacebar) -"bRc" = ( -/obj/structure/chair/comfy/shuttle, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_2) "bRi" = ( /obj/machinery/atmospherics/unary/cold_sink/freezer, /turf/simulated/floor/plasteel{ @@ -3990,32 +4010,52 @@ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' }, /area/shuttle/funeral) -"bRw" = ( -/obj/structure/reagent_dispensers/peppertank{ - pixel_y = -30 +"bRu" = ( +/obj/machinery/light/small{ + dir = 8 }, /turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkredaltstrip" + dir = 8; + icon_state = "navybluealtstrip" }, -/area/centcom/jail) +/area/centcom/supply) "bRx" = ( /turf/simulated/floor/indestructible{ icon_state = "floor" }, /area/ninja/holding) +"bRL" = ( +/obj/structure/bookcase, +/obj/item/book/manual/sop_command, +/obj/item/book/manual/sop_engineering, +/obj/item/book/manual/sop_general, +/obj/item/book/manual/sop_legal, +/obj/item/book/manual/sop_medical, +/obj/item/book/manual/sop_science, +/obj/item/book/manual/sop_security, +/obj/item/book/manual/sop_service, +/obj/item/book/manual/sop_supply, +/turf/simulated/floor/carpet, +/area/centcom/jail) "bRM" = ( /turf/simulated/floor/indestructible{ icon_state = "floorgrime" }, /area/ninja/holding) -"bRY" = ( -/obj/structure/table/glass, +"bRZ" = ( /turf/simulated/floor/plasteel{ - dir = 1; + dir = 6; icon_state = "darkyellow" }, -/area/centcom/specops) +/area/centcom/supplypod/loading/two) +"bSd" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" + }, +/area/centcom/jail) "bSe" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/shuttle/objective_check/vox, @@ -4041,12 +4081,12 @@ icon_state = "floor4" }, /area/shuttle/ussp) -"bSA" = ( +"bSx" = ( /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkredaltstrip" + dir = 8; + icon_state = "darkyellowcornersalt" }, -/area/centcom/specops) +/area/centcom/zone3) "bSL" = ( /obj/structure/statue/sandstone/assistant{ anchored = 1; @@ -4062,16 +4102,6 @@ icon_state = "darkjail" }, /area/syndicate_mothership/jail) -"bTd" = ( -/obj/structure/railing{ - dir = 8; - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "rampbottom"; - tag = "icon-stage_stairs" - }, -/area/centcom/zone1) "bTx" = ( /obj/structure/table/reinforced/brass, /obj/item/storage/toolbox/electrical{ @@ -4167,6 +4197,19 @@ icon_state = "darkyellowfull" }, /area/syndicate_mothership/cargo) +"bUi" = ( +/obj/effect/turf_decal/siding/white, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) +"bUs" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 10 + }, +/turf/simulated/floor/glass, +/area/centcom/bridge) "bUu" = ( /obj/machinery/suit_storage_unit/syndicate{ pixel_y = 6 @@ -4187,6 +4230,31 @@ icon_state = "navybluealt" }, /area/syndicate_mothership/control) +"bVg" = ( +/obj/effect/decal/warning_stripes/white/hollow, +/obj/machinery/vending/nta/ertarmory/engineer{ + req_access = list(101,104,109) + }, +/obj/machinery/light, +/obj/effect/decal/warning_stripes/white/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"bVq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "darkgrey" + }, +/area/shuttle/administration) +"bVt" = ( +/obj/machinery/door/poddoor/impassable/preopen{ + id_tag = "ERT_Quarantine"; + name = "ERT Quarantine" + }, +/turf/simulated/wall/indestructible/fakeglass, +/area/centcom/specops) "bVx" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -4215,25 +4283,16 @@ icon_state = "brownoldfull" }, /area/syndicate_mothership/jail) -"bWc" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/machinery/light{ - dir = 1 +"bVU" = ( +/obj/structure/closet/crate/can, +/obj/effect/turf_decal/siding/brown{ + dir = 4 }, -/turf/simulated/floor/wood, -/area/centcom/zone3) -"bWt" = ( -/obj/docking_port/stationary{ - dir = 4; - dwidth = 2; - height = 6; - id = "pod4_away"; - name = "recovery ship bay 4"; - turf_type = /turf/simulated/floor/plating/airless; - width = 5 +/obj/structure/window/reinforced/tinted{ + dir = 8 }, -/turf/simulated/floor/plating/airless, -/area/space) +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "bWH" = ( /turf/simulated/floor/shuttle/transparent_floor, /area/shuttle/syndicate) @@ -4246,11 +4305,6 @@ icon_state = "grimy" }, /area/syndicate_mothership) -"bXg" = ( -/obj/structure/grille, -/obj/structure/window/full/shuttle, -/turf/simulated/wall/shuttle, -/area/shuttle/siberia) "bXp" = ( /obj/effect/turf_decal/delivery/white, /obj/machinery/door/airlock/wood/glass{ @@ -4263,19 +4317,6 @@ icon_state = "dark" }, /area/centcom/zone2) -"bXr" = ( -/obj/structure/closet/cardboard{ - icon_state = "cardboard_librarian"; - icon_closed = "cardboard_librarian"; - icon_opened = "cardboard_librarian_open" - }, -/obj/item/paper/central_command/archive/memes{ - info = "
"; - name = "Супъективное мнение" - }, -/obj/item/book/random/triple, -/turf/simulated/floor/plating, -/area/centcom/zone2) "bXA" = ( /obj/structure/table/reinforced, /obj/item/stamp/syndicate, @@ -4289,6 +4330,16 @@ }, /turf/simulated/floor/carpet, /area/syndicate_mothership/control) +"bXG" = ( +/obj/effect/turf_decal/caution/stand_clear{ + dir = 8; + pixel_y = -16 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkyellowaltstrip" + }, +/area/centcom/specops) "bXH" = ( /obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ @@ -4318,30 +4369,28 @@ name = "floor" }, /area/vox_station) -"bYI" = ( -/obj/structure/sign/poster/official/nanotrasen_logo{ - icon = 'icons/obj/decals.dmi'; - icon_state = "ntsing_alt5" +"bZc" = ( +/obj/machinery/computer/camera_advanced/shuttle_docker/admin{ + dir = 1; + name = "NTV Argos shuttle navigation computer" }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/effect/turf_decal/stripes/gold{ + dir = 5; + do_not_delete_me = 1 }, -/area/centcom/specops) -"bYY" = ( -/obj/structure/railing{ - layer = 4.3; - density = 0 +/obj/machinery/light/small{ + dir = 1 }, -/obj/effect/turf_decal/tile/neutral{ - color = "black"; - icon_state = "tile_full" +/turf/simulated/floor/carpet/royalblack, +/area/shuttle/administration) +"bZj" = ( +/obj/machinery/status_display{ + pixel_y = 32 }, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" + icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/bridge) "bZu" = ( /obj/structure/table/reinforced, /obj/item/flashlight/lamp, @@ -4350,18 +4399,24 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"bZC" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 +"bZw" = ( +/obj/machinery/door_control/secure{ + id = "CC_Armory_Combat_shotgun"; + name = "Combat Shotguns"; + pixel_x = -8; + pixel_y = -24; + req_access = list(114) + }, +/obj/machinery/door_control/secure{ + id = "CC_Armory_IK60"; + name = "IK-60"; + pixel_x = 8; + pixel_y = -24; + req_access = list(114) }, -/turf/simulated/floor/glass/reinforced, -/area/centcom/specops) -"bZG" = ( -/obj/structure/chair/comfy/shuttle, /turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkyellow" + dir = 10; + icon_state = "navyblue" }, /area/centcom/specops) "bZP" = ( @@ -4379,20 +4434,6 @@ name = "floor" }, /area/vox_station) -"caN" = ( -/obj/structure/table/wood, -/obj/item/book/manual/security_space_law, -/obj/item/paper_bin/nanotrasen, -/obj/item/pen, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/carpet, -/area/centcom/zone3) "caQ" = ( /obj/structure/chair/sofa{ dir = 9 @@ -4407,12 +4448,13 @@ /obj/structure/chair/sofa/left, /turf/simulated/floor/carpet/black, /area/centcom/zone1) -"cbK" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 +"cby" = ( +/obj/item/clothing/accessory/stripedredscarf, +/obj/item/clothing/head/hopcap, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) +/area/centcom/specops) "cbQ" = ( /obj/structure/chair/comfy/brown{ dir = 1 @@ -4436,12 +4478,14 @@ }, /turf/simulated/floor/wood, /area/trader_station/sol) -"ccc" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 10 +"ccq" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "navybluealt" }, -/turf/simulated/floor/glass/reinforced, /area/centcom/specops) "ccA" = ( /obj/machinery/porta_turret/syndicate, @@ -4465,37 +4509,27 @@ icon_state = "grimy" }, /area/syndicate_mothership) -"cdq" = ( -/obj/structure/bookcase/manuals, -/obj/item/book/manual/sop_legal, -/obj/item/book/manual/sop_engineering, -/obj/item/book/manual/sop_command, -/obj/item/book/manual/security_space_law, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) -"cdD" = ( -/obj/structure/bed, -/obj/item/bedsheet/qm, -/obj/effect/mine/sound/bwoink{ - layer = 2.9; - alpha = 0 +"ccL" = ( +/obj/structure/table/glass, +/obj/item/storage/box/bodybags, +/obj/item/reagent_containers/spray/cleaner, +/obj/item/paper/Cloning{ + pixel_x = 6 }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone1) -"cdP" = ( -/turf/simulated/wall/shuttle/nosmooth/interior{ +/turf/simulated/floor/plasteel{ dir = 10; - icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi'; - icon_state = "gray_walls_corners"; - underlay_floor_icon = 'icons/turf/shuttle/floors.dmi'; - underlay_floor_icon_state = "floor4" + icon_state = "whiteblue" }, -/area/shuttle/syndicate) -"cei" = ( -/obj/structure/table/glass, -/obj/item/toy/figure/dsquad, -/turf/simulated/floor/carpet/cyan, -/area/centcom/zone2) +/area/centcom/specops) +"ccX" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) "ceD" = ( /obj/machinery/door/airlock/syndicate/command{ name = "Teleporter"; @@ -4520,6 +4554,29 @@ icon_state = "floor" }, /area/ninja/holding) +"ceX" = ( +/obj/machinery/door/airlock/shuttle{ + id_tag = "s_docking_airlock"; + name = "Escape Pod Hatch" + }, +/obj/docking_port/mobile/pod{ + dir = 8; + id = "pod2"; + name = "escape pod 2"; + port_direction = 2; + roundstart_move = "pod2_home" + }, +/obj/docking_port/stationary{ + dir = 8; + dwidth = 2; + height = 6; + id = "pod2_away"; + name = "recovery ship bay 2"; + turf_type = /turf/simulated/floor/plating/airless; + width = 5 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/pod_2) "cfa" = ( /obj/item/grown/log/tree{ pixel_x = 3; @@ -4532,21 +4589,6 @@ }, /turf/simulated/floor/indestructible/snow, /area/ninja/outside) -"cfq" = ( -/turf/simulated/floor/plasteel{ - icon_state = "darkredcorners" - }, -/area/centcom/specops) -"cfr" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 - }, -/obj/effect/turf_decal/siding/blue{ - dir = 4 - }, -/turf/simulated/floor/glass, -/area/centcom/bridge) "cfw" = ( /obj/structure/table, /obj/item/storage/box/masks, @@ -4592,30 +4634,14 @@ icon_state = "darkblue" }, /area/centcom/zone1) -"cgu" = ( -/obj/structure/shuttle/engine/heater{ - dir = 1; - tag = "icon-heater (NORTH)" - }, -/obj/structure/window/reinforced{ - color = "black" - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/funeral) -"cgx" = ( -/obj/docking_port/stationary{ - dheight = 1; - dir = 8; - dwidth = 7; - height = 18; - id = "trade_sol_base"; - name = "docking bay 2 at Jupiter Station"; - width = 15 +"cgv" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "Toxin" }, -/turf/space{ - icon_state = "black" +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/area/space) +/area/centcom/supply) "cgU" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/condiment/peppermill, @@ -4634,16 +4660,6 @@ icon_state = "white" }, /area/centcom/jail) -"cgX" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "CC_Armory_shotgun" - }, -/obj/effect/decal/warning_stripes/red, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "chj" = ( /obj/structure/bookcase, /obj/item/book/manual, @@ -4653,6 +4669,13 @@ icon_state = "floorgrime" }, /area/ninja/holding) +"chv" = ( +/obj/machinery/light/spot, +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/transport) "chw" = ( /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/stripes/line{ @@ -4662,20 +4685,17 @@ icon_state = "darkgrey" }, /area/syndicate_mothership) -"chF" = ( -/obj/structure/window/reinforced{ - layer = 2.9 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" - }, -/area/centcom/jail) "chG" = ( /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkyellowaltstrip" }, /area/centcom/supply) +"chS" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkgreen" + }, +/area/centcom/specops) "cig" = ( /obj/structure/railing/corner, /obj/machinery/light/small{ @@ -4694,29 +4714,22 @@ icon_state = "floor" }, /area/ninja/holding) -"ciS" = ( -/obj/machinery/atmospherics/pipe/simple/visible{ - dir = 10 +"ciK" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/poddoor/impassable/preopen{ + id_tag = "ERT_Quarantine"; + name = "ERT Quarantine" }, -/turf/simulated/floor/wood, -/area/centcom/specops) -"ciU" = ( -/obj/structure/rack/holorack, -/obj/item/nullrod, -/obj/item/nullrod, -/obj/item/nullrod, -/obj/item/melee/baton/telescopic, -/obj/item/melee/baton/telescopic, -/obj/item/melee/baton/telescopic, -/obj/item/melee/baton/telescopic, -/obj/structure/window/reinforced{ - dir = 4; - layer = 2.9 +/obj/machinery/door/airlock/centcom{ + name = "Medical Block"; + opacity = 1; + req_access = list(109) }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "white" }, -/area/centcom/supply) +/area/centcom/specops) "ciV" = ( /turf/simulated/wall/shuttle{ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' @@ -4735,6 +4748,31 @@ icon_state = "darkjail" }, /area/syndicate_mothership/jail) +"cjk" = ( +/obj/structure/stone_tile/surrounding/burnt, +/obj/structure/stone_tile/center/burnt, +/obj/effect/landmark/spawner/bubblegum, +/turf/simulated/floor/lava/lava_land_surface, +/area/ruin/space/bubblegum_arena) +"cjr" = ( +/obj/structure/rack, +/obj/item/gun/energy/ionrifle/carbine{ + pixel_y = 7 + }, +/obj/item/grenade/empgrenade{ + pixel_x = 7; + pixel_y = -2 + }, +/obj/item/grenade/empgrenade, +/obj/item/aicard{ + layer = 2.9; + pixel_x = -5; + pixel_y = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "cjy" = ( /obj/structure/chair{ dir = 1 @@ -4753,31 +4791,6 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/control) -"cjN" = ( -/obj/item/gun/projectile/shotgun/riot{ - pixel_x = 3; - pixel_y = 8 - }, -/obj/item/gun/projectile/shotgun/riot{ - pixel_x = 3; - pixel_y = 8 - }, -/obj/item/gun/projectile/shotgun/riot/short, -/obj/item/gun/projectile/shotgun/riot/short, -/obj/item/gun/projectile/shotgun/riot{ - pixel_x = 3; - pixel_y = 8 - }, -/obj/item/gun/projectile/shotgun/riot{ - pixel_x = 3; - pixel_y = 8 - }, -/obj/structure/rack/gunrack, -/obj/effect/decal/warning_stripes/green/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "cjQ" = ( /obj/machinery/door/window/brigdoor{ color = "#00f700"; @@ -4802,18 +4815,59 @@ icon_state = "dark" }, /area/centcom/evac) -"cka" = ( -/obj/effect/decal/warning_stripes/northeastsouth, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "ERT_armory_lvl3"; - name = "Armory level 3"; - layer = 5 +"ckb" = ( +/obj/structure/window/reinforced{ + dir = 4 }, +/obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ - icon_state = "darkfull" + icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/bridge) +"ckm" = ( +/obj/structure/bookcase, +/turf/simulated/floor/wood, +/area/centcom/zone2) +"cko" = ( +/obj/structure/table/reinforced, +/obj/machinery/door_control/secure{ + id = "CC_space_jail_sec"; + pixel_x = -7; + pixel_y = -6 + }, +/obj/machinery/embedded_controller/radio/airlock/access_controller{ + frequency = 2000; + id_tag = "CC-OP4"; + name = "Access Controller OP4"; + pixel_x = -7; + pixel_y = 6; + req_access = list(109); + tag_exterior_door = "CC-OP4-Ext"; + tag_interior_door = "CC-OP4-Int" + }, +/obj/machinery/door_control/secure{ + color = "#FFA500"; + id = "CC_space_jail_cell"; + name = "remote cell shutters control"; + pixel_x = 7; + pixel_y = -6; + req_access = list(104,114) + }, +/obj/machinery/door_control/secure{ + color = "#ffaaaa"; + id = "CC_space_jail_door"; + name = "remote cell door bolts control"; + normaldoorcontrol = 1; + pixel_x = 7; + pixel_y = 6; + req_access = list(104,114); + specialfunctions = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkredaltstrip" + }, +/area/centcom/jail) "ckp" = ( /obj/structure/table/wood, /obj/machinery/chem_dispenser/beer/upgraded, @@ -4865,6 +4919,12 @@ tag = "icon-redfull (NORTHWEST)" }, /area/centcom/zone1) +"ckU" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "ckZ" = ( /obj/effect/turf_decal{ dir = 4; @@ -4883,32 +4943,6 @@ name = "floor" }, /area/syndicate_mothership/outside) -"clg" = ( -/obj/docking_port/mobile{ - dwidth = 8; - height = 22; - id = "syndicate"; - name = "syndicate shuttle"; - roundstart_move = "syndicate_away"; - width = 18 - }, -/obj/structure/lattice/catwalk, -/obj/docking_port/stationary/transit{ - dheight = 9; - dwidth = 5; - height = 22; - id = "syndicate_transit"; - name = "syndicate in transit"; - pixel_y = -32; - turf_type = /turf/space/transit/north; - width = 18 - }, -/turf/simulated/floor/shuttle/transparent_floor{ - dir = 4; - icon = 'icons/turf/shuttle/misc.dmi'; - icon_state = "tube" - }, -/area/shuttle/syndicate) "cli" = ( /obj/item/shard, /turf/simulated/floor/indestructible/asteroid, @@ -4920,19 +4954,15 @@ tag = "icon-redfull (NORTHWEST)" }, /area/centcom/zone1) -"clv" = ( -/turf/simulated/floor/indestructible{ - dir = 4; - icon_state = "darkpurple" +"clC" = ( +/obj/effect/decal/warning_stripes/white/hollow, +/obj/machinery/vending/nta/ertarmory/janitor{ + req_access = list(101,104,109) }, -/area/centcom/specops) -"clw" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 +/obj/effect/decal/warning_stripes/white/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/obj/machinery/computer/station_alert, -/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "cme" = ( /obj/structure/chair/comfy/shuttle{ @@ -4989,13 +5019,6 @@ /obj/structure/window/full/shuttle, /turf/simulated/floor/plating, /area/shuttle/spacebar) -"cnr" = ( -/turf/simulated/wall/shuttle/nosmooth{ - dir = 10; - icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi'; - icon_state = "gray_walls_corners" - }, -/area/shuttle/ussp) "cnt" = ( /turf/simulated/floor/plasteel, /area/centcom/zone1) @@ -5022,15 +5045,11 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) -"coB" = ( -/obj/machinery/light{ - dir = 8 - }, +"con" = ( /turf/simulated/floor/plasteel{ - icon_state = "arrival"; - dir = 10 + icon_state = "darkred" }, -/area/centcom/evac) +/area/centcom/specops) "coI" = ( /obj/machinery/door/airlock/survival_pod{ drain_act_protected = 1 @@ -5055,26 +5074,6 @@ icon_state = "brownoldfull" }, /area/syndicate_mothership/jail) -"coX" = ( -/obj/effect/turf_decal/arrows, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkyellowaltstrip" - }, -/area/centcom/supply) -"coZ" = ( -/obj/machinery/light, -/obj/effect/turf_decal/siding/white/corner{ - dir = 1 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"cpd" = ( -/obj/machinery/vending/ntc/medical, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "cpk" = ( /obj/structure/ore_box, /obj/effect/decal/cleanable/blood/oil, @@ -5101,21 +5100,34 @@ icon_state = "darkredcornersalt" }, /area/syndicate_mothership/control) -"cpK" = ( -/obj/effect/decal/warning_stripes/north, -/obj/effect/decal/warning_stripes/south, -/obj/effect/turf_decal/caution/stand_clear{ +"cpW" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/black{ + do_not_delete_me = 1 + }, +/obj/effect/turf_decal/stripes/black{ dir = 1; do_not_delete_me = 1 }, -/obj/machinery/door/poddoor/shutters/invincible{ +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "white" + }, +/area/shuttle/administration) +"cqf" = ( +/obj/machinery/computer/shuttle/admin{ dir = 1; - id_tag = "CC_Armory_GYGAX" + name = "NTV Argos shuttle console" }, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" +/obj/effect/turf_decal/stripes/gold{ + dir = 6; + do_not_delete_me = 1; + icon_state = "gs_deadlock" }, -/area/centcom/specops) +/turf/simulated/floor/carpet/royalblack, +/area/shuttle/administration) "cqi" = ( /obj/structure/table/abductor{ color = "#99ff99"; @@ -5133,78 +5145,42 @@ icon_state = "floorgrime" }, /area/ninja/holding) -"cqr" = ( -/obj/machinery/vending/medical, -/turf/simulated/floor/plasteel{ - icon_state = "darkbluealt" +"cqt" = ( +/obj/machinery/door/airlock/shuttle{ + id_tag = "s_docking_airlock"; + name = "Escape Pod Hatch" }, -/area/centcom/specops) -"cqx" = ( -/obj/effect/turf_decal/siding/white{ +/obj/docking_port/mobile/pod{ dir = 4; - pixel_x = -14 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/evac) -"cqN" = ( -/obj/structure/closet/cabinet, -/obj/item/clothing/under/color/lightpurple, -/obj/item/clothing/under/color/purple, -/obj/item/storage/backpack/satchel, -/obj/item/storage/backpack/satchel, -/obj/item/clothing/head/wizard/red, -/obj/item/clothing/suit/wizrobe/red, -/obj/item/clothing/head/wizard, -/obj/item/clothing/suit/wizrobe, -/obj/item/clothing/shoes/sandal, -/obj/item/clothing/shoes/sandal, -/obj/machinery/light/small{ - brightness_range = 6; - dir = 1; - light_range = 8; - nightshift_light_range = 6; - throw_range = 6 - }, -/turf/simulated/floor/carpet/cyan, -/area/wizard_station) -"cqX" = ( -/obj/structure/noticeboard{ - pixel_x = -32; - pixel_y = 32 - }, -/obj/item/paper{ - info = "Передвинуть бойлер с водой" + id = "pod4"; + name = "escape pod 4"; + port_direction = 2; + roundstart_move = "pod4_home" }, -/obj/machinery/light{ - dir = 1 +/obj/docking_port/stationary{ + dir = 4; + dwidth = 2; + height = 6; + id = "pod4_away"; + name = "recovery ship bay 4"; + turf_type = /turf/simulated/floor/plating/airless; + width = 5 }, -/turf/simulated/floor/wood, -/area/centcom/zone2) -"crc" = ( -/obj/effect/decal/warning_stripes/northeastsouth, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 1; - id_tag = "ERT_armory_lvl2"; - name = "Armory level 2"; - layer = 5 +/turf/simulated/floor/shuttle, +/area/shuttle/pod_4) +"cqv" = ( +/obj/effect/decal/warning_stripes/white/hollow, +/obj/machinery/vending/nta/ertarmory/blue{ + req_access = list(104,109) }, /turf/simulated/floor/plasteel{ - icon_state = "darkfull" + dir = 4; + icon_state = "navybluefull" }, /area/centcom/specops) -"crA" = ( -/obj/machinery/computer/pod/deathsquad, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "navybluealtstrip" - }, -/area/centcom/supply) +"cqY" = ( +/turf/simulated/floor/wood, +/area/centcom/zone3) "crD" = ( /obj/structure/closet/crate, /obj/item/toy/plushie/blue_fox, @@ -5232,14 +5208,6 @@ icon_state = "white" }, /area/centcom/jail) -"crY" = ( -/obj/effect/turf_decal/siding/white{ - dir = 6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) "csh" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/effect/turf_decal/siding/wideplating{ @@ -5249,12 +5217,27 @@ icon_state = "grimy" }, /area/syndicate_mothership) +"csr" = ( +/obj/machinery/computer/cloning{ + dir = 8 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor3" + }, +/area/shuttle/administration) "csJ" = ( /turf/simulated/floor/plasteel{ dir = 9; icon_state = "darkyellowalt" }, /area/syndicate_mothership/cargo) +"csN" = ( +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "csQ" = ( /obj/machinery/sleeper/syndie, /turf/simulated/floor/shuttle{ @@ -5271,12 +5254,29 @@ /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/wood, /area/centcom/zone1) +"ctk" = ( +/obj/structure/chair/office/light, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) +"cts" = ( +/obj/structure/bed, +/obj/item/bedsheet/red, +/obj/effect/mine/sound/bwoink{ + alpha = 0; + layer = 2.9 + }, +/turf/simulated/floor/carpet/arcade, +/area/centcom/zone1) "ctv" = ( /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/evac) -"ctz" = ( +"ctG" = ( /obj/structure/table, /obj/item/beach_ball, /obj/item/beach_ball/holoball, @@ -5305,6 +5305,17 @@ name = "floor" }, /area/vox_station) +"cuu" = ( +/obj/structure/railing{ + dir = 4; + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/centcom/specops) "cuy" = ( /obj/item/shard, /obj/item/trash/sosjerky, @@ -5323,17 +5334,6 @@ name = "floor" }, /area/vox_station) -"cuU" = ( -/turf/simulated/floor/shuttle, -/area/shuttle/nt_droppod) -"cvg" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone3) "cvi" = ( /obj/structure/table/reinforced/brass, /obj/item/clothing/suit/space/vox/carapace, @@ -5363,41 +5363,16 @@ name = "floor" }, /area/syndicate_mothership/outside) -"cvq" = ( -/obj/structure/chair/office/light{ - dir = 1 - }, -/obj/effect/turf_decal/siding{ - color = "#444444" - }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) -"cvQ" = ( -/obj/structure/shuttle/engine/platform{ - dir = 8; - layer = 2.9 - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/administration) -"cvR" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "CC_crate" - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkyellowaltstrip" - }, -/area/centcom/supply) -"cwn" = ( -/obj/structure/table/reinforced/brass, -/obj/item/clothing/suit/space/vox/medic, -/obj/item/clothing/suit/space/vox/medic, -/obj/item/clothing/head/helmet/space/vox/medic, -/obj/item/clothing/head/helmet/space/vox/medic, -/obj/effect/turf_decal/bot_red, -/turf/simulated/floor/indestructible/vox{ - icon_state = "darkfull"; - name = "floor" +"cwn" = ( +/obj/structure/table/reinforced/brass, +/obj/item/clothing/suit/space/vox/medic, +/obj/item/clothing/suit/space/vox/medic, +/obj/item/clothing/head/helmet/space/vox/medic, +/obj/item/clothing/head/helmet/space/vox/medic, +/obj/effect/turf_decal/bot_red, +/turf/simulated/floor/indestructible/vox{ + icon_state = "darkfull"; + name = "floor" }, /area/vox_station) "cwG" = ( @@ -5412,6 +5387,19 @@ name = "floor" }, /area/vox_station) +"cwU" = ( +/obj/structure/table/wood, +/obj/item/storage/pill_bottle/dice, +/turf/simulated/floor/carpet, +/area/centcom/evac) +"cxl" = ( +/obj/structure/table/wood/fancy/black, +/obj/machinery/door_control/secure{ + id = "senior_o_shutters"; + req_access = list(114) + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "cxA" = ( /obj/machinery/teleport/hub/upgraded{ admin_usage = 1 @@ -5448,13 +5436,36 @@ }, /turf/simulated/floor/indestructible/beach/water/deep/dense, /area/ninja/outside) -"cxL" = ( -/obj/machinery/vending/tool, -/obj/effect/decal/warning_stripes/white/hollow, +"cxI" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/airlock/centcom{ + name = "Gamma Armory"; + opacity = 1; + req_access = list(114) + }, +/obj/structure/fans/tiny, +/obj/machinery/door/poddoor/shutters/invincible{ + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + dir = 2; + id_tag = "gamma shuttle"; + layer = 5; + locked = 1 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/supply) +"cxK" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/vending/coffee/free, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "cxM" = ( /obj/structure/table/reinforced/brass, /obj/item/clothing/suit/space/vox/stealth, @@ -5581,55 +5592,28 @@ name = "floor" }, /area/syndicate_mothership) -"cAb" = ( -/obj/machinery/door_control/secure{ - id = "CC_Armory_SRT"; - pixel_y = -25; - req_access = list(114); - pixel_x = 25; - name = "SRT Team 1" - }, -/turf/simulated/floor/plasteel{ - icon_state = "navybluealtstrip" - }, -/area/centcom/specops) -"cAh" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 - }, +"czW" = ( /turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone3) -"cAo" = ( -/obj/effect/decal/warning_stripes/north, -/obj/effect/decal/warning_stripes/south, -/obj/machinery/door/poddoor/shutters/preopen/invincible{ - dir = 1; - id_tag = "ERT_armory_vkd"; - name = "Armory level 1" - }, -/obj/machinery/door/poddoor/impassable/preopen{ - id_tag = "ERT_Quarantine"; - name = "ERT Quarantine" + dir = 5; + icon_state = "darkyellow" }, +/area/centcom/supplypod/loading/four) +"cAA" = ( +/obj/item/flag/nt, /turf/simulated/floor/plasteel{ - icon_state = "darkfull" + dir = 9; + icon_state = "navybluealt" }, /area/centcom/specops) -"cAw" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/donkpockets, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = -32 +"cAU" = ( +/obj/machinery/light{ + dir = 4 }, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault"; - tag = "icon-vault (WEST)" + dir = 4; + icon_state = "darkyellow" }, -/area/centcom/specops) +/area/centcom/supplypod/loading/three) "cBk" = ( /obj/structure/sign/poster/official/ue_no, /turf/simulated/wall/indestructible/sandstone, @@ -5640,6 +5624,20 @@ icon_state = "navyblue" }, /area/centcom/specops) +"cBt" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "CC_Armory_DEDI" + }, +/obj/machinery/door/poddoor/impassable/preopen{ + id_tag = "ERT_Quarantine"; + name = "ERT Quarantine" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "navybluealt" + }, +/area/centcom/specops) "cBu" = ( /obj/effect/decal/warning_stripes/white/hollow, /obj/machinery/light{ @@ -5649,17 +5647,6 @@ icon_state = "dark" }, /area/centcom/jail) -"cBR" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 - }, -/turf/simulated/floor/glass/reinforced, -/area/centcom/specops) "cBU" = ( /obj/machinery/hydroponics/soil, /turf/simulated/floor/indestructible/snow, @@ -5674,6 +5661,14 @@ /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/indestructible/beach/sand, /area/syndicate_mothership/outside) +"cCQ" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4; + icon_state = "burst_l" + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating/airless, +/area/shuttle/pod_1) "cCT" = ( /obj/structure/bookcase, /obj/item/book/manual, @@ -5710,22 +5705,12 @@ icon_state = "darkblue" }, /area/centcom/zone1) -"cDQ" = ( -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/machinery/portable_atmospherics/canister/air{ - maximum_pressure = 50000 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/conveyor{ - id = "Air"; +"cDS" = ( +/obj/effect/turf_decal/siding/yellow{ dir = 1 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) +/turf/simulated/floor/carpet/black, +/area/centcom/zone3) "cDU" = ( /obj/item/flag/ninja, /turf/simulated/floor/indestructible{ @@ -5792,26 +5777,29 @@ icon_state = "dark" }, /area/centcom/evac) -"cFR" = ( -/obj/structure/chair/comfy/purp{ - dir = 1 - }, -/turf/simulated/floor/carpet/red, -/area/centcom/bridge) "cFY" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/wood, /area/centcom/jail) -"cGx" = ( -/obj/structure/table/reinforced, -/obj/machinery/chem_dispenser/soda/upgraded, -/obj/machinery/light{ - dir = 4 +"cGy" = ( +/obj/structure/bookcase/manuals, +/obj/item/book/manual/security_space_law{ + pixel_x = 3 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/item/book/manual/security_space_law{ + pixel_x = 3 }, -/area/centcom/specops) +/obj/item/book/manual/security_space_law{ + pixel_x = 3 + }, +/obj/item/book/manual/security_space_law{ + pixel_x = 3 + }, +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/centcom/evac) "cGz" = ( /obj/structure/table/wood, /obj/item/clothing/suit/space/hardsuit/syndi{ @@ -5837,6 +5825,10 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/control) +"cGL" = ( +/obj/structure/table/wood/fancy/royalblue, +/turf/simulated/floor/carpet/black, +/area/shuttle/administration) "cHC" = ( /obj/structure/grille, /obj/structure/window/full/shuttle/gray, @@ -5849,13 +5841,15 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/ninja/outside) -"cHQ" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "applebush" +"cHS" = ( +/obj/structure/table/wood, +/obj/item/radio/intercom, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 }, -/obj/structure/window/reinforced, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/zone1) +/turf/simulated/floor/carpet, +/area/centcom/zone3) "cHT" = ( /obj/structure/bonfire/dense, /turf/simulated/floor/indestructible/asteroid, @@ -5869,28 +5863,6 @@ icon_state = "floor13" }, /area/shuttle/ninja) -"cIa" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/machinery/iv_drip, -/obj/item/reagent_containers/iv_bag/salglu, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/nitrogen, -/obj/item/tank/internals/emergency_oxygen/plasma, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkbluecornersalt" - }, -/area/centcom/specops) "cIh" = ( /obj/structure/table/glass, /obj/item/circular_saw, @@ -5918,6 +5890,16 @@ name = "floor" }, /area/vox_station) +"cJg" = ( +/obj/machinery/requests_console{ + department = "Central Command"; + departmentType = 1; + name = "CC Requests Console"; + pixel_x = -32; + pixel_y = 32 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "cJq" = ( /obj/structure/closet/crate{ icon_state = "crateopen"; @@ -5930,6 +5912,12 @@ name = "floor" }, /area/vox_station) +"cJx" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/four) "cJJ" = ( /obj/effect/turf_decal{ dir = 8; @@ -5942,6 +5930,13 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) +"cJL" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/centcom/bridge) "cJM" = ( /obj/structure/closet/crate{ icon_state = "crateopen"; @@ -5953,14 +5948,10 @@ name = "floor" }, /area/vox_station) -"cKh" = ( -/obj/effect/turf_decal/siding/white/corner{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/evac) +"cKq" = ( +/obj/structure/falsewall/reinforced, +/turf/simulated/wall/indestructible/reinforced, +/area/centcom/jail) "cKt" = ( /obj/machinery/door/airlock/syndicate/security{ id_tag = "SyndFB_prison_stroll"; @@ -5988,10 +5979,47 @@ /obj/machinery/chem_dispenser/soda/upgraded, /turf/simulated/floor/carpet/red, /area/centcom/zone1) +"cKF" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredaltstrip" + }, +/area/centcom/zone2) +"cKI" = ( +/obj/structure/table/wood, +/obj/item/book/manual/security_space_law, +/obj/item/paper_bin/nanotrasen, +/obj/item/pen, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/centcom/zone3) +"cKK" = ( +/obj/structure/bookcase/random/fiction, +/obj/item/book/manual/security_space_law/black, +/obj/item/book/manual/sop_command, +/obj/item/book/manual/sop_security, +/obj/item/book/manual/faxes, +/obj/item/book/manual/sop_legal, +/obj/item/book/manual/sop_medical, +/obj/item/book/manual/sop_science, +/obj/item/book/manual/sop_service, +/obj/item/book/manual/sop_supply, +/obj/item/book/manual/sop_engineering, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "cKU" = ( /obj/machinery/conveyor_switch/oneway{ - id = "SFBQMLoad2"; - dir = 8 + dir = 8; + id = "SFBQMLoad2" }, /turf/simulated/floor/plasteel{ dir = 1; @@ -6017,25 +6045,6 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership) -"cLz" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - dir = 8; - id_tag = "CC_supply_internal"; - layer = 5; - locked = 1 - }, -/obj/machinery/door_control/secure{ - id = "CC_supply_internal"; - name = "Supply External Shutters"; - pixel_y = 24; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkyellowalt" - }, -/area/centcom/supply) "cLC" = ( /obj/effect/turf_decal/stripes/asteroid/corner{ dir = 8 @@ -6060,6 +6069,19 @@ /obj/effect/mapping_helpers/light, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) +"cMh" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/structure/window/reinforced{ + armor = list("melee"=100,"bullet"=100,"laser"=0,"energy"=0,"bomb"=25,"bio"=100,"rad"=100,"fire"=80,"acid"=100); + layer = 3.1 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/centcom/specops) "cMm" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 4 @@ -6069,47 +6091,6 @@ name = "floor" }, /area/vox_station) -"cMn" = ( -/obj/structure/rack/holorack, -/obj/item/clothing/accessory/black{ - desc = null; - name = "Black tie" - }, -/obj/item/clothing/accessory/blue{ - desc = null; - name = "Blue tie" - }, -/obj/item/clothing/glasses/hud/security/sunglasses/aviators, -/obj/item/clothing/glasses/hud/security/sunglasses/aviators, -/obj/item/clothing/accessory/blue{ - desc = null; - name = "Blue tie" - }, -/obj/item/clothing/accessory/black{ - desc = null; - name = "Black tie" - }, -/obj/item/clothing/accessory/holster{ - desc = null; - name = "Shoulder holster" - }, -/obj/item/clothing/accessory/holster{ - desc = null; - name = "Shoulder holster" - }, -/obj/item/storage/backpack/satchel, -/obj/item/storage/backpack/satchel, -/obj/item/storage/backpack/satcheldeluxe, -/obj/item/storage/backpack/satcheldeluxe, -/obj/item/storage/belt/fannypack/black, -/obj/item/storage/belt/fannypack/black, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"cMz" = ( -/turf/simulated/floor/plasteel{ - icon_state = "darkredalt" - }, -/area/centcom/zone2) "cMD" = ( /obj/machinery/door/airlock/survival_pod{ drain_act_protected = 1 @@ -6123,13 +6104,6 @@ /obj/machinery/vending/autodrobe, /turf/simulated/floor/wood, /area/centcom/zone1) -"cMR" = ( -/turf/simulated/wall/shuttle/nosmooth{ - dir = 6; - icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi'; - icon_state = "gray_walls_corners" - }, -/area/shuttle/ussp) "cNc" = ( /obj/structure/chair/comfy/black, /obj/effect/landmark/syndicate_officer, @@ -6150,6 +6124,14 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/jail) +"cNy" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 + }, +/obj/item/flag/nt, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "cNW" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 8 @@ -6183,18 +6165,6 @@ }, /turf/simulated/floor/carpet/black, /area/trader_station/sol) -"cPv" = ( -/obj/effect/decal/warning_stripes/yellow, -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/external{ - id_tag = "shit_rain_home"; - name = "Shuttle Hatch"; - req_access = list(109) - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "cPC" = ( /obj/effect/turf_decal{ dir = 6; @@ -6212,21 +6182,15 @@ icon_state = "dark" }, /area/centcom/zone1) +"cPL" = ( +/obj/structure/curtain/black, +/turf/simulated/floor/plasteel/freezer, +/area/centcom/specops) "cPM" = ( /turf/simulated/floor/plasteel{ icon_state = "arrivalcorner" }, /area/centcom/evac) -"cQf" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/shuttle/engine/heater, -/turf/simulated/floor/plating/airless, -/area/shuttle/pod_4) "cQm" = ( /obj/item/flag/nt, /turf/simulated/floor/plasteel{ @@ -6267,20 +6231,6 @@ icon_state = "floorgrime" }, /area/ninja/holding) -"cQO" = ( -/obj/structure/chair/comfy/red{ - color = "#FFFFFF"; - dir = 8 - }, -/turf/simulated/floor/carpet/cyan, -/area/centcom/zone2) -"cQX" = ( -/obj/machinery/light, -/obj/effect/turf_decal/siding/white/corner{ - dir = 4 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "cRm" = ( /obj/structure/table/abductor{ color = "#99ff99"; @@ -6328,10 +6278,6 @@ name = "floor" }, /area/syndicate_mothership) -"cSa" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/simulated/floor/plating/airless, -/area/shuttle/supply) "cSb" = ( /obj/structure/chair/comfy/shuttle{ dir = 4 @@ -6354,21 +6300,6 @@ name = "floor" }, /area/syndicate_mothership/outside) -"cSM" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/structure/sign/poster/official/nanotrasen_logo{ - icon = 'icons/obj/decals.dmi'; - icon_state = "nanotrasen_sign4"; - pixel_x = -16; - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkred" - }, -/area/centcom/specops) "cSN" = ( /obj/structure/closet/crate/freezer{ desc = "A crate."; @@ -6385,12 +6316,43 @@ icon_state = "dark" }, /area/centcom/zone1) +"cTj" = ( +/obj/effect/turf_decal/tile/neutral{ + color = "black"; + icon_state = "tile_full"; + layer = 9 + }, +/obj/effect/step_trigger/teleporter{ + icon = 'icons/mob/screen_gen.dmi'; + icon_state = "x2"; + teleport_x = 175; + teleport_y = 63; + teleport_z = 1 + }, +/turf/simulated/floor/plasteel{ + color = "gray"; + dir = 8; + icon_state = "rampbottom" + }, +/area/centcom/specops) "cTV" = ( /obj/machinery/vending/coffee, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/zone1) +"cUs" = ( +/obj/structure/holohoop{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) "cUz" = ( /turf/simulated/floor/wood{ icon_state = "fancy-wood-oak-broken4" @@ -6400,6 +6362,19 @@ /obj/effect/turf_decal/weather/snow/corner, /turf/simulated/floor/indestructible/asteroid, /area/ninja/outside) +"cUN" = ( +/obj/structure/closet/secure_closet/freezer/kitchen, +/obj/item/reagent_containers/food/condiment/flour, +/obj/item/reagent_containers/food/condiment/flour, +/obj/item/reagent_containers/food/condiment/flour, +/obj/item/reagent_containers/food/condiment/rice, +/obj/item/reagent_containers/food/condiment/rice, +/obj/item/reagent_containers/food/condiment/rice, +/turf/simulated/floor/plasteel{ + icon_state = "redfull"; + tag = "icon-redfull (NORTHWEST)" + }, +/area/centcom/zone1) "cVb" = ( /obj/effect/turf_decal/weather/snow/corner{ dir = 6 @@ -6407,19 +6382,6 @@ /obj/item/shard, /turf/simulated/floor/indestructible/asteroid, /area/ninja/outside) -"cVk" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/computer, -/obj/structure/railing{ - layer = 4.3; - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/bridge) "cVs" = ( /obj/structure/closet/crate{ icon_state = "crateopen"; @@ -6435,19 +6397,17 @@ name = "floor" }, /area/vox_station) -"cVv" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 - }, -/obj/machinery/photocopier{ - anchored = 0 +"cVB" = ( +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkredaltstrip" }, -/obj/structure/sign/poster/secret/lady{ - pixel_x = 32 +/area/centcom/zone3) +"cVJ" = ( +/turf/simulated/floor/shuttle{ + icon_state = "floor4" }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) +/area/shuttle/gamma) "cVM" = ( /obj/structure/table, /obj/machinery/chem_dispenser/soda/upgraded, @@ -6456,13 +6416,55 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) -"cWV" = ( -/obj/item/flag/nt, +"cWC" = ( +/obj/machinery/door/airlock/centcom{ + name = "Prison"; + opacity = 1; + req_access = list(104) + }, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/centcom/jail) +"cWM" = ( +/obj/effect/decal/warning_stripes/blue, +/obj/machinery/door/airlock/centcom{ + name = "Artillery Control"; + opacity = 1; + req_access = list(114) + }, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "CC_BSA" + }, /turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"cWR" = ( +/obj/effect/decal/warning_stripes/white/hollow, +/obj/machinery/vending/nta/ertarmory/medical{ dir = 4; - icon_state = "darkyellowalt" + req_access = list(103,104,109) }, -/area/centcom/zone3) +/obj/effect/decal/warning_stripes/white/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"cXc" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + layer = 2.9 + }, +/obj/structure/filingcabinet/chestdrawer{ + pixel_y = 6 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "cYf" = ( /obj/structure/closet/crate/freezer{ desc = "A crate."; @@ -6532,46 +6534,31 @@ name = "floor" }, /area/vox_station) -"cZF" = ( -/obj/structure/table/reinforced, -/obj/machinery/door_control/secure{ - id = "CC_space_jail_sec"; - pixel_y = -6; - pixel_x = -7 - }, -/obj/machinery/embedded_controller/radio/airlock/access_controller{ - frequency = 2000; - id_tag = "CC-OP4"; - name = "Access Controller OP4"; - pixel_y = 6; - req_access = list(109); - tag_exterior_door = "CC-OP4-Ext"; - tag_interior_door = "CC-OP4-Int"; - pixel_x = -7 - }, -/obj/machinery/door_control/secure{ - id = "CC_space_jail_cell"; - pixel_y = -6; - pixel_x = 7; - color = "#FFA500"; - name = "remote cell shutters control"; - req_access = list(104,114) - }, -/obj/machinery/door_control/secure{ - id = "CC_space_jail_door"; - pixel_y = 6; - pixel_x = 7; - color = "#ffaaaa"; - name = "remote cell door bolts control"; - req_access = list(104,114); - specialfunctions = 4; - normaldoorcontrol = 1 +"cYV" = ( +/obj/effect/decal/warning_stripes/northwestsouth, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 1; + id_tag = "ERT_armory_lvl2"; + layer = 5; + name = "Armory level 2" }, /turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkredaltstrip" + icon_state = "darkfull" }, -/area/centcom/jail) +/area/centcom/specops) +"cZc" = ( +/obj/effect/landmark/marauder_exit, +/obj/structure/fans/tiny, +/obj/effect/decal/warning_stripes/north, +/obj/effect/turf_decal/tile/neutral{ + alpha = 220; + color = "black"; + icon_state = "tile_full"; + layer = 9; + opacity = 1 + }, +/turf/simulated/floor/plating, +/area/centcom/supply) "cZK" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "applebush" @@ -6600,13 +6587,10 @@ icon_state = "darkblue" }, /area/centcom/zone1) -"daw" = ( -/obj/structure/sign/poster/official/nanotrasen_logo{ - pixel_y = -32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "navybluealt" - }, +"daB" = ( +/obj/machinery/photocopier, +/obj/structure/window/reinforced, +/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "daD" = ( /obj/item/twohanded/required/kirbyplants{ @@ -6617,39 +6601,15 @@ icon_state = "dark" }, /area/syndicate_mothership/elite_squad) -"daN" = ( -/obj/machinery/computer/security{ - network = list("SS13","Telecomms","Research Outpost","Mining Outpost","ERT","CentComm","Thunderdome") - }, -/obj/structure/railing{ - layer = 4.3; - pixel_y = 32 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkredfull" - }, -/area/centcom/bridge) -"daU" = ( +"daM" = ( +/obj/structure/window/reinforced, /obj/structure/window/reinforced{ - dir = 1; - layer = 2; - armor = list("melee"=100,"bullet"=100,"laser"=0,"energy"=0,"bomb"=25,"bio"=100,"rad"=100,"fire"=80,"acid"=100) - }, -/obj/structure/window/reinforced/survival_pod{ - dir = 9; - pixel_y = 1; - pixel_x = -1; - density = 0 + dir = 8 }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "navybluealt" + icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/zone3) "dbj" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-30"; @@ -6672,20 +6632,15 @@ }, /turf/simulated/floor/plasteel/grimy, /area/trader_station/sol) -"dbW" = ( +"dcc" = ( /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkyellow" - }, -/area/centcom/specops) -"dcf" = ( -/obj/machinery/computer/camera_advanced, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 + dir = 4; + icon_state = "darkredaltstrip" }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) +/area/centcom/zone2) +"dcl" = ( +/turf/simulated/wall/shuttle/onlyselfsmooth, +/area/shuttle/transport) "dcA" = ( /obj/structure/window/reinforced{ color = "red"; @@ -6697,6 +6652,23 @@ /obj/item/paper/monitorkey, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) +"ddb" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + frequency = 1331; + id_tag = "admin_s_pump" + }, +/turf/simulated/floor/shuttle{ + icon_state = "vfloor" + }, +/area/shuttle/administration) +"ddG" = ( +/obj/structure/table/glass, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) "ddL" = ( /obj/structure/table/wood{ color = "#996633" @@ -6704,48 +6676,12 @@ /obj/item/kitchen/knife, /turf/simulated/floor/carpet/black, /area/trader_station/sol) -"ddN" = ( -/obj/structure/table/wood, -/obj/item/folder/yellow{ - pixel_x = 7; - pixel_y = 7 - }, -/obj/item/folder/red{ - pixel_x = 7 - }, -/obj/item/folder/blue{ - pixel_x = 7; - pixel_y = -7 - }, -/obj/item/storage/briefcase, -/obj/item/door_remote/omni, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "ddZ" = ( /obj/structure/chair/sofa/left{ dir = 8 }, /turf/simulated/floor/carpet/red, /area/centcom/zone1) -"dec" = ( -/obj/effect/turf_decal/arrows{ - dir = 8 - }, -/obj/machinery/door_control/secure{ - id = "Drop"; - name = "Massdriver Shutters"; - pixel_y = 24; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkyellowalt" - }, -/area/centcom/supply) "def" = ( /obj/structure/window/reinforced{ dir = 1; @@ -6756,16 +6692,22 @@ icon_state = "dark" }, /area/centcom/jail) -"del" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 +"deE" = ( +/obj/structure/shuttle/engine/heater{ + dir = 4; + icon_state = "heater3x3_side"; + tag = "icon-heater (NORTH)" }, -/obj/effect/turf_decal/siding/blue/corner{ - dir = 1 +/obj/structure/window/plasmareinforced{ + color = "#22aab7"; + dir = 8 }, -/turf/simulated/floor/glass, -/area/centcom/bridge) +/obj/structure/shuttle/engine/platform{ + dir = 4; + layer = 2.9 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/administration) "deK" = ( /obj/structure/chair/comfy/brown{ dir = 8 @@ -6775,18 +6717,16 @@ }, /turf/simulated/floor/carpet/black, /area/trader_station/sol) -"deM" = ( -/obj/structure/table/glass, -/obj/item/paper_bin/nanotrasen{ - pixel_x = -2; - pixel_y = 8 +"dfd" = ( +/obj/machinery/light/small{ + dir = 1 }, -/obj/item/pen/fancy{ - pixel_x = 1; - pixel_y = 4 +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 5 }, -/turf/simulated/floor/carpet/cyan, -/area/centcom/zone2) +/turf/simulated/floor/glass/reinforced, +/area/centcom/evac) "dfj" = ( /obj/effect/turf_decal{ dir = 10; @@ -6859,6 +6799,12 @@ icon_state = "darkjail" }, /area/syndicate_mothership/jail) +"dgp" = ( +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) "dgy" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -6877,17 +6823,30 @@ icon_state = "bot" }, /area/shuttle/escape) -"dhv" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/turf_decal/siding/white{ - dir = 1 +"dhe" = ( +/obj/structure/table/wood/fancy/black, +/obj/item/candle/eternal, +/turf/simulated/floor/wood, +/area/centcom/zone1) +"dhK" = ( +/obj/machinery/door/airlock/shuttle{ + id_tag = "s_docking_airlock"; + name = "Labor Shuttle Airlock" }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/docking_port/mobile{ + dir = 8; + dwidth = 2; + height = 5; + id = "laborcamp"; + name = "labor camp shuttle"; + port_direction = 4; + rebuildable = 1; + roundstart_move = "laborcamp_home"; + width = 9 }, -/area/centcom/evac) +/obj/structure/fans/tiny, +/turf/simulated/floor/shuttle, +/area/shuttle/siberia) "dhX" = ( /obj/effect/turf_decal{ dir = 8; @@ -6908,13 +6867,6 @@ icon_state = "floor4" }, /area/shuttle/syndicate) -"dix" = ( -/obj/machinery/status_display/supply_display{ - pixel_y = 32 - }, -/obj/structure/filingcabinet/medical, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) "diG" = ( /obj/effect/turf_decal/weather/snow/corner{ dir = 9 @@ -6929,139 +6881,30 @@ /obj/item/seeds/wheat/rice, /turf/simulated/floor/indestructible/snow, /area/ninja/outside) -"dji" = ( -/obj/structure/rack/holorack, -/obj/item/clothing/head/beret/atmos{ - name = "beret" - }, -/obj/item/clothing/head/beret/atmos{ - name = "beret" - }, -/obj/item/clothing/head/beret/ce{ - name = "beret" - }, -/obj/item/clothing/head/beret/ce{ - name = "beret" +"djc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/item/flag/nt, +/obj/machinery/light{ + dir = 4 }, -/obj/item/clothing/head/beret/centcom/captain{ - name = "beret" +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "darkgrey" }, -/obj/item/clothing/head/beret/centcom/captain{ - name = "beret" +/area/shuttle/administration) +"djz" = ( +/obj/machinery/slot_machine, +/obj/machinery/light/small{ + dir = 8 }, -/obj/item/clothing/head/beret/centcom/officer{ - name = "beret" +/turf/simulated/floor/wood, +/area/centcom/zone1) +"dkg" = ( +/obj/structure/reagent_dispensers/beerkeg{ + desc = "Собственность Шерлока Субботина" }, -/obj/item/clothing/head/beret/centcom/officer{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/navy{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/navy{ - name = "beret" - }, -/obj/item/clothing/head/beret/durathread{ - name = "beret" - }, -/obj/item/clothing/head/beret/durathread{ - name = "beret" - }, -/obj/item/clothing/head/beret/eng{ - name = "beret" - }, -/obj/item/clothing/head/beret/eng{ - name = "beret" - }, -/obj/item/clothing/head/beret/elo{ - name = "beret" - }, -/obj/item/clothing/head/beret/elo{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/sigholt{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/sigholt{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/sparkyninja_beret{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/sparkyninja_beret{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/sigholt{ - icon_state = "officerberet"; - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/sigholt{ - icon_state = "officerberet"; - name = "beret" - }, -/obj/item/clothing/head/fedora, -/obj/item/clothing/head/fedora, -/obj/item/clothing/head/fedora{ - icon_state = "wfedora" - }, -/obj/item/clothing/head/fedora{ - icon_state = "wfedora" - }, -/obj/item/clothing/head/beret/purple{ - name = "beret" - }, -/obj/item/clothing/head/beret/purple{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/sigholt{ - icon_state = "beret_hos_black"; - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/sigholt{ - icon_state = "beret_hos_black"; - name = "beret" - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) -"djs" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 2; - height = 6; - id = "pod1_away"; - name = "recovery ship bay 1"; - turf_type = /turf/simulated/floor/plating/airless; - width = 5 - }, -/turf/simulated/floor/plating/airless, -/area/space) -"djz" = ( -/obj/machinery/slot_machine, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/simulated/floor/wood, -/area/centcom/zone1) -"djD" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 10 - }, -/turf/simulated/floor/glass, -/area/centcom/bridge) -"dkb" = ( -/obj/structure/shuttle/engine/heater{ - icon_state = "heater3x3_side_inv"; - tag = "icon-heater (NORTH)" - }, -/turf/simulated/floor/plating/airless, -/area/centcom/jail) -"dkg" = ( -/obj/structure/reagent_dispensers/beerkeg{ - desc = "Собственность Шерлока Субботина" - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkyellowfull" +/turf/simulated/floor/plasteel{ + icon_state = "darkyellowfull" }, /area/syndicate_mothership/cargo) "dkR" = ( @@ -7069,17 +6912,6 @@ /obj/item/razor, /turf/simulated/floor/carpet/arcade, /area/centcom/zone1) -"dkS" = ( -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/hatch{ - name = "NVT Argos"; - req_access = list(101) - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "podfloor_dark" - }, -/area/shuttle/administration) "dlk" = ( /obj/effect/turf_decal{ dir = 4; @@ -7107,6 +6939,16 @@ }, /turf/simulated/floor/carpet/black, /area/ninja/outpost) +"dlT" = ( +/obj/structure/table, +/obj/machinery/status_display/supply_display{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellowalt" + }, +/area/centcom/supply) "dmj" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -7121,39 +6963,43 @@ icon_state = "floorgrime" }, /area/ninja/holding) -"dmR" = ( -/turf/simulated/wall/shuttle/onlyselfsmooth/nodiagonal, -/area/shuttle/administration) -"dmX" = ( +"dmx" = ( +/obj/machinery/light/spot, +/obj/structure/closet/crate, +/turf/simulated/floor/shuttle, +/area/shuttle/transport) +"dnh" = ( +/obj/machinery/vending/cola, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkbluecornersalt" + icon_state = "dark" }, /area/centcom/specops) -"dnA" = ( -/obj/machinery/computer/camera_advanced{ - icon_keyboard = "seclaptop_key"; - icon_screen = "seclaptop"; - icon_state = "laptop" - }, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 26; - pixel_y = 26 - }, -/obj/machinery/light_construct/small{ - dir = 4 +"dnB" = ( +/obj/item/storage/firstaid/brute, +/obj/item/storage/firstaid/brute, +/obj/item/storage/firstaid/doctor, +/obj/item/storage/firstaid/doctor, +/obj/item/storage/firstaid/fire, +/obj/item/storage/firstaid/fire, +/obj/item/storage/firstaid/o2, +/obj/item/storage/firstaid/toxin, +/obj/item/storage/firstaid/toxin, +/obj/structure/rack, +/obj/structure/extinguisher_cabinet{ + name = "west extinguisher cabinet"; + pixel_x = -27 }, -/mob/living/simple_animal/frog/scream/mapper{ - pixel_x = -2; - pixel_y = 11 +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkbluealt" }, -/obj/structure/table/holotable/wood, -/turf/simulated/floor/carpet/black, /area/centcom/specops) -"dnJ" = ( -/obj/machinery/computer/message_monitor, -/turf/simulated/floor/bluegrid, -/area/centcom/bridge) +"dnE" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "navybluealtstrip" + }, +/area/centcom/supply) "dnL" = ( /obj/machinery/light/small{ dir = 8 @@ -7162,52 +7008,14 @@ icon_state = "floorgrime" }, /area/ninja/holding) -"dnM" = ( -/obj/structure/table/reinforced{ - color = "#444444" - }, -/obj/structure/sign/poster/official/kill_syndicate{ - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "navybluealt" - }, -/area/centcom/specops) -"doh" = ( -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/door/airlock/gold/glass{ - frequency = 2000; - hackable = 0; - id_tag = "CC-OP4-Ext"; - locked = 1; - name = "Zone 3" - }, -/obj/machinery/access_button{ - command = "cycle_exterior"; - frequency = 2000; - master_tag = "CC-OP4"; - name = "CC-OP4-EXT"; - pixel_y = 24; - req_access = list(109); - wires = 0 +"dnT" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/turf/simulated/floor/wood{ + icon_state = "light-fancy-wood" }, /area/centcom/specops) -"dom" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 2; - height = 6; - id = "pod2_away"; - name = "recovery ship bay 2"; - turf_type = /turf/simulated/floor/plating/airless; - width = 5 - }, -/turf/simulated/floor/plating/airless, -/area/space) "dov" = ( /obj/structure/chair/stool, /obj/effect/turf_decal/weather/snow/corner{ @@ -7218,6 +7026,12 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/ninja/outside) +"doA" = ( +/obj/structure/window/reinforced, +/turf/simulated/wall/indestructible/reinforced{ + density = 0 + }, +/area/centcom/zone2) "doL" = ( /obj/item/stack/sheet/mineral/sandbags, /turf/simulated/floor/indestructible/vox{ @@ -7225,28 +7039,6 @@ name = "floor" }, /area/vox_station) -"dpe" = ( -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "navybluealtstrip" - }, -/area/centcom/supply) -"dpf" = ( -/obj/effect/turf_decal/caution/stand_clear, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkyellowaltstrip" - }, -/area/centcom/zone3) -"dpg" = ( -/turf/simulated/wall/indestructible/abductor, -/area/abductor_ship) -"dpw" = ( -/obj/machinery/vending/snack{ - pixel_y = 8 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "dpF" = ( /obj/machinery/door/airlock/multi_tile/glass{ dir = 2 @@ -7256,55 +7048,25 @@ icon_state = "dark" }, /area/centcom/zone1) -"dpG" = ( -/obj/effect/turf_decal/loading_area/white{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - alpha = 100; - color = "black"; - icon_state = "tile_full"; - layer = 9 - }, -/turf/simulated/floor/plating, -/area/centcom/supply) -"dpI" = ( -/obj/structure/shuttle/engine/heater{ - dir = 1; - icon_state = "heater3x3_side_inv"; - tag = "icon-heater (NORTH)" - }, -/obj/structure/shuttle/engine/platform{ - dir = 1; - layer = 2.9 - }, -/obj/structure/window/plasmareinforced{ - color = "#00f700" - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/ninja) -"dpJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/simulated/wall/indestructible/reinforced, -/area/centcom/zone3) -"dqc" = ( -/obj/structure/window/reinforced{ - layer = 2.9 - }, -/obj/effect/turf_decal/siding/brown{ - dir = 4 +"dqf" = ( +/obj/effect/decal/warning_stripes/northwestsouth, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "ERT_armory_lvl3"; + layer = 5; + name = "Armory level 3" }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"dqe" = ( -/obj/structure/shuttle/engine/heater{ - icon_state = "heater3x3_side_inv"; - tag = "icon-heater (NORTH)" +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" }, -/turf/simulated/floor/plating/airless, /area/centcom/specops) +"dqo" = ( +/obj/machinery/vending/ntc/medal, +/obj/structure/table, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "dqG" = ( /turf/simulated/floor/plating/asteroid{ dir = 8; @@ -7312,13 +7074,6 @@ name = "floor" }, /area/syndicate_mothership/outside) -"dqR" = ( -/obj/structure/table/wood{ - color = "#996633" - }, -/obj/effect/mapping_helpers/light, -/turf/simulated/floor/grass, -/area/centcom/evac) "dqX" = ( /obj/machinery/bodyscanner{ dir = 4 @@ -7357,6 +7112,29 @@ icon_state = "darkredalt" }, /area/centcom/jail) +"drr" = ( +/obj/item/storage/ashtray/glass{ + pixel_x = -7; + pixel_y = -4 + }, +/obj/item/lighter/zippo/blue{ + pixel_x = -5; + pixel_y = 8 + }, +/obj/item/clothing/mask/cigarette/cigar/cohiba{ + pixel_x = -4; + pixel_y = 9 + }, +/obj/structure/table/glass, +/obj/item/paper/monitorkey, +/obj/item/paper/tcommskey, +/obj/structure/window/reinforced, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "drz" = ( /obj/effect/turf_decal/weather/snow/corner{ dir = 6 @@ -7371,42 +7149,29 @@ "dsj" = ( /turf/simulated/floor/glass/reinforced, /area/centcom/zone1) -"dsI" = ( -/obj/machinery/power/apc{ - name = "Gamma Armory APC"; - pixel_y = -24 - }, -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" - }, -/obj/structure/sign/securearea{ - pixel_x = -32 - }, -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/gun/rocketlauncher, -/obj/item/ammo_casing/rocket, -/obj/item/ammo_casing/rocket, -/obj/item/ammo_casing/rocket, -/obj/item/kitchen/knife/combat, -/obj/item/kitchen/knife/combat, -/obj/item/kitchen/knife/combat, -/obj/item/grenade/chem_grenade/incendiary{ - name = "Incendiary Grenade" +"dsK" = ( +/obj/machinery/door/airlock/shuttle{ + id_tag = "s_docking_airlock"; + name = "Escape Pod Hatch" }, -/obj/item/grenade/clusterbuster, -/obj/machinery/light/spot{ +/obj/docking_port/mobile/pod{ dir = 8; - tag = "icon-tube1 (WEST)" + id = "pod1"; + name = "escape pod 1"; + port_direction = 2; + roundstart_move = "pod1_home" }, -/obj/item/gun/projectile/automatic/m52, -/obj/item/ammo_box/magazine/m52mag, -/obj/item/ammo_box/magazine/m52mag, -/obj/item/ammo_box/magazine/m52mag, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" +/obj/docking_port/stationary{ + dir = 8; + dwidth = 2; + height = 6; + id = "pod1_away"; + name = "recovery ship bay 1"; + turf_type = /turf/simulated/floor/plating/airless; + width = 5 }, -/area/shuttle/gamma) +/turf/simulated/floor/shuttle, +/area/shuttle/pod_1) "dsX" = ( /obj/structure/railing{ dir = 1 @@ -7417,20 +7182,12 @@ tag = "icon-stage_stairs" }, /area/ninja/holding) -"dtj" = ( -/obj/structure/shuttle/engine/heater{ - icon_state = "heater3x3_side"; - tag = "icon-heater (NORTH)" - }, -/obj/structure/window/plasmareinforced{ - color = "#FF0000"; - dir = 1 - }, -/obj/structure/shuttle/engine/platform{ - layer = 2.9 +"dtp" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkyellow" }, -/turf/simulated/floor/plating/airless, -/area/shuttle/syndicate) +/area/centcom/supplypod/loading/one) "dtu" = ( /obj/structure/flora/ausbushes/reedbush, /turf/simulated/floor/indestructible/beach/coastline{ @@ -7457,6 +7214,16 @@ name = "floor" }, /area/ninja/holding) +"dtR" = ( +/obj/structure/chair/comfy/lime{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/centcom/zone3) "duf" = ( /obj/item/tank/internals/oxygen/ninja{ pixel_x = -3; @@ -7506,12 +7273,6 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"dvj" = ( -/turf/simulated/floor/indestructible{ - dir = 6; - icon_state = "darkgreynavyblue" - }, -/area/centcom/specops) "dvt" = ( /obj/effect/turf_decal/weather/snow/corner{ dir = 5 @@ -7543,19 +7304,12 @@ }, /turf/simulated/floor/carpet, /area/centcom/evac) -"dvI" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/black{ - dir = 6; - do_not_delete_me = 1 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "podfloor_dark" +"dvD" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 10 }, -/area/shuttle/administration) +/turf/simulated/floor/wood, +/area/centcom/specops) "dvN" = ( /obj/structure/decorative_structures/metal/statue/golden_disk, /obj/effect/turf_decal/siding/wood{ @@ -7584,33 +7338,17 @@ icon_state = "darkred" }, /area/syndicate_mothership/infteam) -"dwn" = ( -/obj/structure/sign/poster/official/nanotrasen_logo{ - icon = 'icons/obj/decals.dmi'; - icon_state = "ntsing_alt2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) -"dwI" = ( -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkgreen" - }, -/area/centcom/specops) "dwJ" = ( /obj/structure/chair/stool/bar, /turf/simulated/floor/grass, /area/centcom/evac) -"dxs" = ( -/obj/vehicle/ridden/motorcycle{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" +"dxk" = ( +/obj/machinery/vending/boozeomat, +/obj/structure/sign/barsign{ + pixel_y = 32 }, -/area/syndicate_mothership) +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "dxK" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo5" @@ -7633,12 +7371,6 @@ name = "floor" }, /area/vox_station) -"dyh" = ( -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkredaltstrip" - }, -/area/centcom/zone3) "dyy" = ( /obj/structure/window/reinforced{ dir = 4 @@ -7648,12 +7380,6 @@ icon_state = "seadeep" }, /area/centcom/evac) -"dyH" = ( -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkred" - }, -/area/centcom/specops) "dyM" = ( /obj/effect/decal/cleanable/blood/oil, /obj/effect/turf_decal/stripes/red/line, @@ -7662,6 +7388,26 @@ name = "floor" }, /area/vox_station) +"dyN" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/obj/machinery/computer/station_alert, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) +"dyQ" = ( +/obj/machinery/door_control/secure{ + id = "CC_Armory_DEDI"; + pixel_x = 24; + pixel_y = 24; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "navybluealtstrip" + }, +/area/centcom/specops) "dzo" = ( /obj/effect/turf_decal/stripes/red/line, /obj/effect/turf_decal/arrows/red{ @@ -7672,51 +7418,6 @@ name = "floor" }, /area/vox_station) -"dzA" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/table, -/obj/item/reagent_containers/glass/beaker/waterbottle, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"dzF" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "burst_r"; - tag = "icon-burst_r" - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/supply) -"dzO" = ( -/obj/machinery/door/airlock/external{ - id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access = list(150) - }, -/obj/structure/fans/tiny, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 5; - id = "ruins_transport_shuttle"; - name = "USSP Cargo Shuttle"; - roundstart_move = "ussp_dock"; - width = 8 - }, -/obj/docking_port/stationary/transit{ - dir = 8; - dwidth = 2; - height = 5; - id = "ruins_transport_shuttle_transit"; - name = "Transport Shuttle in transit"; - pixel_x = 32; - turf_type = /turf/space/transit/north; - width = 8 - }, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" - }, -/area/shuttle/ussp) "dzW" = ( /obj/effect/turf_decal/stripes/red/line, /turf/simulated/floor/indestructible/vox{ @@ -7738,25 +7439,55 @@ }, /turf/simulated/floor/plating, /area/syndicate_mothership/cargo) -"dAk" = ( -/obj/structure/toilet{ - dir = 4; - name = "Трон старшего администратора" - }, -/obj/machinery/light/small{ - dir = 1 +"dAl" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/decal/warning_stripes/south, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "CC_Armory_DURAND" }, /turf/simulated/floor/plasteel{ - icon_state = "white" + icon_state = "darkfull" }, -/area/centcom/evac) -"dAz" = ( -/obj/structure/sign/poster/official/random{ - pixel_y = -32 +/area/centcom/specops) +"dAP" = ( +/obj/structure/rack/holorack, +/obj/item/clothing/shoes/cowboy/white{ + name = "white boots" }, -/turf/simulated/floor/plasteel{ - icon_state = "navybluealt" +/obj/item/clothing/shoes/cowboy/white{ + name = "white boots" + }, +/obj/item/clothing/shoes/fluff/noble_boot, +/obj/item/clothing/shoes/fluff/noble_boot, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots/jacksandals, +/obj/item/clothing/shoes/jackboots/jacksandals, +/obj/item/clothing/shoes/laceup, +/obj/item/clothing/shoes/laceup, +/obj/item/clothing/shoes/leather, +/obj/item/clothing/shoes/leather, +/obj/item/clothing/shoes/white, +/obj/item/clothing/shoes/white, +/obj/item/clothing/shoes/white{ + icon_state = "secshoes"; + name = "shoes" + }, +/obj/item/clothing/shoes/white{ + icon_state = "secshoes"; + name = "shoes" + }, +/obj/item/clothing/shoes/centcom{ + desc = null; + name = "Dress shoes" + }, +/obj/item/clothing/shoes/centcom{ + desc = null; + name = "Dress shoes" }, +/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "dAU" = ( /obj/effect/turf_decal/number/number_1{ @@ -7767,6 +7498,15 @@ icon_state = "darkredaltstrip" }, /area/centcom/jail) +"dBk" = ( +/obj/structure/sign/custodian{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "navybluealt" + }, +/area/centcom/specops) "dBt" = ( /obj/effect/turf_decal/stripes/gold{ dir = 6 @@ -7782,6 +7522,47 @@ name = "floor" }, /area/vox_station) +"dBL" = ( +/obj/item/gun/energy/laser/instakill/blue, +/obj/item/gun/energy/laser/instakill/blue, +/obj/item/gun/energy/laser/instakill/blue, +/obj/item/gun/energy/laser/instakill/blue, +/obj/item/gun/energy/laser/instakill/blue, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + layer = 2.9; + name = "Secret Fun"; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "vault" + }, +/area/centcom/jail) +"dBY" = ( +/obj/machinery/door/airlock/shuttle{ + id_tag = "s_docking_airlock"; + name = "Escape Pod Hatch" + }, +/obj/docking_port/mobile/pod{ + dir = 4; + id = "pod3"; + name = "escape pod 3"; + port_direction = 2; + roundstart_move = "pod3_home" + }, +/obj/docking_port/stationary{ + dir = 4; + dwidth = 2; + height = 6; + id = "pod3_away"; + name = "recovery ship bay 3"; + turf_type = /turf/simulated/floor/plating/airless; + width = 5 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/pod_3) "dBZ" = ( /obj/structure/sign/poster/contraband/smoke{ pixel_y = -32 @@ -7792,6 +7573,21 @@ name = "floor" }, /area/vox_station) +"dCm" = ( +/obj/item/stack/wrapping_paper, +/obj/item/stack/wrapping_paper, +/obj/item/stack/wrapping_paper, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/structure/table, +/obj/item/paper{ + info = "

Особенности отправки оборудования с помощью шаттла отдела снабжения


С целью минимизации рисков провоза опасных грузов и/или контрабанды сотрудники департамента защиты активов NanoTrasen регулярно осуществляют проверки шаттла снабжения. Эти проверки включают в себя снятие внешней упаковки с контейнеров для проверки манифестов, а также уничтожение любых объектов, не находящихся в контейнерах. Контроль груза осуществляется:
  1. Непосредственно после отлета шаттла с АКН Трурль на объект NanoTrasen;
  2. После отлета шаттла с объекта NanoTrasen до прибытия на АКН Трурль;
  3. Непосредственно после стыковки шаттла с АКН Трурль.

Для отправки оборудования на объект NanoTrasen с помощью шаттла снабжения необходимо обернуть контейнер упаковочной бумагой или поместить его еще в один контейнер."; + name = "Особенности отправки оборудования с помощью шаттла отдела снабжения" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "dCs" = ( /obj/item/trash/chips, /obj/effect/turf_decal/bot_red, @@ -7800,6 +7596,12 @@ name = "floor" }, /area/vox_station) +"dCD" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellow" + }, +/area/centcom/specops) "dCG" = ( /obj/structure/rack, /obj/item/crowbar/large, @@ -7825,6 +7627,25 @@ name = "floor" }, /area/vox_station) +"dCK" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) +"dCT" = ( +/obj/structure/sign/greencross{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkgreencorners" + }, +/area/centcom/specops) "dCY" = ( /obj/item/trash/tapetrash, /obj/structure/closet/crate{ @@ -7870,12 +7691,35 @@ }, /turf/simulated/floor/glass/reinforced, /area/centcom/zone1) -"dDF" = ( -/obj/structure/table, +"dDx" = ( +/obj/structure/table/reinforced, +/obj/item/grenade/clusterbuster/nervegas, +/obj/item/grenade/clusterbuster/nervegas, +/obj/item/grenade/clusterbuster/nervegas, +/obj/item/grenade/clusterbuster/teargas, +/obj/item/grenade/clusterbuster/teargas, +/obj/item/grenade/clusterbuster/teargas, +/obj/item/grenade/clusterbuster/mega_bang, +/obj/item/grenade/clusterbuster/mega_bang, +/obj/item/grenade/clusterbuster/mega_bang, +/obj/effect/decal/warning_stripes/green/hollow, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/zone1) +/area/centcom/specops) +"dDW" = ( +/obj/structure/window/reinforced{ + layer = 2.9 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-17"; + tag = "icon-plant-17" + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "dDZ" = ( /obj/structure/sign/poster/official/nanotrasen_logo{ pixel_x = -32 @@ -7891,10 +7735,34 @@ "dEb" = ( /turf/simulated/floor/carpet, /area/centcom/specops) +"dEc" = ( +/obj/effect/turf_decal/stripes/black{ + dir = 10; + do_not_delete_me = 1 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/administration) "dEd" = ( /obj/effect/landmark/start, /turf/simulated/wall/indestructible/splashscreen, /area/start) +"dEr" = ( +/obj/effect/turf_decal/delivery/white, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 1; + id_tag = "CC_Armory_SRT" + }, +/obj/machinery/door/airlock/centcom{ + aiControlDisabled = 1; + hackProof = 1; + name = "Special ReactionTeam"; + opacity = 1; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "dEs" = ( /obj/structure/flora/straw_bail, /turf/simulated/floor/indestructible/snow, @@ -7909,31 +7777,24 @@ name = "floor" }, /area/vox_station) -"dEK" = ( -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/zone1) -"dEN" = ( -/obj/machinery/chem_dispenser/supgraded, -/turf/simulated/floor/engine, -/area/centcom/specops) -"dEQ" = ( -/obj/effect/decal/warning_stripes/white/hollow, -/obj/machinery/vending/nta/ertarmory/engineer{ - req_access = list(101,104,109) +"dEV" = ( +/obj/machinery/door/airlock/external{ + hackProof = 1; + id_tag = "supply_away"; + name = "Central Command Supply"; + req_access = list(31) }, -/obj/machinery/light, -/obj/effect/decal/warning_stripes/white/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/machinery/door/poddoor{ + id_tag = "CC_supply_space"; + locked = 2; + name = "Supply Blastdoor" }, -/area/centcom/specops) -"dEW" = ( +/obj/structure/fans/tiny, +/obj/effect/decal/warning_stripes/white, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" + icon_state = "dark" }, -/area/centcom/bridge) +/area/centcom/supply) "dFh" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -7963,27 +7824,54 @@ }, /turf/simulated/floor/carpet/black, /area/ninja/outpost) -"dFI" = ( -/obj/structure/window/reinforced{ - dir = 8 +"dFD" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 }, -/obj/structure/window/reinforced{ - dir = 1 +/obj/effect/turf_decal/stripes/black{ + dir = 6; + do_not_delete_me = 1 }, -/obj/structure/shuttle/engine/heater, -/turf/simulated/floor/plating/airless, -/area/shuttle/pod_1) +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "podfloor_dark" + }, +/area/shuttle/administration) "dGr" = ( /obj/item/skeleton/r_arm, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) -"dGv" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 +"dGA" = ( +/obj/machinery/computer/camera_advanced{ + icon_keyboard = "seclaptop_key"; + icon_screen = "seclaptop"; + icon_state = "laptop" }, -/turf/simulated/floor/glass/reinforced, -/area/centcom/evac) +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = 26; + pixel_y = 26 + }, +/obj/machinery/light_construct/small{ + dir = 4 + }, +/mob/living/simple_animal/frog/scream/mapper{ + pixel_x = -2; + pixel_y = 11 + }, +/obj/structure/table/holotable/wood, +/turf/simulated/floor/carpet/black, +/area/centcom/specops) +"dGB" = ( +/obj/effect/decal/warning_stripes/northwestsouth, +/obj/machinery/door/poddoor/shutters/preopen/invincible{ + dir = 2; + id_tag = "ERT_armory_lvl1"; + name = "Armory level 1" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" + }, +/area/centcom/specops) "dGC" = ( /obj/machinery/computer/shuttle/sst, /turf/simulated/floor/carpet/black, @@ -7992,6 +7880,13 @@ /mob/living/simple_animal/hostile/carp/koi, /turf/simulated/floor/indestructible/beach/water/deep/dense, /area/ninja/outside) +"dGL" = ( +/obj/structure/closet/crate/can, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "vault" + }, +/area/centcom/specops) "dGN" = ( /obj/structure/table/reinforced, /obj/item/kitchen/utensil/pspork, @@ -8020,9 +7915,19 @@ /obj/machinery/computer/shuttle/ruins_civil_shuttle, /turf/simulated/floor/shuttle, /area/shuttle/spacebar) -"dIg" = ( -/turf/simulated/floor/shuttle/transparent_floor, -/area/shuttle/administration) +"dIb" = ( +/obj/machinery/door_control/secure{ + id = "CC_Armory_PDW"; + name = "PDW-9"; + pixel_x = 24; + pixel_y = 24; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkgreencorners" + }, +/area/centcom/specops) "dIi" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 @@ -8056,17 +7961,6 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"dIU" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - id_tag = "CC_ERT1" - }, -/obj/machinery/door/firedoor, -/obj/effect/decal/warning_stripes/yellow, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "navybluealt" - }, -/area/centcom/specops) "dIY" = ( /obj/structure/window/reinforced{ color = "red"; @@ -8076,24 +7970,9 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/control) -"dIZ" = ( -/turf/simulated/floor/plasteel{ - color = "gray"; - dir = 8; - icon_state = "rampbottom" - }, -/area/centcom/specops) "dJo" = ( /turf/simulated/wall/indestructible/iron, /area/syndicate_mothership/control) -"dJw" = ( -/obj/machinery/chem_master, -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9 - }, -/turf/simulated/floor/engine, -/area/centcom/specops) "dJG" = ( /obj/effect/mapping_helpers/light{ light_power = 3 @@ -8168,13 +8047,16 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"dMn" = ( -/obj/structure/bookcase/manuals, -/obj/item/book/manual/sop_service, -/obj/item/book/manual/sop_supply, -/obj/machinery/light, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) +"dMq" = ( +/obj/effect/decal/warning_stripes/white, +/obj/machinery/door/airlock{ + id_tag = "CC_toilet_unit4"; + name = "Toilet" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone1) "dMv" = ( /obj/structure/shuttle/engine/platform{ dir = 1; @@ -8191,19 +8073,13 @@ }, /turf/simulated/floor/indestructible/beach/water/deep/dense, /area/ninja/outside) -"dMT" = ( -/obj/docking_port/stationary{ - dir = 2; - dwidth = 2; - height = 18; - id = "skipjack_away"; - name = "vox bay 1"; - width = 19 - }, -/turf/space{ - icon_state = "black" +"dMM" = ( +/obj/structure/table/wood/fancy/black, +/obj/machinery/photocopier/faxmachine/longrange{ + department = "Central Command" }, -/area/space) +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "dNa" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/statue/thaumicnik{ @@ -8221,42 +8097,33 @@ icon_state = "neutralfull" }, /area/shuttle/escape) -"dNs" = ( -/obj/machinery/door/poddoor{ - id_tag = "ASSAULT0"; - name = "Launch Bay #0" - }, -/obj/effect/turf_decal/tile/neutral{ - alpha = 75; - color = "black"; - icon_state = "tile_full"; - layer = 9 - }, -/turf/simulated/floor/plating, -/area/centcom/supply) "dNO" = ( /obj/machinery/computer/shuttle/syndicate{ name = "Nuclear Operatives Shuttle Console" }, /turf/simulated/floor/carpet, /area/syndicate_mothership/control) -"dOP" = ( -/obj/machinery/vending/cigarette/free, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +"dOf" = ( +/obj/machinery/chem_dispenser/supgraded, +/turf/simulated/floor/engine, +/area/centcom/specops) +"dOj" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "CC_crate" }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellowaltstrip" }, -/obj/effect/turf_decal/tile/neutral{ +/area/centcom/supply) +"dPr" = ( +/obj/structure/chair/comfy/shuttle{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" +/turf/simulated/floor/plasteel{ + icon_state = "darkred" }, -/area/shuttle/administration) +/area/centcom/specops) "dPu" = ( /obj/machinery/door/airlock/syndicate/security{ autoclose = 0; @@ -8289,13 +8156,6 @@ icon_state = "darkredcornersalt" }, /area/syndicate_mothership/jail) -"dQu" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 - }, -/turf/simulated/floor/glass, -/area/centcom/bridge) "dQw" = ( /obj/structure/flora/bush, /turf/simulated/floor/indestructible/grass, @@ -8308,9 +8168,38 @@ icon_state = "darkredaltstrip" }, /area/syndicate_mothership/jail) +"dQQ" = ( +/obj/structure/closet/secure_closet/cabinet/bar/random_drinks{ + layer = 3.5 + }, +/turf/simulated/floor/wood, +/area/centcom/zone3) "dRc" = ( /turf/simulated/wall/indestructible/fakeglass, /area/trader_station/sol) +"dRg" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/wood, +/area/centcom/zone2) +"dRu" = ( +/obj/effect/turf_decal/tile/neutral{ + color = "black"; + icon_state = "tile_full"; + layer = 9 + }, +/obj/effect/step_trigger/teleporter{ + icon = 'icons/mob/screen_gen.dmi'; + icon_state = "x2"; + teleport_x = 183; + teleport_y = 60; + teleport_z = 1 + }, +/turf/simulated/floor/plasteel{ + color = "gray"; + dir = 8; + icon_state = "rampbottom" + }, +/area/centcom/specops) "dRA" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 8 @@ -8338,13 +8227,6 @@ }, /turf/simulated/floor/holofloor/space, /area/centcom/specops) -"dSj" = ( -/obj/machinery/door/airlock/shuttle, -/obj/structure/fans/tiny, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" - }, -/area/shuttle/gamma) "dSn" = ( /obj/structure/rack, /obj/item/reagent_containers/spray/plantbgone, @@ -8358,22 +8240,39 @@ }, /turf/simulated/floor/indestructible/beach/water/deep/dense, /area/ninja/outside) -"dSG" = ( -/obj/machinery/computer/mech_bay_power_console, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) "dSN" = ( -/obj/effect/decal/warning_stripes/south, -/obj/effect/turf_decal/tile/neutral{ - alpha = 150; - color = "black"; - icon_state = "tile_full"; - layer = 9 +/obj/effect/decal/cleanable/crayon{ + color = "yellow"; + icon_state = "guy"; + layer = 5; + pixel_y = -30 }, -/turf/simulated/floor/plating, -/area/centcom/supply) +/obj/effect/decal/cleanable/crayon{ + color = "yellow"; + icon_state = "face"; + pixel_x = -32; + pixel_y = 32 + }, +/obj/effect/decal/cleanable/crayon{ + color = "yellow"; + icon_state = "shitcurity"; + pixel_x = 32; + pixel_y = 32 + }, +/turf/simulated/floor/mineral/bananium, +/area/centcom/specops) +"dTg" = ( +/turf/simulated/floor/plating/airless, +/area/centcom/specops) +"dTt" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/one) "dTy" = ( /obj/structure/railing{ dir = 8 @@ -8400,6 +8299,10 @@ }, /turf/simulated/floor/indestructible/beach/water/deep/dense, /area/ninja/outside) +"dTR" = ( +/obj/structure/stone_tile/slab/burnt, +/turf/simulated/floor/lava/lava_land_surface, +/area/ruin/space/bubblegum_arena) "dTZ" = ( /obj/item/flag/nt, /turf/simulated/floor/plasteel{ @@ -8411,24 +8314,6 @@ /obj/machinery/smartfridge/disks, /turf/simulated/floor/wood, /area/centcom/evac) -"dUj" = ( -/obj/machinery/door/airlock/public/glass, -/obj/effect/turf_decal/stripes/black{ - dir = 8; - do_not_delete_me = 1 - }, -/obj/effect/turf_decal/stripes/black{ - dir = 4; - do_not_delete_me = 1 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "podfloor_dark" - }, -/area/shuttle/administration) -"dUp" = ( -/turf/simulated/floor/glass/reinforced, -/area/centcom/specops) "dUq" = ( /obj/structure/closet/radiation, /turf/simulated/floor/plasteel{ @@ -8436,10 +8321,6 @@ icon_state = "darkyellowaltstrip" }, /area/syndicate_mothership/control) -"dUt" = ( -/obj/structure/falsewall/reinforced, -/turf/simulated/wall/indestructible/reinforced, -/area/centcom/jail) "dUz" = ( /obj/structure/railing{ dir = 8 @@ -8480,10 +8361,19 @@ icon_state = "dark" }, /area/centcom/specops) -"dVd" = ( -/obj/machinery/clonepod/upgraded, +"dVg" = ( +/obj/effect/turf_decal/stripes/black{ + dir = 5; + do_not_delete_me = 1 + }, +/obj/effect/turf_decal/stripes/black{ + dir = 10; + do_not_delete_me = 1; + icon_state = "bs_deadlock" + }, /turf/simulated/floor/shuttle{ - icon_state = "floor3" + icon = 'icons/turf/floors.dmi'; + icon_state = "white" }, /area/shuttle/administration) "dVl" = ( @@ -8503,23 +8393,6 @@ /obj/machinery/photocopier/syndie, /turf/simulated/floor/carpet, /area/syndicate_mothership/control) -"dWB" = ( -/obj/machinery/status_display{ - layer = 4; - pixel_y = 32 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"dWI" = ( -/obj/structure/chair/comfy/red, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/centcom/jail) "dWJ" = ( /obj/structure/table/reinforced{ color = "#444444" @@ -8535,14 +8408,15 @@ }, /turf/simulated/floor/indestructible/beach/water/deep/dense, /area/ninja/outside) -"dXk" = ( -/obj/structure/chair/comfy/beige{ - dir = 4; - layer = 5; - pixel_y = -2 +"dXl" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "CC_Armory_PDW" }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "dXq" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo3" @@ -8552,6 +8426,12 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/jail) +"dXA" = ( +/obj/structure/chair/comfy/black, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "dXR" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 4; @@ -8567,10 +8447,19 @@ icon_state = "dark" }, /area/shuttle/syndicate) -"dXY" = ( -/obj/effect/turf_decal/stripes/line{ - icon = 'icons/turf/floors.dmi'; - icon_state = "siding4" +"dXS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "darkgrey" + }, +/area/shuttle/administration) +"dXY" = ( +/obj/effect/turf_decal/stripes/line{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding4" }, /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -8587,41 +8476,12 @@ }, /turf/simulated/floor/indestructible/beach/sand, /area/syndicate_mothership/outside) -"dYs" = ( -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 1 - }, -/obj/effect/mapping_helpers/light, -/turf/simulated/floor/beach/sand{ - icon = 'icons/turf/floors.dmi'; - icon_state = "asteroid" - }, -/area/centcom/evac) -"dYy" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/black{ - dir = 8; - do_not_delete_me = 1 - }, -/turf/simulated/floor/shuttle{ - icon_state = "vfloor" - }, -/area/shuttle/administration) "dYC" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 4 }, /turf/simulated/floor/wood/cherry, /area/ninja/outside) -"dYJ" = ( -/obj/structure/shuttle/engine/huge{ - dir = 4 - }, -/turf/simulated/floor/shuttle/transparent_floor, -/area/shuttle/administration) "dYO" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 10 @@ -8631,35 +8491,54 @@ icon_state = "darkyellowalt" }, /area/syndicate_mothership/cargo) -"dYQ" = ( -/obj/machinery/light/small{ - dir = 8; - tag = "icon-bulb1 (WEST)" +"dYT" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 }, -/turf/simulated/floor/shuttle, -/area/shuttle/nt_droppod) +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/turf/simulated/floor/glass/reinforced, +/area/centcom/bridge) "dYY" = ( /obj/effect/turf_decal/weather/snow/corner{ dir = 10 }, /turf/simulated/floor/indestructible/beach/water/deep/dense, /area/ninja/outside) +"dYZ" = ( +/obj/structure/table, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/paper_bin/nanotrasen{ + pixel_x = 3; + pixel_y = 12 + }, +/obj/item/pen/multi/fountain, +/turf/simulated/floor/carpet, +/area/centcom/zone2) +"dZe" = ( +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_x = 32; + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "navybluecornersalt" + }, +/area/centcom/specops) "dZk" = ( /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkyellowalt" }, /area/centcom/supply) -"dZu" = ( -/obj/effect/turf_decal/caution/stand_clear/white, -/obj/machinery/door/poddoor/impassable/unhittable{ - id_tag = "CC_Players_In"; - name = "Blast Door" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone2) "dZv" = ( /obj/structure/piano{ dir = 4; @@ -8673,35 +8552,6 @@ "dZA" = ( /turf/simulated/floor/grass, /area/centcom/evac) -"dZK" = ( -/obj/structure/table/glass, -/obj/item/flashlight/lamp/green{ - pixel_x = -6; - pixel_y = 16 - }, -/obj/item/paper_bin/nanotrasen{ - pixel_x = -2; - pixel_y = 8 - }, -/obj/item/pen/fancy{ - pixel_x = 8 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) -"eag" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/machinery/status_display{ - layer = 4; - pixel_x = 32 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_4) "eao" = ( /obj/structure/window/reinforced, /obj/item/flag/species/kidan, @@ -8725,6 +8575,9 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) +"eaT" = ( +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "eaU" = ( /obj/effect/turf_decal/weather/snow/corner, /obj/structure/railing{ @@ -8737,6 +8590,13 @@ icon_state = "darkfull" }, /area/trader_station/sol) +"eaX" = ( +/obj/structure/shuttle/engine/heater{ + icon_state = "heater3x3_side"; + tag = "icon-heater (NORTH)" + }, +/turf/simulated/floor/plating/airless, +/area/centcom/specops) "ebc" = ( /obj/structure/window/reinforced{ color = "red"; @@ -8771,12 +8631,62 @@ icon_state = "darkyellowaltstrip" }, /area/syndicate_mothership/control) +"ebD" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/snacks/sliceable/pizza/bacon, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/centcom/specops) "ebH" = ( /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkyellowcornersalt" }, /area/syndicate_mothership/cargo) +"ebI" = ( +/obj/structure/fans/tiny, +/obj/docking_port/mobile{ + dir = 8; + dwidth = 8; + height = 18; + id = "admin"; + name = "administration shuttle"; + port_direction = 2; + preferred_direction = 8; + roundstart_move = "admin_away"; + width = 18 + }, +/obj/machinery/door/airlock/external{ + frequency = 1331; + id_tag = "admin_s_outer"; + name = "Ship External Access"; + req_access = list(101) + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1331; + master_tag = "admin_s_air_control"; + pixel_x = -1; + pixel_y = -29; + req_access = list(101) + }, +/obj/docking_port/stationary{ + dir = 8; + dwidth = 8; + height = 18; + id = "admin_away"; + name = "centcom bay 1"; + timid = 1; + turf_type = /turf/simulated/floor/plating/airless; + width = 18 + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "podfloor_dark" + }, +/area/shuttle/administration) "ebO" = ( /obj/machinery/vending/snack, /obj/structure/closet/hydrant{ @@ -8787,6 +8697,65 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) +"ebR" = ( +/obj/structure/closet{ + icon_closed = "syndicate1"; + icon_opened = "syndicate1open"; + icon_state = "syndicate1" + }, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/gun/projectile/automatic/proto, +/obj/item/gun/energy/gun/blueshield, +/obj/item/clothing/glasses/hud/security/sunglasses/aviators, +/obj/item/reagent_containers/food/snacks/candy/mre, +/obj/item/reagent_containers/hypospray/combat, +/obj/item/radio/headset/ert/alt{ + desc = null; + name = "SRT bowman headset" + }, +/obj/item/clothing/head/beret/centcom/officer/navy{ + desc = null; + name = "SRT beret" + }, +/obj/item/clothing/shoes/combat/swat{ + name = "SRT special shoes" + }, +/obj/item/clothing/gloves/combat{ + name = "Combat gloves" + }, +/obj/item/storage/belt/security/webbing/srt/full, +/obj/item/storage/backpack/satchel_blueshield/srt, +/obj/item/clothing/suit/storage/blueshield/srt, +/obj/item/clothing/suit/armor/bulletproof{ + name = "SRT bulletproof vest" + }, +/obj/item/shield/riot/tele, +/obj/item/suppressor, +/obj/item/CQC_manual, +/obj/item/implanter/mindshield/ert, +/obj/item/card/id/centcom{ + name = "Special Reaction Team Member card"; + rank = "Special Reaction Team Member"; + registered_name = "Special Reaction Team Member" + }, +/obj/item/storage/box/responseteam, +/obj/item/clothing/under/fluff/jay_turtleneck{ + desc = null; + name = "SRT uniform" + }, +/obj/item/gun/projectile/automatic/pistol/sp8/sp8ar, +/obj/item/ammo_box/magazine/sp8, +/obj/item/ammo_box/magazine/sp8, +/obj/item/implanter/dust, +/obj/item/clothing/accessory/holster, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "navyblue" + }, +/area/centcom/specops) "ebX" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/wideplating{ @@ -8808,22 +8777,9 @@ }, /turf/simulated/floor/plasteel/grimy, /area/trader_station/sol) -"ecJ" = ( -/obj/structure/falsewall/reinforced{ - req_access = list(114); - layer = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone2) "ecV" = ( /turf/simulated/wall/indestructible/fakeglass, /area/centcom/supply) -"edm" = ( -/obj/machinery/vending/ntcrates, -/turf/simulated/floor/plating, -/area/centcom/specops) "edp" = ( /obj/effect/turf_decal{ dir = 1; @@ -8843,6 +8799,13 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) +"edZ" = ( +/obj/effect/landmark/ert_director, +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "eeb" = ( /obj/machinery/bottler, /obj/structure/table, @@ -8851,14 +8814,12 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) -"eec" = ( -/obj/machinery/computer/account_database{ - name = "Admin Accounts Database" - }, -/obj/machinery/newscaster/security_unit{ - pixel_y = 32 +"eed" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" }, -/turf/simulated/floor/wood/fancy/cherry, /area/centcom/bridge) "eeh" = ( /obj/structure/chair/sofa/right, @@ -8879,6 +8840,9 @@ icon_state = "darkyellowcornersalt" }, /area/syndicate_mothership/cargo) +"eeG" = ( +/turf/simulated/floor/carpet/cyan, +/area/centcom/zone2) "eeN" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -8910,23 +8874,16 @@ /obj/machinery/light/small, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/infteam) -"efn" = ( -/obj/machinery/recharger/wallcharger{ - pixel_x = -24; - pixel_y = -12 - }, -/obj/machinery/recharger/wallcharger{ - pixel_x = -24; - pixel_y = -2 - }, -/obj/machinery/recharger/wallcharger{ - pixel_x = -24; - pixel_y = 8 +"efE" = ( +/obj/machinery/computer/station_alert, +/obj/structure/railing, +/obj/structure/window/reinforced{ + dir = 4 }, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" +/turf/simulated/floor/plasteel{ + icon_state = "darkyellowfull" }, -/area/shuttle/gamma) +/area/centcom/bridge) "efU" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -8943,15 +8900,6 @@ }, /turf/simulated/wall/indestructible/fakeglass, /area/centcom/jail) -"egc" = ( -/obj/structure/toilet{ - dir = 8; - pixel_y = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/centcom/zone3) "egd" = ( /obj/effect/turf_decal{ dir = 1; @@ -8971,6 +8919,13 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) +"egp" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-30"; + tag = "icon-plant-30" + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "egu" = ( /obj/structure/chair/sofa, /obj/structure/curtain/open/shower/security{ @@ -9035,21 +8990,31 @@ }, /turf/simulated/floor/indestructible/beach/water/deep/dense, /area/ninja/outside) -"eiV" = ( -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkyellowalt" +"eiF" = ( +/obj/structure/table, +/obj/item/pen/multi/fountain, +/obj/item/paper_bin/nanotrasen{ + pixel_x = 3; + pixel_y = 12 }, -/area/centcom/supply) +/obj/machinery/light, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "eji" = ( /obj/structure/chair/sofa{ dir = 8 }, /turf/simulated/floor/carpet, /area/centcom/zone1) +"ejx" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/turf/simulated/floor/wood{ + icon_state = "light-fancy-wood" + }, +/area/centcom/specops) "ejy" = ( /obj/structure/table/reinforced{ color = "#444444" @@ -9059,20 +9024,19 @@ }, /turf/simulated/floor/carpet/red, /area/syndicate_mothership/control) -"ejA" = ( -/obj/machinery/door/firedoor, -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/door/poddoor/impassable/preopen{ - id_tag = "ERT_Quarantine"; - name = "ERT Quarantine" - }, -/obj/machinery/door/airlock/centcom{ - name = "Medical Block"; - opacity = 1; - req_access = list(109) +"ejF" = ( +/obj/structure/closet/l3closet/security, +/obj/item/clothing/mask/gas, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/reagent_containers/spray/cleaner, +/obj/item/watertank/janitor{ + max_integrity = 1500; + volume = 1500 }, -/turf/simulated/floor/plasteel{ - icon_state = "white" +/obj/item/grenade/chem_grenade/cleaner, +/turf/simulated/floor/indestructible{ + dir = 5; + icon_state = "darkpurple" }, /area/centcom/specops) "ejG" = ( @@ -9091,25 +9055,6 @@ /mob/living/simple_animal/pet/penguin/baby, /turf/simulated/floor/indestructible/snow, /area/ninja/outside) -"ejW" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor{ - dir = 8; - req_access = list(104) - }, -/obj/machinery/door/poddoor/shutters/invincible{ - density = 0; - dir = 8; - icon_state = "open"; - id_tag = "CC_space_jail_sec"; - layer = 50; - level = 3; - locked = 1; - name = "Central Command Jail"; - opacity = 0 - }, -/turf/simulated/floor/plating, -/area/centcom/jail) "ekh" = ( /obj/structure/flora/tree/dead, /obj/structure/flora/ausbushes/brflowers, @@ -9127,6 +9072,18 @@ icon_state = "navybluecornersalt" }, /area/syndicate_mothership/control) +"elD" = ( +/obj/structure/table/glass, +/obj/item/toy/plushie/tabby_cat{ + desc = "Любимая игрушка-антистресс одной из представительниц вида таяран, когда-то работавшей главой персонала. Она была настолько занята выполнением своих обязанностей, что умерла голодной смертью прямо на своем рабочем месте. Не будьте как эта таяра. Кушайте регулярно."; + name = "Любимая игрушка бюрократов" + }, +/obj/item/reagent_containers/food/drinks/coffee{ + pixel_x = 6; + pixel_y = 9 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "elS" = ( /obj/machinery/door/airlock/external{ aiControlDisabled = 1; @@ -9146,33 +9103,10 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/control) -"emH" = ( -/obj/structure/window/reinforced, -/turf/simulated/wall/indestructible/reinforced, -/area/centcom/zone2) "emN" = ( /obj/structure/flora/rock/icy, /turf/simulated/floor/indestructible/snow, /area/ninja/outside) -"emX" = ( -/obj/structure/rack, -/obj/item/gun/energy/ionrifle/carbine{ - pixel_y = 7 - }, -/obj/item/grenade/empgrenade{ - pixel_x = 7; - pixel_y = -2 - }, -/obj/item/grenade/empgrenade, -/obj/item/aicard{ - layer = 2.9; - pixel_x = -5; - pixel_y = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "ena" = ( /obj/structure/railing, /turf/simulated/floor/plasteel{ @@ -9213,13 +9147,6 @@ icon_state = "bot" }, /area/shuttle/escape) -"eoJ" = ( -/obj/machinery/computer/card/centcom, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "eoT" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-28"; @@ -9248,6 +9175,16 @@ /obj/effect/turf_decal/weather/snow/corner, /turf/simulated/floor/indestructible/beach/water/deep/dense, /area/ninja/outside) +"epo" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/computer/cryopod{ + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "epx" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 4 @@ -9257,25 +9194,40 @@ }, /turf/simulated/floor/wood/cherry, /area/ninja/outside) -"eqh" = ( -/obj/machinery/door/airlock/command/glass{ - frequency = 2000; - icon_state = "open"; - id_tag = "CC-OP3-Int"; - locked = 1; - name = "Zone 2" - }, -/obj/effect/decal/warning_stripes/blue, +"epD" = ( +/obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "freezerfloor" }, -/area/centcom/zone2) -"equ" = ( -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkbluealt" +/area/centcom/jail) +"eqe" = ( +/obj/machinery/status_display{ + layer = 4; + pixel_y = -32 }, -/area/centcom/specops) +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/pod_3) +"eqg" = ( +/obj/machinery/door_control{ + id = "QMLoaddoor2"; + layer = 3; + name = "Loading Doors"; + pixel_x = 8; + pixel_y = -24 + }, +/obj/machinery/door_control{ + id = "QMLoaddoor"; + layer = 3; + name = "Loading Doors"; + pixel_x = -8; + pixel_y = -24 + }, +/obj/machinery/light/spot, +/turf/simulated/floor/shuttle, +/area/shuttle/supply) "eqJ" = ( /obj/structure/railing{ dir = 8 @@ -9283,34 +9235,15 @@ /obj/structure/flora/grass/both, /turf/simulated/floor/indestructible/snow, /area/ninja/outside) -"eqL" = ( -/obj/structure/rack/holorack, -/obj/item/organ/internal/cyberimp/brain/anti_drop, -/obj/item/organ/internal/cyberimp/brain/anti_drop, -/obj/item/organ/internal/cyberimp/brain/anti_sleep/hardened, -/obj/item/organ/internal/cyberimp/brain/anti_sleep/hardened, -/obj/item/organ/internal/cyberimp/brain/anti_stun/hardened, -/obj/item/organ/internal/cyberimp/brain/anti_stun/hardened, -/obj/item/organ/internal/cyberimp/chest/nutriment_old/plus, -/obj/item/organ/internal/cyberimp/chest/nutriment_old/plus, -/obj/item/organ/internal/cyberimp/chest/reviver/hardened, -/obj/item/organ/internal/cyberimp/chest/reviver/hardened, -/obj/item/organ/internal/cyberimp/eyes/hud/medical, -/obj/item/organ/internal/cyberimp/eyes/hud/medical, -/obj/item/organ/internal/cyberimp/eyes/thermals, -/obj/item/organ/internal/cyberimp/eyes/thermals, -/obj/item/organ/internal/cyberimp/mouth/breathing_tube, -/obj/item/organ/internal/cyberimp/mouth/breathing_tube, -/obj/item/implanter/mindshield, -/obj/item/implanter/mindshield, -/obj/item/organ/internal/cyberimp/arm/combat/centcom, -/obj/item/organ/internal/cyberimp/arm/combat/centcom, -/obj/item/organ/internal/cyberimp/arm/surgery, -/obj/item/organ/internal/cyberimp/arm/toolset, -/obj/item/organ/internal/cyberimp/arm/janitorial, -/obj/item/autoimplanter/old, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) +"erc" = ( +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkredalt" + }, +/area/centcom/jail) "erk" = ( /obj/effect/decal/nanotrasen_logo{ icon_state = "logo5" @@ -9328,10 +9261,10 @@ icon_state = "barber" }, /area/centcom/jail) -"erq" = ( -/obj/machinery/door/poddoor/impassable, -/turf/simulated/wall/indestructible/reinforced, -/area/centcom/specops) +"eru" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/plating, +/area/centcom/zone2) "erx" = ( /obj/machinery/door/airlock/multi_tile/glass{ dir = 2; @@ -9348,42 +9281,46 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/ninja/outside) -"erC" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, +"erD" = ( +/obj/structure/closet/secure_closet/brig, +/obj/effect/decal/warning_stripes/red/hollow, /turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkredalt" + }, +/area/centcom/jail) +"erI" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; icon_state = "dark" }, -/area/centcom/zone3) -"erP" = ( -/mob/living/simple_animal/turkey, -/turf/simulated/floor/grass, -/area/centcom/evac) -"erX" = ( -/obj/machinery/door/poddoor{ - id_tag = "ASSAULT1"; - name = "Launch Bay #1" +/area/shuttle/administration) +"erZ" = ( +/obj/effect/step_trigger/teleporter{ + icon = 'icons/mob/screen_gen.dmi'; + icon_state = "x2"; + teleport_x = 137; + teleport_y = 65; + teleport_z = 1 }, -/obj/effect/turf_decal/tile/neutral{ - alpha = 75; - color = "black"; - icon_state = "tile_full"; - layer = 9 - }, -/turf/simulated/floor/plating, -/area/centcom/supply) -"esm" = ( -/obj/structure/railing{ +/turf/simulated/floor/plasteel{ + color = "gray"; dir = 4; - pixel_x = -32 + icon_state = "rampbottom" + }, +/area/centcom/specops) +"esb" = ( +/obj/machinery/vending/ntcrates{ + req_access = list(114) + }, +/obj/machinery/conveyor{ + id = "CC_crate" }, /turf/simulated/floor/plasteel{ - icon_state = "rampbottom"; - tag = "icon-stage_stairs" + icon_state = "dark" }, -/area/centcom/zone2) +/area/centcom/supply) "esq" = ( /obj/machinery/light/small{ dir = 4 @@ -9400,12 +9337,6 @@ }, /turf/simulated/floor/carpet/green, /area/ninja/outpost) -"esy" = ( -/obj/structure/bookcase/manuals, -/obj/item/book/manual/sop_science, -/obj/item/book/manual/sop_medical, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "esC" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -9419,6 +9350,16 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) +"esL" = ( +/obj/effect/decal/warning_stripes/south, +/obj/effect/turf_decal/tile/neutral{ + alpha = 180; + color = "black"; + icon_state = "tile_full"; + layer = 9 + }, +/turf/simulated/floor/plating, +/area/centcom/supply) "esN" = ( /obj/structure/chair/comfy/shuttle, /turf/simulated/floor/shuttle/objective_check{ @@ -9435,15 +9376,24 @@ icon_state = "white" }, /area/centcom/jail) +"etw" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/light, +/turf/simulated/floor/wood, +/area/centcom/zone3) "etK" = ( /obj/structure/dispenser/oxygen, /turf/simulated/floor/plasteel{ icon_state = "darkyellowfull" }, /area/syndicate_mothership/cargo) -"eud" = ( -/turf/simulated/floor/wood, -/area/centcom/zone3) +"etQ" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "burst_l" + }, +/turf/simulated/wall/indestructible/fakeglass, +/area/shuttle/pod_3) "euh" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo13" @@ -9470,6 +9420,12 @@ "eul" = ( /turf/simulated/floor/shuttle/transparent_floor, /area/shuttle/ninja) +"euy" = ( +/obj/structure/chair/sofa/corp/right, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone3) "euF" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -9479,36 +9435,53 @@ }, /turf/simulated/floor/carpet/green, /area/ninja/outpost) -"euT" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +"euY" = ( +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1331; + id_tag = "admin_s_air_control"; + pixel_y = 24; + req_access = list(152); + tag_airpump = "admin_s_pump"; + tag_chamber_sensor = "admin_s_sensor"; + tag_exterior_door = "admin_s_outer"; + tag_interior_door = "admin_s_inner" }, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/chair/comfy/lime, /turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" + icon_state = "vfloor" }, /area/shuttle/administration) -"evd" = ( -/obj/structure/chair/comfy/lime, +"evj" = ( +/obj/structure/sign/poster/official/obey{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredalt" + }, +/area/centcom/jail) +"evp" = ( +/obj/machinery/vending/wallmed{ + pixel_x = -30; + pixel_y = -30 + }, /turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" + icon_state = "floor4" }, -/area/shuttle/administration) +/area/shuttle/specops) "evA" = ( /turf/simulated/floor/plasteel{ dir = 9; icon_state = "darkyellowalt" }, /area/centcom/zone3) +"evD" = ( +/obj/structure/falsewall/reinforced{ + layer = 5; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "evL" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -9526,25 +9499,6 @@ }, /turf/simulated/floor/wood/fancy/light, /area/ninja/outpost) -"evN" = ( -/obj/machinery/porta_turret/centcom/pulse{ - armor = list("melee"=90,"bullet"=90,"laser"=95,"energy"=95,"bomb"=80,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - color = "#666666"; - damtype = "burn"; - health = 1250; - region_max = 12; - scan_range = 12; - shot_delay = 8; - name = "Quarantine Pulse Turret" - }, -/obj/machinery/door/poddoor/shutters/invincible/fake_r_wall{ - dir = 1; - id_tag = "ERT_Quarantine" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "ewj" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo12" @@ -9555,38 +9509,41 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/control) -"ewR" = ( -/obj/structure/closet/secure_closet/freezer/meat{ - req_access = list(102) +"ewA" = ( +/obj/structure/dresser, +/obj/structure/window/reinforced{ + dir = 4 }, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/zone1) +"ewE" = ( +/obj/item/flag/nt, +/obj/machinery/recharger/wallcharger{ + pixel_x = 32; + pixel_y = -2 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/obj/effect/decal/warning_stripes/west, /obj/machinery/light, /turf/simulated/floor/plasteel{ - icon_state = "redfull"; - tag = "icon-redfull (NORTHWEST)" + icon_state = "dark" }, -/area/centcom/zone1) -"ewU" = ( -/obj/structure/closet/l3closet/security, -/obj/item/clothing/mask/gas, -/obj/item/tank/internals/emergency_oxygen/double, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/watertank/janitor{ - max_integrity = 1500; - volume = 1500 +/area/centcom/specops) +"exr" = ( +/obj/structure/table, +/obj/item/storage/box/chemimp{ + pixel_x = 4; + pixel_y = 3 }, -/obj/item/grenade/chem_grenade/cleaner, -/turf/simulated/floor/indestructible{ - dir = 1; - icon_state = "darkpurple" +/obj/item/storage/box/trackimp, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "dark" }, -/area/centcom/specops) +/area/shuttle/administration) "exL" = ( /obj/structure/table/wood, /turf/simulated/floor/plasteel{ @@ -9596,16 +9553,19 @@ "eyb" = ( /turf/simulated/wall/indestructible/fakeglass, /area/centcom/zone2) -"eyf" = ( -/obj/structure/chair{ - dir = 1 +"eyj" = ( +/obj/effect/turf_decal/loading_area/white{ + dir = 4 }, -/turf/simulated/floor/indestructible{ - dir = 8; - icon_state = "vault"; - name = "Operative position" +/obj/effect/decal/warning_stripes/north, +/obj/effect/turf_decal/tile/neutral{ + alpha = 100; + color = "black"; + icon_state = "tile_full"; + layer = 9 }, -/area/centcom/specops) +/turf/simulated/floor/plating, +/area/centcom/supply) "eyD" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -9620,19 +9580,6 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) -"eyL" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/black{ - dir = 5; - do_not_delete_me = 1 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "podfloor_dark" - }, -/area/shuttle/administration) "eyZ" = ( /obj/item/flag/ninja, /obj/effect/turf_decal/siding/wood{ @@ -9642,31 +9589,37 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) -"ezh" = ( -/obj/structure/sign/poster/official/nanotrasen_logo{ - icon = 'icons/obj/decals.dmi'; - icon_state = "ntsing_alt3" +"ezA" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/siding/white{ + dir = 9 }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/jail) +"ezH" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/pod_4) "ezN" = ( /obj/structure/chair/comfy/shuttle, /turf/simulated/floor/plasteel{ icon_state = "bot" }, /area/shuttle/escape) -"ezV" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/chair/office/dark{ - dir = 1 - }, -/obj/effect/turf_decal/siding/brown, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "eAy" = ( /obj/item/storage/firstaid/brute{ pixel_x = 4; @@ -9702,14 +9655,16 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) -"eBK" = ( -/obj/machinery/computer/cryopod{ - pixel_y = 32 +"eBC" = ( +/obj/vehicle/ridden/janicart{ + dir = 4 }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault"; - tag = "icon-vault (WEST)" +/obj/item/key/janitor, +/obj/item/janiupgrade{ + layer = 2.9 + }, +/turf/simulated/floor/indestructible{ + icon_state = "darkpurple" }, /area/centcom/specops) "eCq" = ( @@ -9731,6 +9686,14 @@ /obj/item/clothing/mask/cigarette/pipe, /turf/simulated/floor/wood, /area/centcom/zone1) +"eCT" = ( +/obj/machinery/photocopier, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 5 + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "eCX" = ( /obj/effect/turf_decal{ dir = 6; @@ -9755,64 +9718,32 @@ }, /turf/simulated/floor/carpet/red, /area/syndicate_mothership/control) -"eDv" = ( -/obj/effect/turf_decal/siding/white/corner{ - dir = 1 - }, +"eDu" = ( /turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/evac) -"eDH" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/machinery/light{ - dir = 4 + icon_state = "navyblue" }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_1) +/area/centcom/supplypod/loading/ert) "eDO" = ( /obj/effect/spawner/lootdrop/trade_sol/largeitem, /turf/simulated/floor/wood{ icon_state = "fancy-wood-birch" }, /area/shuttle/trade/sol) -"eDP" = ( -/obj/machinery/photocopier, -/obj/structure/window/reinforced{ - dir = 4; - layer = 4.2 +"eDV" = ( +/obj/machinery/vending/wallmed{ + pixel_x = 24 }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 10 +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellowalt" }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) +/area/centcom/zone3) "eEj" = ( /obj/machinery/bookbinder, /turf/simulated/floor/plasteel{ icon_state = "grimy" }, /area/centcom/jail) -"eES" = ( -/obj/machinery/recharger/wallcharger{ - pixel_x = 32; - pixel_y = -12 - }, -/obj/machinery/recharger/wallcharger{ - pixel_x = 32; - pixel_y = 8 - }, -/obj/machinery/recharger/wallcharger{ - pixel_x = 32; - pixel_y = -2 - }, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" - }, -/area/shuttle/gamma) "eFc" = ( /obj/machinery/light{ dir = 4 @@ -9821,6 +9752,13 @@ icon_state = "darkgrey" }, /area/syndicate_mothership) +"eFf" = ( +/obj/structure/bookcase/manuals, +/obj/item/book/manual/sop_service, +/obj/item/book/manual/sop_supply, +/obj/machinery/light, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "eFk" = ( /obj/structure/rack, /obj/item/oar{ @@ -9840,6 +9778,12 @@ }, /turf/simulated/wall/indestructible/reinforced/rusted, /area/ninja/holding) +"eFF" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkgreen" + }, +/area/centcom/specops) "eFN" = ( /obj/structure/rack/holorack, /obj/item/stamp/captain, @@ -9875,27 +9819,19 @@ icon_state = "darkredaltstrip" }, /area/syndicate_mothership/jail) -"eGn" = ( -/obj/machinery/door/airlock/centcom{ - damage_deflection = 999; - name = "Prison"; - opacity = 1; - req_access = list(104) - }, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkredaltstrip" - }, -/area/centcom/jail) "eGs" = ( /obj/machinery/light/small, /turf/simulated/floor/wood/fancy/light, /area/ussp_centcom/secretariat) -"eGO" = ( -/obj/structure/stone_tile/slab/burnt, -/turf/simulated/floor/lava/lava_land_surface, -/area/ruin/space/bubblegum_arena) +"eGx" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/four) "eHj" = ( /obj/item/storage/firstaid/ancient{ pixel_x = 3; @@ -9914,24 +9850,6 @@ icon_state = "barber" }, /area/centcom/jail) -"eHC" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - layer = 2.9 - }, -/obj/structure/table, -/obj/item/paper_bin/nanotrasen{ - pixel_x = 3; - pixel_y = 12 - }, -/obj/item/pen/multi/fountain, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"eHW" = ( -/turf/simulated/floor/plating/airless, -/area/centcom/specops) "eIq" = ( /obj/structure/table/wood, /obj/item/tank/jetpack/oxygen/harness{ @@ -9945,19 +9863,6 @@ icon_state = "darkyellowfull" }, /area/syndicate_mothership/cargo) -"eIs" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/structure/window/reinforced{ - layer = 3.1; - armor = list("melee"=100,"bullet"=100,"laser"=0,"energy"=0,"bomb"=25,"bio"=100,"rad"=100,"fire"=80,"acid"=100) - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkred" - }, -/area/centcom/specops) "eIx" = ( /obj/item/flag/ninja, /obj/effect/turf_decal/siding/wood{ @@ -9984,49 +9889,27 @@ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' }, /area/shuttle/funeral) -"eJc" = ( -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) "eJe" = ( /obj/structure/chair/comfy/brown{ color = "#FF3300" }, /turf/simulated/floor/carpet/arcade, /area/trader_station/sol) -"eJz" = ( -/obj/structure/table/wood/fancy/royalblack, -/obj/item/candle/eternal, -/obj/item/reagent_containers/food/drinks/drinkingglass{ - pixel_x = 6; - pixel_y = 9 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" - }, -/area/shuttle/administration) -"eJQ" = ( -/obj/structure/window/full/reinforced{ - layer = 2 - }, -/obj/machinery/door/poddoor/shutters/invincible{ - density = 0; - dir = 1; - icon_state = "open"; - id_tag = "CC_space_jail_sec"; - layer = 50; - level = 3; - locked = 1; - name = "Central Command Jail"; - opacity = 0 - }, -/turf/simulated/floor/plating, -/area/centcom/jail) "eKa" = ( /obj/effect/turf_decal/siding/wood/corner, /turf/simulated/floor/carpet/green, /area/ninja/outpost) +"eKh" = ( +/obj/structure/table/wood/fancy/black, +/obj/item/paper_bin/nanotrasen{ + amount = 50; + pixel_x = 3; + pixel_y = 12 + }, +/obj/item/pen/multi/gold, +/obj/item/stamp/chameleon, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "eKi" = ( /obj/machinery/light{ dir = 1; @@ -10045,23 +9928,33 @@ /obj/structure/table/wood/poker, /turf/simulated/floor/carpet/arcade, /area/trader_station/sol) +"eKv" = ( +/obj/structure/chair/comfy/beige{ + dir = 8; + layer = 5; + pixel_y = -2 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) "eKV" = ( /obj/structure/table/wood/poker, /obj/item/deck/cards, /turf/simulated/floor/carpet/arcade, /area/trader_station/sol) -"eLb" = ( -/obj/machinery/light, -/turf/simulated/floor/plasteel{ - icon_state = "darkredalt" - }, -/area/centcom/zone2) -"eLE" = ( -/obj/effect/turf_decal/siding/blue{ +"eLd" = ( +/obj/structure/window/reinforced{ dir = 1 }, -/turf/simulated/floor/glass, -/area/centcom/bridge) +/obj/structure/shuttle/engine/heater, +/turf/simulated/floor/plating/airless, +/area/shuttle/escape) +"eLA" = ( +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/obj/structure/chair/comfy/shuttle, +/turf/simulated/floor/shuttle, +/area/shuttle/pod_3) "eLT" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -10129,6 +10022,15 @@ icon_state = "darkfull" }, /area/syndicate_mothership) +"eMU" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/coffee, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "eNb" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -10191,15 +10093,6 @@ icon_state = "white" }, /area/centcom/zone1) -"eNX" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkred" - }, -/area/centcom/specops) "eOl" = ( /obj/structure/window/reinforced, /turf/simulated/floor/plasteel{ @@ -10240,19 +10133,28 @@ icon_state = "fancy-wood-oak-broken5" }, /area/syndicate_mothership) -"eOY" = ( -/obj/structure/cable{ - icon_state = "2-6" - }, -/obj/machinery/photocopier{ - icon_state = "fax" +"ePq" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/turf_decal/tile/neutral{ + alpha = 180; + color = "black"; + icon_state = "tile_full"; + layer = 9 }, /turf/simulated/floor/plating, -/area/centcom/specops) -"ePf" = ( -/obj/structure/bookcase/random, -/turf/simulated/floor/carpet, -/area/centcom/jail) +/area/centcom/supply) +"ePz" = ( +/obj/structure/table/glass, +/obj/item/paper_bin/nanotrasen{ + pixel_x = -2; + pixel_y = 8 + }, +/obj/item/pen/fancy{ + pixel_x = 1; + pixel_y = 4 + }, +/turf/simulated/floor/carpet/cyan, +/area/centcom/zone2) "ePB" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -10296,12 +10198,19 @@ icon_state = "rampbottom" }, /area/syndicate_mothership/outside) -"ePO" = ( -/obj/machinery/computer/camera_advanced, -/obj/structure/window/reinforced{ - dir = 4 +"ePN" = ( +/obj/structure/window/full/shuttle, +/obj/structure/grille, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/transport) +"ePR" = ( +/obj/structure/sign/nuke{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "navyblue" }, -/turf/simulated/floor/carpet, /area/centcom/specops) "ePS" = ( /turf/simulated/floor/plasteel{ @@ -10318,80 +10227,95 @@ icon_state = "Dark" }, /area/shuttle/funeral) -"eQA" = ( -/obj/item/ship_in_a_bottle, -/obj/effect/turf_decal/tile/neutral{ - alpha = 100; - icon_state = "seadeep"; - layer = 9; - icon = 'icons/misc/beach.dmi' - }, -/turf/simulated/floor/indestructible/beach/water/deep/sand_floor, -/area/centcom/zone2) -"eQJ" = ( -/obj/structure/shuttle/engine/heater{ - dir = 4; - icon_state = "heater2x2"; - tag = "icon-heater (NORTH)" - }, -/obj/structure/window/reinforced{ - color = "yellow"; - dir = 8; - layer = 2.9 - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/trade/sol) -"eQO" = ( -/obj/structure/window/reinforced{ - dir = 4 +"eQj" = ( +/obj/structure/plasticflaps/mining, +/obj/machinery/door/poddoor{ + id_tag = "CC_supply_space"; + locked = 2; + name = "Supply Blastdoor" }, -/obj/effect/turf_decal/siding/white{ - dir = 1 +/obj/machinery/conveyor{ + dir = 1; + id = "CC_crate" }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/evac) -"eQT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/area/centcom/supply) +"eQt" = ( +/obj/structure/closet/cardboard, +/obj/item/poster/random_official{ + pixel_y = 5 }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 +/obj/item/poster/random_official{ + pixel_y = -3 }, -/turf/simulated/floor/wood/fancy/light, -/area/ninja/outpost) -"eQX" = ( -/obj/structure/window/reinforced{ - layer = 2.9 +/obj/item/poster/random_official{ + pixel_y = 3 }, -/obj/structure/holohoop{ +/obj/item/poster/random_official, +/obj/item/poster/random_official{ + pixel_y = 10 + }, +/obj/item/poster/random_official{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/effect/decal/cleanable/fungus{ + pixel_x = -32; + pixel_y = 32 + }, +/turf/simulated/floor/plating, +/area/centcom/zone2) +"eQT" = ( +/obj/effect/turf_decal/siding/wood{ dir = 1 }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/effect/turf_decal/siding/white, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 }, -/area/centcom/jail) +/turf/simulated/floor/wood/fancy/light, +/area/ninja/outpost) +"eRb" = ( +/obj/machinery/chem_heater, +/turf/simulated/floor/engine, +/area/centcom/specops) "eRk" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 }, /turf/simulated/floor/wood/fancy/light, /area/ninja/outpost) -"eRm" = ( -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "vault" - }, -/area/centcom/specops) "eRw" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 }, /turf/simulated/floor/wood/fancy/light, /area/ninja/outpost) +"eRR" = ( +/obj/machinery/light, +/obj/effect/turf_decal/siding/brown/corner{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/centcom/zone3) +"eSd" = ( +/obj/structure/table/wood{ + color = "#996633" + }, +/obj/item/folder, +/obj/item/folder, +/obj/item/folder/blue, +/obj/item/folder/blue, +/obj/item/folder/red, +/obj/item/folder/red, +/obj/item/folder/white, +/obj/item/folder/white, +/obj/item/folder/yellow, +/obj/item/folder/yellow, +/obj/structure/window/reinforced, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "eSg" = ( /obj/structure/railing{ dir = 8 @@ -10464,56 +10388,11 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) -"eTs" = ( -/obj/item/gun/projectile/automatic/pistol/enforcer{ - icon_state = "enforcer_black"; - pixel_x = 2 - }, -/obj/item/gun/projectile/automatic/pistol/enforcer{ - icon_state = "enforcer_black"; - pixel_x = 2 - }, -/obj/item/gun/projectile/automatic/pistol/enforcer{ - icon_state = "enforcer_black"; - pixel_x = 2 - }, -/obj/item/gun/projectile/automatic/pistol/enforcer{ - icon_state = "enforcer_black"; - pixel_x = 2 - }, -/obj/item/gun/projectile/automatic/pistol/enforcer{ - icon_state = "enforcer_black"; - pixel_x = 2 - }, -/obj/item/gun/projectile/automatic/pistol/enforcer{ - icon_state = "enforcer_black"; - pixel_x = -2; - pixel_y = 7 - }, -/obj/item/gun/projectile/automatic/pistol/enforcer{ - icon_state = "enforcer_black"; - pixel_x = -2; - pixel_y = 7 - }, -/obj/item/gun/projectile/automatic/pistol/enforcer{ - icon_state = "enforcer_black"; - pixel_x = -2; - pixel_y = 7 - }, -/obj/item/gun/projectile/automatic/pistol/enforcer{ - icon_state = "enforcer_black"; - pixel_x = -2; - pixel_y = 7 - }, -/obj/item/gun/projectile/automatic/pistol/enforcer{ - icon_state = "enforcer_black"; - pixel_x = -2; - pixel_y = 7 - }, -/obj/structure/rack/gunrack, -/obj/effect/decal/warning_stripes/white, +"eTm" = ( +/obj/structure/chair, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 1; + icon_state = "vault" }, /area/centcom/specops) "eTw" = ( @@ -10529,25 +10408,16 @@ icon_state = "darkblue" }, /area/centcom/zone1) -"eTE" = ( -/obj/structure/table/glass, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" - }, -/area/centcom/specops) -"eTK" = ( -/obj/machinery/door/airlock/external{ - id_tag = "ferry_away"; - name = "Ferry Airlock"; - req_access = list(106) +"eTN" = ( +/obj/machinery/status_display{ + layer = 4; + pixel_y = -32 }, -/obj/structure/fans/tiny, -/obj/effect/turf_decal/delivery/white, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/structure/chair/comfy/shuttle{ + dir = 1 }, -/area/centcom/specops) +/turf/simulated/floor/shuttle, +/area/shuttle/pod_4) "eTW" = ( /obj/machinery/light/small{ dir = 4; @@ -10564,6 +10434,21 @@ icon_state = "darkfull" }, /area/syndicate_mothership/control) +"eUo" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/turf_decal/tile/neutral{ + alpha = 200; + color = "black"; + icon_state = "tile_full"; + layer = 9; + opacity = 1 + }, +/turf/simulated/floor/plating, +/area/centcom/supply) +"eVn" = ( +/obj/structure/shuttle/engine/heater, +/turf/simulated/floor/plating/airless, +/area/centcom/jail) "eVA" = ( /obj/effect/turf_decal/stripes/asteroid/corner, /turf/simulated/floor/beach/sand{ @@ -10571,21 +10456,35 @@ icon_state = "asteroid" }, /area/centcom/evac) +"eVU" = ( +/obj/effect/turf_decal/siding/white{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "eWv" = ( /obj/effect/decal/warning_stripes/white, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/evac) -"eWz" = ( -/obj/structure/lattice, -/turf/space, -/area/centcom/specops) "eWA" = ( -/turf/space{ - icon_state = "black" +/turf/simulated/wall/shuttle/onlyselfsmooth, +/area/shuttle/gamma) +"eWH" = ( +/obj/machinery/door/window/brigdoor{ + dir = 8; + req_access = list(106) }, -/area/space) +/obj/structure/chair/comfy/lime{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone3) "eWL" = ( /obj/machinery/defibrillator_mount/loaded{ pixel_x = -30 @@ -10596,6 +10495,36 @@ }, /turf/simulated/floor/plasteel/freezer, /area/ninja/outpost) +"eWS" = ( +/obj/structure/shuttle/engine/heater{ + icon_state = "heater3x3_side_inv"; + tag = "icon-heater (NORTH)" + }, +/turf/simulated/floor/plating/airless, +/area/centcom/specops) +"eXk" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) +"eXq" = ( +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_y = -32 + }, +/obj/item/twohanded/required/kirbyplants, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) "eXB" = ( /obj/machinery/vending/medical, /obj/structure/window/reinforced{ @@ -10619,43 +10548,37 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"eYa" = ( -/obj/machinery/vending/mech/ntc/equipment{ - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) -"eYh" = ( -/obj/structure/grille, -/obj/structure/window/full/shuttle, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 2; - id_tag = "adminshuttleshutters"; - name = "Blast Shutters" - }, -/turf/simulated/floor/plating, -/area/shuttle/administration) +"eXN" = ( +/obj/machinery/computer/card/centcom, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) +"eYl" = ( +/turf/simulated/floor/plating/airless, +/area/shuttle/escape) "eYE" = ( /obj/structure/grille, /obj/structure/window/full/shuttle, /turf/simulated/floor/shuttle/plating, /area/shuttle/trade/sol) +"eZg" = ( +/obj/structure/chair/comfy/beige{ + dir = 4; + layer = 5; + pixel_y = -2 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) "eZi" = ( /turf/simulated/floor/plasteel{ icon_state = "darkyellowcornersalt" }, /area/centcom/zone3) -"eZp" = ( -/obj/structure/chair/comfy/beige{ - dir = 8; - layer = 4; - pixel_y = -2 +"eZq" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkyellow" }, -/obj/structure/railing, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) +/area/centcom/supplypod/loading/three) "eZx" = ( /obj/structure/table/wood, /obj/item/reagent_containers/glass/beaker/waterbottle/large{ @@ -10676,31 +10599,6 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) -"eZD" = ( -/obj/machinery/door/airlock/external{ - id_tag = "specops_away"; - name = "Shuttle Hatch"; - req_access = list(109) - }, -/obj/machinery/shower{ - dir = 1; - tag = "icon-shower (WEST)" - }, -/obj/structure/fans/tiny, -/obj/machinery/door/poddoor/impassable/preopen{ - id_tag = "ERT_Quarantine"; - name = "ERT Quarantine" - }, -/turf/simulated/floor/indestructible{ - icon_state = "dark" - }, -/area/centcom/specops) -"eZG" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/simulated/wall/indestructible/reinforced, -/area/centcom/specops) "eZR" = ( /obj/structure/filingcabinet/employment, /turf/simulated/floor/carpet, @@ -10712,46 +10610,6 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) -"fam" = ( -/obj/structure/chair/stool, -/obj/structure/sign/poster/contraband/punch_shit{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/centcom/jail) -"faQ" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) -"fbk" = ( -/obj/structure/closet/cardboard, -/obj/item/poster/random_official{ - pixel_y = 5 - }, -/obj/item/poster/random_official{ - pixel_y = -3 - }, -/obj/item/poster/random_official{ - pixel_y = 3 - }, -/obj/item/poster/random_official, -/obj/item/poster/random_official{ - pixel_y = 10 - }, -/obj/item/poster/random_official{ - pixel_x = -4; - pixel_y = 6 - }, -/obj/effect/decal/cleanable/fungus{ - pixel_x = -32; - pixel_y = 32 - }, -/turf/simulated/floor/plating, -/area/centcom/zone2) "fbr" = ( /turf/simulated/floor/plasteel{ icon_state = "darkyellowcornersalt" @@ -10770,28 +10628,6 @@ /obj/item/dice/d20, /turf/simulated/floor/carpet/black, /area/trader_station/sol) -"fcd" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/table/wood/fancy/royalblack, -/obj/item/reagent_containers/food/drinks/bottle/wine{ - pixel_x = -12; - pixel_y = 10 - }, -/obj/item/reagent_containers/food/drinks/drinkingglass, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" - }, -/area/shuttle/administration) "fcj" = ( /obj/structure/railing{ dir = 1 @@ -10802,33 +10638,38 @@ }, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"fcD" = ( -/obj/structure/toilet, -/obj/machinery/light/small{ - dir = 4 +"fcs" = ( +/obj/structure/flora/ausbushes/stalkybush, +/obj/item/gun/projectile/automatic/pistol{ + layer = 2.9 }, -/turf/simulated/floor/plasteel{ - icon_state = "white" +/obj/effect/turf_decal/tile/neutral{ + alpha = 85; + icon = 'icons/misc/beach.dmi'; + icon_state = "seadeep"; + layer = 9 }, -/area/centcom/jail) -"fcM" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 +/turf/simulated/floor/indestructible/beach/water/deep/sand_floor, +/area/centcom/specops) +"fcv" = ( +/obj/structure/railing, +/obj/structure/chair/comfy/beige{ + dir = 4; + layer = 4; + pixel_y = -2 }, -/obj/machinery/light{ +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) +"fcH" = ( +/obj/structure/window/reinforced{ dir = 8 }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_1) -"fcT" = ( -/obj/structure/bed, -/obj/item/bedsheet/mime, -/obj/effect/mine/sound/bwoink{ - layer = 2.9; - alpha = 0 +/obj/structure/chair/office/dark{ + dir = 1 }, -/turf/simulated/floor/carpet, -/area/centcom/zone1) +/obj/effect/turf_decal/siding/brown, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "fdg" = ( /obj/effect/turf_decal{ dir = 1; @@ -10841,40 +10682,48 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"fdw" = ( -/obj/item/flashlight/lamp/green{ - pixel_x = -6; - pixel_y = 16; - icon_state = "bigscenner"; - icon = 'icons/obj/library.dmi' +"fdL" = ( +/obj/machinery/door/airlock/centcom{ + id_tag = "adminshuttle"; + name = "Bridge"; + opacity = 1; + req_access = list(101) }, -/obj/item/paper_bin/nanotrasen{ - pixel_x = -2; - pixel_y = 8 +/obj/effect/turf_decal/stripes/black{ + dir = 8; + do_not_delete_me = 1 }, -/obj/item/pen/fancy{ - pixel_x = 8 +/obj/effect/turf_decal/stripes/black{ + dir = 4; + do_not_delete_me = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 10 +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "podfloor_dark" }, -/obj/structure/table/holotable/wood, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) -"fdP" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, -/obj/item/pen, -/obj/item/pen, -/obj/item/pen, -/obj/machinery/door/window/brigdoor{ - dir = 8 +/area/shuttle/administration) +"fdZ" = ( +/obj/structure/rack/gunrack, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/gun/projectile/automatic/ar{ + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/ar{ + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/ar{ + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/ar{ + pixel_x = 6 + }, +/obj/item/gun/projectile/automatic/ar{ + pixel_x = 6 }, /turf/simulated/floor/plasteel{ - icon_state = "grimy" + icon_state = "dark" }, -/area/centcom/jail) +/area/centcom/specops) "feu" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -10896,16 +10745,6 @@ icon_state = "barber" }, /area/centcom/zone1) -"feS" = ( -/obj/machinery/optable, -/obj/machinery/defibrillator_mount/loaded{ - pixel_x = 30; - pixel_y = 3 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/centcom/specops) "feT" = ( /obj/effect/turf_decal/box/white/corners{ dir = 4 @@ -10921,15 +10760,19 @@ }, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) -"ffS" = ( -/obj/machinery/light{ - dir = 8 +"ffA" = ( +/obj/effect/turf_decal/loading_area/white{ + dir = 4 }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkblue" +/obj/effect/decal/warning_stripes/south, +/obj/effect/turf_decal/tile/neutral{ + alpha = 100; + color = "black"; + icon_state = "tile_full"; + layer = 9 }, -/area/centcom/zone1) +/turf/simulated/floor/plating, +/area/centcom/supply) "ffV" = ( /obj/machinery/computer/atmos_alert, /obj/structure/window/reinforced{ @@ -10939,35 +10782,12 @@ icon_state = "darkyellowfull" }, /area/centcom/bridge) -"ffZ" = ( -/obj/machinery/newscaster{ - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "navybluealt" - }, -/area/centcom/specops) -"fgc" = ( -/obj/structure/window/reinforced, -/obj/effect/turf_decal/siding/yellow{ - dir = 4 - }, -/turf/simulated/floor/carpet, -/area/centcom/evac) -"fgt" = ( -/obj/effect/spawner/lootdrop/officetoys, -/obj/structure/table/holotable/wood, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) -"fgu" = ( -/obj/structure/table/wood/fancy/royalblue, -/obj/item/storage/ashtray/glass{ - pixel_x = -6; - pixel_y = 7 +"fgq" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 9 }, -/turf/simulated/floor/carpet/black, -/area/shuttle/administration) +/turf/simulated/floor/wood, +/area/centcom/zone3) "fgx" = ( /obj/structure/closet/secure_closet/freezer/fridge, /obj/item/reagent_containers/food/condiment/milk, @@ -10985,18 +10805,19 @@ /obj/machinery/light, /turf/simulated/floor/carpet/arcade, /area/trader_station/sol) -"fgM" = ( -/obj/machinery/vending/robotics/nt/gygax, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"fgL" = ( +/obj/structure/table/glass, +/obj/effect/turf_decal/siding{ + color = "#444444" }, -/area/centcom/specops) -"fgQ" = ( -/obj/machinery/vending/coffee/free, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) +"fgS" = ( +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "dark" }, -/area/centcom/jail) +/area/shuttle/administration) "fhi" = ( /obj/machinery/door/airlock/external{ frequency = 1331; @@ -11021,16 +10842,22 @@ /obj/structure/fans/tiny/invisible, /turf/simulated/floor/plating, /area/shuttle/syndicate) -"fht" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2 - }, +"fhx" = ( /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkbluealt" + dir = 8; + icon_state = "darkredalt" }, -/area/centcom/zone2) +/area/centcom/specops) +"fhy" = ( +/obj/machinery/light/spot, +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_y = -26 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/transport) "fhO" = ( /obj/effect/mapping_helpers/light{ light_power = 3 @@ -11040,6 +10867,18 @@ }, /turf/simulated/floor/indestructible/snow, /area/ninja/outside) +"fhT" = ( +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/spray/pestspray, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/spray/pestspray, +/obj/item/clothing/gloves/botanic_leather, +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/centcom/jail) "fhX" = ( /obj/machinery/chem_heater, /turf/simulated/floor/plasteel{ @@ -11047,20 +10886,27 @@ icon_state = "navybluealt" }, /area/syndicate_mothership/control) -"fiy" = ( +"fim" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/decal/warning_stripes/south, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 1; + do_not_delete_me = 1 + }, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 1; + id_tag = "ERT_armory_lvl4"; + layer = 5; + name = "Armory level 4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" + }, +/area/centcom/specops) +"fiy" = ( /obj/structure/mineral_door/wood, /turf/simulated/floor/wood, /area/trader_station/sol) -"fiE" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 - }, -/obj/effect/turf_decal/siding/blue{ - dir = 8 - }, -/turf/simulated/floor/glass, -/area/centcom/bridge) "fiO" = ( /obj/machinery/door/airlock{ name = "Toilet" @@ -11073,18 +10919,13 @@ }, /turf/simulated/floor/carpet/green, /area/ninja/outpost) -"fjw" = ( +"fjj" = ( +/obj/machinery/computer/camera_advanced, /obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 4 }, -/area/centcom/jail) +/turf/simulated/floor/carpet, +/area/centcom/specops) "fjA" = ( /obj/effect/turf_decal/siding{ color = "#444444"; @@ -11115,29 +10956,6 @@ icon_state = "asteroid" }, /area/centcom/evac) -"fkt" = ( -/obj/structure/rack/holorack, -/obj/item/storage/box/deathimp, -/obj/item/storage/box/deathimp, -/obj/item/storage/box/deathimp, -/obj/item/storage/box/chef_rare_ingredients_kit, -/obj/item/storage/box/bartender_rare_ingredients_kit, -/obj/item/storage/box/fingerprints, -/obj/item/storage/box/fingerprints, -/obj/item/storage/box/swabs, -/obj/item/storage/box/swabs, -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "fkF" = ( /obj/effect/turf_decal/siding{ color = "#444444"; @@ -11160,42 +10978,27 @@ icon_state = "darkyellowalt" }, /area/centcom/zone3) -"fli" = ( -/obj/structure/stone_tile/surrounding/burnt, -/obj/structure/stone_tile/center/burnt, -/obj/effect/landmark/spawner/bubblegum, -/turf/simulated/floor/lava/lava_land_surface, -/area/ruin/space/bubblegum_arena) -"fll" = ( -/obj/effect/turf_decal/tile/neutral{ - color = "black"; - icon_state = "tile_full"; - layer = 9 - }, -/obj/effect/step_trigger/teleporter{ - teleport_x = 183; - teleport_y = 60; - teleport_z = 1; - icon = 'icons/mob/screen_gen.dmi'; - icon_state = "x2" - }, -/turf/simulated/floor/plasteel{ - color = "gray"; - dir = 8; - icon_state = "rampbottom" +"fls" = ( +/turf/simulated/floor/indestructible{ + dir = 5; + icon_state = "darkgreynavyblue" }, /area/centcom/specops) -"fmI" = ( -/obj/machinery/computer/shuttle/ert, -/obj/structure/window/reinforced{ - dir = 8 +"flG" = ( +/obj/effect/turf_decal/stripes/black{ + dir = 8; + do_not_delete_me = 1; + icon_state = "bs_deadlock" }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "white" }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) +/area/shuttle/administration) +"flX" = ( +/obj/machinery/photocopier, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "fmZ" = ( /obj/machinery/door/airlock/centcom{ damage_deflection = 999; @@ -11239,15 +11042,32 @@ /obj/effect/landmark/ninjastart, /turf/simulated/floor/plasteel, /area/ninja/outpost) -"fnF" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 1; - id_tag = "CC_Armory_ARG" - }, +"fny" = ( +/obj/structure/table, /turf/simulated/floor/plasteel{ icon_state = "dark" }, +/area/centcom/zone1) +"fnC" = ( +/obj/structure/rack, +/obj/item/reagent_containers/applicator/dual, +/obj/item/reagent_containers/applicator/dual, +/obj/item/reagent_containers/applicator/dual, +/obj/item/clothing/accessory/stethoscope, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkbluecornersalt" + }, /area/centcom/specops) +"fnD" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/siding/white, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) "fnJ" = ( /obj/structure/sign/poster/contraband/random{ pixel_y = -30 @@ -11259,6 +11079,44 @@ icon_state = "grimy" }, /area/syndicate_mothership) +"fnT" = ( +/obj/item/flag/nt, +/obj/machinery/recharger/wallcharger{ + pixel_x = 32; + pixel_y = -2 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/obj/effect/decal/warning_stripes/northwest, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"fnW" = ( +/obj/item/storage/box/monkeycubes, +/obj/item/storage/box/monkeycubes, +/obj/item/storage/box/monkeycubes/farwacubes, +/obj/item/storage/box/monkeycubes/farwacubes, +/obj/item/storage/box/monkeycubes/neaeracubes, +/obj/item/storage/box/monkeycubes/neaeracubes, +/obj/item/storage/box/monkeycubes/stokcubes, +/obj/item/storage/box/monkeycubes/stokcubes, +/obj/item/storage/box/monkeycubes/wolpincubes, +/obj/item/storage/box/monkeycubes/wolpincubes, +/obj/structure/sink{ + dir = 1 + }, +/obj/structure/table/reinforced, +/obj/structure/sign/poster/official/healthy{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkbluealt" + }, +/area/centcom/specops) "fom" = ( /obj/structure/bed, /obj/effect/turf_decal/siding{ @@ -11278,13 +11136,6 @@ icon_state = "dark" }, /area/centcom/supply) -"foB" = ( -/obj/item/twohanded/required/kirbyplants{ - pixel_y = 8 - }, -/obj/structure/table, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) "foC" = ( /obj/machinery/computer/operating, /turf/simulated/floor/plasteel/freezer, @@ -11308,48 +11159,30 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) -"foL" = ( -/obj/structure/table/reinforced, -/obj/machinery/kitchen_machine/microwave/upgraded{ - pixel_y = 5 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault"; - tag = "icon-vault (WEST)" - }, -/area/centcom/specops) "foN" = ( /turf/simulated/floor/plasteel{ dir = 1; icon_state = "arrival" }, /area/centcom/evac) -"fpH" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/wood, -/area/centcom/evac) -"fpU" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) -"fpV" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/effect/turf_decal/siding/blue/corner{ - color = "#444444" +"fpg" = ( +/obj/machinery/door/poddoor{ + id_tag = "ASSAULT0"; + name = "Launch Bay #0" }, -/obj/machinery/light{ - dir = 8 +/obj/effect/turf_decal/tile/neutral{ + alpha = 75; + color = "black"; + icon_state = "tile_full"; + layer = 9 }, +/turf/simulated/floor/plating, +/area/centcom/supply) +"fpZ" = ( +/obj/structure/bookcase/manuals, +/obj/item/book/manual/sop_command, +/obj/item/book/manual/sop_engineering, +/obj/item/book/manual/sop_general, /turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "fqm" = ( @@ -11389,15 +11222,6 @@ icon_state = "darkredaltstrip" }, /area/centcom/jail) -"fqC" = ( -/obj/structure/table/reinforced{ - color = "#444444" - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "navybluealt" - }, -/area/centcom/specops) "fqF" = ( /obj/effect/turf_decal/siding{ color = "#444444"; @@ -11409,12 +11233,6 @@ name = "Tatami" }, /area/ninja/outpost) -"fqL" = ( -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkyellowalt" - }, -/area/centcom/supply) "fqN" = ( /obj/effect/turf_decal/stripes/gold{ dir = 10 @@ -11424,69 +11242,16 @@ "fqO" = ( /turf/simulated/floor/plasteel/freezer, /area/ninja/outpost) -"fqZ" = ( -/obj/structure/table/wood/fancy/royalblue, -/turf/simulated/floor/carpet/black, -/area/shuttle/administration) -"frj" = ( -/obj/structure/table/wood, -/obj/item/taperecorder{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/paper_bin/nanotrasen, -/obj/item/pen{ - pixel_x = 7; - pixel_y = 9 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/carpet, -/area/centcom/zone3) "frx" = ( /obj/machinery/vending/cola/free, /turf/simulated/floor/wood, /area/centcom/zone1) -"frF" = ( -/obj/machinery/door/airlock/public/glass, -/obj/effect/turf_decal/stripes/black{ - do_not_delete_me = 1 - }, -/obj/effect/turf_decal/stripes/black{ - dir = 1; - do_not_delete_me = 1 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "podfloor_dark" - }, -/area/shuttle/administration) -"frJ" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/zipties, -/turf/simulated/floor/wood, -/area/centcom/zone2) -"frL" = ( -/obj/effect/turf_decal/tile/neutral{ - color = "black"; - icon_state = "tile_full"; - layer = 9 - }, -/obj/effect/step_trigger/teleporter{ - teleport_x = 183; - teleport_y = 63; - teleport_z = 1; - icon = 'icons/mob/screen_gen.dmi'; - icon_state = "x2" - }, -/turf/simulated/floor/plasteel{ - color = "gray"; - dir = 8; - icon_state = "rampbottom" +"frA" = ( +/obj/structure/chair/sofa/left{ + dir = 4 }, -/area/centcom/specops) +/turf/simulated/floor/carpet/red, +/area/centcom/zone1) "fsf" = ( /obj/effect/turf_decal/siding/wood{ do_not_delete_me = 1 @@ -11553,6 +11318,13 @@ icon_state = "darkfull" }, /area/syndicate_mothership/jail) +"ftj" = ( +/obj/item/flag/nt, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkredalt" + }, +/area/centcom/jail) "fts" = ( /obj/effect/turf_decal/siding{ color = "#444444"; @@ -11564,14 +11336,6 @@ name = "Tatami" }, /area/ninja/outpost) -"ftv" = ( -/obj/structure/window/full/reinforced{ - armor = list("melee"=80,"bullet"=80,"laser"=0,"energy"=0,"bomb"=80,"bio"=100,"rad"=100,"fire"=80,"acid"=100); - layer = 5 - }, -/obj/structure/flora/ausbushes/genericbush, -/turf/simulated/floor/grass, -/area/centcom/specops) "ftx" = ( /obj/machinery/light/small{ dir = 1 @@ -11592,13 +11356,6 @@ icon_state = "darkjail" }, /area/syndicate_mothership/jail) -"ftH" = ( -/obj/structure/shuttle/engine/platform{ - dir = 1; - layer = 2.9 - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/vox) "ftK" = ( /obj/machinery/door/airlock/shuttle{ id_tag = "s_docking_airlock"; @@ -11619,62 +11376,87 @@ icon_state = "navyblue" }, /area/centcom/specops) -"fui" = ( -/obj/effect/turf_decal/siding/white{ - dir = 5 +"ftQ" = ( +/obj/structure/bed, +/obj/item/bedsheet/wiz, +/obj/effect/mine/sound/bwoink{ + alpha = 0; + layer = 2.9 + }, +/turf/simulated/floor/carpet, +/area/centcom/zone1) +"ftT" = ( +/obj/machinery/porta_turret/centcom/pulse{ + armor = list("melee"=90,"bullet"=90,"laser"=95,"energy"=95,"bomb"=80,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + color = "#666666"; + damtype = "burn"; + health = 1250; + name = "Quarantine Pulse Turret"; + region_max = 12; + scan_range = 12; + shot_delay = 8 + }, +/obj/machinery/door/poddoor/shutters/invincible/fake_r_wall{ + dir = 1; + id_tag = "ERT_Quarantine" }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/jail) +/area/centcom/specops) "fuF" = ( /turf/simulated/floor/plasteel{ dir = 5; icon_state = "darkyellowalt" }, /area/centcom/zone3) -"fuY" = ( -/obj/effect/decal/warning_stripes/northwestsouth, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 1; - id_tag = "ERT_armory_lvl4"; - name = "Armory level 4"; - layer = 5 +"fuR" = ( +/obj/structure/bookcase, +/obj/effect/decal/cleanable/fungus{ + pixel_x = -32; + pixel_y = 32 + }, +/obj/item/paper/central_command/archive/memes{ + info = "
"; + name = "Коллективное решение" + }, +/turf/simulated/floor/plating, +/area/centcom/zone2) +"fvk" = ( +/obj/structure/closet/secure_closet/brig, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 }, /turf/simulated/floor/plasteel{ - icon_state = "darkfull" + dir = 9; + icon_state = "darkredalt" }, -/area/centcom/specops) +/area/centcom/jail) "fvn" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, /turf/simulated/floor/carpet/green, /area/ninja/outpost) -"fvs" = ( -/obj/structure/falsewall/reinforced{ - req_access = list(114); - layer = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"fvp" = ( +/turf/simulated/floor/indestructible{ + dir = 1; + icon_state = "darkgreynavybluecorner" }, -/area/centcom/zone1) +/area/centcom/specops) "fvx" = ( /obj/structure/chair/sofa/right, /turf/simulated/floor/plasteel{ icon_state = "grimy" }, /area/centcom/jail) -"fvO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 9 - }, -/obj/machinery/light{ - dir = 4 - }, +"fvF" = ( +/obj/mecha/combat/marauder/loaded, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 4; + icon_state = "navybluecorners" }, /area/centcom/specops) "fwf" = ( @@ -11705,12 +11487,6 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) -"fwM" = ( -/obj/machinery/light/small, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/centcom/zone3) "fwX" = ( /obj/structure/falsewall/reinforced{ icon = 'icons/turf/walls/wood_wall.dmi'; @@ -11781,15 +11557,13 @@ /obj/item/storage/box/lights/mixed, /turf/simulated/floor/plasteel, /area/ninja/outpost) -"fyc" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 +"fyy" = ( +/obj/machinery/vending/mech/ntc/exousuit{ + req_access = list(114) + }, +/obj/machinery/light{ + dir = 1 }, -/turf/simulated/floor/shuttle, -/area/shuttle/nt_droppod) -"fzu" = ( -/obj/effect/decal/warning_stripes/white/hollow, -/obj/effect/decal/warning_stripes/northwest, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -11801,6 +11575,9 @@ name = "Tatami" }, /area/ninja/outpost) +"fzV" = ( +/turf/simulated/wall/shuttle, +/area/shuttle/administration) "fAd" = ( /obj/machinery/light, /turf/simulated/floor/plating, @@ -11862,42 +11639,13 @@ icon_state = "dark" }, /area/centcom/jail) -"fBi" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "burst_r"; - tag = "icon-burst_r" - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/pod_3) -"fBr" = ( -/obj/machinery/door/window/brigdoor{ - base_state = "rightsecure"; - dir = 8; - icon_state = "rightsecure"; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" - }, -/area/centcom/zone3) -"fBu" = ( -/obj/machinery/door_control/secure{ - id = "CC_Armory_shotgun"; - name = "Shotguns"; - pixel_x = -24; - pixel_y = 24; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkgreen" +"fBk" = ( +/obj/structure/table/wood, +/obj/item/storage/bible, +/turf/simulated/floor/carpet{ + icon_state = "carpetsymbol" }, -/area/centcom/specops) +/area/centcom/evac) "fBA" = ( /obj/machinery/vending/cola/free, /turf/simulated/floor/plasteel/grimy, @@ -11911,10 +11659,45 @@ icon_state = "darkfull" }, /area/syndicate_mothership) +"fBJ" = ( +/obj/structure/railing{ + layer = 4.3; + pixel_y = 32 + }, +/obj/machinery/computer, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) +"fBQ" = ( +/obj/structure/table/wood/fancy/royalblue, +/obj/structure/window/plasmareinforced{ + color = "#22aab7"; + dir = 8 + }, +/obj/structure/window/plasmareinforced{ + color = "#22aab7"; + dir = 1 + }, +/obj/item/reagent_containers/food/drinks/shaker, +/turf/simulated/floor/carpet/black, +/area/shuttle/administration) "fBS" = ( /obj/machinery/vending/snack/free, /turf/simulated/floor/plasteel/grimy, /area/trader_station/sol) +"fBW" = ( +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_y = -32 + }, +/obj/structure/chair/comfy/beige{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "fCa" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -11948,6 +11731,15 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) +"fCK" = ( +/obj/structure/window/reinforced{ + layer = 2.9 + }, +/obj/effect/turf_decal/siding/brown{ + dir = 4 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "fCL" = ( /obj/effect/turf_decal/siding{ color = "#444444"; @@ -11985,6 +11777,57 @@ "fCS" = ( /turf/simulated/floor/carpet/blue, /area/ninja/outpost) +"fCV" = ( +/obj/machinery/door_control/secure{ + id = "CC_Armory_GYGAX"; + name = "GYGAX"; + pixel_x = 24; + pixel_y = -32; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellowcorners" + }, +/area/centcom/specops) +"fCZ" = ( +/obj/structure/rack/gunrack, +/obj/effect/decal/warning_stripes/green/hollow, +/obj/item/gun/projectile/automatic/m90{ + name = "\improper DAE 5.56 Compact GL"; + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/m90{ + name = "\improper DAE 5.56 Compact GL"; + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/m90{ + name = "\improper DAE 5.56 Compact GL"; + pixel_x = 6 + }, +/obj/item/gun/projectile/automatic/m90{ + name = "\improper DAE 5.56 Compact GL"; + pixel_x = 6 + }, +/obj/item/gun/projectile/automatic/m90{ + name = "\improper DAE 5.56 Compact GL"; + pixel_x = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"fDh" = ( +/obj/machinery/camera{ + c_tag = "CentComm Special Ops. Shuttle"; + dir = 4; + network = list("ERT","CentComm") + }, +/obj/machinery/recharge_station/ert, +/turf/simulated/floor/shuttle{ + icon_state = "floor4" + }, +/area/shuttle/specops) "fDl" = ( /obj/structure/flora/grass/green, /turf/simulated/floor/indestructible/snow, @@ -12010,12 +11853,16 @@ }, /turf/simulated/floor/grass, /area/centcom/evac) -"fDT" = ( +"fDV" = ( +/obj/structure/railing{ + dir = 4; + pixel_x = -32 + }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkgreen" + icon_state = "rampbottom"; + tag = "icon-stage_stairs" }, -/area/centcom/specops) +/area/centcom/zone1) "fDY" = ( /obj/machinery/vending/coffee/free, /turf/simulated/floor/plasteel{ @@ -12034,14 +11881,15 @@ tag = "icon-stage_stairs" }, /area/ninja/outpost) -"fEN" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 +"fEe" = ( +/obj/effect/turf_decal/caution/stand_clear{ + pixel_x = 16 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 10; + icon_state = "darkyellowaltstrip" }, -/area/centcom/jail) +/area/centcom/specops) "fEQ" = ( /obj/structure/chair/sofa/pew/left, /turf/simulated/floor/plasteel{ @@ -12078,30 +11926,6 @@ icon_state = "dark" }, /area/centcom/jail) -"fFk" = ( -/obj/structure/table/wood, -/obj/item/stamp/magistrate{ - pixel_x = -5; - pixel_y = -5 - }, -/obj/item/stamp/centcom{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/folder/yellow{ - pixel_x = 7; - pixel_y = 7 - }, -/obj/item/folder/red{ - pixel_x = 7 - }, -/obj/item/folder/blue{ - pixel_x = 7; - pixel_y = -7 - }, -/obj/structure/window/reinforced, -/turf/simulated/floor/carpet, -/area/centcom/zone3) "fFm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, @@ -12126,29 +11950,6 @@ }, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"fFt" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/food/snacks/bigbiteburger, -/obj/structure/sign/poster/official/nanotrasen_logo{ - icon = 'icons/obj/decals.dmi'; - icon_state = "nanotrasen_sign2"; - pixel_x = -16; - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) -"fFC" = ( -/obj/structure/window/reinforced, -/obj/machinery/computer, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/bridge) "fFD" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 8 @@ -12202,6 +12003,19 @@ icon_state = "dark" }, /area/centcom/evac) +"fGy" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/food/snacks/validsalad, +/obj/structure/sign/poster/official/nanotrasen_logo{ + icon = 'icons/obj/decals.dmi'; + icon_state = "nanotrasen_sign3"; + pixel_x = -16; + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "fGE" = ( /obj/machinery/vending/boozeomat, /obj/effect/turf_decal/siding/wood{ @@ -12209,6 +12023,17 @@ }, /turf/simulated/floor/carpet/black, /area/ninja/outpost) +"fHe" = ( +/obj/structure/window/reinforced{ + armor = list("melee"=100,"bullet"=100,"laser"=0,"energy"=0,"bomb"=25,"bio"=100,"rad"=100,"fire"=80,"acid"=100); + dir = 1; + layer = 2 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "navybluealt" + }, +/area/centcom/specops) "fHh" = ( /obj/effect/decal/nanotrasen_logo{ icon_state = "logo6" @@ -12218,25 +12043,6 @@ icon_state = "darkgrey" }, /area/centcom/zone2) -"fHH" = ( -/obj/structure/chair/comfy/lime{ - dir = 1 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" - }, -/area/shuttle/administration) -"fHI" = ( -/obj/machinery/computer/station_alert, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/radio/intercom/specops{ - pixel_y = 32 - }, -/turf/simulated/floor/carpet, -/area/centcom/specops) "fHL" = ( /obj/structure/chair/sofa/right, /turf/simulated/floor/plasteel{ @@ -12249,10 +12055,6 @@ icon_state = "darkyellowaltstrip" }, /area/syndicate_mothership/control) -"fIa" = ( -/obj/structure/table/glass, -/turf/simulated/floor/carpet/black, -/area/centcom/zone3) "fID" = ( /turf/simulated/floor/plating/airless, /area/space) @@ -12263,30 +12065,56 @@ icon_state = "asteroid" }, /area/centcom/evac) -"fIN" = ( -/turf/simulated/floor/carpet/red, -/area/centcom/bridge) -"fJf" = ( -/obj/structure/table/reinforced, +"fJh" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/carpet/black, +/area/shuttle/administration) +"fJn" = ( +/obj/effect/decal/warning_stripes/white/hollow, +/obj/machinery/vending/nta/ertarmory/green{ + req_access = list(104,109) + }, /turf/simulated/floor/plasteel{ - icon_state = "cafeteria" + icon_state = "darkgreenfull" }, -/area/centcom/jail) -"fJu" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 +/area/centcom/specops) +"fJp" = ( +/obj/machinery/door_control/secure{ + id = "ShitRainSupply"; + pixel_x = 24; + pixel_y = 24 }, -/obj/effect/turf_decal/siding/white{ - dir = 8 +/turf/simulated/floor/plasteel{ + icon_state = "Dark" }, -/obj/effect/turf_decal/siding/white{ - dir = 1 +/area/centcom/specops) +"fJz" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "CC_Armory_DEDI" + }, +/obj/machinery/door/poddoor/impassable/preopen{ + id_tag = "ERT_Quarantine"; + name = "ERT Quarantine" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 4; + icon_state = "navybluealt" }, -/area/centcom/jail) +/area/centcom/specops) +"fJC" = ( +/obj/structure/filingcabinet/filingcabinet, +/obj/machinery/door_control/secure{ + id = "CC_Players_In"; + name = "Civilian Access"; + pixel_x = -24; + pixel_y = 32; + req_access = list(114) + }, +/turf/simulated/floor/wood, +/area/centcom/zone2) "fJE" = ( /obj/structure/fermenting_barrel, /obj/effect/turf_decal/siding/wood{ @@ -12297,6 +12125,27 @@ }, /turf/simulated/floor/carpet/black, /area/ninja/outpost) +"fJQ" = ( +/obj/structure/table/wood, +/obj/item/folder/yellow{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/item/folder/red{ + pixel_x = 7 + }, +/obj/item/folder/blue{ + pixel_x = 7; + pixel_y = -7 + }, +/obj/item/storage/briefcase, +/obj/item/door_remote/omni, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "fJR" = ( /obj/structure/chair/comfy/red{ color = "#FFFFFF"; @@ -12313,6 +12162,12 @@ tag = "icon-redfull (NORTHWEST)" }, /area/centcom/jail) +"fKr" = ( +/obj/structure/shuttle/engine/huge{ + dir = 4 + }, +/turf/simulated/floor/shuttle/transparent_floor, +/area/shuttle/administration) "fKH" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -12336,6 +12191,12 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) +"fLa" = ( +/obj/structure/bookcase/manuals, +/obj/item/book/manual/sop_science, +/obj/item/book/manual/sop_medical, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "fLb" = ( /obj/effect/turf_decal/siding{ color = "#444444"; @@ -12379,35 +12240,6 @@ /obj/structure/flora/ausbushes/grassybush, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/control) -"fLB" = ( -/obj/structure/table/reinforced, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "navyblue" - }, -/area/centcom/specops) -"fLF" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/simulated/floor/plating, -/area/centcom/zone2) -"fLG" = ( -/obj/structure/rack, -/obj/item/ammo_box/shotgun, -/obj/item/ammo_box/shotgun, -/obj/item/ammo_box/shotgun, -/obj/effect/decal/warning_stripes/blue/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) -"fMn" = ( -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkredaltstrip" - }, -/area/centcom/zone2) "fMQ" = ( /turf/simulated/wall/indestructible/reinforced, /area/centcom/bridge) @@ -12432,6 +12264,16 @@ /obj/effect/turf_decal/siding/wood, /turf/simulated/floor/carpet/black, /area/ninja/outpost) +"fND" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/siding/blue/corner{ + color = "#444444" + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "fNY" = ( /obj/effect/turf_decal/siding/green{ dir = 4 @@ -12447,17 +12289,6 @@ /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/grass, /area/centcom/evac) -"fOg" = ( -/obj/structure/sign/directions/cargo{ - dir = 4; - pixel_x = 32; - pixel_y = -26 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "navybluealtstrip" - }, -/area/centcom/specops) "fOq" = ( /obj/structure/flora/rock/jungle, /obj/structure/flora/junglebush/b, @@ -12469,13 +12300,15 @@ icon_state = "darkyellowaltstrip" }, /area/centcom/zone3) -"fPj" = ( -/obj/effect/turf_decal/caution/stand_clear, +"fPf" = ( +/obj/effect/decal/nanotrasen_logo{ + icon_state = "logo2"; + pixel_x = 16 + }, /turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkyellowaltstrip" + icon_state = "dark" }, -/area/centcom/zone3) +/area/centcom/specops) "fPk" = ( /obj/machinery/computer/camera_advanced, /turf/simulated/floor/carpet/black, @@ -12529,16 +12362,6 @@ icon_state = "darkyellowfull" }, /area/syndicate_mothership/cargo) -"fQm" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/shuttle/engine/heater, -/turf/simulated/floor/plating/airless, -/area/shuttle/pod_2) "fQx" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -12567,6 +12390,13 @@ icon_state = "white" }, /area/centcom/zone1) +"fQO" = ( +/obj/structure/shuttle/engine/heater{ + icon_state = "heater3x3_side"; + tag = "icon-heater (NORTH)" + }, +/turf/simulated/floor/plating/airless, +/area/centcom/jail) "fQU" = ( /obj/structure/window/reinforced{ dir = 8; @@ -12580,6 +12410,12 @@ }, /turf/simulated/floor/carpet/black, /area/ninja/outpost) +"fRi" = ( +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkyellowalt" + }, +/area/centcom/supply) "fRH" = ( /obj/machinery/light/small{ dir = 4 @@ -12616,16 +12452,6 @@ }, /turf/simulated/floor/carpet, /area/centcom/zone1) -"fSV" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "burst_l"; - tag = "icon-burst_l" - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/pod_3) "fSW" = ( /obj/structure/window/reinforced{ dir = 4 @@ -12633,44 +12459,6 @@ /obj/structure/chair/comfy/brown, /turf/simulated/floor/wood, /area/centcom/zone1) -"fTc" = ( -/obj/structure/rack/holorack, -/obj/item/clothing/shoes/cowboy/white{ - name = "white boots" - }, -/obj/item/clothing/shoes/cowboy/white{ - name = "white boots" - }, -/obj/item/clothing/shoes/fluff/noble_boot, -/obj/item/clothing/shoes/fluff/noble_boot, -/obj/item/clothing/shoes/jackboots, -/obj/item/clothing/shoes/jackboots, -/obj/item/clothing/shoes/jackboots/jacksandals, -/obj/item/clothing/shoes/jackboots/jacksandals, -/obj/item/clothing/shoes/laceup, -/obj/item/clothing/shoes/laceup, -/obj/item/clothing/shoes/leather, -/obj/item/clothing/shoes/leather, -/obj/item/clothing/shoes/white, -/obj/item/clothing/shoes/white, -/obj/item/clothing/shoes/white{ - icon_state = "secshoes"; - name = "shoes" - }, -/obj/item/clothing/shoes/white{ - icon_state = "secshoes"; - name = "shoes" - }, -/obj/item/clothing/shoes/centcom{ - desc = null; - name = "Dress shoes" - }, -/obj/item/clothing/shoes/centcom{ - desc = null; - name = "Dress shoes" - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) "fTt" = ( /obj/structure/window/reinforced, /obj/item/flag/nt, @@ -12681,26 +12469,16 @@ icon_state = "dark" }, /area/centcom/evac) -"fTL" = ( -/obj/item/flag/nt, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"fTS" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/black{ - dir = 4; - do_not_delete_me = 1 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "podfloor_dark" - }, -/area/shuttle/administration) "fTZ" = ( /turf/simulated/wall/indestructible/fakeglass, /area/ussp_centcom/secretariat) +"fUj" = ( +/obj/machinery/computer/camera_advanced, +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "fUp" = ( /obj/structure/flora/grass/both, /obj/structure/flora/grass/green, @@ -12719,6 +12497,22 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/control) +"fUK" = ( +/obj/structure/window/reinforced/survival_pod{ + density = 0; + dir = 9; + pixel_x = -1; + pixel_y = 1 + }, +/obj/structure/fishingrodcabinet{ + pixel_x = 3; + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkbluealt" + }, +/area/centcom/zone2) "fUX" = ( /obj/machinery/kitchen_machine/oven, /obj/item/reagent_containers/food/snacks/rawcookies/chocochips{ @@ -12729,46 +12523,20 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) -"fVm" = ( -/obj/effect/turf_decal/arrows{ - dir = 8 - }, +"fVl" = ( /turf/simulated/floor/plasteel{ - icon_state = "darkyellowalt" - }, -/area/centcom/supply) -"fVA" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 + dir = 10; + icon_state = "darkred" }, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/chair/comfy/lime{ - dir = 8 +/area/centcom/specops) +"fVB" = ( +/obj/effect/turf_decal/siding/white{ + dir = 6 }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; +/turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/shuttle/administration) -"fVC" = ( -/obj/machinery/turretid{ - control_area = "Centcom Special Operations Forces"; - name = "Quarantine Turret"; - pixel_x = 3; - pixel_y = -26 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 5 - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) +/area/centcom/evac) "fVE" = ( /obj/effect/turf_decal/siding{ color = "#444444"; @@ -12785,27 +12553,16 @@ icon_state = "sepia" }, /area/ninja/outpost) -"fVS" = ( -/obj/structure/shuttle/engine/heater{ - icon_state = "heater3x3_side_inv"; - tag = "icon-heater (NORTH)" - }, -/obj/structure/window/plasmareinforced{ - color = "#FF0000"; - dir = 1 - }, -/obj/structure/shuttle/engine/platform{ - layer = 2.9 +"fWh" = ( +/obj/structure/window/reinforced, +/obj/machinery/computer/crew, +/obj/structure/window/reinforced{ + dir = 4 }, -/turf/simulated/floor/plating/airless, -/area/shuttle/syndicate) -"fVV" = ( -/obj/structure/filingcabinet/security, -/obj/effect/turf_decal/siding/yellow/corner{ - dir = 1 +/turf/simulated/floor/plasteel{ + icon_state = "darkbluefull" }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone3) +/area/centcom/bridge) "fWk" = ( /obj/structure/window/reinforced{ dir = 8 @@ -12822,6 +12579,13 @@ tag = "icon-redfull (NORTHWEST)" }, /area/centcom/jail) +"fWt" = ( +/obj/structure/chair/comfy/red{ + color = "#FFFFFF"; + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone3) "fWE" = ( /obj/machinery/door/airlock/shuttle{ id_tag = "s_docking_airlock" @@ -12842,17 +12606,24 @@ icon_state = "neutral" }, /area/centcom/evac) -"fXt" = ( -/obj/structure/dispenser/oxygen, -/obj/effect/turf_decal/stripes/black{ - dir = 8; - do_not_delete_me = 1 +"fXf" = ( +/obj/structure/table, +/obj/item/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = 8; + pixel_y = 9 }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "podfloor_dark" +/obj/item/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = 1; + pixel_y = 2 }, -/area/shuttle/administration) +/obj/item/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = -6; + pixel_y = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "fXA" = ( /obj/effect/turf_decal{ dir = 8; @@ -12867,20 +12638,22 @@ icon_state = "dark" }, /area/syndicate_mothership/control) +"fXY" = ( +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "fXZ" = ( /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkredcornersalt" }, /area/centcom/jail) -"fYj" = ( -/obj/structure/closet/secure_closet/brig, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkredalt" - }, -/area/centcom/jail) "fYP" = ( /obj/machinery/door/airlock/centcom{ name = "Outpost 2"; @@ -12912,13 +12685,6 @@ }, /turf/simulated/floor/carpet/cyan, /area/ninja/outpost) -"fZj" = ( -/obj/machinery/photocopier, -/obj/effect/turf_decal/siding/yellow/corner{ - dir = 8 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone3) "fZl" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo19" @@ -12952,14 +12718,25 @@ }, /turf/simulated/floor/grass, /area/centcom/evac) -"gao" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 1; - icon_state = "propulsion_r"; - tag = "icon-propulsion_r (NORTH)" +"gap" = ( +/obj/structure/table, +/obj/structure/window/reinforced{ + dir = 8 }, -/turf/simulated/floor/plating/airless, -/area/shuttle/syndicate_sit) +/obj/item/folder/red{ + pixel_x = -5; + pixel_y = -5 + }, +/obj/item/folder/yellow{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/folder/white{ + pixel_x = -5; + pixel_y = 5 + }, +/turf/simulated/floor/carpet, +/area/centcom/zone2) "gay" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -13014,57 +12791,168 @@ /obj/effect/turf_decal/siding/green, /turf/simulated/floor/indestructible/grass, /area/ninja/outside) -"gcl" = ( -/obj/effect/turf_decal/number/number_1{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkredaltstrip" - }, -/area/centcom/jail) -"gcn" = ( -/obj/structure/rack/gunrack, -/obj/item/gun/projectile/automatic/sfg, -/obj/item/gun/projectile/automatic/sfg, -/obj/item/gun/projectile/automatic/sfg, -/obj/item/gun/projectile/automatic/sfg, -/obj/item/gun/projectile/automatic/sfg, -/obj/item/gun/projectile/automatic/sfg, -/obj/item/gun/projectile/automatic/sfg, -/obj/item/gun/projectile/automatic/sfg, -/obj/item/gun/projectile/automatic/sfg, -/obj/item/gun/projectile/automatic/sfg, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) -"gcp" = ( -/obj/structure/railing{ - dir = 4; - pixel_x = -32 +"gce" = ( +/obj/structure/rack/holorack, +/obj/item/clothing/under/assistantformal, +/obj/item/clothing/under/captain_fly{ + name = "rogue uniform" }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" +/obj/item/clothing/under/captainparade{ + name = "parade uniform" }, -/area/centcom/specops) -"gct" = ( -/obj/mecha/combat/marauder/loaded, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "navyblue" +/obj/item/clothing/under/captainparade{ + name = "parade uniform" }, -/area/centcom/specops) -"gcB" = ( -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "arrival" +/obj/item/clothing/under/captain_fly{ + name = "rogue uniform" }, -/area/centcom/zone1) -"gcK" = ( +/obj/item/clothing/under/assistantformal, +/obj/item/clothing/under/fluff/elishirt, +/obj/item/clothing/under/fluff/elishirt, +/obj/item/clothing/under/lawyer/black, +/obj/item/clothing/under/lawyer/black, +/obj/item/clothing/under/lawyer/blue, +/obj/item/clothing/under/lawyer/blue, +/obj/item/clothing/under/lawyer/bluesuit, +/obj/item/clothing/under/lawyer/bluesuit, +/obj/item/clothing/under/lawyer/female, +/obj/item/clothing/under/lawyer/female, +/obj/item/clothing/under/lawyer/oldman, +/obj/item/clothing/under/lawyer/oldman, +/obj/item/clothing/under/lawyer/red, +/obj/item/clothing/under/lawyer/red, +/obj/item/clothing/under/mafia{ + name = "black outfit" + }, +/obj/item/clothing/under/mafia{ + name = "black outfit" + }, +/obj/item/clothing/under/mafia/white{ + name = "white outfit" + }, +/obj/item/clothing/under/mafia/white{ + name = "white outfit" + }, +/obj/item/clothing/under/misc/durathread, +/obj/item/clothing/under/misc/durathread, +/obj/item/clothing/under/retro/engineering, +/obj/item/clothing/under/retro/engineering, +/obj/item/clothing/under/retro/medical, +/obj/item/clothing/under/retro/medical, +/obj/item/clothing/under/retro/science, +/obj/item/clothing/under/retro/science, +/obj/item/clothing/under/retro/security, +/obj/item/clothing/under/retro/security, +/obj/item/clothing/under/color/black{ + icon_state = "hosblueclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "hosblueclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "hosdnavyclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "hosdnavyclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "hostanclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "hostanclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "officerblueclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "officerblueclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "officerdnavyclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "officerdnavyclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "officertanclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "officertanclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "wardenblueclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "wardenblueclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "wardendnavyclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "wardendnavyclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "wardentanclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "wardentanclothes"; + name = "jumpsuit" + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) +"gcl" = ( +/obj/effect/turf_decal/number/number_1{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredaltstrip" + }, +/area/centcom/jail) +"gct" = ( +/obj/mecha/combat/marauder/loaded, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "navyblue" + }, +/area/centcom/specops) +"gcu" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1; + tag = "icon-propulsion (NORTH)" + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/syndicate_elite) +"gcB" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "arrival" + }, +/area/centcom/zone1) +"gcK" = ( /obj/effect/turf_decal/siding/green, /obj/structure/flora/ausbushes/palebush, /obj/structure/flora/junglebush, @@ -13083,6 +12971,14 @@ /obj/item/storage/box/disks_plantgene, /turf/simulated/floor/wood, /area/centcom/evac) +"gcZ" = ( +/obj/structure/closet/secure_closet/brig, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "darkredalt" + }, +/area/centcom/jail) "gdi" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -13096,16 +12992,6 @@ }, /turf/simulated/floor/wood/fancy/light, /area/ninja/outpost) -"gdn" = ( -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/machinery/conveyor{ - id = "CO2"; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "gdt" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22"; @@ -13122,14 +13008,6 @@ icon_state = "seadeep" }, /area/centcom/evac) -"geh" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "N2O" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "gel" = ( /obj/machinery/door/window/brigdoor{ color = "#d70000"; @@ -13156,6 +13034,24 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/control) +"geF" = ( +/obj/machinery/door/airlock/external{ + id_tag = "specops_away"; + name = "Shuttle Hatch"; + req_access = list(109) + }, +/obj/machinery/shower{ + pixel_y = 20 + }, +/obj/structure/fans/tiny, +/obj/machinery/door/poddoor/impassable/preopen{ + id_tag = "ERT_Quarantine"; + name = "ERT Quarantine" + }, +/turf/simulated/floor/indestructible{ + icon_state = "dark" + }, +/area/centcom/specops) "geW" = ( /obj/item/clothing/glasses/meson{ pixel_x = -6; @@ -13192,15 +13088,12 @@ icon_state = "darkyellowaltstrip" }, /area/syndicate_mothership/control) -"gfq" = ( -/obj/structure/bed, -/obj/item/bedsheet/qm, -/obj/effect/mine/sound/bwoink{ - layer = 2.9; - alpha = 0 +"gfm" = ( +/obj/structure/chair/comfy/red{ + dir = 1 }, -/turf/simulated/floor/carpet/arcade, -/area/centcom/zone1) +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "gfs" = ( /obj/effect/turf_decal{ dir = 10; @@ -13283,34 +13176,6 @@ icon_state = "darkyellowfull" }, /area/syndicate_mothership/cargo) -"ggu" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/shuttle/engine/heater, -/turf/simulated/floor/plating/airless, -/area/shuttle/mining) -"ggB" = ( -/obj/effect/decal/warning_stripes/blue, -/obj/machinery/door/airlock/centcom{ - name = "Artillery Control"; - opacity = 1; - req_access = list(114) - }, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "CC_BSA" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "ggC" = ( /obj/effect/turf_decal/siding{ color = "#444444"; @@ -13321,31 +13186,12 @@ icon_state = "sepia" }, /area/ninja/outpost) -"ggJ" = ( -/obj/effect/turf_decal/tile/neutral{ - color = "black"; - icon_state = "tile_full"; - layer = 5 - }, -/obj/effect/turf_decal/tile/neutral{ - color = "black"; - icon_state = "tile_full"; - layer = 5 - }, -/obj/effect/turf_decal/tile/neutral{ - color = "black"; - icon_state = "tile_full"; - layer = 5 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" +"ggH" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8 }, -/area/centcom/specops) -"ggL" = ( -/turf/simulated/floor/carpet, -/area/centcom/zone3) +/turf/simulated/floor/plating/airless, +/area/shuttle/transport) "ggS" = ( /obj/structure/window/reinforced, /obj/item/twohanded/required/kirbyplants, @@ -13364,6 +13210,9 @@ }, /turf/simulated/floor/carpet/black, /area/ninja/outpost) +"ghb" = ( +/turf/simulated/floor/plating/airless, +/area/shuttle/trade/sol) "ghk" = ( /obj/structure/table/wood/fancy/green, /obj/item/reagent_containers/food/snacks/chinese/chowmein{ @@ -13393,36 +13242,17 @@ /obj/machinery/vending/cigarette/free, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/jail) -"giz" = ( -/obj/structure/shuttle/engine/heater{ - dir = 1; - tag = "icon-heater (NORTH)" - }, -/obj/structure/shuttle/engine/propulsion, -/turf/simulated/floor/plating/airless, -/area/shuttle/ussp) "giC" = ( /turf/simulated/wall/shuttle/onlyselfsmooth{ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' }, /area/shuttle/ussp) -"giK" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/shuttle/engine/heater, -/turf/simulated/floor/plating/airless, -/area/shuttle/siberia) -"gjE" = ( -/obj/machinery/door/airlock/shuttle{ - aiControlDisabled = 1; - id_tag = "s_docking_airlock"; - name = "Emergency Droppod"; - req_access = list(109) +"gjn" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 }, -/turf/simulated/floor/shuttle, -/area/shuttle/nt_droppod) +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "gjP" = ( /obj/effect/decal/warning_stripes/white, /obj/machinery/door/airlock{ @@ -13443,12 +13273,26 @@ icon_state = "dark" }, /area/syndicate_mothership/control) +"gkW" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/table/wood, +/obj/item/candle/eternal, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/evac) "glc" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 }, /turf/simulated/floor/carpet/green, /area/ninja/outpost) +"glw" = ( +/obj/structure/table/glass, +/turf/simulated/floor/plasteel{ + icon_state = "darkyellow" + }, +/area/centcom/specops) "glB" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -13458,6 +13302,14 @@ }, /turf/simulated/floor/carpet/black, /area/ninja/outpost) +"glE" = ( +/obj/item/beach_ball, +/obj/effect/mapping_helpers/light, +/turf/simulated/floor/beach/sand{ + icon = 'icons/turf/floors.dmi'; + icon_state = "asteroid" + }, +/area/centcom/evac) "glM" = ( /obj/machinery/light{ dir = 8 @@ -13478,17 +13330,6 @@ }, /turf/simulated/floor/grass, /area/centcom/evac) -"glZ" = ( -/obj/structure/railing{ - layer = 4.3; - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" - }, -/area/centcom/specops) "gmb" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -13537,52 +13378,28 @@ }, /turf/simulated/floor/wood/fancy/light, /area/ninja/outpost) -"gmY" = ( -/obj/item/storage/ashtray/glass{ - pixel_x = -7; - pixel_y = -4 - }, -/obj/item/lighter/zippo/blue{ - pixel_x = -5; - pixel_y = 8 - }, -/obj/item/clothing/mask/cigarette/cigar/cohiba{ - pixel_x = -4; - pixel_y = 9 - }, -/obj/structure/table/glass, -/obj/item/paper/monitorkey, -/obj/item/paper/tcommskey, -/obj/structure/window/reinforced, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"gnk" = ( -/obj/structure/safe{ - known_by = list("NNC") - }, -/obj/item/reagent_containers/food/drinks/bottle/goldschlager, -/obj/item/coin/gold, -/obj/item/toy/plushie/corgi, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, -/obj/machinery/light{ - dir = 8 - }, -/obj/item/stack/spacecash/c1000000{ - name = "1000000 Credit" +"gmU" = ( +/obj/machinery/door/airlock/external{ + id_tag = "s_docking_airlock"; + name = "Shuttle Airlock"; + req_access = list(150) }, -/obj/item/stack/spacecash/c1000000{ - name = "1000000 Credit" +/obj/structure/fans/tiny, +/obj/docking_port/mobile{ + alone_shuttle = 1; + dir = 8; + dwidth = 2; + height = 5; + id = "ruins_transport_shuttle"; + name = "USSP Cargo Shuttle"; + port_direction = 4; + roundstart_move = "ussp_dock"; + width = 8 }, -/obj/item/stack/spacecash/c1000000{ - name = "1000000 Credit" +/turf/simulated/floor/shuttle{ + icon_state = "floor4" }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) +/area/shuttle/ussp) "gnl" = ( /obj/effect/turf_decal/stripes/line{ do_not_delete_me = 1 @@ -13605,70 +13422,51 @@ /obj/structure/weightmachine/weightlifter, /turf/simulated/floor/grass, /area/centcom/evac) +"gnR" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkredalt" + }, +/area/centcom/zone2) "goa" = ( /obj/machinery/conveyor{ id = "SFBQMLoad" }, /obj/machinery/conveyor{ - id = "SFBQMLoad"; dir = 8; + id = "SFBQMLoad"; layer = 2.494 }, /obj/machinery/conveyor{ - id = "SFBQMLoad"; dir = 4; + id = "SFBQMLoad"; layer = 2.494 }, /turf/simulated/floor/plasteel{ icon_state = "darkfull" }, /area/syndicate_mothership/cargo) -"gog" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - id_tag = "CC_ERT1" - }, -/obj/machinery/door_control/secure{ - id = "CC_ERT1"; - pixel_y = -25; - req_access = list(114) +"goz" = ( +/obj/effect/baseturf_helper/asteroid/snow{ + baseturf = /turf/simulated/floor/indestructible/snow; + name = "snow baseturf editor" }, -/obj/machinery/door/firedoor, -/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/indestructible/asteroid, +/area/ninja/outside) +"goI" = ( /turf/simulated/floor/plasteel{ - icon_state = "navybluealt" + dir = 5; + icon_state = "navyblue" }, /area/centcom/specops) -"gom" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor{ - req_access = list(114) +"gpm" = ( +/obj/machinery/atmospherics/unary/cryo_cell/upgraded{ + layer = 3.5 }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/zone3) -"goy" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 - }, -/turf/simulated/floor/glass/reinforced, /area/centcom/specops) -"goz" = ( -/obj/effect/baseturf_helper/asteroid/snow{ - baseturf = /turf/simulated/floor/indestructible/snow; - name = "snow baseturf editor" - }, -/turf/simulated/floor/indestructible/asteroid, -/area/ninja/outside) "gpp" = ( /obj/structure/railing{ dir = 1 @@ -13691,18 +13489,14 @@ /obj/item/reagent_containers/food/snacks/chimichanga, /turf/simulated/floor/wood/fancy/light, /area/ninja/outpost) -"gpY" = ( -/obj/structure/shuttle/engine/heater, -/turf/simulated/floor/plating/airless, -/area/centcom/specops) -"gqn" = ( -/obj/item/radio/intercom/specops{ - pixel_x = 32 +"gqg" = ( +/obj/structure/window/reinforced{ + layer = 2.9 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "darkfull" }, -/area/centcom/bridge) +/area/centcom/jail) "gqv" = ( /obj/machinery/cryopod{ dir = 8 @@ -13712,22 +13506,6 @@ icon_state = "navyblue" }, /area/centcom/specops) -"gqU" = ( -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkbluealt" - }, -/area/centcom/zone2) -"gri" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 6 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) "grj" = ( /obj/machinery/light{ dir = 1 @@ -13743,17 +13521,21 @@ icon_state = "darkjail" }, /area/syndicate_mothership/jail) -"grH" = ( -/obj/item/radio/intercom/specops{ - pixel_x = 28; - pixel_y = -42 +"grD" = ( +/obj/machinery/vending/wallmed{ + pixel_y = -32 }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 9 +/turf/simulated/floor/indestructible{ + dir = 6; + icon_state = "darkgreynavyblue" }, -/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) +"grF" = ( +/obj/structure/filingcabinet/chestdrawer{ + pixel_y = 6 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "grJ" = ( /obj/structure/rack/holorack, /obj/item/autoimplanter, @@ -13768,15 +13550,32 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/control) -"gsK" = ( -/turf/simulated/floor/indestructible{ - dir = 9; - icon_state = "darkgreynavyblue" +"gsj" = ( +/obj/structure/table/glass, +/obj/item/paper_bin/nanotrasen, +/obj/item/pen/multi/fountain, +/obj/item/stamp/centcom{ + pixel_x = -5; + pixel_y = -7 }, +/obj/item/radio/intercom/specops{ + pixel_x = -32 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) -"gtm" = ( -/obj/machinery/photocopier, -/turf/simulated/floor/wood/fancy/cherry, +"gsJ" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/obj/effect/turf_decal/siding/blue/corner{ + dir = 4 + }, +/turf/simulated/floor/glass, /area/centcom/bridge) "gtw" = ( /obj/effect/turf_decal/delivery, @@ -13789,6 +13588,12 @@ "gtx" = ( /turf/simulated/floor/shuttle/transparent_floor, /area/shuttle/trade/sol) +"gtH" = ( +/turf/simulated/floor/indestructible{ + dir = 4; + icon_state = "darkpurple" + }, +/area/centcom/specops) "gtO" = ( /obj/effect/turf_decal/siding/wood, /turf/simulated/floor/carpet/black, @@ -13810,28 +13615,6 @@ icon_state = "darkyellowcornersalt" }, /area/centcom/zone3) -"gup" = ( -/obj/item/grenade/empgrenade, -/obj/item/grenade/empgrenade, -/obj/item/grenade/empgrenade, -/obj/item/grenade/empgrenade, -/obj/item/grenade/empgrenade, -/obj/item/grenade/empgrenade, -/obj/item/grenade/empgrenade, -/obj/item/grenade/empgrenade, -/obj/item/grenade/empgrenade, -/obj/item/grenade/empgrenade, -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - damage_deflection = 2000; - layer = 2.9; - name = "EMP grenade"; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "guv" = ( /obj/machinery/vending/dinnerware{ req_access = list(102) @@ -13841,26 +13624,6 @@ tag = "icon-redfull (NORTHWEST)" }, /area/centcom/zone1) -"guE" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/turf/simulated/floor/carpet, -/area/centcom/specops) -"guW" = ( -/obj/effect/step_trigger/teleporter{ - teleport_x = 137; - teleport_y = 65; - teleport_z = 1; - icon = 'icons/mob/screen_gen.dmi'; - icon_state = "x2" - }, -/turf/simulated/floor/plasteel{ - color = "gray"; - dir = 4; - icon_state = "rampbottom" - }, -/area/centcom/specops) "gvs" = ( /obj/effect/turf_decal{ icon_state = "grass_edge_medium_corner" @@ -13881,15 +13644,6 @@ icon_state = "navybluealt" }, /area/centcom/specops) -"gvA" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/chair/office/dark{ - dir = 1 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "gvL" = ( /obj/structure/railing, /turf/simulated/floor/plasteel{ @@ -13930,20 +13684,6 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"gwz" = ( -/obj/structure/window/reinforced, -/obj/effect/turf_decal/siding/yellow{ - dir = 8 - }, -/turf/simulated/floor/carpet, -/area/centcom/evac) -"gwG" = ( -/obj/structure/table/reinforced, -/obj/machinery/kitchen_machine/microwave/upgraded{ - pixel_y = 6 - }, -/turf/simulated/floor/carpet/black, -/area/shuttle/administration) "gwP" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -13959,33 +13699,18 @@ }, /turf/simulated/floor/wood/fancy/light, /area/ninja/outpost) -"gxB" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/chair/comfy/red{ - dir = 4 +"gxu" = ( +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "navyblue" }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) +/area/centcom/supplypod/loading/ert) "gyg" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 }, /turf/simulated/floor/wood/fancy/light, /area/ninja/outpost) -"gyi" = ( -/obj/structure/closet/secure_closet/brig, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/structure/window/reinforced, -/turf/simulated/floor/plasteel{ - icon_state = "darkredalt" - }, -/area/centcom/jail) -"gyE" = ( -/obj/structure/chair/comfy/shuttle, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_4) "gyV" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -13999,10 +13724,6 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) -"gyY" = ( -/obj/machinery/vending/boozeomat, -/turf/simulated/floor/carpet/black, -/area/shuttle/administration) "gza" = ( /obj/machinery/light/small{ dir = 4; @@ -14052,6 +13773,20 @@ icon_state = "navybluealt" }, /area/syndicate_mothership/control) +"gzp" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/turf/simulated/floor/glass, +/area/centcom/zone3) "gzB" = ( /obj/structure/window/reinforced{ color = "red"; @@ -14061,16 +13796,12 @@ /obj/structure/table/wood/fancy/black, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) -"gzJ" = ( -/obj/mecha/combat/durand/loaded{ - color = "#CCCCFF"; - desc = "A heavyweight exosuit, painted in a gray scheme. This model appears to have some modifications for ERT."; - name = "Nanotrasen Special Durand Mk. II"; - operation_req_access = list(109) +"gzR" = ( +/obj/structure/table/glass, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" }, -/obj/item/mecha_parts/mecha_equipment/repair_droid, -/obj/effect/decal/warning_stripes/yellow, -/turf/simulated/floor/engine, /area/centcom/specops) "gzT" = ( /obj/effect/turf_decal/siding/green{ @@ -14085,6 +13816,19 @@ icon_state = "darkyellowaltstrip" }, /area/syndicate_mothership/control) +"gAp" = ( +/obj/structure/closet/cardboard{ + icon_closed = "cardboard_librarian"; + icon_opened = "cardboard_librarian_open"; + icon_state = "cardboard_librarian" + }, +/obj/item/paper/central_command/archive/memes{ + info = "
"; + name = "Супъективное мнение" + }, +/obj/item/book/random/triple, +/turf/simulated/floor/plating, +/area/centcom/zone2) "gAB" = ( /obj/structure/flora/junglebush, /obj/effect/turf_decal/siding/green{ @@ -14092,52 +13836,34 @@ }, /turf/simulated/floor/indestructible/grass, /area/ninja/outside) -"gAL" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/table, -/obj/machinery/computer/library/public{ - pixel_y = 4; - pixel_x = 1 - }, -/obj/machinery/ai_status_display{ - pixel_y = 32 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"gAN" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 1; - tag = "icon-propulsion (NORTH)" - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/syndicate_elite) -"gAR" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/turf_decal/box/white/corners{ - dir = 8 - }, -/obj/structure/weightmachine/stacklifter, +"gAV" = ( +/mob/living/carbon/human/lesser/wolpin, /turf/simulated/floor/plasteel{ - icon_state = "darkfull" + dir = 1; + icon_state = "tatami"; + name = "Tatami" }, -/area/centcom/jail) +/area/ninja/outpost) "gBo" = ( /obj/effect/turf_decal/stripes/gold{ dir = 6 }, /turf/simulated/floor/carpet/arcade, /area/centcom/bridge) -"gBL" = ( +"gBS" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkredalt" + }, +/area/centcom/zone2) +"gCw" = ( +/obj/structure/chair{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 8; - icon_state = "darkred" + icon_state = "vault"; + tag = "icon-vault (WEST)" }, /area/centcom/specops) "gCy" = ( @@ -14167,6 +13893,20 @@ icon_state = "darkfull" }, /area/syndicate_mothership/jail) +"gDh" = ( +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/three) +"gDk" = ( +/obj/machinery/mech_bay_recharge_port{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "gDm" = ( /obj/machinery/light{ dir = 1 @@ -14175,6 +13915,10 @@ icon_state = "darkgrey" }, /area/syndicate_mothership) +"gDR" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/wall/indestructible/reinforced, +/area/centcom/zone3) "gDV" = ( /obj/structure/sign/poster/contraband/random{ pixel_y = -30 @@ -14186,25 +13930,25 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) -"gDX" = ( -/obj/structure/railing{ - dir = 1 +"gDY" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" }, -/turf/simulated/wall/indestructible/reinforced, -/area/centcom/specops) +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/mech_bay_recharge_port/upgraded, +/turf/simulated/floor/shuttle{ + icon_state = "floor4" + }, +/area/shuttle/gamma) "gEb" = ( /obj/machinery/computer, /turf/simulated/floor/plasteel{ icon_state = "Dark" }, /area/shuttle/funeral) -"gEv" = ( -/obj/structure/filingcabinet/security, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkredalt" - }, -/area/centcom/jail) "gEA" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/wood/corner{ @@ -14213,33 +13957,6 @@ /obj/effect/turf_decal/siding/wood/corner, /turf/simulated/floor/carpet/green, /area/ninja/outpost) -"gET" = ( -/obj/machinery/light, -/obj/effect/turf_decal/siding/brown/corner{ - dir = 8 - }, -/turf/simulated/floor/carpet, -/area/centcom/zone3) -"gFg" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/vending/coffee/free, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"gFo" = ( -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "navybluealt" - }, -/area/centcom/specops) "gFq" = ( /obj/effect/turf_decal/siding{ color = "#444444" @@ -14251,34 +13968,30 @@ }, /turf/simulated/floor/plasteel, /area/ninja/outpost) -"gFs" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 9 - }, -/turf/simulated/floor/glass/reinforced, -/area/centcom/evac) "gFx" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/supply) -"gFQ" = ( -/obj/effect/landmark/marauder_exit, -/obj/structure/fans/tiny, -/obj/effect/turf_decal/tile/neutral{ - alpha = 220; - color = "black"; - icon_state = "tile_full"; - layer = 9; - opacity = 1 +"gFC" = ( +/obj/structure/window/reinforced{ + dir = 4 }, -/turf/simulated/floor/plating, -/area/centcom/supply) +/obj/effect/turf_decal/siding/white, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) +"gFG" = ( +/obj/machinery/vending/security/ert{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "navybluealt" + }, +/area/centcom/specops) "gFS" = ( /obj/machinery/door/airlock/centcom{ name = "Outpost 1"; @@ -14296,6 +14009,14 @@ }, /turf/simulated/floor/carpet, /area/centcom/evac) +"gFZ" = ( +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkyellowcornersalt" + }, +/area/centcom/supply) "gGp" = ( /obj/structure/closet/secure_closet/medical2, /obj/machinery/light, @@ -14303,21 +14024,6 @@ icon_state = "white" }, /area/centcom/zone1) -"gGz" = ( -/obj/structure/table/wood, -/obj/item/gavelhammer{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/gavelblock{ - pixel_x = -5; - pixel_y = -3 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/carpet, -/area/centcom/zone3) "gGM" = ( /obj/effect/turf_decal{ dir = 10; @@ -14325,65 +14031,9 @@ }, /turf/simulated/floor/indestructible/beach/sand, /area/syndicate_mothership/outside) -"gGR" = ( -/obj/structure/chair/sofa/corp/left, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone3) "gGY" = ( /turf/simulated/floor/indestructible/beach/water/deep/dense, /area/ninja/outside) -"gHi" = ( -/obj/structure/rack/holorack, -/obj/item/clothing/shoes/cowboy/white{ - name = "white boots" - }, -/obj/item/clothing/shoes/cowboy/white{ - name = "white boots" - }, -/obj/item/clothing/shoes/fluff/noble_boot, -/obj/item/clothing/shoes/fluff/noble_boot, -/obj/item/clothing/shoes/jackboots, -/obj/item/clothing/shoes/jackboots, -/obj/item/clothing/shoes/jackboots/jacksandals, -/obj/item/clothing/shoes/jackboots/jacksandals, -/obj/item/clothing/shoes/laceup, -/obj/item/clothing/shoes/laceup, -/obj/item/clothing/shoes/leather, -/obj/item/clothing/shoes/leather, -/obj/item/clothing/shoes/white, -/obj/item/clothing/shoes/white, -/obj/item/clothing/shoes/white{ - icon_state = "secshoes"; - name = "shoes" - }, -/obj/item/clothing/shoes/white{ - icon_state = "secshoes"; - name = "shoes" - }, -/obj/item/clothing/shoes/centcom{ - desc = null; - name = "Dress shoes" - }, -/obj/item/clothing/shoes/centcom{ - desc = null; - name = "Dress shoes" - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"gHl" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - dir = 8; - id_tag = "CC_supply_internal"; - layer = 5; - locked = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkyellowalt" - }, -/area/centcom/supply) "gHn" = ( /obj/structure/closet/secure_closet/clown{ req_access = null @@ -14418,19 +14068,12 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"gIc" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/machinery/newscaster/security_unit{ - pixel_y = -32 - }, +"gIp" = ( /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 4; + icon_state = "darkyellow" }, -/area/centcom/bridge) -"gIq" = ( -/obj/machinery/chem_heater, -/turf/simulated/floor/engine, -/area/centcom/specops) +/area/centcom/supplypod/loading/three) "gIz" = ( /obj/effect/decal/cleanable/confetti, /turf/simulated/floor/plasteel{ @@ -14449,6 +14092,20 @@ icon_state = "grimy" }, /area/syndicate_mothership) +"gJa" = ( +/obj/machinery/door/airlock/public/glass, +/obj/effect/turf_decal/stripes/black{ + do_not_delete_me = 1 + }, +/obj/effect/turf_decal/stripes/black{ + dir = 1; + do_not_delete_me = 1 + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "podfloor_dark" + }, +/area/shuttle/administration) "gJg" = ( /obj/item/twohanded/required/kirbyplants, /obj/machinery/light/small, @@ -14473,20 +14130,19 @@ }, /turf/simulated/floor/carpet/royalblack, /area/shuttle/trade/sol) -"gKi" = ( -/turf/simulated/floor/carpet/blue, -/area/shuttle/trade/sol) -"gKt" = ( -/obj/machinery/vending/mech/ntc/exousuit{ - req_access = list(114) - }, -/obj/machinery/light{ +"gJq" = ( +/obj/structure/window/reinforced{ dir = 1 }, +/obj/effect/turf_decal/box/white/corners, +/obj/structure/weightmachine/stacklifter, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "darkfull" }, -/area/centcom/supply) +/area/centcom/jail) +"gKi" = ( +/turf/simulated/floor/carpet/blue, +/area/shuttle/trade/sol) "gKX" = ( /turf/simulated/floor/plasteel{ icon_state = "arrival" @@ -14530,9 +14186,6 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"gLu" = ( -/turf/simulated/floor/plasteel/freezer, -/area/centcom/specops) "gLw" = ( /turf/simulated/wall/shuttle/nosmooth{ dir = 4; @@ -14540,53 +14193,6 @@ icon_state = "ninja_walls_direction" }, /area/shuttle/ninja) -"gLC" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 10 - }, -/turf/simulated/floor/glass/reinforced, -/area/centcom/evac) -"gLD" = ( -/obj/machinery/vending/security, -/turf/simulated/floor/indestructible{ - dir = 1; - icon_state = "darkpurple" - }, -/area/centcom/specops) -"gLF" = ( -/obj/structure/closet/hydrant{ - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkyellowalt" - }, -/area/centcom/zone3) -"gLN" = ( -/obj/structure/chair/comfy/beige{ - dir = 4; - layer = 5; - pixel_y = -2 - }, -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone3) -"gLW" = ( -/obj/machinery/door_control/secure{ - color = "#ffdd99"; - id = "ERT_armory_lvl4"; - name = "ERT Armory Level 4"; - pixel_y = -32; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkyellow" - }, -/area/centcom/specops) "gLX" = ( /obj/effect/turf_decal/weather/snow/corner{ dir = 10 @@ -14602,6 +14208,24 @@ icon_state = "darkblue" }, /area/centcom/zone1) +"gMj" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/indestructible{ + dir = 6; + icon_state = "darkgreynavyblue" + }, +/area/centcom/specops) +"gMv" = ( +/obj/structure/table/glass, +/obj/item/paper, +/obj/item/folder/blue{ + pixel_x = 5; + pixel_y = -5 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "gMB" = ( /obj/structure/window/reinforced{ dir = 8 @@ -14609,12 +14233,6 @@ /mob/living/simple_animal/cow, /turf/simulated/floor/grass, /area/centcom/evac) -"gMD" = ( -/obj/structure/chair/comfy/brown{ - color = "#3300FF" - }, -/turf/simulated/floor/carpet, -/area/centcom/zone3) "gMG" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -14622,36 +14240,12 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) -"gMP" = ( -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/carpet, -/area/centcom/jail) -"gMV" = ( -/obj/structure/closet/acloset{ - name = "Undercover officer's closet"; - desc = "It's a basic storage unit." - }, -/obj/item/flashlight, -/obj/item/encryptionkey/centcom, -/obj/item/radio/headset, -/obj/item/organ/internal/cyberimp/arm/combat/centcom, -/obj/item/autoimplanter/old, -/obj/item/clothing/gloves/color/yellow/power, -/obj/item/storage/belt/utility/full/multitool, -/obj/item/clothing/shoes/chameleon/noslip, -/obj/item/clothing/under/color/black, -/obj/item/implanter/dust, -/obj/item/storage/box/engineer{ - name = "Survival kit" - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) -"gNe" = ( -/obj/structure/chair/comfy/red{ - color = "#FFFFFF"; - dir = 8 +"gMO" = ( +/obj/effect/turf_decal/caution/stand_clear, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellowaltstrip" }, -/turf/simulated/floor/carpet/black, /area/centcom/zone3) "gNB" = ( /obj/effect/mapping_helpers/light{ @@ -14660,49 +14254,43 @@ /obj/structure/flora/grass/both, /turf/simulated/floor/indestructible/snow, /area/ninja/outside) -"gNC" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ +"gNS" = ( +/obj/structure/rack/holorack, +/obj/item/circuitboard/aiupload, +/obj/item/circuitboard/circuit_imprinter, +/obj/item/circuitboard/communications, +/obj/item/circuitboard/destructive_analyzer, +/obj/item/circuitboard/ore_redemption, +/obj/item/circuitboard/mining_shuttle, +/obj/item/circuitboard/mining_shuttle, +/obj/item/circuitboard/mining_shuttle, +/obj/item/circuitboard/protolathe, +/obj/structure/window/reinforced{ dir = 8; - icon_state = "vault"; - tag = "icon-vault (WEST)" - }, -/area/centcom/specops) -"gNX" = ( -/obj/structure/shuttle/engine/platform{ - dir = 1; layer = 2.9 }, -/obj/structure/window/plasmareinforced{ - color = "#00f700" - }, -/obj/structure/shuttle/engine/heater{ - dir = 1; - icon_state = "heater3x3_side_inv"; - tag = "icon-heater (NORTH)" - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/ninja) -"gOb" = ( -/obj/structure/table/glass, -/obj/item/clipboard, -/obj/item/lighter/zippo/blue{ - pixel_x = -5; - pixel_y = 8 - }, -/obj/item/clothing/mask/cigarette/cigar/cohiba{ - pixel_x = -4; - pixel_y = 9 +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/turf/simulated/floor/carpet/cyan, -/area/centcom/zone2) +/area/centcom/supply) "gOi" = ( /turf/simulated/floor/plasteel{ icon_state = "arrival" }, /area/centcom/zone1) +"gOl" = ( +/obj/item/radio/intercom/specops{ + pixel_x = -32; + pixel_y = 32 + }, +/obj/item/paper_bin/nanotrasen{ + pixel_x = 3; + pixel_y = 12 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/centcom/zone3) "gOv" = ( /obj/structure/window/reinforced{ color = "red"; @@ -14722,12 +14310,6 @@ }, /turf/simulated/floor/carpet/royalblack, /area/syndicate_mothership/control) -"gOH" = ( -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkyellowcornersalt" - }, -/area/centcom/zone3) "gOI" = ( /obj/structure/table, /obj/item/hand_labeler, @@ -14759,15 +14341,6 @@ icon_state = "dark" }, /area/centcom/jail) -"gPi" = ( -/obj/effect/turf_decal/tile/neutral{ - alpha = 180; - color = "black"; - icon_state = "tile_full"; - layer = 9 - }, -/turf/simulated/floor/plating, -/area/centcom/supply) "gPk" = ( /obj/structure/rack, /obj/item/plant_analyzer, @@ -14790,11 +14363,27 @@ icon_state = "darkyellowaltstrip" }, /area/syndicate_mothership/control) -"gQr" = ( -/obj/structure/flora/ausbushes/lavendergrass, -/turf/simulated/floor/indestructible/grass, -/area/ninja/outside) -"gQs" = ( +"gPP" = ( +/obj/structure/window/reinforced{ + layer = 2.9 + }, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/effect/turf_decal/siding/white, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) +"gQl" = ( +/obj/structure/bookcase/random, +/turf/simulated/floor/carpet, +/area/centcom/jail) +"gQr" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/turf/simulated/floor/indestructible/grass, +/area/ninja/outside) +"gQs" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 }, @@ -14813,12 +14402,30 @@ /obj/structure/flora/tree/jungle/small, /turf/simulated/floor/indestructible/grass, /area/ninja/outside) -"gQT" = ( -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkyellow" +"gRj" = ( +/obj/structure/closet/secure_closet/guncabinet{ + layer = 2.9; + name = "L.W.A.P. Sniper Rifle" }, -/area/centcom/specops) +/obj/item/gun/energy/sniperrifle, +/obj/item/gun/energy/sniperrifle, +/obj/machinery/light/spot{ + dir = 4; + tag = "icon-tube1 (EAST)" + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor4" + }, +/area/shuttle/gamma) "gRr" = ( /turf/simulated/wall/shuttle/onlyselfsmooth, /area/shuttle/spacebar) @@ -14828,23 +14435,6 @@ icon_state = "darkredalt" }, /area/centcom/jail) -"gSb" = ( -/obj/machinery/door/poddoor{ - id_tag = "ASSAULT3"; - name = "Launch Bay #3" - }, -/obj/effect/turf_decal/tile/neutral{ - alpha = 75; - color = "black"; - icon_state = "tile_full"; - layer = 9 - }, -/turf/simulated/floor/plating, -/area/centcom/supply) -"gSl" = ( -/obj/structure/bookcase/random, -/turf/simulated/floor/carpet, -/area/centcom/zone1) "gSx" = ( /obj/machinery/door/airlock/hatch/syndicate{ name = "Syndicate Base" @@ -14854,17 +14444,6 @@ icon_state = "darkfull" }, /area/syndicate_mothership) -"gSz" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 4; - name = "ERT shuttle"; - pixel_x = -6 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "navybluealtstrip" - }, -/area/centcom/specops) "gSC" = ( /obj/machinery/door/poddoor/impassable{ density = 0; @@ -14885,23 +14464,6 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) -"gTa" = ( -/obj/effect/decal/warning_stripes/north, -/obj/effect/decal/warning_stripes/south, -/obj/effect/turf_decal/caution/stand_clear{ - dir = 1; - do_not_delete_me = 1 - }, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 1; - id_tag = "ERT_armory_lvl2"; - name = "Armory level 2"; - layer = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" - }, -/area/centcom/specops) "gTs" = ( /obj/machinery/atm{ pixel_y = -32 @@ -14926,24 +14488,6 @@ }, /turf/simulated/floor/indestructible/grass, /area/ninja/outside) -"gTR" = ( -/obj/machinery/door/airlock/centcom{ - name = "Archive"; - opacity = 1; - req_access = list(113) - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone2) -"gUc" = ( -/obj/structure/chair/comfy/lime, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2 - }, -/turf/simulated/floor/wood, -/area/centcom/zone3) "gUj" = ( /obj/structure/railing/corner{ dir = 4 @@ -14970,14 +14514,6 @@ /obj/machinery/vending/chinese/free, /turf/simulated/floor/carpet/black, /area/ninja/outpost) -"gUA" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 - }, -/obj/item/flag/nt, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "gVk" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -14992,6 +14528,13 @@ icon_state = "darkfull" }, /area/syndicate_mothership) +"gVO" = ( +/obj/structure/chair/comfy/red{ + color = "#FFFFFF"; + dir = 8 + }, +/turf/simulated/floor/carpet/cyan, +/area/centcom/zone2) "gVQ" = ( /obj/item/pizzabox, /obj/item/pizzabox, @@ -15008,6 +14551,16 @@ name = "floor" }, /area/syndicate_mothership) +"gVU" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/gold{ + dir = 6; + do_not_delete_me = 1 + }, +/turf/simulated/floor/carpet/royalblack, +/area/shuttle/administration) "gWk" = ( /obj/structure/rack, /obj/item/card/emag, @@ -15017,20 +14570,6 @@ }, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) -"gWl" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_4) -"gWS" = ( -/turf/simulated/floor/shuttle{ - icon_state = "floor4" - }, -/area/shuttle/gamma) "gWZ" = ( /obj/structure/flora/grass/jungle, /turf/simulated/wall/indestructible/rock, @@ -15059,6 +14598,34 @@ /obj/effect/turf_decal/siding/wood/corner, /turf/simulated/floor/wood/fancy/light, /area/ninja/outpost) +"gXI" = ( +/obj/mecha/combat/marauder/loaded, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "navyblue" + }, +/area/centcom/specops) +"gXQ" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) +"gYf" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/two) "gYq" = ( /obj/effect/turf_decal/stripes/asteroid/corner{ dir = 4 @@ -15068,16 +14635,33 @@ icon_state = "asteroid" }, /area/centcom/evac) -"gYD" = ( -/turf/simulated/floor/plasteel{ - icon_state = "darkgreencorners" - }, -/area/centcom/specops) +"gYQ" = ( +/obj/item/book/manual/sop_command, +/obj/item/book/manual/sop_engineering, +/obj/item/book/manual/sop_general, +/obj/item/book/manual/sop_legal, +/obj/item/book/manual/sop_medical, +/obj/item/book/manual/sop_science, +/obj/item/book/manual/sop_security, +/obj/item/book/manual/sop_service, +/obj/item/book/manual/sop_supply, +/obj/item/book/manual/security_space_law/black, +/obj/structure/bookcase/random, +/turf/simulated/floor/carpet, +/area/centcom/jail) "gYZ" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/vending/snack/free, /turf/simulated/floor/carpet/black, /area/ninja/outpost) +"gZv" = ( +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "navybluealt" + }, +/area/centcom/specops) "gZE" = ( /obj/item/flag/syndi, /obj/effect/turf_decal/siding/wideplating/corner{ @@ -15095,6 +14679,12 @@ icon_state = "darkgrey" }, /area/syndicate_mothership/elite_squad) +"hat" = ( +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkredaltstrip" + }, +/area/centcom/zone2) "haG" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -15135,20 +14725,33 @@ /obj/machinery/vending/cola/free, /turf/simulated/floor/carpet/black, /area/ninja/outpost) -"hby" = ( -/obj/structure/bed, -/obj/item/bedsheet/wiz, -/obj/effect/mine/sound/bwoink{ - layer = 2.9; - alpha = 0 - }, -/turf/simulated/floor/carpet, -/area/centcom/zone1) "hbV" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/railing, /turf/simulated/floor/carpet/blue, /area/ninja/outpost) +"hcs" = ( +/obj/item/stack/sheet/metal, +/obj/structure/table, +/obj/item/stack/sheet/glass{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/stack/sheet/metal, +/obj/item/stack/sheet/metal, +/obj/item/stack/sheet/glass{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/stack/sheet/glass{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "dark" + }, +/area/shuttle/administration) "hcx" = ( /obj/machinery/chem_master, /turf/simulated/floor/plasteel{ @@ -15156,6 +14759,19 @@ icon_state = "navybluealt" }, /area/syndicate_mothership/control) +"hcJ" = ( +/obj/structure/shuttle/engine/heater{ + dir = 4; + icon_state = "heater2x2_side"; + tag = "icon-heater (NORTH)" + }, +/obj/structure/window/reinforced{ + color = "yellow"; + dir = 8; + layer = 2.9 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/trade/sol) "hdj" = ( /obj/structure/chair, /obj/effect/turf_decal/siding/wideplating{ @@ -15199,19 +14815,6 @@ icon_state = "rampbottom" }, /area/ninja/outpost) -"hdS" = ( -/obj/structure/cable{ - icon_state = "8-9" - }, -/obj/machinery/power/terminal{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-9" - }, -/obj/machinery/atmospherics/pipe/cap, -/turf/simulated/floor/plating, -/area/centcom/specops) "hdT" = ( /obj/structure/table, /obj/item/radio/electropack{ @@ -15232,6 +14835,26 @@ icon_state = "darkfull" }, /area/syndicate_mothership/jail) +"hem" = ( +/obj/structure/table/glass, +/obj/effect/spawner/lootdrop{ + loot = list(/obj/item/reagent_containers/food/snacks/baguette=10,/obj/item/reagent_containers/food/snacks/applepie=10,/obj/item/reagent_containers/food/snacks/applepie=10,/obj/item/reagent_containers/food/snacks/soup/bloodsoup=10,/obj/item/reagent_containers/food/snacks/boiledrice=10,/obj/item/reagent_containers/food/snacks/carrotfries=10,/obj/item/reagent_containers/food/drinks/cans/cola=10,""=70); + name = "Food CC Spawner #1" + }, +/obj/structure/window/reinforced/survival_pod{ + density = 0; + dir = 6; + pixel_x = 1; + pixel_y = -1 + }, +/obj/structure/window/reinforced{ + armor = list("melee"=100,"bullet"=100,"laser"=0,"energy"=0,"bomb"=25,"bio"=100,"rad"=100,"fire"=80,"acid"=100); + layer = 3.1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "heo" = ( /obj/structure/railing{ dir = 4 @@ -15247,22 +14870,18 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/jail) -"hfq" = ( -/obj/structure/closet/secure_closet/cabinet/bar, -/obj/item/storage/box/beakers/bluespace, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/turf/simulated/floor/wood, -/area/centcom/zone1) +"hfa" = ( +/obj/structure/shuttle/engine/large{ + dir = 4 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/trade/sol) +"hfl" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkyellow" + }, +/area/centcom/specops) "hfX" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 8 @@ -15278,42 +14897,6 @@ "hgc" = ( /turf/simulated/wall/indestructible/fakeglass, /area/centcom/bridge) -"hgx" = ( -/obj/machinery/door_control{ - color = "#ffcccc"; - id = "Zone3_bathroom2"; - name = "Bathroom lock"; - normaldoorcontrol = 1; - pixel_x = -4; - pixel_y = 33; - req_access = list(114); - specialfunctions = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/centcom/zone3) -"hgB" = ( -/obj/machinery/door/airlock/shuttle{ - id_tag = "s_docking_airlock"; - name = "Escape Pod Hatch" - }, -/obj/docking_port/mobile/pod{ - id = "pod3"; - name = "escape pod 3"; - roundstart_move = "pod3_home" - }, -/obj/docking_port/stationary/transit{ - dwidth = 2; - height = 6; - id = "pod3_transit"; - name = "pod 3 in transit"; - pixel_y = -32; - turf_type = /turf/space/transit/north; - width = 5 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_3) "hgS" = ( /obj/structure/spacepoddoor/invincible, /turf/simulated/floor/plasteel{ @@ -15321,6 +14904,19 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) +"hhM" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/shuttle/engine/heater, +/turf/simulated/floor/plating/airless, +/area/shuttle/mining) "hhY" = ( /obj/machinery/door/airlock/syndicate/cargo{ name = "Cargo Receive"; @@ -15368,16 +14964,6 @@ }, /turf/simulated/floor/plasteel, /area/ninja/outpost) -"hjf" = ( -/obj/structure/table/wood/fancy/black, -/obj/item/storage/box/ids{ - pixel_y = 10 - }, -/obj/item/melee/baton/ntcane, -/obj/item/storage/briefcase, -/obj/item/lighter/zippo/blue, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "hjp" = ( /obj/structure/ore_box, /obj/machinery/light/small{ @@ -15385,6 +14971,13 @@ }, /turf/simulated/floor/shuttle, /area/shuttle/mining) +"hjL" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/centcom/specops) "hjQ" = ( /obj/machinery/access_button{ command = "cycle_exterior"; @@ -15407,23 +15000,6 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"hke" = ( -/obj/machinery/optable, -/obj/machinery/defibrillator_mount/loaded{ - pixel_x = -30 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/shuttle{ - icon_state = "floor3" - }, -/area/shuttle/administration) -"hkg" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/machinery/light, -/turf/simulated/floor/wood, -/area/centcom/zone3) "hku" = ( /obj/effect/decal/cleanable/ash, /obj/effect/decal/cleanable/shreds, @@ -15432,45 +15008,6 @@ icon_state = "neutral" }, /area/centcom/evac) -"hkH" = ( -/obj/machinery/recharger/wallcharger{ - pixel_x = -24; - pixel_y = 8 - }, -/obj/machinery/recharger/wallcharger{ - pixel_x = -24; - pixel_y = -8 - }, -/obj/machinery/recharger/wallcharger{ - pixel_x = -24 - }, -/obj/structure/table/reinforced, -/obj/item/storage/briefcase/inflatable, -/obj/item/storage/briefcase/inflatable, -/obj/item/storage/briefcase/inflatable, -/obj/item/storage/briefcase/inflatable, -/obj/item/holosign_creator/atmos, -/obj/item/holosign_creator/atmos, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "navybluealt" - }, -/area/centcom/specops) -"hlh" = ( -/turf/simulated/floor/indestructible{ - dir = 10; - icon_state = "darkgreynavyblue" - }, -/area/centcom/specops) -"hlk" = ( -/obj/structure/railing, -/obj/structure/chair/comfy/beige{ - dir = 4; - layer = 4; - pixel_y = -2 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) "hls" = ( /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/jail) @@ -15498,10 +15035,6 @@ /obj/item/storage/box/lights/mixed, /turf/simulated/floor/plasteel, /area/ninja/outpost) -"hlM" = ( -/obj/item/flag/nt, -/turf/simulated/floor/carpet/red, -/area/centcom/bridge) "hlQ" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -15512,6 +15045,12 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) +"hmB" = ( +/obj/structure/chair/sofa/corp/left, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone3) "hmH" = ( /obj/structure/flora/ausbushes/ywflowers, /turf/simulated/floor/indestructible/snow, @@ -15527,6 +15066,13 @@ }, /turf/simulated/wall/indestructible/fakeglass, /area/centcom/specops) +"hnc" = ( +/obj/machinery/teleport/station, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "hne" = ( /obj/structure/shuttle/engine/large, /turf/space, @@ -15566,25 +15112,26 @@ }, /turf/simulated/floor/plasteel, /area/ninja/outpost) -"hnD" = ( +"hnX" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkredaltstrip" + }, +/area/centcom/zone2) +"hoc" = ( /obj/structure/closet/crate/can, /obj/structure/window/reinforced, /turf/simulated/floor/wood/fancy/light, /area/centcom/specops) -"hnF" = ( -/obj/machinery/computer/med_data, -/obj/effect/turf_decal/siding/yellow{ - dir = 8 +"hoD" = ( +/obj/structure/sign/poster/official/twelve_gauge{ + pixel_y = -32 }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone3) -"hoq" = ( -/obj/machinery/atmospherics/pipe/manifold4w/visible, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/caution/stand_clear{ - dir = 4 +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "navyblue" }, -/turf/simulated/floor/wood, /area/centcom/specops) "hoJ" = ( /turf/simulated/wall/shuttle, @@ -15599,29 +15146,6 @@ icon_state = "darkredaltstrip" }, /area/centcom/jail) -"hpN" = ( -/obj/effect/turf_decal/tile/neutral{ - color = "black"; - icon_state = "tile_full" - }, -/obj/structure/railing{ - layer = 4.3; - density = 0 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" - }, -/area/centcom/specops) -"hpY" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 - }, -/obj/machinery/computer/communications, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "hqm" = ( /obj/effect/turf_decal/tile{ alpha = 128; @@ -15651,37 +15175,25 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) -"hqq" = ( -/obj/structure/sign/poster/official/random{ - pixel_y = -30 +"hqZ" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/turf_decal/siding/blue/corner{ + color = "#444444" }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/machinery/light{ + dir = 8 }, -/area/centcom/zone3) -"hqH" = ( -/obj/machinery/computer/station_alert, -/obj/structure/railing, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) +"hrI" = ( /obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkyellowfull" - }, -/area/centcom/bridge) -"hrp" = ( -/obj/machinery/photocopier/faxmachine/longrange{ - department = "Central Command"; - icon_state = "bigscanner" + dir = 1; + layer = 2.9 }, -/obj/structure/table/holotable/wood, +/obj/structure/table, +/obj/machinery/computer/library/public, /turf/simulated/floor/carpet/black, -/area/centcom/specops) -"hsk" = ( -/obj/machinery/photocopier, -/obj/machinery/light, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) +/area/centcom/zone2) "hsz" = ( /obj/structure/chair/comfy/shuttle{ dir = 8 @@ -15695,6 +15207,22 @@ icon_state = "bot" }, /area/shuttle/escape) +"hsG" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + dir = 1; + id_tag = "ERT_director_office_shutters"; + layer = 5; + locked = 1; + name = "CentCom SOO" + }, +/obj/machinery/door_control/secure{ + id = "ERT_director_office_shutters"; + pixel_x = 32; + req_access = list(114) + }, +/turf/simulated/wall/indestructible/fakeglass, +/area/centcom/specops) "hsJ" = ( /turf/simulated/floor/plasteel{ dir = 10; @@ -15715,28 +15243,14 @@ }, /area/syndicate_mothership) "hsP" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - damage_deflection = 1000; - dir = 2; - req_access = list(114) +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkyellow" }, -/obj/machinery/door/poddoor/shutters/invincible{ - id_tag = "CC_ERT2" - }, -/obj/machinery/door_control/secure{ - id = "CC_ERT2"; - pixel_y = -25; - req_access = list(114) - }, -/obj/machinery/door/firedoor, -/obj/effect/decal/warning_stripes/yellow, -/turf/simulated/floor/wood{ - icon_state = "light-fancy-wood" - }, -/area/centcom/specops) -"hsS" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/area/centcom/supplypod/loading/three) +"hsS" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, /obj/structure/railing/corner{ dir = 4 @@ -15752,82 +15266,29 @@ icon_state = "navybluecorners" }, /area/centcom/specops) -"htg" = ( -/obj/structure/closet{ - icon_closed = "syndicate1"; - icon_opened = "syndicate1open"; - icon_state = "syndicate1" - }, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/gun/projectile/automatic/proto, -/obj/item/gun/energy/gun/blueshield, -/obj/item/clothing/glasses/hud/security/sunglasses/aviators, -/obj/item/reagent_containers/food/snacks/candy/mre, -/obj/item/reagent_containers/hypospray/combat, -/obj/item/radio/headset/ert/alt{ - desc = null; - name = "SRT bowman headset" - }, -/obj/item/clothing/head/beret/centcom/officer/navy{ - desc = null; - name = "SRT beret" - }, -/obj/item/clothing/shoes/combat/swat{ - name = "SRT special shoes" - }, -/obj/item/clothing/gloves/combat{ - name = "Combat gloves" - }, -/obj/item/storage/belt/security/webbing/srt/full, -/obj/item/storage/backpack/satchel_blueshield/srt, -/obj/item/clothing/suit/storage/blueshield/srt, -/obj/item/clothing/suit/armor/bulletproof{ - name = "SRT bulletproof vest" - }, -/obj/item/shield/riot/tele, -/obj/item/suppressor, -/obj/item/CQC_manual, -/obj/item/implanter/mindshield/ert, -/obj/item/card/id/centcom{ - name = "Special Reaction Team Member card"; - rank = "Special Reaction Team Member"; - registered_name = "Special Reaction Team Member" - }, -/obj/item/storage/box/responseteam, -/obj/item/clothing/under/fluff/jay_turtleneck{ - desc = null; - name = "SRT uniform" - }, -/obj/item/gun/projectile/automatic/pistol/sp8/sp8ar, -/obj/item/ammo_box/magazine/sp8, -/obj/item/ammo_box/magazine/sp8, -/obj/item/implanter/dust, -/obj/item/clothing/accessory/holster, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "navyblue" - }, -/area/centcom/specops) "htk" = ( /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkyellowaltstrip" }, /area/centcom/zone3) -"htt" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/bottle/holywater, -/obj/item/reagent_containers/food/drinks/bottle/holywater, -/turf/simulated/floor/carpet, -/area/centcom/evac) +"htF" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/one) "htL" = ( /obj/structure/flora/grass/brown, /obj/structure/flora/grass/both, /turf/simulated/floor/indestructible/snow, /area/ninja/outside) +"htN" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkredaltstrip" + }, +/area/centcom/zone2) "htR" = ( /obj/machinery/door/airlock/centcom{ damage_deflection = 999; @@ -15874,21 +15335,6 @@ }, /turf/simulated/floor/plasteel, /area/ninja/outpost) -"hut" = ( -/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - frequency = 1331; - id_tag = "admin_s_air_control"; - pixel_y = 24; - req_access = list(152); - tag_airpump = "admin_s_pump"; - tag_chamber_sensor = "admin_s_sensor"; - tag_exterior_door = "admin_s_outer"; - tag_interior_door = "admin_s_inner" - }, -/turf/simulated/floor/shuttle{ - icon_state = "vfloor" - }, -/area/shuttle/administration) "huw" = ( /obj/machinery/light/small{ brightness_range = 2; @@ -15901,12 +15347,6 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) -"hux" = ( -/turf/simulated/floor/indestructible{ - dir = 4; - icon_state = "darkgreynavybluecorner" - }, -/area/centcom/specops) "huE" = ( /obj/item/flag/ninja, /obj/effect/turf_decal/siding/wood{ @@ -15960,6 +15400,17 @@ name = "Tatami" }, /area/ninja/outpost) +"hvZ" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "hwc" = ( /turf/simulated/floor/plasteel{ icon_state = "grimy" @@ -16003,6 +15454,13 @@ icon_state = "dark" }, /area/shuttle/syndicate) +"hxv" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 10 + }, +/turf/simulated/floor/glass/reinforced, +/area/centcom/specops) "hxy" = ( /obj/effect/turf_decal{ dir = 5; @@ -16014,23 +15472,6 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"hxB" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/filingcabinet/employment, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"hxE" = ( -/obj/machinery/cryopod{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/zone1) "hxR" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -16043,15 +15484,12 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/ninja/outside) -"hyc" = ( -/obj/structure/table/wood, -/obj/item/radio/intercom, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 +"hya" = ( +/turf/simulated/floor/wood{ + icon_state = "wood-broken7"; + tag = "icon-wood-broken7" }, -/turf/simulated/floor/carpet, -/area/centcom/zone3) +/area/centcom/zone2) "hyg" = ( /obj/machinery/light/small{ dir = 1 @@ -16061,14 +15499,12 @@ icon_state = "dark" }, /area/centcom/zone1) -"hyL" = ( -/obj/structure/bookcase/manuals, -/obj/item/book/manual/sop_legal, -/obj/item/book/manual/sop_engineering, -/obj/item/book/manual/sop_command, -/obj/item/book/manual/security_space_law, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) +"hza" = ( +/obj/machinery/vending/cigarette/free, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/centcom/jail) "hzh" = ( /obj/effect/decal/cleanable/confetti, /obj/effect/decal/cleanable/dirt, @@ -16076,16 +15512,14 @@ icon_state = "dark" }, /area/centcom/jail) -"hzw" = ( -/obj/item/stack/nanopaste, -/obj/item/mmi, -/obj/item/stack/nanopaste, -/obj/structure/table/glass, -/obj/machinery/light, +"hzJ" = ( +/obj/effect/turf_decal/box/white{ + pixel_y = 16 + }, /turf/simulated/floor/plasteel{ - icon_state = "white" + icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/jail) "hzK" = ( /obj/effect/turf_decal/delivery, /obj/structure/fans/tiny/invisible, @@ -16094,6 +15528,29 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) +"hAd" = ( +/obj/structure/closet{ + icon_closed = "syndicate1"; + icon_opened = "syndicate1open"; + icon_state = "syndicate1"; + name = "Nanotrasen Diplomat's closet" + }, +/obj/item/clothing/shoes/laceup, +/obj/item/clothing/under/rank/centcom/diplomatic, +/obj/item/lighter/zippo/nt_rep, +/obj/item/storage/fancy/cigarettes/dromedaryco, +/obj/item/clothing/gloves/color/white, +/obj/item/storage/backpack/satchel, +/obj/item/radio/headset/centcom, +/obj/item/storage/backpack/satcheldeluxe, +/obj/item/storage/box/survival{ + name = "Survival kit" + }, +/obj/item/implanter/dust, +/obj/item/implanter/mindshield/ert, +/obj/item/implanter/death_alarm, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "hAn" = ( /obj/machinery/sleeper/upgraded{ dir = 4 @@ -16112,16 +15569,32 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) -"hBW" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 5 +"hAX" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "CO2" }, -/turf/simulated/floor/glass/reinforced, -/area/centcom/specops) +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) +"hBl" = ( +/obj/structure/table/wood{ + color = "#996633" + }, +/obj/effect/mapping_helpers/light, +/turf/simulated/floor/grass, +/area/centcom/evac) "hCl" = ( /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) +"hCr" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1; + tag = "icon-heater (NORTH)" + }, +/obj/structure/shuttle/engine/propulsion, +/turf/simulated/floor/plating/airless, +/area/shuttle/ussp) "hCL" = ( /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -16148,16 +15621,6 @@ icon_state = "grimy" }, /area/syndicate_mothership) -"hDk" = ( -/obj/effect/decal/warning_stripes/red, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "CC_Armory_shotgun" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "hDO" = ( /obj/structure/toilet, /turf/simulated/floor/plasteel{ @@ -16175,33 +15638,19 @@ icon_state = "sepia" }, /area/ninja/outpost) -"hEl" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 +"hDY" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "burst_l" }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) +/turf/simulated/floor/plating/airless, +/area/shuttle/transport) "hEu" = ( /turf/simulated/floor/plasteel{ dir = 4; icon_state = "arrival" }, /area/centcom/evac) -"hEG" = ( -/obj/structure/closet/wardrobe/chemistry_white, -/obj/item/storage/bag/chemistry, -/obj/item/storage/bag/chemistry, -/obj/item/clothing/glasses/science{ - pixel_y = 3 - }, -/obj/item/clothing/glasses/science{ - pixel_y = 3 - }, -/turf/simulated/floor/engine, -/area/centcom/specops) "hEO" = ( /obj/effect/turf_decal{ icon_state = "golden_stripes" @@ -16256,6 +15705,17 @@ }, /turf/simulated/floor/wood/fancy/light, /area/ninja/outpost) +"hFX" = ( +/obj/effect/decal/warning_stripes/white, +/obj/machinery/door/airlock{ + id_tag = "CC_toilet_unit1"; + name = "Toilet" + }, +/obj/effect/mine/sound/bwoink, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) "hGh" = ( /obj/structure/flora/grass/jungle/b, /obj/structure/flora/ausbushes/genericbush, @@ -16273,6 +15733,12 @@ /obj/structure/flora/ausbushes/brflowers, /turf/simulated/floor/indestructible/snow, /area/ninja/outside) +"hHa" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "hHh" = ( /obj/machinery/light/small{ dir = 4 @@ -16282,20 +15748,6 @@ icon_state = "freezerfloor" }, /area/syndicate_mothership) -"hHq" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/airlock_sensor{ - frequency = 1331; - id_tag = "admin_s_sensor"; - pixel_y = 26; - req_access = list(101) - }, -/turf/simulated/floor/shuttle{ - icon_state = "vfloor" - }, -/area/shuttle/administration) "hHt" = ( /obj/effect/decal/warning_stripes/white, /obj/structure/fans/tiny, @@ -16331,25 +15783,21 @@ }, /turf/simulated/floor/carpet/orange, /area/shuttle/trade/sol) -"hHW" = ( -/obj/structure/filingcabinet/employment, -/obj/item/radio/intercom/specops{ - pixel_y = -32 - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) -"hIl" = ( -/obj/machinery/door_control/secure{ - id = "CC_Armory_SRT1"; - pixel_y = -25; - req_access = list(114); - pixel_x = -25; - name = "SRT Team 2" +"hIf" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1; + icon_state = "propulsion_l"; + tag = "icon-propulsion_l (NORTH)" }, +/turf/simulated/floor/plating/airless, +/area/shuttle/funeral) +"hIg" = ( +/obj/effect/turf_decal/caution/stand_clear, +/obj/effect/turf_decal/box, /turf/simulated/floor/plasteel{ - icon_state = "navybluealtstrip" + icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/supply) "hIm" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-34"; @@ -16397,78 +15845,6 @@ /obj/structure/flora/junglebush/b, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"hIL" = ( -/obj/structure/bookcase/manuals, -/obj/item/book/manual/sop_legal, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"hJg" = ( -/obj/structure/closet{ - icon_closed = "syndicate1"; - icon_opened = "syndicate1open"; - icon_state = "syndicate1" - }, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/gun/projectile/automatic/proto, -/obj/item/gun/energy/gun/blueshield, -/obj/item/clothing/glasses/hud/security/sunglasses/aviators, -/obj/item/reagent_containers/food/snacks/candy/mre, -/obj/item/reagent_containers/hypospray/combat, -/obj/item/radio/headset/ert/alt{ - desc = null; - name = "SRT bowman headset" - }, -/obj/item/clothing/head/beret/centcom/officer/navy{ - desc = null; - name = "SRT beret" - }, -/obj/item/clothing/shoes/combat/swat{ - name = "SRT special shoes" - }, -/obj/item/clothing/gloves/combat{ - name = "Combat gloves" - }, -/obj/item/storage/belt/security/webbing/srt/full, -/obj/item/storage/backpack/satchel_blueshield/srt, -/obj/item/clothing/suit/storage/blueshield/srt, -/obj/item/clothing/suit/armor/bulletproof{ - name = "SRT bulletproof vest" - }, -/obj/item/shield/riot/tele, -/obj/item/suppressor, -/obj/item/CQC_manual, -/obj/item/implanter/mindshield/ert, -/obj/item/card/id/centcom{ - name = "Special Reaction Team Member card"; - rank = "Special Reaction Team Member"; - registered_name = "Special Reaction Team Member" - }, -/obj/item/storage/box/responseteam, -/obj/item/clothing/under/fluff/jay_turtleneck{ - desc = null; - name = "SRT uniform" - }, -/obj/item/gun/projectile/automatic/pistol/sp8/sp8ar, -/obj/item/ammo_box/magazine/sp8, -/obj/item/ammo_box/magazine/sp8, -/obj/item/implanter/dust, -/obj/item/clothing/accessory/holster, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "navyblue" - }, -/area/centcom/specops) -"hJk" = ( -/obj/structure/sign/poster/official/nanotrasen_logo{ - pixel_x = -32 - }, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" - }, -/area/shuttle/gamma) "hJl" = ( /obj/structure/sign/poster/contraband/rebels_unite{ pixel_y = 32 @@ -16482,6 +15858,16 @@ }, /turf/simulated/floor/carpet/red, /area/ninja/outpost) +"hJy" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/obj/effect/turf_decal/siding/blue{ + dir = 4 + }, +/turf/simulated/floor/glass, +/area/centcom/bridge) "hJH" = ( /obj/structure/railing/corner, /obj/effect/turf_decal/siding/wood{ @@ -16490,46 +15876,32 @@ /obj/effect/turf_decal/siding/wood/corner, /turf/simulated/floor/carpet/cyan, /area/ninja/outpost) -"hJM" = ( -/obj/machinery/door/airlock/external{ - id_tag = "specops_away"; - name = "Shuttle Hatch"; - req_access = list(109) - }, -/obj/machinery/shower{ - pixel_y = 20 - }, -/obj/structure/fans/tiny, -/obj/machinery/door/poddoor/impassable/preopen{ - id_tag = "ERT_Quarantine"; - name = "ERT Quarantine" - }, -/turf/simulated/floor/indestructible{ - icon_state = "dark" - }, -/area/centcom/specops) -"hJN" = ( -/turf/simulated/floor/plasteel{ - icon_state = "darkgreencorners"; - dir = 8 - }, -/area/centcom/specops) -"hKG" = ( -/obj/structure/reagent_dispensers/peppertank{ - pixel_y = -30 - }, +"hLb" = ( /turf/simulated/floor/plasteel{ - icon_state = "darkredalt" + icon_state = "Dark" }, -/area/centcom/jail) +/area/centcom/supplypod/loading/three) "hLh" = ( /turf/simulated/floor/indestructible/grass, /area/ninja/outside) -"hLw" = ( +"hLq" = ( +/obj/structure/railing{ + dir = 8; + pixel_x = 32 + }, /turf/simulated/floor/plasteel{ - icon_state = "darkyellowcorners" + icon_state = "rampbottom"; + tag = "icon-stage_stairs" }, -/area/centcom/specops) +/area/centcom/zone2) +"hLB" = ( +/obj/effect/turf_decal/plaque, +/obj/structure/chair/comfy/red{ + color = "#222222"; + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/centcom/zone3) "hLD" = ( /obj/effect/turf_decal{ dir = 8; @@ -16540,37 +15912,68 @@ water_overlay_icon_state = null }, /area/syndicate_mothership/outside) -"hLJ" = ( -/obj/machinery/door/airlock/shuttle, -/obj/structure/fans/tiny, -/obj/docking_port/stationary/transit{ - dir = 4; - dwidth = 4; - height = 6; - id = "gamma_shuttle_transit"; - name = "gamma in transit"; - pixel_x = -32; - turf_type = /turf/space/transit/south; - width = 7 +"hLH" = ( +/obj/structure/rack/holorack, +/obj/item/clothing/accessory/black{ + desc = null; + name = "Black tie" }, -/obj/docking_port/mobile/gamma, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" +/obj/item/clothing/accessory/blue{ + desc = null; + name = "Blue tie" }, -/area/shuttle/gamma) +/obj/item/clothing/glasses/hud/security/sunglasses/aviators, +/obj/item/clothing/glasses/hud/security/sunglasses/aviators, +/obj/item/clothing/accessory/blue{ + desc = null; + name = "Blue tie" + }, +/obj/item/clothing/accessory/black{ + desc = null; + name = "Black tie" + }, +/obj/item/clothing/accessory/holster{ + desc = null; + name = "Shoulder holster" + }, +/obj/item/clothing/accessory/holster{ + desc = null; + name = "Shoulder holster" + }, +/obj/item/storage/backpack/satchel, +/obj/item/storage/backpack/satchel, +/obj/item/storage/backpack/satcheldeluxe, +/obj/item/storage/backpack/satcheldeluxe, +/obj/item/storage/belt/fannypack/black, +/obj/item/storage/belt/fannypack/black, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/color/white{ + desc = null + }, +/obj/item/clothing/gloves/color/white{ + desc = null + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "hLV" = ( /turf/simulated/wall/indestructible/abductor{ icon_state = "alien20" }, /area/abductor_ship) -"hMa" = ( -/obj/structure/statue/sandstone/venus{ - layer = 5 +"hLZ" = ( +/obj/structure/chair/comfy/red{ + dir = 1 }, -/obj/structure/flora/ausbushes/sparsegrass, -/obj/effect/mapping_helpers/light, -/turf/simulated/floor/grass, -/area/centcom/evac) +/obj/effect/landmark/aroomwarp{ + tag = "" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) "hMi" = ( /obj/machinery/computer/operating{ layer = 3.5 @@ -16582,14 +15985,6 @@ icon_state = "white" }, /area/centcom/zone1) -"hMu" = ( -/obj/machinery/status_display{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/bridge) "hMy" = ( /turf/simulated/wall/indestructible/abductor{ icon_state = "alien21" @@ -16610,6 +16005,11 @@ /obj/effect/turf_decal/stripes/gold, /turf/simulated/floor/carpet/royalblack, /area/syndicate_mothership/control) +"hNa" = ( +/turf/simulated/floor/indestructible{ + icon_state = "darkgrey" + }, +/area/centcom/specops) "hNd" = ( /turf/simulated/wall/indestructible/wood, /area/ussp_centcom/secretariat) @@ -16623,12 +16023,6 @@ /obj/machinery/vending/shoedispenser, /turf/simulated/floor/wood, /area/centcom/zone1) -"hNo" = ( -/obj/structure/window/reinforced, -/turf/simulated/wall/indestructible/reinforced{ - density = 0 - }, -/area/centcom/zone2) "hNH" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/carpet, @@ -16644,15 +16038,38 @@ /obj/structure/fans/tiny/invisible, /turf/simulated/floor/plating, /area/shuttle/syndicate) -"hNZ" = ( -/obj/machinery/door/window/brigdoor{ - color = "#d70000"; - dir = 1; - icon_state = "rightsecure"; - name = "Riot Control" +"hNK" = ( +/obj/structure/chair/sofa/right, +/obj/effect/mine/sound/bwoink{ + alpha = 0; + layer = 2.9 }, -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-cherry" +/turf/simulated/floor/carpet/arcade, +/area/centcom/zone1) +"hNX" = ( +/obj/structure/railing{ + density = 0; + layer = 4.3 + }, +/obj/effect/turf_decal/tile/neutral{ + color = "black"; + icon_state = "tile_full" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/centcom/specops) +"hNZ" = ( +/obj/machinery/door/window/brigdoor{ + color = "#d70000"; + dir = 1; + icon_state = "rightsecure"; + name = "Riot Control" + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/control) "hOe" = ( @@ -16667,37 +16084,11 @@ icon_state = "asteroid" }, /area/centcom/evac) -"hOx" = ( -/obj/item/vending_refill/nta, -/obj/structure/rack/holorack, -/obj/item/vending_refill/nta, -/obj/item/vending_refill/nta, -/obj/item/vending_refill/nta, -/obj/item/vending_refill/nta, -/obj/item/vending_refill/nta, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "hOM" = ( /turf/simulated/wall/indestructible/abductor{ icon_state = "alien23" }, /area/abductor_ship) -"hON" = ( -/turf/simulated/floor/indestructible{ - dir = 1; - icon_state = "darkgreynavyblue" - }, -/area/centcom/specops) -"hPz" = ( -/obj/structure/bookcase/manuals, -/obj/item/book/manual/sop_medical, -/obj/item/book/manual/sop_science, -/obj/item/book/manual/sop_security, -/obj/item/book/manual/sop_service, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "hPQ" = ( /obj/effect/turf_decal{ dir = 5; @@ -16706,12 +16097,6 @@ /obj/structure/dresser, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) -"hPR" = ( -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkgreen" - }, -/area/centcom/specops) "hQg" = ( /obj/structure/weightmachine/weightlifter, /turf/simulated/floor/indestructible/asteroid, @@ -16727,27 +16112,27 @@ icon_state = "arrivalcorner" }, /area/centcom/evac) -"hQG" = ( +"hQU" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/snacks/meatsteak, /obj/structure/window/reinforced{ dir = 4 }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkbluealt" - }, -/area/centcom/zone2) -"hQS" = ( -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" +/turf/simulated/floor/wood, +/area/centcom/specops) +"hQV" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "burst_l"; + tag = "icon-burst_l" }, -/area/shuttle/administration) -"hQX" = ( -/obj/machinery/vending/cigarette/free, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/specops) +"hQZ" = ( /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 4; + icon_state = "darkyellow" }, -/area/centcom/specops) +/area/centcom/supplypod/loading/two) "hRt" = ( /obj/structure/curtain/open/shower/security, /turf/simulated/wall/indestructible/fakeglass, @@ -16768,64 +16153,15 @@ icon_state = "darkyellowfull" }, /area/centcom/bridge) -"hRH" = ( -/obj/docking_port/stationary{ - dir = 4; - dwidth = 11; - height = 18; - id = "emergency_away"; - name = "emergency centcom"; - width = 29 - }, -/turf/space{ - icon_state = "black" - }, -/area/space) -"hRI" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "darkgrey" - }, -/area/shuttle/administration) -"hRZ" = ( -/turf/simulated/floor/shuttle{ - icon_state = "vfloor" - }, -/area/shuttle/administration) -"hSk" = ( -/obj/machinery/vending/clothing/departament/law, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) -"hSO" = ( -/obj/structure/falsewall/reinforced, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) -"hST" = ( -/obj/effect/turf_decal/tile/neutral{ - alpha = 85; - icon_state = "seadeep"; - layer = 9; - icon = 'icons/misc/beach.dmi' - }, -/obj/structure/window/reinforced{ - dir = 4; - layer = 9.1 - }, -/obj/structure/flora/rock/pile, -/obj/structure/window/reinforced/survival_pod{ - dir = 6; - pixel_y = -7; - pixel_x = 1; - density = 0 +"hSv" = ( +/obj/structure/table/wood/fancy/black, +/obj/item/storage/box/ids{ + pixel_y = 10 }, -/turf/simulated/floor/indestructible/beach/water/deep/sand_floor, +/obj/item/melee/baton/ntcane, +/obj/item/storage/briefcase, +/obj/item/lighter/zippo/blue, +/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "hSY" = ( /obj/effect/turf_decal/siding{ @@ -16876,15 +16212,6 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"hTA" = ( -/obj/structure/chair/comfy/beige{ - dir = 4; - layer = 4; - pixel_y = -2 - }, -/obj/structure/railing, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) "hTD" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -16893,42 +16220,82 @@ /area/centcom/specops) "hTK" = ( /obj/machinery/conveyor{ - id = "SFBQMLoad2"; - dir = 5 + dir = 5; + id = "SFBQMLoad2" }, /turf/simulated/floor/plasteel{ icon_state = "darkfull" }, /area/syndicate_mothership/cargo) -"hUu" = ( -/obj/structure/sign/poster/official/obey{ - pixel_y = -32 - }, +"hTU" = ( /turf/simulated/floor/plasteel{ - icon_state = "darkredalt" + dir = 6; + icon_state = "darkredaltstrip" }, -/area/centcom/jail) -"hUV" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 +/area/centcom/zone2) +"hUb" = ( +/obj/item/radio/intercom{ + pixel_y = 28 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/structure/chair/comfy/shuttle, +/turf/simulated/floor/shuttle, +/area/shuttle/pod_4) +"hUD" = ( +/obj/item/gun/energy/clown/security{ + desc = "Поговаривают что это оружие сделано концерном Клоун-Варденов, может поэтому оно и спрятано?." }, -/area/centcom/jail) +/obj/item/gun/energy/clown/security, +/obj/item/gun/energy/clown/security{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/gun/energy/clown/security{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/gun/energy/clown/security{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/gun/energy/clown/security, +/obj/item/gun/energy/clown/security, +/obj/item/gun/energy/clown/security{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/clown/security{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/structure/rack/gunrack, +/turf/simulated/floor/mineral/bananium, +/area/centcom/specops) "hVd" = ( /obj/structure/chair{ dir = 4 }, /turf/simulated/floor/carpet/black, /area/ninja/outpost) -"hXc" = ( -/obj/structure/closet/crate/can, +"hVq" = ( +/obj/structure/shuttle/engine/heater, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/specops) +"hWn" = ( /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "vault" + icon_state = "white" }, -/area/centcom/specops) +/area/centcom/zone3) +"hWy" = ( +/obj/structure/table/glass, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/toy/desk/newtoncradle, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "hXg" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo16" @@ -16947,6 +16314,14 @@ }, /turf/simulated/floor/carpet/cyan, /area/ninja/outpost) +"hXs" = ( +/obj/effect/turf_decal/siding/white/corner{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) "hYm" = ( /obj/effect/turf_decal/caution/stand_clear{ dir = 1; @@ -16959,21 +16334,48 @@ icon_state = "floor4" }, /area/shuttle/syndicate) -"hYC" = ( -/obj/machinery/computer/card/centcom, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) "hYJ" = ( /obj/machinery/vending/coffee/free, /turf/simulated/floor/carpet, /area/centcom/evac) -"hZg" = ( -/obj/item/flag/nt, +"hYY" = ( +/obj/effect/decal/warning_stripes/northeastsouth, +/obj/machinery/door/poddoor/shutters/preopen/invincible{ + dir = 2; + id_tag = "ERT_armory_lvl1"; + name = "Armory level 1" + }, /turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkredalt" + icon_state = "darkfull" }, -/area/centcom/jail) +/area/centcom/specops) +"hZa" = ( +/obj/structure/rack/holorack, +/obj/item/organ/internal/cyberimp/brain/anti_drop, +/obj/item/organ/internal/cyberimp/brain/anti_drop, +/obj/item/organ/internal/cyberimp/brain/anti_sleep/hardened, +/obj/item/organ/internal/cyberimp/brain/anti_sleep/hardened, +/obj/item/organ/internal/cyberimp/brain/anti_stun/hardened, +/obj/item/organ/internal/cyberimp/brain/anti_stun/hardened, +/obj/item/organ/internal/cyberimp/chest/nutriment_old/plus, +/obj/item/organ/internal/cyberimp/chest/nutriment_old/plus, +/obj/item/organ/internal/cyberimp/chest/reviver/hardened, +/obj/item/organ/internal/cyberimp/chest/reviver/hardened, +/obj/item/organ/internal/cyberimp/eyes/hud/medical, +/obj/item/organ/internal/cyberimp/eyes/hud/medical, +/obj/item/organ/internal/cyberimp/eyes/thermals, +/obj/item/organ/internal/cyberimp/eyes/thermals, +/obj/item/organ/internal/cyberimp/mouth/breathing_tube, +/obj/item/organ/internal/cyberimp/mouth/breathing_tube, +/obj/item/implanter/mindshield, +/obj/item/implanter/mindshield, +/obj/item/organ/internal/cyberimp/arm/combat/centcom, +/obj/item/organ/internal/cyberimp/arm/combat/centcom, +/obj/item/organ/internal/cyberimp/arm/surgery, +/obj/item/organ/internal/cyberimp/arm/toolset, +/obj/item/organ/internal/cyberimp/arm/janitorial, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "hZr" = ( /obj/structure/flora/grass/brown, /obj/structure/flora/grass/brown, @@ -16988,35 +16390,25 @@ icon_state = "dark" }, /area/syndicate_mothership/jail) -"iae" = ( -/obj/effect/step_trigger/teleporter{ - teleport_x = 205; - teleport_y = 89; - teleport_z = 1; - icon = 'icons/mob/screen_gen.dmi'; - icon_state = "x2" - }, -/turf/space, -/area/space) -"iak" = ( -/obj/effect/turf_decal/siding/yellow{ - dir = 1 - }, -/turf/simulated/floor/glass/reinforced, -/area/centcom/evac) -"iaK" = ( -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" +"iac" = ( +/obj/effect/turf_decal/stripes/black{ + do_not_delete_me = 1 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/effect/turf_decal/stripes/black{ + dir = 1; + do_not_delete_me = 1 }, -/obj/machinery/mech_bay_recharge_port/upgraded, /turf/simulated/floor/shuttle{ - icon_state = "floor4" + icon = 'icons/turf/floors.dmi'; + icon_state = "white" }, -/area/shuttle/gamma) +/area/shuttle/administration) +"ibs" = ( +/obj/structure/marker_beacon{ + icon_state = "markerburgundy-on" + }, +/turf/simulated/floor/plating/airless, +/area/space) "ibG" = ( /obj/machinery/light/small{ dir = 1 @@ -17034,6 +16426,15 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) +"ibQ" = ( +/obj/item/radio/intercom/specops{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkyellow" + }, +/area/centcom/specops) "icm" = ( /turf/simulated/wall/indestructible/abductor{ icon_state = "alien16" @@ -17053,6 +16454,12 @@ icon_state = "sepia" }, /area/ninja/outpost) +"icQ" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkredalt" + }, +/area/centcom/specops) "icT" = ( /obj/effect/turf_decal{ dir = 10; @@ -17077,40 +16484,15 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) -"idZ" = ( -/obj/machinery/door/airlock/shuttle{ - id_tag = "s_docking_airlock"; - name = "Escape Pod Hatch" - }, -/obj/docking_port/mobile/pod{ - id = "pod2"; - name = "escape pod 2"; - roundstart_move = "pod2_home" - }, -/obj/docking_port/stationary/transit{ - dwidth = 2; - height = 6; - id = "pod2_transit"; - name = "pod 2 in transit"; - pixel_y = -32; - turf_type = /turf/space/transit/north; - width = 5 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_2) -"iei" = ( -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/external{ - frequency = 1331; - id_tag = "admin_s_outer"; - name = "Ship External Access"; - req_access = list(101) +"idQ" = ( +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "CC_crate" }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "podfloor_dark" +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/area/shuttle/administration) +/area/centcom/supply) "iej" = ( /obj/structure/fence/post{ color = "#b0b7c6"; @@ -17118,40 +16500,6 @@ }, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"iet" = ( -/obj/structure/table/glass, -/obj/item/folder/blue{ - pixel_x = 5; - pixel_y = -5 - }, -/obj/item/folder/red{ - pixel_x = -5; - pixel_y = -5 - }, -/obj/item/folder/white{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/folder/yellow{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 6 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) -"ieD" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/shuttle/engine/heater, -/turf/simulated/floor/plating/airless, -/area/shuttle/pod_2) "ieK" = ( /obj/structure/chair/comfy/red{ dir = 8 @@ -17168,26 +16516,48 @@ icon_state = "darkredcorners" }, /area/syndicate_mothership/elite_squad) -"ifh" = ( -/obj/structure/window/reinforced{ - layer = 2.9 +"ifB" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkyellow" }, -/obj/structure/window/reinforced{ - dir = 4 +/area/centcom/specops) +"ifF" = ( +/obj/vehicle/ridden/motorcycle{ + dir = 8 }, -/obj/effect/turf_decal/siding/white{ - dir = 6 +/obj/structure/sign/poster/contraband/random{ + pixel_x = 30 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" }, +/area/syndicate_mothership) +"ifS" = ( +/obj/machinery/light/small, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "white" }, -/area/centcom/jail) +/area/centcom/zone3) "ifZ" = ( /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkyellowaltstrip" }, /area/centcom/supply) +"igb" = ( +/obj/structure/cable{ + icon_state = "8-9" + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-9" + }, +/obj/machinery/atmospherics/pipe/cap, +/turf/simulated/floor/plating, +/area/centcom/specops) "igh" = ( /turf/simulated/wall/indestructible/abductor{ icon_state = "alien17" @@ -17201,70 +16571,76 @@ /obj/structure/flora/tree/jungle/small, /turf/simulated/floor/indestructible/grass, /area/ninja/outside) -"igZ" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced, -/obj/structure/dresser, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/zone1) -"ihc" = ( -/obj/structure/chair/comfy/brown{ - color = "#3300FF"; - dir = 1 - }, -/turf/simulated/floor/carpet/cyan, -/area/centcom/zone2) -"ihi" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1; - pixel_y = 3 +"igz" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/turf_decal/tile/neutral{ + alpha = 150; + color = "black"; + icon_state = "tile_full"; + layer = 9 }, -/obj/effect/turf_decal/siding/white{ +/turf/simulated/floor/plating, +/area/centcom/supply) +"igY" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; dir = 8 }, +/obj/item/flag/nt, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) +"iha" = ( /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 1; + icon_state = "vault" }, -/area/centcom/jail) -"ihA" = ( -/obj/machinery/door/airlock/command/glass{ - frequency = 2000; - icon_state = "open"; - id_tag = "CC-OP4-Int"; - locked = 1; - name = "Zone 2" +/area/centcom/specops) +"ihz" = ( +/obj/structure/window/reinforced{ + dir = 8 }, -/obj/effect/decal/warning_stripes/blue, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/structure/chair/comfy/red{ + dir = 4 }, -/area/centcom/specops) +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "ihM" = ( /turf/simulated/floor/carpet/arcade, /area/centcom/zone1) -"iiA" = ( -/obj/effect/decal/cleanable/crayon{ - color = "yellow"; - icon_state = "guy"; - layer = 5; - pixel_y = -30 +"ihP" = ( +/obj/machinery/light_construct/small{ + dir = 4 }, -/obj/effect/decal/cleanable/crayon{ - color = "yellow"; - icon_state = "face"; - pixel_x = -32; - pixel_y = 32 +/obj/machinery/computer/library/public, +/obj/structure/table/wood, +/turf/simulated/floor/plating, +/area/centcom/zone2) +"iil" = ( +/obj/machinery/door/airlock/shuttle{ + aiControlDisabled = 1; + hackProof = 1; + id_tag = "s_docking_airlock"; + name = "Shuttle Hatch" }, -/obj/effect/decal/cleanable/crayon{ - color = "yellow"; - icon_state = "shitcurity"; - pixel_x = 32; - pixel_y = 32 +/obj/docking_port/mobile/emergency{ + dwidth = 11; + height = 18; + port_direction = 8; + width = 29 }, -/turf/simulated/floor/mineral/bananium, -/area/centcom/specops) +/obj/docking_port/stationary{ + dir = 4; + dwidth = 11; + height = 18; + id = "emergency_away"; + name = "emergency centcom"; + width = 29 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralfull" + }, +/area/shuttle/escape) "iiB" = ( /obj/effect/turf_decal/siding/green{ dir = 4 @@ -17273,13 +16649,6 @@ /obj/structure/flora/ausbushes/brflowers, /turf/simulated/floor/indestructible/grass, /area/ninja/outside) -"iiC" = ( -/obj/structure/table/glass, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkred" - }, -/area/centcom/specops) "iiO" = ( /turf/simulated/floor/plasteel{ dir = 6; @@ -17295,46 +16664,30 @@ icon_state = "darkjail" }, /area/syndicate_mothership/jail) -"iiU" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 - }, -/obj/effect/turf_decal/siding/blue/corner{ - dir = 4 - }, -/turf/simulated/floor/glass, -/area/centcom/bridge) "iiY" = ( /obj/structure/flora/tree/jungle, /obj/structure/flora/rock/jungle, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"ijf" = ( -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" - }, -/area/centcom/specops) -"iji" = ( -/obj/structure/table/glass, -/obj/machinery/newscaster/security_unit{ - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ +"ijs" = ( +/obj/structure/chair/comfy/lime, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; icon_state = "dark" }, -/area/centcom/zone3) -"ikf" = ( -/obj/item/radio/intercom/specops{ - pixel_x = -32 +/area/shuttle/administration) +"ijZ" = ( +/obj/structure/window/reinforced{ + dir = 1 }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "navybluealt" +/obj/structure/window/reinforced{ + dir = 8 }, -/area/centcom/specops) +/obj/structure/shuttle/engine/heater{ + dir = 4 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/pod_2) "ikw" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "applebush" @@ -17347,6 +16700,38 @@ icon_state = "darkgrey" }, /area/centcom/zone2) +"iky" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + req_access = list(114) + }, +/obj/item/clothing/suit/judgerobe{ + name = "Supreme judge's robe" + }, +/obj/item/card/id/centcom{ + icon_state = "deathsquad"; + name = "Supreme Judge ID card"; + pixel_x = -3; + pixel_y = -3; + registered_name = "Supreme Judge" + }, +/obj/item/clothing/head/powdered_wig{ + desc = null; + name = "Supreme judge wig" + }, +/obj/item/clothing/under/suit_jacket/really_black{ + name = "Supreme judge suit" + }, +/obj/item/clothing/shoes/centcom{ + desc = null; + name = "Dress shoes" + }, +/obj/item/clothing/gloves/color/white{ + desc = null; + name = "Supreme judge gloves" + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "ikC" = ( /obj/machinery/abductor/experiment{ team = 1 @@ -17364,6 +16749,12 @@ icon_state = "dark" }, /area/centcom/jail) +"ikI" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "navybluealtstrip" + }, +/area/centcom/specops) "ikP" = ( /obj/machinery/abductor/console{ team = 1 @@ -17402,30 +16793,30 @@ /obj/item/clothing/gloves/boxing/green, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) +"ilu" = ( +/obj/structure/table/reinforced, +/obj/item/storage/box/zipties, +/turf/simulated/floor/wood, +/area/centcom/zone2) +"ilv" = ( +/obj/effect/decal/nanotrasen_logo{ + icon_state = "logo5"; + pixel_x = 16 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "ilI" = ( /turf/simulated/wall/indestructible/abductor{ icon_state = "alien18" }, /area/abductor_ship) -"ilW" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/shuttle/engine/heater, -/turf/simulated/floor/plating/airless, -/area/shuttle/escape) -"imd" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - layer = 2.9 - }, -/obj/structure/filingcabinet/chestdrawer{ - pixel_y = 6 +"ilJ" = ( +/turf/simulated/floor/plasteel{ + icon_state = "Dark" }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) +/area/centcom/supplypod/loading/two) "imw" = ( /obj/machinery/light{ dir = 1 @@ -17440,6 +16831,23 @@ icon_state = "alien19" }, /area/abductor_ship) +"ina" = ( +/obj/machinery/computer/shuttle/ert{ + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + req_access = list(109) + }, +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 + }, +/obj/item/radio/intercom/specops{ + pixel_x = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "navybluealt" + }, +/area/centcom/specops) "ine" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo8" @@ -17454,28 +16862,6 @@ /obj/effect/landmark/syndicate_officer, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/control) -"inm" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 - }, -/turf/simulated/floor/glass/reinforced, -/area/centcom/evac) -"ino" = ( -/obj/machinery/recharge_station/ert, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "navybluealt" - }, -/area/centcom/specops) -"inv" = ( -/obj/structure/bookcase, -/obj/item/book/manual/security_space_law/black, -/obj/item/book/manual/security_space_law, -/obj/item/book/manual/security_space_law, -/obj/item/book/manual/security_space_law, -/turf/simulated/floor/carpet, -/area/centcom/jail) "iny" = ( /obj/effect/turf_decal{ dir = 5; @@ -17486,13 +16872,23 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"inL" = ( -/obj/effect/turf_decal/siding/blue/corner{ - color = "#444444"; - dir = 8 +"inC" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/secure_data/laptop, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkredalt" }, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) +/area/centcom/jail) +"inI" = ( +/obj/structure/reagent_dispensers/peppertank{ + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkredaltstrip" + }, +/area/centcom/jail) "inR" = ( /obj/machinery/abductor/experiment{ team = 4 @@ -17517,22 +16913,29 @@ /obj/structure/flora/bush, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/control) -"ioy" = ( -/obj/effect/decal/warning_stripes/white/hollow, -/obj/machinery/vending/nta/ertarmory/janitor{ - req_access = list(101,104,109) - }, -/obj/effect/decal/warning_stripes/white/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "ioP" = ( /obj/machinery/abductor/console{ team = 4 }, /turf/simulated/floor/indestructible/abductor, /area/abductor_ship) +"ipb" = ( +/obj/structure/shuttle/engine/propulsion/burst, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/spacebar) +"ipi" = ( +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 + }, +/obj/structure/shuttle/engine/heater{ + dir = 4 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/supply) "ipn" = ( /turf/simulated/floor/wood, /area/centcom/jail) @@ -17542,17 +16945,6 @@ }, /turf/simulated/floor/indestructible/abductor, /area/abductor_ship) -"ipv" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/turf_decal/siding/white{ - dir = 6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) "ipB" = ( /obj/structure/chair/comfy/shuttle/dark{ dir = 8 @@ -17570,28 +16962,6 @@ /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/indestructible/grass, /area/ninja/outside) -"ipL" = ( -/obj/structure/closet/secure_closet/brig, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9 - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkredalt" - }, -/area/centcom/jail) -"ipZ" = ( -/obj/structure/sign/poster/official/obey{ - pixel_x = -32; - pixel_y = -3 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkredalt" - }, -/area/centcom/jail) "iqh" = ( /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/stripes/line{ @@ -17620,6 +16990,26 @@ icon_state = "dark" }, /area/centcom/zone1) +"ira" = ( +/obj/structure/chair/comfy/lime, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/centcom/zone3) +"irS" = ( +/obj/effect/turf_decal/arrows{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellowaltstrip" + }, +/area/centcom/supply) "isc" = ( /obj/structure/reagent_dispensers/fueltank/chem{ pixel_x = 32 @@ -17661,6 +17051,47 @@ icon_state = "arrivalcorner" }, /area/centcom/evac) +"itf" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/turf_decal/siding/blue/corner{ + color = "#444444"; + dir = 4 + }, +/obj/machinery/light, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) +"itg" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + req_access = list(114) + }, +/obj/item/clothing/suit/judgerobe{ + name = "Supreme judge's robe" + }, +/obj/item/card/id/centcom{ + icon_state = "deathsquad"; + name = "Supreme Judge ID card"; + pixel_x = -3; + pixel_y = -3; + registered_name = "Supreme Judge" + }, +/obj/item/clothing/head/powdered_wig{ + desc = null; + name = "Supreme judge wig" + }, +/obj/item/clothing/under/suit_jacket/really_black{ + name = "Supreme judge suit" + }, +/obj/item/clothing/shoes/centcom{ + desc = null; + name = "Dress shoes" + }, +/obj/item/clothing/gloves/color/white{ + desc = null; + name = "Supreme judge gloves" + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "itt" = ( /obj/structure/window/reinforced{ color = "red"; @@ -17683,12 +17114,6 @@ icon_state = "fancy-wood-cherry" }, /area/shuttle/trade/sol) -"itN" = ( -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "navyblue" - }, -/area/centcom/specops) "itS" = ( /obj/machinery/light/small, /obj/structure/chair/sofa/corp/right{ @@ -17724,6 +17149,17 @@ icon_state = "fancy-wood-cherry" }, /area/shuttle/trade/sol) +"iuv" = ( +/obj/structure/table/glass, +/obj/effect/spawner/lootdrop{ + loot = list(/obj/item/reagent_containers/food/drinks/flask/detflask=10,/obj/item/reagent_containers/food/drinks/cans/tonic=10,/obj/item/reagent_containers/food/drinks/cans/thirteenloko=10,/obj/item/reagent_containers/food/drinks/cans/synthanol=10,/obj/item/reagent_containers/food/drinks/cans/space_mountain_wind=10,/obj/item/reagent_containers/food/drinks/cans/lemon_lime=10,""=70); + name = "Food CC Spawner #3" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/centcom/specops) "iuF" = ( /obj/structure/table, /obj/item/robot_parts/robot_component/armour{ @@ -17736,6 +17172,25 @@ icon_state = "floor12" }, /area/shuttle/syndicate) +"iuR" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/three) +"ivb" = ( +/obj/machinery/door_control/secure{ + id = "Admin_shuttle_access"; + name = "Argos Shuttle Access"; + pixel_x = -24; + pixel_y = -24; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkyellowaltstrip" + }, +/area/centcom/zone3) "ivl" = ( /obj/structure/flora/tree/jungle, /turf/simulated/floor/indestructible/grass, @@ -17744,6 +17199,9 @@ /obj/structure/flora/ausbushes/reedbush, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) +"ivr" = ( +/turf/simulated/floor/carpet, +/area/centcom/jail) "ivw" = ( /obj/effect/turf_decal{ dir = 1; @@ -17778,22 +17236,12 @@ icon_state = "brownoldfull" }, /area/syndicate_mothership/jail) -"ivG" = ( -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkredalt" - }, -/area/centcom/specops) "ivQ" = ( /turf/simulated/floor/plasteel{ dir = 4; icon_state = "arrivalcorner" }, /area/centcom/evac) -"ivZ" = ( -/turf/simulated/wall/shuttle/onlyselfsmooth, -/area/shuttle/nt_droppod) "iwb" = ( /obj/structure/flora/junglebush/c, /turf/simulated/floor/indestructible/grass, @@ -17878,19 +17326,6 @@ }, /turf/simulated/floor/carpet/black, /area/centcom/specops) -"ixR" = ( -/obj/effect/landmark/marauder_exit, -/obj/structure/fans/tiny, -/obj/effect/decal/warning_stripes/north, -/obj/effect/turf_decal/tile/neutral{ - alpha = 220; - color = "black"; - icon_state = "tile_full"; - layer = 9; - opacity = 1 - }, -/turf/simulated/floor/plating, -/area/centcom/supply) "ixW" = ( /obj/effect/turf_decal{ dir = 10; @@ -17904,6 +17339,30 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) +"iyb" = ( +/obj/structure/table/wood, +/obj/item/stamp/magistrate{ + pixel_x = -5; + pixel_y = -5 + }, +/obj/item/stamp/centcom{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/folder/yellow{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/item/folder/red{ + pixel_x = 7 + }, +/obj/item/folder/blue{ + pixel_x = 7; + pixel_y = -7 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/carpet, +/area/centcom/zone3) "iyi" = ( /obj/structure/closet/syndicate/personal, /obj/machinery/light/small, @@ -17919,6 +17378,19 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) +"iyG" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external{ + frequency = 1331; + id_tag = "admin_s_outer"; + name = "Ship External Access"; + req_access = list(101) + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "podfloor_dark" + }, +/area/shuttle/administration) "iyW" = ( /obj/structure/window/reinforced{ dir = 8 @@ -17939,23 +17411,6 @@ name = "floor" }, /area/syndicate_mothership) -"ize" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) -"izf" = ( -/obj/machinery/vending/medical, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkbluealt" - }, -/area/centcom/specops) "izp" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -17998,14 +17453,19 @@ /obj/structure/flora/ausbushes/genericbush, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"iAW" = ( -/obj/structure/closet/crate/can, -/obj/effect/turf_decal/siding{ - color = "#444444"; +"iAD" = ( +/obj/machinery/light/small{ + dir = 8; + tag = "icon-bulb1 (WEST)" + }, +/turf/simulated/floor/shuttle, +/area/shuttle/nt_droppod) +"iAH" = ( +/obj/structure/chair/comfy/shuttle{ dir = 8 }, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) +/turf/simulated/floor/shuttle, +/area/shuttle/pod_4) "iAZ" = ( /obj/effect/turf_decal{ icon_state = "grass_edge_medium"; @@ -18027,33 +17487,6 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"iBn" = ( -/obj/machinery/computer/shuttle/admin{ - dir = 1; - name = "NTV Argos shuttle console" - }, -/obj/effect/turf_decal/stripes/gold{ - dir = 6; - do_not_delete_me = 1; - icon_state = "gs_deadlock" - }, -/turf/simulated/floor/carpet/royalblack, -/area/shuttle/administration) -"iBs" = ( -/obj/structure/shuttle/engine/platform{ - dir = 1; - layer = 2.9 - }, -/obj/structure/window/plasmareinforced{ - color = "#00f700" - }, -/obj/structure/shuttle/engine/heater{ - dir = 1; - icon_state = "heater3x3_side"; - tag = "icon-heater (NORTH)" - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/ninja) "iBt" = ( /turf/simulated/floor/plasteel{ icon_state = "darkredalt" @@ -18098,6 +17531,14 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) +"iCn" = ( +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 + }, +/obj/structure/filingcabinet/filingcabinet, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "iCt" = ( /obj/effect/turf_decal{ icon_state = "grass_edge_medium"; @@ -18117,16 +17558,6 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"iCK" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/gold{ - dir = 6; - do_not_delete_me = 1 - }, -/turf/simulated/floor/carpet/royalblack, -/area/shuttle/administration) "iCL" = ( /obj/structure/flora/rock/jungle, /obj/structure/flora/junglebush, @@ -18134,15 +17565,6 @@ /obj/structure/flora/junglebush/b, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"iDd" = ( -/obj/structure/chair/comfy/beige{ - dir = 4; - layer = 5; - pixel_y = -2 - }, -/obj/effect/turf_decal/siding/brown, -/turf/simulated/floor/carpet/black, -/area/centcom/zone3) "iDq" = ( /obj/machinery/light/small{ dir = 4; @@ -18159,13 +17581,71 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) -"iDy" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 10 +"iDA" = ( +/obj/machinery/door/airlock/external{ + id_tag = "s_docking_airlock"; + name = "Shuttle Airlock"; + req_access = list(150) + }, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "syndicate_elite"; + name = "Side Hull Door"; + opacity = 0; + req_access = list(150) + }, +/obj/structure/fans/tiny, +/obj/docking_port/mobile{ + dir = 8; + dwidth = 3; + height = 5; + id = "sst"; + name = "SST shuttle"; + port_direction = 8; + preferred_direction = 2; + roundstart_move = "sst_away"; + width = 11 + }, +/obj/docking_port/stationary{ + dir = 8; + dwidth = 3; + height = 5; + id = "sst_away"; + name = "Syndicate Base"; + turf_type = /turf/simulated/floor/indestructible/plating; + width = 11 + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/syndicate_elite) +"iDG" = ( +/obj/machinery/porta_turret/centcom/pulse{ + armor = list("melee"=90,"bullet"=90,"laser"=95,"energy"=95,"bomb"=80,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + color = "#666666"; + damtype = "burn"; + health = 1250; + name = "Quarantine Pulse Turret"; + region_max = 12; + scan_range = 12; + shot_delay = 8 + }, +/obj/machinery/door/poddoor/shutters/invincible/fake_r_wall{ + dir = 2; + id_tag = "ERT_Quarantine" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/turf/simulated/floor/carpet/black, /area/centcom/specops) +"iDM" = ( +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkbluealt" + }, +/area/centcom/zone2) "iDT" = ( /obj/effect/turf_decal{ dir = 4; @@ -18187,6 +17667,16 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) +"iED" = ( +/obj/effect/decal/warning_stripes/northeastsouth, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "CC_Armory_DURAND" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" + }, +/area/centcom/specops) "iEE" = ( /obj/effect/turf_decal/siding/green, /obj/structure/flora/ausbushes/lavendergrass, @@ -18200,13 +17690,6 @@ icon_state = "darkfull" }, /area/syndicate_mothership) -"iEQ" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 1; - tag = "icon-propulsion (NORTH)" - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/funeral) "iEU" = ( /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) @@ -18217,12 +17700,9 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"iEW" = ( -/obj/machinery/vending/robotics/nt/durand, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) +"iFf" = ( +/turf/simulated/floor/wood, +/area/centcom/evac) "iFr" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-6"; @@ -18233,11 +17713,18 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) -"iFF" = ( -/obj/machinery/light, -/turf/simulated/floor/carpet/red, -/area/ninja/outpost) -"iFV" = ( +"iFB" = ( +/obj/structure/chair/sofa/corp/left, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkredalt" + }, +/area/centcom/specops) +"iFF" = ( +/obj/machinery/light, +/turf/simulated/floor/carpet/red, +/area/ninja/outpost) +"iFV" = ( /obj/effect/turf_decal/siding/green{ dir = 6 }, @@ -18262,16 +17749,6 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"iGk" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/shuttle/engine/heater, -/turf/simulated/floor/plating/airless, -/area/shuttle/pod_4) "iGn" = ( /obj/effect/turf_decal{ icon_state = "grass_edge_medium_corner" @@ -18308,19 +17785,39 @@ icon_state = "darkfull" }, /area/syndicate_mothership) -"iGP" = ( -/obj/machinery/suit_storage_unit/standard_unit/ertamber{ - req_access = list(104,109) +"iGT" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 1; + icon_state = "darkbluealt" }, -/area/centcom/specops) +/area/centcom/zone2) "iGX" = ( /obj/structure/table/wood/fancy, /obj/item/toy/plushie/fluff/fox, /turf/simulated/floor/wood, /area/centcom/zone1) +"iHz" = ( +/obj/effect/turf_decal/tile/neutral{ + color = "black"; + icon_state = "tile_full"; + layer = 9 + }, +/obj/effect/step_trigger/teleporter{ + icon = 'icons/mob/screen_gen.dmi'; + icon_state = "x2"; + teleport_x = 183; + teleport_y = 63; + teleport_z = 1 + }, +/turf/simulated/floor/plasteel{ + color = "gray"; + dir = 8; + icon_state = "rampbottom" + }, +/area/centcom/specops) "iHB" = ( /obj/structure/window/reinforced{ dir = 1 @@ -18342,38 +17839,24 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"iIs" = ( -/turf/simulated/wall/indestructible/reinforced, -/area/centcom/evac) -"iIu" = ( -/obj/item/gun/projectile/automatic/pistol/m1911, -/obj/item/ammo_box/magazine/m45, -/obj/item/ammo_box/magazine/m45, -/obj/item/ammo_box/magazine/m45, -/obj/item/clothing/head/helmet/space/deathsquad/beret, -/obj/item/clothing/shoes/combat, -/obj/item/clothing/under/syndicate/combat, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/suit/space/deathsquad/officer, -/obj/item/storage/box/handcuffs, -/obj/item/storage/box/flashbangs, -/obj/item/clothing/mask/gas, -/obj/item/tank/internals/emergency_oxygen/double, -/obj/item/radio/headset/ert{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/item/storage/box/centcomofficer, -/obj/item/clothing/head/beret/centcom/officer, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 +"iIo" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 4; + name = "ERT shuttle"; + pixel_x = -6 }, -/obj/structure/closet/cabinet{ - req_access = list(114) +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "navybluealtstrip" }, -/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) +"iIs" = ( +/turf/simulated/wall/indestructible/reinforced, +/area/centcom/evac) +"iJd" = ( +/obj/machinery/light, +/turf/simulated/floor/carpet/red, +/area/shuttle/administration) "iJi" = ( /obj/structure/closet{ custom_door_overlay = "white"; @@ -18384,41 +17867,11 @@ icon_state = "fancy-wood-cherry" }, /area/shuttle/trade/sol) -"iJk" = ( -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 8; - frequency = 1331; - id_tag = "admin_s_pump" - }, -/turf/simulated/floor/shuttle{ - icon_state = "vfloor" - }, -/area/shuttle/administration) "iJo" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp, /turf/simulated/floor/carpet, /area/centcom/evac) -"iJC" = ( -/obj/structure/filingcabinet/filingcabinet, -/obj/machinery/door_control/secure{ - id = "CC_Players_In"; - name = "Civilian Access"; - pixel_x = -24; - pixel_y = 32; - req_access = list(114) - }, -/turf/simulated/floor/wood, -/area/centcom/zone2) -"iJG" = ( -/obj/effect/decal/warning_stripes/white/hollow, -/obj/machinery/vending/nta/ertarmory/yellow{ - req_access = list(104,109) - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkyellowfull" - }, -/area/centcom/specops) "iKf" = ( /obj/effect/turf_decal{ dir = 1; @@ -18449,6 +17902,9 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership) +"iKU" = ( +/turf/simulated/wall/shuttle/onlyselfsmooth, +/area/shuttle/nt_droppod) "iLk" = ( /obj/structure/rack, /obj/machinery/light, @@ -18463,21 +17919,43 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) +"iLs" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 + }, +/turf/simulated/floor/glass/reinforced, +/area/centcom/bridge) "iLu" = ( /obj/structure/flora/grass/jungle/b, /obj/structure/flora/junglebush/b, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) "iLM" = ( -/obj/effect/decal/warning_stripes/northeastsouth, /obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "CC_Armory_DURAND" + dir = 8; + id_tag = "CC_supply_external"; + layer = 5; + locked = 1 + }, +/obj/machinery/door_control/secure{ + id = "CC_supply_external"; + name = "Supply Internal Shutters"; + pixel_y = 24; + req_access = list(114) }, /turf/simulated/floor/plasteel{ - icon_state = "darkfull" + dir = 1; + icon_state = "darkyellowalt" }, -/area/centcom/specops) +/area/centcom/supply) "iMb" = ( /obj/structure/table/wood/fancy/red, /obj/item/storage/firstaid/ancient{ @@ -18492,14 +17970,6 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) -"iMk" = ( -/obj/structure/table, -/obj/item/paper, -/obj/machinery/door/window/brigdoor{ - dir = 8 - }, -/turf/simulated/floor/carpet, -/area/centcom/zone2) "iMy" = ( /obj/structure/closet/secure_closet/freezer/meat{ req_access = list(102) @@ -18542,18 +18012,6 @@ icon_state = "barber" }, /area/centcom/jail) -"iNb" = ( -/obj/structure/holohoop{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/evac) "iNj" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/wood/corner{ @@ -18561,6 +18019,14 @@ }, /turf/simulated/floor/carpet/green, /area/ninja/outpost) +"iNI" = ( +/obj/structure/bookcase/manuals, +/obj/item/book/manual/sop_medical, +/obj/item/book/manual/sop_science, +/obj/item/book/manual/sop_security, +/obj/item/book/manual/sop_service, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "iNW" = ( /obj/effect/turf_decal{ dir = 8; @@ -18601,6 +18067,12 @@ }, /turf/simulated/floor/carpet/black, /area/centcom/zone1) +"iPn" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/simulated/wall/indestructible/reinforced, +/area/centcom/specops) "iPw" = ( /obj/item/twohanded/required/kirbyplants, /obj/structure/curtain/black{ @@ -18629,14 +18101,6 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"iQy" = ( -/obj/structure/bookcase, -/obj/item/paper{ - name = "Главный строить мужик репорт"; - info = "
" - }, -/turf/simulated/floor/plating, -/area/centcom/zone2) "iQH" = ( /obj/machinery/sleeper/syndie, /obj/structure/curtain/black{ @@ -18651,17 +18115,35 @@ "iRb" = ( /turf/simulated/wall/shuttle, /area/shuttle/pod_2) +"iRc" = ( +/obj/structure/rack, +/obj/item/storage/firstaid/tactical, +/obj/item/storage/firstaid/tactical, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkbluealt" + }, +/area/centcom/specops) +"iRf" = ( +/obj/machinery/door_control/secure{ + id = "CC_Armory_NG"; + name = "Nerve Gas"; + pixel_x = -24; + pixel_y = 24; + req_access = list(114) + }, +/obj/structure/sign/greencross{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "navybluecorners" + }, +/area/centcom/specops) "iRq" = ( /obj/item/restraints/handcuffs/pinkcuffs, /turf/simulated/floor/plating, /area/centcom/specops) -"iRw" = ( -/obj/structure/bookcase/manuals, -/obj/item/book/manual/sop_command, -/obj/item/book/manual/sop_engineering, -/obj/item/book/manual/sop_general, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "iRG" = ( /obj/effect/turf_decal/plaque{ layer = 3 @@ -18678,21 +18160,6 @@ icon_state = "darkfull" }, /area/syndicate_mothership/jail) -"iRV" = ( -/obj/structure/table/glass, -/obj/machinery/photocopier/faxmachine/longrange{ - department = "Central Command" - }, -/obj/effect/landmark/commando_manual, -/obj/machinery/status_display{ - pixel_x = -32 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "iRW" = ( /obj/effect/turf_decal{ dir = 5; @@ -18704,16 +18171,12 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"iSh" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 +"iRY" = ( +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "darkyellowalt" }, -/obj/structure/shuttle/engine/heater, -/turf/simulated/floor/plating/airless, -/area/shuttle/pod_3) +/area/centcom/supply) "iSs" = ( /obj/effect/turf_decal{ dir = 5; @@ -18727,21 +18190,6 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"iSJ" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/turf_decal/siding/white, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/evac) -"iSK" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "iSY" = ( /obj/structure/railing, /obj/machinery/light/small{ @@ -18795,14 +18243,6 @@ icon_state = "grimy" }, /area/centcom/zone1) -"iTF" = ( -/obj/effect/decal/nanotrasen_logo{ - pixel_x = 16 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "iUr" = ( /obj/effect/turf_decal{ dir = 4; @@ -18833,39 +18273,41 @@ /obj/machinery/door/airlock/external, /turf/simulated/floor/shuttle/plating, /area/shuttle/funeral) -"iUX" = ( -/obj/effect/turf_decal/tile/neutral{ - alpha = 200; - color = "black"; - icon_state = "tile_full"; - layer = 9; - opacity = 1 - }, -/turf/simulated/floor/plating, -/area/centcom/supply) -"iVe" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/papershredder, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "iVo" = ( /turf/simulated/wall/indestructible/abductor{ icon_state = "alien15" }, /area/abductor_ship) +"iVu" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/centcom/specops) "iVA" = ( /obj/structure/flora/grass/jungle/b, /obj/structure/flora/ausbushes/sunnybush, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) +"iVV" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/pod_3) "iVW" = ( /obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/floor/shuttle{ icon_state = "floor13" }, /area/shuttle/ninja) +"iVX" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/simulated/floor/plating/airless, +/area/shuttle/escape) "iWh" = ( /obj/effect/turf_decal{ dir = 8; @@ -18890,6 +18332,17 @@ }, /turf/simulated/wall/indestructible/fakeglass, /area/centcom/jail) +"iXk" = ( +/obj/structure/table/reinforced, +/obj/machinery/kitchen_machine/microwave/upgraded{ + pixel_y = 5 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault"; + tag = "icon-vault (WEST)" + }, +/area/centcom/specops) "iXm" = ( /obj/effect/turf_decal{ dir = 5; @@ -18901,64 +18354,44 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"iXH" = ( -/obj/structure/falsewall/reinforced{ - req_access = list(114); - layer = 2.9 - }, -/obj/effect/mine/sound/bwoink{ - invisibility = 1; - layer = 2.8 +"iXF" = ( +/obj/structure/sign/poster/official/help_others{ + pixel_y = 32 }, +/obj/machinery/atmospherics/unary/cold_sink/freezer/upgraded, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/specops) -"iXL" = ( -/obj/machinery/computer/med_data, -/obj/structure/railing{ - layer = 4.3; - pixel_y = 32 - }, -/obj/structure/window/reinforced{ +"iXI" = ( +/obj/structure/chair/comfy/shuttle{ dir = 4 }, -/turf/simulated/floor/plasteel{ - icon_state = "darkbluefull" - }, -/area/centcom/bridge) -"iYa" = ( -/obj/structure/table/glass, -/obj/structure/window/reinforced{ +/turf/simulated/floor/shuttle, +/area/shuttle/nt_droppod) +"iZX" = ( +/obj/machinery/atmospherics/unary/tank/air{ dir = 8 }, -/obj/item/toy/desk/newtoncradle, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"iYd" = ( -/obj/structure/shuttle/engine/heater{ - icon_state = "heater3x3_side"; - tag = "icon-heater (NORTH)" +/obj/effect/turf_decal/stripes/black{ + dir = 8; + do_not_delete_me = 1 }, -/turf/simulated/floor/plating/airless, -/area/centcom/specops) -"iYp" = ( -/obj/machinery/vending/mech/ntc/weapon{ - req_access = list(114) +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "podfloor_dark" }, +/area/shuttle/administration) +"jaY" = ( +/obj/machinery/vending/nta/ertarmory/green/cc_jail, +/turf/simulated/floor/wood, +/area/centcom/jail) +"jbd" = ( +/obj/machinery/vending/robotics/nt/durand, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/supply) -"iYs" = ( -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkred" - }, /area/centcom/specops) -"iYY" = ( -/turf/simulated/wall/shuttle/onlyselfsmooth, -/area/shuttle/pod_3) "jbt" = ( /obj/structure/table, /obj/machinery/door_control/secure{ @@ -19052,6 +18485,24 @@ }, /turf/simulated/floor/indestructible/abductor, /area/abductor_ship) +"jbQ" = ( +/obj/structure/table, +/obj/item/storage/lockbox/mindshield, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "dark" + }, +/area/shuttle/administration) +"jbY" = ( +/obj/structure/rack, +/obj/item/ammo_box/shotgun, +/obj/item/ammo_box/shotgun, +/obj/item/ammo_box/shotgun, +/obj/effect/decal/warning_stripes/blue/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "jcf" = ( /mob/living/simple_animal/hostile/creature{ name = "Experiment 35b" @@ -19084,9 +18535,22 @@ /obj/structure/holosign/wetsign, /turf/simulated/floor/plasteel, /area/centcom/evac) -"jcL" = ( -/turf/simulated/wall/shuttle, -/area/shuttle/gamma) +"jcM" = ( +/obj/structure/chair/comfy/beige{ + dir = 8; + layer = 4; + pixel_y = -2 + }, +/obj/structure/railing, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) +"jdg" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 9 + }, +/turf/simulated/floor/glass/reinforced, +/area/centcom/specops) "jdj" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/condiment/enzyme{ @@ -19098,6 +18562,42 @@ tag = "icon-redfull (NORTHWEST)" }, /area/centcom/zone1) +"jdl" = ( +/obj/structure/rack, +/obj/effect/decal/warning_stripes/green/hollow, +/obj/item/ammo_box/a40mm, +/obj/item/ammo_box/a40mm, +/obj/item/ammo_box/magazine/m556, +/obj/item/ammo_box/magazine/m556, +/obj/item/ammo_box/magazine/m556, +/obj/item/ammo_box/magazine/m556, +/obj/item/ammo_box/magazine/m556, +/obj/item/ammo_box/magazine/m556, +/obj/item/ammo_box/magazine/m556, +/obj/item/ammo_box/magazine/m556, +/obj/item/ammo_box/magazine/m556, +/obj/item/ammo_box/magazine/m556, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"jdQ" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/structure/dresser, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/zone1) +"jec" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/pod_2) "jed" = ( /obj/machinery/door/window/brigdoor{ base_state = "rightsecure"; @@ -19195,18 +18695,12 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"jfd" = ( -/obj/machinery/computer/communications, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the Special Ops team."; - name = "Security Station Monitor"; - network = list("SS13","Research Outpost","Mining Outpost"); - pixel_y = -30 - }, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" +"jfm" = ( +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkyellow" }, -/area/shuttle/specops) +/area/centcom/supplypod/loading/two) "jfv" = ( /obj/machinery/computer/shuttle/ruins_transport_shuttle, /turf/simulated/floor/shuttle{ @@ -19235,24 +18729,25 @@ icon_state = "navybluealt" }, /area/syndicate_mothership/control) -"jfZ" = ( -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkredalt" +"jgg" = ( +/obj/structure/table/glass, +/obj/item/flashlight/lamp/green{ + pixel_x = -6; + pixel_y = 16 }, -/area/centcom/specops) -"jgl" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "CC_supply_external2"; - layer = 5; - locked = 1 +/obj/item/paper_bin/nanotrasen{ + pixel_x = -2; + pixel_y = 8 }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkyellowalt" +/obj/item/pen/fancy{ + pixel_x = 8 }, -/area/centcom/supply) +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) "jgE" = ( /obj/effect/turf_decal{ dir = 9; @@ -19260,14 +18755,15 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"jhi" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - dir = 2 +"jgV" = ( +/obj/structure/window/reinforced{ + dir = 4 }, -/turf/simulated/floor/wood{ - icon_state = "light-fancy-wood" +/obj/structure/chair/office/dark{ + dir = 1 }, -/area/centcom/specops) +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "jhz" = ( /obj/effect/turf_decal{ dir = 4; @@ -19276,26 +18772,14 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"jhQ" = ( -/obj/structure/table/glass, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/reagent_containers/food/snacks/baguette=10,/obj/item/reagent_containers/food/snacks/applepie=10,/obj/item/reagent_containers/food/snacks/applepie=10,/obj/item/reagent_containers/food/snacks/soup/bloodsoup=10,/obj/item/reagent_containers/food/snacks/boiledrice=10,/obj/item/reagent_containers/food/snacks/carrotfries=10,/obj/item/reagent_containers/food/drinks/cans/cola=10,""=70); - name = "Food CC Spawner #1" - }, -/obj/structure/window/reinforced/survival_pod{ - dir = 6; - pixel_y = -1; - pixel_x = 1; - density = 0 - }, -/obj/structure/window/reinforced{ - layer = 3.1; - armor = list("melee"=100,"bullet"=100,"laser"=0,"energy"=0,"bomb"=25,"bio"=100,"rad"=100,"fire"=80,"acid"=100) +"jhY" = ( +/obj/machinery/vending/ntc_resources{ + req_access = list(114) }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/supply) "jic" = ( /obj/structure/chair/sofa/left{ dir = 1 @@ -19305,6 +18789,19 @@ icon_state = "darkblue" }, /area/centcom/zone1) +"jid" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone3) "jih" = ( /obj/effect/turf_decal{ dir = 8; @@ -19322,6 +18819,14 @@ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' }, /area/shuttle/assault_pod) +"jiz" = ( +/obj/machinery/status_display/supply_display{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) "jiH" = ( /obj/effect/turf_decal{ dir = 4; @@ -19334,6 +18839,9 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) +"jiI" = ( +/turf/simulated/wall/shuttle/nodiagonal, +/area/shuttle/administration) "jiV" = ( /obj/effect/mapping_helpers/light, /turf/simulated/floor/indestructible/grass, @@ -19357,16 +18865,6 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) -"jjT" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/turf_decal/siding/blue/corner{ - color = "#444444" - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "jkA" = ( /obj/effect/turf_decal{ dir = 1; @@ -19388,13 +18886,16 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"jkH" = ( -/obj/machinery/vending/wallmed{ - pixel_y = -32 +"jkL" = ( +/obj/machinery/door_control/secure{ + id = "CC_Armory_SRT"; + name = "SRT Team 1"; + pixel_x = 25; + pixel_y = -25; + req_access = list(114) }, -/turf/simulated/floor/indestructible{ - dir = 6; - icon_state = "darkgreynavyblue" +/turf/simulated/floor/plasteel{ + icon_state = "navybluealtstrip" }, /area/centcom/specops) "jkR" = ( @@ -19451,6 +18952,15 @@ /obj/item/flashlight/lantern, /turf/simulated/floor/carpet, /area/centcom/evac) +"jlH" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellowalt" + }, +/area/centcom/supply) "jlL" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -19495,34 +19005,6 @@ icon_state = "dark" }, /area/centcom/zone1) -"jmf" = ( -/obj/machinery/door/airlock/external{ - id_tag = "s_docking_airlock"; - name = "Shuttle Hatch"; - req_access = list(109) - }, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 11; - id = "specops"; - name = "ert shuttle"; - roundstart_move = "specops_away"; - width = 5 - }, -/obj/structure/fans/tiny, -/obj/docking_port/stationary/transit{ - dir = 8; - dwidth = 2; - height = 11; - id = "specops_transit"; - name = "specops in transit"; - pixel_x = 32; - turf_type = /turf/space/transit/east; - width = 5 - }, -/turf/simulated/floor/shuttle/plating, -/area/shuttle/specops) "jml" = ( /obj/effect/turf_decal{ dir = 9; @@ -19534,14 +19016,6 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"jmt" = ( -/obj/structure/window/reinforced/survival_pod{ - dir = 10; - pixel_x = -1; - pixel_y = -1 - }, -/turf/simulated/wall/indestructible/reinforced, -/area/centcom/zone2) "jmv" = ( /obj/machinery/light/small{ brightness_range = 6; @@ -19598,6 +19072,38 @@ }, /turf/simulated/floor/carpet/black, /area/centcom/zone3) +"jnM" = ( +/obj/machinery/recharger/wallcharger{ + pixel_x = -24 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = -24; + pixel_y = -16 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = -24; + pixel_y = -8 + }, +/obj/structure/table/reinforced, +/obj/item/storage/box/lights/mixed, +/obj/item/storage/box/lights/mixed, +/obj/item/lightreplacer, +/obj/item/lightreplacer, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "navybluealt" + }, +/area/centcom/specops) +"jok" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4; + icon_state = "burst_l" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/pod_1) "joo" = ( /obj/effect/turf_decal{ dir = 10; @@ -19611,44 +19117,6 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"jop" = ( -/obj/structure/toilet{ - dir = 8; - name = "Трон старшего администратора" - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/door_control{ - id = "CC_toilet_unit4"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - pixel_y = 25; - specialfunctions = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/centcom/zone1) -"joJ" = ( -/obj/effect/turf_decal/tile/neutral{ - color = "black"; - icon_state = "tile_full"; - layer = 9 - }, -/obj/effect/step_trigger/teleporter{ - teleport_x = 183; - teleport_y = 61; - teleport_z = 1; - icon = 'icons/mob/screen_gen.dmi'; - icon_state = "x2" - }, -/turf/simulated/floor/plasteel{ - color = "gray"; - dir = 8; - icon_state = "rampbottom" - }, -/area/centcom/specops) "joS" = ( /obj/machinery/light/small, /obj/structure/sign/poster/contraband/random{ @@ -19659,12 +19127,6 @@ icon_state = "darkjail" }, /area/syndicate_mothership/jail) -"joV" = ( -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "navybluealtstrip" - }, -/area/centcom/supply) "jph" = ( /obj/effect/turf_decal{ dir = 8; @@ -19702,25 +19164,10 @@ icon_state = "dark" }, /area/shuttle/syndicate) -"jpB" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) "jpK" = ( /obj/structure/flora/ausbushes/ywflowers, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"jpQ" = ( -/obj/structure/coatrack, -/obj/structure/window/reinforced, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/zone1) "jqa" = ( /obj/effect/turf_decal{ dir = 4; @@ -19748,15 +19195,6 @@ }, /turf/simulated/floor/carpet/orange, /area/shuttle/trade/sol) -"jqo" = ( -/obj/structure/chair/sofa/corp/left{ - dir = 4 - }, -/obj/structure/sign/poster/official/space_cops{ - pixel_y = 32 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "jrj" = ( /obj/machinery/light, /turf/simulated/floor/carpet, @@ -19794,8 +19232,8 @@ /area/syndicate_mothership/outside) "jsa" = ( /obj/machinery/conveyor/inverted{ - id = "SFBQMLoad2"; - dir = 6 + dir = 6; + id = "SFBQMLoad2" }, /turf/simulated/floor/plasteel{ icon_state = "darkfull" @@ -19813,33 +19251,12 @@ /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"jsJ" = ( -/obj/structure/sign/poster/official/nanotrasen_logo{ - pixel_y = -32 - }, -/obj/structure/chair/comfy/beige{ - dir = 1 - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) -"jsR" = ( -/obj/structure/chair/comfy/purp, -/turf/simulated/floor/carpet/red, -/area/centcom/bridge) "jsZ" = ( /obj/structure/table/abductor, /obj/item/retractor/alien, /obj/item/hemostat/alien, /turf/simulated/floor/indestructible/abductor, /area/abductor_ship) -"jta" = ( -/obj/machinery/computer/cloning{ - dir = 8 - }, -/turf/simulated/floor/shuttle{ - icon_state = "floor3" - }, -/area/shuttle/administration) "jtb" = ( /obj/machinery/light/small, /turf/simulated/floor/plasteel{ @@ -19847,47 +19264,54 @@ icon_state = "darkjail" }, /area/syndicate_mothership/jail) -"jtt" = ( -/obj/machinery/dna_scannernew/upgraded, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "whiteblue" +"jtj" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 + }, +/obj/effect/turf_decal/siding/blue/corner{ + dir = 1 }, +/turf/simulated/floor/glass, +/area/centcom/bridge) +"jtl" = ( +/obj/machinery/light/spot, +/turf/simulated/wall/indestructible/reinforced, /area/centcom/specops) -"jtQ" = ( -/obj/machinery/vending/clothing, -/turf/simulated/floor/wood, -/area/centcom/zone1) -"juc" = ( -/obj/item/gun/energy/clown/security{ - desc = "Поговаривают что это оружие сделано концерном Клоун-Варденов, может поэтому оно и спрятано?." +"jtm" = ( +/obj/machinery/door/window/brigdoor{ + base_state = "rightsecure"; + dir = 1; + icon_state = "rightsecure"; + req_access = list(101) }, -/obj/item/gun/energy/clown/security, -/obj/item/gun/energy/clown/security{ - pixel_x = 3; - pixel_y = -3 +/turf/simulated/floor/carpet, +/area/centcom/zone2) +"jtn" = ( +/obj/machinery/optable, +/obj/machinery/defibrillator_mount/loaded{ + pixel_x = 30; + pixel_y = 3 }, -/obj/item/gun/energy/clown/security{ - pixel_x = 3; - pixel_y = -3 +/turf/simulated/floor/plasteel{ + icon_state = "white" }, -/obj/item/gun/energy/clown/security{ +/area/centcom/specops) +"jtL" = ( +/obj/item/paper_bin/nanotrasen{ pixel_x = 3; - pixel_y = -3 - }, -/obj/item/gun/energy/clown/security, -/obj/item/gun/energy/clown/security, -/obj/item/gun/energy/clown/security{ - pixel_x = -3; - pixel_y = 3 + pixel_y = 12 }, -/obj/item/gun/energy/clown/security{ - pixel_x = -3; - pixel_y = 3 +/obj/item/pen/multi/fountain, +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" }, -/obj/structure/rack/gunrack, -/turf/simulated/floor/mineral/bananium, -/area/centcom/specops) +/area/centcom/zone3) +"jtQ" = ( +/obj/machinery/vending/clothing, +/turf/simulated/floor/wood, +/area/centcom/zone1) "jue" = ( /obj/effect/landmark/abductor/scientist, /turf/simulated/floor/indestructible/abductor, @@ -19905,10 +19329,6 @@ }, /turf/simulated/floor/carpet/black, /area/centcom/zone2) -"juM" = ( -/obj/item/book/random, -/turf/simulated/floor/wood, -/area/centcom/zone2) "jvb" = ( /obj/effect/landmark/abductor/agent, /turf/simulated/floor/indestructible/abductor, @@ -19970,14 +19390,6 @@ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' }, /area/shuttle/ussp) -"jvJ" = ( -/obj/machinery/vending/cola/free, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault"; - tag = "icon-vault (WEST)" - }, -/area/centcom/specops) "jvR" = ( /obj/effect/turf_decal{ dir = 4; @@ -19992,20 +19404,6 @@ name = "floor" }, /area/syndicate_mothership/outside) -"jvX" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 - }, -/obj/effect/turf_decal/siding{ - color = "#444444" - }, -/turf/simulated/floor/glass, -/area/centcom/zone3) "jwD" = ( /turf/simulated/floor/shuttle{ icon_state = "floor4" @@ -20022,6 +19420,30 @@ name = "floor" }, /area/syndicate_mothership/outside) +"jxo" = ( +/obj/structure/table/glass, +/obj/item/folder/blue{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/folder/red{ + pixel_x = -5; + pixel_y = -5 + }, +/obj/item/folder/white{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/folder/yellow{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 5 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) "jxr" = ( /obj/structure/table/wood/fancy/orange, /obj/item/paper_bin{ @@ -20048,15 +19470,6 @@ }, /turf/simulated/floor/indestructible/abductor, /area/abductor_ship) -"jxO" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/evac) "jyl" = ( /obj/machinery/vending/snack, /obj/machinery/light/small{ @@ -20075,6 +19488,23 @@ }, /turf/simulated/floor/carpet/red, /area/syndicate_mothership/control) +"jyR" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/centcom/specops) +"jyS" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/statue/artchair{ + layer = 10; + pixel_y = 10 + }, +/obj/effect/turf_decal/plaque{ + layer = 3 + }, +/turf/simulated/floor/grass, +/area/centcom/evac) "jyW" = ( /obj/effect/turf_decal{ dir = 9; @@ -20086,6 +19516,60 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) +"jzc" = ( +/obj/structure/closet/secure_closet/guncabinet{ + layer = 2.9; + name = "combat shotgun" + }, +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 + }, +/obj/machinery/light/spot{ + dir = 8; + tag = "icon-tube1 (WEST)" + }, +/obj/item/ammo_box/shotgun/buck, +/obj/item/ammo_box/shotgun/buck, +/obj/item/ammo_box/shotgun/buck, +/obj/item/gun/projectile/shotgun/automatic/combat, +/obj/item/gun/projectile/shotgun/automatic/combat, +/obj/item/gun/projectile/shotgun/automatic/combat, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor4" + }, +/area/shuttle/gamma) +"jzh" = ( +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/centcom/specops) +"jzi" = ( +/obj/machinery/computer/shuttle/ert, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) +"jzj" = ( +/obj/structure/sign/poster/official/space_cops{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredalt" + }, +/area/centcom/jail) "jzk" = ( /obj/structure/chair/sofa/corp/left{ dir = 8 @@ -20094,25 +19578,12 @@ icon_state = "fancy-wood-cherry" }, /area/shuttle/trade/sol) -"jzp" = ( -/obj/effect/turf_decal/siding/white/corner, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"jzw" = ( -/obj/machinery/door_control/secure{ - id = "CC_supply_space"; - name = "Supply Blastdoor"; - pixel_y = 24; - req_access = list(114) - }, -/obj/machinery/conveyor_switch/oneway{ - id = "CC_crate" - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkyellowalt" +"jzx" = ( +/obj/machinery/door/airlock/diamond{ + locked = 1 }, -/area/centcom/supply) +/turf/simulated/floor/plating, +/area/centcom/specops) "jAj" = ( /obj/structure/flora/ausbushes/sunnybush, /turf/simulated/floor/indestructible/grass, @@ -20132,14 +19603,26 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"jAZ" = ( -/obj/effect/turf_decal/box/white{ - pixel_y = 16 +"jAV" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/transport) +"jAW" = ( +/obj/effect/turf_decal/stripes/line{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding4" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + color = "gray"; + dir = 1; + icon_state = "rampbottom" }, -/area/centcom/jail) +/area/centcom/supply) "jBc" = ( /turf/simulated/floor/plasteel{ dir = 10; @@ -20157,81 +19640,34 @@ icon_state = "grimy" }, /area/centcom/zone1) -"jBo" = ( -/obj/machinery/computer/communications{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/gold{ - dir = 6; - do_not_delete_me = 1 - }, -/obj/machinery/light/small, -/turf/simulated/floor/carpet/royalblack, -/area/shuttle/administration) -"jBz" = ( -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/machinery/portable_atmospherics/canister/sleeping_agent{ - maximum_pressure = 50000 - }, -/obj/structure/window/reinforced{ +"jBs" = ( +/obj/structure/toilet, +/obj/machinery/light/small{ dir = 4 }, -/obj/machinery/conveyor{ - id = "N2O"; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) -"jBQ" = ( -/obj/machinery/porta_turret/centcom/pulse{ - armor = list("melee"=90,"bullet"=90,"laser"=95,"energy"=95,"bomb"=80,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - color = "#666666"; - damtype = "burn"; - health = 1250; - region_max = 12; - scan_range = 12; - shot_delay = 8; - name = "Quarantine Pulse Turret" - }, -/obj/machinery/door/poddoor/shutters/invincible/fake_r_wall{ - dir = 2; - id_tag = "ERT_Quarantine" - }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "white" }, +/area/centcom/jail) +"jBK" = ( +/obj/structure/bookcase/manuals, +/obj/item/book/manual/sop_supply, +/obj/item/book/manual/nuclear, +/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) -"jBZ" = ( -/obj/effect/decal/warning_stripes/north, -/obj/effect/decal/warning_stripes/south, -/obj/effect/turf_decal/caution/stand_clear{ - dir = 1; - do_not_delete_me = 1 - }, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 1; - id_tag = "CC_Armory_Grenade" +"jBV" = ( +/obj/structure/filingcabinet/employment, +/turf/simulated/floor/bluegrid, +/area/centcom/bridge) +"jCl" = ( +/obj/machinery/light{ + dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "darkfull" + dir = 4; + icon_state = "navyblue" }, -/area/centcom/specops) -"jCg" = ( -/obj/structure/bookcase/random/fiction, -/obj/item/book/manual/security_space_law/black, -/obj/item/book/manual/sop_command, -/obj/item/book/manual/sop_security, -/obj/item/book/manual/faxes, -/obj/item/book/manual/sop_legal, -/obj/item/book/manual/sop_medical, -/obj/item/book/manual/sop_science, -/obj/item/book/manual/sop_service, -/obj/item/book/manual/sop_supply, -/obj/item/book/manual/sop_engineering, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) +/area/centcom/supplypod/loading/ert) "jCo" = ( /obj/structure/chair, /obj/effect/decal/cleanable/blood, @@ -20239,21 +19675,64 @@ icon_state = "darkfull" }, /area/syndicate_mothership/jail) -"jCz" = ( -/obj/effect/turf_decal/arrows{ - dir = 1 +"jDr" = ( +/obj/structure/closet{ + icon_closed = "syndicate1"; + icon_opened = "syndicate1open"; + icon_state = "syndicate1" }, -/turf/simulated/floor/plasteel{ - icon_state = "darkyellowcornersalt" +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/gun/projectile/automatic/proto, +/obj/item/gun/energy/gun/blueshield, +/obj/item/clothing/glasses/hud/security/sunglasses/aviators, +/obj/item/reagent_containers/food/snacks/candy/mre, +/obj/item/reagent_containers/hypospray/combat, +/obj/item/radio/headset/ert/alt{ + desc = null; + name = "SRT bowman headset" }, -/area/centcom/supply) -"jCG" = ( -/obj/machinery/photocopier, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 +/obj/item/clothing/head/beret/centcom/officer/navy{ + desc = null; + name = "SRT beret" + }, +/obj/item/clothing/shoes/combat/swat{ + name = "SRT special shoes" + }, +/obj/item/clothing/gloves/combat{ + name = "Combat gloves" + }, +/obj/item/storage/belt/security/webbing/srt/full, +/obj/item/storage/backpack/satchel_blueshield/srt, +/obj/item/clothing/suit/storage/blueshield/srt, +/obj/item/clothing/suit/armor/bulletproof{ + name = "SRT bulletproof vest" + }, +/obj/item/shield/riot/tele, +/obj/item/suppressor, +/obj/item/CQC_manual, +/obj/item/implanter/mindshield/ert, +/obj/item/card/id/centcom{ + name = "Special Reaction Team Member card"; + rank = "Special Reaction Team Member"; + registered_name = "Special Reaction Team Member" + }, +/obj/item/storage/box/responseteam, +/obj/item/clothing/under/fluff/jay_turtleneck{ + desc = null; + name = "SRT uniform" + }, +/obj/item/gun/projectile/automatic/pistol/sp8/sp8ar, +/obj/item/ammo_box/magazine/sp8, +/obj/item/ammo_box/magazine/sp8, +/obj/item/implanter/dust, +/obj/item/clothing/accessory/holster, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "navyblue" }, -/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "jDy" = ( /obj/effect/turf_decal{ @@ -20264,13 +19743,6 @@ "jDB" = ( /turf/simulated/wall/indestructible/fakeglass, /area/centcom/zone3) -"jDH" = ( -/obj/mecha/combat/marauder/loaded, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "navybluecorners" - }, -/area/centcom/specops) "jDS" = ( /turf/simulated/floor/plating{ icon = 'icons/turf/floors.dmi'; @@ -20312,20 +19784,6 @@ icon_state = "darkgrey" }, /area/syndicate_mothership) -"jEF" = ( -/obj/machinery/door_control/secure{ - id = "adminshuttleshutters"; - name = "Shutter control"; - pixel_x = 5; - pixel_y = -23; - req_access = list(101) - }, -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" - }, -/area/shuttle/administration) "jEO" = ( /obj/item/storage/fancy/crayons, /obj/structure/table/wood{ @@ -20343,25 +19801,13 @@ icon = 'icons/turf/walls/fake_plastitanium_glass.dmi' }, /area/syndicate_mothership/infteam) -"jEY" = ( -/obj/effect/turf_decal/stripes/black{ - do_not_delete_me = 1 - }, -/obj/effect/turf_decal/stripes/black{ - dir = 1; - do_not_delete_me = 1 - }, -/obj/machinery/door/airlock/centcom{ - id_tag = "adminshuttle"; - name = "Workshop"; - opacity = 1; - req_access = list(101) - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "podfloor_dark" +"jFA" = ( +/obj/machinery/light, +/obj/effect/turf_decal/siding/white/corner{ + dir = 4 }, -/area/shuttle/administration) +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "jFD" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/effect/turf_decal/siding/wideplating{ @@ -20372,6 +19818,20 @@ icon_state = "grimy" }, /area/syndicate_mothership) +"jFG" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/computer/mech_bay_power_console, +/obj/machinery/light/spot{ + dir = 4; + tag = "icon-tube1 (EAST)" + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor4" + }, +/area/shuttle/gamma) "jFK" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo3" @@ -20406,23 +19866,24 @@ /obj/structure/closet/secure_closet/syndicate_officer, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) -"jGg" = ( -/obj/vehicle/ridden/secway{ - layer = 3.5 +"jGt" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "CC_supply_external2"; + layer = 5; + locked = 1 }, -/obj/item/key/security, -/turf/simulated/floor/plating, -/area/centcom/specops) -"jGz" = ( -/obj/machinery/computer/shuttle/nt/drop_pod/recall{ - pixel_x = 32; - possible_destinations = "shit_rain_base" +/obj/machinery/door_control/secure{ + id = "CC_supply_external2"; + name = "Supply Internal Shutters"; + pixel_x = -24; + req_access = list(114) }, /turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "navybluealt" + dir = 8; + icon_state = "darkyellowalt" }, -/area/centcom/specops) +/area/centcom/supply) "jGH" = ( /obj/structure/closet/syndicate/sst, /obj/item/ammo_box/magazine/mm556x45/bleeding, @@ -20433,6 +19894,41 @@ /obj/effect/turf_decal/bot_white, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) +"jHe" = ( +/obj/machinery/door/airlock/shuttle{ + id_tag = "s_docking_airlock" + }, +/obj/structure/fans/tiny, +/obj/docking_port/mobile{ + alone_shuttle = 1; + dir = 8; + dwidth = 3; + height = 4; + id = "ruins_civil_shuttle"; + name = "Regular Civilian Shuttle"; + port_direction = 4; + rebuildable = 1; + roundstart_move = "spacebar"; + width = 6 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor3" + }, +/area/shuttle/spacebar) +"jHf" = ( +/obj/machinery/mass_driver{ + dir = 4; + id_tag = "ASSAULT3"; + name = "gravpult" + }, +/obj/effect/turf_decal/loading_area/white{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/south, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "jHk" = ( /obj/effect/turf_decal/siding{ color = "#444444" @@ -20443,113 +19939,15 @@ name = "Tatami" }, /area/ninja/outpost) -"jHw" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "CC_Armory_NG" - }, -/obj/effect/decal/warning_stripes/red, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) -"jHJ" = ( -/obj/structure/rack/holorack, -/obj/item/clothing/head/beret/atmos{ - name = "beret" - }, -/obj/item/clothing/head/beret/atmos{ - name = "beret" - }, -/obj/item/clothing/head/beret/ce{ - name = "beret" - }, -/obj/item/clothing/head/beret/ce{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/captain{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/captain{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/navy{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/navy{ - name = "beret" - }, -/obj/item/clothing/head/beret/durathread{ - name = "beret" - }, -/obj/item/clothing/head/beret/durathread{ - name = "beret" - }, -/obj/item/clothing/head/beret/eng{ - name = "beret" - }, -/obj/item/clothing/head/beret/eng{ - name = "beret" - }, -/obj/item/clothing/head/beret/elo{ - name = "beret" - }, -/obj/item/clothing/head/beret/elo{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/sigholt{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/sigholt{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/sparkyninja_beret{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/sparkyninja_beret{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/sigholt{ - icon_state = "officerberet"; - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/sigholt{ - icon_state = "officerberet"; - name = "beret" - }, -/obj/item/clothing/head/fedora, -/obj/item/clothing/head/fedora, -/obj/item/clothing/head/fedora{ - icon_state = "wfedora" - }, -/obj/item/clothing/head/fedora{ - icon_state = "wfedora" - }, -/obj/item/clothing/head/beret/purple{ - name = "beret" - }, -/obj/item/clothing/head/beret/purple{ - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/sigholt{ - icon_state = "beret_hos_black"; - name = "beret" - }, -/obj/item/clothing/head/beret/centcom/officer/sigholt{ - icon_state = "beret_hos_black"; - name = "beret" - }, +"jHF" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, /obj/structure/window/reinforced{ - dir = 4; - layer = 2.9 + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 1; + id = "N2" }, -/obj/structure/window/reinforced, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -20578,20 +19976,6 @@ icon_state = "darkyellowaltstrip" }, /area/syndicate_mothership/control) -"jIv" = ( -/obj/docking_port/stationary/transit{ - dwidth = 3; - height = 7; - id = "shit_rain_transit"; - name = "shit_rain in transit"; - pixel_y = -32; - turf_type = /turf/space/transit/north; - width = 7 - }, -/turf/space/transit/north{ - icon_state = "black" - }, -/area/space) "jIK" = ( /turf/simulated/floor/plasteel{ dir = 10; @@ -20624,6 +20008,40 @@ icon_state = "darkyellowaltstrip" }, /area/syndicate_mothership/control) +"jJr" = ( +/obj/machinery/door/airlock/centcom{ + name = "Outpost 3"; + opacity = 1; + req_access = list(109) + }, +/obj/effect/decal/warning_stripes/blue, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone2) +"jJv" = ( +/obj/structure/sign/securearea{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredalt" + }, +/area/centcom/specops) +"jJA" = ( +/turf/simulated/floor/carpet/red, +/area/shuttle/administration) +"jJD" = ( +/obj/machinery/door_control/secure{ + id = "ERT_Supply_Pod"; + name = "ERT Supply Pod Loading Zone"; + pixel_x = 24; + pixel_y = 24; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + icon_state = "Dark" + }, +/area/centcom/specops) "jJS" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -20651,25 +20069,6 @@ /obj/structure/reagent_dispensers/watertank/high, /turf/simulated/floor/grass, /area/centcom/evac) -"jKp" = ( -/obj/structure/shuttle/engine/heater{ - dir = 4; - icon_state = "heater3x3_side_inv"; - tag = "icon-heater (NORTH)" - }, -/obj/structure/window/plasmareinforced{ - color = "#22aab7"; - dir = 8 - }, -/obj/structure/shuttle/engine/platform{ - dir = 4; - layer = 2.9 - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/administration) -"jKI" = ( -/turf/simulated/floor/plating/airless, -/area/shuttle/trade/sol) "jKU" = ( /obj/effect/decal/cleanable/blood, /obj/item/twohanded/required/kirbyplants, @@ -20693,6 +20092,100 @@ /obj/item/stack/spacecash/c500, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) +"jLd" = ( +/obj/structure/rack/holorack, +/obj/item/clothing/head/beret/atmos{ + name = "beret" + }, +/obj/item/clothing/head/beret/atmos{ + name = "beret" + }, +/obj/item/clothing/head/beret/ce{ + name = "beret" + }, +/obj/item/clothing/head/beret/ce{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/captain{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/captain{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/navy{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/navy{ + name = "beret" + }, +/obj/item/clothing/head/beret/durathread{ + name = "beret" + }, +/obj/item/clothing/head/beret/durathread{ + name = "beret" + }, +/obj/item/clothing/head/beret/eng{ + name = "beret" + }, +/obj/item/clothing/head/beret/eng{ + name = "beret" + }, +/obj/item/clothing/head/beret/elo{ + name = "beret" + }, +/obj/item/clothing/head/beret/elo{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/sigholt{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/sigholt{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/sparkyninja_beret{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/sparkyninja_beret{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/sigholt{ + icon_state = "officerberet"; + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/sigholt{ + icon_state = "officerberet"; + name = "beret" + }, +/obj/item/clothing/head/fedora, +/obj/item/clothing/head/fedora, +/obj/item/clothing/head/fedora{ + icon_state = "wfedora" + }, +/obj/item/clothing/head/fedora{ + icon_state = "wfedora" + }, +/obj/item/clothing/head/beret/purple{ + name = "beret" + }, +/obj/item/clothing/head/beret/purple{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/sigholt{ + icon_state = "beret_hos_black"; + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/sigholt{ + icon_state = "beret_hos_black"; + name = "beret" + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "jLx" = ( /obj/effect/decal/warning_stripes/white, /obj/structure/mineral_door/wood, @@ -20700,27 +20193,13 @@ icon_state = "dark" }, /area/centcom/zone1) -"jLA" = ( -/obj/effect/turf_decal/tile/neutral{ +"jLN" = ( +/obj/structure/window/reinforced, +/obj/effect/turf_decal/siding/brown{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/vending/coffee/free, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" - }, -/area/shuttle/administration) -"jLG" = ( -/obj/structure/chair/comfy/shuttle, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_1) +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "jLP" = ( /obj/effect/landmark/abductor/agent{ team = 4 @@ -20731,6 +20210,12 @@ /obj/structure/lattice, /turf/space, /area/space) +"jMK" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkredcorners" + }, +/area/centcom/specops) "jNh" = ( /obj/effect/turf_decal{ dir = 6; @@ -20739,6 +20224,14 @@ }, /turf/simulated/floor/indestructible/beach/sand, /area/syndicate_mothership/outside) +"jNk" = ( +/obj/effect/decal/warning_stripes/west, +/obj/machinery/door/window/brigdoor/eastleft{ + dir = 8; + name = "CentComm Chemical lab" + }, +/turf/simulated/floor/engine, +/area/centcom/specops) "jNn" = ( /obj/structure/closet/crate, /obj/machinery/light/small{ @@ -20746,15 +20239,6 @@ }, /turf/simulated/floor/shuttle, /area/shuttle/mining) -"jNs" = ( -/obj/machinery/cryopod{ - dir = 4 - }, -/obj/machinery/computer/cryopod{ - pixel_y = 32 - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/zone1) "jNM" = ( /obj/structure/sign/nosmoking_2{ pixel_x = 32 @@ -20765,18 +20249,25 @@ icon_state = "navybluealt" }, /area/syndicate_mothership/control) -"jNW" = ( -/obj/effect/decal/warning_stripes/white/hollow, -/obj/effect/decal/warning_stripes/southwest, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"jNQ" = ( +/obj/docking_port/mobile{ + dir = 8; + dwidth = 3; + height = 5; + id = "mining"; + name = "mining shuttle"; + port_direction = 4; + rebuildable = 1; + roundstart_move = "mining_home"; + width = 7 }, -/area/centcom/supply) -"jOj" = ( -/turf/simulated/floor/plasteel{ - icon_state = "darkyellow" +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/shuttle{ + id_tag = "s_docking_airlock"; + req_access = list(48) }, -/area/centcom/specops) +/turf/simulated/floor/shuttle, +/area/shuttle/mining) "jOk" = ( /obj/structure/table/abductor{ color = "#99ff99"; @@ -20791,6 +20282,19 @@ }, /turf/simulated/floor/plasteel/freezer, /area/ninja/outpost) +"jOp" = ( +/obj/structure/closet/secure_closet/brig, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkredalt" + }, +/area/centcom/jail) "jOH" = ( /obj/effect/turf_decal{ icon_state = "grass_edge_medium"; @@ -20822,6 +20326,13 @@ /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/grass, /area/centcom/evac) +"jPF" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 + }, +/turf/simulated/floor/glass/reinforced, +/area/centcom/specops) "jPH" = ( /obj/effect/turf_decal{ dir = 4; @@ -20845,6 +20356,23 @@ icon_state = "hierophant1" }, /area/wizard_station) +"jQb" = ( +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/turf/simulated/floor/glass, +/area/centcom/bridge) +"jQj" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/siding/white{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "jQm" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -20855,44 +20383,6 @@ /obj/structure/chair/comfy/purp, /turf/simulated/floor/carpet, /area/wizard_station) -"jRt" = ( -/obj/item/paper{ - info = "Убрать кишку на Дельте"; - pixel_y = -2 - }, -/obj/item/paper{ - info = "Наныть мультизет для трама"; - pixel_y = -4 - }, -/obj/item/paper{ - pixel_x = 9; - info = "Обед через час, работа через вчера" - }, -/obj/item/paper{ - pixel_y = -9; - pixel_x = 7; - info = "Пофиксить в моем кабинете рантайм трубы в трубе... опять" - }, -/obj/item/paper{ - pixel_y = -6; - pixel_x = -5; - info = "Начать делать очередную новую станцию и сгореть на втором часу работы в самокопании" - }, -/obj/machinery/atmospherics/pipe/manifold/visible{ - dir = 8 - }, -/obj/structure/noticeboard{ - pixel_y = -30 - }, -/turf/simulated/floor/wood, -/area/centcom/zone3) -"jRu" = ( -/obj/structure/chair/sofa/corp/left, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "jRv" = ( /obj/structure/chair/comfy/shuttle/dark{ dir = 4 @@ -20908,12 +20398,6 @@ name = "floor" }, /area/syndicate_mothership/outside) -"jRY" = ( -/obj/effect/turf_decal/siding{ - color = "#444444" - }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) "jSd" = ( /obj/effect/turf_decal{ dir = 4; @@ -20930,18 +20414,6 @@ "jSw" = ( /turf/simulated/wall/indestructible/rock, /area/ninja/holding) -"jSA" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/table, -/obj/item/paper_bin/nanotrasen{ - pixel_x = 3; - pixel_y = 12 - }, -/obj/item/pen/multi/fountain, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "jSC" = ( /obj/effect/turf_decal/siding/wood{ dir = 10; @@ -20949,17 +20421,6 @@ }, /turf/simulated/floor/carpet/green, /area/shuttle/trade/sol) -"jSE" = ( -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkred" - }, -/area/centcom/specops) -"jSF" = ( -/obj/effect/landmark/ert_director, -/obj/structure/chair/office/dark, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) "jSH" = ( /obj/effect/turf_decal{ dir = 1; @@ -20983,97 +20444,11 @@ /obj/structure/flora/ausbushes/reedbush, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"jTE" = ( -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkredalt" - }, -/area/centcom/specops) -"jTJ" = ( -/obj/machinery/door_control/secure{ - id = "CC_BSA"; - name = "BSA room"; - pixel_x = -24; - pixel_y = 24; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "navybluealtstrip" - }, -/area/centcom/specops) -"jTN" = ( -/obj/structure/rack/holorack, -/obj/item/clothing/accessory/black{ - desc = null; - name = "Black tie" - }, -/obj/item/clothing/accessory/blue{ - desc = null; - name = "Blue tie" - }, -/obj/item/clothing/glasses/hud/security/sunglasses/aviators, -/obj/item/clothing/glasses/hud/security/sunglasses/aviators, -/obj/item/clothing/accessory/blue{ - desc = null; - name = "Blue tie" - }, -/obj/item/clothing/accessory/black{ - desc = null; - name = "Black tie" - }, -/obj/item/clothing/accessory/holster{ - desc = null; - name = "Shoulder holster" - }, -/obj/item/clothing/accessory/holster{ - desc = null; - name = "Shoulder holster" - }, -/obj/item/storage/backpack/satchel, -/obj/item/storage/backpack/satchel, -/obj/item/storage/backpack/satcheldeluxe, -/obj/item/storage/backpack/satcheldeluxe, -/obj/item/storage/belt/fannypack/black, -/obj/item/storage/belt/fannypack/black, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/color/white{ - desc = null - }, -/obj/item/clothing/gloves/color/white{ - desc = null - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) -"jUd" = ( -/obj/machinery/vending/ntc/engineering, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) -"jUo" = ( -/obj/effect/decal/cleanable/fungus{ - pixel_x = -32; - pixel_y = 32 +"jTW" = ( +/obj/effect/decal/warning_stripes/white/hollow, +/obj/structure/mirror{ + pixel_y = -32 }, -/turf/simulated/floor/plating, -/area/centcom/zone2) -"jUq" = ( -/obj/structure/rack, -/obj/item/ammo_box/magazine/sfg9mm, -/obj/item/ammo_box/magazine/sfg9mm, -/obj/item/ammo_box/magazine/sfg9mm, -/obj/item/ammo_box/magazine/sfg9mm, -/obj/item/ammo_box/magazine/sfg9mm, -/obj/item/ammo_box/magazine/sfg9mm, -/obj/item/ammo_box/magazine/sfg9mm, -/obj/item/ammo_box/magazine/sfg9mm, -/obj/item/ammo_box/magazine/sfg9mm, -/obj/item/ammo_box/magazine/sfg9mm, -/obj/effect/decal/warning_stripes/red/hollow, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -21089,12 +20464,42 @@ icon_state = "freezerfloor" }, /area/centcom/jail) -"jVf" = ( -/obj/mecha/combat/gygax/ert/loaded, -/obj/item/mecha_parts/mecha_equipment/repair_droid, -/obj/effect/decal/warning_stripes/yellow, -/turf/simulated/floor/engine, +"jUN" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) +"jUO" = ( +/obj/machinery/light/spot{ + dir = 1 + }, +/turf/simulated/wall/shuttle, +/area/shuttle/nt_droppod) +"jUQ" = ( +/obj/structure/table/wood{ + color = "#996633" + }, +/obj/item/paper_bin/nanotrasen{ + pixel_x = -2; + pixel_y = 8 + }, +/obj/item/pen/multi/gold, +/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) +"jVq" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "Air" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "jVI" = ( /obj/item/flashlight, /obj/item/gps{ @@ -21123,31 +20528,12 @@ icon = 'icons/turf/walls/fake_plastitanium_glass.dmi' }, /area/syndicate_mothership/elite_squad) -"jWd" = ( -/obj/structure/railing{ - layer = 4.3; - density = 0 - }, -/turf/simulated/floor/plasteel{ - color = "gray"; - dir = 8; - icon_state = "rampbottom" +"jWu" = ( +/obj/item/melee/baton{ + color = "#b30086" }, +/turf/simulated/floor/plating, /area/centcom/specops) -"jWv" = ( -/obj/machinery/mass_driver{ - dir = 4; - id_tag = "ASSAULT3"; - name = "gravpult" - }, -/obj/effect/turf_decal/loading_area/white{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/south, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "jWM" = ( /obj/item/flag/nt, /turf/simulated/floor/plasteel{ @@ -21155,38 +20541,9 @@ icon_state = "navybluealt" }, /area/centcom/specops) -"jWN" = ( -/obj/machinery/door_control/secure{ - id = "CC_Armory_Grenade"; - name = "Grenades"; - pixel_x = 24; - pixel_y = -24; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkredcorners" - }, -/area/centcom/specops) "jWT" = ( /turf/simulated/floor/carpet, /area/centcom/zone1) -"jXa" = ( -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/machinery/portable_atmospherics/canister/oxygen{ - maximum_pressure = 50000 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/conveyor{ - id = "O2"; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "jXe" = ( /obj/structure/table/wood, /obj/item/paicard, @@ -21194,16 +20551,6 @@ /obj/item/pen, /turf/simulated/floor/carpet/arcade, /area/centcom/zone1) -"jXf" = ( -/obj/structure/table, -/obj/machinery/status_display/supply_display{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkyellowalt" - }, -/area/centcom/supply) "jXl" = ( /obj/effect/turf_decal{ dir = 9; @@ -21213,6 +20560,20 @@ water_overlay_icon_state = null }, /area/syndicate_mothership/outside) +"jXp" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/three) +"jXt" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table/wood, +/obj/item/trash/candle, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/evac) "jXB" = ( /obj/structure/table/abductor, /obj/item/paper/abductor, @@ -21220,17 +20581,47 @@ /obj/item/cautery/alien, /turf/simulated/floor/indestructible/abductor, /area/abductor_ship) -"jXC" = ( -/obj/machinery/atmospherics/pipe/simple/hidden, -/obj/item/flag/nt, -/obj/machinery/light{ - dir = 4 +"jYq" = ( +/obj/structure/rack/holorack, +/obj/item/clothing/suit/armor/heavy, +/obj/item/clothing/suit/armor/heavy, +/obj/item/clothing/suit/armor/heavy, +/obj/item/clothing/suit/armor/heavy, +/obj/item/clothing/suit/armor/heavy, +/obj/item/clothing/suit/armor/heavy, +/obj/item/clothing/suit/armor/heavy, +/obj/item/clothing/suit/armor/heavy, +/obj/item/clothing/suit/armor/heavy, +/obj/item/clothing/suit/armor/heavy, +/obj/item/clothing/shoes/combat/swat, +/obj/item/clothing/shoes/combat/swat, +/obj/item/clothing/shoes/combat/swat, +/obj/item/clothing/shoes/combat/swat, +/obj/item/clothing/shoes/combat/swat, +/obj/item/clothing/shoes/combat/swat, +/obj/item/clothing/shoes/combat/swat, +/obj/item/clothing/shoes/combat/swat, +/obj/item/clothing/shoes/combat/swat, +/obj/item/clothing/shoes/combat/swat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "darkgrey" +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/area/shuttle/administration) +/area/centcom/supply) "jYK" = ( /obj/structure/chair/comfy/shuttle{ dir = 1 @@ -21249,12 +20640,21 @@ icon_state = "alien11" }, /area/abductor_ship) -"jZY" = ( +"jYV" = ( +/obj/machinery/chem_dispenser/soda/upgraded, +/obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkredcorners" + dir = 1; + icon_state = "vault" }, /area/centcom/specops) +"jZF" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/papershredder, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "kag" = ( /obj/structure/table/wood/fancy/green, /obj/item/reagent_containers/food/drinks/tea{ @@ -21264,6 +20664,20 @@ }, /turf/simulated/floor/wood/fancy/light, /area/ninja/outpost) +"kaz" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/centcom/zone3) +"kaY" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone3) "kbb" = ( /obj/item/stack/spacecash/c50, /obj/structure/chair/comfy/shuttle{ @@ -21300,30 +20714,6 @@ icon_state = "darkyellowalt" }, /area/syndicate_mothership/cargo) -"kbJ" = ( -/obj/structure/rack/holorack, -/obj/item/circuitboard/aiupload, -/obj/item/circuitboard/circuit_imprinter, -/obj/item/circuitboard/communications, -/obj/item/circuitboard/destructive_analyzer, -/obj/item/circuitboard/ore_redemption, -/obj/item/circuitboard/mining_shuttle, -/obj/item/circuitboard/mining_shuttle, -/obj/item/circuitboard/mining_shuttle, -/obj/item/circuitboard/protolathe, -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) -"kbL" = ( -/turf/simulated/wall/shuttle/onlyselfsmooth/nodiagonal{ - icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' - }, -/area/shuttle/vox) "kbP" = ( /obj/machinery/light{ dir = 4 @@ -21334,36 +20724,31 @@ }, /turf/simulated/floor/carpet, /area/centcom/zone1) -"kcl" = ( -/obj/machinery/door_control/secure{ - id = "CC_Armory_AEG"; - name = "advanced energy gun"; - pixel_x = -24; - pixel_y = 24; - req_access = list(114) +"kbV" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkredcorners" +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/area/centcom/specops) +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/chair/comfy/lime{ + dir = 8 + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "dark" + }, +/area/shuttle/administration) "kco" = ( /obj/structure/largecrate, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/jail) -"kcz" = ( -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkredaltstrip" - }, -/area/centcom/zone2) -"kcH" = ( -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/centcom/zone3) "kcI" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo18" @@ -21392,15 +20777,18 @@ }, /turf/simulated/floor/carpet/arcade, /area/syndicate_mothership/infteam) +"kek" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/three) "keo" = ( /turf/simulated/wall/indestructible/iron, /area/syndicate_mothership) -"ket" = ( -/obj/machinery/light/small, -/turf/simulated/floor/shuttle{ - icon_state = "vfloor" - }, -/area/shuttle/administration) "keD" = ( /obj/structure/window/reinforced{ dir = 1 @@ -21415,6 +20803,19 @@ tag = "icon-redfull (NORTHWEST)" }, /area/centcom/jail) +"keE" = ( +/obj/structure/window/reinforced{ + layer = 2.9 + }, +/obj/structure/holohoop{ + dir = 1 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/effect/turf_decal/siding/white, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "keG" = ( /obj/machinery/hydroponics/constructable{ desc = "These are connected with an irrigation tube. You see a little pipe connecting the trays."; @@ -21448,6 +20849,17 @@ tag = "icon-redfull (NORTHWEST)" }, /area/centcom/zone1) +"kfl" = ( +/obj/structure/table/glass, +/obj/machinery/photocopier/faxmachine/longrange{ + department = "Central Command" + }, +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 + }, +/turf/simulated/floor/carpet, +/area/centcom/specops) "kfv" = ( /obj/machinery/door/airlock/syndicate/security{ name = "Тюрьма"; @@ -21466,6 +20878,20 @@ icon_state = "brownoldfull" }, /area/syndicate_mothership/jail) +"kfC" = ( +/obj/mecha/combat/marauder/seraph/loaded{ + armor = list("melee"=80,"bullet"=80,"laser"=80,"energy"=80,"bomb"=80,"bio"=80,"rad"=80,"fire"=100,"acid"=100); + name = "D2"; + operation_req_access = list(109) + }, +/obj/effect/turf_decal/mech, +/obj/machinery/light, +/turf/simulated/floor/indestructible{ + dir = 8; + icon_state = "vault"; + name = "Operative position" + }, +/area/centcom/jail) "kfD" = ( /obj/effect/turf_decal/stripes/gold{ dir = 8 @@ -21475,15 +20901,13 @@ }, /area/syndicate_mothership/infteam) "kfE" = ( +/obj/structure/table, +/obj/item/paper, /obj/machinery/door/window/brigdoor{ - dir = 8; - req_access = list(104) - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkredaltstrip" + dir = 8 }, -/area/centcom/jail) +/turf/simulated/floor/carpet, +/area/centcom/zone2) "kfM" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -21498,22 +20922,6 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership/infteam) -"kfU" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/table, -/obj/item/pen/multi/fountain, -/obj/item/paper_bin/nanotrasen{ - pixel_x = 3; - pixel_y = 12 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "kgk" = ( /obj/machinery/door/airlock/hatch{ drain_act_protected = 1; @@ -21526,6 +20934,16 @@ icon_state = "floor13" }, /area/shuttle/ninja) +"kgq" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone3) "kgu" = ( /obj/machinery/light/small{ dir = 8 @@ -21535,6 +20953,47 @@ icon_state = "arrival" }, /area/centcom/zone1) +"kgw" = ( +/obj/structure/rack/holorack, +/obj/item/organ/internal/cyberimp/brain/anti_drop, +/obj/item/organ/internal/cyberimp/brain/anti_drop, +/obj/item/organ/internal/cyberimp/brain/anti_sleep/hardened, +/obj/item/organ/internal/cyberimp/brain/anti_sleep/hardened, +/obj/item/organ/internal/cyberimp/brain/anti_stun/hardened, +/obj/item/organ/internal/cyberimp/brain/anti_stun/hardened, +/obj/item/organ/internal/cyberimp/chest/nutriment_old/plus, +/obj/item/organ/internal/cyberimp/chest/nutriment_old/plus, +/obj/item/organ/internal/cyberimp/chest/reviver/hardened, +/obj/item/organ/internal/cyberimp/chest/reviver/hardened, +/obj/item/organ/internal/cyberimp/eyes/hud/medical, +/obj/item/organ/internal/cyberimp/eyes/hud/medical, +/obj/item/organ/internal/cyberimp/eyes/thermals, +/obj/item/organ/internal/cyberimp/eyes/thermals, +/obj/item/organ/internal/cyberimp/mouth/breathing_tube, +/obj/item/organ/internal/cyberimp/mouth/breathing_tube, +/obj/item/implanter/mindshield, +/obj/item/implanter/mindshield, +/obj/item/organ/internal/cyberimp/arm/combat/centcom, +/obj/item/organ/internal/cyberimp/arm/combat/centcom, +/obj/item/organ/internal/cyberimp/arm/surgery, +/obj/item/organ/internal/cyberimp/arm/toolset, +/obj/item/organ/internal/cyberimp/arm/janitorial, +/obj/item/autoimplanter/old, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) +"kgx" = ( +/obj/machinery/door/poddoor{ + id_tag = "ASSAULT2"; + name = "Launch Bay #2" + }, +/obj/effect/turf_decal/tile/neutral{ + alpha = 75; + color = "black"; + icon_state = "tile_full"; + layer = 9 + }, +/turf/simulated/floor/plating, +/area/centcom/supply) "kgz" = ( /obj/structure/curtain/black{ pixel_x = 32; @@ -21556,6 +21015,18 @@ /obj/item/flashlight/lamp, /turf/simulated/floor/carpet/arcade, /area/centcom/zone1) +"kgC" = ( +/obj/machinery/vending/coffee/free, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone2) +"kgD" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/centcom/specops) "kgE" = ( /obj/structure/chair/comfy/shuttle{ dir = 8 @@ -21566,11 +21037,6 @@ }, /turf/simulated/floor/carpet/royalblack, /area/shuttle/trade/sol) -"kgF" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/machinery/light, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) "kgG" = ( /obj/structure/chair/sofa/corp/left{ dir = 1 @@ -21590,35 +21056,40 @@ icon_state = "plastitanium" }, /area/shuttle/syndicate) -"kgO" = ( -/obj/structure/window/reinforced{ - layer = 2.9 - }, -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/effect/turf_decal/siding/white, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) -"khn" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, +"khg" = ( /obj/structure/window/reinforced{ dir = 8 }, +/obj/structure/window/reinforced, +/obj/machinery/computer/robotics, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/zone3) +/area/centcom/bridge) "khv" = ( /turf/simulated/floor/wood{ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership/infteam) +"khE" = ( +/obj/effect/turf_decal/tile/neutral{ + color = "black"; + icon_state = "tile_full"; + layer = 9 + }, +/obj/effect/step_trigger/teleporter{ + icon = 'icons/mob/screen_gen.dmi'; + icon_state = "x2"; + teleport_x = 183; + teleport_y = 62; + teleport_z = 1 + }, +/turf/simulated/floor/plasteel{ + color = "gray"; + dir = 8; + icon_state = "rampbottom" + }, +/area/centcom/specops) "khG" = ( /obj/item/hand_labeler, /obj/item/stack/packageWrap, @@ -21627,16 +21098,15 @@ /obj/structure/table/wood/fancy/orange, /turf/simulated/floor/carpet/blue, /area/shuttle/trade/sol) -"khV" = ( -/obj/structure/chair/comfy/shuttle{ +"kic" = ( +/obj/machinery/light{ dir = 8 }, -/obj/machinery/status_display{ - layer = 4; - pixel_x = 32 +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "arrival" }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_2) +/area/centcom/evac) "kio" = ( /obj/structure/curtain/black{ pixel_y = 32 @@ -21672,36 +21142,27 @@ /obj/structure/flora/ausbushes/genericbush, /turf/simulated/floor/grass, /area/centcom/evac) -"kjt" = ( -/obj/item/book/random, -/turf/simulated/floor/wood{ - icon_state = "wood-broken6"; - tag = "icon-wood-broken6" - }, -/area/centcom/zone2) "kjK" = ( /obj/effect/turf_decal/weather/snow/corner{ dir = 1 }, /turf/simulated/floor/indestructible/beach/water/deep/dense, /area/ninja/outside) -"kjL" = ( -/obj/structure/chair/office/dark{ - dir = 4 - }, -/obj/machinery/embedded_controller/radio/airlock/access_controller{ - frequency = 2000; - id_tag = "CC-OP3"; - name = "Access Controller OP3"; - pixel_y = 32; - req_access = list(109); - tag_exterior_door = "CC-OP3-Ext"; - tag_interior_door = "CC-OP3-Int" - }, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" +"kjZ" = ( +/turf/simulated/wall/indestructible/abductor, +/area/abductor_ship) +"kkq" = ( +/obj/structure/bookcase, +/turf/simulated/floor/plating, +/area/centcom/zone2) +"kkr" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 }, -/area/centcom/zone3) +/obj/machinery/computer/shuttle/ert, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "kkt" = ( /obj/effect/turf_decal{ dir = 4; @@ -21717,6 +21178,27 @@ icon_state = "arrivalcorner" }, /area/centcom/zone1) +"kkU" = ( +/obj/machinery/door/airlock/command/glass{ + frequency = 2000; + icon_state = "open"; + id_tag = "CC-OP3-Int"; + locked = 1; + name = "Zone 2" + }, +/obj/effect/decal/warning_stripes/blue, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 2000; + master_tag = "CC-OP3"; + name = "CC-OP3-INT"; + pixel_x = 32; + req_access = list(109) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone2) "kln" = ( /obj/structure/railing, /obj/effect/turf_decal/stripes/line{ @@ -21725,14 +21207,6 @@ }, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"klp" = ( -/obj/machinery/conveyor{ - id = "CC_crate" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "klz" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo17" @@ -21740,11 +21214,38 @@ /obj/effect/turf_decal/stripes/gold, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership) +"klT" = ( +/obj/machinery/door/poddoor/shutters/invincible/fake_r_wall{ + dir = 1; + id_tag = "ERT_Quarantine" + }, +/obj/machinery/porta_turret/centcom/pulse{ + armor = list("melee"=90,"bullet"=90,"laser"=95,"energy"=95,"bomb"=80,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + color = "#666666"; + damtype = "burn"; + health = 1250; + name = "Quarantine Pulse Turret"; + region_max = 12; + scan_range = 12; + shot_delay = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "kms" = ( /obj/structure/table/wood/fancy/black, /obj/item/flashlight/lamp/green, /turf/simulated/floor/carpet, /area/wizard_station) +"kmt" = ( +/obj/structure/closet/secure_closet/reagents, +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 + }, +/turf/simulated/floor/engine, +/area/centcom/specops) "kmD" = ( /obj/structure/chair/comfy/shuttle/dark{ dir = 8 @@ -21763,14 +21264,10 @@ icon_state = "dark" }, /area/centcom/zone1) -"knk" = ( -/obj/effect/turf_decal/plaque, -/obj/structure/chair/comfy/red{ - color = "#222222"; - dir = 8 - }, -/turf/simulated/floor/carpet, -/area/centcom/zone3) +"kmM" = ( +/obj/effect/decal/warning_stripes/south, +/turf/simulated/wall/indestructible/fakeglass, +/area/centcom/specops) "knt" = ( /obj/effect/turf_decal/siding/wood{ dir = 8; @@ -21800,26 +21297,39 @@ }, /turf/simulated/floor/wood/fancy/light, /area/ninja/outpost) -"knR" = ( -/obj/machinery/door/airlock/centcom{ - name = "Outpost 3"; - opacity = 1; - req_access = list(109) +"knX" = ( +/obj/machinery/door_control/secure{ + id = "CC_Armory_SFG5"; + name = "SFG-5"; + pixel_x = 24; + pixel_y = -24; + req_access = list(114) }, -/obj/effect/decal/warning_stripes/blue, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 6; + icon_state = "darkyellow" }, -/area/centcom/zone2) +/area/centcom/specops) "kob" = ( /turf/simulated/wall/indestructible/abductor{ icon_state = "alien6" }, /area/abductor_ship) -"koc" = ( -/obj/structure/stone_tile/slab/cracked, -/turf/simulated/floor/lava/lava_land_surface, -/area/ruin/space/bubblegum_arena) +"kom" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + id_tag = "CC_ERT1" + }, +/obj/machinery/door_control/secure{ + id = "CC_ERT1"; + pixel_y = -25; + req_access = list(114) + }, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "navybluealt" + }, +/area/centcom/specops) "koH" = ( /obj/machinery/door/airlock/command/glass{ frequency = 2000; @@ -21848,6 +21358,28 @@ icon_state = "cmo" }, /area/shuttle/escape) +"kpi" = ( +/obj/effect/turf_decal/tile/neutral{ + color = "black"; + icon_state = "tile_full"; + layer = 5 + }, +/obj/effect/turf_decal/tile/neutral{ + color = "black"; + icon_state = "tile_full"; + layer = 5 + }, +/obj/effect/turf_decal/tile/neutral{ + color = "black"; + icon_state = "tile_full"; + layer = 5 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/centcom/specops) "kpr" = ( /obj/machinery/door/airlock/syndicate/security{ autoclose = 0; @@ -21888,19 +21420,6 @@ /obj/item/clothing/gloves/boxing/blue, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"kpO" = ( -/obj/structure/chair/sofa/corp/left, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkredalt" - }, -/area/centcom/specops) -"kpQ" = ( -/obj/effect/turf_decal/siding/blue/corner{ - color = "#444444" - }, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) "kpV" = ( /obj/machinery/cryopod/syndie{ dir = 2 @@ -21924,23 +21443,21 @@ /obj/structure/chair/comfy/brown, /turf/simulated/floor/carpet, /area/centcom/zone1) -"kqc" = ( -/obj/vehicle/ridden/janicart{ - dir = 4 - }, -/obj/item/key/janitor, -/obj/item/janiupgrade{ - layer = 2.9 - }, -/turf/simulated/floor/indestructible{ - icon_state = "darkpurple" - }, -/area/centcom/specops) "kqe" = ( /turf/simulated/floor/plasteel{ icon_state = "white" }, /area/centcom/zone1) +"kqu" = ( +/obj/structure/window/reinforced, +/obj/machinery/light, +/obj/effect/turf_decal/siding/white{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) "kqy" = ( /obj/effect/turf_decal{ dir = 1; @@ -21970,12 +21487,17 @@ }, /turf/simulated/floor/shuttle/transparent_floor, /area/shuttle/syndicate) -"kro" = ( -/obj/machinery/computer/communications, -/obj/machinery/newscaster/security_unit{ - pixel_x = 32 +"krh" = ( +/obj/effect/decal/warning_stripes/northwestsouth, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 1; + id_tag = "ERT_armory_lvl4"; + layer = 5; + name = "Armory level 4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" }, -/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "kru" = ( /obj/machinery/abductor/gland_dispenser, @@ -21994,16 +21516,15 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"krW" = ( +"kse" = ( /obj/structure/window/reinforced{ - dir = 8 + armor = list("melee"=100,"bullet"=100,"laser"=0,"energy"=0,"bomb"=25,"bio"=100,"rad"=100,"fire"=80,"acid"=100); + layer = 3.1 }, -/obj/structure/window/reinforced, -/obj/machinery/computer/robotics, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/turf/simulated/floor/wood{ + icon_state = "light-fancy-wood" }, -/area/centcom/bridge) +/area/centcom/specops) "ksB" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/wood/corner{ @@ -22011,14 +21532,15 @@ }, /turf/simulated/floor/carpet/black, /area/ninja/outpost) -"ksI" = ( -/obj/structure/chair/comfy/red{ - dir = 8 +"ksN" = ( +/obj/effect/decal/nanotrasen_logo{ + icon_state = "logo6"; + pixel_x = 16 }, /turf/simulated/floor/plasteel{ - icon_state = "grimy" + icon_state = "dark" }, -/area/centcom/jail) +/area/centcom/specops) "ktf" = ( /obj/structure/table/abductor, /obj/item/bonegel/alien, @@ -22041,19 +21563,35 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"ktw" = ( -/obj/effect/decal/cleanable/crayon{ - icon_state = "bodys"; - pixel_x = 14; - pixel_y = 32 +"ktZ" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) +"kub" = ( +/obj/structure/sign/poster/official/work_for_a_future{ + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "navybluealt" }, -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk, -/turf/simulated/floor/wood, /area/centcom/specops) "kuh" = ( /turf/simulated/floor/carpet/black, /area/ninja/outpost) +"kuA" = ( +/obj/structure/window/reinforced, +/obj/machinery/computer, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) "kuJ" = ( /obj/structure/bed/abductor, /turf/simulated/floor/indestructible/abductor, @@ -22065,12 +21603,13 @@ /obj/structure/fans/tiny, /turf/simulated/floor/wood, /area/shuttle/trade/sol) -"kvb" = ( -/obj/structure/sign/poster/official/work_for_a_future{ - pixel_y = -30 +"kvh" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 }, /turf/simulated/floor/plasteel{ - icon_state = "navybluealt" + dir = 10; + icon_state = "darkyellow" }, /area/centcom/specops) "kvz" = ( @@ -22108,13 +21647,12 @@ icon_state = "alien8" }, /area/abductor_ship) -"kvU" = ( -/obj/effect/turf_decal/stripes/black{ - dir = 5; - do_not_delete_me = 1 +"kwn" = ( +/obj/structure/falsewall/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/turf/simulated/floor/shuttle, -/area/shuttle/administration) +/area/centcom/specops) "kwr" = ( /turf/simulated/wall/indestructible/abductor{ icon_state = "alien9" @@ -22126,15 +21664,6 @@ icon_state = "fancy-wood-birch" }, /area/shuttle/trade/sol) -"kwU" = ( -/obj/machinery/conveyor/inverted{ - id = "CC_crate"; - dir = 10 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "kwV" = ( /obj/structure/window/reinforced, /turf/simulated/floor/beach/water{ @@ -22152,15 +21681,12 @@ }, /turf/simulated/floor/carpet, /area/syndicate_mothership/control) -"kxv" = ( -/obj/item/clothing/gloves/color/latex/nitrile, -/obj/item/storage/toolbox/surgery, -/obj/structure/table/glass, -/obj/item/scalpel/laser/manager, -/turf/simulated/floor/plasteel{ - icon_state = "white" +"kxb" = ( +/obj/structure/chair/comfy/purp{ + dir = 1 }, -/area/centcom/specops) +/turf/simulated/floor/carpet/red, +/area/centcom/bridge) "kxL" = ( /obj/machinery/light/small, /turf/simulated/floor/carpet/black, @@ -22176,14 +21702,21 @@ icon_state = "dark" }, /area/centcom/evac) -"kyK" = ( -/obj/machinery/vending/chinese/free, +"kyB" = ( +/obj/effect/turf_decal/caution/stand_clear, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault"; - tag = "icon-vault (WEST)" + dir = 5; + icon_state = "darkyellowaltstrip" }, -/area/centcom/specops) +/area/centcom/zone3) +"kyM" = ( +/obj/effect/turf_decal/siding/white{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "kyO" = ( /obj/effect/turf_decal/siding/wideplating{ color = "#55391A"; @@ -22203,12 +21736,66 @@ icon_state = "grimy" }, /area/syndicate_mothership) +"kyQ" = ( +/obj/effect/turf_decal/tile/neutral{ + color = "black"; + icon_state = "tile_full"; + layer = 9 + }, +/obj/effect/step_trigger/teleporter{ + icon = 'icons/mob/screen_gen.dmi'; + icon_state = "x2"; + teleport_x = 183; + teleport_y = 61; + teleport_z = 1 + }, +/turf/simulated/floor/plasteel{ + color = "gray"; + dir = 8; + icon_state = "rampbottom" + }, +/area/centcom/specops) "kzy" = ( /obj/effect/landmark/syndieprisonwarp, /turf/simulated/floor/plasteel{ icon_state = "darkfull" }, /area/syndicate_mothership/jail) +"kzB" = ( +/obj/machinery/door/window/brigdoor{ + base_state = "rightsecure"; + dir = 8; + icon_state = "rightsecure"; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/centcom/zone3) +"kzR" = ( +/obj/machinery/computer/cloning, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/centcom/specops) +"kzT" = ( +/obj/machinery/suit_storage_unit/standard_unit/ertamber{ + req_access = list(104,109) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"kAd" = ( +/obj/structure/chair/comfy/shuttle, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/centcom/specops) "kAj" = ( /obj/structure/table/abductor, /obj/item/surgicaldrill/alien, @@ -22227,6 +21814,11 @@ /obj/item/stack/spacecash, /turf/simulated/floor/carpet/black, /area/wizard_station) +"kAt" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkredaltstrip" + }, +/area/centcom/jail) "kAE" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -22272,6 +21864,15 @@ /obj/structure/grille, /turf/simulated/floor/shuttle/plating, /area/shuttle/funeral) +"kAW" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 + }, +/obj/machinery/light, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "kBa" = ( /obj/effect/baseturf_helper{ baseturf = /turf/simulated/floor/indestructible/plating; @@ -22337,40 +21938,21 @@ icon_state = "cafeteria" }, /area/centcom/jail) -"kCJ" = ( -/obj/structure/shuttle/engine/heater{ - dir = 4; - icon_state = "heater3x3"; - tag = "icon-heater (NORTH)" - }, -/obj/structure/window/plasmareinforced{ - color = "#22aab7"; - dir = 8 - }, -/obj/structure/shuttle/engine/platform{ - dir = 4; - layer = 2.9 - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/administration) -"kCX" = ( -/obj/machinery/vending/security, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" - }, -/area/shuttle/administration) "kCY" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/wood{ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership/elite_squad) -"kDd" = ( -/obj/item/paper_bin/nanotrasen, -/obj/structure/table/wood, -/turf/simulated/floor/plating, -/area/centcom/zone2) +"kDe" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone3) "kDg" = ( /obj/effect/decal/warning_stripes/blue, /obj/machinery/door/airlock/centcom{ @@ -22382,23 +21964,6 @@ icon_state = "dark" }, /area/centcom/specops) -"kDB" = ( -/obj/structure/railing{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" - }, -/area/centcom/specops) -"kDD" = ( -/obj/machinery/light, -/obj/machinery/photocopier, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/centcom/zone2) "kDL" = ( /obj/structure/table/wood/fancy/black, /obj/item/reagent_containers/food/snacks/candy/cotton/blue, @@ -22409,95 +21974,20 @@ /obj/item/reagent_containers/food/drinks/mugwort, /turf/simulated/floor/carpet, /area/wizard_station) -"kEs" = ( -/obj/structure/closet{ - icon_closed = "syndicate1"; - icon_opened = "syndicate1open"; - icon_state = "syndicate1" - }, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/gun/projectile/automatic/proto, -/obj/item/gun/energy/gun/blueshield, -/obj/item/clothing/glasses/hud/security/sunglasses/aviators, -/obj/item/reagent_containers/food/snacks/candy/mre, -/obj/item/reagent_containers/hypospray/combat, -/obj/item/radio/headset/ert/alt{ - desc = null; - name = "SRT bowman headset" - }, -/obj/item/clothing/head/beret/centcom/officer/navy{ - desc = null; - name = "SRT beret" - }, -/obj/item/clothing/shoes/combat/swat{ - name = "SRT special shoes" - }, -/obj/item/clothing/gloves/combat{ - name = "Combat gloves" - }, -/obj/item/storage/belt/security/webbing/srt/full, -/obj/item/storage/backpack/satchel_blueshield/srt, -/obj/item/clothing/suit/storage/blueshield/srt, -/obj/item/clothing/suit/armor/bulletproof{ - name = "SRT bulletproof vest" - }, -/obj/item/shield/riot/tele, -/obj/item/suppressor, -/obj/item/CQC_manual, -/obj/item/implanter/mindshield/ert, -/obj/item/card/id/centcom{ - name = "Special Reaction Team Member card"; - rank = "Special Reaction Team Member"; - registered_name = "Special Reaction Team Member" - }, -/obj/item/storage/box/responseteam, -/obj/item/clothing/under/fluff/jay_turtleneck{ - desc = null; - name = "SRT uniform" - }, -/obj/item/gun/projectile/automatic/pistol/sp8/sp8ar, -/obj/item/ammo_box/magazine/sp8, -/obj/item/ammo_box/magazine/sp8, -/obj/item/implanter/dust, -/obj/item/clothing/accessory/holster, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "navyblue" - }, -/area/centcom/specops) +"kEk" = ( +/turf/simulated/floor/lava/lava_land_surface, +/area/ruin/space/bubblegum_arena) "kEv" = ( -/obj/structure/sign/securearea{ - pixel_y = -32 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "navybluealt" - }, -/area/centcom/specops) -"kEK" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/turf_decal/siding/white{ - dir = 9 - }, +/obj/effect/turf_decal/caution/stand_clear/red, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 10; + icon_state = "darkbluealtstrip" }, -/area/centcom/jail) +/area/centcom/zone2) "kEU" = ( /obj/structure/flora/rock, /turf/simulated/floor/grass, /area/centcom/evac) -"kEW" = ( -/obj/structure/filingcabinet/filingcabinet, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/centcom/zone3) "kEZ" = ( /obj/effect/turf_decal{ icon_state = "grass_edge_medium_corner" @@ -22508,123 +21998,63 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"kFL" = ( -/obj/item/flag/nt, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/bridge) "kFV" = ( /obj/structure/flora/junglebush/b, /obj/structure/flora/grass/jungle, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"kFY" = ( -/obj/machinery/door_control/secure{ - color = "#99ff99"; - id = "ERT_armory_lvl1"; - name = "ERT Armory Level 1"; - pixel_y = 32; - req_access = list(114) - }, +"kGp" = ( +/obj/structure/table/glass, /turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkgreen" + icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/zone3) "kGJ" = ( /obj/structure/chair/sofa/right, /turf/simulated/floor/wood{ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership/elite_squad) +"kGN" = ( +/obj/structure/window/reinforced{ + armor = list("melee"=100,"bullet"=100,"laser"=0,"energy"=0,"bomb"=25,"bio"=100,"rad"=100,"fire"=80,"acid"=100); + dir = 1; + layer = 2 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "navybluealt" + }, +/area/centcom/specops) "kGX" = ( /obj/structure/chair/sofa/left, /turf/simulated/floor/wood{ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership/elite_squad) -"kHg" = ( -/obj/effect/decal/warning_stripes/northwestsouth, -/obj/machinery/door/poddoor/shutters/preopen/invincible{ - dir = 1; - id_tag = "ERT_armory_vkd"; - name = "Armory level 1" - }, -/obj/machinery/door/poddoor/impassable/preopen{ - id_tag = "ERT_Quarantine"; - name = "ERT Quarantine" - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" - }, -/area/centcom/specops) -"kHn" = ( -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-oak" +"kHn" = ( +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" }, /area/syndicate_mothership/elite_squad) -"kHx" = ( -/obj/structure/rack, -/obj/item/clothing/accessory/holster{ - pixel_y = 10 - }, -/obj/item/clothing/accessory/holster{ - pixel_y = 10 - }, -/obj/item/clothing/accessory/holster{ - pixel_y = 10 - }, -/obj/item/clothing/accessory/holster{ - pixel_y = 10 - }, -/obj/item/clothing/accessory/holster{ - pixel_y = 5 - }, -/obj/item/clothing/accessory/holster{ - pixel_y = 5 - }, -/obj/item/clothing/accessory/holster{ - pixel_y = 5 - }, -/obj/item/clothing/accessory/holster{ - pixel_y = 5 +"kHQ" = ( +/obj/effect/turf_decal/arrows{ + dir = 1 }, -/obj/item/clothing/accessory/holster, -/obj/item/clothing/accessory/holster, -/obj/item/clothing/accessory/holster, -/obj/item/clothing/accessory/holster, -/obj/effect/decal/warning_stripes/white/hollow, /turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) -"kHA" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "burst_r"; - tag = "icon-burst_r" - }, -/obj/structure/window/reinforced{ - dir = 8 + dir = 4; + icon_state = "darkyellowalt" }, -/turf/simulated/floor/plating/airless, -/area/shuttle/pod_2) +/area/centcom/supply) +"kHS" = ( +/obj/structure/bookcase, +/obj/item/book/random/triple, +/turf/simulated/floor/plating, +/area/centcom/zone2) "kHT" = ( /obj/item/flag/nt, /turf/simulated/floor/carpet/black, /area/centcom/zone2) -"kHW" = ( -/obj/machinery/door/window/brigdoor{ - base_state = "rightsecure"; - dir = 1; - icon_state = "rightsecure"; - req_access = list(101) - }, -/turf/simulated/floor/carpet, -/area/centcom/zone2) "kIl" = ( /obj/structure/table/wood/fancy/black, /turf/simulated/floor/carpet, @@ -22654,25 +22084,57 @@ icon_state = "rampbottom" }, /area/syndicate_mothership/outside) -"kIU" = ( -/obj/item/gun/energy/sniperrifle, -/obj/item/gun/energy/sniperrifle, -/obj/item/gun/energy/sniperrifle, -/obj/item/gun/energy/sniperrifle, -/obj/item/gun/energy/sniperrifle, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 +"kIT" = ( +/obj/structure/chair/comfy/brown{ + color = "#3300FF"; + dir = 1 }, -/obj/structure/window/reinforced{ - dir = 4; - layer = 2.9 +/turf/simulated/floor/carpet/cyan, +/area/centcom/zone2) +"kJd" = ( +/obj/structure/closet/cabinet{ + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100) }, -/obj/structure/rack/gunrack, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/item/storage/box/centcomofficer, +/obj/item/radio/headset/centcom{ + desc = null; + name = "Supreme commander bowman headset" }, -/area/centcom/supply) +/obj/item/card/id{ + access = list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,69,70,71,73,74,75,76,77,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114); + icon_state = "commander"; + name = "Supreme Commander ID card"; + rank = "Nanotrasen Navy Captain"; + registered_name = null + }, +/obj/item/door_remote/centcomm, +/obj/item/clothing/accessory/medal/gold{ + desc = null; + name = "Supreme commander's gold medal" + }, +/obj/item/gun/projectile/revolver/mateba, +/obj/item/ammo_box/a357, +/obj/item/ammo_box/a357, +/obj/item/ammo_box/a357, +/obj/item/clothing/under/color/black{ + icon_state = "hosdnavyclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/glasses/hud/security/sunglasses/aviators, +/obj/item/clothing/head/beret/centcom/officer/sigholt{ + icon_state = "officerberet"; + name = "beret" + }, +/obj/item/storage/backpack/satchel, +/obj/item/clothing/gloves/color/white{ + desc = null; + name = "Supreme judge gloves" + }, +/obj/item/clothing/shoes/cowboy/white{ + name = "white boots" + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "kJh" = ( /obj/structure/curtain/black{ pixel_y = -32 @@ -22682,6 +22144,18 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/jail) +"kJF" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "CC_supply_external2"; + layer = 5; + locked = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellowalt" + }, +/area/centcom/supply) "kJG" = ( /obj/structure/bookcase, /obj/item/book/manual, @@ -22703,46 +22177,37 @@ /obj/item/flag/ninja, /turf/simulated/floor/wood/fancy/light, /area/ninja/outpost) +"kKp" = ( +/obj/structure/chair/comfy/red{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/centcom/jail) "kKs" = ( /obj/machinery/light/spot, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) -"kKG" = ( -/obj/machinery/mass_driver{ - dir = 4; - id_tag = "ASSAULT0"; - name = "gravpult" - }, -/obj/effect/turf_decal/loading_area/white{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/north, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "kKP" = ( /turf/simulated/floor/plasteel{ icon_state = "grimy" }, /area/syndicate_mothership/elite_squad) +"kKV" = ( +/obj/structure/window/reinforced, +/obj/structure/table, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/computer/library/public, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "kLh" = ( /turf/simulated/wall/indestructible/abductor{ icon_state = "alien2" }, /area/abductor_ship) -"kLi" = ( -/obj/machinery/door_control/secure{ - id = "ERT_Drop"; - pixel_x = 26; - pixel_y = -8; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "navybluealt" - }, -/area/centcom/specops) "kLj" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/brigdoor{ @@ -22767,13 +22232,6 @@ /obj/item/flashlight/lamp/green, /turf/simulated/floor/carpet/black, /area/centcom/zone2) -"kLu" = ( -/obj/machinery/atmospherics/pipe/simple/hidden, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "darkgrey" - }, -/area/shuttle/administration) "kLx" = ( /obj/structure/flora/junglebush, /obj/structure/flora/junglebush/b, @@ -22787,6 +22245,21 @@ icon_state = "grimy" }, /area/syndicate_mothership/elite_squad) +"kLX" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/turf_decal/siding/white{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "kMm" = ( /obj/machinery/fishtank/wall{ opacity = 1 @@ -22827,57 +22300,41 @@ icon_state = "floor13" }, /area/shuttle/ninja) -"kNc" = ( -/obj/effect/turf_decal/siding/white{ - dir = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/evac) -"kNd" = ( -/obj/structure/flora/rock/jungle, -/mob/living/simple_animal/hostile/carp/koi{ - faction = list("") - }, -/obj/effect/turf_decal/tile/neutral{ - alpha = 85; - icon_state = "seadeep"; - layer = 9; - icon = 'icons/misc/beach.dmi' +"kMT" = ( +/obj/structure/grille, +/obj/structure/window/full/shuttle, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "adminshuttleshutters"; + name = "Blast Shutters" }, -/turf/simulated/floor/indestructible/beach/water/deep/sand_floor, -/area/centcom/specops) +/turf/simulated/floor/plating, +/area/shuttle/administration) "kNj" = ( /turf/simulated/floor/plasteel{ dir = 6; icon_state = "darkbluealt" }, /area/centcom/zone2) -"kNq" = ( -/obj/structure/table, -/obj/machinery/computer/library/public, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"kNE" = ( -/obj/machinery/vending/snack/free, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" - }, -/area/shuttle/administration) -"kNH" = ( -/obj/machinery/ai_status_display{ - pixel_y = -32 +"kNk" = ( +/obj/effect/landmark/marauder_exit, +/obj/structure/fans/tiny, +/obj/effect/decal/warning_stripes/south, +/obj/effect/turf_decal/tile/neutral{ + alpha = 220; + color = "black"; + icon_state = "tile_full"; + layer = 9; + opacity = 1 }, -/obj/effect/turf_decal/siding/white{ - dir = 1 +/turf/simulated/floor/plating, +/area/centcom/supply) +"kNG" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) +/turf/simulated/floor/shuttle, +/area/shuttle/nt_droppod) "kNN" = ( /turf/simulated/wall/indestructible/abductor{ icon_state = "alien4" @@ -22888,6 +22345,56 @@ icon_state = "alien5" }, /area/abductor_ship) +"kOx" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkbluealt" + }, +/area/centcom/zone2) +"kOD" = ( +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellowcornersalt" + }, +/area/centcom/supply) +"kPa" = ( +/obj/mecha/combat/marauder/seraph{ + armor = list("melee"=80,"bullet"=80,"laser"=80,"energy"=80,"bomb"=80,"bio"=80,"rad"=80,"fire"=100,"acid"=100); + color = "#006666"; + name = "Rocinante" + }, +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang, +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg/dual{ + fire_sound = 'sound/weapons/gunshots/gunshot_strong.ogg'; + name = "Automatic 20mm cannone"; + projectile_delay = 0.5; + projectiles_per_shot = 10 + }, +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/heavy{ + name = "Heavy 83mm HE RL" + }, +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot{ + name = "Destroyer of the present"; + projectiles = 70; + projectiles_per_shot = 7 + }, +/obj/item/mecha_parts/mecha_equipment/weapon/energy/xray/triple, +/obj/item/mecha_parts/mecha_equipment/teleporter/precise, +/obj/item/mecha_parts/mecha_equipment/repair_droid, +/obj/effect/turf_decal/mech, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/obj/effect/decal/warning_stripes/west, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "kPd" = ( /obj/machinery/vending/boozeomat, /obj/effect/turf_decal/tile/neutral{ @@ -22901,6 +22408,20 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) +"kPg" = ( +/obj/structure/table/glass, +/obj/item/paper_bin/nanotrasen{ + pixel_x = -2; + pixel_y = 8 + }, +/obj/item/pen/fancy{ + pixel_x = 8 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "kPi" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -22996,6 +22517,18 @@ icon_state = "darkgrey" }, /area/centcom/zone2) +"kQO" = ( +/obj/machinery/computer/communications, +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the Special Ops team."; + name = "Security Station Monitor"; + network = list("SS13","Research Outpost","Mining Outpost"); + pixel_x = 30 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor4" + }, +/area/shuttle/specops) "kQT" = ( /obj/effect/turf_decal/weather/snow/corner{ dir = 4 @@ -23025,12 +22558,72 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) +"kRn" = ( +/obj/structure/table/glass, +/obj/structure/window/reinforced{ + dir = 8; + layer = 4.2 + }, +/obj/machinery/photocopier/faxmachine/longrange{ + department = "Central Command" + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 6 + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "kRq" = ( /obj/structure/chair/comfy/purp{ dir = 1 }, /turf/simulated/floor/carpet, /area/wizard_station) +"kRw" = ( +/obj/docking_port/mobile{ + dheight = 1; + dir = 8; + dwidth = 7; + height = 18; + id = "trade_sol"; + name = "sol trade shuttle"; + port_direction = 2; + preferred_direction = 8; + roundstart_move = "trade_sol_base"; + width = 15 + }, +/obj/machinery/door/airlock/shuttle/glass{ + id_tag = "s_docking_airlock" + }, +/obj/structure/fans/tiny, +/obj/docking_port/stationary{ + dheight = 1; + dir = 8; + dwidth = 7; + height = 18; + id = "trade_sol_base"; + name = "docking bay 2 at Jupiter Station"; + width = 15 + }, +/turf/simulated/floor/wood, +/area/shuttle/trade/sol) +"kRE" = ( +/obj/effect/turf_decal/arrows{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkyellowalt" + }, +/area/centcom/supply) +"kRJ" = ( +/obj/structure/table/wood, +/obj/item/radio/intercom, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/centcom/zone3) "kRM" = ( /obj/structure/bookcase, /obj/item/book/manual, @@ -23069,13 +22662,6 @@ icon_state = "darkfull" }, /area/syndicate_mothership/jail) -"kSD" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/light, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) "kSF" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/light/small, @@ -23097,11 +22683,27 @@ }, /turf/simulated/floor/wood/fancy/light, /area/ninja/outpost) +"kTa" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/transport) "kTc" = ( /obj/structure/table/glass, /obj/item/reagent_containers/food/snacks/cheesyfries, /turf/simulated/floor/carpet, /area/centcom/evac) +"kTd" = ( +/obj/structure/railing{ + dir = 4; + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/centcom/zone2) "kTy" = ( /obj/structure/curtain/open/shower, /obj/machinery/shower{ @@ -23111,21 +22713,23 @@ icon_state = "white" }, /area/centcom/jail) -"kTL" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-34"; - tag = "icon-plant-34" - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "kTP" = ( /obj/machinery/photocopier, /turf/simulated/floor/carpet, /area/centcom/zone2) +"kTQ" = ( +/obj/machinery/vending/chinese/free, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault"; + tag = "icon-vault (WEST)" + }, +/area/centcom/specops) +"kTW" = ( +/turf/simulated/floor/wood{ + icon_state = "wood-broken5" + }, +/area/centcom/zone2) "kUf" = ( /obj/item/radio/intercom/syndicate{ pixel_x = -3; @@ -23159,14 +22763,6 @@ icon_state = "barber" }, /area/centcom/jail) -"kUK" = ( -/obj/effect/turf_decal/siding/white{ - dir = 9 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/evac) "kVb" = ( /obj/effect/turf_decal/siding/wood{ dir = 6; @@ -23186,31 +22782,6 @@ icon_state = "warnwhite" }, /area/centcom/zone1) -"kVP" = ( -/obj/machinery/embedded_controller/radio/airlock/access_controller{ - frequency = 2000; - id_tag = "CC-OP2"; - name = "Access Controller OP2"; - pixel_y = 32; - req_access = list(109); - tag_exterior_door = "CC-OP2-Ext"; - tag_interior_door = "CC-OP2-Int" - }, -/obj/structure/table/reinforced, -/obj/item/paper_bin/nanotrasen{ - pixel_x = 3; - pixel_y = 12 - }, -/obj/item/pen/multi/fountain, -/turf/simulated/floor/wood, -/area/centcom/zone2) -"kVQ" = ( -/obj/machinery/cryopod/robot, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "navyblue" - }, -/area/centcom/specops) "kVS" = ( /obj/structure/curtain/black{ pixel_x = 32; @@ -23266,15 +22837,25 @@ "kWm" = ( /turf/simulated/wall/indestructible/reinforced, /area/centcom/zone3) -"kWq" = ( -/obj/item/radio/intercom/specops{ - pixel_y = -32 +"kWB" = ( +/obj/effect/turf_decal/loading_area/white{ + dir = 4 }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkyellow" +/obj/effect/turf_decal/tile/neutral{ + alpha = 100; + color = "black"; + icon_state = "tile_full"; + layer = 9 }, -/area/centcom/specops) +/turf/simulated/floor/plating, +/area/centcom/supply) +"kWH" = ( +/obj/structure/shuttle/engine/platform{ + dir = 1; + layer = 2.9 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/vox) "kWN" = ( /obj/structure/fence/door{ color = "#b0b7c6"; @@ -23282,6 +22863,11 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) +"kXg" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkredcornersalt" + }, +/area/centcom/specops) "kXj" = ( /obj/effect/turf_decal/stripes/gold{ dir = 10 @@ -23290,79 +22876,61 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership/infteam) -"kXm" = ( -/obj/machinery/computer/card, -/obj/structure/railing, -/obj/structure/window/reinforced{ +"kXn" = ( +/obj/effect/turf_decal/stripes/gold, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/syndicate_mothership/infteam) +"kXz" = ( +/obj/machinery/light/small{ dir = 8 }, +/turf/simulated/floor/plating, +/area/centcom/zone2) +"kXF" = ( +/obj/machinery/door_control{ + color = "#ffcccc"; + id = "Zone3_bathroom2"; + name = "Bathroom lock"; + normaldoorcontrol = 1; + pixel_x = -4; + pixel_y = 33; + req_access = list(114); + specialfunctions = 4 + }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "white" }, -/area/centcom/bridge) -"kXn" = ( +/area/centcom/zone3) +"kXT" = ( /obj/effect/turf_decal/stripes/gold, +/obj/structure/sign/poster/contraband/random{ + pixel_y = -30 + }, +/obj/machinery/light/small, /turf/simulated/floor/wood{ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership/infteam) -"kXq" = ( -/turf/space/transit/west, -/area/space) -"kXu" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) -"kXJ" = ( -/obj/structure/table/wood/fancy/black, -/obj/item/reagent_containers/food/snacks/soup/beetsoup{ - desc = "Со вкусом политических убийств"; - name = "Борщ"; - pixel_y = 16 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/item/stack/spacecash/c1000000{ - name = "1000000 Credit" - }, -/obj/item/stack/telecrystal/twohundred_fifty{ - amount = 115; - desc = null - }, -/obj/item/stack/telecrystal/twohundred_fifty{ - amount = 115; - desc = null +"kYb" = ( +/obj/structure/table/glass, +/obj/item/paper_bin/nanotrasen{ + pixel_x = -2; + pixel_y = 8 }, -/turf/simulated/floor/carpet/red, -/area/syndicate_mothership/control) -"kXQ" = ( -/obj/effect/decal/nanotrasen_logo{ - icon_state = "logo2"; - pixel_x = 16 +/obj/item/pen/multi/gold, +/turf/simulated/floor/carpet/cyan, +/area/centcom/zone2) +"kYe" = ( +/obj/structure/table/glass, +/obj/structure/sign/poster/official/safety_report{ + pixel_y = 32 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) -"kXT" = ( -/obj/effect/turf_decal/stripes/gold, -/obj/structure/sign/poster/contraband/random{ - pixel_y = -30 - }, -/obj/machinery/light/small, -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-oak" - }, -/area/syndicate_mothership/infteam) -"kYt" = ( -/obj/structure/table/wood{ - color = "#996633" + dir = 1; + icon_state = "darkredalt" }, -/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "kYu" = ( /obj/machinery/light/small{ @@ -23383,31 +22951,35 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"kYF" = ( +"kYG" = ( +/obj/item/flag/nt, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkredalt" + }, +/area/centcom/jail) +"kZy" = ( /obj/structure/table/reinforced, -/obj/item/reagent_containers/food/snacks/sliceable/pizza/macpizza, -/turf/simulated/floor/wood, -/area/centcom/specops) -"kYP" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 +/obj/machinery/chem_dispenser/soda/upgraded, +/obj/item/storage/box/drinkingglasses{ + pixel_x = 1; + pixel_y = 5 }, -/obj/structure/reagent_dispensers/water_cooler, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"kZm" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; +/turf/simulated/floor/carpet/black, +/area/shuttle/administration) +"kZA" = ( +/obj/machinery/mass_driver{ + dir = 4; + id_tag = "ASSAULT2"; + name = "gravpult" + }, +/obj/effect/turf_decal/loading_area/white{ dir = 4 }, -/turf/simulated/floor/glass/reinforced, -/area/centcom/specops) -"kZD" = ( /turf/simulated/floor/plasteel{ - icon_state = "darkredaltstrip" + icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/supply) "kZH" = ( /obj/effect/turf_decal/siding/wideplating/corner{ color = "#55391A" @@ -23454,16 +23026,20 @@ }, /area/syndicate_mothership/infteam) "laj" = ( -/obj/effect/decal/warning_stripes/north, -/obj/effect/turf_decal/tile/neutral{ - alpha = 200; - color = "black"; - icon_state = "tile_full"; - layer = 9; - opacity = 1 +/obj/effect/turf_decal/stripes/black{ + dir = 10; + do_not_delete_me = 1 }, -/turf/simulated/floor/plating, -/area/centcom/supply) +/obj/effect/turf_decal/stripes/black{ + dir = 5; + do_not_delete_me = 1; + icon_state = "bs_deadlock" + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "white" + }, +/area/shuttle/administration) "lay" = ( /obj/structure/table/wood, /obj/item/storage/firstaid/tactical/sst{ @@ -23519,6 +23095,30 @@ icon_state = "dark" }, /area/centcom/zone1) +"lbx" = ( +/turf/simulated/floor/plasteel{ + icon_state = "Dark" + }, +/area/centcom/supplypod/loading/four) +"lbH" = ( +/obj/effect/turf_decal/stripes/black{ + do_not_delete_me = 1 + }, +/obj/effect/turf_decal/stripes/black{ + dir = 1; + do_not_delete_me = 1 + }, +/obj/machinery/door/airlock/centcom{ + id_tag = "adminshuttle"; + name = "Workshop"; + opacity = 1; + req_access = list(101) + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "podfloor_dark" + }, +/area/shuttle/administration) "lbU" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -23529,6 +23129,11 @@ icon_state = "darkredalt" }, /area/centcom/jail) +"lbZ" = ( +/turf/simulated/floor/plasteel{ + icon_state = "Dark" + }, +/area/centcom/supplypod/pod_storage) "lcq" = ( /obj/machinery/atmospherics/pipe/manifold/hidden, /turf/simulated/floor/plasteel{ @@ -23560,6 +23165,15 @@ /obj/structure/flora/junglebush/b, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) +"lcU" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 1; + id_tag = "CC_Armory_SFG5" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "ldr" = ( /obj/structure/window/reinforced{ dir = 8 @@ -23578,25 +23192,31 @@ icon_state = "white" }, /area/centcom/zone1) -"lej" = ( -/obj/machinery/door/airlock/command/glass{ - frequency = 2000; - icon_state = "open"; - id_tag = "CC-OP4-Int"; - locked = 1; - name = "Zone 2" - }, -/obj/effect/decal/warning_stripes/blue, -/obj/machinery/access_button{ - command = "cycle_interior"; - frequency = 2000; - master_tag = "CC-OP4"; - name = "CC-OP4-INT"; - pixel_y = 24; - req_access = list(109) +"ldS" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/decal/warning_stripes/south, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "ERT_armory_lvl3"; + layer = 5; + name = "Armory level 3" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "darkfull" + }, +/area/centcom/specops) +"leh" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/floor/shuttle, +/area/shuttle/pod_1) +"leC" = ( +/turf/simulated/floor/indestructible{ + dir = 4; + icon_state = "darkgreynavybluecorner" }, /area/centcom/specops) "leD" = ( @@ -23616,18 +23236,6 @@ /obj/item/dart_cartridge, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) -"leF" = ( -/obj/structure/sign/poster/official/nanotrasen_logo{ - pixel_y = -32 - }, -/obj/item/twohanded/required/kirbyplants, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/bridge) "leN" = ( /obj/machinery/light/small{ brightness_range = 6; @@ -23655,14 +23263,23 @@ }, /area/syndicate_mothership/outside) "lfD" = ( -/obj/structure/table/wood, -/obj/item/radio/intercom, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 +/obj/structure/table/glass, +/obj/item/book/manual/faxes, +/obj/machinery/newscaster/security_unit{ + pixel_y = 32 }, -/turf/simulated/floor/carpet, -/area/centcom/zone3) +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) +"lfP" = ( +/obj/structure/table/wood/fancy/black, +/obj/item/toy/prize/seraph{ + pixel_y = 12 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "lga" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -23696,46 +23313,6 @@ }, /turf/simulated/floor/carpet, /area/centcom/zone1) -"lgz" = ( -/obj/machinery/door/airlock/centcom{ - name = "Supreme Court"; - opacity = 1; - req_access = list(106,109,110) - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone3) -"lgD" = ( -/obj/structure/table/wood/fancy/black, -/obj/item/toy/prize/seraph{ - pixel_y = 12 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) -"lgN" = ( -/obj/machinery/door_control/secure{ - id = "CC_Armory_Combat_shotgun"; - name = "Combat Shotguns"; - pixel_x = -8; - pixel_y = -24; - req_access = list(114) - }, -/obj/machinery/door_control/secure{ - id = "CC_Armory_IK60"; - name = "IK-60"; - pixel_x = 8; - pixel_y = -24; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "navyblue" - }, -/area/centcom/specops) "lgR" = ( /obj/structure/extinguisher_cabinet{ name = "south extinguisher cabinet"; @@ -23752,42 +23329,14 @@ icon_state = "darkyellowaltstrip" }, /area/centcom/zone3) -"lhk" = ( -/obj/structure/closet/secure_closet/security, -/obj/item/clothing/mask/balaclava, -/obj/item/clothing/accessory/holster, -/obj/item/storage/box/survival_security{ - name = "Security survival kit" - }, -/turf/simulated/floor/wood, -/area/centcom/jail) -"lhn" = ( -/obj/item/gun/energy/pulse/destroyer/annihilator, -/obj/item/gun/energy/pulse/destroyer/annihilator, -/obj/item/gun/energy/pulse/destroyer/annihilator, -/obj/item/gun/energy/pulse/destroyer/annihilator, -/obj/item/gun/energy/pulse/destroyer/annihilator, -/obj/item/gun/energy/pulse/destroyer/annihilator, -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - layer = 2.9; - name = "Pulse ANNIHILATOR"; - req_access = list(114) - }, +"lgV" = ( +/obj/structure/chair/comfy/shuttle, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "vault" - }, -/area/centcom/jail) -"lhs" = ( -/turf/simulated/floor/lubed, -/area/centcom/evac) -"lhy" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 + dir = 9; + icon_state = "darkyellow" }, +/area/centcom/specops) +"lhl" = ( /obj/effect/turf_decal/siding{ color = "#444444"; dir = 1 @@ -23797,31 +23346,42 @@ }, /turf/simulated/floor/glass, /area/centcom/zone3) +"lhs" = ( +/turf/simulated/floor/lubed, +/area/centcom/evac) +"lhv" = ( +/obj/effect/turf_decal/stripes/gold, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) +"lhS" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkgreencorners" + }, +/area/centcom/specops) "lhU" = ( /obj/machinery/abductor/experiment{ team = 2 }, /turf/simulated/floor/indestructible/abductor, /area/abductor_ship) -"lig" = ( -/obj/structure/reagent_dispensers/water_cooler, -/obj/structure/window/reinforced, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"lim" = ( -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkredaltstrip" - }, -/area/centcom/specops) -"liC" = ( -/obj/structure/table/reinforced, -/obj/item/stack/nanopaste, -/obj/item/mmi, -/obj/item/stack/nanopaste, -/obj/structure/sink{ - dir = 1 - }, +"liD" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/machinery/iv_drip, +/obj/item/reagent_containers/iv_bag/salglu, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/nitrogen, +/obj/item/tank/internals/emergency_oxygen/plasma, /turf/simulated/floor/shuttle{ icon_state = "floor3" }, @@ -23835,11 +23395,26 @@ icon_state = "darkfull" }, /area/syndicate_mothership) +"ljf" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "CC_Armory_DAE" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "ljg" = ( /obj/structure/flora/tree/palm, /obj/item/beach_ball, /turf/simulated/floor/beach/sand, /area/centcom/evac) +"ljo" = ( +/obj/machinery/vending/clothing/departament/law, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "ljs" = ( /obj/structure/chair/stool/bar, /obj/machinery/light{ @@ -23869,15 +23444,6 @@ }, /turf/simulated/floor/indestructible/abductor, /area/abductor_ship) -"ljT" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/turf_decal/siding{ - color = "#444444" - }, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) "lke" = ( /obj/machinery/light/spot{ dir = 1 @@ -23897,12 +23463,6 @@ icon_state = "warnwhite" }, /area/centcom/zone1) -"lkr" = ( -/obj/machinery/vending/cigarette/free, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/centcom/jail) "lks" = ( /obj/machinery/iv_drip, /turf/simulated/floor/shuttle{ @@ -23915,36 +23475,20 @@ }, /turf/simulated/floor/indestructible/abductor, /area/abductor_ship) -"lkI" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 6 - }, -/obj/structure/showcase{ - layer = 4.1; - pixel_x = -5; - pixel_y = 5 - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "lkT" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 }, /turf/simulated/floor/carpet/cyan, /area/ninja/outpost) -"lla" = ( -/obj/effect/decal/warning_stripes/red, -/obj/machinery/door/airlock/centcom{ - damage_deflection = 999; - name = "Prison Customs"; - opacity = 1; - req_access = list(104) - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"lle" = ( +/obj/structure/table/glass, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 5 }, -/area/centcom/jail) +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) "llm" = ( /obj/structure/table/wood/fancy/black, /obj/item/folder/blue{ @@ -23967,14 +23511,6 @@ icon_state = "dark" }, /area/centcom/bridge) -"lln" = ( -/obj/machinery/vending/coffee, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault"; - tag = "icon-vault (WEST)" - }, -/area/centcom/specops) "llv" = ( /obj/structure/fans/tiny/invisible, /obj/machinery/light{ @@ -24011,6 +23547,15 @@ icon_state = "dark" }, /area/syndicate_mothership/control) +"llT" = ( +/obj/machinery/light/spot{ + dir = 1 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/transport) "lmc" = ( /obj/item/flag/species/skrell, /turf/simulated/floor/plasteel{ @@ -24020,27 +23565,14 @@ "lmr" = ( /obj/machinery/syndiepad/receivepad, /obj/machinery/conveyor/inverted{ - id = "SFBQMLoad"; - dir = 5 + dir = 5; + id = "SFBQMLoad" }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "dark" }, /area/syndicate_mothership/cargo) -"lms" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 8; - height = 18; - id = "admin_away"; - name = "centcom bay 1"; - timid = 1; - turf_type = /turf/simulated/floor/plating/airless; - width = 18 - }, -/turf/simulated/floor/plating/airless, -/area/space) "lmx" = ( /obj/machinery/light/small{ dir = 8 @@ -24050,25 +23582,6 @@ icon_state = "darkredcornersalt" }, /area/syndicate_mothership/jail) -"lmE" = ( -/obj/docking_port/stationary{ - dir = 2; - dwidth = 5; - height = 7; - id = "supply_away"; - name = "supply centcom"; - turf_type = /turf/simulated/floor/plating/airless; - width = 12 - }, -/turf/simulated/floor/plating/airless, -/area/space) -"lmJ" = ( -/obj/effect/turf_decal/stripes/black{ - dir = 6; - do_not_delete_me = 1 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/administration) "lmY" = ( /obj/machinery/door/poddoor/multi_tile/four_tile_hor{ icon_state = "open"; @@ -24109,16 +23622,6 @@ water_overlay_icon_state = null }, /area/syndicate_mothership/outside) -"lnR" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" - }, -/area/shuttle/administration) "lnZ" = ( /obj/structure/table, /obj/item/storage/firstaid, @@ -24135,28 +23638,30 @@ /obj/effect/turf_decal/weather/snow/corner, /turf/simulated/floor/indestructible/beach/water/deep/dense, /area/ninja/outside) -"lpz" = ( -/obj/machinery/vending/wallmed{ - pixel_x = 24 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkyellowalt" - }, -/area/centcom/zone3) "lpB" = ( /turf/simulated/floor/plasteel{ dir = 9; icon_state = "darkredalt" }, /area/centcom/jail) -"lpU" = ( -/obj/effect/landmark/ert_director, -/obj/structure/chair/office/dark{ - dir = 8 +"lpI" = ( +/obj/machinery/turretid{ + control_area = "Centcom Special Operations Forces"; + name = "Quarantine Turret"; + pixel_x = 3; + pixel_y = -26 }, -/turf/simulated/floor/carpet/black, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 5 + }, +/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) +"lpP" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkyellowaltstrip" + }, +/area/centcom/zone3) "lqs" = ( /obj/structure/chair/comfy/brown{ dir = 1 @@ -24166,22 +23671,13 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) -"lqy" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 5 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "darkgrey" - }, -/area/shuttle/administration) -"lqG" = ( -/obj/machinery/status_display{ - layer = 4; - pixel_y = 32 +"lqC" = ( +/obj/item/radio/intercom/specops{ + pixel_x = -32 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 9; + icon_state = "navybluealt" }, /area/centcom/specops) "lrJ" = ( @@ -24235,9 +23731,49 @@ icon_state = "darkgrey" }, /area/syndicate_mothership) -"lsv" = ( -/obj/effect/decal/warning_stripes/green/hollow, -/obj/effect/landmark/response_team, +"lsj" = ( +/obj/structure/rack, +/obj/item/ammo_box/magazine/sfg9mm, +/obj/item/ammo_box/magazine/sfg9mm, +/obj/item/ammo_box/magazine/sfg9mm, +/obj/item/ammo_box/magazine/sfg9mm, +/obj/item/ammo_box/magazine/sfg9mm, +/obj/item/ammo_box/magazine/sfg9mm, +/obj/item/ammo_box/magazine/sfg9mm, +/obj/item/ammo_box/magazine/sfg9mm, +/obj/item/ammo_box/magazine/sfg9mm, +/obj/item/ammo_box/magazine/sfg9mm, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/ammo_box/magazine/sfg9mm{ + pixel_x = 8 + }, +/obj/item/ammo_box/magazine/sfg9mm{ + pixel_x = 8 + }, +/obj/item/ammo_box/magazine/sfg9mm{ + pixel_x = 8 + }, +/obj/item/ammo_box/magazine/sfg9mm{ + pixel_x = 8 + }, +/obj/item/ammo_box/magazine/sfg9mm{ + pixel_x = 8 + }, +/obj/item/ammo_box/magazine/sfg9mm{ + pixel_x = 8 + }, +/obj/item/ammo_box/magazine/sfg9mm{ + pixel_x = 8 + }, +/obj/item/ammo_box/magazine/sfg9mm{ + pixel_x = 8 + }, +/obj/item/ammo_box/magazine/sfg9mm{ + pixel_x = 8 + }, +/obj/item/ammo_box/magazine/sfg9mm{ + pixel_x = 8 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -24263,16 +23799,23 @@ /obj/item/reagent_containers/food/drinks/cans/beer, /turf/simulated/floor/carpet, /area/centcom/evac) -"ltb" = ( -/obj/structure/railing{ - dir = 8; - pixel_x = 32 +"lto" = ( +/obj/structure/table/wood/fancy/black, +/obj/item/paper_bin/nanotrasen{ + pixel_x = -2; + pixel_y = 8 }, +/obj/item/flashlight/lamp/green{ + pixel_x = -6; + pixel_y = 16 + }, +/turf/simulated/floor/carpet/red, +/area/centcom/bridge) +"ltP" = ( /turf/simulated/floor/plasteel{ - icon_state = "rampbottom"; - tag = "icon-stage_stairs" + icon_state = "darkfull" }, -/area/centcom/zone2) +/area/centcom/jail) "ltY" = ( /obj/structure/rack/holorack, /obj/item/scythe/tele, @@ -24320,12 +23863,58 @@ }, /turf/simulated/floor/carpet/red, /area/ussp_centcom/secretariat) +"lun" = ( +/obj/structure/rack, +/obj/item/clothing/accessory/holster{ + pixel_y = 10 + }, +/obj/item/clothing/accessory/holster{ + pixel_y = 10 + }, +/obj/item/clothing/accessory/holster{ + pixel_y = 10 + }, +/obj/item/clothing/accessory/holster{ + pixel_y = 10 + }, +/obj/item/clothing/accessory/holster{ + pixel_y = 5 + }, +/obj/item/clothing/accessory/holster{ + pixel_y = 5 + }, +/obj/item/clothing/accessory/holster{ + pixel_y = 5 + }, +/obj/item/clothing/accessory/holster{ + pixel_y = 5 + }, +/obj/item/clothing/accessory/holster, +/obj/item/clothing/accessory/holster, +/obj/item/clothing/accessory/holster, +/obj/item/clothing/accessory/holster, +/obj/effect/decal/warning_stripes/white/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "luo" = ( /obj/machinery/abductor/experiment{ team = 3 }, /turf/simulated/floor/indestructible/abductor, /area/abductor_ship) +"lur" = ( +/obj/effect/decal/warning_stripes/south, +/obj/effect/turf_decal/tile/neutral{ + alpha = 200; + color = "black"; + icon_state = "tile_full"; + layer = 9; + opacity = 1 + }, +/turf/simulated/floor/plating, +/area/centcom/supply) "lus" = ( /obj/effect/turf_decal/stripes/asteroid/corner{ dir = 1 @@ -24341,40 +23930,29 @@ icon_state = "darkyellowcornersalt" }, /area/syndicate_mothership/control) -"luA" = ( -/obj/structure/bookcase, -/obj/item/book/random/triple, -/turf/simulated/floor/plating, -/area/centcom/zone2) -"lvd" = ( -/obj/structure/sink{ - dir = 1 - }, -/obj/structure/mirror{ - pixel_y = -32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/centcom/specops) -"lvp" = ( -/obj/machinery/atmospherics/unary/tank/air{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/black{ - dir = 8; - do_not_delete_me = 1 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "podfloor_dark" +"luw" = ( +/turf/simulated/floor/wood{ + icon_state = "wood-broken6" }, -/area/shuttle/administration) +/area/centcom/zone2) "lvG" = ( /obj/structure/flora/grass/jungle/b, /obj/effect/mapping_helpers/light, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) +"lvI" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/obj/machinery/photocopier{ + anchored = 0 + }, +/obj/structure/sign/poster/secret/lady{ + pixel_x = 32 + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "lvT" = ( /obj/structure/weightmachine/stacklifter, /turf/simulated/floor/grass, @@ -24400,6 +23978,11 @@ icon_state = "darkfull" }, /area/syndicate_mothership/jail) +"lwk" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkbluealtstrip" + }, +/area/centcom/zone2) "lwI" = ( /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -24419,18 +24002,29 @@ tag = "icon-stage_stairs" }, /area/syndicate_mothership) +"lwT" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/two) +"lwX" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 1; + id_tag = "CC_Armory_GYGAX" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" + }, +/area/centcom/specops) "lxn" = ( /obj/machinery/light, /turf/simulated/floor/plasteel{ icon_state = "darkyellowaltstrip" }, /area/syndicate_mothership/control) -"lxv" = ( -/obj/machinery/vending/chinese/free{ - pixel_y = 7 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "lxP" = ( /obj/machinery/door/window/brigdoor{ color = "#00f700"; @@ -24453,15 +24047,6 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership/elite_squad) -"lxV" = ( -/obj/machinery/newscaster/security_unit{ - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "navybluealt" - }, -/area/centcom/specops) "lym" = ( /obj/machinery/vending/syndisnack, /turf/simulated/floor/carpet/black, @@ -24500,25 +24085,6 @@ icon_state = "darkblue" }, /area/centcom/zone1) -"lza" = ( -/obj/effect/turf_decal/tile/neutral{ - color = "black"; - icon_state = "tile_full"; - layer = 9 - }, -/obj/effect/step_trigger/teleporter{ - teleport_x = 175; - teleport_y = 60; - teleport_z = 1; - icon_state = "x2"; - icon = 'icons/mob/screen_gen.dmi' - }, -/turf/simulated/floor/plasteel{ - color = "gray"; - dir = 8; - icon_state = "rampbottom" - }, -/area/centcom/specops) "lzD" = ( /obj/machinery/light/spot, /turf/simulated/floor/wood{ @@ -24531,6 +24097,12 @@ icon_state = "dark" }, /area/centcom/supply) +"lzU" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/pod_2) "lzZ" = ( /obj/structure/chair/comfy/shuttle{ dir = 4 @@ -24551,6 +24123,30 @@ icon_state = "fancy-wood-cherry" }, /area/shuttle/trade/sol) +"lAd" = ( +/obj/structure/table/glass, +/obj/item/folder/blue{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/folder/red{ + pixel_x = -5; + pixel_y = -5 + }, +/obj/item/folder/white{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/folder/yellow{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 6 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) "lAn" = ( /obj/machinery/abductor/console{ team = 3 @@ -24563,14 +24159,6 @@ }, /turf/simulated/floor/indestructible/abductor, /area/abductor_ship) -"lAD" = ( -/obj/effect/turf_decal/siding/white{ - dir = 6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/evac) "lAH" = ( /obj/structure/table, /obj/machinery/kitchen_machine/microwave{ @@ -24629,6 +24217,13 @@ icon_state = "floor4" }, /area/shuttle/siberia) +"lBp" = ( +/obj/machinery/door/airlock/shuttle, +/obj/structure/fans/tiny, +/turf/simulated/floor/shuttle{ + icon_state = "floor4" + }, +/area/shuttle/gamma) "lBF" = ( /obj/machinery/light{ dir = 1 @@ -24651,26 +24246,15 @@ icon_state = "fancy-wood-cherry" }, /area/shuttle/trade/sol) -"lCr" = ( -/obj/structure/falsewall/reinforced{ - req_access = list(114); - layer = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "lCI" = ( /turf/simulated/floor/wood, /area/wizard_station) -"lCX" = ( -/obj/structure/window/reinforced{ - dir = 8 +"lCT" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "navybluealtstrip" }, -/obj/structure/window/reinforced, -/obj/structure/filingcabinet/filingcabinet, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) +/area/centcom/supply) "lDb" = ( /obj/machinery/porta_turret/syndicate{ pixel_y = 2 @@ -24696,19 +24280,19 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"lDf" = ( -/obj/machinery/door_control/secure{ - color = "#ff9999"; - id = "ERT_armory_lvl3"; - name = "ERT Armory Level 3"; - pixel_y = 32; +"lDl" = ( +/obj/machinery/door/airlock/centcom{ + name = "Supply Pods Load 2"; req_access = list(114) }, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "CC_Supply_Pods" + }, /turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkred" + icon_state = "Dark" }, -/area/centcom/specops) +/area/centcom/supply) "lDp" = ( /obj/machinery/door/airlock/hatch/syndicate{ name = "Syndicate Base" @@ -24760,13 +24344,6 @@ }, /turf/simulated/floor/grass, /area/centcom/evac) -"lFb" = ( -/obj/machinery/computer/crew, -/obj/effect/turf_decal/siding{ - color = "#444444" - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "lFm" = ( /obj/machinery/light/small{ brightness_range = 6; @@ -24777,6 +24354,50 @@ }, /turf/simulated/floor/wood, /area/wizard_station) +"lFt" = ( +/obj/structure/rack/holorack, +/obj/item/clothing/shoes/cowboy/white{ + name = "white boots" + }, +/obj/item/clothing/shoes/cowboy/white{ + name = "white boots" + }, +/obj/item/clothing/shoes/fluff/noble_boot, +/obj/item/clothing/shoes/fluff/noble_boot, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots/jacksandals, +/obj/item/clothing/shoes/jackboots/jacksandals, +/obj/item/clothing/shoes/laceup, +/obj/item/clothing/shoes/laceup, +/obj/item/clothing/shoes/leather, +/obj/item/clothing/shoes/leather, +/obj/item/clothing/shoes/white, +/obj/item/clothing/shoes/white, +/obj/item/clothing/shoes/white{ + icon_state = "secshoes"; + name = "shoes" + }, +/obj/item/clothing/shoes/white{ + icon_state = "secshoes"; + name = "shoes" + }, +/obj/item/clothing/shoes/centcom{ + desc = null; + name = "Dress shoes" + }, +/obj/item/clothing/shoes/centcom{ + desc = null; + name = "Dress shoes" + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) +"lFv" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/centcom/evac) "lFw" = ( /obj/structure/reagent_dispensers/beerkeg/nuke{ desc = "Однажды незадачливый отряд внедрения синдиката вместо настоящей бомбы, украл у НТ эту стилизованную кегу с пивом. Эти ребята более не ходят по миру, но кега всё ещё украшает один из местных баров. На ней виднеется зачёркнутое слово 'Нанотрейзен' и приписанное рядом, кровью, слово 'Синдикат'"; @@ -24795,6 +24416,11 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) +"lFA" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/two) "lFP" = ( /obj/structure/sink{ dir = 4; @@ -24802,6 +24428,13 @@ }, /turf/simulated/floor/carpet/black, /area/wizard_station) +"lFU" = ( +/obj/structure/chair/comfy/shuttle, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/pod_3) "lGu" = ( /obj/effect/turf_decal{ icon_state = "grass_edge_medium" @@ -24833,6 +24466,16 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) +"lGL" = ( +/turf/simulated/floor/shuttle, +/area/shuttle/transport) +"lGS" = ( +/obj/structure/sign/poster/official/soft_cap_pop_art{ + pixel_x = -32 + }, +/obj/machinery/power/smes/vintage, +/turf/simulated/floor/plating, +/area/centcom/zone3) "lGT" = ( /obj/effect/turf_decal/tile/neutral{ alpha = 100; @@ -24849,8 +24492,18 @@ /obj/machinery/computer/shuttle/sst, /turf/simulated/floor/carpet, /area/syndicate_mothership/control) -"lHe" = ( -/turf/simulated/floor/engine, +"lHs" = ( +/obj/structure/table/reinforced{ + color = "#444444" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "navybluealt" + }, +/area/centcom/specops) +"lHw" = ( +/obj/structure/chair/comfy/red, +/turf/simulated/floor/carpet/black, /area/centcom/specops) "lHT" = ( /obj/structure/closet/secure_closet/personal/cabinet, @@ -24883,6 +24536,23 @@ /obj/structure/flora/ausbushes/brflowers, /turf/simulated/floor/indestructible/snow, /area/ninja/outside) +"lIy" = ( +/obj/structure/chair/comfy/beige{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) +"lJk" = ( +/obj/structure/shuttle/engine/heater, +/turf/simulated/floor/plating/airless, +/area/centcom/specops) +"lJl" = ( +/obj/machinery/computer/pod/deathsquad, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "navybluealtstrip" + }, +/area/centcom/supply) "lJm" = ( /obj/machinery/biogenerator, /obj/structure/window/reinforced, @@ -24906,6 +24576,18 @@ /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) +"lJP" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkyellowalt" + }, +/area/centcom/zone3) +"lJU" = ( +/turf/simulated/wall/shuttle, +/area/shuttle/gamma) "lKw" = ( /obj/effect/turf_decal{ icon_state = "grass_edge_medium" @@ -24931,44 +24613,26 @@ /obj/structure/flora/tree/jungle, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"lKE" = ( -/obj/structure/rack, -/obj/item/melee/baton/telescopic{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/melee/baton/telescopic{ - pixel_y = 1 - }, -/obj/item/melee/baton/telescopic{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/simulated/floor/carpet/black, -/area/syndicate_mothership/jail) "lKQ" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo10" }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership) +"lKS" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) "lKW" = ( /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkyellowalt" }, /area/syndicate_mothership/cargo) -"lKX" = ( -/obj/effect/turf_decal/stripes/black{ - dir = 8; - do_not_delete_me = 1; - icon_state = "bs_deadlock" - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "white" - }, -/area/shuttle/administration) "lKY" = ( /obj/effect/turf_decal/siding/wood, /turf/simulated/floor/wood/fancy/light, @@ -24979,29 +24643,14 @@ }, /turf/simulated/floor/indestructible/abductor, /area/abductor_ship) -"lLd" = ( -/obj/vehicle/ridden/janicart{ - dir = 4 - }, -/obj/item/key/janitor, -/obj/item/janiupgrade{ - layer = 2.9 - }, -/turf/simulated/floor/indestructible{ - dir = 6; - icon_state = "darkpurple" - }, -/area/centcom/specops) -"lLn" = ( -/obj/item/flag/nt, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "darkgrey" +"lLm" = ( +/obj/structure/plasticflaps/mining, +/obj/machinery/conveyor{ + dir = 1; + id = "QMLoad" }, -/area/shuttle/administration) +/turf/simulated/floor/shuttle/plating, +/area/shuttle/supply) "lLo" = ( /obj/effect/turf_decal/tile{ alpha = 128; @@ -25018,6 +24667,19 @@ icon_state = "freezerfloor" }, /area/centcom/jail) +"lLE" = ( +/obj/machinery/vending/mech/ntc/tools, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) +"lLG" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1; + tag = "icon-propulsion (NORTH)" + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/syndicate_sit) "lMh" = ( /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -25048,18 +24710,6 @@ /obj/machinery/vending/suitdispenser, /turf/simulated/floor/wood, /area/centcom/zone1) -"lMZ" = ( -/obj/structure/table, -/obj/item/storage/box/chemimp{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/item/storage/box/trackimp, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" - }, -/area/shuttle/administration) "lNn" = ( /obj/structure/chair/sofa/left{ dir = 4 @@ -25071,6 +24721,15 @@ /obj/item/candle, /turf/simulated/floor/carpet, /area/syndicate_mothership/infteam) +"lNv" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "lNA" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-32"; @@ -25081,6 +24740,19 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) +"lNL" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/computer, +/obj/structure/railing{ + layer = 4.3; + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) "lOv" = ( /obj/structure/flora/junglebush/b, /obj/structure/flora/junglebush/c, @@ -25100,6 +24772,9 @@ "lOM" = ( /turf/simulated/floor/carpet/black, /area/syndicate_mothership/infteam) +"lPb" = ( +/turf/simulated/floor/plasteel/freezer, +/area/centcom/specops) "lPe" = ( /obj/structure/flora/grass/jungle, /obj/effect/mapping_helpers/light, @@ -25121,6 +24796,13 @@ name = "floor" }, /area/syndicate_mothership/outside) +"lPn" = ( +/obj/structure/shuttle/engine/heater{ + icon_state = "heater3x3_side_inv"; + tag = "icon-heater (NORTH)" + }, +/turf/simulated/floor/plating/airless, +/area/centcom/jail) "lPp" = ( /obj/structure/table/wood, /obj/item/clothing/suit/wizrobe/marisa, @@ -25144,16 +24826,6 @@ /obj/item/weed_extract, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) -"lPG" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 5 - }, -/turf/simulated/floor/glass/reinforced, -/area/centcom/evac) "lPZ" = ( /obj/structure/flora/junglebush/c, /obj/effect/turf_decal/siding/green{ @@ -25161,6 +24833,13 @@ }, /turf/simulated/floor/indestructible/grass, /area/ninja/outside) +"lQg" = ( +/obj/machinery/computer/camera_advanced/shuttle_docker/ert, +/obj/machinery/light/spot, +/turf/simulated/floor/shuttle{ + icon_state = "floor4" + }, +/area/shuttle/specops) "lQY" = ( /obj/structure/table/abductor{ name = "table" @@ -25171,45 +24850,24 @@ }, /turf/simulated/floor/fakespace, /area/centcom/zone1) -"lRc" = ( -/obj/item/book/random, -/turf/simulated/floor/plating, -/area/centcom/zone2) +"lRs" = ( +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/machinery/computer/communications, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "lRD" = ( /obj/effect/decal/warning_stripes/yellow, /obj/structure/fans/tiny, /turf/simulated/floor/plating, /area/centcom/specops) -"lRQ" = ( -/obj/structure/table/glass, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = -32 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone3) -"lRR" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkyellowalt" - }, -/area/centcom/zone3) "lSb" = ( /obj/structure/table/wood, /obj/item/tank/internals/nitrogen, /obj/item/clothing/mask/breath/vox, /turf/simulated/floor/carpet/cyan, /area/wizard_station) -"lSn" = ( -/obj/structure/table, -/obj/item/storage/box/handcuffs, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" - }, -/area/shuttle/administration) "lSp" = ( /obj/effect/turf_decal{ dir = 6; @@ -25231,26 +24889,6 @@ name = "floor" }, /area/syndicate_mothership/outside) -"lSK" = ( -/obj/structure/falsewall/reinforced, -/obj/effect/decal/warning_stripes/blue{ - desc = "Куда же ведет эта лестница?"; - icon = 'icons/obj/structures.dmi'; - icon_state = "ladder11"; - name = "Ladder" - }, -/obj/effect/step_trigger/teleporter{ - teleport_x = 135; - teleport_y = 16; - teleport_z = 1; - mobs_only = 1; - icon = 'icons/mob/screen_gen.dmi'; - icon_state = "x2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "lSR" = ( /obj/item/flag/wiz, /obj/machinery/light/small{ @@ -25262,6 +24900,32 @@ }, /turf/simulated/floor/carpet/cyan, /area/wizard_station) +"lSV" = ( +/obj/structure/chair/comfy/shuttle, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellow" + }, +/area/centcom/specops) +"lSW" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/window/brigdoor{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/oxygen{ + anchored = 1; + maximum_pressure = 50000 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkbluefull" + }, +/area/centcom/specops) "lTg" = ( /obj/effect/turf_decal{ dir = 10; @@ -25279,6 +24943,34 @@ }, /turf/simulated/floor/indestructible/abductor, /area/abductor_ship) +"lTX" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) +"lUp" = ( +/obj/machinery/door/airlock/external{ + frequency = 1331; + id_tag = "admin_s_inner"; + name = "Ship External Access"; + req_access = list(101) + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "podfloor_dark" + }, +/area/shuttle/administration) +"lUK" = ( +/obj/effect/decal/warning_stripes/green/hollow, +/obj/effect/landmark/response_team, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "lVo" = ( /obj/structure/flora/rock/jungle, /obj/effect/turf_decal/siding/green{ @@ -25286,6 +24978,13 @@ }, /turf/simulated/floor/indestructible/grass, /area/ninja/outside) +"lVD" = ( +/obj/structure/chair/sofa/corp/right, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkredalt" + }, +/area/centcom/specops) "lVM" = ( /obj/machinery/light{ dir = 1 @@ -25295,6 +24994,13 @@ icon_state = "warndarkgreycornerred" }, /area/syndicate_mothership) +"lVT" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) "lWc" = ( /obj/structure/chair/stool, /obj/effect/landmark/syndicate_spawn, @@ -25322,6 +25028,18 @@ icon_state = "rampbottom" }, /area/syndicate_mothership/outside) +"lWt" = ( +/obj/effect/decal/warning_stripes/northeastsouth, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 1; + id_tag = "ERT_armory_lvl2"; + layer = 5; + name = "Armory level 2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" + }, +/area/centcom/specops) "lWx" = ( /obj/machinery/door/airlock/syndicate/medical{ name = "Медзона"; @@ -25352,21 +25070,6 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) -"lXe" = ( -/obj/machinery/recharger/wallcharger{ - pixel_x = -24; - pixel_y = 8 - }, -/obj/machinery/recharger/wallcharger{ - pixel_x = -24; - pixel_y = -8 - }, -/obj/machinery/recharger/wallcharger{ - pixel_x = -24 - }, -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/wood, -/area/centcom/jail) "lXp" = ( /obj/effect/landmark/abductor/scientist{ team = 3 @@ -25397,18 +25100,6 @@ icon_state = "freezerfloor" }, /area/centcom/jail) -"lYx" = ( -/obj/structure/noticeboard{ - pixel_x = -32 - }, -/obj/item/paper{ - info = "Переговорить с ОЦК по поводу пиццы с ананасами" - }, -/obj/structure/window/reinforced{ - layer = 2.9 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "lYz" = ( /obj/machinery/light{ dir = 1 @@ -25419,13 +25110,15 @@ icon_state = "warndarkgreycornerred" }, /area/syndicate_mothership) -"lYK" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 6 +"lYC" = ( +/obj/structure/window/reinforced{ + dir = 8 }, -/turf/simulated/floor/glass/reinforced, -/area/centcom/specops) +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) "lYV" = ( /obj/effect/landmark/abductor/agent{ team = 3 @@ -25443,18 +25136,28 @@ /obj/structure/mineral_door, /turf/simulated/floor/carpet/black, /area/wizard_station) -"lZF" = ( -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkredcorners" - }, -/area/centcom/specops) "lZM" = ( /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkbluealtstrip" }, /area/centcom/zone2) +"lZV" = ( +/obj/structure/chair/comfy/beige{ + dir = 4; + layer = 5; + pixel_y = -2 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone3) +"mag" = ( +/obj/structure/bookcase/manuals, +/obj/item/book/manual/sop_legal, +/obj/item/book/manual/sop_engineering, +/obj/item/book/manual/sop_command, +/obj/item/book/manual/security_space_law, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "maj" = ( /obj/machinery/flasher_button{ id = "gulagshuttleflasher"; @@ -25491,14 +25194,54 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) -"maH" = ( -/obj/machinery/computer/security/telescreen/entertainment{ +"maJ" = ( +/obj/structure/chair/comfy/beige{ + dir = 4; + layer = 5; + pixel_y = -2 + }, +/obj/structure/railing{ + layer = 4.3; pixel_y = 32 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) +"mbb" = ( +/obj/machinery/power/apc{ + name = "Gamma Armory APC"; + pixel_y = -24 }, -/area/centcom/specops) +/obj/structure/cable{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/sign/securearea{ + pixel_x = -32 + }, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/gun/rocketlauncher, +/obj/item/ammo_casing/rocket, +/obj/item/ammo_casing/rocket, +/obj/item/ammo_casing/rocket, +/obj/item/kitchen/knife/combat, +/obj/item/kitchen/knife/combat, +/obj/item/kitchen/knife/combat, +/obj/item/grenade/chem_grenade/incendiary{ + name = "Incendiary Grenade" + }, +/obj/item/grenade/clusterbuster, +/obj/machinery/light/spot{ + dir = 8; + tag = "icon-tube1 (WEST)" + }, +/obj/item/gun/projectile/automatic/m52, +/obj/item/ammo_box/magazine/m52mag, +/obj/item/ammo_box/magazine/m52mag, +/obj/item/ammo_box/magazine/m52mag, +/turf/simulated/floor/shuttle{ + icon_state = "floor4" + }, +/area/shuttle/gamma) "mbd" = ( /turf/simulated/floor/plasteel{ icon_state = "warnwhite" @@ -25527,14 +25270,12 @@ icon_state = "dark" }, /area/centcom/evac) -"mbS" = ( -/obj/structure/table/glass, -/obj/item/book/manual/faxes, -/obj/machinery/newscaster/security_unit{ - pixel_y = 32 +"mbA" = ( +/obj/structure/chair/office/light{ + dir = 4 }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) +/turf/simulated/floor/engine, +/area/centcom/specops) "mbZ" = ( /obj/structure/table/wood, /obj/item/clothing/under/plasmaman/wizard, @@ -25581,27 +25322,12 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) -"mcF" = ( -/obj/item/flag/nt, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "navybluealt" - }, -/area/centcom/specops) "mcJ" = ( /turf/simulated/floor/wood{ icon_state = "wood-broken5"; tag = "icon-wood-broken5" }, /area/wizard_station) -"mcK" = ( -/obj/item/radio/intercom/specops{ - pixel_x = 30 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "mcM" = ( /obj/machinery/door_control{ id = "soltradeship_south"; @@ -25614,6 +25340,12 @@ icon_state = "fancy-wood-cherry" }, /area/shuttle/trade/sol) +"mcX" = ( +/obj/effect/turf_decal/siding/yellow{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/centcom/evac) "mda" = ( /turf/simulated/floor/plasteel{ dir = 5; @@ -25657,17 +25389,6 @@ /obj/item/reagent_containers/iv_bag/blood/vox, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) -"mdx" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/turf_decal/siding/white{ - dir = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) "mdF" = ( /obj/structure/table/wood, /obj/item/clothing/suit/wizrobe/magusblue, @@ -25682,6 +25403,30 @@ /obj/machinery/status_display, /turf/simulated/wall/shuttle/onlyselfsmooth/nodiagonal, /area/shuttle/escape) +"mdV" = ( +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + damage_deflection = 2000; + layer = 2.9; + name = "Frag grenade"; + req_access = list(114) + }, +/obj/item/grenade/frag, +/obj/item/grenade/frag, +/obj/item/grenade/frag, +/obj/item/grenade/frag, +/obj/item/grenade/frag, +/obj/item/grenade/frag, +/obj/item/grenade/frag, +/obj/item/grenade/frag, +/obj/item/grenade/frag, +/obj/item/grenade/frag, +/obj/item/grenade/frag, +/obj/item/grenade/frag, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "mdY" = ( /obj/machinery/door/airlock/command/glass{ name = "Escape Shuttle Cockpit"; @@ -25691,10 +25436,6 @@ icon_state = "dark" }, /area/shuttle/escape) -"mdZ" = ( -/obj/machinery/computer/shuttle/nt/drop_pod, -/turf/simulated/wall/shuttle, -/area/shuttle/nt_droppod) "meq" = ( /obj/structure/flora/junglebush, /turf/simulated/floor/indestructible/grass, @@ -25706,15 +25447,6 @@ /obj/machinery/smartfridge/drying_rack, /turf/simulated/floor/wood, /area/centcom/evac) -"meF" = ( -/obj/structure/chair/office/dark{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkredalt" - }, -/area/centcom/jail) "meN" = ( /obj/structure/flora/grass/both, /obj/structure/flora/grass/both, @@ -25745,11 +25477,6 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/ninja/outside) -"mfd" = ( -/obj/machinery/photocopier, -/obj/structure/table/wood, -/turf/simulated/floor/plating, -/area/centcom/zone2) "mfn" = ( /obj/structure/marker_beacon{ icon_state = "markerjade-on" @@ -25767,33 +25494,13 @@ /obj/structure/flora/junglebush/c, /turf/simulated/floor/indestructible/grass, /area/ninja/outside) -"mfB" = ( -/obj/effect/turf_decal/stripes/line{ - icon = 'icons/turf/floors.dmi'; - icon_state = "siding4" - }, -/turf/simulated/floor/plasteel{ - color = "gray"; - dir = 1; - icon_state = "rampbottom" - }, -/area/centcom/supply) +"mfP" = ( +/turf/simulated/floor/shuttle, +/area/shuttle/nt_droppod) "mgd" = ( /obj/structure/chair/stool, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/elite_squad) -"mgz" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 2; - height = 12; - id = "ferry_away"; - name = "centcom bay 2"; - turf_type = /turf/simulated/floor/plating/airless; - width = 5 - }, -/turf/simulated/floor/plating/airless, -/area/space) "mgC" = ( /obj/structure/flora/ausbushes/lavendergrass, /obj/structure/flora/ausbushes/pointybush, @@ -25831,6 +25538,43 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) +"mhA" = ( +/obj/structure/rack/gunrack, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/gun/projectile/automatic/sfg{ + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/sfg{ + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/sfg{ + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/sfg{ + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/sfg{ + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/sfg{ + pixel_x = 6 + }, +/obj/item/gun/projectile/automatic/sfg{ + pixel_x = 6 + }, +/obj/item/gun/projectile/automatic/sfg{ + pixel_x = 6 + }, +/obj/item/gun/projectile/automatic/sfg{ + pixel_x = 6 + }, +/obj/item/gun/projectile/automatic/sfg{ + pixel_x = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "mhN" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -25861,6 +25605,16 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/elite_squad) +"miN" = ( +/obj/structure/railing, +/obj/machinery/computer/communications, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) "miW" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 6 @@ -25898,17 +25652,23 @@ icon_state = "darkbluecorners" }, /area/centcom/zone1) -"mjU" = ( -/obj/machinery/light_construct/small{ - dir = 4 +"mjE" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 10 }, -/obj/machinery/computer/library/public, -/obj/structure/table/wood, -/turf/simulated/floor/plating, -/area/centcom/zone2) -"mkb" = ( -/obj/item/target, -/obj/machinery/light/small{ +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) +"mjR" = ( +/obj/effect/turf_decal/siding/blue/corner{ + color = "#444444"; + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/specops) +"mkb" = ( +/obj/item/target, +/obj/machinery/light/small{ brightness_range = 6; dir = 8; light_range = 8; @@ -25920,26 +25680,6 @@ tag = "icon-wood-broken5" }, /area/wizard_station) -"mkN" = ( -/obj/item/storage/firstaid/brute, -/obj/item/storage/firstaid/brute, -/obj/item/storage/firstaid/doctor, -/obj/item/storage/firstaid/doctor, -/obj/item/storage/firstaid/fire, -/obj/item/storage/firstaid/fire, -/obj/item/storage/firstaid/o2, -/obj/item/storage/firstaid/toxin, -/obj/item/storage/firstaid/toxin, -/obj/structure/rack, -/obj/structure/extinguisher_cabinet{ - name = "west extinguisher cabinet"; - pixel_x = -27 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkbluealt" - }, -/area/centcom/specops) "mle" = ( /obj/structure/chair/stool/bar, /turf/simulated/floor/plasteel{ @@ -25997,25 +25737,6 @@ tag = "icon-wood-broken6" }, /area/wizard_station) -"mmo" = ( -/obj/effect/decal/warning_stripes/blue{ - desc = "Лестница в кабинет СОО"; - icon = 'icons/obj/structures.dmi'; - icon_state = "ladder10"; - name = "Ladder" - }, -/obj/effect/step_trigger/teleporter{ - teleport_x = 203; - teleport_y = 41; - teleport_z = 1; - icon = 'icons/mob/screen_gen.dmi'; - icon_state = "x2" - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkredaltstrip" - }, -/area/centcom/jail) "mmD" = ( /obj/item/target, /obj/machinery/light/small{ @@ -26036,14 +25757,6 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/jail) -"mnt" = ( -/obj/effect/turf_decal/siding{ - color = "#444444" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/bridge) "mnI" = ( /obj/structure/chair/comfy/brown{ color = "#FF3300"; @@ -26051,10 +25764,47 @@ }, /turf/simulated/floor/carpet/red, /area/ussp_centcom/secretariat) +"mnL" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "CC_Armory_DEDI" + }, +/obj/machinery/door/poddoor/impassable/preopen{ + id_tag = "ERT_Quarantine"; + name = "ERT Quarantine" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "mnX" = ( /obj/machinery/door/window/brigdoor, /turf/simulated/floor/carpet/black, /area/centcom/specops) +"mog" = ( +/obj/structure/shuttle/engine/heater{ + icon_state = "heater3x3"; + tag = "icon-heater (NORTH)" + }, +/obj/structure/window/plasmareinforced{ + color = "#FF0000"; + dir = 1 + }, +/obj/structure/shuttle/engine/platform{ + layer = 2.9 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/syndicate) +"moN" = ( +/obj/effect/turf_decal/caution/stand_clear/white, +/obj/machinery/door/poddoor/impassable/unhittable{ + id_tag = "CC_Players_In"; + name = "Blast Door" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone1) "moS" = ( /obj/structure/chair/sofa/right{ dir = 8 @@ -26084,13 +25834,58 @@ icon_state = "dark" }, /area/syndicate_mothership/elite_squad) -"mpv" = ( -/obj/effect/turf_decal/caution/stand_clear{ - pixel_x = 16 +"mpj" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2 }, /turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkyellowaltstrip" + dir = 1; + icon_state = "darkbluealt" + }, +/area/centcom/zone2) +"mpo" = ( +/obj/machinery/recharger/wallcharger{ + pixel_x = -24; + pixel_y = 8 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = -24; + pixel_y = -8 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = -24 + }, +/obj/structure/table/reinforced, +/obj/item/storage/briefcase/inflatable, +/obj/item/storage/briefcase/inflatable, +/obj/item/storage/briefcase/inflatable, +/obj/item/storage/briefcase/inflatable, +/obj/item/holosign_creator/atmos, +/obj/item/holosign_creator/atmos, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "navybluealt" + }, +/area/centcom/specops) +"mpt" = ( +/obj/structure/falsewall/reinforced, +/obj/effect/decal/warning_stripes/blue{ + desc = "Куда же ведет эта лестница?"; + icon = 'icons/obj/structures.dmi'; + icon_state = "ladder11"; + name = "Ladder" + }, +/obj/effect/step_trigger/teleporter{ + icon = 'icons/mob/screen_gen.dmi'; + icon_state = "x2"; + mobs_only = 1; + teleport_x = 135; + teleport_y = 16; + teleport_z = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, /area/centcom/specops) "mpN" = ( @@ -26111,6 +25906,30 @@ /obj/structure/flora/junglebush/c, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) +"mpW" = ( +/obj/structure/bed, +/obj/item/bedsheet/rd, +/obj/effect/mine/sound/bwoink{ + alpha = 0; + layer = 2.9 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone1) +"mqd" = ( +/obj/effect/turf_decal/siding/white/corner, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) +"mqo" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) "mqp" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/structure/curtain/black{ @@ -26173,14 +25992,30 @@ icon_state = "dark" }, /area/centcom/jail) -"mqN" = ( -/turf/simulated/wall/shuttle/onlyselfsmooth, -/area/shuttle/gamma) +"mqL" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 8; + id_tag = "CC_supply_external"; + layer = 5; + locked = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkyellowalt" + }, +/area/centcom/supply) "mqU" = ( /obj/machinery/computer/library/checkout, /obj/structure/table/wood, /turf/simulated/floor/carpet/black, /area/wizard_station) +"mrg" = ( +/obj/machinery/door/window/brigdoor{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/centcom/jail) "mrm" = ( /obj/machinery/vending/magivend, /obj/machinery/light/small{ @@ -26191,25 +26026,6 @@ }, /turf/simulated/floor/carpet/black, /area/wizard_station) -"mro" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/chair/comfy/lime{ - dir = 4 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" - }, -/area/shuttle/administration) "mrA" = ( /obj/structure/table/wood, /obj/item/grenade/smokebomb{ @@ -26225,10 +26041,6 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership/infteam) -"mrP" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/simulated/floor/plating/airless, -/area/shuttle/siberia) "mrX" = ( /obj/machinery/computer/cryopod{ pixel_x = 32; @@ -26287,14 +26099,14 @@ icon_state = "floor12" }, /area/shuttle/syndicate) -"msS" = ( -/mob/living/carbon/human/lesser/wolpin, +"msO" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = -30 + }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "tatami"; - name = "Tatami" + icon_state = "dark" }, -/area/ninja/outpost) +/area/centcom/zone3) "msY" = ( /obj/machinery/vending/snack/free, /turf/simulated/floor/carpet/black, @@ -26336,20 +26148,20 @@ }, /turf/simulated/floor/plating, /area/syndicate_mothership/infteam) -"mtY" = ( -/obj/structure/table/glass, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = 32 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone3) -"mue" = ( -/obj/structure/window/reinforced{ +"mud" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen, +/obj/item/pen, +/obj/item/pen, +/obj/item/pen, +/obj/machinery/door/window/brigdoor{ dir = 8 }, -/obj/structure/filingcabinet, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/centcom/jail) "muh" = ( /obj/effect/turf_decal{ do_not_delete_me = 1; @@ -26389,24 +26201,6 @@ icon_state = "darkjail" }, /area/syndicate_mothership/jail) -"muR" = ( -/obj/machinery/door/poddoor{ - id_tag = "CC_supply_space"; - locked = 2; - name = "Supply Blastdoor" - }, -/obj/structure/fans/tiny, -/obj/effect/decal/warning_stripes/white, -/obj/machinery/door/airlock/external{ - id_tag = "supply_away"; - name = "Central Command Supply"; - req_access = list(31); - hackProof = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "muU" = ( /obj/structure/table/wood, /obj/effect/landmark/teleport_scroll, @@ -26421,15 +26215,6 @@ }, /turf/simulated/floor/plating, /area/syndicate_mothership/infteam) -"mve" = ( -/obj/machinery/bodyscanner{ - dir = 4; - layer = 3.5 - }, -/turf/simulated/floor/shuttle{ - icon_state = "floor3" - }, -/area/shuttle/administration) "mvo" = ( /obj/structure/bed, /obj/item/bedsheet/wiz, @@ -26446,11 +26231,20 @@ }, /turf/simulated/floor/carpet/cyan, /area/wizard_station) -"mvz" = ( -/obj/effect/turf_decal/siding/yellow{ - dir = 4 +"mvM" = ( +/obj/structure/urinal{ + pixel_y = 32 + }, +/obj/machinery/door_control/secure{ + id = "CC_toilet_unit2"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" }, -/turf/simulated/floor/carpet, /area/centcom/evac) "mvQ" = ( /obj/structure/window/reinforced{ @@ -26461,33 +26255,37 @@ }, /turf/simulated/floor/carpet/black, /area/centcom/zone2) -"mvV" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 - }, -/obj/structure/window/reinforced/survival_pod{ - dir = 10; - pixel_x = -1; - pixel_y = -1 - }, -/obj/structure/window/reinforced{ - layer = 3.1; - armor = list("melee"=100,"bullet"=100,"laser"=0,"energy"=0,"bomb"=25,"bio"=100,"rad"=100,"fire"=80,"acid"=100) +"mwf" = ( +/turf/simulated/floor/carpet/red, +/area/ussp_centcom/secretariat) +"mwq" = ( +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 }, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkyellow" + icon_state = "dark" }, /area/centcom/specops) -"mwf" = ( -/turf/simulated/floor/carpet/red, -/area/ussp_centcom/secretariat) "mxj" = ( /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkredaltstrip" }, /area/centcom/jail) +"mxz" = ( +/obj/machinery/door/poddoor{ + id_tag = "ASSAULT1"; + name = "Launch Bay #1" + }, +/obj/effect/turf_decal/tile/neutral{ + alpha = 75; + color = "black"; + icon_state = "tile_full"; + layer = 9 + }, +/turf/simulated/floor/plating, +/area/centcom/supply) "mxA" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -26501,21 +26299,13 @@ icon_state = "dark" }, /area/centcom/jail) -"mxT" = ( -/obj/structure/shuttle/engine/platform{ - dir = 1; - layer = 2.9 - }, -/obj/structure/window/plasmareinforced{ - color = "#00f700" - }, -/obj/structure/shuttle/engine/heater{ - dir = 1; - icon_state = "heater2x2_side"; - tag = "icon-heater (NORTH)" +"mxY" = ( +/obj/machinery/computer/shuttle/ferry, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkyellowalt" }, -/turf/simulated/floor/plating/airless, -/area/shuttle/ninja) +/area/centcom/zone3) "myg" = ( /turf/simulated/floor/plasteel{ icon_state = "white" @@ -26564,6 +26354,12 @@ icon_state = "warndarkgreyred" }, /area/syndicate_mothership) +"myL" = ( +/obj/structure/closet/secure_closet/clown{ + req_access = list() + }, +/turf/simulated/floor/mineral/bananium, +/area/centcom/specops) "myX" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo18" @@ -26571,6 +26367,15 @@ /obj/effect/turf_decal/stripes/black, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/jail) +"mze" = ( +/obj/machinery/computer/account_database, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) "mzk" = ( /obj/machinery/computer/shuttle/syndicate/recall, /turf/simulated/floor/plasteel{ @@ -26600,6 +26405,23 @@ icon_state = "navybluealtstrip" }, /area/centcom/specops) +"mzH" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/machinery/embedded_controller/radio/airlock/access_controller{ + frequency = 2000; + id_tag = "CC-OP3"; + name = "Access Controller OP3"; + pixel_y = 32; + req_access = list(109); + tag_exterior_door = "CC-OP3-Ext"; + tag_interior_door = "CC-OP3-Int" + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/centcom/zone3) "mzI" = ( /obj/machinery/door/poddoor/multi_tile/two_tile_hor{ icon_state = "open"; @@ -26618,35 +26440,6 @@ /obj/item/deck/cards/black, /turf/simulated/floor/carpet/black, /area/ninja/outpost) -"mzT" = ( -/obj/machinery/door/airlock/shuttle{ - id_tag = "s_docking_airlock" - }, -/obj/structure/fans/tiny, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 3; - height = 4; - id = "ruins_civil_shuttle"; - name = "Regular Civilian Shuttle"; - rebuildable = 1; - roundstart_move = "spacebar"; - width = 6 - }, -/obj/docking_port/stationary/transit{ - dir = 8; - dwidth = 2; - height = 5; - id = "ruins_civil_shuttle_transit"; - name = "Regular Civilian Shuttle in transit"; - pixel_x = 32; - turf_type = /turf/space/transit/north; - width = 8 - }, -/turf/simulated/floor/shuttle{ - icon_state = "floor3" - }, -/area/shuttle/spacebar) "mzU" = ( /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/stripes/line{ @@ -26656,15 +26449,6 @@ icon_state = "darkgrey" }, /area/syndicate_mothership) -"mAt" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/siding/brown/corner{ - dir = 1 - }, -/turf/simulated/floor/carpet, -/area/centcom/zone3) "mAw" = ( /obj/structure/chair/sofa{ dir = 8 @@ -26686,6 +26470,21 @@ }, /turf/simulated/floor/plating, /area/syndicate_mothership/elite_squad) +"mBi" = ( +/obj/structure/shuttle/engine/platform{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/plasmareinforced{ + color = "#00f700" + }, +/obj/structure/shuttle/engine/heater{ + dir = 1; + icon_state = "heater2x2_side"; + tag = "icon-heater (NORTH)" + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/ninja) "mBj" = ( /obj/effect/turf_decal/weather/snow/corner{ dir = 8 @@ -26695,26 +26494,12 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/ninja/outside) -"mBl" = ( -/obj/structure/window/reinforced{ - layer = 2.9 - }, -/obj/machinery/vending/clothing/departament/security, -/turf/simulated/floor/wood, -/area/centcom/jail) "mBE" = ( /obj/item/flag/species/human, /turf/simulated/floor/wood{ icon_state = "fancy-wood-cherry" }, /area/shuttle/trade/sol) -"mBF" = ( -/obj/structure/table/wood/fancy/black, -/obj/machinery/photocopier/faxmachine/longrange{ - department = "Central Command" - }, -/turf/simulated/floor/carpet/red, -/area/centcom/bridge) "mBV" = ( /obj/item/gun/projectile/automatic/sniper_rifle{ desc = "Оружие с потёртой надписью 'Коатс' и нечитаемыми каракулями возле неё."; @@ -26724,6 +26509,19 @@ icon_state = "darkfull" }, /area/syndicate_mothership/infteam) +"mCa" = ( +/obj/machinery/door_control/secure{ + color = "#ff9999"; + id = "ERT_armory_lvl3"; + name = "ERT Armory Level 3"; + pixel_y = 32; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/centcom/specops) "mCb" = ( /obj/structure/curtain/open/shower, /obj/machinery/shower{ @@ -26747,20 +26545,6 @@ }, /turf/simulated/floor/plating, /area/syndicate_mothership/elite_squad) -"mCD" = ( -/obj/docking_port/stationary{ - area_type = /area/ninja/outside; - dheight = 2; - dir = 2; - dwidth = 4; - height = 10; - id = "ombra_home"; - name = "Spider Clan Facility"; - turf_type = /turf/simulated/floor/indestructible/snow; - width = 21 - }, -/turf/simulated/floor/indestructible/snow, -/area/ninja/outside) "mCG" = ( /obj/structure/flora/grass/jungle/b, /obj/structure/flora/grass/jungle, @@ -26786,12 +26570,6 @@ icon_state = "white" }, /area/centcom/specops) -"mCX" = ( -/obj/structure/shuttle/engine/large{ - dir = 4 - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/trade/sol) "mDk" = ( /obj/structure/chair/sofa/right{ dir = 1 @@ -26800,6 +26578,18 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership/elite_squad) +"mDq" = ( +/obj/structure/toilet{ + dir = 4; + name = "Трон старшего администратора" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/centcom/evac) "mDs" = ( /obj/structure/window/reinforced{ dir = 8 @@ -26815,6 +26605,36 @@ icon_state = "barber" }, /area/centcom/zone1) +"mDL" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + dir = 2; + id_tag = "CC_supply_internal2"; + layer = 5; + locked = 1 + }, +/obj/machinery/door_control/secure{ + id = "CC_supply_internal2"; + name = "Supply External Shutters"; + pixel_x = -24; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkyellowalt" + }, +/area/centcom/supply) +"mDU" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "mDW" = ( /obj/structure/chair/sofa/left{ dir = 1 @@ -26838,13 +26658,10 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) -"mEe" = ( -/obj/machinery/computer/secure_data, -/obj/effect/turf_decal/siding/yellow{ - dir = 8 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone3) +"mEh" = ( +/obj/structure/chair/comfy/purp, +/turf/simulated/floor/carpet/red, +/area/centcom/bridge) "mEm" = ( /obj/machinery/door/poddoor/shutters/preopen{ dir = 8; @@ -26873,13 +26690,6 @@ icon_state = "grimy" }, /area/syndicate_mothership/elite_squad) -"mER" = ( -/obj/machinery/computer/communications, -/obj/effect/turf_decal/siding{ - color = "#444444" - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "mES" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp, @@ -26956,11 +26766,25 @@ /obj/structure/table/reinforced, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/elite_squad) +"mFD" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "navyblue" + }, +/area/centcom/specops) "mFG" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/drinks/bottle/vermouth, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/elite_squad) +"mFU" = ( +/obj/machinery/light, +/obj/effect/turf_decal/siding/white/corner{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "mGd" = ( /obj/machinery/light/small{ dir = 4 @@ -26973,6 +26797,15 @@ icon_state = "darkyellowcornersalt" }, /area/syndicate_mothership/cargo) +"mGx" = ( +/obj/machinery/newscaster{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "navybluealt" + }, +/area/centcom/specops) "mGy" = ( /obj/effect/turf_decal/siding{ color = "#444444"; @@ -26998,20 +26831,6 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) -"mGC" = ( -/obj/effect/turf_decal/stripes/black{ - dir = 4; - do_not_delete_me = 1 - }, -/obj/effect/turf_decal/stripes/black{ - dir = 8; - do_not_delete_me = 1 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "white" - }, -/area/shuttle/administration) "mGD" = ( /obj/machinery/door/poddoor{ density = 0; @@ -27082,12 +26901,6 @@ /obj/item/clothing/suit/straight_jacket, /turf/simulated/floor/plating, /area/centcom/specops) -"mIN" = ( -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkgreen" - }, -/area/centcom/specops) "mIR" = ( /obj/structure/chair/sofa/left{ dir = 8 @@ -27131,6 +26944,15 @@ }, /turf/simulated/floor/indestructible/beach/sand, /area/syndicate_mothership/outside) +"mKh" = ( +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/machinery/photocopier, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) "mKw" = ( /obj/machinery/light/spot, /obj/structure/rack/holorack, @@ -27155,28 +26977,6 @@ tag = "icon-redfull (NORTHWEST)" }, /area/centcom/zone1) -"mKI" = ( -/obj/structure/flora/ausbushes/stalkybush, -/obj/item/gun/projectile/automatic/pistol{ - layer = 2.9 - }, -/obj/effect/turf_decal/tile/neutral{ - alpha = 85; - icon_state = "seadeep"; - layer = 9; - icon = 'icons/misc/beach.dmi' - }, -/turf/simulated/floor/indestructible/beach/water/deep/sand_floor, -/area/centcom/specops) -"mLo" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) "mLJ" = ( /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -27212,6 +27012,16 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) +"mMf" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 1 + }, +/obj/effect/mapping_helpers/light, +/turf/simulated/floor/beach/sand{ + icon = 'icons/turf/floors.dmi'; + icon_state = "asteroid" + }, +/area/centcom/evac) "mMj" = ( /obj/structure/sign/poster/contraband/smoke{ pixel_x = -32 @@ -27233,73 +27043,30 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"mMp" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - dir = 2; - id_tag = "CC_supply_internal2"; - layer = 5; - locked = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkyellowalt" - }, -/area/centcom/supply) -"mNh" = ( -/obj/structure/table/reinforced, -/obj/item/clothing/gloves/color/latex/nitrile, -/obj/item/storage/toolbox/surgery, -/turf/simulated/floor/shuttle{ - icon_state = "floor3" - }, -/area/shuttle/administration) +"mMn" = ( +/obj/structure/window/full/shuttle, +/obj/structure/grille, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/siberia) "mNj" = ( /turf/simulated/wall/indestructible/rock, /area/space) -"mNl" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/coffee, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"mNz" = ( -/obj/effect/decal/warning_stripes/north, -/obj/effect/decal/warning_stripes/south, -/obj/effect/turf_decal/caution/stand_clear{ - dir = 1; - do_not_delete_me = 1 - }, -/obj/machinery/door/poddoor/shutters/preopen/invincible{ - dir = 1; - id_tag = "ERT_armory_vkd"; - name = "Armory level 1" - }, -/obj/machinery/door/poddoor/impassable/preopen{ - id_tag = "ERT_Quarantine"; - name = "ERT Quarantine" - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" - }, -/area/centcom/specops) "mNB" = ( /obj/structure/fans/tiny/invisible, /turf/simulated/floor/plasteel{ icon_state = "warndarkgreycornerred" }, /area/syndicate_mothership/infteam) -"mNH" = ( -/obj/machinery/sleeper/upgraded{ - dir = 4 - }, -/turf/simulated/floor/shuttle{ - icon_state = "floor3" +"mNK" = ( +/obj/structure/rack, +/obj/item/ammo_box/shotgun/buck, +/obj/item/ammo_box/shotgun/buck, +/obj/item/ammo_box/shotgun/buck, +/obj/effect/decal/warning_stripes/blue/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/area/shuttle/administration) +/area/centcom/specops) "mNY" = ( /obj/structure/fans/tiny/invisible, /turf/simulated/floor/plasteel{ @@ -27313,6 +27080,14 @@ icon_state = "warndarkgreycornerred" }, /area/syndicate_mothership/infteam) +"mOu" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/filingcabinet/filingcabinet, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "mOA" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -27321,17 +27096,26 @@ icon_state = "darkfull" }, /area/syndicate_mothership) -"mOM" = ( -/obj/structure/chair/comfy/lime, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2 +"mOD" = ( +/obj/structure/table/glass, +/obj/machinery/newscaster/security_unit{ + pixel_x = 32 }, -/obj/structure/window/reinforced{ - dir = 8 +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/turf/simulated/floor/wood, /area/centcom/zone3) +"mOZ" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + dir = 2; + id_tag = "ERT_director_office_shutters2"; + layer = 5; + locked = 1; + name = "CentCom SOO Briefing" + }, +/turf/simulated/wall/indestructible/fakeglass, +/area/centcom/specops) "mPc" = ( /obj/effect/turf_decal{ dir = 10; @@ -27339,6 +27123,12 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) +"mPi" = ( +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/turf/simulated/floor/glass/reinforced, +/area/centcom/specops) "mPk" = ( /obj/structure/fence{ color = "#b0b7c6"; @@ -27346,16 +27136,28 @@ }, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"mPs" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "burst_r"; - tag = "icon-burst_r" - }, -/obj/structure/window/reinforced{ - dir = 8 +"mPp" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/machinery/iv_drip, +/obj/item/reagent_containers/iv_bag/salglu, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/nitrogen, +/obj/item/tank/internals/emergency_oxygen/plasma, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkbluealt" }, -/turf/simulated/floor/plating/airless, -/area/shuttle/pod_4) +/area/centcom/specops) "mPI" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -27372,6 +27174,12 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) +"mQg" = ( +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "darkredalt" + }, +/area/centcom/zone2) "mQp" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -27400,6 +27208,19 @@ tag = "icon-redfull (NORTHWEST)" }, /area/centcom/jail) +"mQQ" = ( +/obj/structure/filingcabinet/filingcabinet, +/obj/machinery/light_construct/small{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/centcom/zone3) +"mRm" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/one) "mRs" = ( /obj/structure/flora/ausbushes/brflowers, /obj/structure/flora/ausbushes/ppflowers, @@ -27415,23 +27236,29 @@ icon_state = "darkfull" }, /area/syndicate_mothership) -"mRL" = ( -/obj/item/twohanded/required/kirbyplants, +"mRR" = ( +/obj/item/radio/intercom/specops{ + pixel_x = 32 + }, /turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkred" + icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/bridge) "mRT" = ( /obj/structure/chair/sofa/corp/left{ dir = 8 }, /turf/simulated/floor/carpet/black, /area/ninja/outpost) -"mSi" = ( +"mRX" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) +"mSp" = ( +/obj/item/flag/nt, /turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "navyblue" + dir = 10; + icon_state = "navybluealt" }, /area/centcom/specops) "mSv" = ( @@ -27452,44 +27279,21 @@ /obj/structure/filingcabinet/chestdrawer, /turf/simulated/floor/carpet/red, /area/ussp_centcom/secretariat) -"mSy" = ( -/obj/structure/chair/comfy/beige{ - dir = 8; - layer = 5; - pixel_y = -2 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone3) "mSB" = ( /obj/structure/fans/tiny/invisible, /turf/simulated/floor/plasteel{ icon_state = "warndarkgreycornerred" }, /area/syndicate_mothership/elite_squad) -"mSD" = ( -/obj/structure/railing, -/turf/simulated/wall/indestructible/reinforced, -/area/centcom/specops) -"mSE" = ( -/obj/structure/chair/sofa/right, -/obj/effect/mine/sound/bwoink{ - layer = 2.9; - alpha = 0 - }, -/turf/simulated/floor/carpet/arcade, -/area/centcom/zone1) "mSF" = ( /turf/simulated/floor/plasteel{ icon_state = "darkredcornersalt" }, /area/syndicate_mothership/jail) -"mSP" = ( -/obj/machinery/vending/security/ert{ - pixel_y = 32 - }, +"mSG" = ( /turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "navybluealt" + dir = 10; + icon_state = "navyblue" }, /area/centcom/specops) "mST" = ( @@ -27536,27 +27340,28 @@ icon_state = "navybluealtstrip" }, /area/centcom/specops) +"mTD" = ( +/obj/effect/turf_decal/caution/stand_clear/red, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkbluealtstrip" + }, +/area/centcom/zone2) "mUc" = ( /obj/effect/decal/warning_stripes/white, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/bridge) -"mUg" = ( -/obj/effect/turf_decal/stripes/black{ - dir = 10; - do_not_delete_me = 1 - }, -/obj/effect/turf_decal/stripes/black{ - dir = 5; - do_not_delete_me = 1; - icon_state = "bs_deadlock" +"mUi" = ( +/obj/machinery/vending/wallmed{ + pixel_x = -32; + pixel_y = -32 }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "white" +/turf/simulated/floor/plasteel{ + icon_state = "darkyellowalt" }, -/area/shuttle/administration) +/area/centcom/zone3) "mUu" = ( /obj/structure/flora/grass/jungle/b, /obj/structure/flora/grass/jungle/b, @@ -27579,13 +27384,6 @@ tag = "icon-stage_stairs" }, /area/centcom/specops) -"mUU" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 4 - }, -/obj/structure/window/reinforced/tinted, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "mUV" = ( /obj/structure/grille, /obj/structure/window/reinforced/polarized{ @@ -27608,17 +27406,39 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) -"mVk" = ( -/obj/effect/turf_decal/tile/neutral{ - color = "black"; - icon_state = "tile_full" +"mVe" = ( +/obj/item/gun/projectile/automatic/l6_saw{ + desc = "A heavily modified 5.56 light machine gun, designated 'M249 SAW'."; + name = "M249 SAW" + }, +/obj/item/gun/projectile/automatic/l6_saw{ + desc = "A heavily modified 5.56 light machine gun, designated 'M249 SAW'."; + name = "M249 SAW" + }, +/obj/item/gun/projectile/automatic/l6_saw{ + desc = "A heavily modified 5.56 light machine gun, designated 'M249 SAW'."; + name = "M249 SAW" + }, +/obj/item/gun/projectile/automatic/l6_saw{ + desc = "A heavily modified 5.56 light machine gun, designated 'M249 SAW'."; + name = "M249 SAW" + }, +/obj/item/gun/projectile/automatic/l6_saw{ + desc = "A heavily modified 5.56 light machine gun, designated 'M249 SAW'."; + name = "M249 SAW" + }, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + layer = 2.9; + name = "LMG M249 SAW"; + req_access = list(114) }, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" + dir = 4; + icon_state = "vault" }, -/area/centcom/specops) +/area/centcom/jail) "mVo" = ( /obj/structure/rack/holorack, /obj/item/storage/belt/chameleon{ @@ -27665,17 +27485,6 @@ icon_state = "neutral" }, /area/centcom/evac) -"mVN" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/turf_decal/siding/white{ - dir = 10 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) "mVX" = ( /turf/space, /area/space) @@ -27697,53 +27506,120 @@ icon_state = "darkfull" }, /area/syndicate_mothership) -"mWW" = ( -/obj/machinery/light{ - dir = 1 +"mWR" = ( +/obj/structure/rack/holorack, +/obj/item/clothing/head/beret/atmos{ + name = "beret" }, -/obj/effect/turf_decal/stripes/black{ - do_not_delete_me = 1 +/obj/item/clothing/head/beret/atmos{ + name = "beret" }, -/obj/effect/turf_decal/stripes/black{ - dir = 1; - do_not_delete_me = 1 +/obj/item/clothing/head/beret/ce{ + name = "beret" }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "white" +/obj/item/clothing/head/beret/ce{ + name = "beret" }, -/area/shuttle/administration) -"mXc" = ( -/obj/machinery/door/airlock/centcom{ - id_tag = "adminshuttle"; - name = "Medbay"; - opacity = 1; - req_access = list(101) +/obj/item/clothing/head/beret/centcom/captain{ + name = "beret" }, -/obj/effect/turf_decal/stripes/black{ - dir = 8; - do_not_delete_me = 1 +/obj/item/clothing/head/beret/centcom/captain{ + name = "beret" }, -/obj/effect/turf_decal/stripes/black{ +/obj/item/clothing/head/beret/centcom/officer{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/navy{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/navy{ + name = "beret" + }, +/obj/item/clothing/head/beret/durathread{ + name = "beret" + }, +/obj/item/clothing/head/beret/durathread{ + name = "beret" + }, +/obj/item/clothing/head/beret/eng{ + name = "beret" + }, +/obj/item/clothing/head/beret/eng{ + name = "beret" + }, +/obj/item/clothing/head/beret/elo{ + name = "beret" + }, +/obj/item/clothing/head/beret/elo{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/sigholt{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/sigholt{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/sparkyninja_beret{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/sparkyninja_beret{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/sigholt{ + icon_state = "officerberet"; + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/sigholt{ + icon_state = "officerberet"; + name = "beret" + }, +/obj/item/clothing/head/fedora, +/obj/item/clothing/head/fedora, +/obj/item/clothing/head/fedora{ + icon_state = "wfedora" + }, +/obj/item/clothing/head/fedora{ + icon_state = "wfedora" + }, +/obj/item/clothing/head/beret/purple{ + name = "beret" + }, +/obj/item/clothing/head/beret/purple{ + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/sigholt{ + icon_state = "beret_hos_black"; + name = "beret" + }, +/obj/item/clothing/head/beret/centcom/officer/sigholt{ + icon_state = "beret_hos_black"; + name = "beret" + }, +/obj/structure/window/reinforced{ dir = 4; - do_not_delete_me = 1 + layer = 2.9 }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "podfloor_dark" +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/area/shuttle/administration) +/area/centcom/supply) "mXf" = ( /obj/machinery/bsa/full/admin/east, /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plating, /area/centcom/specops) -"mXF" = ( -/obj/structure/closet/secure_closet/clown{ - req_access = list() +"mXv" = ( +/obj/effect/turf_decal/siding/white/corner{ + dir = 8 }, -/turf/simulated/floor/mineral/bananium, -/area/centcom/specops) +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "mXR" = ( /obj/item/kitchen/utensil/fork{ pixel_x = 7 @@ -27791,10 +27667,13 @@ icon_state = "darkfull" }, /area/syndicate_mothership/jail) -"mYC" = ( +"mYz" = ( +/obj/item/clothing/gloves/color/latex/nitrile, +/obj/item/storage/toolbox/surgery, +/obj/structure/table/glass, +/obj/item/scalpel/laser/manager, /turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkbluealt" + icon_state = "white" }, /area/centcom/specops) "mYE" = ( @@ -27805,94 +27684,46 @@ icon_state = "fancy-wood-birch" }, /area/shuttle/trade/sol) +"mYF" = ( +/obj/machinery/tcomms/relay/cc, +/turf/simulated/floor/bluegrid, +/area/centcom/bridge) "mYH" = ( /obj/structure/chair/sofa{ dir = 4 }, /turf/simulated/floor/carpet/black, /area/centcom/zone1) -"mYP" = ( -/obj/structure/falsewall/reinforced{ - req_access = list(114); - layer = 5 - }, -/turf/simulated/floor/fakespace, -/area/centcom/specops) -"mYX" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 10 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) -"mZi" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "CO2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) -"mZl" = ( -/obj/structure/table/wood/fancy/black, -/obj/machinery/photocopier/faxmachine/longrange{ - department = "Central Command" - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) +"mYM" = ( +/obj/structure/bookcase, +/obj/item/book/manual/security_space_law/black, +/obj/item/book/manual/security_space_law, +/obj/item/book/manual/security_space_law, +/obj/item/book/manual/security_space_law, +/turf/simulated/floor/carpet, +/area/centcom/jail) +"mZk" = ( +/obj/item/paper_bin/nanotrasen, +/obj/structure/table/wood, +/turf/simulated/floor/plating, +/area/centcom/zone2) "mZo" = ( /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plating, /area/centcom/specops) +"mZp" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkredaltstrip" + }, +/area/centcom/specops) "mZB" = ( /turf/simulated/wall/indestructible/iron, /area/syndicate_mothership/elite_squad) -"mZS" = ( -/turf/simulated/floor/lava/lava_land_surface, -/area/ruin/space/bubblegum_arena) "nae" = ( /obj/machinery/light/small, /turf/simulated/floor/wood, /area/centcom/zone1) -"nai" = ( -/obj/machinery/door/airlock/hatch{ - aiControlDisabled = 1; - frequency = 1331; - hackProof = 1; - id_tag = "vox_northeast_lock"; - locked = 1; - req_access = list(152) - }, -/obj/machinery/access_button{ - command = "cycle_exterior"; - frequency = 1331; - master_tag = "vox_east_control"; - pixel_x = 28; - req_access = list(152); - wires = 1 - }, -/obj/docking_port/mobile{ - dir = 2; - dwidth = 2; - height = 18; - id = "skipjack"; - name = "Vox Skipjack"; - roundstart_move = "skipjack_away"; - width = 19 - }, -/obj/docking_port/stationary/transit{ - dir = 2; - dwidth = 2; - height = 18; - id = "skipjack_transit"; - name = "skipjack in transit"; - pixel_y = 32; - turf_type = /turf/space/transit/north; - width = 19 - }, -/obj/structure/fans/tiny, -/turf/simulated/floor/shuttle/plating/vox, -/area/shuttle/vox) "nak" = ( /obj/machinery/atmospherics/pipe/manifold/visible{ dir = 8 @@ -27911,23 +27742,35 @@ icon_state = "freezerfloor" }, /area/centcom/jail) -"naX" = ( -/obj/machinery/computer/shuttle/ert{ - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - req_access = list(109) +"naI" = ( +/obj/structure/reagent_dispensers/spacecleanertank{ + pixel_x = -32 }, -/obj/machinery/status_display{ - layer = 4; - pixel_y = 32 +/turf/simulated/floor/indestructible{ + dir = 8; + icon_state = "darkpurple" }, -/obj/item/radio/intercom/specops{ - pixel_x = 30 +/area/centcom/specops) +"naM" = ( +/obj/effect/decal/remains, +/obj/effect/turf_decal/tile/neutral{ + alpha = 100; + icon = 'icons/misc/beach.dmi'; + icon_state = "seadeep"; + layer = 9 }, -/turf/simulated/floor/plasteel{ +/obj/item/fish/goldfish{ + pixel_x = 16; + pixel_y = 10 + }, +/obj/structure/window/reinforced/survival_pod{ + density = 0; dir = 5; - icon_state = "navybluealt" + pixel_x = -32; + pixel_y = -32 }, -/area/centcom/specops) +/turf/simulated/floor/indestructible/beach/water/deep/sand_floor, +/area/centcom/zone2) "nbp" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/syndicate, @@ -27940,11 +27783,6 @@ icon_state = "darkyellowalt" }, /area/syndicate_mothership/cargo) -"nbA" = ( -/turf/space/transit/west{ - icon_state = "black" - }, -/area/space) "nbC" = ( /obj/structure/table/reinforced, /obj/machinery/photocopier/faxmachine/longrange/syndie{ @@ -27959,6 +27797,20 @@ /obj/item/storage/box/emps, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) +"nbP" = ( +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the Special Ops."; + name = "Special Ops. Monitor"; + network = list("ERT"); + pixel_x = -32 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 + }, +/obj/machinery/papershredder, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "nbV" = ( /obj/machinery/door/window/brigdoor{ color = "red"; @@ -27982,11 +27834,6 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) -"ncc" = ( -/turf/simulated/floor/indestructible{ - icon_state = "darkgreynavyblue" - }, -/area/centcom/specops) "ncp" = ( /obj/machinery/vending/snack, /obj/structure/closet/hydrant{ @@ -28002,6 +27849,28 @@ icon_state = "fancy-wood-cherry" }, /area/ninja/outpost) +"ncv" = ( +/turf/simulated/floor/indestructible{ + icon_state = "darkgreynavybluecorner" + }, +/area/centcom/specops) +"ncA" = ( +/obj/machinery/door/airlock/centcom{ + aiControlDisabled = 1; + hackProof = 1; + name = "Special ReactionTeam"; + opacity = 1; + req_access = list(114) + }, +/obj/effect/turf_decal/delivery/white, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 1; + id_tag = "CC_Armory_SRT1" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "ncB" = ( /obj/effect/decal/cleanable/blood, /obj/machinery/flasher{ @@ -28069,36 +27938,16 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) -"ndg" = ( -/obj/machinery/dna_scannernew/upgraded, -/turf/simulated/floor/shuttle{ - icon_state = "floor3" - }, -/area/shuttle/administration) -"nef" = ( -/obj/mecha/combat/durand/loaded{ - operation_req_access = list(1) - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/mech, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" - }, -/area/shuttle/gamma) -"neo" = ( -/obj/structure/table, -/obj/structure/window/reinforced{ - dir = 1 +"ndF" = ( +/obj/effect/decal/warning_stripes/northwestsouth, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 1; + id_tag = "CC_Armory_Grenade" }, -/obj/item/paper_bin/nanotrasen{ - pixel_x = 3; - pixel_y = 12 +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" }, -/obj/item/pen/multi/fountain, -/turf/simulated/floor/carpet, -/area/centcom/zone2) +/area/centcom/specops) "neu" = ( /obj/structure/closet/secure_closet/freezer/meat, /obj/structure/sign/bobross{ @@ -28115,10 +27964,20 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) -"nev" = ( -/obj/item/flag/nt, -/turf/simulated/floor/carpet/black, -/area/centcom/zone3) +"neK" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/holohoop, +/obj/effect/decal/warning_stripes/green/hollow, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "neS" = ( /obj/structure/table/wood/fancy/black, /turf/simulated/floor/carpet/black, @@ -28136,19 +27995,6 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) -"nfo" = ( -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/machinery/conveyor{ - id = "CO2"; - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister/carbon_dioxide{ - maximum_pressure = 50000 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "nfE" = ( /obj/machinery/vending/dinnerware, /turf/simulated/floor/plating{ @@ -28187,6 +28033,20 @@ icon_state = "fancy-wood-cherry" }, /area/shuttle/trade/sol) +"nfR" = ( +/obj/structure/bed/dogbed/ian{ + name = "Lounger"; + pixel_x = -2 + }, +/mob/living/simple_animal/pet/dog/fox/alisa{ + pixel_x = -2 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "nge" = ( /obj/item/twohanded/required/kirbyplants, /obj/structure/curtain/black{ @@ -28200,6 +28060,13 @@ }, /turf/simulated/floor/grass, /area/centcom/evac) +"ngi" = ( +/obj/structure/table/glass, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellow" + }, +/area/centcom/specops) "ngk" = ( /obj/structure/table, /obj/item/storage/fancy/crayons, @@ -28221,23 +28088,17 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/infteam) -"ngB" = ( -/obj/structure/sign/poster/contraband/hacking_guide{ - pixel_x = -32 +"ngL" = ( +/obj/machinery/computer/station_alert, +/obj/structure/window/reinforced{ + dir = 4 }, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkyellow" +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 }, +/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) -"ngT" = ( -/obj/machinery/status_display/supply_display{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/bridge) "ngX" = ( /obj/machinery/light/small{ dir = 1 @@ -28276,11 +28137,18 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/infteam) -"niV" = ( -/obj/item/grenade/spawnergrenade/manhacks, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" - }, +"nig" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/coatrack, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/zone1) +"niV" = ( +/obj/item/grenade/spawnergrenade/manhacks, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" + }, /area/syndicate_mothership/infteam) "nja" = ( /obj/structure/window/reinforced{ @@ -28307,6 +28175,23 @@ icon_state = "dark" }, /area/syndicate_mothership/control) +"njh" = ( +/obj/structure/window/reinforced{ + armor = list("melee"=100,"bullet"=100,"laser"=0,"energy"=0,"bomb"=25,"bio"=100,"rad"=100,"fire"=80,"acid"=100); + dir = 1; + layer = 2 + }, +/obj/structure/window/reinforced/survival_pod{ + density = 0; + dir = 9; + pixel_x = -1; + pixel_y = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "navybluealt" + }, +/area/centcom/specops) "njt" = ( /obj/effect/turf_decal/tile{ alpha = 128; @@ -28357,10 +28242,24 @@ tag = "icon-stage_stairs" }, /area/syndicate_mothership/infteam) -"njL" = ( -/obj/effect/turf_decal/stripes/gold, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) +"njO" = ( +/obj/effect/turf_decal/siding/white{ + dir = 1; + pixel_y = 3 + }, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) +"njW" = ( +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "navyblue" + }, +/area/centcom/specops) "njZ" = ( /turf/simulated/floor/plasteel{ dir = 6; @@ -28390,20 +28289,6 @@ icon_state = "warndarkgreyred" }, /area/syndicate_mothership/infteam) -"nli" = ( -/obj/docking_port/stationary/transit{ - dheight = 10; - dir = 8; - height = 30; - id = "freegolem_transit"; - name = "free golem in transit"; - pixel_x = 32; - width = 20 - }, -/turf/space/transit/west{ - icon_state = "black" - }, -/area/space) "nlx" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -28446,13 +28331,15 @@ icon_state = "white" }, /area/centcom/jail) -"nmw" = ( -/turf/simulated/floor/plating, -/area/syndicate_mothership/infteam) -"nmT" = ( -/obj/structure/closet/coffin, -/turf/simulated/floor/plating, -/area/centcom/zone2) +"nmE" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkyellow" + }, +/area/centcom/specops) "nnb" = ( /obj/structure/fans/tiny/invisible, /turf/simulated/floor/plasteel{ @@ -28460,17 +28347,6 @@ icon_state = "warndarkgreyred" }, /area/syndicate_mothership/infteam) -"nnf" = ( -/obj/structure/closet/wardrobe/red, -/obj/structure/window/reinforced{ - layer = 2.9 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/item/storage/box/holobadge, -/turf/simulated/floor/wood, -/area/centcom/jail) "nnl" = ( /obj/effect/turf_decal/tile{ alpha = 128; @@ -28517,6 +28393,51 @@ "nnz" = ( /turf/simulated/wall/shuttle/onlyselfsmooth, /area/shuttle/supply) +"nnC" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/four) +"nnM" = ( +/obj/machinery/recharge_station/ert, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"nnN" = ( +/obj/effect/turf_decal/siding/white/corner, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) +"nnW" = ( +/obj/structure/rack/gunrack, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/gun/energy/gun/nuclear{ + pixel_x = -6 + }, +/obj/item/gun/energy/gun/nuclear{ + pixel_x = -6 + }, +/obj/item/gun/energy/gun/nuclear{ + pixel_x = -6 + }, +/obj/item/gun/energy/gun/nuclear{ + pixel_x = 6 + }, +/obj/item/gun/energy/gun/nuclear{ + pixel_x = 6 + }, +/obj/item/gun/energy/gun/nuclear{ + pixel_x = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "nov" = ( /obj/effect/turf_decal/delivery, /obj/machinery/portable_atmospherics/canister/sleeping_agent{ @@ -28530,28 +28451,6 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"noJ" = ( -/obj/item/stack/sheet/metal, -/obj/structure/table, -/obj/item/stack/sheet/glass{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/stack/sheet/metal, -/obj/item/stack/sheet/metal, -/obj/item/stack/sheet/glass{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/stack/sheet/glass{ - pixel_x = 4; - pixel_y = 4 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" - }, -/area/shuttle/administration) "noN" = ( /obj/effect/turf_decal{ dir = 9; @@ -28563,15 +28462,33 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"noS" = ( -/obj/structure/window/reinforced, -/obj/structure/sign/poster/official/random{ - pixel_y = -30 +"noY" = ( +/obj/effect/turf_decal/caution/stand_clear/red, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "navybluealtstrip" + }, +/area/centcom/specops) +"npl" = ( +/obj/structure/railing{ + dir = 8; + pixel_x = 32 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 1; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" }, -/area/centcom/evac) +/area/centcom/specops) +"npn" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "darkgrey" + }, +/area/shuttle/administration) "npt" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo15" @@ -28582,16 +28499,6 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/control) -"npL" = ( -/obj/structure/grille, -/obj/structure/window/full/shuttle, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id_tag = "adminshuttleshutters"; - name = "Blast Shutters" - }, -/turf/simulated/floor/plating, -/area/shuttle/administration) "npO" = ( /obj/effect/turf_decal/delivery, /obj/machinery/portable_atmospherics/canister/air{ @@ -28605,44 +28512,12 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"nqj" = ( -/obj/effect/decal/warning_stripes/white, -/obj/machinery/door/airlock{ - id_tag = "CC_toilet_unit1"; - name = "Toilet" - }, -/obj/effect/mine/sound/bwoink, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/evac) "nql" = ( /obj/structure/chair/sofa/corp{ dir = 1 }, /turf/simulated/floor/wood, /area/centcom/zone1) -"nqn" = ( -/obj/machinery/chem_dispenser/soda/upgraded, -/obj/structure/table/reinforced, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "vault" - }, -/area/centcom/specops) -"nqF" = ( -/obj/machinery/door_control/secure{ - id = "CC_Armory_DURAND"; - name = "DURAND"; - pixel_x = 24; - pixel_y = 32; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkredcorners" - }, -/area/centcom/specops) "nqS" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 @@ -28656,15 +28531,6 @@ icon_state = "dark" }, /area/shuttle/syndicate) -"nqT" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/indestructible{ - dir = 6; - icon_state = "darkgreynavyblue" - }, -/area/centcom/specops) "nqX" = ( /obj/structure/fans/tiny/invisible, /turf/simulated/floor/plasteel{ @@ -28672,9 +28538,6 @@ icon_state = "warndarkgreyred" }, /area/syndicate_mothership/elite_squad) -"nqY" = ( -/turf/simulated/floor/plating, -/area/syndicate_mothership/elite_squad) "nra" = ( /obj/machinery/light/small{ dir = 1 @@ -28687,14 +28550,6 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) -"nre" = ( -/obj/structure/plasticflaps/mining, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8 - }, -/turf/simulated/floor/shuttle/plating, -/area/shuttle/supply) "nrg" = ( /obj/structure/fans/tiny/invisible, /turf/simulated/floor/plasteel{ @@ -28715,14 +28570,6 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) -"nrO" = ( -/obj/structure/closet/secure_closet/reagents, -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9 - }, -/turf/simulated/floor/engine, -/area/centcom/specops) "nrP" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -28738,6 +28585,30 @@ icon_state = "light-fancy-wood" }, /area/syndicate_mothership/control) +"nrV" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/hatch{ + name = "NVT Argos"; + req_access = list(101) + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "podfloor_dark" + }, +/area/shuttle/administration) +"nsd" = ( +/obj/machinery/door/airlock/command/glass{ + frequency = 2000; + icon_state = "open"; + id_tag = "CC-OP3-Int"; + locked = 1; + name = "Zone 2" + }, +/obj/effect/decal/warning_stripes/blue, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone2) "nsg" = ( /obj/structure/chair/sofa/right, /turf/simulated/floor/plating{ @@ -28767,34 +28638,20 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) +"nsM" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkgreencorners" + }, +/area/centcom/specops) "nsV" = ( /obj/machinery/conveyor_switch/oneway{ - id = "SFBQMLoad2"; - dir = 8 + dir = 8; + id = "SFBQMLoad2" }, /turf/simulated/floor/plasteel{ icon_state = "darkyellowcornersalt" }, /area/syndicate_mothership/cargo) -"ntc" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/beakers/bluespace, -/obj/item/storage/box/beakers/bluespace, -/obj/item/storage/box/beakers/bluespace, -/obj/item/reagent_scanner/adv, -/obj/structure/sink{ - dir = 1 - }, -/turf/simulated/floor/engine, -/area/centcom/specops) -"ntq" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "ntx" = ( /obj/machinery/button/windowtint{ id = "SSTprivateroom"; @@ -28823,8 +28680,18 @@ }, /area/centcom/evac) "ntN" = ( -/turf/simulated/floor/indestructible{ - icon_state = "darkgreynavybluecorner" +/obj/effect/decal/warning_stripes/northwestsouth, +/obj/machinery/door/poddoor/shutters/preopen/invincible{ + dir = 1; + id_tag = "ERT_armory_vkd"; + name = "Armory level 1" + }, +/obj/machinery/door/poddoor/impassable/preopen{ + id_tag = "ERT_Quarantine"; + name = "ERT Quarantine" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" }, /area/centcom/specops) "ntS" = ( @@ -28842,10 +28709,10 @@ icon_state = "darkredaltstrip" }, /area/centcom/jail) -"nuh" = ( +"nug" = ( +/obj/machinery/recharge_station/ert, /turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "navybluealtstrip" + icon_state = "dark" }, /area/centcom/specops) "nus" = ( @@ -28884,42 +28751,11 @@ }, /turf/simulated/floor/shuttle, /area/shuttle/mining) -"nuF" = ( -/obj/structure/railing{ - dir = 8; - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" - }, -/area/centcom/specops) "nuI" = ( /obj/effect/mapping_helpers/light, /obj/structure/flora/grass/jungle/b, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"nuQ" = ( -/obj/structure/falsewall/reinforced, -/obj/effect/decal/warning_stripes/blue{ - desc = "Куда же ведет эта лестница?"; - icon = 'icons/obj/structures.dmi'; - icon_state = "ladder11"; - name = "Ladder" - }, -/obj/effect/step_trigger/teleporter{ - teleport_x = 135; - teleport_y = 16; - teleport_z = 1; - mobs_only = 1; - icon = 'icons/mob/screen_gen.dmi'; - icon_state = "x2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/bridge) "nuU" = ( /obj/structure/grille, /obj/structure/window/reinforced/polarized{ @@ -28947,12 +28783,35 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) +"nve" = ( +/obj/structure/sign/nosmoking_2{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkyellowalt" + }, +/area/centcom/supply) "nvh" = ( /obj/structure/table/wood{ color = "#996633" }, /turf/simulated/floor/carpet/black, /area/trader_station/sol) +"nvm" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/turf/simulated/floor/glass/reinforced, +/area/centcom/specops) "nvA" = ( /obj/structure/sink/kitchen{ dir = 4; @@ -28964,16 +28823,6 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) -"nvB" = ( -/obj/structure/window/full/shuttle, -/obj/structure/grille, -/turf/simulated/floor/plating/airless, -/area/shuttle/transport) -"nvQ" = ( -/obj/structure/table/wood, -/obj/item/storage/pill_bottle/dice, -/turf/simulated/floor/carpet, -/area/centcom/evac) "nvU" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/condiment/enzyme{ @@ -28994,11 +28843,11 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) -"nwb" = ( -/obj/structure/table/reinforced, -/obj/item/deck/cards, +"nwq" = ( +/obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ - icon_state = "navyblue" + dir = 9; + icon_state = "darkredalt" }, /area/centcom/specops) "nwZ" = ( @@ -29009,16 +28858,6 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) -"nxa" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "burst_l"; - tag = "icon-burst_l" - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/pod_1) "nxD" = ( /obj/structure/flora/ausbushes/brflowers, /obj/structure/window/full/basic, @@ -29037,12 +28876,6 @@ icon_state = "fancy-wood-birch" }, /area/shuttle/trade/sol) -"nyg" = ( -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkredaltstrip" - }, -/area/centcom/zone2) "nyl" = ( /obj/effect/mapping_helpers/light, /turf/simulated/floor/plating/asteroid{ @@ -29060,6 +28893,15 @@ icon_state = "white" }, /area/centcom/jail) +"nyy" = ( +/obj/machinery/vending/snack, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault"; + tag = "icon-vault (WEST)" + }, +/area/centcom/specops) "nyA" = ( /obj/structure/chair/office/dark{ dir = 8 @@ -29109,16 +28951,16 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) -"nzI" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/shuttle/engine/heater, -/turf/simulated/floor/plating/airless, -/area/shuttle/pod_1) +"nzq" = ( +/obj/structure/coatrack, +/obj/structure/window/reinforced, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/zone1) +"nzx" = ( +/obj/structure/bookcase/manuals, +/obj/item/book/manual/sop_legal, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "nzK" = ( /obj/machinery/access_button{ command = "cycle_interior"; @@ -29167,6 +29009,18 @@ /obj/effect/mapping_helpers/light, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) +"nBb" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 10 + }, +/obj/structure/showcase{ + layer = 4.2; + pixel_x = 5; + pixel_y = 5 + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "nBf" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -29194,6 +29048,14 @@ /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/indestructible/beach/sand, /area/syndicate_mothership/outside) +"nBl" = ( +/obj/machinery/computer/camera_advanced, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "nBq" = ( /obj/item/twohanded/required/kirbyplants, /obj/structure/curtain/black{ @@ -29201,6 +29063,12 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/infteam) +"nBB" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "navybluealtstrip" + }, +/area/centcom/supply) "nBC" = ( /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; @@ -29215,6 +29083,23 @@ }, /turf/simulated/floor/carpet/black, /area/centcom/specops) +"nCb" = ( +/obj/structure/table/glass, +/obj/item/paper_bin/nanotrasen, +/obj/item/pen/multi/fountain, +/obj/item/lighter/zippo/blue{ + pixel_x = 5; + pixel_y = 8 + }, +/obj/item/clothing/mask/cigarette/cigar/cohiba{ + pixel_x = -4; + pixel_y = 9 + }, +/obj/machinery/newscaster/security_unit{ + pixel_y = 32 + }, +/turf/simulated/floor/carpet, +/area/centcom/specops) "nCm" = ( /obj/machinery/smartfridge/dish{ opacity = 1 @@ -29232,6 +29117,10 @@ icon_state = "white" }, /area/centcom/zone1) +"nCx" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/carpet/black, +/area/centcom/zone3) "nCA" = ( /obj/machinery/door/airlock/centcom{ damage_deflection = 999; @@ -29295,32 +29184,6 @@ icon_state = "floor12" }, /area/shuttle/syndicate) -"nDt" = ( -/obj/machinery/vending/medical, -/turf/simulated/floor/shuttle{ - icon_state = "floor3" - }, -/area/shuttle/administration) -"nDw" = ( -/obj/structure/closet/secure_closet/cabinet/bar{ - req_access = list() - }, -/obj/item/storage/box/beakers/bluespace, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "nDx" = ( /obj/structure/table/wood, /obj/structure/sign/nosmoking_2{ @@ -29336,13 +29199,20 @@ /obj/item/lighter/zippo/gonzofist, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/jail) -"nDI" = ( -/obj/effect/mapping_helpers/light, -/turf/simulated/floor/beach/sand{ - icon = 'icons/turf/floors.dmi'; - icon_state = "asteroid" +"nDz" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/grown/citrus/lemon, +/obj/item/reagent_containers/food/snacks/grown/citrus/lime, +/obj/item/reagent_containers/food/snacks/grown/citrus/orange, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) +"nDM" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 }, -/area/centcom/evac) +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "nEp" = ( /obj/structure/table/wood/poker, /obj/item/deck/cards/syndicate{ @@ -29358,6 +29228,13 @@ icon_state = "freezerfloor" }, /area/syndicate_mothership) +"nEJ" = ( +/obj/structure/window/reinforced{ + layer = 2.9 + }, +/obj/machinery/vending/clothing/departament/security, +/turf/simulated/floor/wood, +/area/centcom/jail) "nEN" = ( /obj/effect/baseturf_helper/asteroid/snow{ baseturf = /turf/simulated/floor/indestructible/snow; @@ -29365,13 +29242,12 @@ }, /turf/simulated/wall/indestructible/reinforced/rusted, /area/ninja/holding) -"nFb" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" +"nEQ" = ( +/obj/machinery/computer/crew, +/obj/effect/turf_decal/siding{ + color = "#444444" }, +/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "nFg" = ( /obj/effect/turf_decal/siding/wood{ @@ -29385,27 +29261,6 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) -"nFn" = ( -/obj/machinery/light/spot{ - dir = 8; - tag = "icon-tube1 (WEST)" - }, -/obj/machinery/door_control{ - id = "QMLoaddoor"; - layer = 3; - name = "Loading Doors"; - pixel_x = -24; - pixel_y = -8 - }, -/obj/machinery/door_control{ - id = "QMLoaddoor2"; - layer = 3; - name = "Loading Doors"; - pixel_x = -24; - pixel_y = 8 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/supply) "nFv" = ( /obj/structure/chair/comfy/shuttle/dark, /obj/machinery/light/spot{ @@ -29416,13 +29271,20 @@ icon_state = "Dark" }, /area/shuttle/funeral) -"nFw" = ( -/obj/structure/window/reinforced{ +"nFx" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; dir = 4 }, -/obj/structure/table, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/turf/simulated/floor/glass/reinforced, +/area/centcom/specops) "nFC" = ( /obj/machinery/cryopod/syndie{ dir = 1 @@ -29437,6 +29299,20 @@ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' }, /area/shuttle/syndicate) +"nGk" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/turf/simulated/floor/glass, +/area/centcom/zone3) "nHd" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -29465,12 +29341,62 @@ icon_state = "darkyellowalt" }, /area/centcom/zone3) +"nHw" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkredaltstrip" + }, +/area/centcom/specops) +"nIe" = ( +/obj/machinery/door/airlock/centcom{ + aiControlDisabled = 1; + name = "Assault Pod"; + opacity = 1; + req_access = list(150) + }, +/obj/docking_port/mobile/assault_pod{ + port_direction = 2 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor4" + }, +/area/shuttle/assault_pod) "nIj" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/evac) +"nIn" = ( +/obj/effect/turf_decal/delivery/white, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 1; + id_tag = "CC_Armory_SRT1" + }, +/obj/machinery/door/airlock/centcom{ + aiControlDisabled = 1; + hackProof = 1; + name = "Special ReactionTeam"; + opacity = 1; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"nIr" = ( +/obj/effect/step_trigger/teleporter{ + icon = 'icons/mob/screen_gen.dmi'; + icon_state = "x2"; + teleport_x = 216; + teleport_y = 26; + teleport_z = 1 + }, +/turf/simulated/floor/plasteel{ + color = "gray"; + dir = 4; + icon_state = "rampbottom" + }, +/area/centcom/specops) "nIG" = ( /turf/simulated/floor/carpet/green, /area/ninja/outpost) @@ -29482,6 +29408,13 @@ icon_state = "fancy-wood-oak-broken4" }, /area/syndicate_mothership) +"nIL" = ( +/obj/machinery/vending/tool, +/obj/effect/decal/warning_stripes/white/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "nIR" = ( /obj/machinery/cryopod{ dir = 4 @@ -29494,6 +29427,14 @@ icon_state = "navyblue" }, /area/centcom/specops) +"nJe" = ( +/obj/structure/table/glass, +/obj/machinery/light, +/obj/item/storage/ashtray/glass, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone2) "nJg" = ( /obj/structure/fence{ color = "#b0b7c6"; @@ -29502,22 +29443,12 @@ }, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"nJu" = ( +"nJH" = ( /obj/structure/table/wood, -/obj/item/book/manual/security_space_law, -/obj/item/paper_bin/nanotrasen, -/obj/item/pen, -/obj/structure/window/reinforced, +/obj/item/reagent_containers/food/drinks/bottle/holywater, +/obj/item/reagent_containers/food/drinks/bottle/holywater, /turf/simulated/floor/carpet, -/area/centcom/zone3) -"nJB" = ( -/obj/structure/table/glass, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 5 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) +/area/centcom/evac) "nKg" = ( /turf/simulated/floor/carpet/black, /area/syndicate_mothership/jail) @@ -29576,6 +29507,15 @@ }, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) +"nLd" = ( +/obj/machinery/newscaster/security_unit{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "navybluealt" + }, +/area/centcom/specops) "nLn" = ( /obj/machinery/light/spot{ dir = 4; @@ -29583,6 +29523,31 @@ }, /turf/simulated/floor/shuttle, /area/shuttle/supply) +"nLN" = ( +/obj/mecha/combat/durand/loaded{ + color = "#CCCCFF"; + desc = "A heavyweight exosuit, painted in a gray scheme. This model appears to have some modifications for ERT."; + name = "Nanotrasen Special Durand Mk. II"; + operation_req_access = list(109) + }, +/obj/item/mecha_parts/mecha_equipment/repair_droid, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/engine, +/area/centcom/specops) +"nMb" = ( +/obj/structure/closet/crate/can, +/obj/item/paper/central_command/archive/station_reports, +/obj/item/paper/central_command/archive/station_reports, +/obj/item/paper/central_command/archive/station_reports, +/obj/item/paper/central_command/archive/station_reports, +/obj/item/paper/central_command/archive/station_reports, +/obj/item/paper/central_command/archive/station_reports, +/obj/item/paper/central_command/archive/station_reports, +/obj/item/paper/central_command/archive/station_reports, +/obj/item/paper/central_command/archive/station_reports, +/obj/item/paper/central_command/archive/station_reports, +/turf/simulated/floor/plating, +/area/centcom/zone2) "nMc" = ( /obj/effect/turf_decal{ dir = 1; @@ -29679,13 +29644,25 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) -"nOi" = ( -/obj/structure/table/wood/fancy/royalblack, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" +"nNn" = ( +/obj/structure/bookcase, +/turf/simulated/floor/wood{ + icon_state = "wood-broken6" }, -/area/shuttle/administration) +/area/centcom/zone2) +"nNQ" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/three) +"nOe" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table, +/obj/item/reagent_containers/glass/beaker/waterbottle, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "nOy" = ( /obj/structure/chair/comfy/red{ dir = 1 @@ -29702,6 +29679,16 @@ }, /turf/simulated/floor/carpet/green, /area/ninja/outpost) +"nPt" = ( +/obj/structure/table/wood, +/obj/item/radio/intercom, +/obj/item/megaphone, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/turf/simulated/floor/carpet, +/area/centcom/zone3) "nPA" = ( /obj/effect/turf_decal/stripes/gold{ dir = 9 @@ -29725,6 +29712,14 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) +"nQl" = ( +/obj/effect/turf_decal/siding/white{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "nQm" = ( /obj/structure/flora/tree/dead, /obj/structure/flora/grass/both, @@ -29739,25 +29734,21 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/infteam) -"nQT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 6 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "darkgrey" - }, -/area/shuttle/administration) -"nRi" = ( -/obj/effect/decal/warning_stripes/northwestsouth, -/obj/machinery/door/poddoor/shutters/invincible{ +"nQM" = ( +/obj/structure/chair/comfy/shuttle, +/turf/simulated/floor/plasteel{ dir = 1; - id_tag = "CC_Armory_Grenade" + icon_state = "darkred" + }, +/area/centcom/specops) +"nQW" = ( +/obj/machinery/vending/mech/ntc/equipment{ + req_access = list(114) }, /turf/simulated/floor/plasteel{ - icon_state = "darkfull" + icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/supply) "nRs" = ( /obj/structure/curtain/open/shower, /obj/machinery/shower{ @@ -29780,6 +29771,16 @@ }, /turf/simulated/floor/wood, /area/centcom/zone2) +"nRK" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/shuttle/engine/heater{ + dir = 4 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/pod_2) "nRW" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -29787,20 +29788,13 @@ }, /area/syndicate_mothership/control) "nRZ" = ( -/obj/structure/shuttle/engine/platform{ - dir = 1; - layer = 2.9 - }, -/obj/structure/window/plasmareinforced{ - color = "#00f700" +/obj/machinery/sleeper/upgraded{ + dir = 4 }, -/obj/structure/shuttle/engine/heater{ - dir = 1; - icon_state = "heater3x3"; - tag = "icon-heater (NORTH)" +/turf/simulated/floor/shuttle{ + icon_state = "floor3" }, -/turf/simulated/floor/plating/airless, -/area/shuttle/ninja) +/area/shuttle/administration) "nSj" = ( /obj/structure/bed, /obj/item/bedsheet/blue, @@ -29824,7 +29818,7 @@ /area/syndicate_mothership/cargo) "nSu" = ( /turf/simulated/wall/shuttle, -/area/space) +/area/shuttle/transport) "nSG" = ( /obj/structure/fence/post{ invulnerable = 1 @@ -29838,15 +29832,6 @@ "nTJ" = ( /turf/simulated/wall/shuttle, /area/shuttle/pod_4) -"nTO" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/bridge) "nTP" = ( /obj/structure/flora/tree/jungle, /obj/structure/flora/junglebush/c, @@ -29860,25 +29845,40 @@ }, /turf/simulated/floor/wood, /area/centcom/evac) -"nUc" = ( -/obj/structure/sign/poster/official/nanotrasen_logo{ - icon = 'icons/obj/decals.dmi'; - icon_state = "nanotrasen_sign5"; - pixel_x = -16; - pixel_y = 32 +"nTY" = ( +/obj/effect/turf_decal/tile/neutral{ + color = "black"; + icon_state = "tile_full"; + layer = 9 }, -/turf/simulated/floor/wood{ - icon_state = "light-fancy-wood" +/obj/effect/step_trigger/teleporter{ + icon = 'icons/mob/screen_gen.dmi'; + icon_state = "x2"; + teleport_x = 175; + teleport_y = 60; + teleport_z = 1 + }, +/turf/simulated/floor/plasteel{ + color = "gray"; + dir = 8; + icon_state = "rampbottom" }, /area/centcom/specops) -"nUe" = ( -/obj/structure/plasticflaps/mining, -/obj/machinery/conveyor{ - id = "QMLoad"; - dir = 4 +"nUf" = ( +/obj/machinery/vending/cigarette, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault"; + tag = "icon-vault (WEST)" }, -/turf/simulated/floor/shuttle/plating, -/area/shuttle/supply) +/area/centcom/specops) +"nUi" = ( +/obj/structure/bookcase, +/obj/effect/decal/cleanable/cobweb{ + layer = 4 + }, +/turf/simulated/floor/plating, +/area/centcom/zone2) "nVd" = ( /obj/structure/table/wood/fancy/black, /obj/item/flashlight/lamp/green{ @@ -29896,6 +29896,13 @@ icon_state = "dark" }, /area/centcom/bridge) +"nVg" = ( +/obj/machinery/computer/secure_data, +/obj/effect/turf_decal/siding/yellow{ + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone3) "nVl" = ( /obj/structure/rack, /obj/item/storage/box/hug, @@ -29933,15 +29940,6 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"nVB" = ( -/obj/structure/sign/poster/official/nanotrasen_logo{ - icon = 'icons/obj/decals.dmi'; - icon_state = "ntsing_alt" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "nVI" = ( /obj/effect/mapping_helpers/light{ light_power = 3 @@ -29971,11 +29969,44 @@ "nWf" = ( /turf/simulated/wall/indestructible/reinforced/rusted, /area/ninja/holding) +"nWx" = ( +/obj/structure/table/glass, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone3) "nWB" = ( /turf/simulated/floor/plasteel{ icon_state = "barber" }, /area/centcom/zone1) +"nWU" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/poddoor/impassable/preopen{ + id_tag = "ERT_Quarantine"; + name = "ERT Quarantine" + }, +/obj/machinery/door/airlock/centcom{ + name = "Emergency Response Team"; + opacity = 1; + req_access = list(109) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"nXE" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/shuttle/engine/heater{ + dir = 4 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/pod_1) "nXK" = ( /obj/machinery/hydroponics/constructable, /obj/machinery/ai_status_display{ @@ -30031,40 +30062,112 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/control) -"nYE" = ( -/obj/structure/shuttle/engine/platform{ - dir = 1; - layer = 2.9 - }, -/obj/structure/window/plasmareinforced{ - color = "#00f700" - }, -/obj/structure/shuttle/engine/heater{ - dir = 1; - icon_state = "heater2x2"; - tag = "icon-heater (NORTH)" +"nYA" = ( +/obj/machinery/light/small{ + dir = 8 }, -/turf/simulated/floor/plating/airless, -/area/shuttle/ninja) +/obj/structure/bookcase/random, +/turf/simulated/floor/carpet, +/area/centcom/zone1) "nYK" = ( /turf/simulated/floor/plasteel{ icon_state = "darkgrey" }, /area/syndicate_mothership) +"nYX" = ( +/obj/structure/closet/cabinet{ + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100) + }, +/obj/item/storage/box/centcomofficer, +/obj/item/radio/headset/centcom{ + desc = null; + name = "Supreme commander bowman headset" + }, +/obj/item/card/id{ + access = list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,69,70,71,73,74,75,76,77,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114); + icon_state = "commander"; + name = "Supreme Commander ID card"; + rank = "Nanotrasen Navy Captain"; + registered_name = null + }, +/obj/item/door_remote/centcomm, +/obj/item/clothing/accessory/medal/gold{ + desc = null; + name = "Supreme commander's gold medal" + }, +/obj/item/gun/projectile/revolver/mateba, +/obj/item/ammo_box/a357, +/obj/item/ammo_box/a357, +/obj/item/ammo_box/a357, +/obj/item/clothing/under/color/black{ + icon_state = "hosdnavyclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/glasses/hud/security/sunglasses/aviators, +/obj/item/clothing/head/beret/centcom/officer/sigholt{ + icon_state = "officerberet"; + name = "beret" + }, +/obj/item/storage/backpack/satchel, +/obj/item/clothing/gloves/color/white{ + desc = null; + name = "Supreme judge gloves" + }, +/obj/item/clothing/shoes/cowboy/white{ + name = "white boots" + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "nZe" = ( /obj/structure/railing/corner{ dir = 1 }, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"oaw" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/food/snacks/sliceable/pizza/bacon, -/obj/structure/window/reinforced{ - dir = 4 +"nZr" = ( +/obj/structure/sink{ + dir = 1 + }, +/turf/simulated/floor/indestructible{ + icon_state = "darkpurple" + }, +/area/centcom/specops) +"nZM" = ( +/obj/machinery/door/airlock/centcom{ + name = "ERT Service Room"; + opacity = 1; + req_access = list(109) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"oaa" = ( +/obj/machinery/vending/engivend{ + req_access = list() + }, +/obj/effect/decal/warning_stripes/white/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/turf/simulated/floor/wood, /area/centcom/specops) +"oaK" = ( +/obj/structure/window/full/reinforced{ + layer = 2 + }, +/obj/machinery/door/poddoor/shutters/invincible{ + density = 0; + dir = 8; + icon_state = "open"; + id_tag = "CC_space_jail_sec"; + layer = 50; + level = 3; + locked = 1; + name = "Central Command Jail"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/centcom/jail) "oaS" = ( /obj/machinery/door_control/secure{ id = "Aspid_main_storage"; @@ -30086,22 +30189,22 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) -"obi" = ( -/obj/structure/shuttle/engine/heater{ +"obc" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/decal/warning_stripes/south, +/obj/effect/turf_decal/caution/stand_clear{ dir = 1; - tag = "icon-heater (NORTH)" + do_not_delete_me = 1 }, -/obj/structure/window/reinforced{ - color = "red" +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 1; + id_tag = "ERT_armory_lvl2"; + layer = 5; + name = "Armory level 2" }, -/turf/simulated/floor/plating/airless, -/area/shuttle/syndicate_elite) -"obp" = ( -/obj/machinery/computer/camera_advanced, -/obj/effect/turf_decal/siding{ - color = "#444444" +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" }, -/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "obw" = ( /obj/structure/flora/ausbushes/stalkybush, @@ -30125,13 +30228,6 @@ }, /turf/simulated/floor/carpet/red, /area/syndicate_mothership/control) -"obI" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/evac) "obJ" = ( /turf/simulated/wall/indestructible/fakeglass{ base_icon_state = "fake_plastitanium_glass"; @@ -30159,6 +30255,24 @@ }, /turf/simulated/floor/indestructible/beach/sand, /area/syndicate_mothership/outside) +"obT" = ( +/obj/structure/statue/sandstone/venus{ + layer = 5 + }, +/obj/structure/flora/ausbushes/sparsegrass, +/obj/effect/mapping_helpers/light, +/turf/simulated/floor/grass, +/area/centcom/evac) +"ocf" = ( +/obj/effect/decal/warning_stripes/south, +/obj/effect/turf_decal/tile/neutral{ + alpha = 150; + color = "black"; + icon_state = "tile_full"; + layer = 9 + }, +/turf/simulated/floor/plating, +/area/centcom/supply) "ocs" = ( /obj/structure/chair/sofa/right{ dir = 1 @@ -30169,12 +30283,31 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) +"ocx" = ( +/turf/simulated/floor/wood{ + icon_state = "light-fancy-wood" + }, +/area/centcom/specops) "ocG" = ( /obj/structure/chair/sofa/right, /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, /area/centcom/zone1) +"ocO" = ( +/obj/structure/table/wood, +/obj/item/pizzabox/vegetable, +/obj/item/pizzabox/vegetable, +/obj/item/pizzabox/vegetable, +/obj/item/pizzabox/vegetable, +/obj/item/kitchen/knife, +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault"; + tag = "icon-vault (WEST)" + }, +/area/centcom/specops) "ocY" = ( /obj/structure/table/reinforced, /obj/item/airlock_electronics/syndicate, @@ -30200,27 +30333,6 @@ icon_state = "floor12" }, /area/shuttle/syndicate) -"odn" = ( -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "Drop" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) -"odr" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - dir = 2; - id_tag = "ERT_director_office_shutters2"; - layer = 5; - locked = 1; - name = "CentCom SOO Briefing" - }, -/turf/simulated/wall/indestructible/fakeglass, -/area/centcom/specops) "odT" = ( /obj/structure/chair/sofa/left{ dir = 1 @@ -30249,30 +30361,40 @@ }, /area/shuttle/ninja) "odZ" = ( -/turf/simulated/floor/wood, +/turf/simulated/floor/wood/fancy/light, /area/centcom/evac) -"oeq" = ( -/obj/effect/decal/warning_stripes/white/hollow, -/obj/effect/decal/warning_stripes/west, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "oeH" = ( /obj/structure/closet/crate/can, /turf/simulated/floor/plasteel{ icon_state = "grimy" }, /area/syndicate_mothership/elite_squad) -"oeV" = ( -/obj/structure/sign/poster/official/nanotrasen_logo{ - pixel_y = 32 +"oeJ" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/airlock/gold/glass{ + frequency = 2000; + hackable = 0; + id_tag = "CC-OP3-Ext"; + locked = 1; + name = "Zone 3" + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 2000; + master_tag = "CC-OP3"; + name = "CC-OP3-EXT"; + pixel_x = -32; + req_access = list(109); + wires = 0 }, /turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkredalt" + icon_state = "dark" }, -/area/centcom/jail) +/area/centcom/zone3) +"oeU" = ( +/obj/item/flag/nt, +/turf/simulated/floor/carpet, +/area/centcom/specops) "oeY" = ( /obj/structure/chair/sofa/left{ dir = 4 @@ -30289,33 +30411,12 @@ tag = "icon-stage_stairs" }, /area/centcom/evac) -"ofm" = ( -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "darkgrey" - }, -/area/shuttle/administration) "ofy" = ( /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkyellowcornersalt" }, /area/centcom/supply) -"ofB" = ( -/obj/effect/turf_decal/caution/stand_clear, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkyellowaltstrip" - }, -/area/centcom/zone3) -"ofN" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/table, -/obj/machinery/computer/library/public, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "ofX" = ( /obj/item/flag/syndi, /obj/machinery/light/small, @@ -30356,21 +30457,6 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/jail) -"ogL" = ( -/obj/structure/urinal{ - pixel_y = 32 - }, -/obj/machinery/door_control/secure{ - id = "CC_toilet_unit1"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4; - pixel_x = 25 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/centcom/evac) "ogO" = ( /obj/structure/table, /obj/item/folder/red, @@ -30392,12 +30478,6 @@ icon_state = "fancy-wood-oak" }, /area/ninja/outpost) -"ohc" = ( -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkbluealt" - }, -/area/centcom/specops) "ohh" = ( /obj/structure/flora/rock/jungle, /obj/structure/flora/grass/jungle, @@ -30409,11 +30489,6 @@ icon_state = "darkredaltstrip" }, /area/centcom/zone3) -"ohw" = ( -/obj/structure/window/full/shuttle, -/obj/structure/grille, -/turf/simulated/floor/shuttle/plating, -/area/shuttle/transport) "ohG" = ( /obj/machinery/door/airlock/centcom{ name = "Medical Block"; @@ -30430,37 +30505,12 @@ /obj/machinery/photocopier, /turf/simulated/floor/wood, /area/centcom/zone2) -"ohL" = ( -/obj/structure/grille, -/obj/structure/window/full/shuttle, -/turf/simulated/floor/shuttle/plating, -/area/shuttle/transport) "ohN" = ( /obj/machinery/hydroponics/constructable{ layer = 3.2 }, /turf/simulated/floor/grass, /area/centcom/evac) -"oih" = ( -/obj/effect/decal/remains, -/obj/effect/turf_decal/tile/neutral{ - alpha = 100; - icon_state = "seadeep"; - layer = 9; - icon = 'icons/misc/beach.dmi' - }, -/obj/item/fish/goldfish{ - pixel_y = 10; - pixel_x = 16 - }, -/obj/structure/window/reinforced/survival_pod{ - dir = 5; - pixel_x = -32; - pixel_y = -32; - density = 0 - }, -/turf/simulated/floor/indestructible/beach/water/deep/sand_floor, -/area/centcom/zone2) "oiv" = ( /obj/machinery/mineral/labor_claim_console{ pixel_x = 30; @@ -30520,95 +30570,30 @@ color = "red" }, /obj/machinery/conveyor{ - id = "SFBQMLoad2"; - dir = 1 + dir = 1; + id = "SFBQMLoad2" }, /turf/simulated/floor/plasteel{ icon_state = "darkfull" }, /area/syndicate_mothership/cargo) -"oiL" = ( -/obj/structure/window/reinforced{ +"okh" = ( +/obj/structure/flora/tree/jungle, +/obj/structure/flora/ausbushes/lavendergrass, +/turf/simulated/floor/indestructible/grass, +/area/syndicate_mothership/outside) +"oks" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; dir = 1 }, -/obj/structure/shuttle/engine/heater, -/turf/simulated/floor/plating/airless, -/area/shuttle/supply) -"oiM" = ( -/obj/effect/turf_decal/stripes/line{ - icon = 'icons/turf/floors.dmi'; - icon_state = "siding8" - }, -/obj/effect/turf_decal/tile/neutral{ - alpha = 75; - color = "black"; - icon_state = "tile_full" - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "rampbottom" - }, -/area/centcom/supply) -"oiP" = ( -/obj/item/flag/nt, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/bridge) -"oja" = ( -/obj/effect/decal/warning_stripes/north, -/obj/effect/turf_decal/tile/neutral{ - alpha = 180; - color = "black"; - icon_state = "tile_full"; - layer = 9 - }, -/turf/simulated/floor/plating, -/area/centcom/supply) -"oji" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/stripes/black{ - dir = 8; - do_not_delete_me = 1 - }, -/turf/simulated/floor/shuttle{ - icon_state = "vfloor" - }, -/area/shuttle/administration) -"okh" = ( -/obj/structure/flora/tree/jungle, -/obj/structure/flora/ausbushes/lavendergrass, -/turf/simulated/floor/indestructible/grass, -/area/syndicate_mothership/outside) -"oku" = ( -/obj/structure/sign/poster/official/space_cops{ - pixel_y = -32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkredalt" - }, -/area/centcom/jail) -"okw" = ( -/obj/item/radio/intercom/specops{ - pixel_x = -32; - pixel_y = 32 - }, -/obj/item/paper_bin/nanotrasen{ - pixel_x = 3; - pixel_y = 12 - }, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/centcom/zone3) -"okx" = ( -/obj/machinery/door/airlock/shuttle{ - id_tag = "s_docking_airlock"; - name = "Labor Shuttle Airlock"; - req_access = list(2) +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) +"okx" = ( +/obj/machinery/door/airlock/shuttle{ + id_tag = "s_docking_airlock"; + name = "Labor Shuttle Airlock"; + req_access = list(2) }, /obj/structure/fans/tiny, /turf/simulated/floor/shuttle{ @@ -30625,17 +30610,6 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"okK" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/turf_decal/siding/blue/corner{ - color = "#444444"; - dir = 8 - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "okO" = ( /obj/machinery/door/airlock/hatch/syndicate{ name = "Syndicate Base" @@ -30655,14 +30629,6 @@ "okZ" = ( /turf/simulated/floor/carpet/red, /area/ninja/outpost) -"ole" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/secure_data/laptop, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkredalt" - }, -/area/centcom/jail) "olg" = ( /obj/machinery/kitchen_machine/oven/upgraded, /turf/simulated/floor/plating{ @@ -30674,37 +30640,26 @@ "olk" = ( /obj/machinery/syndiepad/loadpad, /obj/machinery/conveyor/inverted{ - id = "SFBQMLoad2"; - dir = 6 + dir = 6; + id = "SFBQMLoad2" }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "dark" }, /area/syndicate_mothership/cargo) -"olu" = ( -/obj/structure/curtain/open/shower/centcom, -/turf/simulated/wall/indestructible/fakeglass, -/area/centcom/zone2) "olI" = ( /obj/machinery/computer/operating, /turf/simulated/floor/plasteel{ icon_state = "darkfull" }, /area/syndicate_mothership/jail) -"olU" = ( -/obj/item/flag/nt, -/turf/simulated/floor/wood, -/area/centcom/zone3) -"omf" = ( -/obj/structure/table/wood{ - color = "#996633" - }, -/obj/item/paper_bin/nanotrasen{ - pixel_x = -2; - pixel_y = 8 +"omd" = ( +/turf/simulated/floor/plasteel{ + color = "gray"; + dir = 8; + icon_state = "rampbottom" }, -/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "omh" = ( /obj/structure/table, @@ -30717,6 +30672,11 @@ icon_state = "barber" }, /area/centcom/jail) +"omz" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/light, +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "omB" = ( /obj/machinery/kitchen_machine/grill/upgraded, /obj/effect/turf_decal/tile/neutral{ @@ -30730,27 +30690,10 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) -"omF" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/nt_droppod) -"omG" = ( -/obj/machinery/light/spot, -/turf/simulated/floor/shuttle, -/area/shuttle/supply) "omJ" = ( /obj/structure/chair/sofa/right, /turf/simulated/floor/carpet, /area/centcom/evac) -"omP" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8; - icon_state = "burst_l" - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/transport) "ona" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -30760,16 +30703,17 @@ "onc" = ( /turf/simulated/wall/indestructible/reinforced, /area/centcom/zone1) -"ono" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/space, -/area/space) "ont" = ( /obj/machinery/washing_machine, /turf/simulated/floor/plasteel{ icon_state = "barber" }, /area/centcom/jail) +"onE" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkyellow" + }, +/area/centcom/specops) "onS" = ( /obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ @@ -30777,6 +30721,12 @@ tag = "icon-redfull (NORTHWEST)" }, /area/centcom/zone1) +"ook" = ( +/obj/structure/closet/walllocker{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel/freezer, +/area/centcom/specops) "oor" = ( /obj/machinery/door_control/secure{ id = "Aspid_deck"; @@ -30789,6 +30739,15 @@ icon_state = "darkyellowalt" }, /area/syndicate_mothership/cargo) +"ooy" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/machinery/computer/message_monitor/laptop, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "ooz" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 8 @@ -30798,6 +30757,35 @@ }, /turf/simulated/floor/carpet/green, /area/ninja/outpost) +"ooD" = ( +/obj/structure/sink{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/centcom/specops) +"ooE" = ( +/obj/structure/dispenser/oxygen, +/obj/effect/turf_decal/stripes/black{ + dir = 8; + do_not_delete_me = 1 + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "podfloor_dark" + }, +/area/shuttle/administration) +"ooF" = ( +/obj/machinery/door/window/brigdoor{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/centcom/zone3) "ooP" = ( /obj/structure/curtain/open/shower, /obj/machinery/shower{ @@ -30830,6 +30818,24 @@ tag = "icon-stage_stairs" }, /area/syndicate_mothership) +"opi" = ( +/obj/structure/closet/cardboard{ + icon_closed = "cardboard_cargo"; + icon_opened = "cardboard_cargo_open"; + icon_state = "cardboard_cargo" + }, +/mob/living/simple_animal/hostile/mimic{ + faction = list("neutral"); + name = "Archivist" + }, +/turf/simulated/floor/plating, +/area/centcom/zone2) +"opw" = ( +/obj/machinery/vending/coffee, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "opx" = ( /obj/machinery/gibber, /turf/simulated/floor/plating{ @@ -30853,34 +30859,6 @@ }, /turf/simulated/floor/carpet/red, /area/syndicate_mothership/control) -"oqa" = ( -/obj/structure/bookcase/manuals, -/obj/item/book/manual/security_space_law{ - pixel_x = 3 - }, -/obj/item/book/manual/security_space_law{ - pixel_x = 3 - }, -/obj/item/book/manual/security_space_law/black{ - pixel_x = -4 - }, -/obj/item/book/manual/security_space_law/black{ - pixel_x = -4 - }, -/obj/item/book/manual/security_space_law/black{ - pixel_x = -4 - }, -/obj/item/book/manual/security_space_law/black{ - pixel_x = -4 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/turf_decal/siding/yellow{ - dir = 8 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone3) "oqC" = ( /obj/structure/curtain/open/shower, /obj/machinery/shower{ @@ -30892,9 +30870,6 @@ icon_state = "white" }, /area/centcom/zone1) -"oqI" = ( -/turf/simulated/floor/carpet/red, -/area/shuttle/administration) "orb" = ( /obj/machinery/kitchen_machine/candy_maker/upgraded, /obj/effect/turf_decal/tile/neutral{ @@ -30916,23 +30891,11 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) -"orL" = ( -/obj/effect/turf_decal/stripes/black{ - do_not_delete_me = 1 - }, -/obj/effect/turf_decal/stripes/black{ - dir = 1; - do_not_delete_me = 1 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "white" - }, +"orF" = ( +/obj/structure/table/reinforced, +/obj/machinery/chem_dispenser/beer/upgraded, +/turf/simulated/floor/carpet/black, /area/shuttle/administration) -"orN" = ( -/obj/structure/curtain/black, -/turf/simulated/floor/plasteel/freezer, -/area/centcom/specops) "osm" = ( /obj/structure/kitchenspike, /obj/effect/turf_decal/tile/neutral{ @@ -30946,6 +30909,16 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) +"oso" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/flag/nt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) "osp" = ( /obj/effect/decal/nanotrasen_logo{ icon_state = "logo4" @@ -30963,10 +30936,6 @@ icon_state = "grimy" }, /area/centcom/zone1) -"osD" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/simulated/floor/plating/airless, -/area/shuttle/escape) "osE" = ( /obj/structure/table/reinforced, /obj/item/kitchen/knife, @@ -30996,6 +30965,16 @@ name = "floor" }, /area/syndicate_mothership/elite_squad) +"osM" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "dark" + }, +/area/shuttle/administration) "otg" = ( /obj/structure/table/reinforced, /obj/machinery/reagentgrinder{ @@ -31019,45 +30998,6 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) -"otn" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - req_access = list(114) - }, -/obj/item/clothing/suit/judgerobe{ - name = "Supreme judge's robe" - }, -/obj/item/card/id/centcom{ - icon_state = "deathsquad"; - name = "Supreme Judge ID card"; - pixel_x = -3; - pixel_y = -3; - registered_name = "Supreme Judge" - }, -/obj/item/clothing/head/powdered_wig{ - desc = null; - name = "Supreme judge wig" - }, -/obj/item/clothing/under/suit_jacket/really_black{ - name = "Supreme judge suit" - }, -/obj/item/clothing/shoes/centcom{ - desc = null; - name = "Dress shoes" - }, -/obj/item/clothing/gloves/color/white{ - desc = null; - name = "Supreme judge gloves" - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) -"otz" = ( -/obj/structure/decorative_structures/metal/statue/metal_angel, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/carpet, -/area/centcom/evac) "otA" = ( /obj/machinery/light{ dir = 8 @@ -31077,19 +31017,6 @@ }, /turf/simulated/floor/carpet/royalblack, /area/shuttle/trade/sol) -"otJ" = ( -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/wood, -/area/centcom/zone2) -"otM" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/transport) "ouC" = ( /obj/structure/closet/secure_closet/engineering_electrical{ req_access = list(159) @@ -31108,15 +31035,6 @@ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' }, /area/shuttle/vox) -"ouP" = ( -/obj/machinery/light/spot{ - dir = 1 - }, -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/transport) "ova" = ( /obj/effect/turf_decal/weather/snow/corner{ dir = 8 @@ -31132,6 +31050,35 @@ icon_state = "white" }, /area/centcom/jail) +"ovk" = ( +/obj/structure/table/glass, +/obj/item/flashlight/lamp/green{ + pixel_x = -6; + pixel_y = 16 + }, +/obj/item/paper_bin/nanotrasen{ + pixel_x = -2; + pixel_y = 8 + }, +/obj/item/pen/fancy{ + pixel_x = 8 + }, +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) +"ovu" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-34"; + tag = "icon-plant-34" + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "ovv" = ( /obj/effect/turf_decal/stripes/gold{ dir = 8 @@ -31154,13 +31101,6 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/infteam) -"ovB" = ( -/obj/machinery/light/spot{ - dir = 1 - }, -/obj/structure/closet/crate, -/turf/simulated/floor/shuttle, -/area/shuttle/transport) "ovE" = ( /obj/machinery/mineral/stacking_machine/laborstacker{ input_dir = 2; @@ -31171,6 +31111,26 @@ icon_state = "dark" }, /area/shuttle/siberia) +"ovI" = ( +/obj/structure/closet/acloset{ + desc = "It's a basic storage unit."; + name = "Undercover officer's closet" + }, +/obj/item/flashlight, +/obj/item/encryptionkey/centcom, +/obj/item/radio/headset, +/obj/item/organ/internal/cyberimp/arm/combat/centcom, +/obj/item/autoimplanter/old, +/obj/item/clothing/gloves/color/yellow/power, +/obj/item/storage/belt/utility/full/multitool, +/obj/item/clothing/shoes/chameleon/noslip, +/obj/item/clothing/under/color/black, +/obj/item/implanter/dust, +/obj/item/storage/box/engineer{ + name = "Survival kit" + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "ovM" = ( /obj/structure/closet/crate/syndicate{ pixel_x = 4; @@ -31182,23 +31142,10 @@ icon_state = "darkyellowalt" }, /area/syndicate_mothership/cargo) -"ovZ" = ( -/obj/structure/table/wood, -/obj/item/book/manual/security_space_law/black{ - pixel_x = -4 - }, -/obj/item/book/manual/security_space_law{ - pixel_x = 3 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, +"ovR" = ( +/obj/structure/filingcabinet/chestdrawer, /turf/simulated/floor/carpet, -/area/centcom/zone3) +/area/centcom/specops) "owc" = ( /obj/item/flag/syndi, /turf/simulated/floor/plasteel{ @@ -31206,30 +31153,6 @@ icon_state = "darkred" }, /area/syndicate_mothership/infteam) -"owf" = ( -/obj/machinery/door_control/secure{ - id = "ShitRainSupply"; - pixel_x = -24; - pixel_y = -24 - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "navybluealt" - }, -/area/centcom/specops) -"owg" = ( -/obj/machinery/mass_driver{ - dir = 4; - id_tag = "ASSAULT1"; - name = "gravpult" - }, -/obj/effect/turf_decal/loading_area/white{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "owl" = ( /obj/structure/window/reinforced{ dir = 1 @@ -31265,13 +31188,6 @@ icon_state = "darkred" }, /area/syndicate_mothership/infteam) -"owz" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) "owD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/fans/tiny/invisible, @@ -31280,13 +31196,6 @@ icon_state = "warndarkgreyred" }, /area/syndicate_mothership) -"owS" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/evac) "owX" = ( /obj/effect/turf_decal{ dir = 4; @@ -31301,24 +31210,14 @@ icon_state = "darkgrey" }, /area/syndicate_mothership) -"oxE" = ( -/obj/machinery/door/airlock/shuttle{ - aiControlDisabled = 1; - id_tag = "s_docking_airlock"; - name = "Emergency Droppod"; - req_access = list(109) - }, -/obj/docking_port/mobile/assault_pod/nt, -/obj/docking_port/stationary{ - dwidth = 3; - height = 7; - name = "Emerjency droppod dock"; - id = "shit_rain_base"; - width = 7; - pixel_y = -32 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/nt_droppod) +"oxw" = ( +/obj/structure/table/wood, +/obj/item/book/manual/security_space_law, +/obj/item/paper_bin/nanotrasen, +/obj/item/pen, +/obj/structure/window/reinforced, +/turf/simulated/floor/carpet, +/area/centcom/zone3) "oxJ" = ( /turf/simulated/floor/plasteel{ icon_state = "darkfull" @@ -31339,15 +31238,6 @@ icon_state = "floor13" }, /area/shuttle/ninja) -"oyd" = ( -/obj/structure/bed, -/obj/item/bedsheet/red, -/obj/effect/mine/sound/bwoink{ - layer = 2.9; - alpha = 0 - }, -/turf/simulated/floor/carpet/arcade, -/area/centcom/zone1) "oyw" = ( /obj/effect/turf_decal{ dir = 9; @@ -31358,28 +31248,19 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"ozw" = ( -/obj/structure/sign/securearea{ - pixel_y = -32 - }, +"ozy" = ( +/obj/machinery/vending/cigarette/free, /turf/simulated/floor/plasteel{ - icon_state = "darkredalt" + icon_state = "dark" + }, +/area/centcom/zone2) +"ozS" = ( +/obj/structure/sign/poster/contraband/hacking_guide{ + pixel_x = -32 }, -/area/centcom/specops) -"ozP" = ( -/obj/item/gun/projectile/automatic/lasercarbine, -/obj/item/gun/projectile/automatic/lasercarbine, -/obj/item/gun/projectile/automatic/lasercarbine, -/obj/item/gun/projectile/automatic/lasercarbine, -/obj/item/gun/projectile/automatic/lasercarbine, -/obj/item/gun/projectile/automatic/lasercarbine, -/obj/item/gun/projectile/automatic/lasercarbine, -/obj/item/gun/projectile/automatic/lasercarbine, -/obj/item/gun/projectile/automatic/lasercarbine, -/obj/structure/rack/gunrack, -/obj/effect/decal/warning_stripes/blue/hollow, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 10; + icon_state = "darkyellow" }, /area/centcom/specops) "ozZ" = ( @@ -31388,12 +31269,13 @@ icon_state = "darkyellowcornersalt" }, /area/centcom/zone3) -"oAE" = ( -/obj/machinery/computer/shuttle/ferry/request{ - req_access = list(101) +"oAH" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" }, -/turf/simulated/floor/shuttle, -/area/shuttle/transport) +/area/centcom/specops) "oBC" = ( /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -31426,42 +31308,53 @@ icon_state = "dark" }, /area/centcom/jail) -"oBX" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 +"oBW" = ( +/obj/effect/turf_decal/arrows/red{ + name = "Armory" + }, +/turf/simulated/floor/indestructible{ + icon_state = "darkgrey" }, +/area/centcom/specops) +"oCh" = ( /obj/structure/window/reinforced{ - dir = 4 + dir = 8 }, +/obj/structure/table, +/obj/item/paper_bin/nanotrasen{ + pixel_x = 3; + pixel_y = 12 + }, +/obj/item/pen/multi/fountain, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) +"oCp" = ( +/obj/machinery/vending/chinese/free, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/zone3) -"oCe" = ( -/obj/structure/window/reinforced/survival_pod{ - dir = 9; - pixel_y = 1; - pixel_x = -1; - density = 0 - }, -/obj/structure/fishingrodcabinet{ - pixel_y = 32; - pixel_x = 3 +/area/centcom/zone2) +"oCD" = ( +/obj/effect/turf_decal/stripes/line{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding8" }, /turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkbluealt" + color = "gray"; + dir = 1; + icon_state = "rampbottom" }, -/area/centcom/zone2) -"oCf" = ( -/obj/structure/filingcabinet/filingcabinet, -/obj/machinery/light_construct/small{ +/area/centcom/supply) +"oCT" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ dir = 8 }, -/turf/simulated/floor/wood, -/area/centcom/zone3) +/obj/item/flag/nt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) "oDi" = ( /obj/effect/turf_decal/caution/stand_clear{ pixel_y = 8 @@ -31492,21 +31385,23 @@ icon = 'icons/turf/walls/fake_plastitanium_glass.dmi' }, /area/syndicate_mothership/control) -"oDK" = ( -/obj/structure/chair/office/dark{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) "oDL" = ( /turf/simulated/floor/plasteel{ dir = 9; icon_state = "darkredaltstrip" }, /area/syndicate_mothership/jail) -"oEs" = ( -/obj/effect/turf_decal/stripes/line{ +"oDS" = ( +/obj/machinery/conveyor/inverted{ + dir = 9; + id = "CC_crate" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) +"oEs" = ( +/obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; icon_state = "siding4" }, @@ -31524,53 +31419,32 @@ tag = "icon-stage_stairs" }, /area/syndicate_mothership) -"oEt" = ( -/obj/item/gun/energy/gun/pdw9{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/item/gun/energy/gun/pdw9, -/obj/item/gun/energy/gun/pdw9{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/item/gun/energy/gun/pdw9{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/item/gun/energy/gun/pdw9, -/obj/item/gun/energy/gun/pdw9, -/obj/structure/rack/gunrack, -/obj/effect/decal/warning_stripes/green/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"oEu" = ( +/obj/structure/shuttle/engine/heater{ + dir = 4; + icon_state = "heater2x2"; + tag = "icon-heater (NORTH)" }, -/area/centcom/specops) -"oEM" = ( -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" +/obj/structure/window/reinforced{ + color = "yellow"; + dir = 8; + layer = 2.9 }, -/area/centcom/jail) +/turf/simulated/floor/plating/airless, +/area/shuttle/trade/sol) "oEQ" = ( /obj/structure/chair/sofa/right, /turf/simulated/floor/carpet, /area/centcom/zone1) -"oET" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/machinery/light{ - dir = 8 +"oFz" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/newscaster/security_unit{ + pixel_y = -32 }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_4) -"oFo" = ( -/obj/machinery/light/small{ - dir = 4; - tag = "icon-bulb1 (EAST)" +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/turf/simulated/floor/shuttle, -/area/shuttle/nt_droppod) +/area/centcom/bridge) "oFF" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo5" @@ -31581,41 +31455,67 @@ /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership) "oFJ" = ( -/turf/space/transit/west{ - icon_state = "speedspace_ew_1" +/obj/machinery/recharger/wallcharger{ + pixel_x = -24; + pixel_y = -12 }, -/area/space) -"oFN" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 +/obj/machinery/recharger/wallcharger{ + pixel_x = -24; + pixel_y = -2 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/machinery/recharger/wallcharger{ + pixel_x = -24; + pixel_y = 8 }, -/area/centcom/specops) +/turf/simulated/floor/shuttle{ + icon_state = "floor4" + }, +/area/shuttle/gamma) +"oFM" = ( +/obj/structure/chair/sofa/right, +/obj/effect/mine/sound/bwoink{ + alpha = 0; + layer = 2.9 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone1) "oFO" = ( /obj/effect/turf_decal/stripes/gold{ dir = 10 }, /turf/simulated/floor/carpet/black, /area/centcom/bridge) -"oFR" = ( +"oGK" = ( /obj/structure/window/reinforced{ - dir = 8; - layer = 2.9 + dir = 8 }, -/obj/machinery/light{ - dir = 1 +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/evac) +"oGQ" = ( +/obj/structure/rack/gunrack, +/obj/effect/decal/warning_stripes/green/hollow, +/obj/item/gun/energy/gun/pdw9{ + pixel_x = -6 }, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) -"oGC" = ( -/obj/effect/decal/warning_stripes/west, -/obj/machinery/door/window/brigdoor/eastleft{ - dir = 8; - name = "CentComm Chemical lab" +/obj/item/gun/energy/gun/pdw9{ + pixel_x = -6 + }, +/obj/item/gun/energy/gun/pdw9{ + pixel_x = -6 + }, +/obj/item/gun/energy/gun/pdw9{ + pixel_x = 6 + }, +/obj/item/gun/energy/gun/pdw9{ + pixel_x = 6 + }, +/obj/item/gun/energy/gun/pdw9{ + pixel_x = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/turf/simulated/floor/engine, /area/centcom/specops) "oGU" = ( /obj/structure/filingcabinet/filingcabinet, @@ -31629,6 +31529,18 @@ }, /turf/simulated/floor/shuttle, /area/shuttle/siberia) +"oHO" = ( +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkbluealt" + }, +/area/centcom/specops) +"oHS" = ( +/obj/structure/closet/crate/can, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone2) "oHZ" = ( /obj/machinery/door/airlock/hatch/syndicate{ name = "Syndicate Base" @@ -31663,20 +31575,13 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"oIN" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "CC_Armory_DEDI" - }, -/obj/machinery/door/poddoor/impassable/preopen{ - id_tag = "ERT_Quarantine"; - name = "ERT Quarantine" - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "navybluealt" +"oIM" = ( +/obj/structure/decorative_structures/metal/statue/metal_angel, +/obj/machinery/light{ + dir = 4 }, -/area/centcom/specops) +/turf/simulated/floor/carpet, +/area/centcom/evac) "oIW" = ( /obj/structure/window/reinforced{ dir = 8 @@ -31686,27 +31591,45 @@ icon_state = "dark" }, /area/centcom/zone1) -"oJg" = ( -/obj/effect/turf_decal/stripes/black{ - dir = 5; - do_not_delete_me = 1 - }, -/obj/effect/turf_decal/stripes/black{ - dir = 10; - do_not_delete_me = 1; - icon_state = "bs_deadlock" - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "white" +"oJc" = ( +/obj/structure/window/reinforced{ + dir = 4 }, -/area/shuttle/administration) +/obj/structure/table, +/obj/machinery/computer/library/public, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "oJi" = ( /obj/machinery/hydroponics/constructable, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, /area/centcom/jail) +"oJm" = ( +/obj/item/gun/projectile/automatic/sniper_rifle, +/obj/item/gun/projectile/automatic/sniper_rifle, +/obj/item/gun/projectile/automatic/sniper_rifle, +/obj/item/gun/projectile/automatic/sniper_rifle, +/obj/item/gun/projectile/automatic/sniper_rifle, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + layer = 2.9; + name = "Sniper Rifle"; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "vault" + }, +/area/centcom/jail) +"oJt" = ( +/obj/item/book/random, +/turf/simulated/floor/wood{ + icon_state = "wood-broken6"; + tag = "icon-wood-broken6" + }, +/area/centcom/zone2) "oJH" = ( /obj/structure/rack, /obj/item/pneumatic_cannon, @@ -31730,6 +31653,17 @@ "oJI" = ( /turf/simulated/wall/shuttle, /area/shuttle/siberia) +"oJP" = ( +/obj/structure/stone_tile/slab/cracked, +/turf/simulated/floor/lava/lava_land_surface, +/area/ruin/space/bubblegum_arena) +"oKa" = ( +/obj/machinery/recharge_station/ert, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "navybluealt" + }, +/area/centcom/specops) "oKt" = ( /obj/machinery/light/small{ dir = 4 @@ -31738,36 +31672,28 @@ icon_state = "darkredcorners" }, /area/syndicate_mothership/infteam) -"oKy" = ( -/obj/machinery/vending/coffee, +"oKG" = ( /turf/simulated/floor/plasteel{ + dir = 1; icon_state = "dark" }, -/area/centcom/specops) -"oKz" = ( -/obj/machinery/status_display{ - pixel_y = -32 - }, -/obj/machinery/photocopier, +/area/centcom/zone1) +"oKH" = ( +/obj/effect/decal/warning_stripes/white/hollow, +/obj/effect/decal/warning_stripes/northwest, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/bridge) -"oKE" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; +/area/centcom/supply) +"oKI" = ( +/obj/machinery/light{ dir = 8 }, -/obj/structure/table/reinforced, -/obj/machinery/computer/message_monitor/laptop, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"oKG" = ( /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "dark" + dir = 8; + icon_state = "darkyellow" }, -/area/centcom/zone1) +/area/centcom/supplypod/loading/two) "oKN" = ( /obj/item/flag/syndi, /obj/structure/curtain/black{ @@ -31775,6 +31701,33 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/infteam) +"oKP" = ( +/obj/structure/closet/crate/hydroponics, +/obj/item/cultivator, +/obj/item/cultivator, +/obj/item/cultivator, +/obj/item/cultivator, +/obj/item/shovel/spade, +/obj/item/shovel/spade, +/obj/item/shovel/spade, +/obj/item/shovel/spade, +/obj/item/hatchet, +/obj/item/hatchet, +/obj/item/hatchet, +/obj/item/hatchet, +/obj/item/seeds/gatfruit, +/obj/item/seeds/cherry/bomb, +/obj/item/seeds/ambrosia/gaia, +/obj/item/seeds/ambrosia/gaia, +/obj/item/seeds/ambrosia/gaia, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/beach/sand{ + icon = 'icons/turf/floors.dmi'; + icon_state = "asteroid" + }, +/area/centcom/evac) "oKU" = ( /obj/effect/turf_decal/stripes/gold{ dir = 10 @@ -31783,21 +31736,36 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/infteam) -"oLJ" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/item/radio/intercom{ - pixel_x = -28 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_1) "oLR" = ( /obj/structure/flora/grass/jungle, /obj/structure/flora/tree/jungle, /obj/structure/flora/ausbushes/lavendergrass, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) +"oLW" = ( +/obj/machinery/door_control/secure{ + id = "gamma shuttle"; + name = "Gamma Armory Shutters"; + pixel_x = 24; + pixel_y = 26; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellowaltstrip" + }, +/area/centcom/supply) +"oMa" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -5 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle, +/turf/simulated/floor/carpet, +/area/centcom/zone3) "oMf" = ( /obj/structure/grille, /obj/structure/window/full/shuttle, @@ -31815,6 +31783,20 @@ }, /turf/simulated/floor/shuttle/plating/vox, /area/shuttle/vox) +"oMB" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table, +/obj/machinery/computer/library/public{ + pixel_x = 1; + pixel_y = 4 + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "oMM" = ( /obj/structure/chair/comfy/red, /turf/simulated/floor/carpet/black, @@ -31830,17 +31812,6 @@ icon_state = "darkredaltstrip" }, /area/centcom/jail) -"oNm" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/effect/turf_decal/siding/white{ - dir = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/evac) "oNF" = ( /obj/effect/decal/warning_stripes/white, /obj/machinery/door/airlock/shuttle{ @@ -31854,6 +31825,15 @@ icon_state = "dark" }, /area/centcom/zone1) +"oNH" = ( +/obj/structure/chair/comfy/beige{ + dir = 4; + layer = 5; + pixel_y = -2 + }, +/obj/effect/turf_decal/siding/brown, +/turf/simulated/floor/carpet/black, +/area/centcom/zone3) "oNI" = ( /obj/effect/turf_decal/stripes/gold, /turf/simulated/floor/wood{ @@ -31903,6 +31883,11 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/control) +"oOk" = ( +/turf/simulated/floor/indestructible{ + icon_state = "darkgreynavyblue" + }, +/area/centcom/specops) "oOt" = ( /turf/simulated/floor/plasteel{ icon_state = "darkyellowalt" @@ -31937,6 +31922,35 @@ icon_state = "navybluealt" }, /area/syndicate_mothership/control) +"oOK" = ( +/obj/structure/window/reinforced/survival_pod{ + density = 0; + dir = 6; + pixel_x = 1; + pixel_y = -1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkbluealt" + }, +/area/centcom/zone2) +"oON" = ( +/obj/machinery/computer/secure_data, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkredfull" + }, +/area/centcom/bridge) +"oOQ" = ( +/obj/machinery/photocopier, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "oOS" = ( /obj/structure/table/wood, /obj/structure/window/reinforced{ @@ -31965,6 +31979,12 @@ icon_state = "darkfull" }, /area/syndicate_mothership/jail) +"oPk" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/four) "oPx" = ( /obj/structure/chair/comfy/shuttle{ dir = 8 @@ -31987,29 +32007,15 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/control) -"oPN" = ( -/obj/structure/table/wood, +"oPU" = ( +/obj/machinery/computer/station_alert, /obj/structure/window/reinforced{ - dir = 8 + dir = 4 }, -/obj/item/reagent_containers/food/drinks/drinkingglass{ - pixel_x = -5 +/obj/item/radio/intercom/specops{ + pixel_y = 32 }, -/obj/item/reagent_containers/glass/beaker/waterbottle, /turf/simulated/floor/carpet, -/area/centcom/zone3) -"oQb" = ( -/obj/structure/dresser, -/obj/structure/mirror/magic{ - desc = null; - name = "mirror"; - pixel_x = -32 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 - }, -/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "oQl" = ( /obj/effect/turf_decal/siding/wood{ @@ -32025,10 +32031,12 @@ icon_state = "darkred" }, /area/shuttle/escape) -"oQS" = ( -/obj/structure/chair/stool/bar, -/turf/simulated/floor/carpet/red, -/area/shuttle/administration) +"oQO" = ( +/obj/machinery/vending/snack{ + pixel_y = 8 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "oQV" = ( /turf/simulated/wall/shuttle/onlyselfsmooth, /area/shuttle/mining) @@ -32043,6 +32051,13 @@ tag = "icon-stage_stairs" }, /area/syndicate_mothership/cargo) +"oRk" = ( +/obj/item/twohanded/required/kirbyplants{ + pixel_y = 8 + }, +/obj/structure/table, +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "oRn" = ( /obj/effect/turf_decal{ icon_state = "golden_stripes" @@ -32080,48 +32095,6 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/infteam) -"oRw" = ( -/obj/machinery/door/airlock/external{ - id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access = list(150) - }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "syndicate_sit_1"; - name = "Side Hull Door"; - opacity = 0; - req_access = list(150) - }, -/obj/structure/fans/tiny, -/obj/machinery/door_control/secure{ - id = "syndicate_sit_1"; - name = "Blast Doors"; - pixel_y = -23; - req_access = list(150) - }, -/obj/docking_port/mobile{ - dir = 4; - dwidth = 7; - height = 5; - id = "sit"; - name = "SIT shuttle"; - roundstart_move = "sit_away"; - width = 11 - }, -/obj/docking_port/stationary/transit{ - dir = 4; - dwidth = 7; - height = 5; - id = "sit_transit"; - name = "sit in transit"; - pixel_x = -32; - turf_type = /turf/space/transit/south; - width = 11 - }, -/turf/simulated/floor/shuttle/plating, -/area/shuttle/syndicate_sit) "oRB" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -32140,23 +32113,17 @@ "oRV" = ( /turf/simulated/floor/beach/sand, /area/centcom/evac) +"oSm" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" + }, +/area/centcom/jail) "oSq" = ( /obj/structure/flora/tree/jungle, /obj/structure/flora/junglebush/b, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"oSr" = ( -/obj/structure/bookcase/manuals, -/obj/item/book/manual/sop_security, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"oSA" = ( -/obj/machinery/light/spot, -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/transport) "oSZ" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -32171,6 +32138,11 @@ /obj/structure/flora/grass/jungle/b, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) +"oTf" = ( +/obj/structure/grille, +/obj/structure/window/full/shuttle, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/transport) "oTy" = ( /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -32178,6 +32150,67 @@ }, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) +"oTI" = ( +/obj/effect/decal/warning_stripes/northeastsouth, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "ERT_armory_lvl3"; + layer = 5; + name = "Armory level 3" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" + }, +/area/centcom/specops) +"oTM" = ( +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_x = 32 + }, +/obj/structure/window/reinforced, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-22"; + tag = "icon-plant-22" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) +"oTY" = ( +/obj/machinery/computer/security{ + network = list("SS13","Telecomms","Research Outpost","Mining Outpost","ERT","CentComm","Thunderdome") + }, +/obj/structure/railing{ + layer = 4.3; + pixel_y = 32 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkredfull" + }, +/area/centcom/bridge) +"oUi" = ( +/obj/structure/table/reinforced, +/obj/item/pizzabox/meat, +/obj/item/pizzabox/meat, +/obj/item/pizzabox/meat, +/obj/item/pizzabox/meat, +/obj/item/pizzabox/margherita, +/obj/item/pizzabox/margherita, +/obj/item/pizzabox/margherita, +/obj/item/pizzabox/hawaiian, +/obj/item/pizzabox/hawaiian, +/obj/item/pizzabox/hawaiian, +/obj/item/pizzabox/vegetable, +/obj/item/pizzabox/vegetable, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "oUj" = ( /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -32186,16 +32219,6 @@ /obj/structure/flora/tree/jungle/small, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"oUl" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/effect/turf_decal/box/white/corners, -/obj/structure/weightmachine/stacklifter, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" - }, -/area/centcom/jail) "oUm" = ( /obj/structure/closet/secure_closet/freezer/kitchen, /obj/item/reagent_containers/food/condiment/flour, @@ -32209,6 +32232,14 @@ tag = "icon-redfull (NORTHWEST)" }, /area/centcom/jail) +"oUw" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "N2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "oUA" = ( /obj/structure/table, /obj/item/paper_bin/nanotrasen{ @@ -32219,24 +32250,22 @@ /turf/simulated/floor/wood, /area/centcom/zone2) "oUC" = ( -/obj/structure/sign/poster/official/space_cops{ - pixel_x = -32 +/obj/machinery/recharger/wallcharger{ + pixel_x = 32; + pixel_y = -12 }, -/turf/simulated/floor/indestructible{ - dir = 9; - icon_state = "darkgreynavyblue" +/obj/machinery/recharger/wallcharger{ + pixel_x = 32; + pixel_y = 8 }, -/area/centcom/specops) -"oUG" = ( -/obj/machinery/light/spot, -/obj/structure/chair/comfy/shuttle{ - dir = 4 +/obj/machinery/recharger/wallcharger{ + pixel_x = 32; + pixel_y = -2 }, -/obj/item/radio/intercom{ - pixel_y = -26 +/turf/simulated/floor/shuttle{ + icon_state = "floor4" }, -/turf/simulated/floor/shuttle, -/area/shuttle/transport) +/area/shuttle/gamma) "oUX" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -32253,73 +32282,21 @@ icon_state = "white" }, /area/centcom/jail) -"oVq" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 - }, -/obj/effect/turf_decal/siding{ - color = "#444444" - }, -/turf/simulated/floor/glass/reinforced, -/area/centcom/specops) -"oVu" = ( -/obj/machinery/door/airlock/external{ - id_tag = "supply_away"; - name = "Central Command Supply"; - req_access = list(31); - hackProof = 1 - }, -/obj/machinery/door/poddoor{ - id_tag = "CC_supply_space"; - locked = 2; - name = "Supply Blastdoor" - }, -/obj/structure/fans/tiny, -/obj/effect/decal/warning_stripes/white, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"oVm" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "CC_Armory_NG" }, -/area/centcom/supply) -"oVx" = ( -/obj/machinery/vending/clothing, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/supply) -"oVy" = ( -/obj/effect/turf_decal/loading_area/white{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/south, -/obj/effect/turf_decal/tile/neutral{ - alpha = 100; - color = "black"; - icon_state = "tile_full"; - layer = 9 - }, -/turf/simulated/floor/plating, -/area/centcom/supply) +/area/centcom/specops) "oVF" = ( /turf/simulated/floor/plasteel{ dir = 5; icon_state = "darkredaltstrip" }, /area/syndicate_mothership/jail) -"oVN" = ( -/obj/structure/sign/poster/official/nanotrasen_logo{ - pixel_x = 32; - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "navybluecornersalt" - }, -/area/centcom/specops) "oVV" = ( /obj/effect/turf_decal{ dir = 6; @@ -32343,24 +32320,13 @@ icon_state = "dark" }, /area/syndicate_mothership/elite_squad) -"oWj" = ( -/obj/effect/turf_decal/tile/neutral{ - color = "black"; - icon_state = "tile_full"; - layer = 9 - }, -/obj/effect/step_trigger/teleporter{ - teleport_x = 175; - teleport_y = 63; - teleport_z = 1; - icon = 'icons/mob/screen_gen.dmi'; - icon_state = "x2" - }, -/turf/simulated/floor/plasteel{ - color = "gray"; - dir = 8; - icon_state = "rampbottom" +"oWf" = ( +/obj/structure/closet/crate/can, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 }, +/turf/simulated/floor/carpet/black, /area/centcom/specops) "oWo" = ( /obj/machinery/kitchen_machine/candy_maker, @@ -32381,19 +32347,6 @@ icon_state = "navybluecornersalt" }, /area/centcom/specops) -"oWv" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "CC_Armory_DEDI" - }, -/obj/machinery/door/poddoor/impassable/preopen{ - id_tag = "ERT_Quarantine"; - name = "ERT Quarantine" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "oWS" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -32412,16 +32365,6 @@ icon_state = "freezerfloor" }, /area/centcom/jail) -"oXC" = ( -/obj/structure/railing, -/obj/machinery/computer/communications, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/bridge) "oXD" = ( /obj/machinery/vending/tool, /obj/machinery/light/small{ @@ -32432,6 +32375,15 @@ icon_state = "dark" }, /area/syndicate_mothership/elite_squad) +"oXE" = ( +/obj/structure/sign/poster/official/nanotrasen_logo{ + icon = 'icons/obj/decals.dmi'; + icon_state = "ntsing_alt5" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "oXI" = ( /obj/structure/window/reinforced{ dir = 1 @@ -32443,37 +32395,6 @@ icon_state = "seadeep" }, /area/centcom/evac) -"oXT" = ( -/obj/structure/closet/crate/can, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/centcom/zone2) -"oXZ" = ( -/obj/machinery/door/airlock/centcom{ - id_tag = "adminshuttle"; - name = "Bridge"; - opacity = 1; - req_access = list(101) - }, -/turf/simulated/floor/wood, -/area/centcom/zone2) -"oYw" = ( -/obj/machinery/computer/supplycomp{ - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkyellowalt" - }, -/area/centcom/supply) -"oYW" = ( -/obj/structure/shuttle/engine/heater{ - icon_state = "heater3x3"; - tag = "icon-heater (NORTH)" - }, -/turf/simulated/floor/plating/airless, -/area/centcom/jail) "oZd" = ( /obj/machinery/vending/wallmed/syndicate{ pixel_y = 32 @@ -32495,42 +32416,28 @@ icon_state = "dark" }, /area/syndicate_mothership/jail) -"oZI" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 - }, -/obj/effect/turf_decal/siding{ - color = "#444444" +"oZM" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkbluecornersalt" }, -/turf/simulated/floor/glass, -/area/centcom/zone3) +/area/centcom/specops) "oZR" = ( /obj/structure/chair/wood{ dir = 1 }, /turf/simulated/floor/carpet, /area/centcom/evac) -"pan" = ( -/obj/machinery/light/spot, -/obj/structure/closet/crate, -/turf/simulated/floor/shuttle, -/area/shuttle/transport) -"paN" = ( -/obj/structure/disposalpipe/segment, -/turf/simulated/wall/indestructible/reinforced, -/area/centcom/zone3) +"paz" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/two) "pbe" = ( /obj/structure/closet/crate/can, /turf/simulated/floor/wood, /area/centcom/zone2) -"pbs" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/cryopod, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/zone1) "pbE" = ( /obj/structure/bookcase/manuals, /obj/item/book/manual/sop_service, @@ -32539,19 +32446,6 @@ }, /turf/simulated/floor/wood, /area/centcom/zone2) -"pbI" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 6 - }, -/turf/simulated/floor/glass/reinforced, -/area/centcom/evac) -"pbK" = ( -/obj/machinery/iv_drip, -/turf/simulated/floor/shuttle{ - icon_state = "floor3" - }, -/area/shuttle/administration) "pbN" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -32580,15 +32474,15 @@ icon_state = "white" }, /area/centcom/zone1) -"pci" = ( -/obj/machinery/computer/bsa_control/admin{ - integrity_failure = 20; - req_access = list(114) +"pcr" = ( +/obj/effect/decal/warning_stripes/northeastsouth, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 1; + id_tag = "CC_Armory_Grenade" }, -/obj/machinery/light/small{ - dir = 4 +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" }, -/turf/simulated/floor/carpet/black, /area/centcom/specops) "pcw" = ( /obj/structure/window/reinforced{ @@ -32606,14 +32500,6 @@ icon_state = "dark" }, /area/syndicate_mothership/elite_squad) -"pdi" = ( -/obj/machinery/vending/cigarette, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault"; - tag = "icon-vault (WEST)" - }, -/area/centcom/specops) "pdl" = ( /obj/machinery/vending/toyliberationstation{ contraband = null; @@ -32634,6 +32520,13 @@ icon_state = "dark" }, /area/syndicate_mothership/elite_squad) +"pdE" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/zone1) "pdO" = ( /obj/machinery/vending/suitdispenser, /turf/simulated/floor/plasteel{ @@ -32689,45 +32582,23 @@ }, /turf/simulated/floor/shuttle, /area/shuttle/siberia) -"peS" = ( -/turf/simulated/wall/shuttle/onlyselfsmooth, -/area/shuttle/pod_4) -"peW" = ( -/obj/structure/closet/secure_closet/guncabinet{ - layer = 2.9; - name = "combat shotgun" - }, -/obj/machinery/status_display{ - layer = 4; - pixel_y = 32 - }, -/obj/machinery/light/spot{ - dir = 8; - tag = "icon-tube1 (WEST)" - }, -/obj/item/ammo_box/shotgun/buck, -/obj/item/ammo_box/shotgun/buck, -/obj/item/ammo_box/shotgun/buck, -/obj/item/gun/projectile/shotgun/automatic/combat, -/obj/item/gun/projectile/shotgun/automatic/combat, -/obj/item/gun/projectile/shotgun/automatic/combat, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" +"peY" = ( +/obj/docking_port/stationary{ + dir = 2; + dwidth = 5; + height = 7; + id = "supply_away"; + name = "supply centcom"; + turf_type = /turf/simulated/floor/plating/airless; + width = 12 }, -/area/shuttle/gamma) -"peZ" = ( -/obj/structure/chair/sofa/corp/right, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkredalt" +/obj/docking_port/mobile/supply{ + dir = 2; + port_direction = 4; + preferred_direction = 8 }, -/area/centcom/specops) +/turf/simulated/wall/shuttle, +/area/shuttle/supply) "pff" = ( /obj/machinery/pdapainter, /obj/structure/curtain/black{ @@ -32741,28 +32612,6 @@ }, /turf/simulated/floor/carpet, /area/centcom/evac) -"pfP" = ( -/obj/structure/table, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/item/flashlight/lamp/green, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/carpet, -/area/centcom/zone2) -"pga" = ( -/obj/effect/decal/warning_stripes/south, -/obj/effect/turf_decal/tile/neutral{ - alpha = 200; - color = "black"; - icon_state = "tile_full"; - layer = 9; - opacity = 1 - }, -/turf/simulated/floor/plating, -/area/centcom/supply) "pgl" = ( /obj/item/flag/species/human, /turf/simulated/floor/plasteel{ @@ -32776,6 +32625,22 @@ icon_state = "darkyellow" }, /area/centcom/specops) +"pgu" = ( +/obj/machinery/cryopod/robot, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "navyblue" + }, +/area/centcom/specops) +"pgz" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellowalt" + }, +/area/centcom/supply) "phK" = ( /obj/effect/decal/syndie_logo, /obj/effect/turf_decal/stripes/black{ @@ -32787,15 +32652,18 @@ /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/grass, /area/centcom/evac) -"phW" = ( -/obj/machinery/light{ - dir = 4; - switchcount = 50 +"pir" = ( +/obj/item/storage/briefcase, +/obj/structure/table/wood/fancy/black, +/obj/item/paper/safe_code{ + owner = "NNC" }, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" +/obj/item/folder/yellow, +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_y = 32 }, -/area/centcom/zone2) +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "piE" = ( /turf/simulated/wall/shuttle, /area/shuttle/mining) @@ -32808,17 +32676,6 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/infteam) -"pji" = ( -/obj/machinery/vending/ntcrates{ - req_access = list(114) - }, -/obj/machinery/conveyor{ - id = "CC_crate" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "pjK" = ( /obj/structure/sign/poster/official/religious{ pixel_y = -32 @@ -32828,16 +32685,6 @@ }, /turf/simulated/floor/carpet/red, /area/centcom/zone1) -"pjS" = ( -/obj/structure/chair/comfy/lime{ - dir = 1 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/wood, -/area/centcom/zone3) "pko" = ( /obj/effect/turf_decal{ icon_state = "golden_stripes" @@ -32856,43 +32703,6 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"pkz" = ( -/obj/item/beach_ball, -/obj/effect/mapping_helpers/light, -/turf/simulated/floor/beach/sand{ - icon = 'icons/turf/floors.dmi'; - icon_state = "asteroid" - }, -/area/centcom/evac) -"pkP" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - req_access = list(114) - }, -/obj/item/door_remote/centcomm, -/obj/item/clothing/head/beret/centcom/captain, -/obj/item/clothing/under/rank/centcom/captain, -/obj/item/clothing/shoes/centcom{ - desc = null; - name = "Dress shoes" - }, -/obj/item/clothing/gloves/color/white, -/obj/item/storage/box/centcomofficer, -/obj/item/radio/headset/centcom, -/obj/item/clothing/glasses/hud/security/sunglasses/aviators, -/obj/item/clothing/accessory/holster, -/obj/item/storage/backpack/satcheldeluxe, -/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka{ - pixel_y = 8; - pixel_x = -4 - }, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ - pixel_y = 12; - pixel_x = 10 - }, -/obj/item/megaphone, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "pkS" = ( /turf/simulated/floor/plasteel{ dir = 10; @@ -32941,22 +32751,6 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/jail) -"pmr" = ( -/obj/item/flag/nt, -/obj/machinery/recharger/wallcharger{ - pixel_x = 32; - pixel_y = -2 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 - }, -/obj/effect/decal/warning_stripes/west, -/obj/machinery/light, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "pmF" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo3" @@ -32984,43 +32778,29 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/infteam) -"pnv" = ( -/obj/effect/turf_decal/caution/stand_clear, -/obj/effect/turf_decal/box, +"pnL" = ( +/obj/structure/railing, /turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) -"pnz" = ( -/obj/structure/table/wood/fancy/royalblue, -/obj/structure/window/plasmareinforced{ - color = "#22aab7"; - dir = 8 - }, -/obj/structure/window/plasmareinforced{ - color = "#22aab7"; - dir = 1 - }, -/obj/item/reagent_containers/food/drinks/shaker, -/turf/simulated/floor/carpet/black, -/area/shuttle/administration) -"pnE" = ( -/obj/item/storage/fancy/cigarettes/dromedaryco{ - pixel_y = 6 - }, -/obj/item/lighter/zippo{ - pixel_x = 5; - pixel_y = 4 + dir = 4; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" }, -/obj/structure/table/wood/fancy/royalblue, -/turf/simulated/floor/carpet/black, -/area/shuttle/administration) +/area/centcom/specops) "pnQ" = ( /obj/effect/turf_decal/stripes/gold{ dir = 5 }, /turf/simulated/floor/carpet/arcade, /area/centcom/bridge) +"pnZ" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) "poo" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo19" @@ -33036,6 +32816,14 @@ }, /turf/simulated/floor/carpet/black, /area/centcom/zone1) +"poN" = ( +/obj/effect/turf_decal/siding/white/corner{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "pph" = ( /obj/structure/statue/sandstone/assistant{ anchored = 1; @@ -33055,6 +32843,15 @@ icon_state = "darkredcorners" }, /area/syndicate_mothership/infteam) +"ppl" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/computer, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) "ppx" = ( /obj/machinery/light{ dir = 8 @@ -33081,15 +32878,15 @@ icon_state = "white" }, /area/centcom/zone1) +"ppZ" = ( +/obj/machinery/vending/cola/free, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone2) "pqb" = ( /turf/simulated/wall/indestructible/reinforced, /area/centcom/jail) -"pql" = ( -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkred" - }, -/area/centcom/specops) "pqn" = ( /obj/structure/window/reinforced{ dir = 1 @@ -33103,29 +32900,22 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/ninja/outside) -"pqC" = ( -/obj/effect/turf_decal/delivery/white, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 1; - id_tag = "CC_Armory_SRT1" - }, -/obj/machinery/door/airlock/centcom{ - aiControlDisabled = 1; - hackProof = 1; - name = "Special ReactionTeam"; - opacity = 1; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "pqR" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo6" }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/control) +"pre" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1331; + id_tag = "admin_s_pump" + }, +/turf/simulated/floor/shuttle{ + icon_state = "vfloor" + }, +/area/shuttle/administration) "prf" = ( /obj/machinery/door/airlock/shuttle{ id_tag = "s_docking_airlock"; @@ -33134,12 +32924,6 @@ /obj/structure/fans/tiny, /turf/simulated/floor/shuttle, /area/shuttle/siberia) -"prs" = ( -/obj/structure/closet/crate/can, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone2) "prI" = ( /obj/structure/table/wood{ color = "#996633" @@ -33154,45 +32938,83 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) +"prX" = ( +/obj/machinery/status_display{ + layer = 4; + pixel_y = -32 + }, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) +"prZ" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/shuttle/engine/heater{ + icon_state = "heater2x2_side"; + tag = "icon-heater (NORTH)" + }, +/obj/structure/shuttle/engine/platform{ + layer = 2.9 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/vox) "psd" = ( /obj/machinery/computer/camera_advanced/shuttle_docker/ninja, /turf/simulated/floor/shuttle{ icon_state = "floor13" }, /area/shuttle/ninja) -"pse" = ( -/obj/machinery/door_control/secure{ - id = "gamma shuttle"; - name = "Gamma Armory Shutters"; - req_access = list(114); - pixel_x = 24; - pixel_y = 26 +"psn" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/portable_atmospherics/canister/oxygen{ + maximum_pressure = 50000 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 1; + id = "O2" }, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkyellowaltstrip" + icon_state = "dark" }, /area/centcom/supply) -"psf" = ( -/turf/space/transit/east{ - icon_state = "speedspace_ew_1" - }, -/area/space) -"psn" = ( -/obj/structure/chair/office/dark{ - dir = 1 +"psv" = ( +/obj/structure/closet/hydrant{ + pixel_x = -32 }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkredalt" + dir = 8; + icon_state = "darkyellowalt" }, -/area/centcom/jail) +/area/centcom/zone3) "psE" = ( /obj/structure/chair/stool/bar, /turf/simulated/floor/wood{ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) +"psK" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 1; + id = "O2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) +"psX" = ( +/obj/machinery/vending/ntcrates, +/turf/simulated/floor/plating, +/area/centcom/specops) "pte" = ( /obj/structure/table/wood{ color = "#996633" @@ -33202,14 +33024,6 @@ }, /turf/simulated/floor/carpet/red, /area/centcom/zone1) -"ptx" = ( -/obj/structure/chair/sofa/right, -/obj/effect/mine/sound/bwoink{ - layer = 2.9; - alpha = 0 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone1) "ptI" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -33263,6 +33077,24 @@ icon_state = "darkfull" }, /area/syndicate_mothership/jail) +"ptV" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) +"pub" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/siding/white{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "pun" = ( /mob/living/silicon/decoy/syndicate{ desc = "Мышь в естественной среде обитания"; @@ -33271,12 +33103,13 @@ }, /turf/simulated/floor/plating, /area/syndicate_mothership/control) -"puz" = ( -/obj/effect/turf_decal/siding/yellow{ - dir = 1 +"pup" = ( +/obj/structure/chair/office/dark, +/obj/effect/turf_decal/siding/brown{ + dir = 8 }, /turf/simulated/floor/carpet/black, -/area/centcom/zone3) +/area/centcom/zone2) "puD" = ( /obj/machinery/atmospherics/pipe/simple/visible, /obj/effect/turf_decal/stripes/line{ @@ -33297,6 +33130,10 @@ icon_state = "dark" }, /area/syndicate_mothership/elite_squad) +"puM" = ( +/obj/structure/falsewall/reinforced, +/turf/simulated/wall/indestructible/reinforced, +/area/centcom/specops) "puO" = ( /obj/machinery/light/small{ dir = 4 @@ -33313,14 +33150,6 @@ /obj/effect/turf_decal/plaque, /turf/simulated/floor/carpet/black, /area/centcom/evac) -"pvl" = ( -/obj/machinery/ai_status_display{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "pvn" = ( /obj/structure/chair/comfy/shuttle/dark, /turf/simulated/floor/shuttle{ @@ -33359,15 +33188,34 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"pvN" = ( -/obj/structure/chair/comfy/shuttle, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_3) -"pwa" = ( -/turf/space/transit/north{ - icon_state = "speedspace_ns_1" +"pvS" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" }, -/area/space) +/area/centcom/specops) +"pvX" = ( +/obj/machinery/optable, +/obj/machinery/defibrillator_mount/loaded{ + pixel_x = -30 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor3" + }, +/area/shuttle/administration) +"pwb" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "CC_Armory_AEG" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "pwr" = ( /obj/item/stack/spacecash/c200, /obj/item/stack/spacecash/c50, @@ -33377,6 +33225,28 @@ }, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) +"pwF" = ( +/obj/machinery/photocopier, +/obj/machinery/light, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) +"pxs" = ( +/obj/structure/chair/stool, +/obj/structure/sign/poster/contraband/punch_shit{ + pixel_y = 32 + }, +/obj/effect/landmark/prisonsecuritywarp, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/centcom/jail) +"pxy" = ( +/obj/structure/filingcabinet/employment, +/obj/item/radio/intercom/specops{ + pixel_y = -32 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "pxJ" = ( /obj/structure/table, /obj/item/grenade/plastic/c4{ @@ -33408,34 +33278,29 @@ icon_state = "floor12" }, /area/shuttle/syndicate) -"pyd" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/effect/turf_decal/siding/blue/corner{ - color = "#444444"; - dir = 4 +"pxK" = ( +/obj/machinery/photocopier/faxmachine/longrange{ + department = "Central Command"; + icon_state = "bigscanner" }, -/obj/machinery/light, -/turf/simulated/floor/wood/fancy/light, +/obj/structure/table/holotable/wood, +/turf/simulated/floor/carpet/black, /area/centcom/specops) -"pys" = ( -/obj/machinery/door/airlock/centcom{ - name = "CentCom SOO"; - opacity = 1; - req_access = list(114) - }, -/obj/machinery/door/poddoor/shutters/invincible{ - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); +"pyh" = ( +/obj/structure/shuttle/engine/platform{ dir = 1; - id_tag = "ERT_director_office_shutters"; - layer = 5; - locked = 1; - name = "CentCom SOO" + layer = 2.9 }, -/obj/effect/decal/warning_stripes/yellow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/structure/window/plasmareinforced{ + color = "#00f700" }, -/area/centcom/specops) +/obj/structure/shuttle/engine/heater{ + dir = 1; + icon_state = "heater3x3"; + tag = "icon-heater (NORTH)" + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/ninja) "pyu" = ( /turf/simulated/floor/plasteel, /area/centcom/evac) @@ -33451,6 +33316,15 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) +"pzN" = ( +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellowaltstrip" + }, +/area/centcom/supply) "pzQ" = ( /obj/item/pizzabox/meat{ desc = "Любимая пицца Шерлока Субботина" @@ -33459,25 +33333,6 @@ icon_state = "darkyellowfull" }, /area/syndicate_mothership/cargo) -"pzZ" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/chair/comfy/lime{ - dir = 1 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" - }, -/area/shuttle/administration) "pAe" = ( /obj/effect/turf_decal/arrows{ dir = 4 @@ -33486,16 +33341,6 @@ icon_state = "darkyellowalt" }, /area/centcom/supply) -"pAg" = ( -/obj/machinery/status_display{ - pixel_y = 30 - }, -/obj/machinery/computer/rdservercontrol{ - badmin = 1; - name = "Master R&D Server Controller" - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "pAp" = ( /obj/structure/chair/comfy/red{ color = "#FFFFFF"; @@ -33506,23 +33351,6 @@ icon_state = "freezerfloor" }, /area/centcom/jail) -"pAt" = ( -/obj/effect/decal/warning_stripes/north, -/obj/effect/decal/warning_stripes/south, -/obj/effect/turf_decal/caution/stand_clear{ - dir = 1; - do_not_delete_me = 1 - }, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 1; - id_tag = "ERT_armory_lvl4"; - name = "Armory level 4"; - layer = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" - }, -/area/centcom/specops) "pAI" = ( /obj/item/flag/ussp, /turf/simulated/floor/wood/fancy/light, @@ -33548,17 +33376,31 @@ icon_state = "darkjail" }, /area/syndicate_mothership/jail) -"pBj" = ( -/obj/machinery/light/small, -/obj/structure/bookcase/random, -/turf/simulated/floor/carpet, -/area/centcom/zone1) +"pBp" = ( +/obj/machinery/door_control/secure{ + id = "CC_Armory_ARG"; + name = "ARG"; + pixel_x = -24; + pixel_y = -24; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkyellowcorners" + }, +/area/centcom/specops) "pBt" = ( /obj/machinery/light/small{ dir = 8 }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/elite_squad) +"pBA" = ( +/obj/machinery/computer/communications, +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "pBH" = ( /obj/structure/table/wood, /obj/machinery/photocopier/faxmachine/longrange/syndie{ @@ -33606,25 +33448,6 @@ icon_state = "darkyellowfull" }, /area/syndicate_mothership/cargo) -"pCj" = ( -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkyellow" - }, -/area/centcom/specops) -"pCq" = ( -/obj/machinery/door_control/secure{ - id = "Admin_shuttle_access"; - name = "Argos Shuttle Access"; - pixel_x = -24; - pixel_y = -24; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkyellowaltstrip" - }, -/area/centcom/zone3) "pDd" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo6" @@ -33639,30 +33462,30 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) -"pDr" = ( -/obj/item/gun/energy/gun/nuclear{ - pixel_y = 8 - }, -/obj/item/gun/energy/gun/nuclear{ - pixel_y = -2 - }, -/obj/item/gun/energy/gun/nuclear{ - pixel_y = -2 +"pDz" = ( +/obj/machinery/light{ + dir = 1 }, -/obj/item/gun/energy/gun/nuclear{ - pixel_y = 8 +/obj/effect/turf_decal/siding/brown/corner{ + dir = 1 }, -/obj/structure/rack/gunrack, -/obj/item/gun/energy/gun/nuclear{ - pixel_y = -2 +/turf/simulated/floor/carpet, +/area/centcom/zone3) +"pDE" = ( +/obj/machinery/computer/account_database{ + name = "Admin Accounts Database" }, -/obj/item/gun/energy/gun/nuclear{ - pixel_y = 8 +/obj/item/radio/intercom/specops{ + pixel_x = 32 }, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) +"pDH" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 6 }, +/turf/simulated/floor/glass/reinforced, /area/centcom/specops) "pDO" = ( /obj/effect/decal/syndie_logo{ @@ -33673,40 +33496,13 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/jail) -"pDR" = ( -/obj/structure/filingcabinet/employment, -/obj/item/radio/intercom/specops{ - pixel_y = 32 +"pEc" = ( +/obj/structure/window/reinforced{ + dir = 8 }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) -"pEa" = ( -/obj/structure/bookcase, -/turf/simulated/floor/wood, +/obj/structure/filingcabinet, +/turf/simulated/floor/carpet/black, /area/centcom/zone2) -"pEd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/external{ - frequency = 1331; - id_tag = "admin_s_inner"; - name = "Ship External Access"; - req_access = list(101) - }, -/obj/machinery/access_button{ - command = "cycle_interior"; - frequency = 1331; - master_tag = "admin_s_air_control"; - pixel_x = -1; - pixel_y = -29; - req_access = list(101) - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "podfloor_dark" - }, -/area/shuttle/administration) "pEv" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo7" @@ -33714,25 +33510,32 @@ /obj/structure/chair/stool, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/infteam) -"pEA" = ( -/obj/structure/window/reinforced, -/obj/machinery/computer/crew, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkbluefull" - }, -/area/centcom/bridge) "pEE" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 1; - id_tag = "CC_Armory_SFG5" +/obj/machinery/door/airlock/shuttle{ + id_tag = "s_docking_airlock" }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/structure/fans/tiny, +/obj/docking_port/mobile{ + dir = 8; + dwidth = 2; + height = 12; + id = "ferry"; + name = "ferry shuttle"; + preferred_direction = 4; + roundstart_move = "ferry_away"; + width = 5 }, -/area/centcom/specops) +/obj/docking_port/stationary{ + dir = 8; + dwidth = 2; + height = 12; + id = "ferry_away"; + name = "centcom bay 2"; + turf_type = /turf/simulated/floor/plating/airless; + width = 5 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/transport) "pEI" = ( /obj/structure/sign/double/map/left{ pixel_y = 32 @@ -33749,23 +33552,11 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/infteam) -"pFm" = ( -/obj/machinery/light, -/turf/simulated/floor/carpet/red, -/area/shuttle/administration) -"pFn" = ( -/obj/effect/turf_decal/tile/neutral{ - color = "black"; - icon_state = "tile_full" - }, -/obj/structure/railing{ - pixel_y = 32; - density = 0 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" +"pFy" = ( +/obj/machinery/vending/security, +/turf/simulated/floor/indestructible{ + dir = 1; + icon_state = "darkpurple" }, /area/centcom/specops) "pFA" = ( @@ -33776,13 +33567,6 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/infteam) -"pFM" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/spacebar) "pFP" = ( /obj/machinery/vending/boozeomat, /turf/simulated/floor/wood, @@ -33793,24 +33577,19 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/infteam) +"pFW" = ( +/obj/item/flag/nt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "vault" + }, +/area/centcom/specops) "pGk" = ( /turf/simulated/floor/plasteel{ dir = 6; icon_state = "darkredalt" }, /area/syndicate_mothership/control) -"pGs" = ( -/obj/structure/table/glass, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/reagent_containers/food/snacks/lasagna=10,/obj/item/reagent_containers/food/snacks/sliceable/pizza/hawaiianpizza=10,/obj/item/reagent_containers/food/snacks/sushi_TobikoEgg=10,/obj/item/reagent_containers/food/snacks/bigbiteburger=10,/obj/item/reagent_containers/food/snacks/sushi_SmokedSalmon=10,""=70); - lootcount = 20; - name = "Food CC Spawner #2" - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkyellow" - }, -/area/centcom/specops) "pGD" = ( /obj/machinery/light/small{ dir = 4 @@ -33827,54 +33606,29 @@ icon_state = "darkredcorners" }, /area/syndicate_mothership/infteam) -"pGF" = ( -/turf/simulated/floor/indestructible{ - dir = 1; - icon_state = "darkgreynavybluecorner" - }, -/area/centcom/specops) "pGJ" = ( /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutral" }, /area/centcom/evac) -"pHk" = ( -/obj/structure/sign/nuke{ - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "navyblue" +"pHc" = ( +/obj/effect/mapping_helpers/light, +/turf/simulated/floor/beach/sand{ + icon = 'icons/turf/floors.dmi'; + icon_state = "asteroid" }, -/area/centcom/specops) -"pHw" = ( -/obj/machinery/door/window/brigdoor{ - color = "#22aab7"; - dir = 8; - icon_state = "rightsecure"; - req_access = list(101) +/area/centcom/evac) +"pHO" = ( +/obj/structure/sink{ + dir = 1 }, -/turf/simulated/floor/carpet/black, -/area/shuttle/administration) -"pHB" = ( -/turf/simulated/floor/carpet/black, -/area/shuttle/administration) -"pHG" = ( -/obj/effect/decal/nanotrasen_logo{ - icon_state = "logo3"; - pixel_x = 16 +/obj/structure/mirror{ + pixel_y = -32 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) -"pHZ" = ( -/obj/machinery/vending/boozeomat, -/obj/structure/sign/barsign{ - pixel_y = 32 + icon_state = "white" }, -/turf/simulated/floor/carpet/black, /area/centcom/specops) "pIg" = ( /obj/structure/table/wood, @@ -33890,72 +33644,18 @@ /obj/effect/mapping_helpers/light, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"pIz" = ( -/obj/machinery/door/poddoor/impassable/preopen{ - id_tag = "ERT_Quarantine"; - name = "ERT Quarantine" - }, -/turf/simulated/wall/indestructible/fakeglass, -/area/centcom/specops) -"pIR" = ( -/obj/structure/closet{ - icon_closed = "syndicate1"; - icon_opened = "syndicate1open"; - icon_state = "syndicate1" - }, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/gun/projectile/automatic/proto, -/obj/item/gun/energy/gun/blueshield, -/obj/item/clothing/glasses/hud/security/sunglasses/aviators, -/obj/item/reagent_containers/food/snacks/candy/mre, -/obj/item/reagent_containers/hypospray/combat, -/obj/item/radio/headset/ert/alt{ - desc = null; - name = "SRT bowman headset" - }, -/obj/item/clothing/head/beret/centcom/officer/navy{ - desc = null; - name = "SRT beret" - }, -/obj/item/clothing/shoes/combat/swat{ - name = "SRT special shoes" - }, -/obj/item/clothing/gloves/combat{ - name = "Combat gloves" - }, -/obj/item/storage/belt/security/webbing/srt/full, -/obj/item/storage/backpack/satchel_blueshield/srt, -/obj/item/clothing/suit/storage/blueshield/srt, -/obj/item/clothing/suit/armor/bulletproof{ - name = "SRT bulletproof vest" - }, -/obj/item/shield/riot/tele, -/obj/item/suppressor, -/obj/item/CQC_manual, -/obj/item/implanter/mindshield/ert, -/obj/item/card/id/centcom{ - name = "Special Reaction Team Member card"; - rank = "Special Reaction Team Member"; - registered_name = "Special Reaction Team Member" +"pIW" = ( +/obj/structure/window/reinforced{ + layer = 2.9 }, -/obj/item/storage/box/responseteam, -/obj/item/clothing/under/fluff/jay_turtleneck{ - desc = null; - name = "SRT uniform" +/obj/effect/turf_decal/box/white/corners{ + dir = 4 }, -/obj/item/gun/projectile/automatic/pistol/sp8/sp8ar, -/obj/item/ammo_box/magazine/sp8, -/obj/item/ammo_box/magazine/sp8, -/obj/item/implanter/dust, -/obj/item/clothing/accessory/holster, +/obj/structure/weightmachine/stacklifter, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "navyblue" + icon_state = "darkfull" }, -/area/centcom/specops) +/area/centcom/jail) "pJe" = ( /obj/structure/table, /obj/item/storage/toolbox/surgery{ @@ -33974,14 +33674,13 @@ icon_state = "darkgrey" }, /area/syndicate_mothership/infteam) -"pJo" = ( -/obj/structure/window/reinforced{ - dir = 4 +"pJr" = ( +/obj/structure/table/wood/fancy/black, +/obj/machinery/photocopier/faxmachine/longrange{ + department = "Central Command" }, -/obj/structure/table/wood, -/obj/item/candle/eternal, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/evac) +/turf/simulated/floor/bluegrid, +/area/centcom/bridge) "pJv" = ( /obj/structure/chair{ dir = 4 @@ -33995,10 +33694,6 @@ icon_state = "darkfull" }, /area/syndicate_mothership/jail) -"pJG" = ( -/obj/machinery/papershredder, -/turf/simulated/floor/plating, -/area/centcom/zone2) "pJV" = ( /obj/effect/turf_decal/siding/green{ dir = 1 @@ -34012,34 +33707,7 @@ /obj/structure/weightmachine/stacklifter, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"pKB" = ( -/obj/machinery/vending/cigarette/free, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone2) -"pKM" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "CC_supply_external2"; - layer = 5; - locked = 1 - }, -/obj/machinery/door_control/secure{ - id = "CC_supply_external2"; - name = "Supply Internal Shutters"; - req_access = list(114); - pixel_x = -24 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkyellowalt" - }, -/area/centcom/supply) -"pLm" = ( -/obj/machinery/light{ - dir = 4 - }, +"pKU" = ( /turf/simulated/floor/carpet/black, /area/shuttle/administration) "pLC" = ( @@ -34053,14 +33721,28 @@ icon_state = "grimy" }, /area/syndicate_mothership) -"pMe" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 +"pLN" = ( +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/zone1) +"pMq" = ( +/obj/effect/turf_decal/tile/neutral{ + color = "black"; + icon_state = "tile_full"; + layer = 9 + }, +/obj/effect/step_trigger/teleporter{ + icon = 'icons/mob/screen_gen.dmi'; + icon_state = "x2"; + teleport_x = 175; + teleport_y = 61; + teleport_z = 1 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + color = "gray"; + dir = 8; + icon_state = "rampbottom" }, -/area/centcom/zone2) +/area/centcom/specops) "pMv" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -34102,6 +33784,15 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) +"pNy" = ( +/obj/mecha/combat/gygax/ert{ + color = "#66ff99"; + name = "Assault Jaeger" + }, +/turf/simulated/floor/plasteel{ + icon_state = "navyblue" + }, +/area/centcom/specops) "pNM" = ( /turf/space/transit/north, /area/space) @@ -34125,10 +33816,6 @@ icon_state = "darkfull" }, /area/syndicate_mothership) -"pOp" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/turf/simulated/floor/plating/airless, -/area/shuttle/mining) "pOr" = ( /obj/effect/turf_decal/siding{ color = "#444444"; @@ -34170,48 +33857,48 @@ icon_state = "rampbottom" }, /area/syndicate_mothership) -"pOT" = ( -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - damage_deflection = 2000; - layer = 2.9; - name = "Frag grenade"; - req_access = list(114) +"pOM" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/food/snacks/bigbiteburger, +/obj/structure/sign/poster/official/nanotrasen_logo{ + icon = 'icons/obj/decals.dmi'; + icon_state = "nanotrasen_sign2"; + pixel_x = -16; + pixel_y = 32 }, -/obj/item/grenade/frag, -/obj/item/grenade/frag, -/obj/item/grenade/frag, -/obj/item/grenade/frag, -/obj/item/grenade/frag, -/obj/item/grenade/frag, -/obj/item/grenade/frag, -/obj/item/grenade/frag, -/obj/item/grenade/frag, -/obj/item/grenade/frag, -/obj/item/grenade/frag, -/obj/item/grenade/frag, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/specops) -"pPC" = ( -/obj/item/flag/nt, +"pOQ" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/status_display/supply_display{ + pixel_x = -32 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1; + pixel_y = 6 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) +"pOU" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen/multi/fountain, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "vault" + dir = 8; + icon_state = "darkredalt" }, -/area/centcom/specops) -"pPK" = ( -/obj/effect/turf_decal/stripes/line{ - icon = 'icons/turf/floors.dmi'; - icon_state = "siding8" +/area/centcom/jail) +"pPo" = ( +/obj/machinery/light{ + dir = 8 }, /turf/simulated/floor/plasteel{ - color = "gray"; - dir = 1; - icon_state = "rampbottom" + dir = 8; + icon_state = "navyblue" }, -/area/centcom/supply) +/area/centcom/supplypod/loading/ert) "pPN" = ( /obj/effect/landmark/syndicate_commando{ tag = "Commando" @@ -34310,6 +33997,15 @@ icon_state = "darkyellowaltstrip" }, /area/syndicate_mothership/control) +"pSw" = ( +/obj/effect/turf_decal/tile/neutral{ + alpha = 150; + color = "black"; + icon_state = "tile_full"; + layer = 9 + }, +/turf/simulated/floor/plating, +/area/centcom/supply) "pSK" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ frequency = 1331; @@ -34351,8 +34047,8 @@ "pST" = ( /obj/machinery/syndiepad/loadpad, /obj/machinery/conveyor{ - id = "SFBQMLoad2"; - dir = 8 + dir = 8; + id = "SFBQMLoad2" }, /turf/simulated/floor/plasteel{ dir = 1; @@ -34366,19 +34062,6 @@ icon_state = "dark" }, /area/syndicate_mothership/elite_squad) -"pTc" = ( -/obj/structure/closet/secure_closet/freezer/kitchen, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/rice, -/obj/item/reagent_containers/food/condiment/rice, -/obj/item/reagent_containers/food/condiment/rice, -/turf/simulated/floor/plasteel{ - icon_state = "redfull"; - tag = "icon-redfull (NORTHWEST)" - }, -/area/centcom/zone1) "pTf" = ( /obj/structure/chair/comfy/shuttle{ dir = 1 @@ -34397,9 +34080,27 @@ tag = "icon-stage_stairs" }, /area/centcom/zone1) -"pTY" = ( -/turf/simulated/wall/shuttle/nodiagonal, -/area/shuttle/administration) +"pTK" = ( +/obj/machinery/door/airlock/command/glass{ + frequency = 2000; + icon_state = "open"; + id_tag = "CC-OP4-Int"; + locked = 1; + name = "Zone 2" + }, +/obj/effect/decal/warning_stripes/blue, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 2000; + master_tag = "CC-OP4"; + name = "CC-OP4-INT"; + pixel_y = 24; + req_access = list(109) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "pUa" = ( /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -34445,6 +34146,22 @@ icon_state = "dark" }, /area/centcom/evac) +"pUz" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + id_tag = "CC_ERT2" + }, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/wood{ + icon_state = "light-fancy-wood" + }, +/area/centcom/specops) +"pUC" = ( +/obj/machinery/vending/medical, +/turf/simulated/floor/plasteel{ + icon_state = "darkbluealt" + }, +/area/centcom/specops) "pUJ" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 8; @@ -34483,16 +34200,29 @@ icon_state = "freezerfloor" }, /area/centcom/jail) +"pUX" = ( +/obj/structure/rack, +/obj/item/ammo_box/magazine/m556, +/obj/item/ammo_box/magazine/m556, +/obj/item/ammo_box/magazine/m556, +/obj/item/ammo_box/magazine/m556, +/obj/item/ammo_box/magazine/m556, +/obj/item/ammo_box/magazine/m556, +/obj/item/ammo_box/magazine/m556, +/obj/item/ammo_box/magazine/m556, +/obj/item/ammo_box/magazine/m556, +/obj/item/ammo_box/magazine/m556, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "pVc" = ( /obj/structure/ore_box, /turf/simulated/floor/plasteel{ icon_state = "darkfull" }, /area/syndicate_mothership) -"pVg" = ( -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/carpet/black, -/area/centcom/zone3) "pVs" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating{ @@ -34530,13 +34260,16 @@ /obj/structure/flora/grass/jungle/b, /turf/simulated/wall/indestructible/rock, /area/syndicate_mothership/outside) -"pVW" = ( -/obj/structure/chair/comfy/brown{ - color = "#FF3300"; - dir = 1 +"pVX" = ( +/obj/structure/chair/comfy/red, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 }, -/turf/simulated/floor/carpet, -/area/centcom/zone3) +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/centcom/jail) "pWj" = ( /obj/structure/table/wood, /obj/item/paper_bin/syndicate, @@ -34549,22 +34282,6 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/infteam) -"pWo" = ( -/obj/machinery/door/firedoor, -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/door/poddoor/impassable/preopen{ - id_tag = "ERT_Quarantine"; - name = "ERT Quarantine" - }, -/obj/machinery/door/airlock/centcom{ - name = "Emergency Response Team"; - opacity = 1; - req_access = list(109) - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "pWv" = ( /obj/effect/turf_decal/siding/wideplating{ color = "#55391A"; @@ -34574,34 +34291,18 @@ icon_state = "grimy" }, /area/syndicate_mothership) -"pWF" = ( -/obj/docking_port/mobile{ - dir = 8; - dwidth = 3; - height = 5; - id = "mining"; - name = "mining shuttle"; - rebuildable = 1; - roundstart_move = "mining_home"; - width = 7 - }, -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/shuttle{ - id_tag = "s_docking_airlock"; - req_access = list(48) +"pWS" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 6 }, -/obj/docking_port/stationary/transit{ - dir = 8; - dwidth = 3; - height = 5; - id = "mining_transit"; - name = "mining in transit"; - pixel_x = 32; - turf_type = /turf/space/transit/north; - width = 7 +/obj/structure/showcase{ + layer = 4.1; + pixel_x = -5; + pixel_y = 5 }, -/turf/simulated/floor/shuttle, -/area/shuttle/mining) +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "pWX" = ( /obj/structure/window/reinforced{ dir = 8 @@ -34610,29 +34311,14 @@ /obj/item/deck/cards, /turf/simulated/floor/wood, /area/centcom/zone1) -"pXH" = ( -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - damage_deflection = 2000; - layer = 2.9; - name = "Nuclear Fission Grenade"; - req_access = list(114) - }, -/obj/item/grenade/confetti, -/obj/item/grenade/confetti, -/obj/item/grenade/confetti, -/obj/item/grenade/confetti, -/obj/item/grenade/confetti, -/obj/item/grenade/confetti, -/obj/item/grenade/confetti, -/obj/item/grenade/confetti, -/obj/item/grenade/confetti, -/obj/item/grenade/confetti, -/obj/structure/sign/poster/contraband/clown{ - pixel_y = -32 +"pXf" = ( +/obj/effect/decal/warning_stripes/white/hollow, +/obj/machinery/vending/nta/ertarmory/red{ + dir = 4; + req_access = list(104,109) }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "darkredfull" }, /area/centcom/specops) "pXQ" = ( @@ -34642,16 +34328,6 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) -"pYa" = ( -/obj/structure/sign/poster/official/twelve_gauge{ - pixel_y = -32 - }, -/obj/machinery/light, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "navyblue" - }, -/area/centcom/specops) "pYo" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo9" @@ -34664,23 +34340,37 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/infteam) -"pYF" = ( -/obj/structure/window/reinforced{ - layer = 2.9 +"pYv" = ( +/obj/structure/closet/secure_closet/cabinet/bar{ + req_access = list() }, -/obj/structure/table, -/obj/item/reagent_containers/glass/beaker/waterbottle, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) +/obj/item/storage/box/beakers/bluespace, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "pYK" = ( /obj/structure/grille, /obj/structure/window/full/shuttle/ninja, /turf/simulated/floor/shuttle/plating, /area/shuttle/ninja) -"pYU" = ( -/obj/structure/table/wood/fancy/black, -/turf/simulated/floor/carpet/red, -/area/centcom/bridge) +"pYT" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/four) "pYZ" = ( /obj/structure/curtain/open/shower/security{ pixel_x = 32 @@ -34702,33 +34392,39 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/infteam) -"pZj" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "burst_l"; - tag = "icon-burst_l" - }, -/obj/structure/window/reinforced{ - dir = 4 +"pZG" = ( +/obj/machinery/door/airlock/external{ + id_tag = "s_docking_airlock"; + name = "Shuttle Hatch"; + req_access = list(109) }, -/turf/simulated/floor/plating/airless, -/area/shuttle/pod_4) -"pZH" = ( -/obj/structure/closet/secure_closet/brig, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/structure/window/reinforced, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkredalt" +/obj/docking_port/mobile{ + dir = 2; + dwidth = 2; + height = 11; + id = "specops"; + name = "ert shuttle"; + roundstart_move = "specops_away"; + width = 5 }, -/area/centcom/jail) -"pZL" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - id_tag = "CC_ERT1" +/obj/structure/fans/tiny, +/obj/docking_port/stationary{ + dir = 2; + dwidth = 2; + height = 11; + id = "specops_away"; + name = "centcom bay 3"; + top_left_corner = 8; + top_right_corner = 1; + turf_type = /turf/simulated/floor/plating/airless; + width = 5 }, -/obj/machinery/door/firedoor, -/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/specops) +"pZY" = ( /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 8; + icon_state = "darkgreen" }, /area/centcom/specops) "qaa" = ( @@ -34745,6 +34441,13 @@ tag = "icon-redfull (NORTHWEST)" }, /area/centcom/jail) +"qap" = ( +/obj/structure/railing, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "navybluealt" + }, +/area/centcom/specops) "qar" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo11" @@ -34770,11 +34473,14 @@ }, /turf/simulated/floor/indestructible/beach/sand, /area/syndicate_mothership/outside) -"qbr" = ( -/obj/structure/table/reinforced, -/obj/machinery/chem_dispenser/beer/upgraded, -/turf/simulated/floor/carpet/black, -/area/shuttle/administration) +"qbO" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone2) "qck" = ( /obj/effect/baseturf_helper{ baseturf = /turf/simulated/floor/indestructible/asteroid; @@ -34813,6 +34519,16 @@ tag = "icon-redfull (NORTHWEST)" }, /area/centcom/jail) +"qcB" = ( +/obj/machinery/door/window/brigdoor{ + dir = 8; + req_access = list(104) + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredaltstrip" + }, +/area/centcom/jail) "qcF" = ( /obj/machinery/bodyscanner{ layer = 3.5 @@ -34824,25 +34540,6 @@ icon_state = "white" }, /area/centcom/zone1) -"qcL" = ( -/obj/structure/railing, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "navybluealt" - }, -/area/centcom/specops) -"qcS" = ( -/obj/docking_port/stationary{ - dir = 4; - dwidth = 7; - height = 5; - id = "sit_away"; - name = "Syndicate Base"; - turf_type = /turf/simulated/floor/indestructible/plating; - width = 11 - }, -/turf/simulated/floor/plating, -/area/syndicate_mothership/infteam) "qcY" = ( /obj/structure/sign/poster/official/nanotrasen_logo{ pixel_y = -32 @@ -34852,6 +34549,10 @@ }, /turf/simulated/floor/carpet/red, /area/centcom/zone1) +"qdd" = ( +/obj/machinery/papershredder, +/turf/simulated/floor/plating, +/area/centcom/zone2) "qdI" = ( /obj/structure/closet/crate/can, /obj/machinery/light/small{ @@ -34861,37 +34562,13 @@ icon_state = "dark" }, /area/centcom/zone1) -"qfa" = ( -/obj/structure/falsewall/reinforced, -/turf/simulated/wall/indestructible/reinforced, -/area/centcom/specops) -"qff" = ( +"qfj" = ( /obj/effect/turf_decal/siding{ color = "#444444"; - dir = 1 + dir = 5 }, -/obj/machinery/computer/shuttle/ert, -/turf/simulated/floor/wood/fancy/light, +/turf/simulated/floor/glass/reinforced, /area/centcom/specops) -"qfn" = ( -/obj/structure/chair/office/dark, -/obj/effect/turf_decal/siding/brown{ - dir = 8 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"qfv" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 3; - height = 5; - id = "sst_away"; - name = "Syndicate Base"; - turf_type = /turf/simulated/floor/indestructible/plating; - width = 11 - }, -/turf/simulated/floor/plating, -/area/syndicate_mothership/elite_squad) "qfz" = ( /obj/structure/chair/comfy/shuttle{ dir = 8 @@ -34913,15 +34590,17 @@ icon_state = "darkgrey" }, /area/syndicate_mothership/elite_squad) -"qfG" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 +"qfJ" = ( +/obj/machinery/door/airlock/centcom{ + name = "Prison"; + opacity = 1; + req_access = list(104) }, -/turf/simulated/floor/wood{ - icon_state = "light-fancy-wood" +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/jail) "qfN" = ( /obj/effect/turf_decal/loading_area/white{ dir = 8 @@ -34930,15 +34609,6 @@ icon_state = "darkfull" }, /area/syndicate_mothership/elite_squad) -"qfX" = ( -/obj/structure/table/reinforced, -/obj/machinery/chem_dispenser/soda/upgraded, -/obj/item/storage/box/drinkingglasses{ - pixel_x = 1; - pixel_y = 5 - }, -/turf/simulated/floor/carpet/black, -/area/shuttle/administration) "qfY" = ( /obj/structure/fence{ color = "#b0b7c6"; @@ -34960,6 +34630,14 @@ icon_state = "darkfull" }, /area/syndicate_mothership/elite_squad) +"qgA" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/shuttle/engine/heater, +/turf/simulated/floor/plating/airless, +/area/shuttle/siberia) "qgP" = ( /obj/structure/holohoop{ dir = 8 @@ -35010,38 +34688,12 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/elite_squad) -"qif" = ( -/obj/machinery/door/airlock/centcom{ - aiControlDisabled = 1; - hackProof = 1; - name = "Special ReactionTeam"; - opacity = 1; - req_access = list(114) - }, -/obj/effect/turf_decal/delivery/white, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 1; - id_tag = "CC_Armory_SRT1" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "qim" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 }, /turf/simulated/floor/carpet/black, /area/ninja/outpost) -"qix" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkyellowalt" - }, -/area/centcom/supply) "qiB" = ( /obj/structure/closet/crate/syndicate{ pixel_x = -4; @@ -35052,9 +34704,38 @@ icon_state = "darkyellowalt" }, /area/syndicate_mothership/cargo) +"qiO" = ( +/obj/effect/turf_decal/caution/stand_clear, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellowaltstrip" + }, +/area/centcom/zone3) "qiR" = ( /turf/simulated/floor/plating, /area/syndicate_mothership) +"qja" = ( +/obj/structure/filingcabinet/chestdrawer{ + anchored = 0 + }, +/obj/structure/sign/poster/ripped{ + pixel_y = -32 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) +"qjA" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 1; + id = "N2O" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "qjR" = ( /obj/structure/chair/sofa/corp/right{ dir = 1 @@ -35086,13 +34767,6 @@ icon_state = "fancy-wood-cherry" }, /area/shuttle/trade/sol) -"qjY" = ( -/obj/item/clothing/accessory/stripedredscarf, -/obj/item/clothing/head/hopcap, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "qkl" = ( /obj/machinery/slot_machine, /obj/structure/window/reinforced{ @@ -35111,18 +34785,45 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"qkE" = ( -/obj/effect/turf_decal/siding/white/corner, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"qkx" = ( +/obj/structure/bed, +/obj/item/bedsheet/qm, +/obj/effect/mine/sound/bwoink{ + alpha = 0; + layer = 2.9 }, -/area/centcom/jail) +/turf/simulated/floor/carpet/arcade, +/area/centcom/zone1) "qkT" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo6" }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership) +"qkU" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/decal/warning_stripes/south, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/poddoor/shutters/preopen/invincible{ + dir = 2; + id_tag = "ERT_armory_lvl1"; + name = "Armory level 1" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" + }, +/area/centcom/specops) +"qlu" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) "qlw" = ( /obj/structure/table/wood, /obj/item/folder/red{ @@ -35140,6 +34841,12 @@ icon_state = "warnwhite" }, /area/centcom/zone1) +"qlP" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/centcom/zone3) "qlQ" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, @@ -35149,6 +34856,9 @@ icon_state = "vault" }, /area/shuttle/escape) +"qlX" = ( +/turf/simulated/floor/carpet, +/area/centcom/zone3) "qmc" = ( /obj/machinery/computer/syndie_supplycomp, /turf/simulated/floor/shuttle{ @@ -35156,18 +34866,22 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"qml" = ( -/obj/structure/sign/poster/official/high_class_martini{ - pixel_x = 32 +"qms" = ( +/obj/structure/shuttle/engine/heater{ + dir = 4; + icon_state = "heater3x3"; + tag = "icon-heater (NORTH)" }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 +/obj/structure/window/plasmareinforced{ + color = "#22aab7"; + dir = 8 }, -/turf/simulated/floor/wood{ - icon_state = "light-fancy-wood" +/obj/structure/shuttle/engine/platform{ + dir = 4; + layer = 2.9 }, -/area/centcom/specops) +/turf/simulated/floor/plating/airless, +/area/shuttle/administration) "qmw" = ( /obj/structure/table/reinforced, /obj/item/tank/jetpack/oxygen/harness{ @@ -35182,30 +34896,31 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"qmE" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "burst_l"; - tag = "icon-burst_l" - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/supply) -"qmN" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/flag/nt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/bridge) "qnc" = ( /obj/structure/shuttle/engine/huge, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/cargo) -"qnr" = ( -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) +"qnE" = ( +/obj/structure/table/reinforced, +/obj/item/storage/box/beakers/bluespace, +/obj/item/storage/box/beakers/bluespace, +/obj/item/storage/box/beakers/bluespace, +/obj/item/reagent_scanner/adv, +/obj/structure/sink{ + dir = 1 + }, +/turf/simulated/floor/engine, +/area/centcom/specops) +"qnP" = ( +/obj/structure/railing{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/centcom/specops) "qnT" = ( /obj/structure/chair/sofa/pew/right, /turf/simulated/floor/plasteel{ @@ -35222,6 +34937,16 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) +"qog" = ( +/obj/effect/decal/warning_stripes/west, +/obj/machinery/door/window/brigdoor{ + base_state = "rightsecure"; + dir = 8; + icon_state = "rightsecure"; + name = "CentComm Chemical lab" + }, +/turf/simulated/floor/engine, +/area/centcom/specops) "qok" = ( /obj/effect/turf_decal{ icon_state = "grass_edge_medium_corner" @@ -35240,49 +34965,42 @@ icon_state = "neutralfull" }, /area/shuttle/escape) -"qon" = ( -/obj/machinery/computer/communications, -/obj/structure/window/reinforced{ +"qoC" = ( +/obj/machinery/computer/bsa_control/admin{ + integrity_failure = 20; + req_access = list(114) + }, +/obj/machinery/light/small{ dir = 4 }, -/turf/simulated/floor/carpet, +/turf/simulated/floor/carpet/black, /area/centcom/specops) -"qop" = ( -/obj/structure/table/glass, -/obj/item/paper_bin/nanotrasen, -/obj/item/pen/multi/fountain, -/obj/item/lighter/zippo/blue{ - pixel_x = 5; - pixel_y = 8 +"qoH" = ( +/obj/machinery/door/airlock/centcom{ + name = "Archive"; + opacity = 1; + req_access = list(113) }, -/obj/item/clothing/mask/cigarette/cigar/cohiba{ - pixel_x = -4; - pixel_y = 9 +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/obj/machinery/newscaster/security_unit{ - pixel_y = 32 +/area/centcom/zone2) +"qoL" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellow" }, -/turf/simulated/floor/carpet, -/area/centcom/specops) -"qow" = ( -/turf/simulated/wall/shuttle/onlyselfsmooth, -/area/shuttle/administration) +/area/centcom/supplypod/loading/four) "qoS" = ( -/obj/structure/sign/greencross{ - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/turf_decal/stripes/black{ dir = 8; - icon_state = "darkredalt" + do_not_delete_me = 1 }, -/area/centcom/jail) -"qpb" = ( -/obj/structure/table/glass, -/obj/item/pizzabox/vegetable, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" +/turf/simulated/floor/shuttle{ + icon_state = "vfloor" }, -/area/centcom/specops) +/area/shuttle/administration) "qpI" = ( /obj/effect/turf_decal{ dir = 9; @@ -35296,22 +35014,28 @@ icon_state = "dark" }, /area/syndicate_mothership/control) +"qpM" = ( +/obj/structure/table/wood/fancy/royalblue, +/obj/item/storage/ashtray/glass{ + pixel_x = -6; + pixel_y = 7 + }, +/turf/simulated/floor/carpet/black, +/area/shuttle/administration) +"qpP" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/sign/poster/official/ian{ + pixel_y = 31 + }, +/obj/machinery/photocopier, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "qpQ" = ( /obj/structure/closet/secure_closet/personal/cabinet, /turf/simulated/floor/carpet/black, /area/centcom/zone1) -"qpR" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1; - pixel_y = 3 - }, -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) "qpS" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo13" @@ -35351,12 +35075,16 @@ icon_state = "darkjail" }, /area/syndicate_mothership/jail) -"qqt" = ( -/obj/structure/bookcase, -/turf/simulated/floor/wood{ - icon_state = "wood-broken6" +"qqE" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1; + tag = "icon-heater (NORTH)" }, -/area/centcom/zone2) +/obj/structure/window/reinforced{ + color = "black" + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/funeral) "qqG" = ( /obj/structure/bed/roller, /obj/item/radio/intercom{ @@ -35378,22 +35106,30 @@ icon_state = "white" }, /area/centcom/zone3) +"qqU" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + dir = 8; + id_tag = "CC_supply_internal"; + layer = 5; + locked = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkyellowalt" + }, +/area/centcom/supply) "qqV" = ( /obj/machinery/vending/cola/free, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/evac) -"qrm" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/flag/nt, +"qrg" = ( /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 5; + icon_state = "darkred" }, -/area/centcom/bridge) +/area/centcom/specops) "qrL" = ( /obj/item/flag/syndi, /turf/simulated/floor/plasteel{ @@ -35401,6 +35137,32 @@ icon_state = "darkred" }, /area/syndicate_mothership/infteam) +"qrR" = ( +/obj/structure/chair/sofa{ + dir = 5 + }, +/turf/simulated/floor/carpet/red, +/area/centcom/zone1) +"qsa" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 1; + id_tag = "CC_Armory_ARG" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"qse" = ( +/obj/structure/sign/poster/official/nanotrasen_logo{ + icon = 'icons/obj/decals.dmi'; + icon_state = "nanotrasen_sign5"; + pixel_x = -16; + pixel_y = 32 + }, +/turf/simulated/floor/wood{ + icon_state = "light-fancy-wood" + }, +/area/centcom/specops) "qso" = ( /obj/structure/chair/stool, /turf/simulated/floor/mineral/plastitanium, @@ -35439,6 +35201,17 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) +"qsJ" = ( +/obj/item/radio/intercom/specops{ + pixel_x = 28; + pixel_y = -42 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 9 + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "qsK" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -35480,18 +35253,11 @@ }, /area/centcom/zone2) "qsV" = ( -/obj/machinery/door_control/secure{ - id = "CC_Armory_LWAP"; - name = "L.W.A.P. Sniper Rifle"; - pixel_x = 24; - pixel_y = 24; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkred" +/obj/machinery/computer/shuttle/ferry/request{ + req_access = list(101) }, -/area/centcom/specops) +/turf/simulated/floor/shuttle, +/area/shuttle/transport) "qti" = ( /obj/machinery/light/small{ dir = 8 @@ -35501,6 +35267,11 @@ }, /area/shuttle/trade/sol) "qtk" = ( +/obj/machinery/door/airlock/shuttle, +/obj/structure/fans/tiny, +/obj/docking_port/mobile/gamma{ + port_direction = 8 + }, /obj/docking_port/stationary{ dir = 4; dwidth = 4; @@ -35509,25 +35280,35 @@ name = "gamma centcom"; width = 7 }, -/turf/space{ - icon_state = "black" +/turf/simulated/floor/shuttle{ + icon_state = "floor4" }, -/area/space) +/area/shuttle/gamma) +"qtl" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/four) "qto" = ( /turf/simulated/floor/plasteel{ dir = 8; icon_state = "navybluealtstrip" }, /area/centcom/specops) -"qty" = ( -/obj/effect/baseturf_helper{ - baseturf = /turf/simulated/floor/indestructible/plating; - name = "plating baseturf editor" +"qtP" = ( +/obj/effect/turf_decal/caution/stand_clear/white, +/obj/machinery/door/poddoor/impassable/unhittable{ + id_tag = "CC_Players_In"; + name = "Blast Door" }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/bridge) +/area/centcom/zone2) "qtS" = ( /obj/structure/railing{ dir = 8 @@ -35537,26 +35318,37 @@ icon_state = "dark" }, /area/syndicate_mothership/jail) -"quz" = ( -/obj/structure/sign/poster/official/help_others{ - pixel_y = 32 +"quv" = ( +/obj/structure/shuttle/engine/heater{ + icon_state = "heater3x3"; + tag = "icon-heater (NORTH)" + }, +/turf/simulated/floor/plating/airless, +/area/centcom/jail) +"quA" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/conveyor{ + dir = 1; + id = "CO2" + }, +/obj/machinery/portable_atmospherics/canister/carbon_dioxide{ + maximum_pressure = 50000 }, -/obj/machinery/atmospherics/unary/cold_sink/freezer/upgraded, /turf/simulated/floor/plasteel{ icon_state = "dark" }, +/area/centcom/supply) +"quG" = ( +/obj/structure/chair/comfy/brown, +/turf/simulated/floor/wood, /area/centcom/specops) -"qvu" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 8; - id_tag = "CC_supply_external"; - layer = 5; - locked = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkyellowalt" +"quT" = ( +/obj/structure/table/wood/fancy/black, +/obj/machinery/photocopier/faxmachine/longrange{ + department = "Central Command" }, -/area/centcom/supply) +/turf/simulated/floor/carpet/red, +/area/centcom/bridge) "qvD" = ( /obj/structure/fans/tiny/invisible, /turf/simulated/floor/plasteel{ @@ -35570,21 +35362,6 @@ /obj/structure/chair/stool, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/infteam) -"qvY" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/turf_decal/siding/white{ - dir = 9 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) "qwd" = ( /obj/structure/sign/poster/official/nanotrasen_logo{ pixel_x = 32 @@ -35595,23 +35372,25 @@ icon_state = "darkyellow" }, /area/shuttle/escape) -"qwi" = ( -/obj/structure/shuttle/engine/heater{ - dir = 4; - icon_state = "heater2x2_side"; - tag = "icon-heater (NORTH)" - }, -/obj/structure/window/reinforced{ - color = "yellow"; - dir = 8; - layer = 2.9 - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/trade/sol) "qwp" = ( /obj/effect/turf_decal/plaque, /turf/simulated/floor/carpet/black, /area/centcom/zone1) +"qww" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/turf/simulated/floor/glass, +/area/centcom/zone3) "qwy" = ( /obj/effect/turf_decal/stripes/asteroid/line{ dir = 1 @@ -35631,18 +35410,23 @@ }, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"qxs" = ( -/obj/machinery/door/airlock/external{ - frequency = 1331; - id_tag = "admin_s_inner"; - name = "Ship External Access"; - req_access = list(101) +"qxb" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/food/snacks/validsalad, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "podfloor_dark" +/area/centcom/specops) +"qxd" = ( +/obj/effect/decal/cleanable/crayon{ + icon_state = "bodys"; + pixel_x = 14; + pixel_y = 32 }, -/area/shuttle/administration) +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/turf/simulated/floor/wood, +/area/centcom/specops) "qxt" = ( /obj/structure/table/wood/fancy/black, /turf/simulated/floor/plasteel{ @@ -35677,6 +35461,18 @@ icon_state = "plastitanium" }, /area/shuttle/syndicate) +"qyk" = ( +/obj/machinery/vending/coffee/free, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/centcom/jail) +"qyq" = ( +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "darkgrey" + }, +/area/shuttle/administration) "qyL" = ( /obj/effect/turf_decal/stripes/line{ dir = 4; @@ -35686,20 +35482,6 @@ icon_state = "floor4" }, /area/shuttle/syndicate) -"qza" = ( -/obj/mecha/combat/marauder/seraph/loaded{ - armor = list("melee"=80,"bullet"=80,"laser"=80,"energy"=80,"bomb"=80,"bio"=80,"rad"=80,"fire"=100,"acid"=100); - name = "D2"; - operation_req_access = list(109) - }, -/obj/effect/turf_decal/mech, -/obj/machinery/light, -/turf/simulated/floor/indestructible{ - dir = 8; - icon_state = "vault"; - name = "Operative position" - }, -/area/centcom/jail) "qzC" = ( /obj/structure/window/reinforced{ color = "red"; @@ -35724,51 +35506,166 @@ tag = "icon-redfull (NORTHWEST)" }, /area/centcom/zone1) -"qzX" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; +"qzU" = ( +/obj/machinery/light/small{ dir = 1 }, -/turf/simulated/floor/glass, -/area/centcom/zone3) -"qAe" = ( +/turf/simulated/floor/shuttle, +/area/shuttle/nt_droppod) +"qAI" = ( /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" + dir = 9; + icon_state = "darkyellow" }, -/area/centcom/bridge) -"qAj" = ( -/obj/structure/sign/poster/official/soft_cap_pop_art{ - pixel_x = -32 +/area/centcom/supplypod/loading/one) +"qAL" = ( +/obj/structure/rack/holorack, +/obj/item/clothing/under/assistantformal, +/obj/item/clothing/under/captain_fly{ + name = "rogue uniform" }, -/obj/machinery/power/smes/vintage, -/turf/simulated/floor/plating, -/area/centcom/zone3) -"qAy" = ( -/obj/structure/shuttle/engine/heater, -/turf/simulated/floor/plating/airless, -/area/centcom/jail) -"qAF" = ( -/obj/effect/turf_decal/siding/brown, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/item/clothing/under/captainparade{ + name = "parade uniform" }, -/area/centcom/zone3) +/obj/item/clothing/under/captainparade{ + name = "parade uniform" + }, +/obj/item/clothing/under/captain_fly{ + name = "rogue uniform" + }, +/obj/item/clothing/under/assistantformal, +/obj/item/clothing/under/fluff/benjaminfallout, +/obj/item/clothing/under/fluff/benjaminfallout, +/obj/item/clothing/under/fluff/elishirt, +/obj/item/clothing/under/fluff/elishirt, +/obj/item/clothing/under/fluff/jay_turtleneck, +/obj/item/clothing/under/fluff/jay_turtleneck, +/obj/item/clothing/under/lawyer/black, +/obj/item/clothing/under/lawyer/black, +/obj/item/clothing/under/lawyer/blue, +/obj/item/clothing/under/lawyer/blue, +/obj/item/clothing/under/lawyer/bluesuit, +/obj/item/clothing/under/lawyer/bluesuit, +/obj/item/clothing/under/lawyer/female, +/obj/item/clothing/under/lawyer/female, +/obj/item/clothing/under/lawyer/oldman, +/obj/item/clothing/under/lawyer/oldman, +/obj/item/clothing/under/lawyer/red, +/obj/item/clothing/under/lawyer/red, +/obj/item/clothing/under/mafia{ + name = "black outfit" + }, +/obj/item/clothing/under/mafia{ + name = "black outfit" + }, +/obj/item/clothing/under/mafia/white{ + name = "white outfit" + }, +/obj/item/clothing/under/mafia/white{ + name = "white outfit" + }, +/obj/item/clothing/under/misc/durathread, +/obj/item/clothing/under/misc/durathread, +/obj/item/clothing/under/retro/engineering, +/obj/item/clothing/under/retro/engineering, +/obj/item/clothing/under/retro/medical, +/obj/item/clothing/under/retro/medical, +/obj/item/clothing/under/retro/science, +/obj/item/clothing/under/retro/science, +/obj/item/clothing/under/retro/security, +/obj/item/clothing/under/retro/security, +/obj/item/clothing/under/color/black{ + icon_state = "hosblueclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "hosblueclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "hosdnavyclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "hosdnavyclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "hostanclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "hostanclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "officerblueclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "officerblueclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "officerdnavyclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "officerdnavyclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "officertanclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "officertanclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "wardenblueclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "wardenblueclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "wardendnavyclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "wardendnavyclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "wardentanclothes"; + name = "jumpsuit" + }, +/obj/item/clothing/under/color/black{ + icon_state = "wardentanclothes"; + name = "jumpsuit" + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "qAN" = ( /obj/machinery/vending/wallmed/syndicate{ pixel_y = -32 }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/infteam) +"qBf" = ( +/obj/machinery/autolathe/security{ + hacked = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "dark" + }, +/area/shuttle/administration) "qBj" = ( /obj/effect/turf_decal/box{ do_not_delete_me = 1 @@ -35784,12 +35681,15 @@ icon_state = "plastitanium" }, /area/shuttle/syndicate) -"qBD" = ( +"qBn" = ( +/obj/structure/sign/securearea{ + pixel_y = -32 + }, /turf/simulated/floor/plasteel{ dir = 10; - icon_state = "navybluealtstrip" + icon_state = "navybluealt" }, -/area/centcom/supply) +/area/centcom/specops) "qBE" = ( /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/beach/water{ @@ -35829,19 +35729,14 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/infteam) -"qCq" = ( -/obj/structure/railing{ - layer = 4.3; - pixel_y = 32 - }, -/obj/machinery/computer, -/obj/structure/window/reinforced{ +"qCu" = ( +/obj/effect/turf_decal/siding/white{ dir = 8 }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/bridge) +/area/centcom/evac) "qCy" = ( /obj/structure/closet/secure_closet/freezer/meat{ broken = 1; @@ -35865,6 +35760,12 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/infteam) +"qCI" = ( +/turf/simulated/floor/indestructible{ + dir = 6; + icon_state = "darkgreynavyblue" + }, +/area/centcom/specops) "qDA" = ( /turf/simulated/floor/shuttle, /area/shuttle/mining) @@ -35877,6 +35778,26 @@ }, /turf/simulated/wall/indestructible/reinforced/rusted, /area/ninja/holding) +"qDR" = ( +/obj/structure/window/reinforced/survival_pod{ + dir = 10; + pixel_x = -1; + pixel_y = -1 + }, +/turf/simulated/wall/indestructible/reinforced, +/area/centcom/zone2) +"qDT" = ( +/obj/machinery/door/airlock/external{ + id_tag = "ferry_away"; + name = "Ferry Airlock"; + req_access = list(106) + }, +/obj/structure/fans/tiny, +/obj/effect/turf_decal/delivery/white, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "qEc" = ( /obj/effect/turf_decal/siding/red{ color = "#aa2222" @@ -35913,15 +35834,6 @@ icon_state = "darkblue" }, /area/shuttle/escape) -"qEZ" = ( -/obj/machinery/computer/account_database, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/bridge) "qFa" = ( /obj/structure/window/reinforced{ dir = 1 @@ -35933,6 +35845,12 @@ icon_state = "dark" }, /area/centcom/evac) +"qFk" = ( +/turf/simulated/floor/indestructible{ + dir = 9; + icon_state = "darkgreynavyblue" + }, +/area/centcom/specops) "qFm" = ( /obj/structure/chair/comfy/shuttle{ dir = 8 @@ -35971,10 +35889,6 @@ }, /turf/simulated/floor/grass, /area/centcom/evac) -"qFJ" = ( -/obj/structure/filingcabinet/employment, -/turf/simulated/floor/bluegrid, -/area/centcom/bridge) "qFV" = ( /turf/simulated/floor/plasteel{ dir = 9; @@ -36002,6 +35916,14 @@ /obj/effect/turf_decal/stripes/black, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/infteam) +"qGH" = ( +/obj/vehicle/ridden/motorcycle{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" + }, +/area/syndicate_mothership) "qGW" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -36012,10 +35934,6 @@ /obj/machinery/light, /turf/simulated/floor/carpet/black, /area/centcom/bridge) -"qHw" = ( -/obj/machinery/light/small, -/turf/simulated/floor/shuttle, -/area/shuttle/nt_droppod) "qHC" = ( /obj/item/deck/cards/syndicate{ pixel_x = -6; @@ -36035,6 +35953,12 @@ /obj/structure/chair/sofa/right, /turf/simulated/floor/carpet/red, /area/centcom/zone1) +"qIo" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/centcom/zone2) "qIt" = ( /obj/structure/chair/comfy/shuttle{ dir = 4 @@ -36059,18 +35983,17 @@ icon_state = "neutralcorner" }, /area/centcom/evac) -"qJi" = ( -/obj/item/storage/briefcase, -/obj/structure/table/wood/fancy/black, -/obj/item/paper/safe_code{ - owner = "NNC" +"qJo" = ( +/obj/machinery/door/poddoor/shutters{ + dir = 8; + id_tag = "ERT_Drop" }, -/obj/item/folder/yellow, -/obj/structure/sign/poster/official/nanotrasen_logo{ - pixel_y = 32 +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) +/area/centcom/specops) "qJu" = ( /obj/structure/window/reinforced, /turf/simulated/floor/grass, @@ -36082,17 +36005,55 @@ icon_state = "darkred" }, /area/shuttle/escape) -"qJV" = ( -/obj/machinery/door/airlock/centcom{ - name = "Prison"; - opacity = 1; - req_access = list(104) +"qJz" = ( +/obj/structure/rack/gunrack, +/obj/machinery/recharger/wallcharger{ + pixel_x = -24; + pixel_y = -3 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = -24; + pixel_y = 5 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = -24; + pixel_y = -11 + }, +/obj/effect/decal/warning_stripes/white, +/obj/item/gun/energy/gun/advtaser{ + pixel_x = -6 + }, +/obj/item/gun/energy/gun/advtaser{ + pixel_x = -6 + }, +/obj/item/gun/energy/gun/advtaser{ + pixel_x = -6 + }, +/obj/item/gun/energy/gun/advtaser{ + pixel_x = -6 + }, +/obj/item/gun/energy/gun/advtaser{ + pixel_x = -6 + }, +/obj/item/gun/energy/gun/advtaser{ + pixel_x = 6 + }, +/obj/item/gun/energy/gun/advtaser{ + pixel_x = 6 + }, +/obj/item/gun/energy/gun/advtaser{ + pixel_x = 6 + }, +/obj/item/gun/energy/gun/advtaser{ + pixel_x = 6 + }, +/obj/item/gun/energy/gun/advtaser{ + pixel_x = 6 }, -/obj/effect/decal/warning_stripes/red, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/jail) +/area/centcom/specops) "qJW" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo19" @@ -36102,11 +36063,34 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/infteam) -"qKq" = ( -/obj/machinery/vending/cola, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"qKp" = ( +/obj/item/gun/projectile/automatic/pistol/m1911, +/obj/item/ammo_box/magazine/m45, +/obj/item/ammo_box/magazine/m45, +/obj/item/ammo_box/magazine/m45, +/obj/item/clothing/head/helmet/space/deathsquad/beret, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/under/syndicate/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/suit/space/deathsquad/officer, +/obj/item/storage/box/handcuffs, +/obj/item/storage/box/flashbangs, +/obj/item/clothing/mask/gas, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/radio/headset/ert{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/item/storage/box/centcomofficer, +/obj/item/clothing/head/beret/centcom/officer, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 }, +/obj/structure/closet/cabinet{ + req_access = list(114) + }, +/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "qKF" = ( /obj/effect/turf_decal/stripes/line{ @@ -36133,6 +36117,13 @@ /obj/structure/window/full/shuttle, /turf/simulated/floor/shuttle/plating, /area/shuttle/pod_1) +"qLe" = ( +/obj/machinery/light/spot{ + dir = 8; + tag = "icon-tube1 (WEST)" + }, +/turf/simulated/floor/shuttle, +/area/shuttle/supply) "qLl" = ( /obj/machinery/vending/sovietsoda, /obj/effect/turf_decal/stripes/gold{ @@ -36170,6 +36161,12 @@ icon_state = "darkgrey" }, /area/syndicate_mothership/elite_squad) +"qMf" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkredalt" + }, +/area/centcom/specops) "qMv" = ( /obj/structure/statue/sandstone/assistant{ anchored = 1; @@ -36205,21 +36202,6 @@ icon_state = "white" }, /area/centcom/specops) -"qMC" = ( -/turf/simulated/wall/shuttle, -/area/shuttle/nt_droppod) -"qMO" = ( -/obj/machinery/door_control/secure{ - id = "CC_Armory_ARG"; - name = "ARG"; - pixel_x = -24; - pixel_y = -24; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkyellowcorners" - }, -/area/centcom/specops) "qNc" = ( /obj/structure/chair/wood, /turf/simulated/floor/wood, @@ -36257,6 +36239,23 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) +"qNE" = ( +/obj/structure/bookcase/manuals, +/obj/item/book/manual/security_space_law{ + pixel_x = 3 + }, +/obj/item/book/manual/security_space_law{ + pixel_x = 3 + }, +/obj/item/book/manual/security_space_law{ + pixel_x = 3 + }, +/obj/item/book/manual/security_space_law{ + pixel_x = 3 + }, +/obj/effect/turf_decal/siding/yellow, +/turf/simulated/floor/carpet, +/area/centcom/evac) "qOg" = ( /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -36268,13 +36267,15 @@ }, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"qOr" = ( -/obj/effect/decal/warning_stripes/north, +"qOk" = ( +/obj/effect/landmark/marauder_exit, +/obj/structure/fans/tiny, /obj/effect/turf_decal/tile/neutral{ - alpha = 150; + alpha = 220; color = "black"; icon_state = "tile_full"; - layer = 9 + layer = 9; + opacity = 1 }, /turf/simulated/floor/plating, /area/centcom/supply) @@ -36288,36 +36289,12 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"qOR" = ( -/obj/effect/turf_decal/tile/neutral{ - color = "black"; - icon_state = "tile_full"; - layer = 9 - }, -/obj/effect/step_trigger/teleporter{ - teleport_x = 175; - teleport_y = 61; - teleport_z = 1; - icon = 'icons/mob/screen_gen.dmi'; - icon_state = "x2" - }, -/turf/simulated/floor/plasteel{ - color = "gray"; - dir = 8; - icon_state = "rampbottom" - }, +"qOP" = ( +/obj/mecha/combat/gygax/ert/loaded, +/obj/item/mecha_parts/mecha_equipment/repair_droid, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/engine, /area/centcom/specops) -"qOT" = ( -/obj/machinery/computer/card{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/gold{ - dir = 5; - do_not_delete_me = 1; - icon_state = "gs_deadlock" - }, -/turf/simulated/floor/carpet/royalblack, -/area/shuttle/administration) "qPh" = ( /obj/structure/table/reinforced, /obj/item/kitchen/sushimat, @@ -36346,27 +36323,6 @@ }, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"qPL" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/gold{ - dir = 5; - do_not_delete_me = 1 - }, -/turf/simulated/floor/carpet/royalblack, -/area/shuttle/administration) -"qPR" = ( -/obj/structure/railing{ - pixel_y = 32; - density = 0 - }, -/turf/simulated/floor/plasteel{ - color = "gray"; - dir = 8; - icon_state = "rampbottom" - }, -/area/centcom/specops) "qQa" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22"; @@ -36418,45 +36374,6 @@ icon_state = "dark" }, /area/centcom/zone2) -"qRx" = ( -/obj/machinery/door/poddoor/shutters/invincible/fake_r_wall{ - dir = 1; - id_tag = "ERT_Quarantine" - }, -/obj/machinery/porta_turret/centcom/pulse{ - armor = list("melee"=90,"bullet"=90,"laser"=95,"energy"=95,"bomb"=80,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - color = "#666666"; - damtype = "burn"; - health = 1250; - region_max = 12; - scan_range = 12; - shot_delay = 8; - name = "Quarantine Pulse Turret" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) -"qRz" = ( -/obj/machinery/door/airlock/centcom{ - id_tag = "adminshuttle"; - name = "Bridge"; - opacity = 1; - req_access = list(101) - }, -/obj/effect/turf_decal/stripes/black{ - dir = 8; - do_not_delete_me = 1 - }, -/obj/effect/turf_decal/stripes/black{ - dir = 4; - do_not_delete_me = 1 - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "podfloor_dark" - }, -/area/shuttle/administration) "qRJ" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 8; @@ -36477,52 +36394,30 @@ /obj/item/storage/box/matches, /turf/simulated/floor/carpet/red, /area/centcom/zone1) -"qSh" = ( -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - frequency = 1331; - id_tag = "admin_s_pump" - }, -/turf/simulated/floor/shuttle{ - icon_state = "vfloor" - }, -/area/shuttle/administration) "qSv" = ( /turf/simulated/floor/plasteel{ icon_state = "darkbluealt" }, /area/syndicate_mothership/elite_squad) -"qSC" = ( -/obj/structure/window/full/reinforced{ - layer = 2 - }, -/obj/machinery/door/poddoor/shutters/invincible{ - density = 0; - dir = 8; - icon_state = "open"; - id_tag = "CC_space_jail_sec"; - layer = 50; - level = 3; +"qTo" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/airlock/gold/glass{ + frequency = 2000; + hackable = 0; + id_tag = "CC-OP4-Ext"; locked = 1; - name = "Central Command Jail"; - opacity = 0 + name = "Zone 3" }, -/turf/simulated/floor/plating, -/area/centcom/jail) +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "qTw" = ( /obj/machinery/computer/operating, /turf/simulated/floor/shuttle{ icon_state = "floor3" }, /area/shuttle/syndicate) -"qTA" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1; - pixel_y = 3 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) "qTB" = ( /obj/machinery/cryopod{ dir = 4 @@ -36532,34 +36427,21 @@ icon_state = "navyblue" }, /area/centcom/specops) -"qTI" = ( -/obj/machinery/door/airlock/shuttle{ - id_tag = "s_docking_airlock"; - name = "Labor Shuttle Airlock" +"qTJ" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 }, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 5; - id = "laborcamp"; - name = "labor camp shuttle"; - rebuildable = 1; - roundstart_move = "laborcamp_home"; - width = 9 +/obj/effect/turf_decal/siding/white{ + dir = 4 }, -/obj/structure/fans/tiny, -/obj/docking_port/stationary/transit{ - dir = 8; - dwidth = 2; - height = 5; - id = "laborcamp_transit"; - name = "labor in transit"; - pixel_x = 32; - turf_type = /turf/space/transit/north; - width = 9 +/obj/effect/turf_decal/siding/white{ + dir = 1 }, -/turf/simulated/floor/shuttle, -/area/shuttle/siberia) +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "qUb" = ( /obj/machinery/door/airlock/command/glass{ frequency = 2000; @@ -36582,50 +36464,28 @@ }, /area/centcom/zone2) "qUi" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_x = -32 }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkyellow" +/turf/simulated/floor/shuttle{ + icon_state = "floor4" }, -/area/centcom/specops) +/area/shuttle/gamma) "qUq" = ( /obj/effect/turf_decal/stripes/gold{ dir = 5 }, /turf/simulated/floor/carpet/black, /area/centcom/bridge) -"qVQ" = ( -/obj/structure/shuttle/engine/heater{ - dir = 1; - tag = "icon-heater (NORTH)" - }, -/obj/structure/window/reinforced{ - color = "red" - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/syndicate_sit) -"qVW" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/glass/beaker/cryoxadone{ - pixel_y = -2 +"qVd" = ( +/obj/structure/cable{ + icon_state = "2-6" }, -/obj/machinery/light, -/obj/item/soap/nanotrasen{ - pixel_y = 8 +/obj/machinery/photocopier{ + icon_state = "fax" }, -/turf/simulated/floor/plasteel/freezer, +/turf/simulated/floor/plating, /area/centcom/specops) -"qVX" = ( -/obj/machinery/vending/wallmed{ - pixel_x = -30; - pixel_y = 30 - }, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" - }, -/area/shuttle/specops) "qVY" = ( /obj/structure/sink{ dir = 1 @@ -36634,17 +36494,9 @@ icon_state = "white" }, /area/centcom/zone1) -"qWE" = ( -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/door/airlock/gold/glass{ - frequency = 2000; - hackable = 0; - id_tag = "CC-OP4-Ext"; - locked = 1; - name = "Zone 3" - }, +"qWa" = ( /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "darkyellowcorners" }, /area/centcom/specops) "qXa" = ( @@ -36658,13 +36510,12 @@ icon_state = "darkbluecornersalt" }, /area/syndicate_mothership/elite_squad) -"qXJ" = ( -/obj/machinery/door/window/brigdoor{ - dir = 8; - req_access = list(106) +"qXF" = ( +/obj/machinery/clonepod/upgraded, +/turf/simulated/floor/shuttle{ + icon_state = "floor3" }, -/turf/simulated/floor/wood, -/area/centcom/zone3) +/area/shuttle/administration) "qXK" = ( /obj/machinery/door_control/secure{ id = "SST_armory_mech_maintenance"; @@ -36767,6 +36618,21 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) +"qYE" = ( +/obj/structure/table/wood, +/obj/item/gavelhammer{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/gavelblock{ + pixel_x = -5; + pixel_y = -3 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/centcom/zone3) "qYO" = ( /obj/structure/lattice/catwalk, /obj/structure/marker_beacon{ @@ -36778,19 +36644,6 @@ icon_state = "router_dir" }, /area/shuttle/syndicate) -"qYU" = ( -/obj/machinery/door_control/secure{ - color = "#99ff99"; - id = "ERT_armory_vkd"; - name = "ERT Armory Level 1"; - pixel_x = -24; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkgreen" - }, -/area/centcom/specops) "qYX" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -36803,6 +36656,16 @@ icon_state = "darkbluealt" }, /area/syndicate_mothership/elite_squad) +"qZa" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "burst_l" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/pod_4) "qZj" = ( /obj/effect/turf_decal/siding/wood{ dir = 10; @@ -36822,15 +36685,6 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"qZr" = ( -/obj/structure/grille, -/obj/structure/window/full/shuttle, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "adminshuttleshutters"; - name = "Blast Shutters" - }, -/turf/simulated/floor/plating, -/area/shuttle/administration) "qZt" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -36840,19 +36694,43 @@ "qZO" = ( /turf/simulated/wall/indestructible/reinforced, /area/vox_station) +"raf" = ( +/obj/structure/table/glass, +/obj/machinery/photocopier/faxmachine/longrange{ + department = "Central Command" + }, +/obj/effect/landmark/commando_manual, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "rag" = ( /obj/machinery/light/small, /turf/simulated/floor/carpet/arcade, /area/centcom/zone1) -"ram" = ( -/obj/machinery/conveyor/inverted{ - id = "CC_crate"; - dir = 9 +"raj" = ( +/obj/machinery/computer/card{ + dir = 1 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/effect/turf_decal/stripes/gold{ + dir = 5; + do_not_delete_me = 1; + icon_state = "gs_deadlock" }, -/area/centcom/supply) +/turf/simulated/floor/carpet/royalblack, +/area/shuttle/administration) +"rbb" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1; + tag = "icon-propulsion (NORTH)" + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/funeral) "rbh" = ( /obj/machinery/computer/cryopod{ pixel_y = -32; @@ -36860,12 +36738,43 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/elite_squad) -"rbm" = ( -/obj/structure/bookcase/manuals, -/obj/item/book/manual/sop_service, -/obj/item/book/manual/sop_supply, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) +"rbv" = ( +/obj/machinery/door/airlock/hatch{ + aiControlDisabled = 1; + frequency = 1331; + hackProof = 1; + id_tag = "vox_northeast_lock"; + locked = 1; + req_access = list(152) + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1331; + master_tag = "vox_east_control"; + pixel_x = 28; + req_access = list(152); + wires = 1 + }, +/obj/docking_port/mobile{ + dir = 2; + dwidth = 2; + height = 18; + id = "skipjack"; + name = "Vox Skipjack"; + roundstart_move = "skipjack_away"; + width = 19 + }, +/obj/structure/fans/tiny, +/obj/docking_port/stationary{ + dir = 2; + dwidth = 2; + height = 18; + id = "skipjack_away"; + name = "vox bay 1"; + width = 19 + }, +/turf/simulated/floor/shuttle/plating/vox, +/area/shuttle/vox) "rby" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo2" @@ -36875,6 +36784,15 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/jail) +"rbD" = ( +/obj/structure/toilet{ + dir = 8; + pixel_y = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/centcom/zone3) "rbO" = ( /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -36885,40 +36803,19 @@ icon_state = "dark" }, /area/syndicate_mothership/outside) -"rbV" = ( -/obj/mecha/combat/marauder/seraph{ - armor = list("melee"=80,"bullet"=80,"laser"=80,"energy"=80,"bomb"=80,"bio"=80,"rad"=80,"fire"=100,"acid"=100); - color = "#006666"; - name = "Rocinante" - }, -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang, -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg/dual{ - fire_sound = 'sound/weapons/gunshots/gunshot_strong.ogg'; - name = "Automatic 20mm cannone"; - projectile_delay = 0.5; - projectiles_per_shot = 10 - }, -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/heavy{ - name = "Heavy 83mm HE RL" - }, -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot{ - name = "Destroyer of the present"; - projectiles = 70; - projectiles_per_shot = 7 +"rbZ" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/machinery/light{ + dir = 4 }, -/obj/item/mecha_parts/mecha_equipment/weapon/energy/xray/triple, -/obj/item/mecha_parts/mecha_equipment/teleporter/precise, -/obj/item/mecha_parts/mecha_equipment/repair_droid, -/obj/effect/turf_decal/mech, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 +/obj/effect/turf_decal/stripes/black{ + dir = 8; + do_not_delete_me = 1 }, -/obj/effect/decal/warning_stripes/west, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/turf/simulated/floor/shuttle{ + icon_state = "vfloor" }, -/area/centcom/specops) +/area/shuttle/administration) "rca" = ( /obj/effect/turf_decal{ dir = 5; @@ -36939,15 +36836,17 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"rcp" = ( -/obj/machinery/door/firedoor, -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/door/poddoor/impassable/preopen{ - id_tag = "ERT_Quarantine"; - name = "ERT Quarantine" +"rck" = ( +/obj/machinery/door_control/secure{ + color = "#ffdd99"; + id = "ERT_armory_lvl4"; + name = "ERT Armory Level 4"; + pixel_y = -32; + req_access = list(114) }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 9; + icon_state = "darkyellow" }, /area/centcom/specops) "rcs" = ( @@ -36981,6 +36880,28 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/control) +"rcB" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/airlock_sensor{ + frequency = 1331; + id_tag = "admin_s_sensor"; + pixel_y = 26; + req_access = list(101) + }, +/turf/simulated/floor/shuttle{ + icon_state = "vfloor" + }, +/area/shuttle/administration) +"rcD" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/gloves/color/latex/nitrile, +/obj/item/storage/toolbox/surgery, +/turf/simulated/floor/shuttle{ + icon_state = "floor3" + }, +/area/shuttle/administration) "rcE" = ( /obj/effect/turf_decal/stripes/line{ dir = 1; @@ -36990,6 +36911,17 @@ icon_state = "floor12" }, /area/shuttle/syndicate) +"rcK" = ( +/obj/effect/turf_decal/tile/neutral{ + color = "black"; + icon_state = "tile_full" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/centcom/specops) "rcN" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -37006,26 +36938,12 @@ /obj/structure/AIcore, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) -"rdF" = ( -/obj/machinery/recharger/wallcharger{ - pixel_x = 4; - pixel_y = 32 - }, -/obj/machinery/light/spot{ +"rdz" = ( +/turf/simulated/floor/plasteel{ dir = 1; - tag = "icon-tube1 (NORTH)" - }, -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/item/radio/intercom/specops{ - pixel_x = 35; - pixel_y = 10 - }, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" + icon_state = "navyblue" }, -/area/shuttle/specops) +/area/centcom/supplypod/loading/ert) "rdZ" = ( /obj/machinery/light/small{ dir = 8 @@ -37047,13 +36965,14 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/infteam) -"rep" = ( -/obj/structure/chair/comfy/lime{ - dir = 1 +"reu" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 4 }, -/obj/structure/window/reinforced, /turf/simulated/floor/wood, -/area/centcom/zone3) +/area/centcom/specops) "rew" = ( /obj/machinery/door/poddoor/impassable{ id_tag = "nukeop_storage"; @@ -37063,16 +36982,27 @@ icon_state = "darkgrey" }, /area/syndicate_mothership) -"reE" = ( -/obj/machinery/computer/station_alert, -/obj/structure/window/reinforced{ - dir = 4 +"rey" = ( +/obj/item/grenade/empgrenade, +/obj/item/grenade/empgrenade, +/obj/item/grenade/empgrenade, +/obj/item/grenade/empgrenade, +/obj/item/grenade/empgrenade, +/obj/item/grenade/empgrenade, +/obj/item/grenade/empgrenade, +/obj/item/grenade/empgrenade, +/obj/item/grenade/empgrenade, +/obj/item/grenade/empgrenade, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + damage_deflection = 2000; + layer = 2.9; + name = "EMP grenade"; + req_access = list(114) }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "reF" = ( /obj/structure/closet/secure_closet/mime{ @@ -37127,6 +37057,19 @@ }, /turf/simulated/floor/carpet/black, /area/centcom/zone1) +"rgg" = ( +/obj/structure/table/glass, +/obj/item/clipboard, +/obj/item/lighter/zippo/blue{ + pixel_x = -5; + pixel_y = 8 + }, +/obj/item/clothing/mask/cigarette/cigar/cohiba{ + pixel_x = -4; + pixel_y = 9 + }, +/turf/simulated/floor/carpet/cyan, +/area/centcom/zone2) "rgB" = ( /obj/structure/fans/tiny/invisible, /turf/simulated/floor/plasteel{ @@ -37149,6 +37092,21 @@ icon_state = "darkyellowaltstrip" }, /area/centcom/supply) +"rhn" = ( +/obj/effect/turf_decal/stripes/line{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding4" + }, +/obj/effect/turf_decal/tile/neutral{ + alpha = 75; + color = "black"; + icon_state = "tile_full" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "rampbottom" + }, +/area/centcom/supply) "rhx" = ( /obj/structure/table/wood/fancy, /obj/effect/spawner/lootdrop{ @@ -37166,27 +37124,19 @@ icon_state = "floor4" }, /area/shuttle/syndicate) -"rhK" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 1; - icon_state = "propulsion_l"; - tag = "icon-propulsion_l (NORTH)" +"rhO" = ( +/obj/machinery/door/poddoor{ + id_tag = "ASSAULT3"; + name = "Launch Bay #3" }, -/turf/simulated/floor/plating/airless, -/area/shuttle/syndicate_elite) -"rhT" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/snacks/grown/citrus/lemon, -/obj/item/reagent_containers/food/snacks/grown/citrus/lime, -/obj/item/reagent_containers/food/snacks/grown/citrus/orange, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"ric" = ( -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "navybluealt" +/obj/effect/turf_decal/tile/neutral{ + alpha = 75; + color = "black"; + icon_state = "tile_full"; + layer = 9 }, -/area/centcom/specops) +/turf/simulated/floor/plating, +/area/centcom/supply) "rim" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -37200,6 +37150,26 @@ icon_state = "warndarkgreycornerred" }, /area/syndicate_mothership/infteam) +"riy" = ( +/obj/effect/turf_decal/tile/neutral{ + alpha = 85; + icon = 'icons/misc/beach.dmi'; + icon_state = "seadeep"; + layer = 9 + }, +/obj/structure/window/reinforced{ + dir = 4; + layer = 9.1 + }, +/obj/structure/flora/rock/pile, +/obj/structure/window/reinforced/survival_pod{ + density = 0; + dir = 6; + pixel_x = 1; + pixel_y = -7 + }, +/turf/simulated/floor/indestructible/beach/water/deep/sand_floor, +/area/centcom/specops) "riz" = ( /turf/simulated/floor/wood{ icon_state = "fancy-wood-cherry" @@ -37212,7 +37182,15 @@ icon_state = "warndarkgreycornerred" }, /area/syndicate_mothership/elite_squad) -"rjt" = ( +"riL" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "N2O" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) +"rjt" = ( /obj/structure/chair/sofa/left{ dir = 4 }, @@ -37234,27 +37212,37 @@ icon_state = "navybluealt" }, /area/syndicate_mothership/control) -"rjy" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2; - armor = list("melee"=100,"bullet"=100,"laser"=0,"energy"=0,"bomb"=25,"bio"=100,"rad"=100,"fire"=80,"acid"=100) +"rjw" = ( +/obj/item/gun/energy/sniperrifle{ + pixel_x = -6 + }, +/obj/item/gun/energy/sniperrifle{ + pixel_x = 6 }, +/obj/structure/rack/gunrack, +/obj/effect/decal/warning_stripes/red/hollow, /turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "navybluealt" + icon_state = "dark" }, /area/centcom/specops) "rjE" = ( /obj/structure/table/glass, /turf/simulated/floor/carpet/black, /area/centcom/specops) -"rjY" = ( -/obj/structure/shuttle/engine/heater{ - icon_state = "heater3x3_side"; - tag = "icon-heater (NORTH)" +"rjF" = ( +/obj/effect/turf_decal/siding/white/corner, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) +"rjH" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/turf_decal/siding/white{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/turf/simulated/floor/plating/airless, /area/centcom/jail) "rkx" = ( /obj/structure/fans/tiny/invisible, @@ -37263,6 +37251,15 @@ icon_state = "warndarkgreyred" }, /area/syndicate_mothership/elite_squad) +"rky" = ( +/obj/mecha/combat/gygax/ert{ + color = "#66ff99"; + name = "Assault Jaeger" + }, +/turf/simulated/floor/plasteel{ + icon_state = "navybluecorners" + }, +/area/centcom/specops) "rkN" = ( /obj/structure/chair/comfy/purp{ dir = 8 @@ -37290,6 +37287,25 @@ icon_state = "warndarkgreycornerred" }, /area/syndicate_mothership/elite_squad) +"rlz" = ( +/obj/structure/sign/poster/official/obey{ + pixel_x = -32; + pixel_y = -3 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredalt" + }, +/area/centcom/jail) +"rlF" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4; + pixel_x = -14 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) "rlQ" = ( /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -37350,29 +37366,26 @@ /obj/structure/flora/tree/dead, /turf/simulated/floor/indestructible/snow, /area/ninja/outside) +"rnv" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone3) "rny" = ( /turf/simulated/floor/beach/water{ icon_state = "seadeep" }, /area/centcom/zone1) -"rnJ" = ( -/obj/structure/table/wood{ - color = "#996633" - }, -/obj/item/pen/multi/fountain{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/pen/multi/fountain{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/pen/multi/fountain{ - pixel_x = 5; - pixel_y = 5 +"rnH" = ( +/obj/effect/turf_decal/arrows, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkyellowaltstrip" }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) +/area/centcom/supply) "rnN" = ( /obj/structure/chair/office/dark{ dir = 8 @@ -37388,15 +37401,6 @@ }, /turf/simulated/floor/carpet/black, /area/centcom/zone1) -"roe" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden, -/turf/simulated/floor/shuttle{ - icon_state = "vfloor" - }, -/area/shuttle/administration) -"rof" = ( -/turf/simulated/wall/shuttle/onlyselfsmooth, -/area/shuttle/pod_2) "roj" = ( /obj/item/twohanded/required/kirbyplants, /obj/machinery/light{ @@ -37478,37 +37482,6 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"rps" = ( -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/door/airlock/gold/glass{ - frequency = 2000; - hackable = 0; - id_tag = "CC-OP3-Ext"; - locked = 1; - name = "Zone 3" - }, -/obj/machinery/access_button{ - command = "cycle_exterior"; - frequency = 2000; - master_tag = "CC-OP3"; - name = "CC-OP3-EXT"; - pixel_x = -32; - req_access = list(109); - wires = 0 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone3) -"rpx" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/structure/sign/restroom{ - pixel_x = 32 - }, -/turf/simulated/floor/wood{ - icon_state = "light-fancy-wood" - }, -/area/centcom/specops) "rpG" = ( /obj/machinery/door/poddoor/impassable{ id_tag = "SST_armory_main"; @@ -37518,32 +37491,6 @@ icon_state = "darkbluealtstrip" }, /area/syndicate_mothership/elite_squad) -"rpJ" = ( -/obj/structure/table/glass, -/obj/item/paper_bin/nanotrasen, -/obj/item/pen/multi/fountain, -/obj/item/stamp/centcom{ - pixel_x = -5; - pixel_y = -7 - }, -/obj/item/radio/intercom/specops{ - pixel_x = -32 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"rpP" = ( -/obj/structure/sign/poster/official/kill_syndicate{ - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "navybluealt" - }, -/area/centcom/specops) "rpQ" = ( /obj/machinery/vending/security, /obj/machinery/light/spot{ @@ -37574,6 +37521,18 @@ }, /turf/simulated/floor/carpet/arcade, /area/centcom/bridge) +"rqr" = ( +/obj/structure/table/wood/fancy/royalblack, +/obj/item/candle/eternal, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = 6; + pixel_y = 9 + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "dark" + }, +/area/shuttle/administration) "rqs" = ( /obj/effect/turf_decal/siding/wideplating/corner{ color = "#55391A"; @@ -37625,19 +37584,6 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/jail) -"rrh" = ( -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/conveyor{ - id = "N2O"; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "rro" = ( /obj/machinery/door/airlock/syndicate/public{ name = "Toilet" @@ -37646,16 +37592,6 @@ icon_state = "freezerfloor" }, /area/syndicate_mothership/elite_squad) -"rrD" = ( -/obj/machinery/computer/camera_advanced, -/obj/structure/railing, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/bridge) "rrK" = ( /obj/machinery/light{ dir = 1 @@ -37668,6 +37604,13 @@ /obj/structure/flora/junglebush/c, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) +"rrU" = ( +/obj/effect/turf_decal/stripes/black{ + dir = 6; + do_not_delete_me = 1 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/administration) "rsy" = ( /obj/effect/turf_decal/stripes/gold{ dir = 6 @@ -37677,15 +37620,6 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/infteam) -"rsB" = ( -/obj/mecha/combat/gygax/ert{ - color = "#66ff99"; - name = "Assault Jaeger" - }, -/turf/simulated/floor/plasteel{ - icon_state = "navybluecorners" - }, -/area/centcom/specops) "rsS" = ( /obj/item/flag/med, /obj/machinery/light/spot{ @@ -37703,11 +37637,6 @@ icon_state = "darkgrey" }, /area/syndicate_mothership) -"rtr" = ( -/obj/structure/table, -/obj/item/gift, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "rtM" = ( /obj/machinery/light/small{ dir = 4 @@ -37717,6 +37646,16 @@ icon_state = "darkgrey" }, /area/syndicate_mothership) +"rtO" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/table/wood, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/evac) "rug" = ( /turf/simulated/wall/shuttle/nosmooth{ dir = 5; @@ -37724,6 +37663,14 @@ icon_state = "ninja_walls_corners" }, /area/shuttle/ninja) +"ruh" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1; + icon_state = "propulsion_l"; + tag = "icon-propulsion_l (NORTH)" + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/syndicate_sit) "ruj" = ( /obj/structure/table/reinforced, /obj/item/pizzabox/hawaiian, @@ -37745,6 +37692,12 @@ icon_state = "white" }, /area/centcom/zone1) +"ruu" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkbluealt" + }, +/area/centcom/specops) "ruB" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -37775,13 +37728,6 @@ water_overlay_icon_state = null }, /area/syndicate_mothership/outside) -"rvj" = ( -/obj/machinery/cryopod{ - dir = 4 - }, -/obj/structure/window/reinforced, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/zone1) "rvw" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/syndicate{ @@ -37793,6 +37739,14 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) +"rvV" = ( +/obj/machinery/vending/mech/ntc/weapon{ + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "rwi" = ( /obj/structure/holosign/wetsign, /turf/simulated/floor/plasteel{ @@ -37800,6 +37754,23 @@ icon_state = "neutral" }, /area/centcom/evac) +"rwu" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1; + icon_state = "propulsion_l"; + tag = "icon-propulsion_l (NORTH)" + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/syndicate_elite) +"rwv" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/centcom/specops) "rwB" = ( /obj/structure/fans/tiny/invisible, /turf/simulated/floor/plasteel{ @@ -37833,16 +37804,6 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"rxs" = ( -/turf/simulated/floor/wood{ - icon_state = "wood-broken6" - }, -/area/centcom/zone2) -"rxw" = ( -/turf/simulated/floor/plasteel{ - icon_state = "darkredcornersalt" - }, -/area/centcom/specops) "rxy" = ( /obj/machinery/door/poddoor/impassable{ id_tag = "SST_armory_mech_maintenance"; @@ -37850,15 +37811,6 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) -"rxC" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen/multi/fountain, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkredalt" - }, -/area/centcom/jail) "rxE" = ( /turf/simulated/floor/plasteel{ icon_state = "redfull"; @@ -37882,18 +37834,6 @@ icon_state = "Dark" }, /area/shuttle/funeral) -"rxO" = ( -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/item/reagent_containers/spray/pestspray, -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/item/reagent_containers/spray/pestspray, -/obj/item/clothing/gloves/botanic_leather, -/obj/structure/table/reinforced, -/turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/centcom/jail) "rxS" = ( /turf/simulated/floor/shuttle{ icon_state = "floor3" @@ -37917,55 +37857,24 @@ icon_state = "grimy" }, /area/centcom/zone1) -"ryj" = ( -/obj/structure/table/wood, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/reagent_containers/glass/beaker/waterbottle, -/obj/item/reagent_containers/food/drinks/drinkingglass{ - pixel_x = -5 - }, -/turf/simulated/floor/carpet, -/area/centcom/zone3) "ryw" = ( /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/elite_squad) -"ryN" = ( -/turf/simulated/wall/shuttle/onlyselfsmooth, -/area/shuttle/transport) -"ryO" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/door/window/brigdoor{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister/oxygen{ - maximum_pressure = 50000; - anchored = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkbluefull" - }, -/area/centcom/specops) "ryR" = ( /turf/simulated/floor/light/colour_cycle/dancefloor_b, /area/centcom/zone1) -"rzg" = ( -/obj/machinery/light/spot{ - dir = 8; - tag = "icon-tube1 (WEST)" +"rzx" = ( +/obj/machinery/conveyor{ + id = "CC_crate" }, -/obj/machinery/computer/camera_advanced/shuttle_docker/ert, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/area/shuttle/specops) +/area/centcom/supply) +"rzE" = ( +/obj/item/book/random, +/turf/simulated/floor/wood, +/area/centcom/zone2) "rzJ" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -37977,17 +37886,6 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) -"rzO" = ( -/obj/effect/decal/warning_stripes/northwestsouth, -/obj/machinery/door/poddoor/shutters/preopen/invincible{ - id_tag = "ERT_armory_lvl1"; - name = "Armory level 1"; - dir = 2 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" - }, -/area/centcom/specops) "rAb" = ( /obj/machinery/mech_bay_recharge_port/upgraded/unsimulated{ dir = 8 @@ -38002,21 +37900,6 @@ /obj/effect/turf_decal/bot_white, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) -"rAp" = ( -/obj/structure/closet/l3closet/security, -/obj/item/clothing/mask/gas, -/obj/item/tank/internals/emergency_oxygen/double, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/watertank/janitor{ - max_integrity = 1500; - volume = 1500 - }, -/obj/item/grenade/chem_grenade/cleaner, -/turf/simulated/floor/indestructible{ - dir = 9; - icon_state = "darkpurple" - }, -/area/centcom/specops) "rAu" = ( /turf/simulated/wall/shuttle/nosmooth{ dir = 8; @@ -38024,37 +37907,16 @@ icon_state = "ninja_walls_direction" }, /area/shuttle/ninja) -"rAB" = ( -/obj/structure/table/glass, -/obj/item/folder/blue{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/paper/rnd_logs_key{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/paper/monitorkey{ - pixel_y = 4; - pixel_x = 3 - }, -/obj/item/paper/safe_code{ - owner = "captain"; - pixel_y = 1 - }, -/obj/item/paper/safe_code{ - owner = "hos"; - pixel_y = -2; - pixel_x = -3 - }, -/turf/simulated/floor/carpet/cyan, -/area/centcom/zone2) "rAG" = ( /obj/effect/decal/cleanable/blood, /turf/simulated/floor/plasteel{ icon_state = "darkfull" }, /area/syndicate_mothership) +"rAR" = ( +/obj/structure/chair/comfy/shuttle, +/turf/simulated/floor/shuttle, +/area/shuttle/nt_droppod) "rAW" = ( /obj/structure/table/wood/fancy/black, /obj/item/storage/fancy/cigarettes/cigpack_random, @@ -38088,18 +37950,18 @@ "rBp" = ( /turf/simulated/floor/carpet/cyan, /area/centcom/zone1) -"rBA" = ( -/obj/machinery/status_display{ - pixel_y = 32 - }, -/obj/item/flag/nt, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) -"rBJ" = ( -/obj/effect/turf_decal/siding/brown{ +"rBs" = ( +/obj/structure/chair/comfy/shuttle{ dir = 8 }, -/turf/simulated/floor/carpet/black, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/centcom/specops) +"rCg" = ( +/obj/item/book/random, +/turf/simulated/floor/plating, /area/centcom/zone2) "rCi" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ @@ -38119,6 +37981,21 @@ icon_state = "dark" }, /area/shuttle/syndicate) +"rCS" = ( +/obj/structure/shuttle/engine/platform{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/plasmareinforced{ + color = "#00f700" + }, +/obj/structure/shuttle/engine/heater{ + dir = 1; + icon_state = "heater2x2"; + tag = "icon-heater (NORTH)" + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/ninja) "rDb" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -38130,16 +38007,26 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) -"rDf" = ( -/obj/structure/table/glass, -/obj/structure/sign/poster/official/safety_report{ - pixel_y = 32 +"rDd" = ( +/obj/effect/turf_decal/arrows{ + dir = 8 + }, +/obj/machinery/door_control/secure{ + id = "Drop"; + name = "Massdriver Shutters"; + pixel_y = 24; + req_access = list(114) }, /turf/simulated/floor/plasteel{ dir = 1; - icon_state = "darkredalt" + icon_state = "darkyellowalt" }, -/area/centcom/specops) +/area/centcom/supply) +"rDf" = ( +/turf/simulated/floor/shuttle{ + icon_state = "vfloor" + }, +/area/shuttle/administration) "rDm" = ( /obj/structure/table/wood/fancy/orange, /obj/item/paper_bin{ @@ -38169,19 +38056,13 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) -"rDB" = ( -/obj/machinery/vending/mech/ntc/tools, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) -"rDM" = ( -/obj/structure/dresser, -/obj/structure/window/reinforced{ +"rDy" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; dir = 4 }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/zone1) +/turf/simulated/floor/glass, +/area/centcom/bridge) "rDS" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -38196,84 +38077,40 @@ }, /turf/simulated/floor/grass, /area/centcom/evac) -"rEn" = ( -/obj/structure/table/reinforced, -/obj/machinery/door_control/secure{ - id = "ERT_director_office_shutters2"; - name = "Briefing"; - pixel_x = 6; - pixel_y = -2; - req_access = list(114) - }, -/obj/machinery/door_control/secure{ - color = "#ff9999"; - id = "ERT_armory_lvl3"; - name = "ERT Armory Level 3"; - req_access = list(114); - pixel_x = -6; - pixel_y = 8 - }, -/obj/machinery/door_control/secure{ - color = "#99ff99"; - id = "ERT_armory_lvl1"; - name = "ERT Armory Level 1"; - req_access = list(114); - pixel_x = -6; - pixel_y = -8 - }, -/obj/machinery/door_control/secure{ - color = "#9999ff"; - id = "ERT_armory_lvl2"; - name = "ERT Armory Level 2"; - req_access = list(114); - pixel_x = -6 - }, -/obj/machinery/door_control{ - id = "ERT_Quarantine"; - name = "ERT Quarantine"; - req_access = list(114); - pixel_y = 6; - pixel_x = 6 - }, -/obj/machinery/door_control/secure{ - color = "#ffdd99"; - id = "ERT_armory_lvl4"; - name = "ERT Armory Level 4"; - req_access = list(114); - pixel_x = 6; - pixel_y = -14 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"rEu" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 - }, -/turf/simulated/floor/glass, -/area/centcom/zone3) "rFb" = ( /turf/simulated/floor/shuttle, /area/shuttle/pod_2) -"rFx" = ( +"rFp" = ( +/obj/item/flag/nt, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) +"rFC" = ( +/obj/item/vending_refill/nta, +/obj/structure/rack/holorack, +/obj/item/vending_refill/nta, +/obj/item/vending_refill/nta, +/obj/item/vending_refill/nta, +/obj/item/vending_refill/nta, +/obj/item/vending_refill/nta, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkredalt" + icon_state = "dark" }, -/area/centcom/zone2) +/area/centcom/supply) "rFP" = ( /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, /area/syndicate_mothership/elite_squad) +"rFY" = ( +/obj/effect/step_trigger/teleporter{ + icon = 'icons/mob/screen_gen.dmi'; + icon_state = "x2"; + teleport_x = 205; + teleport_y = 89; + teleport_z = 1 + }, +/turf/space, +/area/space) "rGl" = ( /obj/machinery/libraryscanner, /turf/simulated/floor/plasteel{ @@ -38292,6 +38129,18 @@ }, /turf/simulated/floor/wood/fancy/light, /area/ninja/outpost) +"rGF" = ( +/obj/structure/table/reinforced, +/obj/item/stack/nanopaste, +/obj/item/mmi, +/obj/item/stack/nanopaste, +/obj/structure/sink{ + dir = 1 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor3" + }, +/area/shuttle/administration) "rGH" = ( /obj/effect/turf_decal{ dir = 6; @@ -38321,15 +38170,6 @@ }, /turf/simulated/floor/plating, /area/syndicate_mothership/cargo) -"rGZ" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "vault" - }, -/area/centcom/specops) "rHb" = ( /obj/structure/table/wood/fancy/black, /obj/item/deck/cards/syndicate/black{ @@ -38350,15 +38190,6 @@ }, /turf/simulated/floor/carpet/red, /area/syndicate_mothership/control) -"rHl" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/turf_decal/siding/white, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/evac) "rHo" = ( /obj/structure/mopbucket, /obj/item/mop, @@ -38375,17 +38206,79 @@ icon_state = "fancy-wood-oak-broken" }, /area/syndicate_mothership/infteam) +"rHK" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/glass/beaker/cryoxadone{ + pixel_y = -2 + }, +/obj/machinery/light, +/obj/item/soap/nanotrasen{ + pixel_y = 8 + }, +/turf/simulated/floor/plasteel/freezer, +/area/centcom/specops) "rHU" = ( /turf/simulated/floor/indestructible/beach/coastline{ water_overlay_icon_state = null }, /area/syndicate_mothership/outside) +"rHV" = ( +/obj/effect/turf_decal/siding/white{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) +"rHW" = ( +/obj/structure/table/reinforced, +/obj/machinery/reagentgrinder{ + pixel_x = -1; + pixel_y = 9 + }, +/obj/machinery/light, +/turf/simulated/floor/engine, +/area/centcom/specops) "rIb" = ( /obj/effect/decal/warning_stripes/white/hollow, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/specops) +"rId" = ( +/obj/structure/rack/gunrack, +/obj/effect/decal/warning_stripes/blue/hollow, +/obj/item/gun/projectile/automatic/lasercarbine{ + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/lasercarbine{ + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/lasercarbine{ + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/lasercarbine{ + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/lasercarbine{ + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/lasercarbine{ + pixel_x = 6 + }, +/obj/item/gun/projectile/automatic/lasercarbine{ + pixel_x = 6 + }, +/obj/item/gun/projectile/automatic/lasercarbine{ + pixel_x = 6 + }, +/obj/item/gun/projectile/automatic/lasercarbine{ + pixel_x = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "rIf" = ( /obj/effect/baseturf_helper{ baseturf = /turf/simulated/floor/indestructible/asteroid; @@ -38393,21 +38286,12 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/control) -"rIi" = ( -/obj/machinery/atmospherics/pipe/simple/visible{ - dir = 9 - }, -/turf/simulated/floor/wood, -/area/centcom/zone3) -"rIw" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/sign/poster/official/ian{ - pixel_y = 31 +"rIE" = ( +/obj/effect/decal/cleanable/fungus{ + pixel_x = -32; + pixel_y = 32 }, -/obj/machinery/photocopier, -/turf/simulated/floor/carpet/black, +/turf/simulated/floor/plating, /area/centcom/zone2) "rIL" = ( /obj/machinery/vending/cigarette/syndicate/free, @@ -38415,25 +38299,14 @@ icon_state = "fancy-wood-oak-broken6" }, /area/syndicate_mothership/infteam) -"rIS" = ( -/obj/structure/table, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/folder/red{ - pixel_x = -5; - pixel_y = -5 - }, -/obj/item/folder/yellow{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/folder/white{ - pixel_x = -5; - pixel_y = 5 +"rIY" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 }, -/turf/simulated/floor/carpet, -/area/centcom/zone2) +/obj/machinery/computer/communications, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "rJa" = ( /obj/structure/curtain/open/shower/security, /obj/machinery/shower{ @@ -38443,20 +38316,13 @@ icon_state = "freezerfloor" }, /area/syndicate_mothership/infteam) -"rJz" = ( -/obj/item/flag/nt, -/obj/machinery/recharger/wallcharger{ - pixel_x = 32; - pixel_y = -2 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 - }, -/obj/effect/decal/warning_stripes/northwest, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"rJF" = ( +/obj/structure/window/full/reinforced{ + armor = list("melee"=80,"bullet"=80,"laser"=0,"energy"=0,"bomb"=80,"bio"=100,"rad"=100,"fire"=80,"acid"=100); + layer = 5 }, +/obj/structure/flora/ausbushes/genericbush, +/turf/simulated/floor/grass, /area/centcom/specops) "rKb" = ( /obj/effect/turf_decal/siding/wideplating{ @@ -38471,6 +38337,23 @@ icon_state = "grimy" }, /area/syndicate_mothership) +"rKd" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external, +/obj/docking_port/mobile{ + alone_shuttle = 1; + dir = 8; + dwidth = 2; + height = 7; + id = "funeral"; + name = "Funeral shuttle"; + port_direction = 8; + preferred_direction = 2; + roundstart_move = "graveyard_dock"; + width = 10 + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/funeral) "rKo" = ( /obj/structure/mirror{ pixel_y = 30 @@ -38479,6 +38362,19 @@ icon_state = "freezerfloor" }, /area/syndicate_mothership/infteam) +"rKq" = ( +/obj/structure/noticeboard{ + pixel_x = -32; + pixel_y = 32 + }, +/obj/item/paper{ + info = "Передвинуть бойлер с водой" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/centcom/zone2) "rKE" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-32"; @@ -38494,13 +38390,6 @@ /obj/structure/safe, /turf/simulated/floor/wood, /area/centcom/zone2) -"rKR" = ( -/obj/effect/turf_decal/caution/stand_clear/red, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkbluealtstrip" - }, -/area/centcom/zone2) "rKY" = ( /obj/machinery/light/small{ dir = 1 @@ -38515,12 +38404,25 @@ icon_state = "freezerfloor" }, /area/syndicate_mothership/infteam) +"rLc" = ( +/obj/structure/table/wood/fancy/black, +/turf/simulated/floor/carpet/red, +/area/centcom/bridge) "rLk" = ( -/obj/machinery/computer/borgupload, +/obj/machinery/computer/aiupload/cyborg, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/bridge) +"rLo" = ( +/obj/structure/sign/greencross{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredalt" + }, +/area/centcom/jail) "rLr" = ( /obj/effect/turf_decal/stripes/asteroid/line{ dir = 10 @@ -38530,41 +38432,25 @@ icon_state = "asteroid" }, /area/centcom/evac) -"rLO" = ( -/obj/structure/bush, -/turf/simulated/floor/grass, -/area/centcom/evac) -"rLT" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - dir = 2; - id_tag = "CC_supply_internal2"; - layer = 5; - locked = 1 +"rLA" = ( +/obj/effect/turf_decal/tile/neutral{ + color = "black"; + icon_state = "tile_full" }, -/obj/machinery/door_control/secure{ - id = "CC_supply_internal2"; - name = "Supply External Shutters"; - req_access = list(114); - pixel_x = -24 +/obj/structure/railing{ + density = 0; + layer = 4.3 }, /turf/simulated/floor/plasteel{ dir = 8; - icon_state = "darkyellowalt" - }, -/area/centcom/supply) -"rLX" = ( -/obj/effect/decal/warning_stripes/northwestsouth, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 1; - id_tag = "ERT_armory_lvl2"; - name = "Armory level 2"; - layer = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" + icon_state = "rampbottom"; + tag = "icon-stage_stairs" }, /area/centcom/specops) +"rLO" = ( +/obj/structure/bush, +/turf/simulated/floor/grass, +/area/centcom/evac) "rMa" = ( /obj/machinery/door/poddoor/shutters/invincible{ dir = 8; @@ -38575,6 +38461,12 @@ }, /turf/simulated/wall/indestructible/fakeglass, /area/centcom/jail) +"rMh" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/turf/simulated/floor/shuttle{ + icon_state = "vfloor" + }, +/area/shuttle/administration) "rMn" = ( /obj/structure/toilet, /turf/simulated/floor/plasteel{ @@ -38590,6 +38482,32 @@ /obj/structure/flora/ausbushes/lavendergrass, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) +"rNd" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/simulated/floor/indestructible{ + dir = 8; + icon_state = "vault"; + name = "Operative position" + }, +/area/centcom/specops) +"rNf" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 1; + id = "N2" + }, +/obj/machinery/portable_atmospherics/canister/nitrogen{ + maximum_pressure = 50000 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "rNs" = ( /obj/machinery/sleeper{ dir = 4 @@ -38598,39 +38516,38 @@ icon_state = "barber" }, /area/centcom/jail) +"rNB" = ( +/obj/structure/rack/holorack, +/obj/item/nullrod, +/obj/item/nullrod, +/obj/item/nullrod, +/obj/item/melee/baton/telescopic, +/obj/item/melee/baton/telescopic, +/obj/item/melee/baton/telescopic, +/obj/item/melee/baton/telescopic, +/obj/structure/window/reinforced{ + dir = 4; + layer = 2.9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "rNF" = ( /obj/structure/fence/corner{ invulnerable = 1 }, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"rNJ" = ( -/obj/item/flag/nt, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) -"rOc" = ( -/obj/item/ammo_box/magazine/laser, -/obj/item/ammo_box/magazine/laser, -/obj/item/ammo_box/magazine/laser, -/obj/item/ammo_box/magazine/laser, -/obj/item/ammo_box/magazine/laser, -/obj/item/ammo_box/magazine/laser, -/obj/item/ammo_box/magazine/laser, -/obj/item/ammo_box/magazine/laser, -/obj/item/ammo_box/magazine/laser, -/obj/item/ammo_box/magazine/laser, -/obj/item/ammo_box/magazine/laser, -/obj/item/ammo_box/magazine/laser, -/obj/item/ammo_box/magazine/laser, -/obj/item/ammo_box/magazine/laser, -/obj/item/ammo_box/magazine/laser, -/obj/item/ammo_box/magazine/laser, -/obj/structure/table/reinforced, -/obj/effect/decal/warning_stripes/blue/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"rOb" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = -32 }, -/area/centcom/specops) +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "rOi" = ( /obj/structure/chair/comfy/shuttle{ dir = 4 @@ -38641,15 +38558,6 @@ icon_state = "darkreddarkfull" }, /area/shuttle/escape) -"rOj" = ( -/obj/machinery/vending/ntc/janitor, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "rOl" = ( /obj/effect/decal/syndie_logo, /obj/effect/turf_decal/stripes/black{ @@ -38687,16 +38595,11 @@ icon_state = "darkred" }, /area/shuttle/escape) -"rQc" = ( -/obj/structure/table/wood{ - color = "#996633" - }, -/obj/item/paper_bin/nanotrasen{ - pixel_x = -2; - pixel_y = 8 +"rPH" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/obj/item/pen/multi/gold, -/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "rQr" = ( /obj/machinery/door/poddoor/impassable{ @@ -38706,17 +38609,6 @@ icon_state = "darkgrey" }, /area/syndicate_mothership/elite_squad) -"rQt" = ( -/obj/machinery/door/airlock/centcom{ - name = "Prison"; - opacity = 1; - req_access = list(104) - }, -/obj/effect/decal/warning_stripes/red, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/centcom/jail) "rQy" = ( /obj/structure/window/reinforced{ dir = 4 @@ -38740,6 +38632,13 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) +"rQZ" = ( +/obj/structure/table/reinforced, +/obj/item/deck/cards, +/turf/simulated/floor/plasteel{ + icon_state = "navyblue" + }, +/area/centcom/specops) "rRm" = ( /obj/machinery/door/airlock/security/glass{ name = "Escape Shuttle Cell"; @@ -38754,6 +38653,15 @@ /obj/effect/decal/syndie_logo, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/elite_squad) +"rRG" = ( +/obj/structure/chair/comfy/lime{ + dir = 1 + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "dark" + }, +/area/shuttle/administration) "rRI" = ( /obj/machinery/porta_turret/syndicate{ pixel_y = 2 @@ -38762,19 +38670,6 @@ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' }, /area/shuttle/syndicate) -"rRQ" = ( -/obj/effect/landmark/marauder_exit, -/obj/structure/fans/tiny, -/obj/effect/decal/warning_stripes/south, -/obj/effect/turf_decal/tile/neutral{ - alpha = 220; - color = "black"; - icon_state = "tile_full"; - layer = 9; - opacity = 1 - }, -/turf/simulated/floor/plating, -/area/centcom/supply) "rRS" = ( /turf/simulated/wall/indestructible/rock, /area/syndicate_mothership/outside) @@ -38820,20 +38715,76 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/elite_squad) -"rSw" = ( -/obj/machinery/door/firedoor, -/obj/effect/decal/warning_stripes/yellow, -/obj/effect/decal/warning_stripes/yellow, +"rSk" = ( +/obj/structure/closet/l3closet/security, +/obj/item/clothing/mask/gas, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/reagent_containers/spray/cleaner, +/obj/item/watertank/janitor{ + max_integrity = 1500; + volume = 1500 + }, +/obj/item/grenade/chem_grenade/cleaner, +/turf/simulated/floor/indestructible{ + dir = 1; + icon_state = "darkpurple" + }, +/area/centcom/specops) +"rSU" = ( +/obj/structure/rack/gunrack, +/obj/effect/decal/warning_stripes/white, +/obj/item/gun/projectile/automatic/pistol/enforcer{ + icon_state = "enforcer_black"; + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/pistol/enforcer{ + icon_state = "enforcer_black"; + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/pistol/enforcer{ + icon_state = "enforcer_black"; + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/pistol/enforcer{ + icon_state = "enforcer_black"; + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/pistol/enforcer{ + icon_state = "enforcer_black"; + pixel_x = -6 + }, +/obj/item/gun/projectile/automatic/pistol/enforcer{ + icon_state = "enforcer_black"; + pixel_x = 6 + }, +/obj/item/gun/projectile/automatic/pistol/enforcer{ + icon_state = "enforcer_black"; + pixel_x = 6 + }, +/obj/item/gun/projectile/automatic/pistol/enforcer{ + icon_state = "enforcer_black"; + pixel_x = 6 + }, +/obj/item/gun/projectile/automatic/pistol/enforcer{ + icon_state = "enforcer_black"; + pixel_x = 6 + }, +/obj/item/gun/projectile/automatic/pistol/enforcer{ + icon_state = "enforcer_black"; + pixel_x = 6 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/specops) -"rSA" = ( -/obj/structure/chair/sofa/left{ - dir = 4 +"rTs" = ( +/obj/machinery/chem_master, +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 }, -/turf/simulated/floor/carpet/red, -/area/centcom/zone1) +/turf/simulated/floor/engine, +/area/centcom/specops) "rTw" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo3" @@ -38854,29 +38805,6 @@ icon_state = "router_dir" }, /area/shuttle/syndicate) -"rTH" = ( -/obj/effect/turf_decal/delivery/white, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 1; - id_tag = "CC_Armory_SRT" - }, -/obj/machinery/door/airlock/centcom{ - aiControlDisabled = 1; - hackProof = 1; - name = "Special ReactionTeam"; - opacity = 1; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) -"rTJ" = ( -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "navyblue" - }, -/area/centcom/specops) "rTL" = ( /turf/simulated/floor/plasteel{ icon_state = "barber" @@ -38888,13 +38816,6 @@ }, /turf/simulated/floor/carpet, /area/centcom/zone1) -"rTV" = ( -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" - }, -/area/shuttle/administration) "rUb" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -38920,6 +38841,15 @@ icon_state = "asteroid" }, /area/centcom/evac) +"rUL" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/pod_1) "rUV" = ( /obj/effect/turf_decal/siding/thinplating/dark, /obj/effect/turf_decal/siding/thinplating/dark{ @@ -38981,13 +38911,11 @@ /obj/effect/turf_decal/bot_white, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) -"rVI" = ( -/obj/effect/turf_decal/stripes/black{ - dir = 9; - do_not_delete_me = 1 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/administration) +"rVH" = ( +/obj/structure/table, +/obj/item/gift, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "rVN" = ( /obj/machinery/door/airlock/syndicate/engineering{ name = "Оборудование"; @@ -39025,31 +38953,12 @@ /obj/effect/turf_decal/bot_white, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) -"rWx" = ( -/obj/effect/turf_decal/arrows{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkyellowaltstrip" - }, -/area/centcom/supply) "rWE" = ( /obj/machinery/vending/medical, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/specops) -"rWG" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - id_tag = "ERT_director_office_shutters2"; - layer = 5; - locked = 1; - name = "CentCom SOO Briefing" - }, -/turf/simulated/wall/indestructible/fakeglass, -/area/centcom/specops) "rWR" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -39077,14 +38986,6 @@ icon_state = "whiteblue" }, /area/shuttle/escape) -"rXE" = ( -/obj/structure/table/glass, -/obj/item/pizzabox/vegetable, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkyellow" - }, -/area/centcom/specops) "rXF" = ( /obj/machinery/light{ dir = 4 @@ -39113,12 +39014,6 @@ icon_state = "dark" }, /area/centcom/evac) -"rYi" = ( -/obj/effect/turf_decal/siding{ - color = "#444444" - }, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) "rYn" = ( /obj/machinery/sleeper, /turf/simulated/floor/plasteel{ @@ -39153,6 +39048,10 @@ water_overlay_icon_state = null }, /area/syndicate_mothership/outside) +"rYU" = ( +/obj/structure/shuttle/engine/propulsion/burst, +/turf/simulated/floor/plating/airless, +/area/shuttle/mining) "rYX" = ( /obj/item/twohanded/required/kirbyplants, /obj/structure/curtain/black{ @@ -39160,23 +39059,20 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/infteam) +"rZk" = ( +/obj/structure/reagent_dispensers/peppertank{ + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredalt" + }, +/area/centcom/jail) "rZo" = ( /turf/simulated/floor/plasteel{ dir = 8; icon_state = "navybluecorners" }, /area/centcom/specops) -"rZs" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/item/radio/intercom/specops{ - pixel_y = -32 - }, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" - }, -/area/shuttle/specops) "rZw" = ( /obj/structure/grille, /obj/machinery/door/poddoor/shutters/preopen{ @@ -39187,12 +39083,19 @@ /obj/structure/window/full/shuttle/gray, /turf/simulated/floor/plating/airless, /area/shuttle/syndicate) -"rZE" = ( -/turf/simulated/floor/indestructible{ - dir = 8; - icon_state = "darkgreynavyblue" +"saq" = ( +/obj/machinery/door/airlock/centcom{ + name = "Supply Pods Load 1"; + req_access = list(114) }, -/area/centcom/specops) +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "CC_Supply_Pods" + }, +/turf/simulated/floor/plasteel{ + icon_state = "Dark" + }, +/area/centcom/supply) "sas" = ( /turf/simulated/floor/plasteel{ dir = 6; @@ -39203,6 +39106,47 @@ /obj/structure/chair/stool/bar, /turf/simulated/floor/carpet, /area/centcom/zone1) +"saH" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/black{ + dir = 4; + do_not_delete_me = 1 + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "podfloor_dark" + }, +/area/shuttle/administration) +"sbc" = ( +/obj/structure/closet/secure_closet/guncabinet{ + layer = 2.9; + name = "Enforcer" + }, +/obj/item/ammo_box/magazine/enforcer/lethal, +/obj/item/ammo_box/magazine/enforcer/lethal, +/obj/item/ammo_box/magazine/enforcer/lethal, +/obj/item/ammo_box/magazine/enforcer/lethal, +/obj/item/gun/projectile/automatic/pistol/enforcer/lethal{ + icon_state = "enforcer_red" + }, +/obj/item/gun/projectile/automatic/pistol/enforcer/lethal{ + icon_state = "enforcer_red" + }, +/obj/item/gun/projectile/automatic/pistol/enforcer/lethal{ + icon_state = "enforcer_red" + }, +/obj/item/gun/projectile/automatic/pistol/enforcer/lethal{ + icon_state = "enforcer_red" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor4" + }, +/area/shuttle/gamma) "sbs" = ( /obj/machinery/vending/shoedispenser{ req_access = list(150) @@ -39212,11 +39156,19 @@ "sbw" = ( /turf/simulated/wall/shuttle, /area/shuttle/supply) -"sbQ" = ( -/obj/structure/table/wood/fancy/black, -/obj/item/candle/eternal, -/turf/simulated/floor/wood, -/area/centcom/zone1) +"sbW" = ( +/obj/vehicle/ridden/janicart{ + dir = 4 + }, +/obj/item/key/janitor, +/obj/item/janiupgrade{ + layer = 2.9 + }, +/turf/simulated/floor/indestructible{ + dir = 6; + icon_state = "darkpurple" + }, +/area/centcom/specops) "scm" = ( /obj/machinery/photocopier/faxmachine/longrange/syndie{ name = "Фокс машина" @@ -39225,38 +39177,11 @@ icon_state = "darkyellowfull" }, /area/syndicate_mothership/cargo) -"scs" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/grass, -/area/centcom/evac) "scA" = ( /obj/machinery/vending/hatdispenser, /obj/machinery/light/small, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/infteam) -"scI" = ( -/obj/machinery/door/airlock/shuttle{ - id_tag = "s_docking_airlock"; - name = "Escape Pod Hatch" - }, -/obj/docking_port/stationary/transit{ - dwidth = 2; - height = 6; - id = "pod1_transit"; - name = "pod 1 in transit"; - pixel_y = -32; - turf_type = /turf/space/transit/north; - width = 5 - }, -/obj/docking_port/mobile/pod{ - id = "pod1"; - name = "escape pod 1"; - roundstart_move = "pod1_home" - }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_1) "scN" = ( /turf/simulated/floor/plasteel{ dir = 9; @@ -39273,37 +39198,12 @@ icon_state = "dark" }, /area/centcom/jail) -"sdy" = ( -/obj/structure/closet/crate/can, -/obj/effect/turf_decal/siding/brown{ - dir = 4 - }, -/obj/structure/window/reinforced/tinted{ - dir = 8 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "sdz" = ( /obj/item/flag/nt, /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, /area/centcom/zone1) -"sdG" = ( -/obj/docking_port/stationary/transit{ - dir = 8; - dwidth = 10; - height = 35; - id = "whiteship_transit"; - name = "whiteship in transit"; - pixel_x = 32; - turf_type = /turf/space/transit/east; - width = 21 - }, -/turf/space/transit/east{ - icon_state = "black" - }, -/area/space) "ser" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -39326,16 +39226,21 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"seQ" = ( -/obj/effect/decal/warning_stripes/red, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "CC_Armory_PDW" +"seE" = ( +/obj/machinery/door/airlock/public/glass, +/obj/effect/turf_decal/stripes/black{ + dir = 8; + do_not_delete_me = 1 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/effect/turf_decal/stripes/black{ + dir = 4; + do_not_delete_me = 1 }, -/area/centcom/specops) +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "podfloor_dark" + }, +/area/shuttle/administration) "sfb" = ( /obj/machinery/door/airlock/syndicate/public{ name = "Toilet" @@ -39363,29 +39268,103 @@ icon_state = "freezerfloor" }, /area/syndicate_mothership/infteam) +"sfw" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"sfK" = ( +/obj/machinery/vending/cigarette/free, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "dark" + }, +/area/shuttle/administration) +"sfO" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/table, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) +"sfT" = ( +/obj/structure/window/reinforced{ + dir = 8; + layer = 9.1 + }, +/obj/structure/flora/rock, +/obj/structure/flora/ausbushes/stalkybush, +/obj/effect/turf_decal/tile/neutral{ + alpha = 85; + icon = 'icons/misc/beach.dmi'; + icon_state = "seadeep"; + layer = 9 + }, +/turf/simulated/floor/indestructible/beach/water/deep/sand_floor, +/area/centcom/specops) "sfW" = ( /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkredaltstrip" }, /area/syndicate_mothership/jail) +"sgi" = ( +/obj/structure/sign/poster/official/work_for_a_future{ + pixel_y = -32 + }, +/obj/effect/turf_decal/siding/blue/corner{ + color = "#444444" + }, +/obj/effect/turf_decal/siding/blue/corner{ + color = "#444444"; + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "sgk" = ( /obj/machinery/light/small, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, /area/syndicate_mothership/infteam) -"sgp" = ( -/obj/effect/turf_decal/siding/white/corner{ - dir = 8 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "sgv" = ( /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" }, /area/centcom/evac) +"sgG" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/simulated/floor/plating/airless, +/area/shuttle/siberia) +"sgW" = ( +/obj/machinery/portable_atmospherics/canister/toxins{ + maximum_pressure = 50000 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/conveyor{ + dir = 1; + id = "Toxin" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "sgZ" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo14" @@ -39400,12 +39379,29 @@ "shl" = ( /turf/simulated/wall/indestructible/fakeglass, /area/centcom/specops) -"shI" = ( -/obj/effect/turf_decal/box/white, +"shp" = ( +/obj/machinery/computer/cryopod{ + pixel_y = 32 + }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 8; + icon_state = "vault"; + tag = "icon-vault (WEST)" }, -/area/centcom/evac) +/area/centcom/specops) +"shB" = ( +/obj/structure/flora/rock/jungle, +/mob/living/simple_animal/hostile/carp/koi{ + faction = list("") + }, +/obj/effect/turf_decal/tile/neutral{ + alpha = 85; + icon = 'icons/misc/beach.dmi'; + icon_state = "seadeep"; + layer = 9 + }, +/turf/simulated/floor/indestructible/beach/water/deep/sand_floor, +/area/centcom/specops) "shZ" = ( /obj/structure/grille, /obj/structure/window/full/shuttle/gray, @@ -39431,15 +39427,6 @@ icon_state = "dark" }, /area/shuttle/syndicate) -"siq" = ( -/obj/effect/turf_decal/siding/yellow, -/turf/simulated/floor/carpet, -/area/centcom/evac) -"siz" = ( -/turf/simulated/floor/plasteel{ - icon_state = "darkred" - }, -/area/centcom/specops) "siN" = ( /obj/structure/chair/office/dark{ dir = 4 @@ -39460,29 +39447,31 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/elite_squad) -"sjb" = ( -/obj/structure/reagent_dispensers/water_cooler, -/obj/effect/turf_decal/siding/brown{ - dir = 4 +"sjx" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/library, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 }, -/obj/structure/window/reinforced/tinted, -/obj/structure/window/reinforced/tinted{ - dir = 8 +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"sjr" = ( /turf/simulated/floor/plasteel{ - icon_state = "darkyellowcorners"; - dir = 1 + icon_state = "grimy" }, -/area/centcom/specops) +/area/centcom/jail) "sjQ" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo6" }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/elite_squad) +"sjU" = ( +/obj/machinery/computer/shuttle/nt/drop_pod, +/turf/simulated/wall/shuttle, +/area/shuttle/nt_droppod) "skw" = ( /obj/structure/flora/ausbushes/lavendergrass, /turf/simulated/floor/grass, @@ -39506,19 +39495,6 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/infteam) -"sla" = ( -/obj/machinery/door_control/secure{ - id = "CC_Armory_GYGAX"; - name = "GYGAX"; - pixel_x = 24; - pixel_y = -32; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkyellowcorners"; - dir = 1 - }, -/area/centcom/specops) "sle" = ( /turf/simulated/floor/shuttle/objective_check{ dir = 6; @@ -39547,14 +39523,6 @@ /obj/structure/fans/tiny/invisible, /turf/simulated/floor/plating, /area/shuttle/syndicate) -"smf" = ( -/obj/machinery/vending/security/ert{ - density = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "smk" = ( /obj/machinery/sleeper/syndie, /turf/simulated/floor/shuttle{ @@ -39567,6 +39535,13 @@ icon_state = "darkreddarkfull" }, /area/shuttle/escape) +"smB" = ( +/obj/effect/decal/warning_stripes/white/hollow, +/obj/effect/decal/warning_stripes/southwest, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "smH" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo7" @@ -39585,13 +39560,6 @@ icon_state = "warnwhite" }, /area/centcom/zone1) -"snf" = ( -/obj/effect/turf_decal/caution/stand_clear/red, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkbluealtstrip" - }, -/area/centcom/zone2) "snn" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo8" @@ -39648,14 +39616,6 @@ icon_state = "darkgrey" }, /area/syndicate_mothership) -"soJ" = ( -/obj/structure/sign/nosmoking_2{ - pixel_y = -32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkyellowalt" - }, -/area/centcom/supply) "soN" = ( /obj/structure/table/reinforced, /obj/item/storage/firstaid/o2{ @@ -39671,12 +39631,29 @@ icon_state = "cmo" }, /area/shuttle/escape) +"spd" = ( +/obj/structure/table/glass, +/obj/item/pizzabox/vegetable, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/centcom/specops) "spf" = ( /turf/simulated/floor/plasteel{ dir = 6; icon_state = "whiteblue" }, /area/shuttle/escape) +"sph" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 + }, +/obj/effect/turf_decal/siding/blue{ + dir = 8 + }, +/turf/simulated/floor/glass, +/area/centcom/bridge) "spi" = ( /obj/structure/grille, /obj/structure/window/full/shuttle/gray, @@ -39703,12 +39680,6 @@ }, /turf/simulated/floor/carpet, /area/centcom/evac) -"sql" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/wall/indestructible/reinforced, -/area/centcom/zone2) "sqw" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo9" @@ -39721,27 +39692,17 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/elite_squad) -"sqD" = ( -/obj/machinery/vending/ntc/ert{ +"sqP" = ( +/obj/machinery/door_control/secure{ + id = "CC_Armory_DAE"; + name = "DAE"; + pixel_x = -24; + pixel_y = 24; req_access = list(114) }, /turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) -"sqO" = ( -/obj/item/gun/energy/sniperrifle{ - pixel_x = 3; - pixel_y = 8 - }, -/obj/item/gun/energy/sniperrifle{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/structure/rack/gunrack, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 9; + icon_state = "darkgreen" }, /area/centcom/specops) "sqV" = ( @@ -39770,28 +39731,18 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/control) +"sqZ" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkgreen" + }, +/area/centcom/specops) "sra" = ( /obj/machinery/vending/medical, /turf/simulated/floor/plasteel{ icon_state = "cmo" }, /area/shuttle/escape) -"sru" = ( -/obj/structure/table/reinforced, -/obj/item/grenade/clusterbuster/nervegas, -/obj/item/grenade/clusterbuster/nervegas, -/obj/item/grenade/clusterbuster/nervegas, -/obj/item/grenade/clusterbuster/teargas, -/obj/item/grenade/clusterbuster/teargas, -/obj/item/grenade/clusterbuster/teargas, -/obj/item/grenade/clusterbuster/mega_bang, -/obj/item/grenade/clusterbuster/mega_bang, -/obj/item/grenade/clusterbuster/mega_bang, -/obj/effect/decal/warning_stripes/green/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "srv" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo10" @@ -39814,6 +39765,15 @@ icon_state = "grimy" }, /area/centcom/zone1) +"srJ" = ( +/obj/machinery/light{ + dir = 4; + switchcount = 50 + }, +/turf/simulated/floor/plasteel{ + icon_state = "Dark" + }, +/area/centcom/specops) "sse" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo11" @@ -39850,12 +39810,61 @@ icon_state = "floor13" }, /area/shuttle/ninja) +"ssB" = ( +/obj/structure/table/reinforced, +/obj/item/flashlight/lamp/green, +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/centcom/jail) +"ssE" = ( +/obj/structure/shuttle/engine/heater{ + icon_state = "heater3x3_side"; + tag = "icon-heater (NORTH)" + }, +/obj/structure/window/plasmareinforced{ + color = "#FF0000"; + dir = 1 + }, +/obj/structure/shuttle/engine/platform{ + layer = 2.9 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/syndicate) +"ssL" = ( +/obj/structure/closet/secure_closet/security, +/obj/item/clothing/mask/balaclava, +/obj/item/clothing/accessory/holster, +/obj/item/storage/box/survival_security{ + name = "Security survival kit" + }, +/turf/simulated/floor/wood, +/area/centcom/jail) "ssR" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo11" }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/control) +"sta" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/structure/sign/poster/official/nanotrasen_logo{ + icon = 'icons/obj/decals.dmi'; + icon_state = "nanotrasen_sign1"; + pixel_x = -16; + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkyellow" + }, +/area/centcom/specops) "stM" = ( /obj/structure/window/reinforced{ color = "red" @@ -39864,10 +39873,12 @@ icon_state = "floor4" }, /area/shuttle/syndicate_sit) -"stV" = ( -/obj/effect/turf_decal/siding/yellow, -/turf/simulated/floor/carpet/black, -/area/centcom/zone3) +"sub" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/centcom/specops) "suc" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo12" @@ -39926,18 +39937,13 @@ /obj/item/pen, /turf/simulated/floor/carpet/arcade, /area/centcom/zone1) -"svw" = ( -/obj/item/gun/projectile/automatic/ar, -/obj/item/gun/projectile/automatic/ar, -/obj/item/gun/projectile/automatic/ar, -/obj/item/gun/projectile/automatic/ar, -/obj/item/gun/projectile/automatic/ar, -/obj/structure/rack/gunrack, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"svr" = ( +/obj/structure/window/reinforced{ + dir = 4 }, -/area/centcom/specops) +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/evac) "svC" = ( /obj/machinery/door/airlock/external{ name = "Labor Shuttle Airlock"; @@ -39948,40 +39954,20 @@ icon_state = "dark" }, /area/shuttle/siberia) -"swk" = ( -/obj/structure/chair/comfy/shuttle, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkyellow" - }, -/area/centcom/specops) "swP" = ( /turf/simulated/wall/indestructible/iron, /area/syndicate_mothership/infteam) -"swV" = ( -/obj/structure/piano/unanchored{ - dir = 8; - layer = 2.5 - }, -/obj/structure/flora/ausbushes, -/obj/structure/flora/ausbushes/fullgrass, -/obj/structure/window/full/reinforced{ - armor = list("melee"=80,"bullet"=80,"laser"=0,"energy"=0,"bomb"=80,"bio"=100,"rad"=100,"fire"=80,"acid"=100); - layer = 5 - }, -/turf/simulated/floor/grass, -/area/centcom/specops) "sxa" = ( /obj/machinery/computer/shuttle/sit, /turf/simulated/floor/carpet, /area/syndicate_mothership/control) -"sxr" = ( -/obj/machinery/ai_status_display{ - pixel_y = 32 +"sxu" = ( +/obj/machinery/dna_scannernew/upgraded, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" }, -/obj/machinery/computer/communications, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) +/area/centcom/specops) "sxB" = ( /obj/machinery/light/spot{ dir = 4; @@ -40007,14 +39993,6 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) -"sxS" = ( -/obj/effect/turf_decal/arrows/red{ - name = "Armory" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "syj" = ( /obj/structure/chair/comfy/shuttle/dark{ dir = 8 @@ -40033,20 +40011,6 @@ icon_state = "darkreddarkfull" }, /area/shuttle/escape) -"szi" = ( -/obj/machinery/computer/camera_advanced/shuttle_docker/admin{ - dir = 1; - name = "NTV Argos shuttle navigation computer" - }, -/obj/effect/turf_decal/stripes/gold{ - dir = 5; - do_not_delete_me = 1 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/simulated/floor/carpet/royalblack, -/area/shuttle/administration) "szE" = ( /obj/structure/chair/sofa/corner{ dir = 1 @@ -40057,6 +40021,11 @@ /obj/structure/chair/sofa/left, /turf/simulated/floor/carpet, /area/syndicate_mothership/infteam) +"sAd" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners" + }, +/area/centcom/specops) "sAg" = ( /obj/structure/chair/stool/bar, /turf/simulated/floor/wood{ @@ -40109,15 +40078,6 @@ }, /turf/simulated/floor/carpet, /area/syndicate_mothership/control) -"sAA" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_3) "sAC" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/shaker{ @@ -40159,25 +40119,6 @@ icon_state = "white" }, /area/centcom/zone1) -"sAS" = ( -/obj/structure/bookcase/manuals, -/obj/item/book/manual/security_space_law{ - pixel_x = 3 - }, -/obj/item/book/manual/security_space_law{ - pixel_x = 3 - }, -/obj/item/book/manual/security_space_law{ - pixel_x = 3 - }, -/obj/item/book/manual/security_space_law{ - pixel_x = 3 - }, -/obj/effect/turf_decal/siding/yellow/corner{ - dir = 8 - }, -/turf/simulated/floor/carpet, -/area/centcom/evac) "sAT" = ( /obj/machinery/light/small{ dir = 4 @@ -40191,6 +40132,23 @@ icon_state = "cafeteria" }, /area/centcom/jail) +"sBh" = ( +/obj/effect/turf_decal/caution/stand_clear/red, +/turf/simulated/floor/plasteel{ + icon_state = "darkbluealtstrip" + }, +/area/centcom/zone2) +"sBk" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "CC_Armory_DURAND" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" + }, +/area/centcom/specops) "sBs" = ( /turf/simulated/floor/plating{ icon = 'icons/turf/floors.dmi'; @@ -40207,11 +40165,26 @@ }, /area/centcom/zone1) "sBC" = ( -/obj/machinery/light_construct/small{ - dir = 1 +/obj/structure/table, +/obj/item/clothing/gloves/boxing/hologlove{ + icon_state = "boxinggreen"; + item_state = "boxinggreen" }, -/turf/simulated/floor/plating, -/area/centcom/zone2) +/obj/item/clothing/gloves/boxing/hologlove{ + icon_state = "boxinggreen"; + item_state = "boxinggreen" + }, +/obj/item/clothing/gloves/boxing/hologlove{ + icon_state = "boxinggreen"; + item_state = "boxinggreen" + }, +/obj/item/clothing/gloves/boxing/hologlove, +/obj/item/clothing/gloves/boxing/hologlove, +/obj/item/clothing/gloves/boxing/hologlove, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone1) "sBD" = ( /obj/effect/turf_decal{ dir = 8; @@ -40238,16 +40211,6 @@ name = "floor" }, /area/syndicate_mothership/infteam) -"sBS" = ( -/obj/machinery/requests_console{ - department = "Central Command"; - departmentType = 1; - name = "CC Requests Console"; - pixel_x = -32; - pixel_y = 32 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) "sCg" = ( /obj/structure/table/wood, /obj/machinery/kitchen_machine/microwave/upgraded{ @@ -40291,13 +40254,6 @@ }, /turf/simulated/floor/plasteel, /area/shuttle/escape) -"sCX" = ( -/obj/machinery/door_control/secure{ - id = "CC_Main_Office_1_1"; - req_access = list(114) - }, -/turf/simulated/wall/indestructible/reinforced, -/area/centcom/bridge) "sDa" = ( /obj/machinery/door/airlock/medical/glass{ name = "Escape Shuttle Infirmary" @@ -40324,41 +40280,51 @@ icon_state = "floor12" }, /area/shuttle/syndicate) -"sDM" = ( -/obj/effect/turf_decal/siding/yellow/corner, -/turf/simulated/floor/carpet, -/area/centcom/evac) -"sDN" = ( -/obj/structure/noticeboard{ - pixel_y = 30 +"sEb" = ( +/obj/structure/chair/comfy/shuttle, +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 }, -/obj/item/paper{ - info = "Уволить клоуна." +/turf/simulated/floor/shuttle, +/area/shuttle/pod_1) +"sEs" = ( +/obj/machinery/door/poddoor{ + id_tag = "CC_supply_space"; + locked = 2; + name = "Supply Blastdoor" }, -/obj/item/paper{ - info = "Переговорить с командованием о трёхзначных числах" +/obj/structure/fans/tiny, +/obj/effect/decal/warning_stripes/white, +/obj/machinery/door/airlock/external{ + hackProof = 1; + id_tag = "supply_away"; + name = "Central Command Supply"; + req_access = list(31) }, -/obj/structure/chair/sofa/corp/right, -/obj/item/toy/plushie/red_fox, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"sEx" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/glass/beaker/waterbottle, -/obj/item/reagent_containers/food/drinks/drinkingglass{ - pixel_x = -5 +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/obj/structure/window/reinforced{ - dir = 8 +/area/centcom/supply) +"sEU" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone3) -"sEW" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8 +/turf/simulated/floor/glass/reinforced, +/area/centcom/specops) +"sFp" = ( +/obj/structure/table/glass, +/obj/item/toy/figure/dsquad, +/turf/simulated/floor/carpet/cyan, +/area/centcom/zone2) +"sFz" = ( +/obj/structure/closet/crate, +/obj/effect/decal/cleanable/cobweb{ + layer = 4 }, -/turf/simulated/floor/plating/airless, -/area/shuttle/transport) +/turf/simulated/floor/plating, +/area/centcom/zone2) "sFI" = ( /obj/structure/chair/comfy/brown{ dir = 4 @@ -40371,36 +40337,19 @@ icon_state = "grimy" }, /area/centcom/zone2) -"sFQ" = ( -/obj/effect/turf_decal/caution/stand_clear/white, -/obj/machinery/door/poddoor/impassable/unhittable{ - id_tag = "CC_Players_In"; - name = "Blast Door" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone1) -"sGe" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) "sGg" = ( /obj/structure/table, /turf/simulated/floor/shuttle{ icon_state = "floor4" }, /area/shuttle/syndicate_sit) -"sGH" = ( -/obj/machinery/computer/shuttle/ferry, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkyellowalt" +"sGl" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 6 }, -/area/centcom/zone3) +/turf/simulated/floor/glass/reinforced, +/area/centcom/evac) "sGK" = ( /obj/structure/chair/sofa/right{ dir = 8 @@ -40415,24 +40364,12 @@ /obj/mecha/combat/durand/rover/loaded, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) -"sHb" = ( -/obj/machinery/door/airlock/centcom{ - name = "CentCom SOO"; - opacity = 1; - req_access = list(114) - }, -/obj/machinery/door/poddoor/shutters/invincible{ - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - dir = 2; - id_tag = "ERT_director_office_shutters2"; - layer = 5; - locked = 1; - name = "CentCom SOO Briefing" - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "navybluecorners" +"sHn" = ( +/obj/machinery/computer/camera_advanced, +/obj/machinery/light/small{ + dir = 1 }, +/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "sHv" = ( /obj/structure/chair/comfy/shuttle/dark{ @@ -40452,21 +40389,15 @@ icon_state = "Dark" }, /area/shuttle/funeral) -"sHL" = ( -/obj/structure/table/wood, -/obj/item/storage/bible, -/turf/simulated/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/centcom/evac) -"sHR" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 1; - icon_state = "propulsion_r"; - tag = "icon-propulsion_r (NORTH)" +"sHV" = ( +/obj/structure/bed, +/obj/item/bedsheet/clown, +/obj/effect/mine/sound/bwoink{ + alpha = 0; + layer = 2.9 }, -/turf/simulated/floor/plating/airless, -/area/shuttle/funeral) +/turf/simulated/floor/carpet/black, +/area/centcom/zone1) "sHW" = ( /obj/docking_port/stationary{ area_type = /area/syndicate_mothership; @@ -40494,80 +40425,70 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) +"sIh" = ( +/obj/structure/shuttle/engine/platform{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/plasmareinforced{ + color = "#00f700" + }, +/obj/structure/shuttle/engine/heater{ + dir = 1; + icon_state = "heater3x3_side_inv"; + tag = "icon-heater (NORTH)" + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/ninja) +"sIz" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "Dark" + }, +/area/centcom/specops) "sIC" = ( /obj/structure/table/wood, /turf/simulated/floor/carpet, /area/centcom/evac) +"sIQ" = ( +/obj/machinery/door_control/secure{ + id = "CC_Supply_Pods"; + name = "Supply Pods Load"; + pixel_y = -24; + req_access = list(114) + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "darkyellowalt" + }, +/area/centcom/supply) "sIY" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo13" }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/elite_squad) -"sJr" = ( -/obj/effect/turf_decal/siding/white/corner{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) -"sJx" = ( -/obj/structure/closet{ - icon_closed = "syndicate1"; - icon_opened = "syndicate1open"; - icon_state = "syndicate1"; - name = "Nanotrasen Diplomat's closet" - }, -/obj/item/clothing/shoes/laceup, -/obj/item/clothing/under/rank/centcom/diplomatic, -/obj/item/lighter/zippo/nt_rep, -/obj/item/storage/fancy/cigarettes/dromedaryco, -/obj/item/clothing/gloves/color/white, -/obj/item/storage/backpack/satchel, -/obj/item/radio/headset/centcom, -/obj/item/storage/backpack/satcheldeluxe, -/obj/item/storage/box/survival{ - name = "Survival kit" +"sJw" = ( +/obj/machinery/door_control/secure{ + id = "CC_Armory_Grenade"; + name = "Grenades"; + pixel_x = 24; + pixel_y = -24; + req_access = list(114) }, -/obj/item/implanter/dust, -/obj/item/implanter/mindshield/ert, -/obj/item/implanter/death_alarm, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) -"sJH" = ( -/obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/centcom/zone3) -"sJJ" = ( -/obj/machinery/door/airlock/shuttle{ - aiControlDisabled = 1; - hackProof = 1; - id_tag = "s_docking_airlock"; - name = "Shuttle Hatch" - }, -/obj/docking_port/mobile/emergency{ - dwidth = 11; - height = 18; - width = 29 - }, -/obj/docking_port/stationary/transit{ - dir = 4; - dwidth = 11; - height = 13; - id = "emergency_transit"; - name = "emergency in transit"; - pixel_x = -32; - turf_type = /turf/space/transit/north; - width = 24 + dir = 8; + icon_state = "darkredcorners" }, +/area/centcom/specops) +"sJY" = ( +/obj/machinery/computer/mech_bay_power_console, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "neutralfull" + icon_state = "dark" }, -/area/shuttle/escape) +/area/centcom/jail) "sKd" = ( /obj/machinery/light{ dir = 8 @@ -40581,9 +40502,6 @@ "sKg" = ( /turf/simulated/wall/shuttle/onlyselfsmooth, /area/shuttle/siberia) -"sKm" = ( -/turf/simulated/wall/shuttle, -/area/shuttle/administration) "sKt" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo14" @@ -40625,20 +40543,20 @@ }, /turf/simulated/floor/grass, /area/centcom/evac) -"sKX" = ( -/obj/structure/railing, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" - }, -/area/centcom/specops) -"sLB" = ( -/obj/machinery/vending/coffee/free, +"sLt" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/drone, +/obj/item/crowbar/red, +/obj/item/borg/upgrade/vtec, +/obj/item/borg/upgrade/vtec, +/obj/item/stock_parts/cell/bluespace, +/obj/item/stock_parts/cell/bluespace, +/obj/item/borg/upgrade/selfrepair, +/obj/item/borg/upgrade/selfrepair, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/zone2) +/area/centcom/specops) "sLG" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -40653,15 +40571,6 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) -"sLJ" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9 - }, -/obj/machinery/light, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "sLT" = ( /obj/structure/fence{ invulnerable = 1 @@ -40680,14 +40589,6 @@ icon_state = "navybluealt" }, /area/syndicate_mothership/control) -"sMp" = ( -/obj/structure/chair/comfy/beige{ - dir = 4; - layer = 5; - pixel_y = -2 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone3) "sMr" = ( /obj/structure/sign/security{ pixel_y = 32 @@ -40697,11 +40598,6 @@ icon_state = "neutralfull" }, /area/shuttle/escape) -"sMC" = ( -/turf/simulated/floor/indestructible{ - icon_state = "darkgrey" - }, -/area/centcom/specops) "sMD" = ( /obj/structure/flora/rock/jungle, /obj/structure/flora/junglebush, @@ -40711,27 +40607,6 @@ /obj/machinery/computer/shuttle/sit, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) -"sNt" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"sNw" = ( -/obj/effect/decal/warning_stripes/northeastsouth, -/obj/machinery/door/poddoor/shutters/preopen/invincible{ - dir = 1; - id_tag = "ERT_armory_vkd"; - name = "Armory level 1" - }, -/obj/machinery/door/poddoor/impassable/preopen{ - id_tag = "ERT_Quarantine"; - name = "ERT Quarantine" - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" - }, -/area/centcom/specops) "sNX" = ( /obj/machinery/light/spot, /turf/simulated/floor/plasteel{ @@ -40757,13 +40632,6 @@ icon_state = "darkgrey" }, /area/syndicate_mothership) -"sOq" = ( -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" - }, -/area/centcom/specops) "sOr" = ( /obj/structure/window/reinforced, /obj/item/flag/species/unathi, @@ -40804,33 +40672,6 @@ /obj/effect/turf_decal/bot_white, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) -"sPu" = ( -/obj/structure/closet/crate/hydroponics, -/obj/item/cultivator, -/obj/item/cultivator, -/obj/item/cultivator, -/obj/item/cultivator, -/obj/item/shovel/spade, -/obj/item/shovel/spade, -/obj/item/shovel/spade, -/obj/item/shovel/spade, -/obj/item/hatchet, -/obj/item/hatchet, -/obj/item/hatchet, -/obj/item/hatchet, -/obj/item/seeds/gatfruit, -/obj/item/seeds/cherry/bomb, -/obj/item/seeds/ambrosia/gaia, -/obj/item/seeds/ambrosia/gaia, -/obj/item/seeds/ambrosia/gaia, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/beach/sand{ - icon = 'icons/turf/floors.dmi'; - icon_state = "asteroid" - }, -/area/centcom/evac) "sQh" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 1; @@ -40846,6 +40687,25 @@ /obj/structure/flora/ausbushes/brflowers, /turf/simulated/floor/indestructible/snow, /area/ninja/outside) +"sQD" = ( +/obj/item/gun/energy/pulse/destroyer/annihilator, +/obj/item/gun/energy/pulse/destroyer/annihilator, +/obj/item/gun/energy/pulse/destroyer/annihilator, +/obj/item/gun/energy/pulse/destroyer/annihilator, +/obj/item/gun/energy/pulse/destroyer/annihilator, +/obj/item/gun/energy/pulse/destroyer/annihilator, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + layer = 2.9; + name = "Pulse ANNIHILATOR"; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "vault" + }, +/area/centcom/jail) "sRh" = ( /obj/machinery/door_control/secure{ id = "SyndFB_prison_stroll_blast"; @@ -40872,6 +40732,10 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) +"sRk" = ( +/obj/structure/table/glass, +/turf/simulated/floor/carpet/black, +/area/centcom/zone3) "sRl" = ( /obj/machinery/vending/wallmed{ name = "Custom Emergency NanoMed"; @@ -40931,12 +40795,33 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) -"sSh" = ( -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkyellowaltstrip" +"sSa" = ( +/obj/machinery/door/airlock/centcom{ + id_tag = "adminshuttle"; + name = "Medbay"; + opacity = 1; + req_access = list(101) }, -/area/centcom/specops) +/obj/effect/turf_decal/stripes/black{ + dir = 8; + do_not_delete_me = 1 + }, +/obj/effect/turf_decal/stripes/black{ + dir = 4; + do_not_delete_me = 1 + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "podfloor_dark" + }, +/area/shuttle/administration) +"sSm" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 10 + }, +/turf/simulated/floor/glass/reinforced, +/area/centcom/evac) "sSp" = ( /obj/structure/chair/comfy/shuttle/dark{ dir = 8 @@ -40959,12 +40844,6 @@ /obj/effect/turf_decal/bot_white, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) -"sSG" = ( -/obj/effect/turf_decal/siding/white/corner, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/evac) "sSK" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -40981,11 +40860,25 @@ icon_state = "darkyellowalt" }, /area/syndicate_mothership/cargo) -"sTj" = ( -/turf/simulated/floor/plasteel{ - icon_state = "darkbluealtstrip" +"sSU" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/brigdoor{ + dir = 8; + req_access = list(104) }, -/area/centcom/zone2) +/obj/machinery/door/poddoor/shutters/invincible{ + density = 0; + dir = 8; + icon_state = "open"; + id_tag = "CC_space_jail_sec"; + layer = 50; + level = 3; + locked = 1; + name = "Central Command Jail"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/centcom/jail) "sTm" = ( /obj/machinery/door/airlock/syndicate/public{ name = "Shower" @@ -41033,6 +40926,10 @@ }, /turf/simulated/floor/wood, /area/centcom/zone2) +"sUB" = ( +/obj/effect/turf_decal/siding/brown, +/turf/simulated/floor/carpet, +/area/centcom/zone3) "sUD" = ( /obj/effect/spawner/random_spawners/syndicate/loot, /turf/simulated/floor/plasteel{ @@ -41043,6 +40940,19 @@ /obj/machinery/vending/boozeomat, /turf/simulated/floor/carpet/black, /area/centcom/zone1) +"sVi" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/shuttle/engine/heater{ + icon_state = "heater2x2"; + tag = "icon-heater (NORTH)" + }, +/obj/structure/shuttle/engine/platform{ + layer = 2.9 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/vox) "sVj" = ( /obj/structure/table/wood, /obj/structure/window/reinforced{ @@ -41060,6 +40970,38 @@ /obj/item/flashlight/lamp, /turf/simulated/floor/carpet, /area/centcom/zone1) +"sVy" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/snacks/sliceable/birthdaycake, +/turf/simulated/floor/wood, +/area/centcom/specops) +"sVB" = ( +/obj/machinery/door/airlock/centcom{ + name = "Supply Pods Load 4"; + req_access = list(114) + }, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "CC_Supply_Pods" + }, +/turf/simulated/floor/plasteel{ + icon_state = "Dark" + }, +/area/centcom/supply) +"sVH" = ( +/obj/machinery/vending/robotics/nt/gygax, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"sVL" = ( +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) "sVV" = ( /obj/structure/window/reinforced{ dir = 4 @@ -41114,13 +41056,6 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) -"sWH" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8; - icon_state = "burst_r" - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/transport) "sWJ" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22"; @@ -41136,14 +41071,6 @@ icon_state = "barber" }, /area/centcom/zone1) -"sWY" = ( -/obj/structure/sink{ - dir = 1 - }, -/turf/simulated/floor/indestructible{ - icon_state = "darkpurple" - }, -/area/centcom/specops) "sXd" = ( /obj/effect/turf_decal{ dir = 8; @@ -41153,37 +41080,10 @@ water_overlay_icon_state = null }, /area/syndicate_mothership/outside) -"sXg" = ( -/obj/effect/step_trigger/teleporter{ - teleport_x = 216; - teleport_y = 26; - teleport_z = 1; - icon = 'icons/mob/screen_gen.dmi'; - icon_state = "x2" - }, -/turf/simulated/floor/plasteel{ - color = "gray"; - dir = 4; - icon_state = "rampbottom" - }, -/area/centcom/specops) "sXk" = ( /obj/effect/turf_decal/box/corners, /turf/simulated/floor/mineral/abductor, /area/centcom/zone1) -"sXo" = ( -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/conveyor{ - id = "O2"; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "sXC" = ( /obj/structure/closet/crate/syndicate{ pixel_y = 8 @@ -41196,11 +41096,6 @@ icon_state = "darkyellowalt" }, /area/syndicate_mothership/cargo) -"sXI" = ( -/turf/space/transit/north{ - icon_state = "black" - }, -/area/space) "sXM" = ( /obj/structure/grille, /obj/structure/window/full/shuttle, @@ -41225,6 +41120,14 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/jail) +"sYM" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "sYR" = ( /obj/structure/fans/tiny/invisible, /turf/simulated/floor/plasteel{ @@ -41232,37 +41135,113 @@ icon_state = "warndarkgreycornerred" }, /area/syndicate_mothership) -"sYW" = ( -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "navybluecornersalt" - }, -/area/centcom/specops) -"sZc" = ( -/obj/effect/decal/warning_stripes/north, -/obj/effect/decal/warning_stripes/south, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "CC_Armory_DURAND" +"sYS" = ( +/obj/structure/table/reinforced, +/obj/item/radio{ + icon_state = "walkietalkie_sec"; + pixel_x = -4; + pixel_y = 5 }, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" +/obj/item/radio{ + icon_state = "walkietalkie_sec"; + pixel_x = -4; + pixel_y = 5 }, -/area/centcom/specops) -"sZn" = ( -/obj/effect/turf_decal/stripes/line{ - icon = 'icons/turf/floors.dmi'; - icon_state = "siding4" +/obj/item/radio{ + icon_state = "walkietalkie_sec"; + pixel_x = -4; + pixel_y = 5 }, -/obj/effect/turf_decal/stripes/line{ - icon = 'icons/turf/floors.dmi'; - icon_state = "siding8" +/obj/item/radio{ + icon_state = "walkietalkie_sec"; + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/radio{ + icon_state = "walkietalkie_sec"; + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/radio{ + icon_state = "walkietalkie_sec"; + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/radio{ + icon_state = "walkietalkie_sec"; + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/radio{ + icon_state = "walkietalkie_sec"; + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/radio{ + icon_state = "walkietalkie_sec"; + pixel_x = -4 + }, +/obj/item/radio{ + icon_state = "walkietalkie_sec"; + pixel_x = -4 + }, +/obj/item/radio{ + icon_state = "walkietalkie_sec"; + pixel_x = -4 + }, +/obj/item/radio{ + icon_state = "walkietalkie_sec"; + pixel_x = -4 + }, +/obj/item/radio{ + icon_state = "walkietalkie_sec"; + pixel_x = 4 + }, +/obj/item/radio{ + icon_state = "walkietalkie_sec"; + pixel_x = 4 + }, +/obj/item/radio{ + icon_state = "walkietalkie_sec"; + pixel_x = 4 + }, +/obj/item/radio{ + icon_state = "walkietalkie_sec"; + pixel_x = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "navyblue" + }, +/area/centcom/specops) +"sYW" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "navybluecornersalt" + }, +/area/centcom/specops) +"sZn" = ( +/obj/effect/turf_decal/stripes/line{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding4" + }, +/obj/effect/turf_decal/stripes/line{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding8" }, /turf/simulated/floor/plasteel{ icon_state = "rampbottom"; tag = "icon-stage_stairs" }, /area/syndicate_mothership/infteam) +"sZu" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) +"sZy" = ( +/turf/simulated/floor/carpet/blue, +/area/centcom/specops) "sZA" = ( /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; @@ -41272,6 +41251,10 @@ /obj/structure/fans/tiny, /turf/simulated/floor/shuttle/plating, /area/shuttle/specops) +"sZB" = ( +/obj/item/flag/nt, +/turf/simulated/floor/carpet/red, +/area/centcom/bridge) "sZH" = ( /obj/structure/chair/comfy/shuttle{ dir = 1 @@ -41287,6 +41270,11 @@ icon_state = "bot" }, /area/shuttle/escape) +"sZK" = ( +/turf/simulated/floor/plasteel{ + icon_state = "Dark" + }, +/area/centcom/supplypod/loading/ert) "sZP" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -41299,6 +41287,10 @@ }, /turf/simulated/floor/carpet, /area/syndicate_mothership/infteam) +"tad" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/space, +/area/space) "taf" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/bottle/wine{ @@ -41321,6 +41313,22 @@ icon_state = "grimy" }, /area/syndicate_mothership) +"taC" = ( +/obj/structure/closet/secure_closet/brig, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkredalt" + }, +/area/centcom/jail) +"taZ" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor4" + }, +/area/shuttle/specops) "tbh" = ( /obj/structure/window/reinforced{ dir = 8 @@ -41354,6 +41362,32 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) +"tbo" = ( +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/item/flag/nt, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) +"tbt" = ( +/obj/structure/toilet{ + dir = 8; + name = "Трон старшего администратора" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/door_control{ + id = "CC_toilet_unit11"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + specialfunctions = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/centcom/specops) "tbv" = ( /turf/simulated/floor/shuttle, /area/shuttle/siberia) @@ -41375,12 +41409,14 @@ icon_state = "fancy-wood-oak-broken7" }, /area/syndicate_mothership/infteam) -"tcz" = ( +"tcH" = ( +/obj/effect/turf_decal/siding/white/corner{ + dir = 8 + }, /turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkred" + icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/evac) "tcM" = ( /obj/effect/turf_decal/stripes/line{ color = "darkgray"; @@ -41408,12 +41444,6 @@ /obj/structure/flora/grass/both, /turf/simulated/floor/indestructible/snow, /area/ninja/outside) -"tdw" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, -/turf/simulated/floor/engine, -/area/centcom/specops) "tdy" = ( /obj/machinery/portable_atmospherics/canister/oxygen{ name = "Canister: \[O2] (CRYO)" @@ -41470,16 +41500,6 @@ icon_state = "darkredaltstrip" }, /area/syndicate_mothership/jail) -"teo" = ( -/obj/structure/table, -/obj/item/pen/multi/fountain, -/obj/item/paper_bin/nanotrasen{ - pixel_x = 3; - pixel_y = 12 - }, -/obj/machinery/light, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "teO" = ( /obj/structure/table/wood, /obj/machinery/chem_dispenser/soda/upgraded, @@ -41519,6 +41539,16 @@ icon_state = "warndarkgreyred" }, /area/syndicate_mothership) +"tfW" = ( +/obj/structure/filingcabinet/security, +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone3) +"tfX" = ( +/turf/simulated/wall/shuttle/onlyselfsmooth/nodiagonal, +/area/shuttle/administration) "tgl" = ( /obj/effect/turf_decal/arrows{ dir = 1 @@ -41556,29 +41586,69 @@ icon_state = "dark" }, /area/centcom/evac) -"ths" = ( -/obj/structure/sink{ +"tha" = ( +/obj/structure/toilet{ + dir = 8; + name = "Трон старшего администратора" + }, +/obj/machinery/light/small{ dir = 1 }, +/obj/machinery/door_control{ + id = "CC_toilet_unit4"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + specialfunctions = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "white" }, -/area/centcom/specops) -"thQ" = ( -/obj/structure/window/reinforced{ - dir = 8 +/area/centcom/zone1) +"thd" = ( +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkyellow" }, -/obj/structure/window/reinforced{ - dir = 1 +/area/centcom/supplypod/loading/four) +"thl" = ( +/obj/structure/table/glass, +/obj/effect/spawner/lootdrop{ + loot = list(/obj/item/reagent_containers/food/snacks/lasagna=10,/obj/item/reagent_containers/food/snacks/sliceable/pizza/hawaiianpizza=10,/obj/item/reagent_containers/food/snacks/sushi_TobikoEgg=10,/obj/item/reagent_containers/food/snacks/bigbiteburger=10,/obj/item/reagent_containers/food/snacks/sushi_SmokedSalmon=10,""=70); + lootcount = 20; + name = "Food CC Spawner #2" }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellow" + }, +/area/centcom/specops) "tid" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo17" }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/elite_squad) +"tig" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/decal/warning_stripes/south, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 1; + do_not_delete_me = 1 + }, +/obj/machinery/door/poddoor/shutters/preopen/invincible{ + dir = 1; + id_tag = "ERT_armory_vkd"; + name = "Armory level 1" + }, +/obj/machinery/door/poddoor/impassable/preopen{ + id_tag = "ERT_Quarantine"; + name = "ERT Quarantine" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" + }, +/area/centcom/specops) "tik" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo18" @@ -41591,16 +41661,12 @@ icon_state = "whiteblue" }, /area/shuttle/escape) -"tjc" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 1 - }, -/obj/effect/turf_decal/siding/white, +"tiF" = ( /turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkblue" + dir = 4; + icon_state = "darkredaltstrip" }, -/area/centcom/zone1) +/area/centcom/zone3) "tjm" = ( /turf/simulated/wall/shuttle/onlyselfsmooth{ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' @@ -41608,8 +41674,8 @@ /area/shuttle/syndicate_sit) "tjx" = ( /obj/machinery/conveyor/inverted{ - id = "SFBQMLoad"; - dir = 5 + dir = 5; + id = "SFBQMLoad" }, /turf/simulated/floor/plasteel{ icon_state = "darkfull" @@ -41645,6 +41711,12 @@ icon_state = "darkgrey" }, /area/centcom/evac) +"tjY" = ( +/obj/machinery/vending/medical, +/turf/simulated/floor/shuttle{ + icon_state = "floor3" + }, +/area/shuttle/administration) "tkm" = ( /obj/effect/turf_decal/siding/wideplating{ color = "#55391A"; @@ -41654,23 +41726,54 @@ icon_state = "grimy" }, /area/syndicate_mothership) -"tky" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "Air" +"tkP" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 9 }, -/obj/machinery/light{ - dir = 8 +/obj/effect/mapping_helpers/light, +/turf/simulated/floor/beach/sand{ + icon = 'icons/turf/floors.dmi'; + icon_state = "asteroid" }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/area/centcom/evac) +"tkR" = ( +/obj/structure/closet/wardrobe/chemistry_white, +/obj/item/storage/bag/chemistry, +/obj/item/storage/bag/chemistry, +/obj/item/clothing/glasses/science{ + pixel_y = 3 }, -/area/centcom/supply) +/obj/item/clothing/glasses/science{ + pixel_y = 3 + }, +/turf/simulated/floor/engine, +/area/centcom/specops) "tle" = ( /obj/structure/chair/sofa/corp/right{ dir = 8 }, /turf/simulated/floor/wood, /area/centcom/zone1) +"tll" = ( +/obj/machinery/vending/boozeomat, +/turf/simulated/floor/carpet/black, +/area/shuttle/administration) +"tlp" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/portable_atmospherics/canister/sleeping_agent{ + maximum_pressure = 50000 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 1; + id = "N2O" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "tls" = ( /obj/machinery/flasher_button{ id = "syndie_FB_cells"; @@ -41723,20 +41826,6 @@ icon_state = "darkblue" }, /area/centcom/zone1) -"tlH" = ( -/obj/structure/bed/dogbed/ian{ - name = "Lounger"; - pixel_x = -2 - }, -/mob/living/simple_animal/pet/dog/fox/alisa{ - pixel_x = -2 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "tlK" = ( /obj/machinery/light/spot{ dir = 8; @@ -41747,6 +41836,19 @@ icon_state = "floor4" }, /area/shuttle/syndicate_elite) +"tlT" = ( +/obj/machinery/door_control/secure{ + id = "CC_Armory_DURAND"; + name = "DURAND"; + pixel_x = 24; + pixel_y = 32; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredcorners" + }, +/area/centcom/specops) "tlW" = ( /obj/structure/shuttle/engine/huge{ dir = 1; @@ -41761,22 +41863,13 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) -"tmn" = ( -/obj/structure/table, -/obj/item/reagent_containers/glass/beaker/cryoxadone{ - pixel_x = 8; - pixel_y = 9 - }, -/obj/item/reagent_containers/glass/beaker/cryoxadone{ - pixel_x = 1; - pixel_y = 2 - }, -/obj/item/reagent_containers/glass/beaker/cryoxadone{ - pixel_x = -6; - pixel_y = 9 +"tmG" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 9; + icon_state = "darkyellow" }, /area/centcom/specops) "tmL" = ( @@ -41787,6 +41880,16 @@ icon_state = "freezerfloor" }, /area/centcom/jail) +"tmQ" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + id_tag = "ERT_director_office_shutters2"; + layer = 5; + locked = 1; + name = "CentCom SOO Briefing" + }, +/turf/simulated/wall/indestructible/fakeglass, +/area/centcom/specops) "tmU" = ( /obj/item/robot_parts/robot_component{ desc = "Некая блюспейс сущность, обещала когда нибудь его доделать..."; @@ -41796,14 +41899,10 @@ icon_state = "darkfull" }, /area/syndicate_mothership/infteam) -"tnb" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 1; - icon_state = "propulsion_l"; - tag = "icon-propulsion_l (NORTH)" - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/syndicate_sit) +"tnc" = ( +/obj/structure/curtain/open/shower/centcom, +/turf/simulated/wall/indestructible/fakeglass, +/area/centcom/zone2) "tnt" = ( /obj/item/radio/intercom/syndicate{ pixel_y = -25 @@ -41819,6 +41918,21 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/syndicate_mothership/elite_squad) +"tnH" = ( +/obj/item/flag/nt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellowalt" + }, +/area/centcom/zone3) +"tnL" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4; + icon_state = "burst_l" + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating/airless, +/area/shuttle/pod_2) "tnQ" = ( /obj/structure/table/wood/fancy/black, /obj/item/clothing/accessory/medal/gold{ @@ -41832,40 +41946,49 @@ }, /turf/simulated/floor/carpet/red, /area/syndicate_mothership/control) -"toU" = ( +"tnU" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/machinery/iv_drip, +/obj/item/reagent_containers/iv_bag/salglu, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/nitrogen, +/obj/item/tank/internals/emergency_oxygen/plasma, /turf/simulated/floor/plasteel{ - icon_state = "white" + dir = 8; + icon_state = "darkbluecornersalt" }, /area/centcom/specops) -"toV" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/food/snacks/validsalad, -/obj/structure/sign/poster/official/nanotrasen_logo{ - icon = 'icons/obj/decals.dmi'; - icon_state = "nanotrasen_sign3"; - pixel_x = -16; - pixel_y = 32 +"toh" = ( +/obj/structure/chair/comfy/brown{ + color = "#3300FF" }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/turf/simulated/floor/carpet, +/area/centcom/zone3) +"toL" = ( +/obj/structure/table/wood{ + color = "#996633" }, -/area/centcom/specops) -"toW" = ( -/obj/structure/shuttle/engine/heater{ - icon_state = "heater3x3"; - tag = "icon-heater (NORTH)" +/obj/item/paper_bin/nanotrasen{ + pixel_x = -2; + pixel_y = 8 }, -/turf/simulated/floor/plating/airless, +/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) -"tpf" = ( -/obj/structure/window/reinforced, -/obj/structure/table, -/obj/machinery/light/small{ - dir = 4 +"toU" = ( +/turf/simulated/floor/plasteel{ + icon_state = "white" }, -/obj/machinery/computer/library/public, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) +/area/centcom/specops) "tph" = ( /obj/effect/decal/cleanable/vomit, /obj/effect/decal/cleanable/dirt, @@ -41893,12 +42016,44 @@ /obj/machinery/light/small, /turf/simulated/floor/wood, /area/centcom/zone1) +"tpU" = ( +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_y = -32 + }, +/obj/item/twohanded/required/kirbyplants, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) +"tqr" = ( +/obj/machinery/computer/shuttle/nt/drop_pod/recall{ + pixel_x = 32; + possible_destinations = "shit_rain_base" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "navybluealt" + }, +/area/centcom/specops) "tqy" = ( /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutral" }, /area/centcom/evac) +"tqG" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "tqI" = ( /obj/structure/window/reinforced{ dir = 8 @@ -41934,20 +42089,21 @@ icon_state = "dark" }, /area/centcom/jail) -"tqY" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "CC_Armory_AEG" +"trm" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 6 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/turf/simulated/floor/glass, +/area/centcom/bridge) +"trp" = ( +/obj/item/radio/intercom/specops{ + pixel_y = 25 }, -/area/centcom/specops) -"trn" = ( -/obj/effect/turf_decal/siding{ - color = "#444444" +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkgreen" }, -/turf/simulated/floor/glass/reinforced, /area/centcom/specops) "trB" = ( /turf/simulated/floor/plasteel{ @@ -41965,13 +42121,6 @@ icon_state = "darkfull" }, /area/syndicate_mothership/jail) -"tsa" = ( -/obj/machinery/computer/message_monitor, -/obj/effect/turf_decal/siding{ - color = "#444444" - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "tsj" = ( /obj/structure/chair/comfy/shuttle{ dir = 4 @@ -41981,10 +42130,14 @@ icon_state = "bot" }, /area/shuttle/escape) -"tsO" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/food/snacks/sliceable/birthdaycake, -/turf/simulated/floor/wood, +"tso" = ( +/obj/machinery/vending/security/ert{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "navybluealt" + }, /area/centcom/specops) "tsX" = ( /obj/structure/rack, @@ -42003,10 +42156,46 @@ /obj/effect/turf_decal/bot_white, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) +"tte" = ( +/obj/machinery/door/airlock/shuttle{ + aiControlDisabled = 1; + id_tag = "s_docking_airlock"; + name = "Emergency Droppod"; + req_access = list(109) + }, +/turf/simulated/floor/shuttle, +/area/shuttle/nt_droppod) +"tto" = ( +/obj/effect/turf_decal/siding/blue/corner{ + color = "#444444" + }, +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "ttr" = ( /obj/item/flag/syndi, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/control) +"ttE" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1; + icon_state = "propulsion_r"; + tag = "icon-propulsion_r (NORTH)" + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/syndicate_sit) +"ttN" = ( +/obj/structure/table/reinforced{ + color = "#444444" + }, +/obj/item/radio/intercom/specops{ + pixel_x = 30 + }, +/obj/item/assault_pod/nt, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "navybluealt" + }, +/area/centcom/specops) "ttO" = ( /obj/machinery/hydroponics/constructable{ layer = 3.2 @@ -42020,6 +42209,10 @@ }, /turf/simulated/floor/carpet/royalblack, /area/syndicate_mothership/control) +"tuh" = ( +/obj/effect/turf_decal/siding/white, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "tun" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -42036,15 +42229,6 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) -"tuL" = ( -/obj/structure/sign/poster/official/nanotrasen_logo{ - icon = 'icons/obj/decals.dmi'; - icon_state = "ntsing_alt4" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "tuX" = ( /obj/effect/turf_decal{ dir = 4; @@ -42066,63 +42250,19 @@ icon_state = "arrival" }, /area/centcom/zone1) -"tvU" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/item/radio/intercom/specops{ - pixel_x = 32 - }, -/obj/effect/turf_decal/siding/blue/corner{ - color = "#444444"; - dir = 8 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"twa" = ( -/obj/structure/reagent_dispensers/spacecleanertank{ - pixel_x = -32 - }, -/turf/simulated/floor/indestructible{ - dir = 8; - icon_state = "darkpurple" - }, -/area/centcom/specops) -"twh" = ( -/obj/structure/flora/ausbushes/ywflowers, -/obj/structure/flora/ausbushes/fernybush, -/turf/simulated/floor/grass, -/area/centcom/evac) -"twi" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkred" - }, -/area/centcom/specops) -"twp" = ( -/obj/effect/spawner/random_spawners/syndicate/layout/spacepod, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/stripes/line, -/turf/simulated/floor/plasteel{ - icon_state = "darkgrey" +"twh" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/flora/ausbushes/fernybush, +/turf/simulated/floor/grass, +/area/centcom/evac) +"twp" = ( +/obj/effect/spawner/random_spawners/syndicate/layout/spacepod, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line, +/turf/simulated/floor/plasteel{ + icon_state = "darkgrey" }, /area/syndicate_mothership) -"twC" = ( -/obj/structure/window/reinforced{ - layer = 2.9 - }, -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/effect/turf_decal/siding/white, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) "txk" = ( /obj/effect/turf_decal/stripes/gold{ dir = 9 @@ -42139,31 +42279,25 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership/infteam) -"txs" = ( -/obj/structure/chair/comfy/red{ - dir = 1 - }, -/obj/effect/landmark/aroomwarp{ - tag = "" - }, +"txJ" = ( +/obj/effect/decal/warning_stripes/white/hollow, +/obj/effect/decal/warning_stripes/west, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/bridge) -"txP" = ( -/obj/structure/shuttle/engine/heater{ - icon_state = "heater3x3"; - tag = "icon-heater (NORTH)" - }, -/obj/structure/window/plasmareinforced{ - color = "#FF0000"; - dir = 1 +/area/centcom/supply) +"txL" = ( +/obj/structure/railing{ + layer = 4.3; + pixel_y = 32 }, -/obj/structure/shuttle/engine/platform{ - layer = 2.9 +/obj/structure/chair/comfy/beige{ + dir = 8; + layer = 5; + pixel_y = -2 }, -/turf/simulated/floor/plating/airless, -/area/shuttle/syndicate) +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) "txY" = ( /obj/structure/window/reinforced{ dir = 4 @@ -42172,6 +42306,11 @@ icon_state = "dark" }, /area/centcom/jail) +"txZ" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/snacks/sliceable/pizza/macpizza, +/turf/simulated/floor/wood, +/area/centcom/specops) "tyd" = ( /obj/structure/sign/poster/contraband/random{ pixel_y = 30 @@ -42206,6 +42345,37 @@ water_overlay_icon_state = null }, /area/syndicate_mothership/outside) +"tyB" = ( +/obj/item/paper{ + info = "Убрать кишку на Дельте"; + pixel_y = -2 + }, +/obj/item/paper{ + info = "Наныть мультизет для трама"; + pixel_y = -4 + }, +/obj/item/paper{ + info = "Обед через час, работа через вчера"; + pixel_x = 9 + }, +/obj/item/paper{ + info = "Пофиксить в моем кабинете рантайм трубы в трубе... опять"; + pixel_x = 7; + pixel_y = -9 + }, +/obj/item/paper{ + info = "Начать делать очередную новую станцию и сгореть на втором часу работы в самокопании"; + pixel_x = -5; + pixel_y = -6 + }, +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 8 + }, +/obj/structure/noticeboard{ + pixel_y = -30 + }, +/turf/simulated/floor/wood, +/area/centcom/zone3) "tyD" = ( /obj/effect/turf_decal/stripes/gold{ dir = 9; @@ -42233,6 +42403,10 @@ /obj/machinery/light/spot, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) +"tzC" = ( +/obj/effect/decal/warning_stripes/west, +/turf/simulated/wall/indestructible/fakeglass, +/area/centcom/zone3) "tzJ" = ( /obj/structure/chair/comfy/shuttle{ dir = 8 @@ -42242,22 +42416,41 @@ icon_state = "bot" }, /area/shuttle/escape) -"tzK" = ( -/obj/structure/shuttle/engine/heater{ - dir = 4; - icon_state = "heater3x3_side"; - tag = "icon-heater (NORTH)" +"tzO" = ( +/obj/machinery/vending/medical, +/obj/machinery/light{ + dir = 1 }, -/obj/structure/window/plasmareinforced{ - color = "#22aab7"; - dir = 8 +/turf/simulated/floor/plasteel{ + icon_state = "darkbluealt" }, -/obj/structure/shuttle/engine/platform{ - dir = 4; - layer = 2.9 +/area/centcom/specops) +"tzY" = ( +/obj/structure/window/reinforced{ + dir = 4 }, -/turf/simulated/floor/plating/airless, -/area/shuttle/administration) +/obj/machinery/cryopod, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/zone1) +"tAi" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkbluealt" + }, +/area/centcom/specops) +"tAj" = ( +/obj/machinery/door_control/secure{ + color = "#99ff99"; + id = "ERT_armory_vkd"; + name = "ERT Armory Level 1"; + pixel_x = -24; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkgreen" + }, +/area/centcom/specops) "tAz" = ( /obj/structure/rack/holorack, /obj/item/storage/box/syndie_kit/chameleon{ @@ -42307,18 +42500,15 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/control) -"tAC" = ( -/obj/structure/holohoop{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 +"tAB" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = 32; + pixel_y = 32 }, -/obj/effect/decal/warning_stripes/green/hollow, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/evac) +/area/centcom/specops) "tBf" = ( /turf/simulated/floor/wood{ icon_state = "fancy-wood-oak-broken3" @@ -42337,15 +42527,15 @@ name = "floor" }, /area/syndicate_mothership/infteam) -"tBr" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 +"tBG" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "CC_crate" }, -/obj/item/radio/intercom{ - pixel_x = -28 +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_3) +/area/centcom/supply) "tBM" = ( /obj/effect/turf_decal{ dir = 5; @@ -42354,6 +42544,14 @@ }, /turf/simulated/floor/indestructible/beach/sand, /area/syndicate_mothership/outside) +"tBT" = ( +/obj/structure/bookcase/manuals, +/obj/item/book/manual/sop_legal, +/obj/item/book/manual/sop_engineering, +/obj/item/book/manual/sop_command, +/obj/item/book/manual/security_space_law, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "tCA" = ( /obj/effect/turf_decal{ dir = 1; @@ -42405,10 +42603,25 @@ icon_state = "grimy" }, /area/syndicate_mothership) -"tDu" = ( -/obj/machinery/tcomms/relay/cc, -/turf/simulated/floor/bluegrid, -/area/centcom/bridge) +"tDo" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/brigdoor{ + dir = 1; + req_access = list(104) + }, +/obj/machinery/door/poddoor/shutters/invincible{ + density = 0; + dir = 1; + icon_state = "open"; + id_tag = "CC_space_jail_sec"; + layer = 50; + level = 3; + locked = 1; + name = "Central Command Jail"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/centcom/jail) "tDJ" = ( /obj/machinery/light/spot{ dir = 4; @@ -42445,28 +42658,25 @@ tag = "icon-stage_stairs" }, /area/syndicate_mothership) -"tDY" = ( -/obj/structure/sign/greencross{ - pixel_x = 32 +"tEi" = ( +/obj/effect/decal/warning_stripes/blue{ + desc = "Лестница в кабинет СОО"; + icon = 'icons/obj/structures.dmi'; + icon_state = "ladder10"; + name = "Ladder" }, -/turf/simulated/floor/plasteel{ - icon_state = "darkgreencorners" +/obj/effect/step_trigger/teleporter{ + icon = 'icons/mob/screen_gen.dmi'; + icon_state = "x2"; + teleport_x = 203; + teleport_y = 41; + teleport_z = 1 }, -/area/centcom/specops) -"tEr" = ( -/obj/docking_port/mobile/supply, -/obj/docking_port/stationary/transit{ - dir = 8; - dwidth = 5; - height = 7; - id = "supply_transit"; - name = "supply in transit"; - pixel_x = 32; - turf_type = /turf/space/transit/north; - width = 12 +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkredaltstrip" }, -/turf/simulated/wall/shuttle, -/area/shuttle/supply) +/area/centcom/jail) "tEB" = ( /turf/simulated/floor/plasteel{ icon_state = "darkyellowaltstrip" @@ -42480,9 +42690,13 @@ icon_state = "cmo" }, /area/shuttle/escape) -"tEQ" = ( -/turf/simulated/wall/shuttle/overspace, -/area/shuttle/escape) +"tEV" = ( +/obj/item/flag/nt, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "navybluealt" + }, +/area/centcom/specops) "tFk" = ( /obj/item/twohanded/required/kirbyplants, /obj/machinery/light/spot{ @@ -42508,19 +42722,6 @@ /obj/item/deck/cards, /turf/simulated/floor/carpet, /area/centcom/zone1) -"tFD" = ( -/obj/effect/turf_decal/loading_area/white{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/north, -/obj/effect/turf_decal/tile/neutral{ - alpha = 100; - color = "black"; - icon_state = "tile_full"; - layer = 9 - }, -/turf/simulated/floor/plating, -/area/centcom/supply) "tFQ" = ( /obj/structure/rack, /obj/effect/turf_decal/bot_white, @@ -42557,13 +42758,23 @@ icon_state = "freezerfloor" }, /area/syndicate_mothership/elite_squad) -"tGc" = ( +"tGe" = ( +/obj/item/flag/nt, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) +"tGh" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4; + pixel_x = -14 + }, /obj/effect/turf_decal/siding{ color = "#444444"; - dir = 9 + dir = 1 }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) "tGm" = ( /obj/machinery/door/airlock/syndicate/cargo{ name = "Cargo Load"; @@ -42587,6 +42798,15 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) +"tHm" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "vault" + }, +/area/centcom/specops) "tHp" = ( /obj/machinery/recharge_station, /obj/effect/decal/cleanable/dirt, @@ -42594,138 +42814,49 @@ icon_state = "bot" }, /area/shuttle/escape) -"tHC" = ( -/obj/structure/rack/holorack, -/obj/item/clothing/under/assistantformal, -/obj/item/clothing/under/captain_fly{ - name = "rogue uniform" - }, -/obj/item/clothing/under/captainparade{ - name = "parade uniform" - }, -/obj/item/clothing/under/captainparade{ - name = "parade uniform" - }, -/obj/item/clothing/under/captain_fly{ - name = "rogue uniform" - }, -/obj/item/clothing/under/assistantformal, -/obj/item/clothing/under/fluff/elishirt, -/obj/item/clothing/under/fluff/elishirt, -/obj/item/clothing/under/lawyer/black, -/obj/item/clothing/under/lawyer/black, -/obj/item/clothing/under/lawyer/blue, -/obj/item/clothing/under/lawyer/blue, -/obj/item/clothing/under/lawyer/bluesuit, -/obj/item/clothing/under/lawyer/bluesuit, -/obj/item/clothing/under/lawyer/female, -/obj/item/clothing/under/lawyer/female, -/obj/item/clothing/under/lawyer/oldman, -/obj/item/clothing/under/lawyer/oldman, -/obj/item/clothing/under/lawyer/red, -/obj/item/clothing/under/lawyer/red, -/obj/item/clothing/under/mafia{ - name = "black outfit" - }, -/obj/item/clothing/under/mafia{ - name = "black outfit" - }, -/obj/item/clothing/under/mafia/white{ - name = "white outfit" - }, -/obj/item/clothing/under/mafia/white{ - name = "white outfit" - }, -/obj/item/clothing/under/misc/durathread, -/obj/item/clothing/under/misc/durathread, -/obj/item/clothing/under/retro/engineering, -/obj/item/clothing/under/retro/engineering, -/obj/item/clothing/under/retro/medical, -/obj/item/clothing/under/retro/medical, -/obj/item/clothing/under/retro/science, -/obj/item/clothing/under/retro/science, -/obj/item/clothing/under/retro/security, -/obj/item/clothing/under/retro/security, -/obj/item/clothing/under/color/black{ - icon_state = "hosblueclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "hosblueclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "hosdnavyclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "hosdnavyclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "hostanclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "hostanclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "officerblueclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "officerblueclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "officerdnavyclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "officerdnavyclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "officertanclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "officertanclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "wardenblueclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/under/color/black{ - icon_state = "wardenblueclothes"; - name = "jumpsuit" +"tHx" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1; + icon_state = "propulsion_r"; + tag = "icon-propulsion_r (NORTH)" }, -/obj/item/clothing/under/color/black{ - icon_state = "wardendnavyclothes"; - name = "jumpsuit" +/turf/simulated/floor/plating/airless, +/area/shuttle/syndicate_elite) +"tHy" = ( +/obj/effect/decal/warning_stripes/northeastsouth, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 1; + id_tag = "CC_Armory_GYGAX" }, -/obj/item/clothing/under/color/black{ - icon_state = "wardendnavyclothes"; - name = "jumpsuit" +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" }, -/obj/item/clothing/under/color/black{ - icon_state = "wardentanclothes"; - name = "jumpsuit" +/area/centcom/specops) +"tHL" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "ShitRainSupply" }, -/obj/item/clothing/under/color/black{ - icon_state = "wardentanclothes"; - name = "jumpsuit" +/turf/simulated/floor/plating, +/area/centcom/specops) +"tHM" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 1 }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9 +/turf/simulated/floor/glass, +/area/centcom/bridge) +"tHQ" = ( +/obj/effect/decal/warning_stripes/red, +/obj/machinery/door/airlock/centcom{ + damage_deflection = 999; + name = "Prison Customs"; + opacity = 1; + req_access = list(104) }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/supply) +/area/centcom/jail) "tIe" = ( /obj/structure/shuttle/engine/platform{ layer = 2.9 @@ -42736,12 +42867,31 @@ }, /turf/simulated/floor/shuttle/transparent_floor, /area/shuttle/ninja) +"tIk" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "ERT_Supply_Pod" + }, +/obj/machinery/door/airlock/centcom{ + name = "ERT Supply Pod Loading Zone"; + req_access = list(114) + }, +/turf/simulated/floor/plating, +/area/centcom/specops) "tIn" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/wood{ icon_state = "fancy-wood-oak-broken3" }, /area/syndicate_mothership) +"tIw" = ( +/obj/structure/table, +/obj/item/storage/box/handcuffs, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "dark" + }, +/area/shuttle/administration) "tIC" = ( /obj/machinery/light/small{ dir = 1 @@ -42796,6 +42946,23 @@ /obj/structure/closet/crate/can, /turf/simulated/floor/wood, /area/centcom/zone1) +"tJJ" = ( +/obj/structure/railing{ + layer = 4.3 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/centcom/specops) +"tJV" = ( +/obj/machinery/computer/med_data, +/obj/effect/turf_decal/siding/yellow{ + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone3) "tKi" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -42813,7 +42980,7 @@ /area/syndicate_mothership/control) "tKn" = ( /obj/structure/rack, -/obj/item/aiModule/syndicate, +/obj/item/ai_module/syndicate, /obj/item/multitool/ai_detect, /obj/item/jammer, /turf/simulated/floor/shuttle/objective_check/vox, @@ -42850,6 +43017,31 @@ icon_state = "dark" }, /area/syndicate_mothership/control) +"tKZ" = ( +/obj/structure/table/reinforced, +/obj/machinery/kitchen_machine/microwave/upgraded{ + pixel_y = 6 + }, +/turf/simulated/floor/carpet/black, +/area/shuttle/administration) +"tLa" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredcorners" + }, +/area/centcom/specops) +"tLb" = ( +/obj/structure/table/reinforced{ + color = "#444444" + }, +/obj/structure/sign/poster/official/kill_syndicate{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "navybluealt" + }, +/area/centcom/specops) "tLj" = ( /obj/item/storage/toolbox/syndicate, /turf/simulated/floor/shuttle/objective_check/vox, @@ -42901,59 +43093,58 @@ }, /turf/simulated/floor/carpet/arcade, /area/syndicate_mothership/infteam) -"tMs" = ( -/obj/effect/decal/warning_stripes/white/hollow, -/obj/structure/mirror{ - pixel_y = -32 +"tMy" = ( +/obj/machinery/door_control/secure{ + id = "adminshuttleshutters"; + name = "Shutter control"; + pixel_x = 5; + pixel_y = -23; + req_access = list(101) }, -/turf/simulated/floor/plasteel{ +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; icon_state = "dark" }, -/area/centcom/specops) -"tME" = ( -/obj/structure/closet/secure_closet/guncabinet{ - layer = 2.9; - name = "Enforcer" - }, -/obj/item/ammo_box/magazine/enforcer/lethal, -/obj/item/ammo_box/magazine/enforcer/lethal, -/obj/item/ammo_box/magazine/enforcer/lethal, -/obj/item/ammo_box/magazine/enforcer/lethal, -/obj/item/gun/projectile/automatic/pistol/enforcer/lethal{ - icon_state = "enforcer_red" - }, -/obj/item/gun/projectile/automatic/pistol/enforcer/lethal{ - icon_state = "enforcer_red" - }, -/obj/item/gun/projectile/automatic/pistol/enforcer/lethal{ - icon_state = "enforcer_red" +/area/shuttle/administration) +"tMC" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1; + tag = "icon-heater (NORTH)" }, -/obj/item/gun/projectile/automatic/pistol/enforcer/lethal{ - icon_state = "enforcer_red" +/obj/structure/window/reinforced{ + color = "red" }, +/turf/simulated/floor/plating/airless, +/area/shuttle/syndicate_sit) +"tMK" = ( /obj/structure/window/reinforced{ - dir = 1 + layer = 2.9 }, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" - }, -/area/shuttle/gamma) -"tMM" = ( -/obj/structure/window/reinforced, -/obj/machinery/light, -/obj/effect/turf_decal/siding/white{ - dir = 10 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/structure/table, +/obj/item/reagent_containers/glass/beaker/waterbottle, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) +"tNp" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1; + icon_state = "propulsion_r"; + tag = "icon-propulsion_r (NORTH)" }, -/area/centcom/evac) +/turf/simulated/floor/plating/airless, +/area/shuttle/funeral) "tNv" = ( /obj/structure/table/wood, /obj/item/candle/eternal, /obj/structure/window/reinforced, /turf/simulated/floor/carpet/black, /area/centcom/evac) +"tNz" = ( +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkgreen" + }, +/area/centcom/specops) "tNZ" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/condiment/peppermill{ @@ -42996,6 +43187,13 @@ }, /turf/simulated/floor/mech_bay_recharge_floor, /area/shuttle/escape) +"tOR" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/light, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) "tPj" = ( /obj/machinery/light/small, /turf/simulated/floor/wood{ @@ -43010,6 +43208,22 @@ }, /turf/simulated/floor/carpet/arcade, /area/centcom/zone1) +"tPu" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1; + tag = "icon-heater (NORTH)" + }, +/obj/structure/window/reinforced{ + color = "red" + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/syndicate_elite) +"tPx" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/simulated/wall/indestructible/reinforced, +/area/centcom/zone3) "tPy" = ( /obj/item/flag/syndi, /turf/simulated/floor/shuttle{ @@ -43017,43 +43231,33 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"tPD" = ( -/obj/structure/chair/comfy/beige{ - dir = 8; - layer = 5; - pixel_y = -2 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) "tPL" = ( /turf/simulated/floor/wood{ icon_state = "fancy-wood-oak-broken4" }, /area/syndicate_mothership/infteam) -"tQg" = ( -/obj/structure/chair/comfy/beige{ - dir = 4; - layer = 5; - pixel_y = -2 +"tPY" = ( +/obj/structure/table/wood, +/obj/item/taperecorder{ + pixel_x = -5; + pixel_y = 5 }, -/obj/structure/railing{ - layer = 4.3; - pixel_y = 32 +/obj/item/paper_bin/nanotrasen, +/obj/item/pen{ + pixel_x = 7; + pixel_y = 9 }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/centcom/zone3) "tQh" = ( /obj/item/storage/bible, /obj/structure/table/wood, /turf/simulated/floor/carpet/black, /area/centcom/evac) -"tQy" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 - }, -/turf/simulated/floor/glass/reinforced, -/area/centcom/specops) "tQA" = ( /obj/structure/curtain/black{ pixel_y = -32 @@ -43090,13 +43294,30 @@ }, /turf/simulated/floor/plasteel, /area/centcom/evac) -"tRQ" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, +"tRj" = ( +/obj/structure/closet/coffin, +/turf/simulated/floor/plating, +/area/centcom/zone2) +"tRk" = ( /turf/simulated/floor/plasteel{ dir = 5; - icon_state = "darkred" + icon_state = "navybluealtstrip" + }, +/area/centcom/supply) +"tRF" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkredalt" + }, +/area/centcom/zone2) +"tRX" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + id_tag = "CC_ERT1" + }, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "navybluealt" }, /area/centcom/specops) "tRY" = ( @@ -43114,6 +43335,15 @@ }, /turf/simulated/floor/carpet, /area/centcom/evac) +"tSk" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 1; + id_tag = "CC_Armory_IK60" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "tSu" = ( /obj/structure/window/reinforced{ dir = 4 @@ -43129,6 +43359,12 @@ icon_state = "dark" }, /area/centcom/jail) +"tSE" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellow" + }, +/area/centcom/specops) "tSR" = ( /obj/item/clothing/under/maid, /turf/simulated/floor/plasteel{ @@ -43152,6 +43388,12 @@ name = "floor" }, /area/syndicate_mothership/infteam) +"tSV" = ( +/obj/machinery/vending/ntc/medical, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "tTj" = ( /obj/structure/curtain/black{ pixel_y = -32 @@ -43162,6 +43404,17 @@ name = "floor" }, /area/syndicate_mothership/infteam) +"tTE" = ( +/obj/vehicle/ridden/motorcycle{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/syndicate_mothership) "tTF" = ( /obj/structure/chair/comfy/shuttle{ dir = 4 @@ -43211,34 +43464,6 @@ /obj/structure/window/full/shuttle, /turf/simulated/floor/shuttle/plating, /area/shuttle/trade/sol) -"tUi" = ( -/obj/docking_port/stationary{ - area_type = /area/syndicate_mothership; - dwidth = 8; - height = 22; - id = "syndicate_away"; - name = "syndicate base"; - turf_type = /turf/simulated/floor/indestructible/plating; - width = 18 - }, -/turf/simulated/floor/plating, -/area/syndicate_mothership) -"tUB" = ( -/obj/structure/chair/sofa{ - dir = 5 - }, -/turf/simulated/floor/carpet/red, -/area/centcom/zone1) -"tUJ" = ( -/obj/effect/decal/warning_stripes/south, -/obj/effect/turf_decal/tile/neutral{ - alpha = 180; - color = "black"; - icon_state = "tile_full"; - layer = 9 - }, -/turf/simulated/floor/plating, -/area/centcom/supply) "tVF" = ( /turf/simulated/floor/shuttle{ icon_state = "floor4" @@ -43250,12 +43475,6 @@ icon_state = "dark" }, /area/centcom/bridge) -"tVR" = ( -/obj/machinery/computer/operating, -/turf/simulated/floor/shuttle{ - icon_state = "floor3" - }, -/area/shuttle/administration) "tVZ" = ( /obj/effect/turf_decal{ dir = 1; @@ -43275,21 +43494,17 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) -"tWr" = ( -/obj/effect/turf_decal/stripes/line{ - icon = 'icons/turf/floors.dmi'; - icon_state = "siding4" - }, -/obj/effect/turf_decal/tile/neutral{ - alpha = 75; - color = "black"; - icon_state = "tile_full" +"tWj" = ( +/obj/structure/closet/wardrobe/red, +/obj/structure/window/reinforced{ + layer = 2.9 }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "rampbottom" +/obj/machinery/light{ + dir = 8 }, -/area/centcom/supply) +/obj/item/storage/box/holobadge, +/turf/simulated/floor/wood, +/area/centcom/jail) "tWu" = ( /obj/structure/chair/stool/bar, /obj/structure/curtain/open/shower/security{ @@ -43297,10 +43512,6 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) -"tWD" = ( -/obj/structure/filingcabinet/chestdrawer, -/turf/simulated/floor/carpet, -/area/centcom/specops) "tWF" = ( /obj/machinery/recharge_station/ert, /obj/effect/decal/cleanable/dirt, @@ -43323,6 +43534,15 @@ icon_state = "brownoldfull" }, /area/syndicate_mothership/jail) +"tXE" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "navybluealt" + }, +/area/centcom/specops) "tYd" = ( /turf/simulated/wall/indestructible/reinforced/rusted, /area/vox_station) @@ -43359,36 +43579,9 @@ }, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) -"tYO" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2; - armor = list("melee"=100,"bullet"=100,"laser"=0,"energy"=0,"bomb"=25,"bio"=100,"rad"=100,"fire"=80,"acid"=100) - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "navybluealt" - }, -/area/centcom/specops) -"tYP" = ( -/obj/structure/rack, -/obj/item/ammo_box/shotgun/rubbershot, -/obj/item/ammo_box/shotgun/rubbershot, -/obj/item/ammo_box/shotgun/rubbershot, -/obj/effect/decal/warning_stripes/green/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "tZe" = ( /turf/simulated/floor/carpet/black, /area/centcom/zone1) -"tZi" = ( -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "navybluealtstrip" - }, -/area/centcom/supply) "tZj" = ( /obj/machinery/vending/cigarette, /obj/structure/closet/fireaxecabinet{ @@ -43415,15 +43608,25 @@ /obj/structure/falsewall/reinforced, /turf/simulated/floor/plating, /area/centcom/supply) -"uak" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 +"uah" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + dir = 8; + id_tag = "CC_supply_internal"; + layer = 5; + locked = 1 }, -/obj/machinery/light{ - dir = 4 +/obj/machinery/door_control/secure{ + id = "CC_supply_internal"; + name = "Supply External Shutters"; + pixel_y = 24; + req_access = list(114) }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_2) +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellowalt" + }, +/area/centcom/supply) "uam" = ( /obj/effect/landmark/prisonwarp, /obj/effect/landmark/prisonwarp, @@ -43442,19 +43645,14 @@ icon_state = "floor4" }, /area/shuttle/assault_pod) -"uby" = ( -/obj/structure/table/wood/fancy/black, -/obj/machinery/door_control/secure{ - id = "senior_o_shutters"; - req_access = list(114) +"ubx" = ( +/obj/machinery/photocopier, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 }, /turf/simulated/floor/wood/fancy/light, /area/centcom/specops) -"ubE" = ( -/turf/space/transit/south{ - icon_state = "speedspace_ns_1" - }, -/area/space) "ubF" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 @@ -43545,15 +43743,6 @@ icon_state = "darkgrey" }, /area/syndicate_mothership) -"udF" = ( -/obj/structure/sign/custodian{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "navybluealt" - }, -/area/centcom/specops) "udI" = ( /obj/structure/reagent_dispensers/water_cooler, /turf/simulated/floor/wood, @@ -43604,20 +43793,6 @@ icon_state = "grimy" }, /area/centcom/zone2) -"ueB" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "CC_Armory_DEDI" - }, -/obj/machinery/door/poddoor/impassable/preopen{ - id_tag = "ERT_Quarantine"; - name = "ERT Quarantine" - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "navybluealt" - }, -/area/centcom/specops) "ueC" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/fans/tiny/invisible, @@ -43626,34 +43801,15 @@ icon_state = "warndarkgreycornerred" }, /area/syndicate_mothership) -"ueG" = ( -/obj/structure/window/reinforced{ - layer = 2.9 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/table, -/obj/item/paper_bin/nanotrasen{ - pixel_x = 3; - pixel_y = 12 - }, -/obj/item/pen/multi/fountain, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"ueL" = ( -/turf/simulated/floor/plating, -/area/centcom/zone2) "ueN" = ( /turf/simulated/floor/plasteel{ icon_state = "darkyellowalt" }, /area/centcom/zone3) -"ueR" = ( -/obj/effect/turf_decal/caution/stand_clear/red, -/turf/simulated/floor/plasteel{ - icon_state = "darkbluealtstrip" - }, +"ueU" = ( +/obj/structure/table, +/obj/machinery/computer/library/public, +/turf/simulated/floor/carpet/black, /area/centcom/zone2) "ufa" = ( /obj/machinery/vending/boozeomat, @@ -43683,49 +43839,6 @@ icon_state = "darkyellowalt" }, /area/centcom/zone3) -"ufB" = ( -/obj/structure/window/reinforced{ - layer = 2.9 - }, -/obj/structure/table, -/obj/item/paper_bin/nanotrasen{ - pixel_x = 3; - pixel_y = 12 - }, -/obj/item/pen/multi/fountain, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"ufK" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 10 - }, -/obj/structure/showcase{ - layer = 4.2; - pixel_x = 5; - pixel_y = 5 - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"ufN" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor{ - dir = 1; - req_access = list(104) - }, -/obj/machinery/door/poddoor/shutters/invincible{ - density = 0; - dir = 1; - icon_state = "open"; - id_tag = "CC_space_jail_sec"; - layer = 50; - level = 3; - locked = 1; - name = "Central Command Jail"; - opacity = 0 - }, -/turf/simulated/floor/plating, -/area/centcom/jail) "ufP" = ( /obj/structure/table/wood/fancy/black, /obj/item/reagent_containers/food/drinks/trophy/gold_cup, @@ -43737,6 +43850,17 @@ }, /turf/simulated/floor/carpet/red, /area/syndicate_mothership/control) +"ufR" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/turf_decal/siding/white{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "ugm" = ( /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -43770,6 +43894,32 @@ "ugH" = ( /turf/simulated/floor/light/colour_cycle/dancefloor_a, /area/centcom/zone1) +"ugK" = ( +/obj/machinery/light, +/obj/machinery/photocopier, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/centcom/zone2) +"ugM" = ( +/obj/structure/table/reinforced, +/obj/machinery/chem_dispenser/soda/upgraded, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"ugQ" = ( +/obj/structure/sign/poster/official/kill_syndicate{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "navybluealt" + }, +/area/centcom/specops) "ugS" = ( /obj/effect/decal/warning_stripes/white, /obj/machinery/door/airlock/centcom{ @@ -43793,22 +43943,11 @@ icon_state = "cmo" }, /area/shuttle/escape) -"uhi" = ( -/obj/structure/table/wood{ - color = "#996633" +"uho" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "navybluealt" }, -/obj/item/folder, -/obj/item/folder, -/obj/item/folder/blue, -/obj/item/folder/blue, -/obj/item/folder/red, -/obj/item/folder/red, -/obj/item/folder/white, -/obj/item/folder/white, -/obj/item/folder/yellow, -/obj/item/folder/yellow, -/obj/structure/window/reinforced, -/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "uhy" = ( /obj/effect/turf_decal/stripes/line{ @@ -43880,14 +44019,6 @@ icon_state = "darkgrey" }, /area/syndicate_mothership) -"ujw" = ( -/obj/effect/turf_decal/siding/white{ - dir = 10 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/evac) "ukh" = ( /obj/effect/turf_decal/siding/wideplating{ color = "#55391A"; @@ -43903,28 +44034,17 @@ icon_state = "darkyellowaltstrip" }, /area/centcom/zone3) -"ulL" = ( -/obj/mecha/combat/gygax/ert{ - color = "#66ff99"; - name = "Assault Jaeger" +"ulG" = ( +/obj/structure/railing{ + density = 0; + layer = 4.3 }, /turf/simulated/floor/plasteel{ - icon_state = "navyblue" + color = "gray"; + dir = 8; + icon_state = "rampbottom" }, /area/centcom/specops) -"umb" = ( -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/door/airlock/gold/glass{ - frequency = 2000; - hackable = 0; - id_tag = "CC-OP3-Ext"; - locked = 1; - name = "Zone 3" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone3) "umd" = ( /obj/effect/turf_decal/tile/neutral{ color = "black"; @@ -44000,34 +44120,44 @@ icon_state = "darkyellowaltstrip" }, /area/syndicate_mothership/control) -"unp" = ( -/obj/item/paper_bin/nanotrasen{ - pixel_x = 3; - pixel_y = 12 - }, -/obj/item/pen/multi/fountain, -/obj/structure/table/reinforced, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" +"unl" = ( +/obj/structure/rack/holorack, +/obj/item/storage/box/deathimp, +/obj/item/storage/box/deathimp, +/obj/item/storage/box/deathimp, +/obj/item/storage/box/chef_rare_ingredients_kit, +/obj/item/storage/box/bartender_rare_ingredients_kit, +/obj/item/storage/box/fingerprints, +/obj/item/storage/box/fingerprints, +/obj/item/storage/box/swabs, +/obj/item/storage/box/swabs, +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 }, -/area/centcom/zone3) -"unB" = ( /obj/structure/window/reinforced{ - dir = 8 + dir = 1; + layer = 2.9 }, -/obj/machinery/computer, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/bridge) -"unM" = ( -/obj/structure/table/glass, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 6 +/area/centcom/supply) +"unC" = ( +/obj/machinery/door_control/secure{ + id = "CC_supply_space"; + name = "Supply Blastdoor"; + pixel_y = 24; + req_access = list(114) }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) +/obj/machinery/conveyor_switch/oneway{ + id = "CC_crate" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellowalt" + }, +/area/centcom/supply) "unO" = ( /obj/item/flag/nt, /obj/machinery/light/small{ @@ -44055,11 +44185,6 @@ /obj/structure/rack/gunrack, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) -"uoq" = ( -/turf/simulated/floor/shuttle{ - icon_state = "floor4" - }, -/area/shuttle/escape) "uor" = ( /obj/machinery/syndiepad/admin/loadpad{ target_id = "syndie_cargo_port1" @@ -44072,12 +44197,6 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"uox" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/turf/simulated/floor/wood, -/area/centcom/specops) "uoE" = ( /obj/structure/railing{ dir = 4 @@ -44104,12 +44223,88 @@ /obj/structure/rack/gunrack, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) -"uoM" = ( +"uoR" = ( +/obj/item/ammo_box/magazine/laser, +/obj/item/ammo_box/magazine/laser, +/obj/item/ammo_box/magazine/laser, +/obj/item/ammo_box/magazine/laser, +/obj/item/ammo_box/magazine/laser, +/obj/item/ammo_box/magazine/laser, +/obj/item/ammo_box/magazine/laser, +/obj/item/ammo_box/magazine/laser, +/obj/item/ammo_box/magazine/laser, +/obj/item/ammo_box/magazine/laser, +/obj/item/ammo_box/magazine/laser, +/obj/item/ammo_box/magazine/laser, +/obj/item/ammo_box/magazine/laser, +/obj/item/ammo_box/magazine/laser, +/obj/item/ammo_box/magazine/laser, +/obj/item/ammo_box/magazine/laser, +/obj/structure/table/reinforced, +/obj/effect/decal/warning_stripes/blue/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"uoZ" = ( +/obj/structure/closet{ + icon_closed = "syndicate1"; + icon_opened = "syndicate1open"; + icon_state = "syndicate1" + }, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/gun/projectile/automatic/proto, +/obj/item/gun/energy/gun/blueshield, +/obj/item/clothing/glasses/hud/security/sunglasses/aviators, +/obj/item/reagent_containers/food/snacks/candy/mre, +/obj/item/reagent_containers/hypospray/combat, +/obj/item/radio/headset/ert/alt{ + desc = null; + name = "SRT bowman headset" + }, +/obj/item/clothing/head/beret/centcom/officer/navy{ + desc = null; + name = "SRT beret" + }, +/obj/item/clothing/shoes/combat/swat{ + name = "SRT special shoes" + }, +/obj/item/clothing/gloves/combat{ + name = "Combat gloves" + }, +/obj/item/storage/belt/security/webbing/srt/full, +/obj/item/storage/backpack/satchel_blueshield/srt, +/obj/item/clothing/suit/storage/blueshield/srt, +/obj/item/clothing/suit/armor/bulletproof{ + name = "SRT bulletproof vest" + }, +/obj/item/shield/riot/tele, +/obj/item/suppressor, +/obj/item/CQC_manual, +/obj/item/implanter/mindshield/ert, +/obj/item/card/id/centcom{ + name = "Special Reaction Team Member card"; + rank = "Special Reaction Team Member"; + registered_name = "Special Reaction Team Member" + }, +/obj/item/storage/box/responseteam, +/obj/item/clothing/under/fluff/jay_turtleneck{ + desc = null; + name = "SRT uniform" + }, +/obj/item/gun/projectile/automatic/pistol/sp8/sp8ar, +/obj/item/ammo_box/magazine/sp8, +/obj/item/ammo_box/magazine/sp8, +/obj/item/implanter/dust, +/obj/item/clothing/accessory/holster, /turf/simulated/floor/plasteel{ dir = 9; - icon_state = "darkredaltstrip" + icon_state = "navyblue" }, -/area/centcom/zone2) +/area/centcom/specops) "upv" = ( /obj/structure/flora/ausbushes/pointybush, /turf/simulated/floor/grass, @@ -44123,12 +44318,6 @@ icon_state = "floor4" }, /area/shuttle/syndicate_sit) -"uqc" = ( -/obj/structure/filingcabinet/chestdrawer{ - pixel_y = 6 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "uqg" = ( /obj/machinery/computer, /turf/simulated/floor/plasteel{ @@ -44174,15 +44363,6 @@ }, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) -"uqG" = ( -/obj/machinery/vending/wallmed{ - pixel_y = -32; - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkyellowalt" - }, -/area/centcom/zone3) "uqH" = ( /obj/structure/chair{ dir = 4 @@ -44190,24 +44370,33 @@ /obj/item/clothing/mask/breath, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) -"uqQ" = ( -/obj/structure/table/glass, -/obj/item/flashlight/lamp/green{ - pixel_x = -6; - pixel_y = 16 +"uqY" = ( +/obj/structure/table/wood{ + color = "#996633" }, -/obj/item/paper_bin/nanotrasen{ - pixel_x = -2; - pixel_y = 8 +/obj/item/flashlight/lamp/green, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) +"uqZ" = ( +/obj/structure/window/reinforced, +/turf/simulated/wall/indestructible/reinforced, +/area/centcom/zone2) +"urj" = ( +/obj/structure/shuttle/engine/heater{ + dir = 4; + icon_state = "heater3x3_side_inv"; + tag = "icon-heater (NORTH)" }, -/obj/item/pen/fancy{ - pixel_x = 8 +/obj/structure/window/plasmareinforced{ + color = "#22aab7"; + dir = 8 }, -/obj/effect/turf_decal/siding{ - color = "#444444" +/obj/structure/shuttle/engine/platform{ + dir = 4; + layer = 2.9 }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) +/turf/simulated/floor/plating/airless, +/area/shuttle/administration) "url" = ( /obj/machinery/porta_turret/syndicate/interior, /obj/structure/window/plasmareinforced{ @@ -44218,32 +44407,6 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"urM" = ( -/obj/machinery/door/airlock/shuttle{ - id_tag = "s_docking_airlock" - }, -/obj/structure/fans/tiny, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 12; - id = "ferry"; - name = "ferry shuttle"; - roundstart_move = "ferry_away"; - width = 5 - }, -/obj/docking_port/stationary/transit{ - dir = 8; - dwidth = 2; - height = 12; - id = "ferry_transit"; - name = "ferry in transit"; - pixel_x = 32; - turf_type = /turf/space/transit/east; - width = 5 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/transport) "urU" = ( /obj/item/gun/projectile/automatic/sniper_rifle/syndicate{ pixel_x = -3; @@ -44362,12 +44525,6 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"usb" = ( -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "navybluealtstrip" - }, -/area/centcom/supply) "usi" = ( /obj/effect/turf_decal{ icon_state = "golden_stripes" @@ -44391,13 +44548,6 @@ icon_state = "darkredaltstrip" }, /area/syndicate_mothership/jail) -"usq" = ( -/obj/structure/table/wood{ - color = "#996633" - }, -/obj/item/flashlight/lamp/green, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "usR" = ( /turf/simulated/wall/shuttle{ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' @@ -44419,23 +44569,11 @@ icon_state = "darkgrey" }, /area/syndicate_mothership) -"uue" = ( -/turf/simulated/floor/carpet/cyan, -/area/centcom/zone2) "uuq" = ( /obj/structure/flora/junglebush/c, /obj/structure/flora/junglebush/b, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"uuD" = ( -/obj/structure/table, -/obj/item/paper_bin/nanotrasen{ - pixel_x = 3; - pixel_y = 12 - }, -/obj/item/pen/multi/fountain, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "uuU" = ( /obj/effect/turf_decal{ dir = 1; @@ -44451,14 +44589,15 @@ icon_state = "floor4" }, /area/shuttle/syndicate_elite) -"uvg" = ( -/obj/machinery/light/spot{ - dir = 1 +"uvw" = ( +/obj/structure/sign/poster/official/nanotrasen_logo{ + icon = 'icons/obj/decals.dmi'; + icon_state = "ntsing_alt3" }, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/area/shuttle/escape) +/area/centcom/specops) "uvE" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -44469,6 +44608,12 @@ icon_state = "darkfull" }, /area/syndicate_mothership) +"uvO" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/grass, +/area/centcom/evac) "uwo" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -44537,21 +44682,6 @@ /obj/structure/window/full/shuttle, /turf/simulated/floor/shuttle/plating, /area/shuttle/trade/sol) -"uyw" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone3) -"uyV" = ( -/obj/effect/landmark/ert_director, -/obj/structure/chair/office/dark{ - dir = 4 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) "uyZ" = ( /obj/effect/turf_decal/stripes/line{ color = "darkgray"; @@ -44575,15 +44705,6 @@ tag = "icon-stage_stairs" }, /area/syndicate_mothership) -"uzh" = ( -/obj/structure/window/reinforced{ - layer = 2.9 - }, -/obj/effect/turf_decal/siding/white, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) "uzi" = ( /obj/effect/turf_decal/stripes/gold{ dir = 1 @@ -44601,12 +44722,31 @@ icon_state = "floor4" }, /area/shuttle/syndicate_sit) +"uzs" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/centcom/specops) +"uzx" = ( +/obj/structure/chair/comfy/brown{ + color = "#FF3300"; + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/centcom/zone3) "uzP" = ( /turf/simulated/floor/carpet/red, /area/centcom/specops) "uAd" = ( /turf/simulated/wall/indestructible/iron, /area/syndicate_mothership/outside) +"uAg" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "navyblue" + }, +/area/centcom/supplypod/loading/ert) "uAh" = ( /obj/structure/chair/comfy/shuttle{ dir = 4 @@ -44645,27 +44785,15 @@ icon_state = "floor4" }, /area/shuttle/syndicate_elite) -"uAE" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/machinery/iv_drip, -/obj/item/reagent_containers/iv_bag/salglu, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/nitrogen, -/obj/item/tank/internals/emergency_oxygen/plasma, -/turf/simulated/floor/shuttle{ - icon_state = "floor3" +"uAJ" = ( +/obj/machinery/light{ + dir = 4; + switchcount = 50 }, -/area/shuttle/administration) +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/centcom/zone2) "uBe" = ( /obj/effect/turf_decal/box/red, /obj/machinery/door/window/brigdoor{ @@ -44682,6 +44810,30 @@ icon_state = "dark" }, /area/syndicate_mothership/control) +"uBh" = ( +/obj/structure/closet/secure_closet/cabinet/bar, +/obj/item/storage/box/beakers/bluespace, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/turf/simulated/floor/wood, +/area/centcom/zone1) +"uBl" = ( +/obj/effect/turf_decal/siding/white{ + dir = 9 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) "uBr" = ( /obj/machinery/light/small{ dir = 8 @@ -44695,6 +44847,14 @@ icon_state = "grimy" }, /area/centcom/jail) +"uCb" = ( +/obj/machinery/vending/coffee, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault"; + tag = "icon-vault (WEST)" + }, +/area/centcom/specops) "uCi" = ( /obj/machinery/light{ dir = 8 @@ -44703,11 +44863,13 @@ icon_state = "freezerfloor" }, /area/syndicate_mothership) -"uCx" = ( -/turf/simulated/floor/wood{ - icon_state = "wood-broken5" +"uCT" = ( +/obj/machinery/computer/communications, +/obj/machinery/newscaster/security_unit{ + pixel_x = 32 }, -/area/centcom/zone2) +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "uDd" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -44728,6 +44890,24 @@ icon_state = "bot" }, /area/shuttle/escape) +"uDo" = ( +/obj/machinery/embedded_controller/radio/airlock/access_controller{ + frequency = 2000; + id_tag = "CC-OP2"; + name = "Access Controller OP2"; + pixel_y = 32; + req_access = list(109); + tag_exterior_door = "CC-OP2-Ext"; + tag_interior_door = "CC-OP2-Int" + }, +/obj/structure/table/reinforced, +/obj/item/paper_bin/nanotrasen{ + pixel_x = 3; + pixel_y = 12 + }, +/obj/item/pen/multi/fountain, +/turf/simulated/floor/wood, +/area/centcom/zone2) "uDD" = ( /obj/structure/table/glass, /obj/item/storage/firstaid/regular, @@ -44744,35 +44924,48 @@ icon_state = "barber" }, /area/centcom/jail) -"uEg" = ( -/obj/effect/decal/nanotrasen_logo{ - icon_state = "logo5"; - pixel_x = 16 +"uEf" = ( +/obj/machinery/door/airlock/command/glass{ + frequency = 2000; + icon_state = "open"; + id_tag = "CC-OP4-Int"; + locked = 1; + name = "Zone 2" }, +/obj/effect/decal/warning_stripes/blue, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/specops) -"uEk" = ( -/obj/structure/table, -/obj/item/storage/box/cups, +"uEE" = ( +/obj/item/flag/nt, +/obj/structure/window/reinforced{ + dir = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/bridge) "uEG" = ( /obj/structure/chair/office/dark{ dir = 8 }, /turf/simulated/floor/wood, /area/centcom/zone2) -"uEI" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/food/snacks/meatsteak, -/obj/structure/window/reinforced{ - dir = 4 +"uEQ" = ( +/obj/effect/turf_decal/tile/neutral{ + color = "black"; + icon_state = "tile_full" + }, +/obj/structure/railing{ + density = 0; + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" }, -/turf/simulated/floor/wood, /area/centcom/specops) "uEU" = ( /obj/machinery/door/airlock/external{ @@ -44789,7 +44982,7 @@ req_access = list(150) }, /obj/structure/fans/tiny, -/turf/simulated/floor/plating, +/turf/simulated/floor/plating/airless, /area/shuttle/syndicate_elite) "uEW" = ( /obj/machinery/door/airlock/shuttle{ @@ -44824,6 +45017,13 @@ icon_state = "floor13" }, /area/shuttle/ninja) +"uFt" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/floor/shuttle, +/area/shuttle/pod_3) "uFB" = ( /obj/machinery/door/airlock/hatch{ drain_act_protected = 1; @@ -44874,75 +45074,6 @@ icon_state = "floor4" }, /area/shuttle/syndicate_sit) -"uGD" = ( -/turf/simulated/floor/wood{ - icon_state = "light-fancy-wood" - }, -/area/centcom/specops) -"uGG" = ( -/obj/structure/closet/cabinet{ - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100) - }, -/obj/item/storage/box/centcomofficer, -/obj/item/radio/headset/centcom{ - desc = null; - name = "Supreme commander bowman headset" - }, -/obj/item/card/id{ - access = list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,69,70,71,73,74,75,76,77,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114); - icon_state = "commander"; - name = "Supreme Commander ID card"; - rank = "Nanotrasen Navy Captain"; - registered_name = null - }, -/obj/item/door_remote/centcomm, -/obj/item/clothing/accessory/medal/gold{ - desc = null; - name = "Supreme commander's gold medal" - }, -/obj/item/gun/projectile/revolver/mateba, -/obj/item/ammo_box/a357, -/obj/item/ammo_box/a357, -/obj/item/ammo_box/a357, -/obj/item/clothing/under/color/black{ - icon_state = "hosdnavyclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/glasses/hud/security/sunglasses/aviators, -/obj/item/clothing/head/beret/centcom/officer/sigholt{ - icon_state = "officerberet"; - name = "beret" - }, -/obj/item/storage/backpack/satchel, -/obj/item/clothing/gloves/color/white{ - desc = null; - name = "Supreme judge gloves" - }, -/obj/item/clothing/shoes/cowboy/white{ - name = "white boots" - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"uGV" = ( -/obj/docking_port/mobile/emergency/backup{ - dir = 8; - dwidth = 4; - height = 9; - width = 9 - }, -/obj/machinery/door/airlock/shuttle, -/obj/docking_port/stationary{ - dir = 8; - dwidth = 4; - height = 9; - id = "backup_transit"; - name = "backup in transit"; - pixel_x = 32; - turf_type = /turf/space/transit/north; - width = 9 - }, -/turf/simulated/floor/plating, -/area/shuttle/escape) "uHa" = ( /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -44957,6 +45088,12 @@ icon_state = "warndarkgreyred" }, /area/syndicate_mothership) +"uHe" = ( +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "uHf" = ( /obj/machinery/access_button{ command = "cycle_exterior"; @@ -45001,54 +45138,41 @@ icon_state = "neutralfull" }, /area/shuttle/escape) -"uIF" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/turf_decal/siding/white{ - dir = 4 +"uJn" = ( +/obj/structure/sign/directions/cargo{ + dir = 4; + pixel_x = 32; + pixel_y = -26 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 4; + icon_state = "navybluealtstrip" }, -/area/centcom/jail) -"uJi" = ( -/obj/effect/decal/warning_stripes/north, -/obj/effect/decal/warning_stripes/south, -/obj/effect/turf_decal/caution/stand_clear, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "CC_Armory_DURAND" +/area/centcom/specops) +"uJy" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = -32 }, /turf/simulated/floor/plasteel{ - icon_state = "darkfull" + icon_state = "navybluealt" }, /area/centcom/specops) -"uJp" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/nt_droppod) -"uJA" = ( -/obj/structure/window/reinforced{ - layer = 2.9 - }, -/obj/effect/turf_decal/box/white/corners{ - dir = 4 +"uJU" = ( +/obj/item/radio/intercom/specops{ + pixel_x = 30 }, -/obj/structure/weightmachine/stacklifter, /turf/simulated/floor/plasteel{ - icon_state = "darkfull" + icon_state = "dark" + }, +/area/centcom/specops) +"uJV" = ( +/obj/effect/turf_decal/arrows/red{ + name = "Armory" }, -/area/centcom/jail) -"uJF" = ( -/obj/machinery/vending/ntc/medal, -/obj/structure/table, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/supply) +/area/centcom/specops) "uKc" = ( /obj/machinery/vending/wallmed{ name = "Custom Emergency NanoMed"; @@ -45059,14 +45183,21 @@ icon_state = "neutralfull" }, /area/shuttle/escape) -"uKN" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "N2" +"uKU" = ( +/obj/effect/decal/warning_stripes/northeastsouth, +/obj/machinery/door/poddoor/shutters/preopen/invincible{ + dir = 1; + id_tag = "ERT_armory_vkd"; + name = "Armory level 1" + }, +/obj/machinery/door/poddoor/impassable/preopen{ + id_tag = "ERT_Quarantine"; + name = "ERT Quarantine" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "darkfull" }, -/area/centcom/supply) +/area/centcom/specops) "uKX" = ( /obj/machinery/door_control/secure{ id = "SST_ready"; @@ -45091,6 +45222,21 @@ icon_state = "warnwhite" }, /area/centcom/zone1) +"uLd" = ( +/obj/structure/shuttle/engine/platform{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/plasmareinforced{ + color = "#00f700" + }, +/obj/structure/shuttle/engine/heater{ + dir = 1; + icon_state = "heater3x3_side"; + tag = "icon-heater (NORTH)" + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/ninja) "uLg" = ( /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -45118,6 +45264,18 @@ icon_state = "darkfull" }, /area/syndicate_mothership) +"uLj" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "uLm" = ( /obj/machinery/light{ dir = 8 @@ -45127,34 +45285,54 @@ icon_state = "darkred" }, /area/syndicate_mothership/elite_squad) +"uLr" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/door/poddoor/shutters/preopen/invincible{ + dir = 1; + id_tag = "ERT_armory_vkd"; + name = "Armory level 1" + }, +/obj/machinery/door/poddoor/impassable/preopen{ + id_tag = "ERT_Quarantine"; + name = "ERT Quarantine" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" + }, +/area/centcom/specops) +"uLw" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/turf/simulated/floor/glass, +/area/centcom/bridge) "uLx" = ( /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutralcorner" }, /area/centcom/evac) -"uLB" = ( -/obj/machinery/door/poddoor{ - id_tag = "ASSAULT2"; - name = "Launch Bay #2" - }, +"uMf" = ( /obj/effect/turf_decal/tile/neutral{ - alpha = 75; - color = "black"; - icon_state = "tile_full"; - layer = 9 + dir = 4 }, -/turf/simulated/floor/plating, -/area/centcom/supply) -"uLN" = ( -/obj/effect/turf_decal/arrows{ +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkyellowaltstrip" +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/area/centcom/supply) +/obj/effect/turf_decal/tile/neutral, +/obj/structure/chair/comfy/lime{ + dir = 1 + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "dark" + }, +/area/shuttle/administration) "uMl" = ( /obj/structure/ore_box, /obj/effect/turf_decal/stripes/line{ @@ -45173,14 +45351,6 @@ icon_state = "fancy-wood-birch" }, /area/shuttle/trade/sol) -"uMp" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 1; - icon_state = "propulsion_r"; - tag = "icon-propulsion_r (NORTH)" - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/syndicate_elite) "uMr" = ( /obj/machinery/computer/cryopod{ pixel_y = 32 @@ -45189,16 +45359,15 @@ icon_state = "dark" }, /area/centcom/jail) -"uMB" = ( -/obj/structure/closet/secure_closet/cabinet/bar/random_drinks{ - layer = 3.5 - }, -/turf/simulated/floor/wood, -/area/centcom/zone3) +"uMu" = ( +/obj/machinery/light/small, +/obj/structure/bookcase/random, +/turf/simulated/floor/carpet, +/area/centcom/zone1) "uMD" = ( /obj/machinery/conveyor{ - id = "SFBQMLoad"; - dir = 6 + dir = 6; + id = "SFBQMLoad" }, /turf/simulated/floor/plasteel{ icon_state = "darkfull" @@ -45225,6 +45394,20 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) +"uMZ" = ( +/obj/structure/shuttle/engine/heater{ + icon_state = "heater3x3_side_inv"; + tag = "icon-heater (NORTH)" + }, +/obj/structure/window/plasmareinforced{ + color = "#FF0000"; + dir = 1 + }, +/obj/structure/shuttle/engine/platform{ + layer = 2.9 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/syndicate) "uNb" = ( /obj/structure/flora/rock/jungle, /obj/structure/flora/junglebush, @@ -45245,6 +45428,17 @@ icon_state = "ninja_walls_direction" }, /area/shuttle/ninja) +"uNq" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/turf/simulated/floor/glass, +/area/centcom/zone3) "uNx" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -45269,16 +45463,28 @@ /area/centcom/zone1) "uNG" = ( /obj/machinery/conveyor{ - id = "SFBQMLoad2"; - dir = 1 + dir = 1; + id = "SFBQMLoad2" }, /turf/simulated/floor/plasteel{ icon_state = "darkfull" }, /area/syndicate_mothership/cargo) -"uOd" = ( -/obj/structure/filingcabinet/employment, -/turf/simulated/floor/carpet, +"uNI" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) +"uOa" = ( +/obj/item/ship_in_a_bottle, +/obj/effect/turf_decal/tile/neutral{ + alpha = 100; + icon = 'icons/misc/beach.dmi'; + icon_state = "seadeep"; + layer = 9 + }, +/turf/simulated/floor/indestructible/beach/water/deep/sand_floor, /area/centcom/zone2) "uOf" = ( /obj/structure/chair/comfy/purp{ @@ -45293,16 +45499,15 @@ icon_state = "dark" }, /area/centcom/specops) -"uOl" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/table/wood, +"uOw" = ( +/obj/item/flag/nt, /obj/structure/window/reinforced{ dir = 8 }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/evac) +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) "uOA" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -45332,6 +45537,15 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) +"uPb" = ( +/obj/structure/closet/secure_closet/brig, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkredalt" + }, +/area/centcom/jail) "uPe" = ( /obj/structure/chair/comfy/shuttle{ dir = 1 @@ -45353,31 +45567,28 @@ icon_state = "Dark" }, /area/shuttle/funeral) -"uPQ" = ( -/obj/structure/bed, -/obj/item/bedsheet/rd, -/obj/effect/mine/sound/bwoink{ - layer = 2.9; - alpha = 0 - }, -/turf/simulated/floor/carpet/arcade, -/area/centcom/zone1) -"uPV" = ( -/obj/structure/filingcabinet/chestdrawer, -/turf/simulated/floor/plating, -/area/centcom/zone2) -"uPZ" = ( -/obj/machinery/light/spot, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" - }, -/area/shuttle/escape) "uQe" = ( /obj/structure/flora/grass/jungle, /obj/structure/flora/ausbushes/brflowers, /obj/structure/flora/ausbushes/pointybush, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/control) +"uQg" = ( +/obj/structure/bookcase/manuals, +/obj/item/book/manual/sop_security, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) +"uQD" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) "uQK" = ( /obj/effect/mapping_helpers/light{ light_power = 3 @@ -45389,42 +45600,55 @@ /obj/structure/window/full/shuttle/gray, /turf/simulated/floor/shuttle/plating/vox, /area/shuttle/vox) -"uRq" = ( -/obj/structure/closet/l3closet/security, -/obj/item/clothing/mask/gas, -/obj/item/tank/internals/emergency_oxygen/double, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/watertank/janitor{ - max_integrity = 1500; - volume = 1500 +"uRC" = ( +/obj/structure/falsewall/reinforced{ + layer = 5; + req_access = list(114) }, -/obj/item/grenade/chem_grenade/cleaner, -/turf/simulated/floor/indestructible{ - dir = 5; - icon_state = "darkpurple" +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/area/centcom/specops) -"uSa" = ( -/obj/docking_port/stationary/transit{ - dwidth = 3; - height = 7; - id = "steel_rain_transit"; - name = "steel_rain in transit"; - pixel_y = -32; - turf_type = /turf/space/transit/north; - width = 7 +/area/centcom/zone1) +"uRM" = ( +/obj/structure/bookcase/manuals, +/obj/item/book/manual/security_space_law{ + pixel_x = 3 }, -/turf/space/transit/north{ - icon_state = "black" +/obj/item/book/manual/security_space_law{ + pixel_x = 3 }, -/area/space) -"uSe" = ( -/obj/machinery/computer/cloning, +/obj/item/book/manual/security_space_law/black{ + pixel_x = -4 + }, +/obj/item/book/manual/security_space_law/black{ + pixel_x = -4 + }, +/obj/item/book/manual/security_space_law/black{ + pixel_x = -4 + }, +/obj/item/book/manual/security_space_law/black{ + pixel_x = -4 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/siding/yellow{ + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone3) +"uSc" = ( +/obj/structure/holohoop{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/green/hollow, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whiteblue" + icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/evac) "uSq" = ( /obj/machinery/porta_turret/centcom{ active_power_usage = 0; @@ -45512,19 +45736,43 @@ icon_state = "neutralfull" }, /area/shuttle/escape) -"uUe" = ( -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/structure/window/reinforced{ +"uTp" = ( +/obj/structure/window/full/reinforced{ + layer = 2 + }, +/turf/simulated/floor/plating, +/area/centcom/zone3) +"uTt" = ( +/obj/machinery/clonepod/upgraded, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whiteblue"; + tag = "icon-whiteblue (NORTHEAST)" + }, +/area/centcom/specops) +"uTw" = ( +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/machinery/conveyor{ - id = "N2"; +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/turf/simulated/floor/plasteel{ +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/vending/coffee/free, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; icon_state = "dark" }, -/area/centcom/supply) +/area/shuttle/administration) +"uTC" = ( +/turf/simulated/floor/indestructible{ + dir = 10; + icon_state = "darkgreynavyblue" + }, +/area/centcom/specops) "uUr" = ( /obj/effect/turf_decal/stripes/gold{ dir = 6 @@ -45537,34 +45785,23 @@ /obj/item/camera_bug, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/jail) -"uUY" = ( -/obj/effect/turf_decal/tile/neutral{ - color = "black"; - icon_state = "tile_full"; - layer = 9 - }, -/obj/effect/step_trigger/teleporter{ - teleport_x = 183; - teleport_y = 62; - teleport_z = 1; - icon = 'icons/mob/screen_gen.dmi'; - icon_state = "x2" - }, -/turf/simulated/floor/plasteel{ - color = "gray"; - dir = 8; - icon_state = "rampbottom" - }, -/area/centcom/specops) -"uVb" = ( -/obj/structure/chair/sofa/corp/right{ - dir = 4 +"uVc" = ( +/obj/structure/table, +/obj/structure/window/reinforced{ + dir = 1 }, -/obj/machinery/light{ +/obj/item/flashlight/lamp/green, +/obj/structure/window/reinforced{ dir = 8 }, -/turf/simulated/floor/carpet/black, +/turf/simulated/floor/carpet, /area/centcom/zone2) +"uVd" = ( +/obj/structure/bookcase/manuals, +/obj/item/book/manual/sop_service, +/obj/item/book/manual/sop_supply, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "uVg" = ( /obj/machinery/light/small{ dir = 4; @@ -45574,6 +45811,25 @@ icon_state = "floor4" }, /area/shuttle/assault_pod) +"uVl" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/chair/comfy/lime{ + dir = 4 + }, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "dark" + }, +/area/shuttle/administration) "uVo" = ( /obj/structure/rack, /obj/item/crowbar, @@ -45587,76 +45843,23 @@ icon_state = "warning" }, /area/shuttle/escape) -"uVr" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8; - icon_state = "burst_l" - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/specops) "uVO" = ( /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkredalt" }, /area/centcom/jail) -"uVX" = ( -/obj/structure/closet/cabinet{ - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100) - }, -/obj/item/storage/box/centcomofficer, -/obj/item/radio/headset/centcom{ - desc = null; - name = "Supreme commander bowman headset" - }, -/obj/item/card/id{ - access = list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,69,70,71,73,74,75,76,77,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114); - icon_state = "commander"; - name = "Supreme Commander ID card"; - rank = "Nanotrasen Navy Captain"; - registered_name = null - }, -/obj/item/door_remote/centcomm, -/obj/item/clothing/accessory/medal/gold{ - desc = null; - name = "Supreme commander's gold medal" - }, -/obj/item/gun/projectile/revolver/mateba, -/obj/item/ammo_box/a357, -/obj/item/ammo_box/a357, -/obj/item/ammo_box/a357, -/obj/item/clothing/under/color/black{ - icon_state = "hosdnavyclothes"; - name = "jumpsuit" - }, -/obj/item/clothing/glasses/hud/security/sunglasses/aviators, -/obj/item/clothing/head/beret/centcom/officer/sigholt{ - icon_state = "officerberet"; - name = "beret" - }, -/obj/item/storage/backpack/satchel, -/obj/item/clothing/gloves/color/white{ - desc = null; - name = "Supreme judge gloves" - }, -/obj/item/clothing/shoes/cowboy/white{ - name = "white boots" - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) -"uVZ" = ( -/obj/structure/chair/comfy/shuttle, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" - }, -/area/centcom/specops) "uWf" = ( /obj/effect/turf_decal/stripes/gold{ dir = 9 }, /turf/simulated/floor/carpet/black, /area/centcom/bridge) +"uWl" = ( +/obj/effect/spawner/lootdrop/officetoys, +/obj/structure/table/holotable/wood, +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "uWv" = ( /obj/effect/decal/warning_stripes/white, /obj/machinery/door/airlock{ @@ -45667,6 +45870,15 @@ icon_state = "dark" }, /area/centcom/zone1) +"uWy" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/brigdoor{ + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone3) "uWE" = ( /obj/structure/chair/wood{ dir = 8 @@ -45702,6 +45914,10 @@ /obj/machinery/light/spot, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) +"uYa" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/carpet, +/area/centcom/jail) "uYs" = ( /obj/effect/turf_decal/number/number_3{ dir = 8 @@ -45711,43 +45927,6 @@ icon_state = "darkredaltstrip" }, /area/centcom/jail) -"uYJ" = ( -/obj/effect/turf_decal/siding/white, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) -"uYX" = ( -/obj/structure/table/glass, -/obj/item/paper_bin/nanotrasen{ - pixel_x = -2; - pixel_y = 8 - }, -/obj/item/pen/multi/gold, -/turf/simulated/floor/carpet/cyan, -/area/centcom/zone2) -"uZl" = ( -/obj/machinery/door/airlock/hatch{ - drain_act_protected = 1; - frequency = 1331; - id_tag = "ninja_outer"; - name = "Ship External Access" - }, -/obj/docking_port/mobile{ - dheight = 2; - dir = 2; - dwidth = 4; - height = 10; - id = "ombra"; - name = "Spider Clan Ombra"; - roundstart_move = "ombra_home"; - width = 21 - }, -/obj/structure/fans/tiny/invisible, -/turf/simulated/floor/shuttle{ - icon_state = "floor13" - }, -/area/shuttle/ninja) "uZp" = ( /obj/machinery/light/small{ dir = 4 @@ -45756,21 +45935,19 @@ icon_state = "darkgrey" }, /area/syndicate_mothership) +"uZt" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/turf/simulated/floor/glass/reinforced, +/area/centcom/specops) "uZB" = ( /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkred" }, /area/centcom/specops) -"uZI" = ( -/obj/structure/table/reinforced, -/obj/machinery/reagentgrinder{ - pixel_x = -1; - pixel_y = 9 - }, -/obj/machinery/light, -/turf/simulated/floor/engine, -/area/centcom/specops) "uZO" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -45812,39 +45989,37 @@ icon_state = "freezerfloor" }, /area/centcom/jail) -"vbk" = ( -/obj/structure/rack, -/obj/item/storage/firstaid/tactical, -/obj/item/storage/firstaid/tactical, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkbluealt" - }, -/area/centcom/specops) -"vcp" = ( -/obj/item/radio/intercom/specops{ - pixel_y = 25 +"vbB" = ( +/obj/machinery/door/window/brigdoor{ + color = "#22aab7"; + dir = 8; + icon_state = "rightsecure"; + req_access = list(101) + }, +/turf/simulated/floor/carpet/black, +/area/shuttle/administration) +"vbO" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external{ + id_tag = "shit_rain_home"; + name = "Shuttle Hatch"; + req_access = list(109) }, /turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkgreen" + icon_state = "dark" }, /area/centcom/specops) -"vct" = ( +"vcj" = ( +/obj/machinery/door/airlock/centcom{ + name = "Supreme Court"; + opacity = 1; + req_access = list(106,109,110) + }, /turf/simulated/floor/plasteel{ - icon_state = "darkyellowaltstrip" + icon_state = "dark" }, /area/centcom/zone3) -"vcv" = ( -/obj/structure/rack/holorack, -/obj/item/clothing/glasses/hud/security/sunglasses/aviators, -/obj/item/clothing/glasses/hud/security/sunglasses/aviators, -/obj/item/clothing/glasses/hud/security/sunglasses/aviators, -/obj/item/clothing/glasses/hud/security/sunglasses/aviators, -/obj/item/clothing/glasses/hud/security/sunglasses/aviators, -/obj/item/autoimplanter/old, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "vcC" = ( /obj/structure/table/reinforced, /obj/item/flash, @@ -45854,19 +46029,23 @@ icon_state = "dark" }, /area/shuttle/escape) -"vcM" = ( -/obj/structure/window/reinforced{ - dir = 1 +"vcO" = ( +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_x = -32 }, -/obj/effect/turf_decal/siding/white{ - dir = 9 +/obj/structure/window/reinforced, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-22"; + tag = "icon-plant-22" }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/machinery/light/small{ + dir = 8 }, -/area/centcom/evac) +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "vdf" = ( /obj/structure/chair/stool, +/obj/effect/landmark/prisonsecuritywarp, /turf/simulated/floor/plasteel{ icon_state = "grimy" }, @@ -45881,6 +46060,15 @@ icon_state = "bot" }, /area/shuttle/escape) +"vdy" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/two) "vdH" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/decal/cleanable/dirt, @@ -45891,16 +46079,21 @@ icon_state = "bot" }, /area/shuttle/escape) -"vdV" = ( -/obj/structure/rack, -/obj/item/ammo_box/shotgun/buck, -/obj/item/ammo_box/shotgun/buck, -/obj/item/ammo_box/shotgun/buck, -/obj/effect/decal/warning_stripes/blue/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"vdO" = ( +/obj/machinery/recharger/wallcharger{ + pixel_x = -24; + pixel_y = 8 }, -/area/centcom/specops) +/obj/machinery/recharger/wallcharger{ + pixel_x = -24; + pixel_y = -8 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = -24 + }, +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/wood, +/area/centcom/jail) "vdW" = ( /obj/structure/ore_box, /obj/effect/turf_decal/delivery/red, @@ -45915,6 +46108,16 @@ /obj/machinery/light/small, /turf/simulated/floor/carpet/black, /area/centcom/zone1) +"vem" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "Drop" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "vep" = ( /obj/machinery/light{ dir = 8 @@ -45960,6 +46163,12 @@ icon_state = "fancy-wood-cherry" }, /area/syndicate_mothership/control) +"vfD" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/nt_droppod) "vfR" = ( /obj/machinery/recharge_station/upgraded, /turf/simulated/floor/shuttle{ @@ -45986,21 +46195,13 @@ icon_state = "fancy-wood-cherry" }, /area/shuttle/trade/sol) -"vgD" = ( -/obj/structure/urinal{ - pixel_y = 32 - }, -/obj/machinery/door_control/secure{ - id = "CC_toilet_unit2"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4; - pixel_x = 25 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/centcom/evac) +"vgt" = ( +/turf/simulated/floor/engine, +/area/centcom/specops) +"vgz" = ( +/obj/machinery/light/small, +/turf/simulated/floor/shuttle, +/area/shuttle/nt_droppod) "vgN" = ( /obj/structure/flora/rock, /obj/structure/flora/ausbushes/sparsegrass, @@ -46021,16 +46222,6 @@ icon_state = "dark" }, /area/centcom/zone1) -"vhh" = ( -/obj/effect/decal/warning_stripes/white, -/obj/machinery/door/airlock{ - id_tag = "CC_toilet_unit4"; - name = "Toilet" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone1) "vhp" = ( /obj/machinery/light{ dir = 1 @@ -46052,16 +46243,17 @@ icon_state = "floor4" }, /area/shuttle/syndicate) -"vhG" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "burst_l"; - tag = "icon-burst_l" +"vhP" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/poddoor/impassable/preopen{ + id_tag = "ERT_Quarantine"; + name = "ERT Quarantine" }, -/obj/structure/window/reinforced{ - dir = 4 +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/turf/simulated/floor/plating/airless, -/area/shuttle/pod_2) +/area/centcom/specops) "vhU" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-6"; @@ -46087,10 +46279,19 @@ icon_state = "darkfull" }, /area/syndicate_mothership) -"vit" = ( -/obj/effect/turf_decal/siding/brown, -/turf/simulated/floor/carpet, -/area/centcom/zone3) +"vik" = ( +/obj/machinery/door_control/secure{ + color = "#9999ff"; + id = "ERT_armory_lvl2"; + name = "ERT Armory Level 2"; + pixel_y = -32; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "navyblue" + }, +/area/centcom/specops) "viw" = ( /obj/effect/turf_decal/number/number_7, /turf/simulated/floor/plasteel{ @@ -46143,6 +46344,11 @@ icon_state = "fancy-wood-cherry" }, /area/shuttle/trade/sol) +"vjb" = ( +/turf/simulated/floor/plasteel{ + icon_state = "Dark" + }, +/area/centcom/supplypod/supplypod_temp_holding) "vjo" = ( /obj/effect/turf_decal/box/corners{ dir = 1 @@ -46155,9 +46361,26 @@ icon_state = "darkyellowfull" }, /area/centcom/bridge) -"vjG" = ( -/turf/simulated/floor/carpet/blue, -/area/centcom/specops) +"vjK" = ( +/obj/machinery/door/airlock/shuttle{ + aiControlDisabled = 1; + id_tag = "s_docking_airlock"; + name = "Emergency Droppod"; + req_access = list(109) + }, +/obj/docking_port/mobile/assault_pod/nt{ + port_direction = 2 + }, +/obj/docking_port/stationary{ + dwidth = 3; + height = 7; + id = "shit_rain_base"; + name = "Emerjency droppod dock"; + pixel_y = -32; + width = 7 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/nt_droppod) "vkh" = ( /obj/structure/table, /obj/structure/bedsheetbin{ @@ -46168,60 +46391,12 @@ icon_state = "barber" }, /area/centcom/jail) -"vkG" = ( -/obj/machinery/recharger/wallcharger{ - pixel_x = -24 - }, -/obj/machinery/recharger/wallcharger{ - pixel_x = -24; - pixel_y = -16 - }, -/obj/machinery/recharger/wallcharger{ - pixel_x = -24; - pixel_y = -8 - }, -/obj/structure/table/reinforced, -/obj/item/storage/box/lights/mixed, -/obj/item/storage/box/lights/mixed, -/obj/item/lightreplacer, -/obj/item/lightreplacer, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "navybluealt" - }, -/area/centcom/specops) -"vkL" = ( -/obj/structure/table/wood/fancy/black, -/obj/item/pen/multi/gold, -/obj/item/stamp/centcom{ - pixel_x = -5; - pixel_y = 5 - }, -/turf/simulated/floor/carpet/red, -/area/centcom/bridge) -"vlu" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 6 - }, -/turf/simulated/floor/glass, -/area/centcom/bridge) "vlv" = ( /obj/item/flag/syndi, /turf/simulated/floor/plasteel{ icon_state = "darkgrey" }, /area/syndicate_mothership) -"vlF" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone3) "vlG" = ( /obj/structure/table/reinforced, /obj/item/paper_bin/syndicate{ @@ -46245,14 +46420,21 @@ icon_state = "darkyellowalt" }, /area/syndicate_mothership/cargo) -"vmx" = ( -/obj/effect/turf_decal/siding/white/corner{ - dir = 8 - }, +"vlQ" = ( /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 5; + icon_state = "darkredaltstrip" }, -/area/centcom/evac) +/area/centcom/zone2) +"vlW" = ( +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "vmC" = ( /obj/structure/railing{ dir = 4 @@ -46266,19 +46448,12 @@ icon_state = "dark" }, /area/syndicate_mothership/jail) -"vmF" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) -"vmX" = ( -/obj/structure/window/full/reinforced{ - layer = 2 +"vng" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellowcorners" }, -/turf/simulated/floor/plating, -/area/centcom/zone3) +/area/centcom/specops) "vnv" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -46296,18 +46471,6 @@ icon_state = "dark" }, /area/shuttle/syndicate) -"vnx" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the Special Ops team."; - name = "Spec Ops Monitor"; - network = list("ERT"); - pixel_y = 30 - }, -/obj/machinery/computer/shuttle/ert, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" - }, -/area/shuttle/specops) "vny" = ( /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -46369,12 +46532,21 @@ icon_state = "darkyellowalt" }, /area/syndicate_mothership/cargo) -"vpe" = ( -/obj/machinery/door/airlock/diamond{ - locked = 1 +"voT" = ( +/obj/structure/bed, +/obj/item/bedsheet/mime, +/obj/effect/mine/sound/bwoink{ + alpha = 0; + layer = 2.9 }, -/turf/simulated/floor/plating, -/area/centcom/specops) +/turf/simulated/floor/carpet, +/area/centcom/zone1) +"voW" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/four) "vpg" = ( /turf/simulated/floor/shuttle{ icon_state = "floor4" @@ -46408,30 +46580,6 @@ icon_state = "warning" }, /area/shuttle/escape) -"vpJ" = ( -/obj/machinery/camera{ - c_tag = "CentComm Special Ops. Shuttle"; - network = list("ERT","CentComm") - }, -/obj/machinery/recharge_station/ert, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" - }, -/area/shuttle/specops) -"vpL" = ( -/obj/machinery/mech_bay_recharge_port{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) -"vpP" = ( -/obj/effect/turf_decal/siding{ - color = "#444444" - }, -/turf/simulated/floor/glass, -/area/centcom/bridge) "vpY" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -46447,6 +46595,23 @@ icon_state = "light-fancy-wood" }, /area/syndicate_mothership/control) +"vqd" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 9 + }, +/turf/simulated/floor/glass/reinforced, +/area/centcom/evac) +"vqC" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "vqK" = ( /obj/structure/reagent_dispensers/fueltank/chem{ pixel_x = 32 @@ -46457,29 +46622,6 @@ icon_state = "neutralfull" }, /area/shuttle/escape) -"vqP" = ( -/obj/structure/chair/sofa/corp/right{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone3) -"vqW" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) "vqX" = ( /obj/structure/chair/sofa/left{ dir = 8 @@ -46487,16 +46629,6 @@ /obj/machinery/light/small, /turf/simulated/floor/carpet/black, /area/centcom/zone1) -"vrd" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/drinkingglass{ - pixel_x = -5 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone3) "vrm" = ( /obj/effect/turf_decal{ dir = 1; @@ -46513,25 +46645,6 @@ icon_state = "darkyellowfull" }, /area/syndicate_mothership/cargo) -"vrA" = ( -/obj/machinery/status_display{ - layer = 4; - pixel_y = 32 - }, -/obj/structure/filingcabinet/filingcabinet, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"vrB" = ( -/obj/structure/table/glass, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/reagent_containers/food/drinks/flask/detflask=10,/obj/item/reagent_containers/food/drinks/cans/tonic=10,/obj/item/reagent_containers/food/drinks/cans/thirteenloko=10,/obj/item/reagent_containers/food/drinks/cans/synthanol=10,/obj/item/reagent_containers/food/drinks/cans/space_mountain_wind=10,/obj/item/reagent_containers/food/drinks/cans/lemon_lime=10,""=70); - name = "Food CC Spawner #3" - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkred" - }, -/area/centcom/specops) "vrH" = ( /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -46547,50 +46660,6 @@ icon_state = "warndarkgreyred" }, /area/syndicate_mothership) -"vrM" = ( -/obj/machinery/door/airlock/external{ - id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access = list(150) - }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "syndicate_elite"; - name = "Side Hull Door"; - opacity = 0; - req_access = list(150) - }, -/obj/structure/fans/tiny, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 3; - height = 5; - id = "sst"; - name = "SST shuttle"; - roundstart_move = "sst_away"; - width = 11 - }, -/obj/docking_port/stationary/transit{ - dir = 8; - dwidth = 3; - height = 5; - id = "sst_transit"; - name = "sst in transit"; - pixel_x = 32; - turf_type = /turf/space/transit/south; - width = 11 - }, -/turf/simulated/floor/shuttle/plating, -/area/shuttle/syndicate_elite) -"vsc" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/table/wood, -/obj/item/trash/candle, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/evac) "vsf" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -46598,19 +46667,6 @@ icon_state = "darkjail" }, /area/syndicate_mothership/jail) -"vsi" = ( -/obj/machinery/vending/ntc_resources{ - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) -"vsm" = ( -/turf/simulated/floor/plasteel{ - icon_state = "darkredaltstrip" - }, -/area/centcom/jail) "vst" = ( /obj/structure/chair/comfy/shuttle{ dir = 4 @@ -46633,6 +46689,15 @@ icon_state = "white" }, /area/centcom/jail) +"vsV" = ( +/obj/machinery/computer/supplycomp{ + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellowalt" + }, +/area/centcom/supply) "vtg" = ( /obj/machinery/computer/shuttle/sit, /turf/simulated/floor/shuttle{ @@ -46644,6 +46709,17 @@ /obj/structure/window/full/basic, /turf/simulated/floor/grass, /area/centcom/zone3) +"vtw" = ( +/obj/structure/chair, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault"; + tag = "icon-vault (WEST)" + }, +/area/centcom/specops) +"vtH" = ( +/turf/simulated/wall/shuttle/onlyselfsmooth, +/area/shuttle/administration) "vtI" = ( /obj/effect/turf_decal/plaque{ layer = 3 @@ -46654,24 +46730,6 @@ }, /turf/simulated/floor/redgrid, /area/syndicate_mothership) -"vtL" = ( -/obj/machinery/door/window/brigdoor{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" - }, -/area/centcom/zone3) -"vtR" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" - }, -/area/shuttle/specops) "vtX" = ( /obj/structure/fans/tiny, /obj/machinery/door/airlock/external{ @@ -46693,15 +46751,20 @@ icon_state = "rampbottom" }, /area/syndicate_mothership) -"vum" = ( -/obj/structure/chair/comfy/shuttle{ +"vuc" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) +"vui" = ( +/obj/machinery/computer/card, +/obj/structure/railing, +/obj/structure/window/reinforced{ dir = 8 }, /turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkyellow" + icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/bridge) "vuA" = ( /obj/effect/turf_decal/stripes/asteroid/line{ dir = 6 @@ -46711,12 +46774,16 @@ icon_state = "asteroid" }, /area/centcom/evac) -"vvs" = ( -/turf/simulated/wall/shuttle/onlyselfsmooth/nodiagonal, -/area/shuttle/trade/sol) -"vvx" = ( -/turf/simulated/wall/shuttle, -/area/shuttle/transport) +"vvt" = ( +/obj/structure/rack/holorack, +/obj/item/clothing/glasses/hud/security/sunglasses/aviators, +/obj/item/clothing/glasses/hud/security/sunglasses/aviators, +/obj/item/clothing/glasses/hud/security/sunglasses/aviators, +/obj/item/clothing/glasses/hud/security/sunglasses/aviators, +/obj/item/clothing/glasses/hud/security/sunglasses/aviators, +/obj/item/autoimplanter/old, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "vvD" = ( /turf/simulated/floor/plasteel{ dir = 6; @@ -46730,18 +46797,52 @@ icon_state = "darkfull" }, /area/syndicate_mothership) -"vwk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/vehicle/ridden/motorcycle{ +"vwe" = ( +/obj/machinery/door/window/brigdoor{ + dir = 8; + req_access = list(106) + }, +/turf/simulated/floor/wood, +/area/centcom/zone3) +"vwh" = ( +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "navybluealtstrip" + }, +/area/centcom/supply) +"vwu" = ( +/obj/structure/chair/comfy/shuttle{ dir = 1 }, +/obj/structure/window/reinforced/survival_pod{ + dir = 10; + pixel_x = -1; + pixel_y = -1 + }, +/obj/structure/window/reinforced{ + armor = list("melee"=100,"bullet"=100,"laser"=0,"energy"=0,"bomb"=25,"bio"=100,"rad"=100,"fire"=80,"acid"=100); + layer = 3.1 + }, /turf/simulated/floor/plasteel{ - icon_state = "darkfull" + dir = 4; + icon_state = "darkyellow" }, -/area/syndicate_mothership) +/area/centcom/specops) "vwL" = ( /turf/simulated/floor/indestructible/beach/sand, /area/syndicate_mothership/outside) +"vwM" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/pod_3) "vwP" = ( /obj/machinery/gameboard, /turf/simulated/floor/carpet/black, @@ -46754,6 +46855,65 @@ icon_state = "darkfull" }, /area/syndicate_mothership) +"vxF" = ( +/obj/structure/closet{ + icon_closed = "syndicate1"; + icon_opened = "syndicate1open"; + icon_state = "syndicate1" + }, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/gun/projectile/automatic/proto, +/obj/item/gun/energy/gun/blueshield, +/obj/item/clothing/glasses/hud/security/sunglasses/aviators, +/obj/item/reagent_containers/food/snacks/candy/mre, +/obj/item/reagent_containers/hypospray/combat, +/obj/item/radio/headset/ert/alt{ + desc = null; + name = "SRT bowman headset" + }, +/obj/item/clothing/head/beret/centcom/officer/navy{ + desc = null; + name = "SRT beret" + }, +/obj/item/clothing/shoes/combat/swat{ + name = "SRT special shoes" + }, +/obj/item/clothing/gloves/combat{ + name = "Combat gloves" + }, +/obj/item/storage/belt/security/webbing/srt/full, +/obj/item/storage/backpack/satchel_blueshield/srt, +/obj/item/clothing/suit/storage/blueshield/srt, +/obj/item/clothing/suit/armor/bulletproof{ + name = "SRT bulletproof vest" + }, +/obj/item/shield/riot/tele, +/obj/item/suppressor, +/obj/item/CQC_manual, +/obj/item/implanter/mindshield/ert, +/obj/item/card/id/centcom{ + name = "Special Reaction Team Member card"; + rank = "Special Reaction Team Member"; + registered_name = "Special Reaction Team Member" + }, +/obj/item/storage/box/responseteam, +/obj/item/clothing/under/fluff/jay_turtleneck{ + desc = null; + name = "SRT uniform" + }, +/obj/item/gun/projectile/automatic/pistol/sp8/sp8ar, +/obj/item/ammo_box/magazine/sp8, +/obj/item/ammo_box/magazine/sp8, +/obj/item/implanter/dust, +/obj/item/clothing/accessory/holster, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "navyblue" + }, +/area/centcom/specops) "vxN" = ( /obj/item/clothing/head/bearpelt, /obj/item/xenos_claw, @@ -46790,15 +46950,6 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"vyx" = ( -/obj/effect/decal/nanotrasen_logo{ - icon_state = "logo4"; - pixel_x = 16 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "vyy" = ( /obj/structure/ore_box, /obj/effect/turf_decal/stripes/line{ @@ -46824,6 +46975,32 @@ icon_state = "darkred" }, /area/syndicate_mothership/elite_squad) +"vyL" = ( +/obj/structure/toilet{ + dir = 4; + name = "Трон старшего администратора" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/door_control{ + id = "CC_toilet_unit3"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + specialfunctions = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/centcom/zone1) +"vza" = ( +/obj/machinery/status_display/supply_display{ + pixel_y = 32 + }, +/obj/structure/filingcabinet/medical, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "vzm" = ( /turf/simulated/wall/shuttle{ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' @@ -46837,16 +47014,10 @@ }, /turf/simulated/floor/shuttle/plating/vox, /area/shuttle/vox) -"vzz" = ( -/obj/effect/decal/warning_stripes/northeastsouth, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 1; - id_tag = "CC_Armory_Grenade" - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" - }, -/area/centcom/specops) +"vAb" = ( +/obj/effect/turf_decal/siding/yellow, +/turf/simulated/floor/carpet, +/area/centcom/evac) "vAg" = ( /obj/structure/table/wood/fancy/black, /obj/item/candle/eternal, @@ -46875,20 +47046,13 @@ icon_state = "dark" }, /area/centcom/zone2) -"vAq" = ( -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/drone, -/obj/item/crowbar/red, -/obj/item/borg/upgrade/vtec, -/obj/item/borg/upgrade/vtec, -/obj/item/stock_parts/cell/bluespace, -/obj/item/stock_parts/cell/bluespace, -/obj/item/borg/upgrade/selfrepair, -/obj/item/borg/upgrade/selfrepair, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"vAs" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 }, -/area/centcom/specops) +/obj/machinery/light, +/turf/simulated/floor/shuttle, +/area/shuttle/pod_2) "vAv" = ( /obj/effect/turf_decal/stripes/line{ color = "darkgray"; @@ -46916,54 +47080,35 @@ "vAA" = ( /turf/simulated/wall/shuttle, /area/shuttle/escape) -"vAC" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"vCn" = ( +/obj/effect/gibspawner/xeno, +/turf/simulated/floor/plating, +/area/syndicate_mothership/control) +"vCo" = ( +/obj/structure/rack/gunrack, +/obj/effect/decal/warning_stripes/blue/hollow, +/obj/item/gun/projectile/shotgun/automatic/combat{ + pixel_x = -6 }, -/turf/simulated/wall/indestructible/reinforced, -/area/centcom/zone3) -"vAU" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 30; - pixel_y = 30 +/obj/item/gun/projectile/shotgun/automatic/combat{ + pixel_x = -6 }, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" +/obj/item/gun/projectile/shotgun/automatic/combat{ + pixel_x = -6 }, -/area/shuttle/specops) -"vBs" = ( -/obj/machinery/door_control/secure{ - id = "CC_Armory_DEDI"; - pixel_x = 24; - pixel_y = 24; - req_access = list(114) +/obj/item/gun/projectile/shotgun/automatic/combat{ + pixel_x = 6 }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "navybluealtstrip" +/obj/item/gun/projectile/shotgun/automatic/combat{ + pixel_x = 6 }, -/area/centcom/specops) -"vBV" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "Toxin" +/obj/item/gun/projectile/shotgun/automatic/combat{ + pixel_x = 6 }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/supply) -"vCn" = ( -/obj/effect/gibspawner/xeno, -/turf/simulated/floor/plating, -/area/syndicate_mothership/control) -"vCI" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/table, -/obj/machinery/computer/library/public, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) +/area/centcom/specops) "vCV" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -47020,6 +47165,16 @@ icon_state = "darkfull" }, /area/syndicate_mothership) +"vDP" = ( +/obj/structure/fans/tiny, +/obj/effect/turf_decal/stripes/full, +/obj/machinery/door/poddoor/impassable{ + id_tag = "Admin_shuttle_access" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone3) "vDS" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/ore_box, @@ -47039,12 +47194,6 @@ icon_state = "darkred" }, /area/centcom/specops) -"vEG" = ( -/obj/machinery/recharge_station/ert, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "vES" = ( /turf/simulated/floor/carpet/black, /area/centcom/zone2) @@ -47060,6 +47209,12 @@ icon_state = "plastitanium" }, /area/shuttle/syndicate) +"vFy" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "navyblue" + }, +/area/centcom/specops) "vFD" = ( /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -47079,28 +47234,41 @@ icon_state = "darkfull" }, /area/syndicate_mothership) -"vGJ" = ( -/obj/structure/marker_beacon{ - icon_state = "markerburgundy-on" +"vGX" = ( +/obj/item/flashlight/lamp/green{ + icon = 'icons/obj/library.dmi'; + icon_state = "bigscenner"; + pixel_x = -6; + pixel_y = 16 }, -/turf/simulated/floor/plating/airless, -/area/space) -"vGS" = ( -/obj/machinery/vending/dinnerware, -/obj/machinery/light{ - dir = 8 +/obj/item/paper_bin/nanotrasen{ + pixel_x = -2; + pixel_y = 8 }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault"; - tag = "icon-vault (WEST)" +/obj/item/pen/fancy{ + pixel_x = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 }, +/obj/structure/table/holotable/wood, +/turf/simulated/floor/carpet/black, /area/centcom/specops) +"vHf" = ( +/obj/structure/filingcabinet/employment, +/turf/simulated/floor/carpet, +/area/centcom/zone2) "vHj" = ( /turf/simulated/floor/wood{ icon_state = "fancy-wood-birch" }, /area/shuttle/trade/sol) +"vHu" = ( +/obj/effect/turf_decal/stripes/gold{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) "vHB" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/ore_box, @@ -47110,10 +47278,12 @@ icon_state = "darkfull" }, /area/syndicate_mothership) -"vHQ" = ( +"vHF" = ( +/obj/machinery/door/airlock/centcom{ + name = "ERT Supply Pods" + }, /turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkgreen" + icon_state = "Dark" }, /area/centcom/specops) "vHT" = ( @@ -47129,15 +47299,6 @@ icon_state = "dark" }, /area/centcom/evac) -"vIe" = ( -/obj/machinery/vending/engivend{ - req_access = list() - }, -/obj/effect/decal/warning_stripes/white/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "vIj" = ( /obj/machinery/computer/message_monitor, /turf/simulated/floor/plasteel{ @@ -47150,6 +47311,19 @@ /obj/item/storage/toolbox/mechanical, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) +"vIU" = ( +/obj/structure/falsewall/reinforced{ + layer = 2.9; + req_access = list(114) + }, +/obj/effect/mine/sound/bwoink{ + invisibility = 1; + layer = 2.8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "vIV" = ( /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -47167,6 +47341,15 @@ tag = "icon-stage_stairs" }, /area/syndicate_mothership/elite_squad) +"vIY" = ( +/obj/structure/table/wood/fancy/black, +/obj/item/pen/multi/gold, +/obj/item/stamp/centcom{ + pixel_x = -5; + pixel_y = 5 + }, +/turf/simulated/floor/carpet/red, +/area/centcom/bridge) "vJp" = ( /obj/machinery/vending/wallmed{ name = "Custom Emergency NanoMed"; @@ -47178,6 +47361,15 @@ icon_state = "neutralfull" }, /area/shuttle/escape) +"vJu" = ( +/obj/structure/window/reinforced{ + layer = 2.9 + }, +/obj/effect/turf_decal/siding/white, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "vJx" = ( /obj/structure/chair/sofa{ dir = 1 @@ -47185,9 +47377,33 @@ /obj/machinery/light, /turf/simulated/floor/carpet, /area/centcom/evac) -"vKv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 +"vKg" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/pod_4) +"vKl" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone3) +"vKv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, /obj/effect/turf_decal/delivery/white, /obj/effect/decal/cleanable/dirt, @@ -47219,17 +47435,6 @@ /obj/structure/fans/tiny, /turf/simulated/floor/plasteel, /area/shuttle/escape) -"vLc" = ( -/obj/vehicle/ridden/motorcycle{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-oak" - }, -/area/syndicate_mothership) "vLq" = ( /obj/machinery/door/airlock/centcom{ aiControlDisabled = 1; @@ -47255,12 +47460,6 @@ icon_state = "darkyellowaltstrip" }, /area/syndicate_mothership/control) -"vLy" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/carpet, -/area/centcom/zone2) "vLL" = ( /turf/simulated/wall/shuttle{ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' @@ -47276,20 +47475,6 @@ icon_state = "plastitanium_red" }, /area/shuttle/syndicate) -"vLU" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the Special Ops."; - name = "Special Ops. Monitor"; - network = list("ERT"); - pixel_x = -32 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 4 - }, -/obj/machinery/papershredder, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "vLY" = ( /obj/item/storage/box/zipties, /turf/simulated/floor/shuttle/objective_check/vox, @@ -47309,14 +47494,6 @@ icon_state = "warndarkgreyred" }, /area/syndicate_mothership) -"vMl" = ( -/obj/structure/chair/office/light, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) "vMq" = ( /obj/structure/shuttle/engine/heater{ icon_state = "heater3x3"; @@ -47331,13 +47508,6 @@ }, /turf/simulated/floor/plating, /area/syndicate_mothership/cargo) -"vMv" = ( -/obj/structure/bookcase, -/obj/effect/decal/cleanable/cobweb{ - layer = 4 - }, -/turf/simulated/floor/plating, -/area/centcom/zone2) "vMC" = ( /obj/structure/chair/comfy/shuttle/dark{ dir = 8 @@ -47381,6 +47551,14 @@ icon_state = "warning" }, /area/shuttle/escape) +"vNv" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/obj/structure/reagent_dispensers/water_cooler, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "vNw" = ( /obj/machinery/door/airlock/external{ aiControlDisabled = 1; @@ -47395,16 +47573,6 @@ icon_state = "dark" }, /area/centcom/evac) -"vNA" = ( -/obj/machinery/door/firedoor, -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/computer/cryopod{ - pixel_y = -30 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "vNF" = ( /turf/simulated/wall/shuttle/nosmooth{ dir = 4; @@ -47425,6 +47593,21 @@ icon_state = "dark" }, /area/centcom/evac) +"vOq" = ( +/obj/structure/filingcabinet/filingcabinet, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/centcom/zone3) +"vOC" = ( +/obj/machinery/computer/account_database{ + name = "Admin Accounts Database" + }, +/obj/machinery/newscaster/security_unit{ + pixel_y = 32 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "vOQ" = ( /obj/machinery/door/airlock/syndicate/security/glass{ name = "Security Airlock"; @@ -47434,9 +47617,32 @@ icon_state = "floor4" }, /area/shuttle/syndicate) +"vOS" = ( +/obj/structure/table, +/obj/item/paper_bin/nanotrasen{ + pixel_x = 3; + pixel_y = 12 + }, +/obj/item/pen/multi/fountain, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) +"vOU" = ( +/obj/effect/turf_decal/tile/neutral{ + alpha = 200; + color = "black"; + icon_state = "tile_full"; + layer = 9; + opacity = 1 + }, +/turf/simulated/floor/plating, +/area/centcom/supply) "vPe" = ( /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) +"vPm" = ( +/obj/structure/bookcase/random, +/turf/simulated/floor/carpet, +/area/centcom/zone1) "vPq" = ( /obj/structure/railing{ dir = 8 @@ -47446,35 +47652,51 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"vPE" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 +"vPx" = ( +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + damage_deflection = 2000; + layer = 2.9; + name = "Nuclear Fission Grenade"; + req_access = list(114) }, -/obj/structure/sign/poster/official/nanotrasen_logo{ - icon = 'icons/obj/decals.dmi'; - icon_state = "nanotrasen_sign1"; - pixel_x = -16; - pixel_y = 32 +/obj/item/grenade/confetti, +/obj/item/grenade/confetti, +/obj/item/grenade/confetti, +/obj/item/grenade/confetti, +/obj/item/grenade/confetti, +/obj/item/grenade/confetti, +/obj/item/grenade/confetti, +/obj/item/grenade/confetti, +/obj/item/grenade/confetti, +/obj/item/grenade/confetti, +/obj/structure/sign/poster/contraband/clown{ + pixel_y = -32 }, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkyellow" + icon_state = "dark" }, /area/centcom/specops) -"vPL" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 +"vPy" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + damage_deflection = 1000; + dir = 2; + req_access = list(114) }, -/obj/structure/holohoop, -/obj/effect/decal/warning_stripes/green/hollow, -/obj/effect/turf_decal/siding/white{ - dir = 1 +/obj/machinery/door/poddoor/shutters/invincible{ + id_tag = "CC_ERT2" }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/machinery/door_control/secure{ + id = "CC_ERT2"; + pixel_y = -25; + req_access = list(114) }, -/area/centcom/jail) +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/wood{ + icon_state = "light-fancy-wood" + }, +/area/centcom/specops) "vPS" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo9" @@ -47494,6 +47716,11 @@ icon_state = "darkyellowalt" }, /area/syndicate_mothership/cargo) +"vPW" = ( +/obj/machinery/photocopier, +/obj/structure/table/wood, +/turf/simulated/floor/plating, +/area/centcom/zone2) "vQc" = ( /obj/structure/window/full/shuttle/gray, /obj/structure/grille, @@ -47508,57 +47735,6 @@ icon_state = "grimy" }, /area/centcom/zone1) -"vQJ" = ( -/obj/effect/decal/warning_stripes/northeastsouth, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 1; - id_tag = "ERT_armory_lvl4"; - name = "Armory level 4"; - layer = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" - }, -/area/centcom/specops) -"vQS" = ( -/obj/docking_port/mobile{ - dheight = 1; - dir = 8; - dwidth = 7; - height = 18; - id = "trade_sol"; - name = "sol trade shuttle"; - roundstart_move = "trade_sol_base"; - width = 15 - }, -/obj/machinery/door/airlock/shuttle/glass{ - id_tag = "s_docking_airlock" - }, -/obj/structure/fans/tiny, -/obj/docking_port/stationary/transit{ - dir = 8; - dwidth = 2; - height = 11; - id = "trade_sol_transit"; - name = "trade_sol in transit"; - pixel_x = 32; - turf_type = /turf/space/transit/west; - width = 5 - }, -/turf/simulated/floor/wood, -/area/shuttle/trade/sol) -"vRe" = ( -/obj/structure/window/reinforced/survival_pod{ - dir = 6; - pixel_y = -1; - pixel_x = 1; - density = 0 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkbluealt" - }, -/area/centcom/zone2) "vRi" = ( /obj/machinery/computer/mech_bay_power_console, /obj/effect/decal/cleanable/dirt, @@ -47568,22 +47744,6 @@ }, /turf/simulated/floor/plasteel, /area/shuttle/escape) -"vRJ" = ( -/obj/structure/table/glass, -/obj/item/book/manual/evaguide, -/obj/machinery/newscaster/security_unit{ - pixel_y = -32 - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) -"vRQ" = ( -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault"; - tag = "icon-vault (WEST)" - }, -/area/centcom/specops) "vRS" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -47592,24 +47752,21 @@ icon_state = "dark" }, /area/centcom/zone1) -"vRW" = ( -/obj/item/radio/intercom/specops{ - pixel_y = -32 +"vRV" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "CC_Armory_LWAP" }, /turf/simulated/floor/plasteel{ - icon_state = "navybluealt" + icon_state = "dark" }, /area/centcom/specops) -"vSp" = ( -/obj/machinery/vending/nta{ - dir = 4; - products = list(/obj/item/grenade/flashbang=4,/obj/item/flash=5,/obj/item/flashlight/seclite=4,/obj/item/restraints/legcuffs/bola/energy=8,/obj/item/ammo_box/shotgun=4,/obj/item/ammo_box/shotgun/buck=4,/obj/item/ammo_box/shotgun/rubbershot=4,/obj/item/ammo_casing/shotgun/stunslug=35,/obj/item/ammo_casing/shotgun/ion=14,/obj/item/ammo_casing/shotgun/laserslug=35,/obj/item/ammo_box/speedloader/shotgun=8,/obj/item/ammo_box/magazine/lr30mag=12,/obj/item/ammo_box/magazine/enforcer=18,/obj/item/ammo_box/magazine/enforcer/lethal=28,/obj/item/ammo_box/magazine/sp8=8,/obj/item/ammo_box/magazine/laser=12,/obj/item/ammo_box/magazine/wt550m9=20,/obj/item/ammo_box/magazine/m556=12,/obj/item/ammo_box/a40mm=4,/obj/item/ammo_box/c46x30mm=8,/obj/item/ammo_box/inc46x30mm=4,/obj/item/ammo_box/tox46x30mm=4,/obj/item/ammo_box/ap46x30mm=4,/obj/item/ammo_box/laserammobox=4); - req_access = list(104,109) +"vRW" = ( +/obj/item/radio/intercom/specops{ + pixel_y = -32 }, -/obj/effect/decal/warning_stripes/white/hollow, -/obj/effect/decal/warning_stripes/white/hollow, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "navybluealt" }, /area/centcom/specops) "vSs" = ( @@ -47629,6 +47786,11 @@ icon_state = "darkyellowaltstrip" }, /area/syndicate_mothership/control) +"vSC" = ( +/obj/effect/landmark/ert_director, +/obj/structure/chair/office/dark, +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "vSD" = ( /obj/structure/table, /obj/item/clipboard, @@ -47641,6 +47803,9 @@ icon_state = "bot" }, /area/shuttle/escape) +"vSE" = ( +/turf/simulated/floor/carpet/red, +/area/centcom/bridge) "vSK" = ( /obj/machinery/status_display{ pixel_y = -32 @@ -47660,12 +47825,14 @@ "vTg" = ( /turf/simulated/floor/carpet/black, /area/centcom/evac) -"vTk" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 +"vTi" = ( +/obj/structure/chair/sofa/corp/right{ + dir = 1 }, -/turf/simulated/floor/shuttle, -/area/shuttle/transport) +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone3) "vTr" = ( /obj/effect/turf_decal{ dir = 6; @@ -47696,46 +47863,6 @@ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' }, /area/shuttle/assault_pod) -"vTF" = ( -/obj/structure/fans/tiny, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 8; - height = 18; - id = "admin"; - name = "administration shuttle"; - roundstart_move = "admin_away"; - width = 18 - }, -/obj/docking_port/stationary/transit{ - dir = 8; - dwidth = 8; - height = 18; - id = "admin_transit"; - name = "admin in transit"; - pixel_x = 32; - turf_type = /turf/space/transit/west; - width = 18 - }, -/obj/machinery/door/airlock/external{ - frequency = 1331; - id_tag = "admin_s_outer"; - name = "Ship External Access"; - req_access = list(101) - }, -/obj/machinery/access_button{ - command = "cycle_exterior"; - frequency = 1331; - master_tag = "admin_s_air_control"; - pixel_x = -1; - pixel_y = -29; - req_access = list(101) - }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "podfloor_dark" - }, -/area/shuttle/administration) "vTH" = ( /obj/machinery/flasher{ id = "syndie_FB_cells"; @@ -47760,20 +47887,25 @@ icon_state = "grimy" }, /area/centcom/jail) -"vUA" = ( -/obj/docking_port/stationary{ - dir = 2; - dwidth = 2; - height = 11; - id = "specops_away"; - name = "centcom bay 3"; - top_left_corner = 8; - top_right_corner = 1; - width = 5; - turf_type = /turf/simulated/floor/plating/airless +"vUp" = ( +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkyellow" }, -/turf/simulated/floor/plating/airless, -/area/centcom/specops) +/area/centcom/supplypod/loading/three) +"vUy" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/airlock/gold/glass{ + frequency = 2000; + hackable = 0; + id_tag = "CC-OP3-Ext"; + locked = 1; + name = "Zone 3" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone3) "vUY" = ( /obj/machinery/space_heater, /obj/effect/decal/cleanable/dirt, @@ -47797,9 +47929,16 @@ icon_state = "asteroid" }, /area/centcom/evac) -"vVT" = ( -/obj/structure/chair/comfy/brown, -/turf/simulated/floor/wood, +"vVB" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/turf_decal/siding/blue/corner{ + color = "#444444"; + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "vWm" = ( /obj/structure/grille, @@ -47817,35 +47956,12 @@ icon_state = "darkfull" }, /area/syndicate_mothership) -"vWv" = ( -/obj/machinery/teleport/station, -/obj/machinery/light, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "vWC" = ( /obj/effect/turf_decal/loading_area, /turf/simulated/floor/plasteel{ icon_state = "darkfull" }, /area/syndicate_mothership/cargo) -"vWH" = ( -/obj/structure/closet/secure_closet/guncabinet{ - layer = 2.9; - name = "advanced energy gun" - }, -/obj/item/gun/energy/gun/nuclear, -/obj/item/gun/energy/gun/nuclear, -/obj/item/gun/energy/gun/nuclear, -/obj/item/gun/energy/gun/nuclear, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" - }, -/area/shuttle/gamma) "vWN" = ( /obj/structure/ore_box, /obj/effect/turf_decal/stripes/line, @@ -47864,30 +47980,18 @@ icon_state = "darkyellowfull" }, /area/syndicate_mothership/cargo) -"vXd" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/machinery/status_display{ - layer = 4; - pixel_x = 32 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_1) "vXo" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/lavendergrass, /turf/simulated/floor/grass, /area/centcom/evac) -"vXv" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkyellowalt" +"vXs" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 10 }, -/area/centcom/zone3) +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "vXD" = ( /obj/structure/chair/comfy/shuttle/dark{ dir = 1 @@ -47897,33 +48001,6 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"vXQ" = ( -/obj/structure/closet/cardboard{ - icon_state = "cardboard_cargo"; - icon_closed = "cardboard_cargo"; - icon_opened = "cardboard_cargo_open" - }, -/mob/living/simple_animal/hostile/mimic{ - faction = list("neutral"); - name = "Archivist" - }, -/turf/simulated/floor/plating, -/area/centcom/zone2) -"vYd" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - layer = 2.9 - }, -/obj/effect/turf_decal/box/white/corners{ - dir = 1 - }, -/obj/structure/weightmachine/stacklifter, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" - }, -/area/centcom/jail) "vYj" = ( /obj/structure/closet/hydrant{ pixel_y = 32 @@ -47941,6 +48018,35 @@ icon_state = "darkfull" }, /area/syndicate_mothership) +"vYC" = ( +/obj/machinery/status_display{ + pixel_y = 30 + }, +/obj/machinery/computer/rdservercontrol{ + badmin = 1; + name = "Master R&D Server Controller" + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) +"vYK" = ( +/obj/machinery/door/airlock/external{ + id_tag = "specops_away"; + name = "Shuttle Hatch"; + req_access = list(109) + }, +/obj/machinery/shower{ + dir = 1; + tag = "icon-shower (WEST)" + }, +/obj/structure/fans/tiny, +/obj/machinery/door/poddoor/impassable/preopen{ + id_tag = "ERT_Quarantine"; + name = "ERT Quarantine" + }, +/turf/simulated/floor/indestructible{ + icon_state = "dark" + }, +/area/centcom/specops) "vYT" = ( /obj/machinery/door_control/secure{ id = "SIT_outside"; @@ -47950,6 +48056,17 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) +"vYW" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -5 + }, +/turf/simulated/floor/carpet, +/area/centcom/zone3) "vZd" = ( /obj/machinery/bluespace_beacon/syndicate, /obj/effect/turf_decal/box/red, @@ -47977,6 +48094,19 @@ icon_state = "darkfull" }, /area/syndicate_mothership) +"vZg" = ( +/obj/machinery/vending/security, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "dark" + }, +/area/shuttle/administration) +"vZp" = ( +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/two) "vZr" = ( /obj/machinery/light, /obj/structure/chair/comfy/shuttle{ @@ -47986,35 +48116,17 @@ icon_state = "bot" }, /area/shuttle/escape) -"vZW" = ( -/obj/structure/table/wood/fancy/black, -/obj/item/paper_bin/nanotrasen{ - pixel_x = -2; - pixel_y = 8 - }, -/obj/item/flashlight/lamp/green{ - pixel_x = -6; - pixel_y = 16 - }, -/turf/simulated/floor/carpet/red, -/area/centcom/bridge) -"wax" = ( -/obj/machinery/door/window/brigdoor{ - dir = 8; - req_access = list(106) - }, -/obj/structure/chair/comfy/lime{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"waz" = ( +/obj/structure/window/reinforced{ + layer = 2.9 }, -/area/centcom/zone3) -"way" = ( -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkredaltstrip" +/obj/structure/table, +/obj/item/paper_bin/nanotrasen{ + pixel_x = 3; + pixel_y = 12 }, +/obj/item/pen/multi/fountain, +/turf/simulated/floor/carpet/black, /area/centcom/zone2) "waD" = ( /obj/structure/lattice/catwalk, @@ -48027,6 +48139,13 @@ icon_state = "router_dir" }, /area/shuttle/syndicate) +"waE" = ( +/obj/structure/plasticflaps/mining, +/obj/machinery/conveyor{ + id = "QMLoad2" + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/supply) "waI" = ( /obj/structure/ore_box, /obj/effect/turf_decal/stripes/line{ @@ -48054,13 +48173,32 @@ icon_state = "darkgrey" }, /area/centcom/zone2) -"wbd" = ( -/obj/mecha/combat/marauder/loaded, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "navyblue" +"waZ" = ( +/obj/structure/railing{ + dir = 1 }, +/turf/simulated/wall/indestructible/reinforced, /area/centcom/specops) +"wbe" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/glass/beaker/waterbottle, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -5 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone3) +"wbt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/vehicle/ridden/motorcycle{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" + }, +/area/syndicate_mothership) "wbw" = ( /obj/machinery/conveyor_switch/oneway{ id = "SFBQMLoad" @@ -48070,35 +48208,27 @@ icon_state = "darkyellowcornersalt" }, /area/syndicate_mothership/cargo) -"wbG" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/item/twohanded/required/kirbyplants, -/obj/structure/railing, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" +"wbF" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/effect/turf_decal/siding/brown{ + dir = 4 }, -/area/syndicate_mothership/jail) -"wbJ" = ( -/obj/structure/toilet{ - dir = 4; - name = "Трон старшего администратора" +/obj/structure/window/reinforced/tinted, +/obj/structure/window/reinforced/tinted{ + dir = 8 }, -/obj/machinery/light/small{ +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) +"wbG" = ( +/obj/structure/railing{ dir = 1 }, -/obj/machinery/door_control{ - id = "CC_toilet_unit3"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - pixel_y = 25; - specialfunctions = 4 - }, +/obj/item/twohanded/required/kirbyplants, +/obj/structure/railing, /turf/simulated/floor/plasteel{ - icon_state = "white" + icon_state = "darkfull" }, -/area/centcom/zone1) +/area/syndicate_mothership/jail) "wbU" = ( /obj/effect/turf_decal/loading_area/white{ dir = 4 @@ -48107,42 +48237,56 @@ icon_state = "darkfull" }, /area/syndicate_mothership/infteam) +"wch" = ( +/obj/structure/falsewall/reinforced, +/obj/effect/decal/warning_stripes/blue{ + desc = "Куда же ведет эта лестница?"; + icon = 'icons/obj/structures.dmi'; + icon_state = "ladder11"; + name = "Ladder" + }, +/obj/effect/step_trigger/teleporter{ + icon = 'icons/mob/screen_gen.dmi'; + icon_state = "x2"; + mobs_only = 1; + teleport_x = 135; + teleport_y = 16; + teleport_z = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) "wcz" = ( /obj/structure/dresser, /turf/simulated/floor/plasteel{ icon_state = "white" }, /area/centcom/jail) -"wcC" = ( -/obj/structure/sign/poster/official/nanotrasen_logo{ - pixel_y = -32 - }, -/obj/item/twohanded/required/kirbyplants, -/obj/structure/window/reinforced{ +"wcM" = ( +/obj/machinery/light{ dir = 8 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 10; + icon_state = "darkyellowalt" }, -/area/centcom/bridge) +/area/centcom/zone3) "wde" = ( /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkbluealt" }, /area/centcom/zone2) -"wds" = ( -/obj/machinery/door/airlock/centcom{ - aiControlDisabled = 1; - name = "Assault Pod"; - opacity = 1; - req_access = list(150) +"wdH" = ( +/obj/machinery/cryopod{ + dir = 4 }, -/obj/docking_port/mobile/assault_pod, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" +/obj/structure/window/reinforced{ + dir = 1 }, -/area/shuttle/assault_pod) +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/zone1) "weC" = ( /obj/machinery/door/poddoor/shutters/invincible{ id_tag = "senior_o_shutters" @@ -48163,27 +48307,24 @@ icon_state = "warnwhite" }, /area/centcom/zone1) -"weS" = ( -/obj/structure/table/glass, -/obj/structure/window/reinforced{ - dir = 8; - layer = 4.2 +"wfo" = ( +/obj/machinery/cryopod{ + dir = 4 }, -/obj/machinery/photocopier/faxmachine/longrange{ - department = "Central Command" +/obj/machinery/computer/cryopod{ + pixel_y = 32 }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 6 +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/zone1) +"wfA" = ( +/obj/structure/chair/sofa/corp/left{ + dir = 4 }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"wfE" = ( -/obj/structure/reagent_dispensers/water_cooler, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/structure/sign/poster/official/space_cops{ + pixel_y = 32 }, -/area/centcom/specops) +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "wfM" = ( /obj/machinery/light, /turf/simulated/floor/plasteel{ @@ -48209,15 +48350,20 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/jail) -"wgo" = ( +"wgx" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + layer = 2.9 + }, +/obj/effect/turf_decal/siding/white{ + dir = 10 + }, /turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "navyblue" + icon_state = "dark" }, -/area/centcom/specops) -"wgN" = ( -/turf/simulated/floor/glass, -/area/centcom/bridge) +/area/centcom/jail) "whd" = ( /obj/structure/chair/sofa/corner{ dir = 4 @@ -48231,14 +48377,6 @@ icon_state = "ninja_walls_corners" }, /area/shuttle/ninja) -"whw" = ( -/obj/structure/chair, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault"; - tag = "icon-vault (WEST)" - }, -/area/centcom/specops) "whO" = ( /obj/effect/turf_decal/number/number_6{ dir = 4; @@ -48261,20 +48399,6 @@ icon_state = "dark" }, /area/shuttle/syndicate) -"wil" = ( -/obj/structure/sign/poster/official/nanotrasen_logo{ - pixel_x = -32 - }, -/obj/structure/window/reinforced, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-22"; - tag = "icon-plant-22" - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "wix" = ( /obj/machinery/door/airlock/hatch{ aiControlDisabled = 1; @@ -48318,6 +48442,9 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) +"wiU" = ( +/turf/simulated/wall/shuttle, +/area/shuttle/nt_droppod) "wje" = ( /obj/effect/turf_decal/stripes/line{ icon = 'icons/turf/floors.dmi'; @@ -48332,6 +48459,18 @@ icon_state = "warndarkgreyred" }, /area/syndicate_mothership) +"wjG" = ( +/obj/mecha/combat/durand/loaded{ + operation_req_access = list(1) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/mech, +/turf/simulated/floor/shuttle{ + icon_state = "floor4" + }, +/area/shuttle/gamma) "wkk" = ( /obj/machinery/light, /obj/effect/decal/cleanable/dirt, @@ -48339,19 +48478,6 @@ icon_state = "darkgrey" }, /area/syndicate_mothership) -"wkl" = ( -/obj/machinery/mass_driver{ - dir = 4; - id_tag = "ASSAULT2"; - name = "gravpult" - }, -/obj/effect/turf_decal/loading_area/white{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) "wkr" = ( /obj/effect/turf_decal/stripes/line{ color = "darkgray"; @@ -48372,18 +48498,24 @@ icon_state = "rampbottom" }, /area/syndicate_mothership/outside) -"wkE" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "trader_privacy"; - name = "Privacy Shutters" - }, -/obj/structure/grille, -/obj/structure/window/full/shuttle, -/turf/simulated/wall/shuttle, -/area/shuttle/trade/sol) "wkN" = ( /turf/simulated/wall/shuttle/onlyselfsmooth, /area/shuttle/escape) +"wlb" = ( +/obj/effect/turf_decal/siding/white{ + dir = 1; + pixel_y = 3 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) +"wlj" = ( +/obj/machinery/dna_scannernew/upgraded, +/turf/simulated/floor/shuttle{ + icon_state = "floor3" + }, +/area/shuttle/administration) "wlm" = ( /obj/structure/flora/grass/jungle/b, /obj/structure/flora/ausbushes/genericbush, @@ -48405,68 +48537,46 @@ icon_state = "darkyellowfull" }, /area/syndicate_mothership/cargo) -"wlz" = ( -/obj/item/flag/nt, -/turf/simulated/floor/carpet, -/area/centcom/specops) "wlI" = ( /turf/simulated/floor/plasteel{ icon_state = "darkfull" }, /area/syndicate_mothership) +"wlW" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 6 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/specops) "wlY" = ( /obj/structure/flora/grass/jungle/b, /obj/structure/flora/ausbushes/lavendergrass, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"wmd" = ( -/obj/structure/rack/holorack, -/obj/item/organ/internal/cyberimp/brain/anti_drop, -/obj/item/organ/internal/cyberimp/brain/anti_drop, -/obj/item/organ/internal/cyberimp/brain/anti_sleep/hardened, -/obj/item/organ/internal/cyberimp/brain/anti_sleep/hardened, -/obj/item/organ/internal/cyberimp/brain/anti_stun/hardened, -/obj/item/organ/internal/cyberimp/brain/anti_stun/hardened, -/obj/item/organ/internal/cyberimp/chest/nutriment_old/plus, -/obj/item/organ/internal/cyberimp/chest/nutriment_old/plus, -/obj/item/organ/internal/cyberimp/chest/reviver/hardened, -/obj/item/organ/internal/cyberimp/chest/reviver/hardened, -/obj/item/organ/internal/cyberimp/eyes/hud/medical, -/obj/item/organ/internal/cyberimp/eyes/hud/medical, -/obj/item/organ/internal/cyberimp/eyes/thermals, -/obj/item/organ/internal/cyberimp/eyes/thermals, -/obj/item/organ/internal/cyberimp/mouth/breathing_tube, -/obj/item/organ/internal/cyberimp/mouth/breathing_tube, -/obj/item/implanter/mindshield, -/obj/item/implanter/mindshield, -/obj/item/organ/internal/cyberimp/arm/combat/centcom, -/obj/item/organ/internal/cyberimp/arm/combat/centcom, -/obj/item/organ/internal/cyberimp/arm/surgery, -/obj/item/organ/internal/cyberimp/arm/toolset, -/obj/item/organ/internal/cyberimp/arm/janitorial, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "wmt" = ( /turf/simulated/wall/shuttle, /area/shuttle/trade/sol) -"wmD" = ( -/obj/machinery/autolathe/security{ - hacked = 1 - }, -/obj/machinery/light{ - dir = 8 +"wmC" = ( +/obj/effect/decal/nanotrasen_logo{ + pixel_x = 16 }, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; +/turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/shuttle/administration) -"wmR" = ( -/obj/item/flag/nt, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "navybluealt" +/area/centcom/specops) +"wmI" = ( +/obj/structure/chair/comfy/shuttle, +/obj/machinery/light{ + dir = 1 }, +/turf/simulated/floor/shuttle, +/area/shuttle/pod_4) +"wmP" = ( +/obj/structure/table/wood{ + color = "#996633" + }, +/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "wna" = ( /turf/simulated/floor/plasteel{ @@ -48474,15 +48584,6 @@ icon_state = "dark" }, /area/syndicate_mothership/outside) -"wnu" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "navybluealtstrip" - }, -/area/centcom/supply) "wnA" = ( /obj/machinery/door/poddoor/shutters/preopen{ closingLayer = 5; @@ -48494,19 +48595,6 @@ /obj/structure/window/full/shuttle, /turf/simulated/floor/shuttle/plating, /area/shuttle/trade/sol) -"wnC" = ( -/obj/item/flag/nt, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "neutral" - }, -/area/centcom/evac) -"wnO" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8 - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/specops) "wod" = ( /obj/machinery/bodyscanner, /obj/machinery/light/spot, @@ -48547,33 +48635,11 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"woU" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -8; - pixel_y = 30 - }, -/obj/machinery/vending/wallmed{ - name = "Emergency NanoMed"; - pixel_x = 6; - pixel_y = 30 - }, -/turf/simulated/floor/wood, -/area/centcom/zone2) "woV" = ( /turf/simulated/floor/shuttle{ icon_state = "floor4" }, /area/shuttle/specops) -"wpg" = ( -/obj/structure/railing{ - layer = 4.3 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" - }, -/area/centcom/specops) "wpJ" = ( /obj/structure/flora/grass/jungle, /turf/simulated/floor/indestructible/grass, @@ -48589,6 +48655,17 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) +"wqj" = ( +/obj/structure/chair/comfy/beige{ + dir = 4; + layer = 5; + pixel_y = -2 + }, +/obj/effect/turf_decal/siding/brown{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone3) "wqk" = ( /obj/effect/turf_decal{ dir = 6; @@ -48596,9 +48673,13 @@ }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) -"wqx" = ( -/turf/simulated/floor/carpet, -/area/centcom/jail) +"wqy" = ( +/obj/machinery/computer/card/centcom, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "wqz" = ( /obj/effect/mapping_helpers/light, /obj/effect/turf_decal{ @@ -48613,6 +48694,12 @@ /obj/structure/window/reinforced, /turf/simulated/floor/beach/sand, /area/centcom/evac) +"wqP" = ( +/obj/effect/turf_decal/box/white, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) "wqQ" = ( /obj/structure/flora/junglebush, /obj/structure/flora/junglebush/c, @@ -48646,6 +48733,14 @@ icon_state = "dark" }, /area/centcom/specops) +"wrq" = ( +/obj/structure/chair/comfy/shuttle, +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/pod_2) "wrs" = ( /obj/structure/window/reinforced{ dir = 1 @@ -48699,9 +48794,6 @@ icon_state = "dark" }, /area/centcom/zone1) -"wso" = ( -/turf/simulated/wall/shuttle/onlyselfsmooth, -/area/shuttle/pod_1) "wsI" = ( /obj/structure/curtain/black{ pixel_y = -32 @@ -48721,6 +48813,30 @@ icon_state = "dark" }, /area/centcom/evac) +"wsY" = ( +/obj/structure/sign/poster/official/nanotrasen_logo{ + icon = 'icons/obj/decals.dmi'; + icon_state = "ntsing_alt4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"wta" = ( +/obj/structure/window/reinforced{ + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/table, +/obj/item/paper_bin/nanotrasen{ + pixel_x = 3; + pixel_y = 12 + }, +/obj/item/pen/multi/fountain, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "wtL" = ( /obj/structure/rack/holorack, /obj/item/gun/rocketlauncher, @@ -48769,6 +48885,12 @@ icon_state = "plastitanium" }, /area/shuttle/syndicate) +"wvg" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/wall/indestructible/reinforced, +/area/centcom/zone2) "wvH" = ( /obj/effect/turf_decal{ dir = 8; @@ -48803,18 +48925,51 @@ }, /turf/simulated/floor/shuttle/plating/vox, /area/shuttle/vox) +"wvZ" = ( +/obj/structure/sign/poster/official/nanotrasen_logo{ + icon = 'icons/obj/decals.dmi'; + icon_state = "ntsing_alt" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "wwr" = ( /obj/structure/table/wood{ color = "#996633" }, /turf/simulated/floor/carpet/black, /area/centcom/zone1) +"wwE" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + layer = 2.9 + }, +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/obj/structure/weightmachine/stacklifter, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" + }, +/area/centcom/jail) "wwK" = ( /turf/simulated/floor/plasteel{ dir = 9; icon_state = "darkyellow" }, /area/centcom/specops) +"wxh" = ( +/obj/structure/closet/crate/can, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/centcom/zone2) +"wxt" = ( +/turf/simulated/floor/glass, +/area/centcom/bridge) "wxC" = ( /obj/structure/window/reinforced, /obj/item/flag/species/taj, @@ -48822,14 +48977,6 @@ icon_state = "dark" }, /area/centcom/evac) -"wxE" = ( -/obj/effect/turf_decal/siding/white{ - dir = 10 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) "wxH" = ( /obj/machinery/airlock_sensor{ frequency = 1331; @@ -48846,21 +48993,6 @@ /obj/machinery/computer/shuttle/vox, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) -"wxL" = ( -/obj/docking_port/stationary/transit{ - dheight = 1; - dir = 2; - dwidth = 4; - height = 20; - id = "ombra_transit"; - name = "Ombra in transit"; - turf_type = /turf/space/transit/south; - width = 9 - }, -/turf/space/transit/south{ - icon_state = "speedspace_ns_1" - }, -/area/space) "wxO" = ( /obj/machinery/computer/library, /obj/structure/table/wood{ @@ -48879,99 +49011,10 @@ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' }, /area/syndicate_mothership/cargo) -"wym" = ( -/obj/structure/table/reinforced, -/obj/item/radio{ - pixel_x = -4; - pixel_y = 5; - icon_state = "walkietalkie_sec" - }, -/obj/item/radio{ - pixel_x = -4; - pixel_y = 5; - icon_state = "walkietalkie_sec" - }, -/obj/item/radio{ - pixel_x = -4; - pixel_y = 5; - icon_state = "walkietalkie_sec" - }, -/obj/item/radio{ - pixel_x = -4; - pixel_y = 5; - icon_state = "walkietalkie_sec" - }, -/obj/item/radio{ - pixel_x = 4; - pixel_y = 5; - icon_state = "walkietalkie_sec" - }, -/obj/item/radio{ - pixel_x = 4; - pixel_y = 5; - icon_state = "walkietalkie_sec" - }, -/obj/item/radio{ - pixel_x = 4; - pixel_y = 5; - icon_state = "walkietalkie_sec" - }, -/obj/item/radio{ - pixel_x = 4; - pixel_y = 5; - icon_state = "walkietalkie_sec" - }, -/obj/item/radio{ - pixel_x = -4; - icon_state = "walkietalkie_sec" - }, -/obj/item/radio{ - pixel_x = -4; - icon_state = "walkietalkie_sec" - }, -/obj/item/radio{ - pixel_x = -4; - icon_state = "walkietalkie_sec" - }, -/obj/item/radio{ - pixel_x = -4; - icon_state = "walkietalkie_sec" - }, -/obj/item/radio{ - pixel_x = 4; - icon_state = "walkietalkie_sec" - }, -/obj/item/radio{ - pixel_x = 4; - icon_state = "walkietalkie_sec" - }, -/obj/item/radio{ - pixel_x = 4; - icon_state = "walkietalkie_sec" - }, -/obj/item/radio{ - pixel_x = 4; - icon_state = "walkietalkie_sec" - }, -/turf/simulated/floor/plasteel{ - icon_state = "navyblue" - }, -/area/centcom/specops) -"wyr" = ( -/obj/machinery/vending/wallmed{ - layer = 3.3; - name = "Emergency NanoMed"; - pixel_y = 32 - }, -/obj/structure/rack, -/obj/item/roller/holo, -/obj/item/roller/holo, -/obj/item/roller/holo, -/obj/item/roller/holo, -/obj/item/roller/holo, +"wyk" = ( +/obj/machinery/vending/cigarette/free, /turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkbluealt" + icon_state = "dark" }, /area/centcom/specops) "wyt" = ( @@ -48980,6 +49023,18 @@ icon_state = "floor4" }, /area/shuttle/assault_pod) +"wyB" = ( +/obj/structure/table/reinforced, +/obj/item/storage/box/donkpockets, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault"; + tag = "icon-vault (WEST)" + }, +/area/centcom/specops) "wyU" = ( /obj/item/flag/nt, /turf/simulated/floor/wood, @@ -49009,12 +49064,6 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"wze" = ( -/obj/structure/closet/secure_closet, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/centcom/zone3) "wzh" = ( /obj/effect/turf_decal{ dir = 1; @@ -49033,52 +49082,6 @@ /obj/structure/table/wood/fancy, /turf/simulated/floor/wood, /area/centcom/zone1) -"wzC" = ( -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = -32 - }, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"wzD" = ( -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/conveyor{ - id = "N2"; - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister/nitrogen{ - maximum_pressure = 50000 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) -"wzK" = ( -/obj/machinery/door/airlock/command/glass{ - frequency = 2000; - icon_state = "open"; - id_tag = "CC-OP3-Int"; - locked = 1; - name = "Zone 2" - }, -/obj/effect/decal/warning_stripes/blue, -/obj/machinery/access_button{ - command = "cycle_interior"; - frequency = 2000; - master_tag = "CC-OP3"; - name = "CC-OP3-INT"; - pixel_x = 32; - req_access = list(109) - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/zone2) "wzP" = ( /obj/item/decorations/sticky_decorations/flammable/snowman{ pixel_x = -7; @@ -49099,26 +49102,89 @@ icon_state = "darkredalt" }, /area/syndicate_mothership/cargo) -"wAm" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - id_tag = "ShitRainSupply" +"wAs" = ( +/obj/structure/table/reinforced, +/obj/machinery/door_control/secure{ + id = "ERT_director_office_shutters2"; + name = "Briefing"; + pixel_x = 6; + pixel_y = -2; + req_access = list(114) }, -/turf/simulated/floor/plating, +/obj/machinery/door_control/secure{ + color = "#ff9999"; + id = "ERT_armory_lvl3"; + name = "ERT Armory Level 3"; + pixel_x = -6; + pixel_y = 8; + req_access = list(114) + }, +/obj/machinery/door_control/secure{ + color = "#99ff99"; + id = "ERT_armory_lvl1"; + name = "ERT Armory Level 1"; + pixel_x = -6; + pixel_y = -8; + req_access = list(114) + }, +/obj/machinery/door_control/secure{ + color = "#9999ff"; + id = "ERT_armory_lvl2"; + name = "ERT Armory Level 2"; + pixel_x = -6; + req_access = list(114) + }, +/obj/machinery/door_control{ + id = "ERT_Quarantine"; + name = "ERT Quarantine"; + pixel_x = 6; + pixel_y = 6; + req_access = list(114) + }, +/obj/machinery/door_control/secure{ + color = "#ffdd99"; + id = "ERT_armory_lvl4"; + name = "ERT Armory Level 4"; + pixel_x = 6; + pixel_y = -14; + req_access = list(114) + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) -"wAS" = ( +"wAz" = ( /obj/structure/table/glass, -/obj/item/paper_bin/nanotrasen{ - pixel_x = -2; - pixel_y = 8 +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" }, -/obj/item/pen/fancy{ - pixel_x = 8 +/area/centcom/specops) +"wAE" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/light{ + dir = 1 }, +/turf/simulated/floor/wood, +/area/centcom/zone3) +"wAL" = ( /obj/structure/window/reinforced{ - dir = 8 + dir = 8; + layer = 2.9 + }, +/obj/effect/turf_decal/siding{ + color = "#444444" }, /turf/simulated/floor/carpet/black, -/area/centcom/zone2) +/area/centcom/specops) +"wAV" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/centcom/jail) "wBe" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 4; @@ -49136,6 +49202,12 @@ /obj/effect/mapping_helpers/light, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) +"wBr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/wall/indestructible/reinforced, +/area/centcom/zone3) "wBy" = ( /obj/machinery/atmospherics/unary/tank/nitrogen{ dir = 8 @@ -49150,21 +49222,6 @@ }, /turf/simulated/floor/redgrid, /area/syndicate_mothership) -"wBV" = ( -/obj/structure/closet/crate, -/obj/effect/decal/cleanable/cobweb{ - layer = 4 - }, -/turf/simulated/floor/plating, -/area/centcom/zone2) -"wCq" = ( -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 8 - }, -/obj/item/flag/nt, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "wCw" = ( /obj/structure/table/wood/fancy/red, /obj/item/folder/red{ @@ -49185,10 +49242,13 @@ icon_state = "dark" }, /area/syndicate_mothership/control) -"wDu" = ( -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) +"wDk" = ( +/obj/machinery/light/spot{ + dir = 1 + }, +/obj/structure/closet/crate, +/turf/simulated/floor/shuttle, +/area/shuttle/transport) "wDB" = ( /obj/machinery/door/airlock/syndicate/security/glass{ name = "Security Airlock"; @@ -49219,30 +49279,6 @@ icon_state = "freezerfloor" }, /area/syndicate_mothership) -"wDU" = ( -/obj/structure/filingcabinet/chestdrawer{ - anchored = 0 - }, -/obj/structure/sign/poster/ripped{ - pixel_y = -32 - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) -"wDZ" = ( -/obj/structure/shuttle/engine/heater{ - dir = 1; - icon_state = "heater3x3"; - tag = "icon-heater (NORTH)" - }, -/obj/structure/shuttle/engine/platform{ - dir = 1; - layer = 2.9 - }, -/obj/structure/window/plasmareinforced{ - color = "#00f700" - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/ninja) "wEb" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -49263,6 +49299,15 @@ }, /turf/simulated/floor/carpet/black, /area/centcom/specops) +"wEu" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/one) "wEF" = ( /obj/structure/grille, /obj/machinery/door/poddoor/shutters/preopen{ @@ -49293,14 +49338,6 @@ icon_state = "freezerfloor" }, /area/syndicate_mothership) -"wFf" = ( -/obj/structure/closet/secure_closet/brig, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkredalt" - }, -/area/centcom/jail) "wFC" = ( /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -49333,66 +49370,30 @@ icon_state = "darkred" }, /area/syndicate_mothership/elite_squad) -"wGg" = ( -/obj/vehicle/ridden/motorcycle{ - dir = 8 - }, -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-oak" +"wGf" = ( +/obj/machinery/photocopier, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" }, -/area/syndicate_mothership) +/area/centcom/jail) "wGu" = ( /turf/simulated/wall/indestructible/fakeglass{ base_icon_state = "fake_plastitanium_glass"; icon = 'icons/turf/walls/fake_plastitanium_glass.dmi' }, /area/syndicate_mothership) -"wGE" = ( -/obj/structure/window/reinforced{ - layer = 2.9 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-17"; - tag = "icon-plant-17" - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "wGM" = ( /obj/structure/window/full/reinforced{ layer = 2 }, /turf/simulated/floor/plating, /area/centcom/evac) -"wHu" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8; - icon_state = "burst_r" - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/specops) -"wIa" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "burst_r"; - tag = "icon-burst_r" - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/pod_1) -"wIv" = ( -/obj/structure/chair/comfy/shuttle, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkred" +"wIg" = ( +/obj/machinery/light_construct/small{ + dir = 1 }, -/area/centcom/specops) -"wIw" = ( -/turf/simulated/floor/shuttle, -/area/shuttle/transport) +/turf/simulated/floor/plating, +/area/centcom/zone2) "wIz" = ( /obj/machinery/door/airlock/syndicate/public{ name = "Shower" @@ -49405,29 +49406,38 @@ /obj/structure/lattice, /turf/simulated/floor/shuttle/transparent_floor, /area/shuttle/syndicate) -"wIX" = ( -/obj/structure/table/glass, -/obj/item/toy/plushie/tabby_cat{ - desc = "Любимая игрушка-антистресс одной из представительниц вида таяран, когда-то работавшей главой персонала. Она была настолько занята выполнением своих обязанностей, что умерла голодной смертью прямо на своем рабочем месте. Не будьте как эта таяра. Кушайте регулярно."; - name = "Любимая игрушка бюрократов" - }, -/obj/item/reagent_containers/food/drinks/coffee{ - pixel_y = 9; - pixel_x = 6 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "wJl" = ( /turf/simulated/floor/shuttle/objective_check{ icon = 'icons/turf/floors.dmi'; icon_state = "darkred" }, /area/shuttle/escape) -"wJr" = ( -/obj/machinery/photocopier, -/obj/structure/window/reinforced, -/turf/simulated/floor/wood/fancy/light, +"wJm" = ( +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "navyblue" + }, +/area/centcom/supplypod/loading/ert) +"wJo" = ( +/obj/machinery/door_control/secure{ + id = "ERT_Drop"; + pixel_x = 26; + pixel_y = -8; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "navybluealt" + }, /area/centcom/specops) +"wJI" = ( +/obj/structure/table/glass, +/obj/item/book/manual/evaguide, +/obj/machinery/newscaster/security_unit{ + pixel_y = -32 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "wJV" = ( /turf/simulated/wall/shuttle/onlyselfsmooth, /area/shuttle/trade/sol) @@ -49439,6 +49449,14 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) +"wKn" = ( +/obj/effect/turf_decal/siding/white{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) "wKR" = ( /obj/machinery/embedded_controller/radio/airlock/airlock_controller{ frequency = 1331; @@ -49452,11 +49470,30 @@ }, /turf/simulated/floor/shuttle/plating/vox, /area/shuttle/vox) +"wKZ" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 4 + }, +/obj/structure/window/reinforced/tinted, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) "wLl" = ( /turf/simulated/floor/plasteel{ icon_state = "whiteblue" }, /area/shuttle/escape) +"wLp" = ( +/obj/structure/closet/secure_closet, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/centcom/zone3) +"wLt" = ( +/obj/machinery/vending/ntc/engineering, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "wLD" = ( /obj/structure/flora/junglebush, /obj/structure/flora/junglebush, @@ -49490,22 +49527,14 @@ icon_state = "freezerfloor" }, /area/syndicate_mothership) -"wLV" = ( -/obj/structure/table/glass, -/turf/simulated/floor/plasteel{ - icon_state = "darkyellow" +"wMU" = ( +/obj/machinery/door/airlock/centcom{ + name = "Office"; + opacity = 1; + req_access = list(666) }, +/turf/space, /area/centcom/specops) -"wMB" = ( -/obj/structure/railing{ - dir = 4; - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "rampbottom"; - tag = "icon-stage_stairs" - }, -/area/centcom/zone1) "wNd" = ( /obj/structure/statue/sandstone/assistant{ anchored = 1; @@ -49522,16 +49551,6 @@ icon_state = "dark" }, /area/syndicate_mothership/jail) -"wNe" = ( -/obj/effect/decal/warning_stripes/northeastsouth, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 1; - id_tag = "CC_Armory_GYGAX" - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" - }, -/area/centcom/specops) "wNi" = ( /obj/structure/chair/comfy/shuttle{ dir = 8 @@ -49577,25 +49596,48 @@ /obj/structure/grille, /turf/simulated/floor/carpet, /area/syndicate_mothership/control) -"wPe" = ( -/obj/effect/turf_decal/tile/neutral{ - color = "black"; - icon_state = "tile_full"; - layer = 9 +"wNL" = ( +/obj/machinery/vending/ntc/ert{ + req_access = list(114) }, -/obj/effect/step_trigger/teleporter{ - teleport_x = 175; - teleport_y = 62; - teleport_z = 1; - icon = 'icons/mob/screen_gen.dmi'; - icon_state = "x2" +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) +"wOy" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + dir = 2; + id_tag = "CC_supply_internal2"; + layer = 5; + locked = 1 }, /turf/simulated/floor/plasteel{ - color = "gray"; - dir = 8; - icon_state = "rampbottom" + dir = 4; + icon_state = "darkyellowalt" + }, +/area/centcom/supply) +"wOD" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/decal/warning_stripes/south, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 1; + do_not_delete_me = 1 + }, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 1; + id_tag = "CC_Armory_GYGAX" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" }, /area/centcom/specops) +"wPe" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkyellow" + }, +/area/centcom/supplypod/loading/one) "wPq" = ( /obj/structure/noticeboard{ pixel_x = -32 @@ -49613,35 +49655,12 @@ icon_state = "darkyellowalt" }, /area/syndicate_mothership/cargo) -"wPT" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/specops) "wQz" = ( /obj/structure/chair/comfy/red{ dir = 8 }, /turf/simulated/floor/carpet/black, /area/centcom/zone1) -"wQA" = ( -/obj/effect/decal/warning_stripes/north, -/obj/effect/decal/warning_stripes/south, -/obj/effect/turf_decal/caution/stand_clear, -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "ERT_armory_lvl3"; - name = "Armory level 3"; - layer = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkfull" - }, -/area/centcom/specops) "wQE" = ( /obj/structure/table, /obj/item/decorations/bouquets/random, @@ -49667,29 +49686,86 @@ icon_state = "navybluealtstrip" }, /area/centcom/specops) -"wSQ" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 2; - id_tag = "CC_Armory_LWAP" +"wRR" = ( +/obj/item/radio/intercom/specops{ + pixel_x = 32 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) -"wSS" = ( -/obj/item/book/manual/sop_command, -/obj/item/book/manual/sop_engineering, -/obj/item/book/manual/sop_general, -/obj/item/book/manual/sop_legal, -/obj/item/book/manual/sop_medical, -/obj/item/book/manual/sop_science, -/obj/item/book/manual/sop_security, -/obj/item/book/manual/sop_service, -/obj/item/book/manual/sop_supply, -/obj/item/book/manual/security_space_law/black, -/obj/structure/bookcase/random, -/turf/simulated/floor/carpet, + dir = 4; + icon_state = "darkredalt" + }, /area/centcom/jail) +"wRW" = ( +/obj/structure/reagent_dispensers/spacecleanertank{ + pixel_x = -32 + }, +/obj/structure/sink{ + dir = 1 + }, +/turf/simulated/floor/indestructible{ + dir = 10; + icon_state = "darkpurple" + }, +/area/centcom/specops) +"wSE" = ( +/obj/structure/closet{ + icon_closed = "syndicate1"; + icon_opened = "syndicate1open"; + icon_state = "syndicate1" + }, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/gun/projectile/automatic/proto, +/obj/item/gun/energy/gun/blueshield, +/obj/item/clothing/glasses/hud/security/sunglasses/aviators, +/obj/item/reagent_containers/food/snacks/candy/mre, +/obj/item/reagent_containers/hypospray/combat, +/obj/item/radio/headset/ert/alt{ + desc = null; + name = "SRT bowman headset" + }, +/obj/item/clothing/head/beret/centcom/officer/navy{ + desc = null; + name = "SRT beret" + }, +/obj/item/clothing/shoes/combat/swat{ + name = "SRT special shoes" + }, +/obj/item/clothing/gloves/combat{ + name = "Combat gloves" + }, +/obj/item/storage/belt/security/webbing/srt/full, +/obj/item/storage/backpack/satchel_blueshield/srt, +/obj/item/clothing/suit/storage/blueshield/srt, +/obj/item/clothing/suit/armor/bulletproof{ + name = "SRT bulletproof vest" + }, +/obj/item/shield/riot/tele, +/obj/item/suppressor, +/obj/item/CQC_manual, +/obj/item/implanter/mindshield/ert, +/obj/item/card/id/centcom{ + name = "Special Reaction Team Member card"; + rank = "Special Reaction Team Member"; + registered_name = "Special Reaction Team Member" + }, +/obj/item/storage/box/responseteam, +/obj/item/clothing/under/fluff/jay_turtleneck{ + desc = null; + name = "SRT uniform" + }, +/obj/item/gun/projectile/automatic/pistol/sp8/sp8ar, +/obj/item/ammo_box/magazine/sp8, +/obj/item/ammo_box/magazine/sp8, +/obj/item/implanter/dust, +/obj/item/clothing/accessory/holster, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "navyblue" + }, +/area/centcom/specops) "wSW" = ( /obj/effect/turf_decal{ dir = 9; @@ -49707,32 +49783,62 @@ }, /turf/simulated/floor/indestructible/asteroid, /area/syndicate_mothership/outside) -"wTK" = ( -/turf/simulated/floor/shuttle/objective_check{ - dir = 5; - icon = 'icons/turf/floors.dmi'; - icon_state = "darkred" +"wTk" = ( +/obj/structure/rack/holorack, +/obj/item/clothing/accessory/black{ + desc = null; + name = "Black tie" }, -/area/shuttle/escape) -"wUp" = ( -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9 +/obj/item/clothing/accessory/blue{ + desc = null; + name = "Blue tie" }, -/obj/effect/turf_decal/siding{ - color = "#444444" +/obj/item/clothing/glasses/hud/security/sunglasses/aviators, +/obj/item/clothing/glasses/hud/security/sunglasses/aviators, +/obj/item/clothing/accessory/blue{ + desc = null; + name = "Blue tie" }, -/turf/simulated/floor/carpet/black, +/obj/item/clothing/accessory/black{ + desc = null; + name = "Black tie" + }, +/obj/item/clothing/accessory/holster{ + desc = null; + name = "Shoulder holster" + }, +/obj/item/clothing/accessory/holster{ + desc = null; + name = "Shoulder holster" + }, +/obj/item/storage/backpack/satchel, +/obj/item/storage/backpack/satchel, +/obj/item/storage/backpack/satcheldeluxe, +/obj/item/storage/backpack/satcheldeluxe, +/obj/item/storage/belt/fannypack/black, +/obj/item/storage/belt/fannypack/black, +/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) -"wUt" = ( -/obj/item/radio/intercom/specops{ - pixel_x = 32 +"wTC" = ( +/obj/machinery/door/airlock/centcom{ + name = "Supply Pods Load 3"; + req_access = list(114) + }, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 2; + id_tag = "CC_Supply_Pods" }, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkredalt" + icon_state = "Dark" }, -/area/centcom/jail) +/area/centcom/supply) +"wTK" = ( +/turf/simulated/floor/shuttle/objective_check{ + dir = 5; + icon = 'icons/turf/floors.dmi'; + icon_state = "darkred" + }, +/area/shuttle/escape) "wUF" = ( /turf/simulated/floor/wood, /area/centcom/zone1) @@ -49810,19 +49916,6 @@ icon_state = "rampbottom" }, /area/syndicate_mothership) -"wVY" = ( -/obj/structure/bookcase, -/obj/item/book/manual/sop_command, -/obj/item/book/manual/sop_engineering, -/obj/item/book/manual/sop_general, -/obj/item/book/manual/sop_legal, -/obj/item/book/manual/sop_medical, -/obj/item/book/manual/sop_science, -/obj/item/book/manual/sop_security, -/obj/item/book/manual/sop_service, -/obj/item/book/manual/sop_supply, -/turf/simulated/floor/carpet, -/area/centcom/jail) "wWa" = ( /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; @@ -49852,37 +49945,14 @@ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' }, /area/shuttle/assault_pod) -"wWk" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - req_access = list(114) - }, -/obj/item/clothing/suit/judgerobe{ - name = "Supreme judge's robe" - }, -/obj/item/card/id/centcom{ - icon_state = "deathsquad"; - name = "Supreme Judge ID card"; - pixel_x = -3; - pixel_y = -3; - registered_name = "Supreme Judge" - }, -/obj/item/clothing/head/powdered_wig{ - desc = null; - name = "Supreme judge wig" - }, -/obj/item/clothing/under/suit_jacket/really_black{ - name = "Supreme judge suit" - }, -/obj/item/clothing/shoes/centcom{ - desc = null; - name = "Dress shoes" +"wWh" = ( +/obj/effect/decal/warning_stripes/white/hollow, +/obj/machinery/vending/nta/ertarmory/yellow{ + req_access = list(104,109) }, -/obj/item/clothing/gloves/color/white{ - desc = null; - name = "Supreme judge gloves" +/turf/simulated/floor/plasteel{ + icon_state = "darkyellowfull" }, -/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "wWp" = ( /obj/structure/chair/office/light, @@ -49895,56 +49965,15 @@ icon_state = "darkyellowcornersalt" }, /area/syndicate_mothership/cargo) -"wWA" = ( -/obj/structure/sign/poster/official/random{ - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkbluealt" - }, -/area/centcom/zone2) -"wWT" = ( -/obj/structure/rack/holorack, -/obj/item/clothing/suit/armor/heavy, -/obj/item/clothing/suit/armor/heavy, -/obj/item/clothing/suit/armor/heavy, -/obj/item/clothing/suit/armor/heavy, -/obj/item/clothing/suit/armor/heavy, -/obj/item/clothing/suit/armor/heavy, -/obj/item/clothing/suit/armor/heavy, -/obj/item/clothing/suit/armor/heavy, -/obj/item/clothing/suit/armor/heavy, -/obj/item/clothing/suit/armor/heavy, -/obj/item/clothing/shoes/combat/swat, -/obj/item/clothing/shoes/combat/swat, -/obj/item/clothing/shoes/combat/swat, -/obj/item/clothing/shoes/combat/swat, -/obj/item/clothing/shoes/combat/swat, -/obj/item/clothing/shoes/combat/swat, -/obj/item/clothing/shoes/combat/swat, -/obj/item/clothing/shoes/combat/swat, -/obj/item/clothing/shoes/combat/swat, -/obj/item/clothing/shoes/combat/swat, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9 - }, -/obj/structure/window/reinforced, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"wWF" = ( +/obj/structure/chair/comfy/beige{ + dir = 4; + layer = 4; + pixel_y = -2 }, -/area/centcom/supply) +/obj/structure/railing, +/turf/simulated/floor/carpet/black, +/area/centcom/bridge) "wWV" = ( /obj/item/toy/nuke, /obj/structure/table/wood/poker, @@ -49963,6 +49992,13 @@ }, /turf/simulated/floor/shuttle/plating/vox, /area/shuttle/vox) +"wXd" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/floor/shuttle, +/area/shuttle/pod_4) "wXg" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/wood{ @@ -49993,20 +50029,20 @@ icon_state = "plastitanium" }, /area/shuttle/syndicate) -"wXu" = ( -/turf/simulated/floor/indestructible{ - dir = 5; - icon_state = "darkgreynavyblue" +"wXo" = ( +/obj/structure/window/reinforced{ + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 4 }, -/area/centcom/specops) -"wXK" = ( /obj/effect/turf_decal/siding/white{ - dir = 8 + dir = 6 }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/evac) +/area/centcom/jail) "wXY" = ( /obj/structure/window/reinforced{ dir = 1 @@ -50018,31 +50054,29 @@ icon_state = "grimy" }, /area/syndicate_mothership) -"wYk" = ( -/obj/effect/decal/warning_stripes/white/hollow, -/obj/machinery/vending/nta/ertarmory/medical{ - dir = 4; - req_access = list(103,104,109) - }, -/obj/effect/decal/warning_stripes/white/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "wYx" = ( /turf/simulated/floor/plasteel{ dir = 4; icon_state = "vault" }, /area/centcom/specops) -"wZB" = ( -/obj/effect/decal/warning_stripes/west, -/turf/simulated/wall/indestructible/fakeglass, -/area/centcom/zone3) -"wZK" = ( +"wZz" = ( +/obj/structure/window/reinforced, +/obj/machinery/light, +/obj/effect/turf_decal/siding/white{ + dir = 10 + }, /turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "navybluealt" + icon_state = "dark" + }, +/area/centcom/evac) +"wZH" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/structure/sign/restroom{ + pixel_x = 32 + }, +/turf/simulated/floor/wood{ + icon_state = "light-fancy-wood" }, /area/centcom/specops) "wZL" = ( @@ -50079,6 +50113,16 @@ icon_state = "freezerfloor" }, /area/syndicate_mothership) +"xac" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkblue" + }, +/area/centcom/zone1) "xak" = ( /obj/machinery/light{ dir = 1 @@ -50087,6 +50131,10 @@ icon_state = "floor4" }, /area/shuttle/syndicate) +"xap" = ( +/obj/item/flag/nt, +/turf/simulated/floor/wood, +/area/centcom/zone3) "xaq" = ( /obj/structure/mirror{ pixel_x = 30 @@ -50135,23 +50183,41 @@ /obj/structure/flora/junglebush/b, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"xaL" = ( -/obj/structure/rack, -/obj/item/ammo_box/magazine/m556, -/obj/item/ammo_box/magazine/m556, -/obj/item/ammo_box/magazine/m556, -/obj/item/ammo_box/magazine/m556, -/obj/item/ammo_box/magazine/m556, -/obj/item/ammo_box/magazine/m556, -/obj/item/ammo_box/magazine/m556, -/obj/item/ammo_box/magazine/m556, -/obj/item/ammo_box/magazine/m556, -/obj/item/ammo_box/magazine/m556, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +"xaJ" = ( +/obj/machinery/door/airlock/hatch{ + drain_act_protected = 1; + frequency = 1331; + id_tag = "ninja_outer"; + name = "Ship External Access" }, -/area/centcom/specops) +/obj/docking_port/mobile{ + dheight = 2; + dir = 2; + dwidth = 4; + height = 10; + id = "ombra"; + name = "Spider Clan Ombra"; + port_direction = 2; + preferred_direction = 2; + roundstart_move = "ombra_home"; + width = 21 + }, +/obj/structure/fans/tiny/invisible, +/obj/docking_port/stationary{ + area_type = /area/ninja/outside; + dheight = 2; + dir = 2; + dwidth = 4; + height = 10; + id = "ombra_home"; + name = "Spider Clan Facility"; + turf_type = /turf/simulated/floor/indestructible/snow; + width = 21 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) "xaN" = ( /obj/effect/turf_decal{ do_not_delete_me = 1; @@ -50186,18 +50252,6 @@ icon_state = "grimy" }, /area/centcom/jail) -"xbu" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/machinery/recharger/wallcharger{ - pixel_x = 4; - pixel_y = -32 - }, -/turf/simulated/floor/shuttle{ - icon_state = "floor4" - }, -/area/shuttle/specops) "xbw" = ( /obj/machinery/vending/syndisnack, /turf/simulated/floor/wood{ @@ -50231,43 +50285,32 @@ icon_state = "dark" }, /area/centcom/evac) -"xbJ" = ( -/obj/structure/table/wood, -/obj/item/pizzabox/vegetable, -/obj/item/pizzabox/vegetable, -/obj/item/pizzabox/vegetable, -/obj/item/pizzabox/vegetable, -/obj/item/kitchen/knife, -/obj/structure/table/reinforced, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault"; - tag = "icon-vault (WEST)" - }, -/area/centcom/specops) -"xbP" = ( -/obj/item/storage/box/monkeycubes, -/obj/item/storage/box/monkeycubes, -/obj/item/storage/box/monkeycubes/farwacubes, -/obj/item/storage/box/monkeycubes/farwacubes, -/obj/item/storage/box/monkeycubes/neaeracubes, -/obj/item/storage/box/monkeycubes/neaeracubes, -/obj/item/storage/box/monkeycubes/stokcubes, -/obj/item/storage/box/monkeycubes/stokcubes, -/obj/item/storage/box/monkeycubes/wolpincubes, -/obj/item/storage/box/monkeycubes/wolpincubes, -/obj/structure/sink{ - dir = 1 +"xbV" = ( +/obj/docking_port/mobile{ + dwidth = 8; + height = 22; + id = "syndicate"; + name = "syndicate shuttle"; + port_direction = 2; + roundstart_move = "syndicate_away"; + width = 18 }, -/obj/structure/table/reinforced, -/obj/structure/sign/poster/official/healthy{ - pixel_y = -32 +/obj/structure/lattice/catwalk, +/obj/docking_port/stationary{ + area_type = /area/syndicate_mothership; + dwidth = 8; + height = 22; + id = "syndicate_away"; + name = "syndicate base"; + turf_type = /turf/simulated/floor/indestructible/plating; + width = 18 }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkbluealt" +/turf/simulated/floor/shuttle/transparent_floor{ + dir = 4; + icon = 'icons/turf/shuttle/misc.dmi'; + icon_state = "tube" }, -/area/centcom/specops) +/area/shuttle/syndicate) "xca" = ( /obj/effect/turf_decal{ do_not_delete_me = 1; @@ -50312,6 +50355,28 @@ icon_state = "plastitanium_red" }, /area/shuttle/syndicate) +"xcV" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/airlock/gold/glass{ + frequency = 2000; + hackable = 0; + id_tag = "CC-OP4-Ext"; + locked = 1; + name = "Zone 3" + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 2000; + master_tag = "CC-OP4"; + name = "CC-OP4-EXT"; + pixel_y = 24; + req_access = list(109); + wires = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "xdH" = ( /obj/machinery/vending/syndicigs, /obj/machinery/light/small{ @@ -50341,32 +50406,21 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) -"xec" = ( -/obj/structure/table/wood, -/obj/item/radio/intercom, -/obj/item/megaphone, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 +"xea" = ( +/obj/effect/turf_decal/stripes/line{ + icon = 'icons/turf/floors.dmi'; + icon_state = "siding8" }, -/turf/simulated/floor/carpet, -/area/centcom/zone3) -"xed" = ( -/obj/structure/chair/comfy/red{ - color = "#FFFFFF"; - dir = 4 +/obj/effect/turf_decal/tile/neutral{ + alpha = 75; + color = "black"; + icon_state = "tile_full" }, -/turf/simulated/floor/carpet/cyan, -/area/centcom/zone2) -"xeK" = ( -/obj/machinery/vending/snack, -/obj/machinery/light, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault"; - tag = "icon-vault (WEST)" + dir = 1; + icon_state = "rampbottom" }, -/area/centcom/specops) +/area/centcom/supply) "xeR" = ( /obj/machinery/door/airlock/centcom{ name = "Emergency Response Team"; @@ -50387,6 +50441,17 @@ underlay_floor_icon_state = "floor13" }, /area/shuttle/ninja) +"xfD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "xfI" = ( /obj/effect/decal/nanotrasen_logo, /turf/simulated/floor/plasteel{ @@ -50406,31 +50471,22 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) -"xfP" = ( -/obj/structure/table/glass, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 1 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) -"xfU" = ( -/obj/effect/decal/warning_stripes/west, -/obj/machinery/door/window/brigdoor{ - base_state = "rightsecure"; - dir = 8; - icon_state = "rightsecure"; - name = "CentComm Chemical lab" +"xgh" = ( +/obj/machinery/mass_driver{ + dir = 4; + id_tag = "ASSAULT1"; + name = "gravpult" }, -/turf/simulated/floor/engine, -/area/centcom/specops) -"xga" = ( -/obj/machinery/computer/account_database{ - name = "Admin Accounts Database" +/obj/effect/turf_decal/loading_area/white{ + dir = 4 }, -/obj/item/radio/intercom/specops{ - pixel_x = 32 +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, +/area/centcom/supply) +"xgt" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/structure/window/reinforced, /turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "xgF" = ( @@ -50444,12 +50500,26 @@ icon_state = "floor4" }, /area/shuttle/syndicate) -"xhc" = ( -/obj/structure/table, -/obj/structure/bedsheetbin, -/turf/simulated/floor/wood{ - icon_state = "fancy-wood-oak" - }, +"xgK" = ( +/obj/structure/noticeboard{ + pixel_y = 30 + }, +/obj/item/paper{ + info = "Уволить клоуна." + }, +/obj/item/paper{ + info = "Переговорить с командованием о трёхзначных числах" + }, +/obj/structure/chair/sofa/corp/right, +/obj/item/toy/plushie/red_fox, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) +"xhc" = ( +/obj/structure/table, +/obj/structure/bedsheetbin, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, /area/syndicate_mothership) "xhf" = ( /obj/machinery/door/airlock/hatch{ @@ -50476,6 +50546,13 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) +"xhn" = ( +/obj/structure/filingcabinet/employment, +/obj/item/radio/intercom/specops{ + pixel_y = 32 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) "xho" = ( /turf/simulated/wall/indestructible/iron, /area/syndicate_mothership/jail) @@ -50496,14 +50573,6 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"xhK" = ( -/obj/structure/table, -/obj/item/storage/lockbox/mindshield, -/turf/simulated/floor/shuttle{ - icon = 'icons/turf/floors.dmi'; - icon_state = "dark" - }, -/area/shuttle/administration) "xhN" = ( /turf/simulated/floor/plasteel{ icon_state = "darkyellowalt" @@ -50514,10 +50583,33 @@ icon_state = "floor13" }, /area/shuttle/ninja) -"xhX" = ( -/obj/effect/decal/warning_stripes/south, -/turf/simulated/wall/indestructible/fakeglass, -/area/centcom/specops) +"xhT" = ( +/obj/machinery/computer/med_data, +/obj/structure/railing{ + layer = 4.3; + pixel_y = 32 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkbluefull" + }, +/area/centcom/bridge) +"xie" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/item/radio/intercom/specops{ + pixel_x = 32 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor4" + }, +/area/shuttle/specops) +"xig" = ( +/turf/simulated/floor/shuttle/transparent_floor, +/area/shuttle/administration) "xil" = ( /obj/structure/chair/comfy/shuttle/dark{ dir = 4 @@ -50531,6 +50623,12 @@ icon_state = "plastitanium" }, /area/shuttle/syndicate) +"xin" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkgreen" + }, +/area/centcom/specops) "xir" = ( /obj/effect/turf_decal/number/number_3{ dir = 8; @@ -50546,19 +50644,6 @@ icon_state = "darkyellowfull" }, /area/syndicate_mothership/cargo) -"xix" = ( -/obj/machinery/door_control/secure{ - id = "CC_Armory_PDW"; - name = "PDW-9"; - pixel_x = 24; - pixel_y = 24; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkgreencorners"; - dir = 1 - }, -/area/centcom/specops) "xiW" = ( /obj/effect/turf_decal{ do_not_delete_me = 1; @@ -50570,18 +50655,6 @@ icon_state = "plastitanium" }, /area/shuttle/syndicate) -"xiX" = ( -/obj/docking_port/stationary{ - dir = 4; - dwidth = 2; - height = 6; - id = "pod3_away"; - name = "recovery ship bay 3"; - turf_type = /turf/simulated/floor/plating/airless; - width = 5 - }, -/turf/simulated/floor/plating/airless, -/area/space) "xjg" = ( /obj/effect/turf_decal{ do_not_delete_me = 1; @@ -50603,37 +50676,6 @@ icon_state = "darkfull" }, /area/syndicate_mothership) -"xjB" = ( -/obj/item/gun/projectile/shotgun/automatic/combat{ - pixel_x = 3; - pixel_y = 8 - }, -/obj/item/gun/projectile/shotgun/automatic/combat{ - pixel_x = 3; - pixel_y = -2 - }, -/obj/item/gun/projectile/shotgun/automatic/combat{ - pixel_x = 3; - pixel_y = 8 - }, -/obj/item/gun/projectile/shotgun/automatic/combat{ - pixel_x = 3; - pixel_y = 8 - }, -/obj/item/gun/projectile/shotgun/automatic/combat{ - pixel_x = 3; - pixel_y = -2 - }, -/obj/item/gun/projectile/shotgun/automatic/combat{ - pixel_x = 3; - pixel_y = -2 - }, -/obj/structure/rack/gunrack, -/obj/effect/decal/warning_stripes/blue/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/specops) "xjK" = ( /obj/structure/table/wood, /obj/item/grenade/smokebomb{ @@ -50651,6 +50693,22 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership/infteam) +"xjM" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/portable_atmospherics/canister/air{ + maximum_pressure = 50000 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 1; + id = "Air" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "xjR" = ( /obj/machinery/door/poddoor/shutters/preopen{ dir = 2; @@ -50680,22 +50738,31 @@ }, /turf/simulated/floor/shuttle/plating/vox, /area/shuttle/vox) -"xkj" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 1; - id_tag = "CC_Armory_IK60" +"xjZ" = ( +/obj/machinery/door/poddoor/shutters/invincible/fake_r_wall{ + dir = 2; + id_tag = "ERT_Quarantine" + }, +/obj/machinery/porta_turret/centcom/pulse{ + armor = list("melee"=90,"bullet"=90,"laser"=95,"energy"=95,"bomb"=80,"bio"=100,"rad"=100,"fire"=100,"acid"=100); + color = "#666666"; + damtype = "burn"; + health = 1250; + name = "Quarantine Pulse Turret"; + region_max = 12; + scan_range = 12; + shot_delay = 8 }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/specops) -"xkp" = ( -/obj/machinery/photocopier, -/obj/machinery/light{ - dir = 1 +"xkB" = ( +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkgreen" }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) +/area/centcom/specops) "xkM" = ( /obj/effect/turf_decal{ do_not_delete_me = 1; @@ -50762,24 +50829,6 @@ icon_state = "darkredaltstrip" }, /area/centcom/jail) -"xmf" = ( -/obj/machinery/door/poddoor/shutters/invincible{ - dir = 8; - id_tag = "CC_supply_external"; - layer = 5; - locked = 1 - }, -/obj/machinery/door_control/secure{ - id = "CC_supply_external"; - name = "Supply Internal Shutters"; - pixel_y = 24; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkyellowalt" - }, -/area/centcom/supply) "xmo" = ( /obj/machinery/light{ dir = 4 @@ -50802,6 +50851,19 @@ icon_state = "plastitanium" }, /area/shuttle/syndicate) +"xmI" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/bridge) +"xnh" = ( +/obj/structure/sign/securearea{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "navybluealt" + }, +/area/centcom/specops) "xnF" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, @@ -50820,55 +50882,13 @@ }, /area/syndicate_mothership/cargo) "xol" = ( -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 9 - }, -/obj/effect/mapping_helpers/light, -/turf/simulated/floor/beach/sand{ - icon = 'icons/turf/floors.dmi'; - icon_state = "asteroid" - }, -/area/centcom/evac) -"xom" = ( -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/door/airlock/centcom{ - name = "Gamma Armory"; - opacity = 1; - req_access = list(114) - }, -/obj/structure/fans/tiny, -/obj/machinery/door/poddoor/shutters/invincible{ - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - dir = 2; - id_tag = "gamma shuttle"; - layer = 5; - locked = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) -"xov" = ( -/obj/machinery/door/airlock/shuttle{ - id_tag = "s_docking_airlock"; - name = "Escape Pod Hatch" - }, -/obj/docking_port/mobile/pod{ - id = "pod4"; - name = "escape pod 4"; - roundstart_move = "pod4_home" +/obj/vehicle/ridden/motorcycle{ + dir = 8 }, -/obj/docking_port/stationary/transit{ - dwidth = 2; - height = 6; - id = "pod4_transit"; - name = "pod 4 in transit"; - pixel_y = -32; - turf_type = /turf/space/transit/north; - width = 5 +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_4) +/area/syndicate_mothership) "xoy" = ( /obj/machinery/computer/mech_bay_power_console, /turf/simulated/floor/plasteel{ @@ -50881,13 +50901,16 @@ icon_state = "darkfull" }, /area/syndicate_mothership) -"xoR" = ( -/obj/machinery/light/small{ - dir = 8 +"xoJ" = ( +/obj/machinery/door/poddoor/shutters/invincible{ + id_tag = "CC_ERT1" }, -/obj/structure/bookcase/random, -/turf/simulated/floor/carpet, -/area/centcom/zone1) +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "xoT" = ( /obj/machinery/vending/chinese/free, /obj/structure/curtain/black{ @@ -50897,15 +50920,35 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) -"xpi" = ( -/obj/machinery/recharge_station/ert, -/obj/machinery/light{ - dir = 8 +"xpj" = ( +/obj/effect/turf_decal/siding/white/corner{ + dir = 4 }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/jail) +"xpw" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/under/color/lightpurple, +/obj/item/clothing/under/color/purple, +/obj/item/storage/backpack/satchel, +/obj/item/storage/backpack/satchel, +/obj/item/clothing/head/wizard/red, +/obj/item/clothing/suit/wizrobe/red, +/obj/item/clothing/head/wizard, +/obj/item/clothing/suit/wizrobe, +/obj/item/clothing/shoes/sandal, +/obj/item/clothing/shoes/sandal, +/obj/machinery/light/small{ + brightness_range = 6; + dir = 1; + light_range = 8; + nightshift_light_range = 6; + throw_range = 6 + }, +/turf/simulated/floor/carpet/cyan, +/area/wizard_station) "xpx" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -50928,14 +50971,42 @@ icon_state = "floor4" }, /area/shuttle/syndicate) -"xpS" = ( -/obj/structure/window/reinforced{ +"xpQ" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; dir = 4 }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/turf/simulated/floor/glass, +/area/centcom/zone3) +"xqh" = ( +/obj/effect/turf_decal/tile/neutral{ + alpha = 180; + color = "black"; + icon_state = "tile_full"; + layer = 9 + }, +/turf/simulated/floor/plating, +/area/centcom/supply) +"xqp" = ( +/obj/machinery/door_control/secure{ + color = "#99ff99"; + id = "ERT_armory_lvl1"; + name = "ERT Armory Level 1"; + pixel_y = 32; + req_access = list(114) + }, /turf/simulated/floor/plasteel{ - icon_state = "darkfull" + dir = 6; + icon_state = "darkgreen" }, -/area/centcom/jail) +/area/centcom/specops) "xqq" = ( /obj/effect/decal/syndie_logo{ icon_state = "logo9" @@ -50963,17 +51034,23 @@ icon_state = "router_dir" }, /area/shuttle/syndicate) -"xqO" = ( -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkredalt" - }, -/area/centcom/specops) "xqR" = ( /turf/simulated/wall/shuttle/onlyselfsmooth{ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' }, /area/shuttle/syndicate) +"xqU" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/shuttle/engine/heater{ + dir = 4 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/pod_1) "xqZ" = ( /obj/machinery/computer/drone_control, /turf/simulated/floor/plasteel{ @@ -50988,14 +51065,6 @@ /obj/structure/window/reinforced, /turf/simulated/floor/wood, /area/centcom/zone1) -"xry" = ( -/obj/effect/turf_decal/siding/white/corner{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/jail) "xrD" = ( /obj/structure/chair/comfy/shuttle/dark{ dir = 4 @@ -51012,35 +51081,6 @@ icon_state = "plastitanium" }, /area/shuttle/syndicate) -"xrP" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/shuttle, -/area/shuttle/pod_2) -"xsd" = ( -/obj/structure/table/reinforced, -/obj/item/flashlight/lamp/green, -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9 - }, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/centcom/jail) -"xsn" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/bridge) "xss" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/wood{ @@ -51068,6 +51108,12 @@ icon_state = "router_dir" }, /area/shuttle/syndicate) +"xsU" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/centcom/specops) "xsY" = ( /obj/item/flag/nt, /obj/structure/window/reinforced, @@ -51083,15 +51129,6 @@ /mob/living/simple_animal/pig, /turf/simulated/floor/grass, /area/centcom/evac) -"xtU" = ( -/obj/machinery/vending/security/ert{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "navybluealt" - }, -/area/centcom/specops) "xuc" = ( /obj/structure/window/reinforced, /obj/item/flag/species/vox, @@ -51116,6 +51153,13 @@ icon_state = "neutral" }, /area/centcom/evac) +"xuv" = ( +/obj/structure/table/wood/fancy/royalblack, +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "dark" + }, +/area/shuttle/administration) "xuC" = ( /obj/structure/table, /obj/item/reagent_containers/syringe/charcoal, @@ -51145,12 +51189,13 @@ icon_state = "plastitanium" }, /area/shuttle/syndicate) -"xuN" = ( -/obj/structure/chair/comfy/red{ - dir = 1 +"xuT" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) +/turf/simulated/floor/glass/reinforced, +/area/centcom/evac) "xvr" = ( /obj/effect/decal/syndie_logo, /obj/effect/turf_decal/stripes/gold{ @@ -51166,10 +51211,6 @@ icon_state = "fancy-wood-cherry" }, /area/shuttle/trade/sol) -"xvv" = ( -/obj/structure/chair/comfy/red, -/turf/simulated/floor/carpet/black, -/area/centcom/specops) "xvJ" = ( /obj/effect/turf_decal{ do_not_delete_me = 1; @@ -51181,12 +51222,32 @@ icon_state = "plastitanium" }, /area/shuttle/syndicate) +"xvY" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4; + icon_state = "burst_l" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/pod_2) "xwb" = ( /obj/structure/closet/syndicate/nuclear, /turf/simulated/floor/shuttle{ icon_state = "floor4" }, /area/shuttle/syndicate) +"xwc" = ( +/obj/item/stack/nanopaste, +/obj/item/mmi, +/obj/item/stack/nanopaste, +/obj/structure/table/glass, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/centcom/specops) "xwm" = ( /turf/simulated/floor/shuttle{ icon_state = "floor4" @@ -51203,6 +51264,26 @@ icon_state = "plastitanium" }, /area/shuttle/syndicate) +"xws" = ( +/obj/machinery/door/airlock/centcom{ + id_tag = "adminshuttle"; + name = "Bridge"; + opacity = 1; + req_access = list(101) + }, +/turf/simulated/floor/wood, +/area/centcom/zone2) +"xwz" = ( +/obj/item/storage/fancy/cigarettes/dromedaryco{ + pixel_y = 6 + }, +/obj/item/lighter/zippo{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/structure/table/wood/fancy/royalblue, +/turf/simulated/floor/carpet/black, +/area/shuttle/administration) "xwH" = ( /obj/effect/turf_decal{ icon_state = "grass_edge_medium"; @@ -51225,6 +51306,12 @@ icon_state = "plastitanium" }, /area/shuttle/syndicate) +"xxa" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/simulated/floor/shuttle, +/area/shuttle/pod_1) "xxs" = ( /obj/structure/chair/comfy/shuttle/dark{ dir = 8 @@ -51265,82 +51352,39 @@ }, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) -"xxO" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/food/snacks/validsalad, +"xyc" = ( +/obj/machinery/vending/ntc/janitor, +/obj/machinery/light{ + dir = 8 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/supply) "xzd" = ( /obj/machinery/vending/cola/free, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/centcom/zone1) -"xzh" = ( -/obj/machinery/syndiepad/loadpad, -/turf/simulated/floor/carpet, -/area/syndicate_mothership/control) -"xzN" = ( -/obj/structure/closet{ - icon_closed = "syndicate1"; - icon_opened = "syndicate1open"; - icon_state = "syndicate1" - }, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/gun/projectile/automatic/proto, -/obj/item/gun/energy/gun/blueshield, -/obj/item/clothing/glasses/hud/security/sunglasses/aviators, -/obj/item/reagent_containers/food/snacks/candy/mre, -/obj/item/reagent_containers/hypospray/combat, -/obj/item/radio/headset/ert/alt{ - desc = null; - name = "SRT bowman headset" - }, -/obj/item/clothing/head/beret/centcom/officer/navy{ - desc = null; - name = "SRT beret" - }, -/obj/item/clothing/shoes/combat/swat{ - name = "SRT special shoes" - }, -/obj/item/clothing/gloves/combat{ - name = "Combat gloves" - }, -/obj/item/storage/belt/security/webbing/srt/full, -/obj/item/storage/backpack/satchel_blueshield/srt, -/obj/item/clothing/suit/storage/blueshield/srt, -/obj/item/clothing/suit/armor/bulletproof{ - name = "SRT bulletproof vest" - }, -/obj/item/shield/riot/tele, -/obj/item/suppressor, -/obj/item/CQC_manual, -/obj/item/implanter/mindshield/ert, -/obj/item/card/id/centcom{ - name = "Special Reaction Team Member card"; - rank = "Special Reaction Team Member"; - registered_name = "Special Reaction Team Member" +"xzg" = ( +/obj/machinery/mass_driver{ + dir = 4; + id_tag = "ASSAULT0"; + name = "gravpult" }, -/obj/item/storage/box/responseteam, -/obj/item/clothing/under/fluff/jay_turtleneck{ - desc = null; - name = "SRT uniform" +/obj/effect/turf_decal/loading_area/white{ + dir = 4 }, -/obj/item/gun/projectile/automatic/pistol/sp8/sp8ar, -/obj/item/ammo_box/magazine/sp8, -/obj/item/ammo_box/magazine/sp8, -/obj/item/implanter/dust, -/obj/item/clothing/accessory/holster, +/obj/effect/decal/warning_stripes/north, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "navyblue" + icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/supply) +"xzh" = ( +/obj/machinery/syndiepad/loadpad, +/turf/simulated/floor/carpet, +/area/syndicate_mothership/control) "xAd" = ( /obj/machinery/light/spot{ dir = 4 @@ -51381,25 +51425,68 @@ icon_state = "freezerfloor" }, /area/syndicate_mothership) -"xAZ" = ( -/obj/machinery/light, -/turf/simulated/floor/plasteel{ - icon_state = "darkredalt" - }, -/area/centcom/jail) -"xBl" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" +"xAt" = ( +/obj/structure/noticeboard{ + pixel_x = -32 }, -/area/syndicate_mothership) -"xBq" = ( +/obj/item/paper{ + info = "Переговорить с ОЦК по поводу пиццы с ананасами" + }, +/obj/structure/window/reinforced{ + layer = 2.9 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone2) +"xAy" = ( +/obj/effect/decal/warning_stripes/northeastsouth, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 1; + id_tag = "ERT_armory_lvl4"; + layer = 5; + name = "Armory level 4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkfull" + }, +/area/centcom/specops) +"xAD" = ( /obj/structure/table/glass, -/obj/machinery/photocopier/faxmachine/longrange{ - department = "Central Command" +/obj/item/flashlight/lamp/green, +/obj/item/stamp/centcom{ + pixel_x = -5; + pixel_y = -7 }, /turf/simulated/floor/carpet/cyan, /area/centcom/zone2) +"xAZ" = ( +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "darkredalt" + }, +/area/centcom/jail) +"xBe" = ( +/obj/structure/table/wood, +/obj/item/book/manual/security_space_law/black{ + pixel_x = -4 + }, +/obj/item/book/manual/security_space_law{ + pixel_x = 3 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/centcom/zone3) +"xBl" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/syndicate_mothership) "xBA" = ( /obj/structure/lattice, /turf/simulated/floor/shuttle/transparent_floor{ @@ -51431,20 +51518,6 @@ /obj/effect/landmark/syndicate_spawn, /turf/simulated/floor/carpet/black, /area/syndicate_mothership) -"xCc" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/turf/simulated/floor/carpet, -/area/centcom/zone3) -"xCh" = ( -/obj/effect/turf_decal/arrows/red{ - name = "Armory" - }, -/turf/simulated/floor/indestructible{ - icon_state = "darkgrey" - }, -/area/centcom/specops) "xCi" = ( /obj/machinery/porta_turret/syndicate, /obj/structure/lattice/catwalk, @@ -51457,6 +51530,33 @@ icon_state = "router_dir" }, /area/shuttle/syndicate) +"xCr" = ( +/obj/structure/bookcase, +/obj/item/paper{ + info = "
"; + name = "Главный строить мужик репорт" + }, +/turf/simulated/floor/plating, +/area/centcom/zone2) +"xCu" = ( +/obj/structure/sign/poster/official/nanotrasen_logo{ + icon = 'icons/obj/decals.dmi'; + icon_state = "ntsing_alt2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) +"xCK" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/pod_3) "xCM" = ( /turf/simulated/floor/carpet/black, /area/syndicate_mothership) @@ -51466,6 +51566,14 @@ icon_state = "white" }, /area/centcom/jail) +"xCR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/specops) "xCU" = ( /obj/structure/chair/comfy/shuttle/dark{ dir = 4 @@ -51479,13 +51587,17 @@ icon_state = "plastitanium" }, /area/shuttle/syndicate) -"xCZ" = ( -/obj/machinery/status_display{ - pixel_y = -32 +"xCW" = ( +/obj/machinery/photocopier, +/obj/structure/window/reinforced{ + dir = 4; + layer = 4.2 }, -/turf/simulated/floor/plasteel{ - icon_state = "navybluealt" +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 10 }, +/turf/simulated/floor/wood/fancy/light, /area/centcom/specops) "xDA" = ( /turf/simulated/wall/shuttle/nosmooth{ @@ -51510,11 +51622,9 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"xDT" = ( -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkyellow" - }, +"xEr" = ( +/obj/machinery/door/poddoor/impassable, +/turf/simulated/wall/indestructible/reinforced, /area/centcom/specops) "xEv" = ( /obj/effect/turf_decal/siding/wood{ @@ -51531,6 +51641,18 @@ icon_state = "dark" }, /area/centcom/evac) +"xEV" = ( +/obj/effect/turf_decal/siding/white{ + dir = 1; + pixel_y = 3 + }, +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/jail) "xEX" = ( /obj/effect/turf_decal/number/number_1{ dir = 8; @@ -51541,12 +51663,6 @@ icon_state = "plastitanium_red" }, /area/shuttle/syndicate) -"xEY" = ( -/obj/structure/chair/comfy/beige{ - dir = 1 - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/centcom/bridge) "xFI" = ( /obj/machinery/door/airlock/hatch{ aiControlDisabled = 1; @@ -51555,16 +51671,32 @@ }, /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) -"xFX" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 4 +"xFY" = ( +/obj/effect/decal/warning_stripes/north, +/obj/effect/decal/warning_stripes/south, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 1; + do_not_delete_me = 1 + }, +/obj/machinery/door/poddoor/shutters/invincible{ + dir = 1; + id_tag = "CC_Armory_Grenade" }, -/obj/effect/turf_decal/siding/white, /turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkblue" + icon_state = "darkfull" }, -/area/centcom/zone1) +/area/centcom/specops) +"xFZ" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 + }, +/turf/simulated/floor/glass/reinforced, +/area/centcom/specops) "xGb" = ( /turf/simulated/floor/wood{ icon_state = "fancy-wood-oak" @@ -51588,6 +51720,12 @@ name = "floor" }, /area/syndicate_mothership/outside) +"xGr" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredaltstrip" + }, +/area/centcom/specops) "xGH" = ( /turf/simulated/floor/plasteel{ dir = 5; @@ -51632,39 +51770,6 @@ icon_state = "dark" }, /area/shuttle/syndicate) -"xHb" = ( -/obj/item/gun/projectile/automatic/l6_saw{ - desc = "A heavily modified 5.56 light machine gun, designated 'M249 SAW'."; - name = "M249 SAW" - }, -/obj/item/gun/projectile/automatic/l6_saw{ - desc = "A heavily modified 5.56 light machine gun, designated 'M249 SAW'."; - name = "M249 SAW" - }, -/obj/item/gun/projectile/automatic/l6_saw{ - desc = "A heavily modified 5.56 light machine gun, designated 'M249 SAW'."; - name = "M249 SAW" - }, -/obj/item/gun/projectile/automatic/l6_saw{ - desc = "A heavily modified 5.56 light machine gun, designated 'M249 SAW'."; - name = "M249 SAW" - }, -/obj/item/gun/projectile/automatic/l6_saw{ - desc = "A heavily modified 5.56 light machine gun, designated 'M249 SAW'."; - name = "M249 SAW" - }, -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - armor = list("melee"=100,"bullet"=100,"laser"=100,"energy"=100,"bomb"=100,"bio"=100,"rad"=100,"fire"=100,"acid"=100); - layer = 2.9; - name = "LMG M249 SAW"; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "vault" - }, -/area/centcom/jail) "xHc" = ( /obj/structure/table, /obj/item/storage/fancy/cigarettes/cigpack_random, @@ -51678,6 +51783,14 @@ /obj/item/storage/box/matches, /turf/simulated/floor/wood, /area/centcom/zone1) +"xHl" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/filingcabinet/employment, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "xHG" = ( /obj/effect/turf_decal{ do_not_delete_me = 1; @@ -51689,6 +51802,21 @@ icon_state = "plastitanium" }, /area/shuttle/syndicate) +"xIi" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1; + icon_state = "heater3x3_side_inv"; + tag = "icon-heater (NORTH)" + }, +/obj/structure/shuttle/engine/platform{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/plasmareinforced{ + color = "#00f700" + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/ninja) "xIm" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -51705,13 +51833,6 @@ icon_state = "darkredaltstrip" }, /area/syndicate_mothership/jail) -"xIB" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 1; - tag = "icon-propulsion (NORTH)" - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/syndicate_sit) "xIM" = ( /obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/dirt, @@ -51719,19 +51840,6 @@ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) -"xIN" = ( -/obj/machinery/door_control/secure{ - id = "CC_Armory_SFG5"; - name = "SFG-5"; - pixel_x = 24; - pixel_y = -24; - req_access = list(114) - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkyellow" - }, -/area/centcom/specops) "xJf" = ( /turf/simulated/floor/shuttle{ icon = 'icons/turf/floors.dmi'; @@ -51757,6 +51865,16 @@ }, /turf/simulated/floor/carpet/royalblack, /area/syndicate_mothership/control) +"xJZ" = ( +/obj/structure/railing{ + dir = 8; + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/centcom/zone1) "xKz" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/effect/turf_decal/plaque{ @@ -51775,13 +51893,23 @@ icon_state = "plastitanium" }, /area/shuttle/syndicate) -"xKK" = ( -/obj/structure/chair, +"xKI" = ( +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "vault" + icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/jail) +"xKM" = ( +/obj/effect/baseturf_helper{ + baseturf = /turf/simulated/floor/indestructible/plating; + name = "plating baseturf editor" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/bridge) "xKO" = ( /obj/effect/turf_decal{ do_not_delete_me = 1; @@ -51807,6 +51935,19 @@ icon_state = "navybluealt" }, /area/syndicate_mothership/control) +"xLE" = ( +/obj/structure/dresser, +/obj/structure/mirror/magic{ + desc = null; + name = "mirror"; + pixel_x = -32 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "xLN" = ( /obj/machinery/door/window/brigdoor/westleft{ base_state = "rightsecure"; @@ -51828,13 +51969,6 @@ icon_state = "plastitanium" }, /area/shuttle/syndicate) -"xLO" = ( -/obj/effect/turf_decal/caution/stand_clear/red, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "navybluealtstrip" - }, -/area/centcom/specops) "xMz" = ( /obj/structure/window/reinforced{ dir = 4 @@ -51844,6 +51978,13 @@ icon_state = "grimy" }, /area/centcom/zone1) +"xMC" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "applebush" + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/wood/fancy/cherry, +/area/centcom/zone1) "xMH" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22"; @@ -51863,17 +52004,6 @@ /obj/structure/flora/junglebush/b, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) -"xNi" = ( -/obj/structure/table/wood/fancy/black, -/obj/item/paper_bin/nanotrasen{ - amount = 50; - pixel_x = 3; - pixel_y = 12 - }, -/obj/item/pen/multi/gold, -/obj/item/stamp/chameleon, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) "xNs" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/wood{ @@ -51896,6 +52026,15 @@ icon_state = "fancy-wood-oak-broken3" }, /area/syndicate_mothership) +"xNZ" = ( +/obj/structure/bed, +/obj/item/bedsheet/qm, +/obj/effect/mine/sound/bwoink{ + alpha = 0; + layer = 2.9 + }, +/turf/simulated/floor/carpet/black, +/area/centcom/zone1) "xOe" = ( /turf/simulated/floor/carpet/arcade, /area/centcom/specops) @@ -51905,13 +52044,6 @@ water_overlay_icon_state = null }, /area/syndicate_mothership/outside) -"xOk" = ( -/obj/structure/table/wood/fancy/black, -/obj/machinery/photocopier/faxmachine/longrange{ - department = "Central Command" - }, -/turf/simulated/floor/bluegrid, -/area/centcom/bridge) "xOo" = ( /obj/item/syndicatedetonator{ desc = "Радиус взрыва: 255x255x255"; @@ -51922,22 +52054,20 @@ icon_state = "darkfull" }, /area/syndicate_mothership/infteam) +"xOy" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "O2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/supply) "xPb" = ( /obj/effect/decal/cleanable/blood, /turf/simulated/floor/wood{ icon_state = "fancy-wood-oak" }, /area/syndicate_mothership) -"xPc" = ( -/obj/effect/decal/warning_stripes/white/hollow, -/obj/machinery/vending/nta/ertarmory/blue{ - req_access = list(104,109) - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "navybluefull" - }, -/area/centcom/specops) "xPf" = ( /obj/machinery/door/window/brigdoor{ dir = 8 @@ -51982,16 +52112,16 @@ icon_state = "darkfull" }, /area/syndicate_mothership/cargo) -"xQc" = ( -/obj/machinery/status_display{ - layer = 4; - pixel_y = -32 +"xQp" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 }, -/obj/effect/turf_decal/siding/white{ - dir = 1 +/obj/effect/turf_decal/siding/white, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkblue" }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) +/area/centcom/zone1) "xQr" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "applebush" @@ -52000,14 +52130,20 @@ icon_state = "dark" }, /area/centcom/evac) -"xQA" = ( -/obj/effect/turf_decal/siding/white{ - dir = 9 +"xQz" = ( +/obj/structure/chair/comfy/red{ + color = "#FFFFFF"; + dir = 4 }, +/turf/simulated/floor/carpet/cyan, +/area/centcom/zone2) +"xRh" = ( +/obj/item/flag/nt, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 1; + icon_state = "navybluealt" }, -/area/centcom/jail) +/area/centcom/specops) "xRi" = ( /obj/machinery/bodyscanner, /turf/simulated/floor/plasteel{ @@ -52015,44 +52151,66 @@ icon_state = "navybluealt" }, /area/syndicate_mothership/control) -"xRq" = ( -/obj/machinery/light{ - dir = 8 +"xRv" = ( +/obj/machinery/computer/communications{ + dir = 1 }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkredaltstrip" +/obj/effect/turf_decal/stripes/gold{ + dir = 6; + do_not_delete_me = 1 }, -/area/centcom/zone2) +/obj/machinery/light/small, +/turf/simulated/floor/carpet/royalblack, +/area/shuttle/administration) "xRz" = ( /obj/structure/table/wood/fancy/black, /obj/item/reagent_containers/food/drinks/cans/beer, /turf/simulated/floor/carpet/red, /area/centcom/zone1) -"xSt" = ( +"xRD" = ( +/obj/structure/grille, +/obj/structure/window/full/shuttle, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "adminshuttleshutters"; + name = "Blast Shutters" + }, +/turf/simulated/floor/plating, +/area/shuttle/administration) +"xRM" = ( /obj/item/flag/nt, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "navybluealt" + dir = 10; + icon_state = "neutral" }, -/area/centcom/specops) +/area/centcom/evac) +"xSg" = ( +/obj/structure/falsewall/reinforced{ + layer = 5; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/zone2) "xSv" = ( /obj/structure/curtain/open/shower/security, /turf/simulated/floor/wood, /area/centcom/zone1) -"xSW" = ( +"xTc" = ( +/obj/structure/urinal{ + pixel_y = 32 + }, /obj/machinery/door_control/secure{ - color = "#9999ff"; - id = "ERT_armory_lvl2"; - name = "ERT Armory Level 2"; - pixel_y = -32; - req_access = list(114) + id = "CC_toilet_unit1"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 }, /turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "navyblue" + icon_state = "white" }, -/area/centcom/specops) +/area/centcom/evac) "xTf" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/light/small{ @@ -52068,12 +52226,29 @@ }, /turf/simulated/floor/wood, /area/centcom/zone1) -"xTu" = ( -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkredaltstrip" +"xTM" = ( +/obj/structure/table/wood, +/obj/item/storage/lockbox/mindshield, +/obj/item/storage/lockbox/mindshield, +/obj/item/storage/lockbox/mindshield, +/obj/item/door_remote/centcomm, +/obj/item/storage/box/permits, +/obj/item/megaphone{ + pixel_x = -5; + pixel_y = 7 }, -/area/centcom/zone3) +/obj/item/camera_bug/ert{ + pixel_y = 10 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) "xTN" = ( /obj/machinery/door/poddoor/shutters/preopen{ dir = 2; @@ -52084,35 +52259,26 @@ /obj/structure/window/full/shuttle/gray, /turf/simulated/floor/shuttle/plating/vox, /area/shuttle/vox) -"xTT" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/item/reagent_containers/food/snacks/meat, -/obj/machinery/defibrillator_mount/loaded{ - pixel_x = -30 - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "whiteblue" - }, -/area/centcom/specops) -"xUg" = ( -/turf/simulated/wall/shuttle/nosmooth/interior{ - dir = 6; - icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi'; - icon_state = "gray_walls_corners"; - underlay_floor_icon = 'icons/turf/shuttle/floors.dmi'; - underlay_floor_icon_state = "floor4" +"xTS" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 }, -/area/shuttle/syndicate) +/turf/simulated/floor/glass/reinforced, +/area/centcom/evac) "xUq" = ( /obj/structure/flora/grass/jungle, /obj/structure/flora/grass/jungle, /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) +"xUz" = ( +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault"; + tag = "icon-vault (WEST)" + }, +/area/centcom/specops) "xUV" = ( /obj/effect/turf_decal/number/number_9{ dir = 4 @@ -52122,165 +52288,72 @@ icon_state = "darkredaltstrip" }, /area/centcom/jail) -"xVj" = ( -/obj/structure/chair/office/dark{ - dir = 4 - }, -/obj/structure/window/reinforced/tinted{ - dir = 1; - pixel_y = 6 +"xVi" = ( +/obj/structure/chair/comfy/beige{ + dir = 8; + layer = 5; + pixel_y = -2 }, /turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"xVk" = ( -/obj/structure/plasticflaps/mining, -/obj/machinery/door/poddoor{ - id_tag = "CC_supply_space"; - locked = 2; - name = "Supply Blastdoor" - }, -/obj/machinery/conveyor{ - id = "CC_crate"; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/centcom/supply) +/area/centcom/zone3) "xVm" = ( /turf/simulated/floor/shuttle/objective_check/vox, /area/shuttle/vox) "xVn" = ( /turf/simulated/wall/indestructible, /area/start) -"xVo" = ( -/obj/structure/window/reinforced{ - dir = 1 +"xVY" = ( +/obj/machinery/light/small, +/turf/simulated/floor/shuttle{ + icon_state = "vfloor" }, -/obj/structure/shuttle/engine/heater{ - icon_state = "heater2x2"; - tag = "icon-heater (NORTH)" +/area/shuttle/administration) +"xWp" = ( +/obj/effect/turf_decal/siding/wideplating{ + color = "#55391A" }, -/obj/structure/shuttle/engine/platform{ - layer = 2.9 +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 }, -/turf/simulated/floor/plating/airless, -/area/shuttle/vox) -"xVI" = ( -/obj/structure/bookcase/manuals, -/obj/item/book/manual/sop_supply, -/obj/item/book/manual/nuclear, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) -"xVM" = ( -/obj/effect/turf_decal/stripes/black{ - dir = 10; - do_not_delete_me = 1 +/obj/effect/turf_decal/siding/wideplating/corner{ + color = "#55391A" }, -/turf/simulated/floor/shuttle, -/area/shuttle/administration) -"xWg" = ( -/obj/structure/closet{ - icon_closed = "syndicate1"; - icon_opened = "syndicate1open"; - icon_state = "syndicate1" - }, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/ammo_box/magazine/smgm9mm, -/obj/item/gun/projectile/automatic/proto, -/obj/item/gun/energy/gun/blueshield, -/obj/item/clothing/glasses/hud/security/sunglasses/aviators, -/obj/item/reagent_containers/food/snacks/candy/mre, -/obj/item/reagent_containers/hypospray/combat, -/obj/item/radio/headset/ert/alt{ - desc = null; - name = "SRT bowman headset" - }, -/obj/item/clothing/head/beret/centcom/officer/navy{ - desc = null; - name = "SRT beret" - }, -/obj/item/clothing/shoes/combat/swat{ - name = "SRT special shoes" - }, -/obj/item/clothing/gloves/combat{ - name = "Combat gloves" - }, -/obj/item/storage/belt/security/webbing/srt/full, -/obj/item/storage/backpack/satchel_blueshield/srt, -/obj/item/clothing/suit/storage/blueshield/srt, -/obj/item/clothing/suit/armor/bulletproof{ - name = "SRT bulletproof vest" - }, -/obj/item/shield/riot/tele, -/obj/item/suppressor, -/obj/item/CQC_manual, -/obj/item/implanter/mindshield/ert, -/obj/item/card/id/centcom{ - name = "Special Reaction Team Member card"; - rank = "Special Reaction Team Member"; - registered_name = "Special Reaction Team Member" - }, -/obj/item/storage/box/responseteam, -/obj/item/clothing/under/fluff/jay_turtleneck{ - desc = null; - name = "SRT uniform" - }, -/obj/item/gun/projectile/automatic/pistol/sp8/sp8ar, -/obj/item/ammo_box/magazine/sp8, -/obj/item/ammo_box/magazine/sp8, -/obj/item/implanter/dust, -/obj/item/clothing/accessory/holster, /turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "navyblue" - }, -/area/centcom/specops) -"xWp" = ( -/obj/effect/turf_decal/siding/wideplating{ - color = "#55391A" - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 + icon_state = "grimy" }, -/obj/effect/turf_decal/siding/wideplating/corner{ - color = "#55391A" +/area/syndicate_mothership) +"xXn" = ( +/obj/structure/chair/stool/bar, +/turf/simulated/floor/carpet/red, +/area/shuttle/administration) +"xXq" = ( +/obj/machinery/door_control/secure{ + id = "CC_Armory_LWAP"; + name = "L.W.A.P. Sniper Rifle"; + pixel_x = 24; + pixel_y = 24; + req_access = list(114) }, /turf/simulated/floor/plasteel{ - icon_state = "grimy" + dir = 5; + icon_state = "darkred" }, -/area/syndicate_mothership) +/area/centcom/specops) "xXv" = ( /turf/simulated/wall/shuttle{ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' }, /area/shuttle/vox) -"xYk" = ( -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/external, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 7; - id = "funeral"; - name = "Funeral shuttle"; - roundstart_move = "graveyard_dock"; - width = 10 +"xYl" = ( +/obj/machinery/vending/snack/free, +/obj/machinery/light{ + dir = 1 }, -/obj/docking_port/stationary/transit{ - dir = 8; - dwidth = 2; - height = 7; - id = "funeral_transit"; - name = "Funeral In transit"; - pixel_x = 32; - turf_type = /turf/space/transit/north; - width = 10 +/turf/simulated/floor/shuttle{ + icon = 'icons/turf/floors.dmi'; + icon_state = "dark" }, -/turf/simulated/floor/shuttle/plating, -/area/shuttle/funeral) +/area/shuttle/administration) "xYo" = ( /obj/effect/turf_decal/box/corners{ dir = 4 @@ -52312,15 +52385,10 @@ "xZc" = ( /turf/simulated/floor/shuttle/transparent_floor, /area/shuttle/vox) -"xZz" = ( -/obj/structure/rack, -/obj/item/reagent_containers/applicator/dual, -/obj/item/reagent_containers/applicator/dual, -/obj/item/reagent_containers/applicator/dual, -/obj/item/clothing/accessory/stethoscope, +"xZt" = ( /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkbluecornersalt" + dir = 6; + icon_state = "darkyellowaltstrip" }, /area/centcom/specops) "yaa" = ( @@ -52385,6 +52453,15 @@ icon_state = "dark" }, /area/centcom/zone3) +"yaB" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) "yaI" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/brigdoor{ @@ -52487,24 +52564,60 @@ icon_state = "darkfull" }, /area/syndicate_mothership) -"yds" = ( -/turf/space/transit/east, -/area/space) -"yeq" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-30"; - tag = "icon-plant-30" +"ydm" = ( +/obj/effect/turf_decal/stripes/black{ + dir = 9; + do_not_delete_me = 1 }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) -"yfP" = ( -/obj/structure/bookcase, -/turf/simulated/floor/plating, -/area/centcom/zone2) -"yfS" = ( -/obj/structure/chair/comfy/shuttle, /turf/simulated/floor/shuttle, -/area/shuttle/nt_droppod) +/area/shuttle/administration) +"ydH" = ( +/turf/simulated/floor/indestructible{ + dir = 4; + icon_state = "darkgreynavyblue" + }, +/area/centcom/specops) +"yef" = ( +/obj/machinery/computer/message_monitor, +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/turf/simulated/floor/wood/fancy/light, +/area/centcom/specops) +"yeh" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellowalt" + }, +/area/centcom/supply) +"yep" = ( +/obj/machinery/door_control/secure{ + id = "CC_Armory_AEG"; + name = "advanced energy gun"; + pixel_x = -24; + pixel_y = 24; + req_access = list(114) + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkredcorners" + }, +/area/centcom/specops) +"yeO" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/structure/sign/poster/official/nanotrasen_logo{ + icon = 'icons/obj/decals.dmi'; + icon_state = "nanotrasen_sign4"; + pixel_x = -16; + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/centcom/specops) "yfV" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/brigdoor{ @@ -52526,13 +52639,20 @@ icon_state = "darkfull" }, /area/syndicate_mothership) -"yhf" = ( -/obj/machinery/computer/camera_advanced, -/obj/machinery/light/small{ +"ygT" = ( +/obj/effect/turf_decal/siding/white/corner{ dir = 1 }, -/turf/simulated/floor/wood/fancy/light, -/area/centcom/specops) +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/centcom/evac) +"yhG" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "navyblue" + }, +/area/centcom/supplypod/loading/ert) "yhH" = ( /obj/machinery/light/small, /turf/simulated/floor/carpet, @@ -52546,15 +52666,6 @@ icon_state = "darkred" }, /area/syndicate_mothership/elite_squad) -"yim" = ( -/obj/machinery/newscaster{ - pixel_x = -32 - }, -/turf/simulated/floor/indestructible{ - dir = 8; - icon_state = "darkgreynavyblue" - }, -/area/centcom/specops) "yin" = ( /obj/structure/window/reinforced{ dir = 1 @@ -52569,19 +52680,6 @@ icon = 'icons/turf/walls/shuttle/gray_shuttle_wall.dmi' }, /area/shuttle/syndicate) -"yiX" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/shuttle/engine/heater{ - icon_state = "heater2x2_side"; - tag = "icon-heater (NORTH)" - }, -/obj/structure/shuttle/engine/platform{ - layer = 2.9 - }, -/turf/simulated/floor/plating/airless, -/area/shuttle/vox) "yjh" = ( /obj/effect/baseturf_helper{ baseturf = /turf/simulated/floor/indestructible/asteroid; @@ -52620,17 +52718,6 @@ }, /turf/simulated/floor/carpet/red, /area/ussp_centcom/secretariat) -"yjI" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/machinery/status_display/supply_display{ - pixel_x = -32 - }, -/obj/structure/window/reinforced/tinted{ - dir = 1; - pixel_y = 6 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/zone2) "yjN" = ( /obj/machinery/door/airlock/shuttle{ aiControlDisabled = 1; @@ -52643,6 +52730,10 @@ icon_state = "darkreddarkfull" }, /area/shuttle/escape) +"ykf" = ( +/obj/machinery/computer/message_monitor, +/turf/simulated/floor/bluegrid, +/area/centcom/bridge) "ykg" = ( /obj/structure/table/wood/fancy/black, /obj/item/stack/sheet/mineral/gold{ @@ -52672,12 +52763,6 @@ icon_state = "dark" }, /area/syndicate_mothership/outside) -"ykz" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/simulated/wall/indestructible/reinforced, -/area/centcom/zone3) "ykF" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/wall/indestructible/fakeglass{ @@ -52685,33 +52770,16 @@ icon = 'icons/turf/walls/fake_plastitanium_glass.dmi' }, /area/syndicate_mothership) +"ykH" = ( +/obj/structure/shuttle/engine/platform{ + dir = 8; + layer = 2.9 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/administration) "ykS" = ( /turf/simulated/floor/indestructible/snow, /area/ninja/outside) -"ylh" = ( -/obj/structure/table/glass, -/obj/item/folder/blue{ - pixel_x = 5; - pixel_y = -5 - }, -/obj/item/folder/red{ - pixel_x = -5; - pixel_y = -5 - }, -/obj/item/folder/white{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/folder/yellow{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/effect/turf_decal/siding{ - color = "#444444"; - dir = 5 - }, -/turf/simulated/floor/carpet/black, -/area/centcom/bridge) "yls" = ( /obj/structure/table/wood, /obj/structure/window/reinforced, @@ -52738,15 +52806,14 @@ icon_state = "dark" }, /area/syndicate_mothership/cargo) -"ylA" = ( -/obj/structure/railing{ +"ylC" = ( +/obj/structure/chair/sofa/corp/left{ dir = 1 }, /turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "navybluealt" + icon_state = "dark" }, -/area/centcom/specops) +/area/centcom/zone3) "ylE" = ( /obj/item/gun/rocketlauncher, /obj/item/gun/rocketlauncher, @@ -52788,146 +52855,143 @@ water_overlay_icon_state = null }, /area/syndicate_mothership/outside) -"ymc" = ( -/turf/space/transit/south, -/area/space) (1,1,1) = {" -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -53050,162 +53114,162 @@ rRS rRS "} (2,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -jcL -jcL -jcL -mqN -hLJ -mqN -jcL -ymc -mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -rRS -rRS -rRS -rRS -rRS -rRS -rRS -rRS -rRS -rRS -rRS -rRS -rRS -rRS -rRS -rRS -rRS -rRS -rRS -rRS -rRS +mVX +mVX +icm +iOx +jnr +jVO +kob +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +icm +iOx +jnr +jVO +kob +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +icm +iOx +jnr +jVO +kob +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +icm +iOx +jnr +jVO +kob +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +rRS +rRS +rRS +rRS +rRS +rRS +rRS +rRS +rRS +rRS +rRS +rRS +rRS +rRS +rRS +rRS +rRS +rRS +rRS +rRS +rRS rRS rRS rRS @@ -53307,141 +53371,141 @@ rRS rRS "} (3,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -jcL -peW -efn -hJk -gWS -dsI -jcL -ymc -mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -pNM -pwa -sbw -sbw -nnz -nre -nBC -nnz -nBC -nUe -nnz -sbw -sbw -pwa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +hLV +igh +iPF +jsZ +jXB +kps +kjZ +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +hLV +igh +lKy +jsZ +jXB +kps +kjZ +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +hLV +igh +lKZ +jsZ +jXB +kps +kjZ +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +hLV +igh +jbL +jsZ +jXB +kps +kjZ +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -53564,141 +53628,141 @@ rRS rRS "} (4,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -jcL -tME -gWS -gWS -gWS -iaK -jcL -ymc -mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -pNM -pwa -sbw -rOB -rOB -rOB -rOB -nFn -rOB -rOB -rOB -rOB -sbw -qmE -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +hMy +ikC +iPL +jue +iPL +kru +kLh +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +hMy +lhU +iPL +lTj +iPL +kru +kLh +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +hMy +luo +iPL +lXp +iPL +kru +kLh +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +hMy +inR +iPL +jKg +iPL +kru +kLh +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -53821,190 +53885,190 @@ rRS rRS "} (5,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -jcL -vWH -gWS -gWS -gWS -nef -jcL -ymc -mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -pNM -pwa -sbw -rOB -rOB -rOB -rOB -rOB -rOB -rOB -rOB -rOB -oiL -cSa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -rRS -rRS -rRS -rRS -rRS -rRS -rRS -rRS -rRS -rRS -wpJ -wpJ -vPe -vPe -vPe -vPe -akg -vPe -vPe -vPe -vPe -vPe -vPe -vPe -izZ -vPe -wpJ -vPe -vPe -vPe -ivl -vPe -wpJ -svg -izZ -vPe -ivl -vPe -vPe -iwf -izZ -weE -vPe -wpJ -izZ -vPe -wpJ -vPe -vPe +mVX +hMD +ikP +iPL +juD +iPL +ktf +kMQ +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +hMD +ljz +iPL +juD +iPL +ktf +kMQ +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +hMD +lAn +iPL +juD +iPL +ktf +kMQ +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +hMD +ioP +iPL +juD +iPL +kAj +kMQ +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +rRS +rRS +rRS +rRS +rRS +rRS +rRS +rRS +rRS +rRS +wpJ +wpJ +vPe +vPe +vPe +vPe +akg +vPe +vPe +vPe +vPe +vPe +vPe +vPe +izZ +vPe +wpJ +vPe +vPe +vPe +ivl +vPe +wpJ +svg +izZ +vPe +ivl +vPe +vPe +iwf +izZ +weE +vPe +wpJ +izZ +vPe +wpJ +vPe +vPe vPe vPe vPe @@ -54078,141 +54142,141 @@ rRS rRS "} (6,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -vMQ -vMQ -wso -vMQ -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -piE -oQV -dDb -ftK -dDb -oQV -piE -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -vLL -vLL -vLL -vLL -vLL -vLL -tjm -oRw -tjm -vLL -vLL -ubE -ubE -ubE -ymc -jcL -agG -eES -gWS -gWS -aTh -jcL -ymc -mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -xDA -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -pNM -pwa -sbw -ncN -rOB -rOB -rOB -rOB -rOB -rOB -rOB -omG -oiL -cSa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -yiJ -qYO -wIQ -rTA -wIQ -qYO -yiJ -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +hOM +ild +iPL +jvb +iPL +kuJ +kNN +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +hOM +lkD +iPL +lWT +iPL +kuJ +kNN +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +hOM +lAo +iPL +lYV +iPL +kuJ +kNN +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +hOM +ipu +iPL +jLP +iPL +kuJ +kNN +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -54335,252 +54399,252 @@ rRS rRS "} (7,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -vMQ -wso -fcM -oLJ -nzI -nxa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -oQV -nuC -qDA -qDA -lPy -jNn -piE -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -gao -qVQ -tVF -uzl -tVF -uGv -uGv -tVF -vfg -vtg -vLL -ubE -ubE -ubE -ymc -jcL -jcL -mqN -dSj -mqN -jcL -jcL -ymc -mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -tbW -xDA -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -pNM -pwa -sbw -rOB -rOB -rOB -rOB -rOB -rOB -rOB -rOB -rOB -oiL -cSa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -yiJ -wIQ -rTA -wIQ -xqR -xqR -xqR -xqR -xqR -xqR -yiJ -yiJ -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -rRS -rRS -rRS -rRS -rRS -rRS -rRS -vPe -iwf -izZ -vPe -jEk -vPe -izZ -wpJ -vPe -jET -jET -jET -swP -swP -oKN -pff -pBH -pWj -qlw -qCd -oKN -swP -swP -jET -jET -jET -vPe -vPe -izZ -vPe -iwb -wpJ -vPe -wpJ -wpJ -vPe -vPe -vPe -wpJ -vPe -akg -vPe -vPe -vPe -ciV -shZ -shZ -shZ -ciV -ciV -ciV -ciV -tjx -mzr -vWC -sAE -ciV -oID -mMl -qkp -ktr -vHT -ciV -cGz -bif -vHT -auc -vPT -axR -ciV -rGT -xqw -waT -waT -vPe -wpJ -vPe -vPe -wpJ -vPe -vPe -rMQ -izZ -rMQ -vPe -vPe -vPe -ivl -vPe -vPe -vPe -vPe -vPe -vPe -wpJ -wpJ -akg -vPe -vPe -wpJ -vPe -ybz -vPe -izZ +mVX +hQj +ilI +iTp +jxF +iTp +kvR +kOn +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +hQj +ilI +iTp +jxF +iTp +kvR +kOn +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +hQj +ilI +iTp +jxF +iTp +kvR +kOn +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +hQj +ilI +iTp +jxF +iTp +kvR +kOn +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +rRS +rRS +rRS +rRS +rRS +rRS +rRS +vPe +iwf +izZ +vPe +jEk +vPe +izZ +wpJ +vPe +jET +jET +jET +swP +swP +oKN +pff +pBH +pWj +qlw +qCd +oKN +swP +swP +jET +jET +jET +vPe +vPe +izZ +vPe +iwb +wpJ +vPe +wpJ +wpJ +vPe +vPe +vPe +wpJ +vPe +akg +vPe +vPe +vPe +ciV +shZ +shZ +shZ +ciV +ciV +ciV +ciV +tjx +mzr +vWC +sAE +ciV +oID +mMl +qkp +ktr +vHT +ciV +cGz +bif +vHT +auc +vPT +axR +ciV +rGT +xqw +waT +waT +vPe +wpJ +vPe +vPe +wpJ +vPe +vPe +rMQ +izZ +rMQ +vPe +vPe +vPe +ivl +vPe +vPe +vPe +vPe +vPe +vPe +wpJ +wpJ +akg +vPe +vPe +wpJ +vPe +ybz +vPe +izZ rqf jAj jAj @@ -54592,141 +54656,141 @@ rRS rRS "} (8,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -qKL -jLG -rmm -rmm -rmm -scI -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -dDb -eeO -lPy -wDF -lPy -ggu -pOp -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -xIB -qVQ -tVF -stM -tVF -tVF -tVF -tVF -tVF -tVF -wWa -ubE -ubE -ubE -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -gLw -xfs -xDA -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -pNM -pwa -sbw -rOB -rOB -rOB -rOB -nLn -rOB -rOB -rOB -rOB -sbw -dzF -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -rRI -rZw -rZw -yiJ -xqR -xqR -xqR -yiJ -xqR -vDz -aHh -uca -qTw -fVS -dMv -bWH -bWH -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +imX +iVo +jAl +jYQ +kwr +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +imX +iVo +jAl +jYQ +kwr +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +imX +iVo +jAl +jYQ +kwr +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +imX +iVo +jAl +jYQ +kwr +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -54849,59 +54913,6 @@ rRS rRS "} (9,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -vMQ -wso -eDH -vXd -dFI -wIa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -oQV -ejG -qDA -qDA -lPy -hjp -piE -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -tnb -qVQ -tVF -sxB -sGg -sSp -sSp -tDJ -upD -uws -vLL -ubE -ubE -ubE -ymc mVX mVX mVX @@ -54911,79 +54922,132 @@ mVX mVX mVX mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -kgk -xhP -xfs -xDA -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -pNM -pwa -sbw -sbw -sbw -sbw -sbw -sbw -tEr -sbw -sbw -sbw -sbw -pwa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -xqM -xBA -xqR -bUu -aJb -xmH -kgM -xAf -xGP -xuC -nKo -rxS -rxS -rxS -cIh -txP -dMv -kre -bWH -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -55106,59 +55170,6 @@ rRS rRS "} (10,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -vMQ -vMQ -wso -vMQ -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -piE -oQV -dDb -pWF -dDb -oQV -piE -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -vLL -vLL -vLL -vLL -vLL -vLL -vLL -vLL -vLL -vLL -vLL -ubE -ubE -ubE -ymc mVX mVX mVX @@ -55168,79 +55179,132 @@ mVX mVX mVX mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -uHf -kMS -dUN -xfs -xDA -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -yiJ -yiJ -xqR -xqR -yiJ -bUu -aTJ -bEU -bEU -bEU -bEU -bEU -bEU -bEU -aJb -lks -qxu -dtj -dMv -bWH -bWH -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -55363,141 +55427,141 @@ rRS rRS "} (11,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -whe -vNF -hNg -uFB -wQF -vNF -xDA -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pwa -pwa -pwa -pwa -pwa -rRI -yiJ -xil -xrD -xCU -yiJ -bUu -xKT -xKT -xpA -xKT -xKT -xKT -xKT -xKT -gnl -csQ -xqR -yiJ -yiJ -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -55620,141 +55684,141 @@ rRS rRS "} (12,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -ymc -ubE -ubE -ubE -ubE -ubE -eul -eul -mCK -dpI -nzK -aYm -fAv -tbW -xDA -ubE -ubE -ubE -ubE -ubE -ubE -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -pNM -pwa -pwa -pwa -pwa -pwa -xqR -xaF -xir -xun -xEX -yiJ -yiJ -vOQ -vOQ -yiJ -yiJ -xKT -xKT -kAK -dik -nYg -yiJ -yiJ -yiJ -yiJ -yiJ -yiJ -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -55877,141 +55941,141 @@ rRS rRS "} (13,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -ymc -ubE -ubE -ubE -ubE -ubE -eul -tlW -mCK -wDZ -lrJ -iVW -iVW -odX -gfP -xDA -ubE -ubE -ubE -ubE -ubE -ymc -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -pNM -pwa -pwa -pwa -pwa -pwa -wNl -xaN -xiW -xuG -xHG -muh -xqR -xak -xKT -yiJ -xqR -cdP -xKT -xYT -xqR -yiJ -yiJ -dXR -bBg -qFu -xqR -lDb -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -56134,141 +56198,141 @@ rRS rRS "} (14,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -ymc -ubE -ubE -ubE -ubE -ubE -eul -eul -mCK -iBs -ubF -xhP -xhP -xhP -xfs -mll -ubE -ubE -ubE -ubE -ubE -ymc -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -pNM -pwa -pwa -pwa -pwa -pwa -wNl -xbx -xjg -xvJ -xJf -qyg -wDB -xKT -xKT -xwb -xAk -qBj -xKT -hYm -slR -hwZ -jpA -nqS -abs -wid -fhi -clg -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -56373,77 +56437,150 @@ lGu dfs xAp rXH -ylX -rXH -rXH -rXH -rXH -rXH -lnx -uuU -alF -vPe -akg -vPe -rRS -rRS -rRS -rRS -"} -(15,1,1) = {" -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc +ylX +rXH +rXH +rXH +rXH +rXH +lnx +uuU +alF +vPe +akg +vPe +rRS +rRS +rRS +rRS +"} +(15,1,1) = {" +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -56453,79 +56590,6 @@ mVX mVX mVX mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -eul -tIe -nYE -uFn -xhP -xhP -pvn -cHW -pYK -ubE -ubE -ubE -ubE -ubE -ymc -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -pNM -pwa -pwa -pwa -pwa -pwa -wNl -xca -xkM -xwn -xKB -wXm -wEb -xKT -xKT -xwb -xAk -xLN -xKT -hYm -hNI -miW -puD -vnw -aEF -xGZ -auf -kpB -pwa -pwa -pwa -pwa -pwa -pwa -pNM rRS rRS rRS @@ -56648,59 +56712,6 @@ rRS rRS "} (16,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc mVX mVX mVX @@ -56710,79 +56721,132 @@ mVX mVX mVX mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -eul -mCK -mxT -bLb -xhP -xhP -pvn -psd -pYK -ubE -ubE -ubE -ubE -ubE -ymc -ymc -ubE -ubE -bRt -bRt -bRt -vQc -vQc -vQc -eIX -iUN -bRt -bRt -ubE -ubE -ymc -pNM -pwa -pwa -pwa -pwa -pwa -wNl -vFb -xla -xwS -xKO -wua -xqR -xgF -xKT -yiJ -xqR -xUg -xKT -azC -xqR -nGh -yiJ -qRJ -sik -rCi -xqR -ccA -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -56905,141 +56969,141 @@ rRS rRS "} (17,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -ymc -ubE -ubE -ubE -ubE -ubE -eul -eul -mCK -gNX -ubF -xhP -xhP -xhP -bYi -htX -ubE -ubE -ubE -ubE -ubE -ymc -ymc -ubE -ubE -sHR -cgu -nFv -ted -ted -ted -rxG -bnT -wQE -bRt -ubE -ubE -ymc -pNM -pwa -pwa -pwa -pwa -pwa -xqR -mjd -vLM -xcS -whO -yiJ -yiJ -vOQ -vOQ -yiJ -yiJ -xKT -xKT -aTJ -vhq -ncQ -yiJ -yiJ -yiJ -yiJ -yiJ -yiJ -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -57162,141 +57226,141 @@ rRS rRS "} (18,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -ymc -ubE -ubE -ubE -ubE -ubE -eul -tlW -mCK -nRZ -lrJ -iVW -iVW -acK -rgH -bQF -ubE -ubE -ubE -ubE -ubE -ymc -ymc -ubE -ubE -iEQ -cgu -ted -ted -ted -ted -bnT -ted -gEb -kAR -ubE -ubE -ymc -pNM -pwa -pwa -pwa -pwa -pwa -rRI -yiJ -vMC -xxs -ipB -yiJ -bUu -xKT -xKT -azO -xKT -xKT -xKT -xKT -xKT -gnl -sDD -xqR -yiJ -yiJ -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -57419,141 +57483,141 @@ rRS rRS "} (19,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -ymc -ubE -ubE -ubE -ubE -ubE -eul -eul -mCK -iBs -wos -ssx -lxP -tbW -bQF -ubE -ubE -ubE -ubE -ubE -ubE -ymc -ymc -ubE -ubE -iEQ -cgu -nhX -bnT -bnT -bnT -bnT -ted -hwm -kAR -ubE -ubE -ymc -pNM -pwa -pwa -pwa -pwa -pwa -pwa -yiJ -yiJ -xqR -xqR -yiJ -bUu -kAK -qyL -qyL -qyL -qyL -qyL -qyL -qyL -rhC -odm -iuF -fVS -dMv -bWH -bWH -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -57676,141 +57740,141 @@ rRS rRS "} (20,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -iRb -iRb -rof -iRb -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -rug -bpJ -hNg -uFB -wQF -bpJ -bQF -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -ymc -ubE -ubE -iEQ -cgu -ted -ted -ted -ted -bnT -ted -gEb -kAR -ubE -ubE -ymc -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -waD -xBA -yiJ -bUu -rhC -vfR -vfR -plq -yac -llz -rcE -odm -odm -odm -msN -txP -dMv -kre -bWH -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -57933,59 +57997,6 @@ rRS rRS "} (21,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -iRb -rof -xrP -bra -fQm -vhG -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -aiy -jvI -jvI -jvI -jvI -jvI -giC -cnr -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -vzm -vzm -vzm -vzm -vzm -vzm -vzm -vzm -vzm -vzm -ubE -ubE -ubE -ubE -ymc mVX mVX mVX @@ -57995,79 +58006,132 @@ mVX mVX mVX mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -uNo -oyc -pUJ -bYi -bQF -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -ymc -ubE -ubE -bQK -cgu -sHH -ted -ted -ted -uPJ -bnT -ePZ -bRt -ubE -ubE -ymc -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -rRI -wEF -wEF -yiJ -xqR -xqR -xqR -yiJ -xqR -bgz -pxJ -nCK -lAH -dtj -dMv -bWH -bWH -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -58190,59 +58254,6 @@ rRS rRS "} (22,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -bkn -bRc -rFb -rFb -rFb -idZ -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -cHC -jfv -egK -cSb -cSb -btN -bSw -giz -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -uMp -obi -uiP -uAz -sHv -sHv -tlK -ugF -vnF -vzm -vzm -ubE -ubE -ubE -ymc mVX mVX mVX @@ -58252,79 +58263,132 @@ mVX mVX mVX mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -wxL -uZl -xhP -bYi -bQF -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -ymc -ubE -ubE -bRt -bRt -bRt -vQc -vQc -vQc -eIX -xYk -bRt -bRt -ubE -ubE -ymc -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -yiJ -wIQ -xCi -wIQ -xqR -xqR -xqR -xqR -xqR -xqR -yiJ -yiJ -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -58447,59 +58511,6 @@ rRS rRS "} (23,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -iRb -rof -uak -khV -ieD -kHA -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -cHC -dvT -blt -jwD -jwD -jwD -bSw -giz -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -gAN -obi -vpg -vpg -vpg -vpg -vpg -vpg -vpg -lyB -uEU -ubE -ubE -ubE -ymc mVX mVX mVX @@ -58509,79 +58520,132 @@ mVX mVX mVX mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -rAu -bYi -bQF -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -yiJ -xsR -wIQ -xCi -wIQ -xsR -yiJ -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -58704,59 +58768,6 @@ rRS rRS "} (24,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -iRb -iRb -iRb -iRb -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -cHC -aTE -jwD -bjs -bjs -jwD -bSw -giz -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -rhK -obi -smk -syj -syj -syj -syj -vpg -uuY -vzm -vzm -ubE -ubE -ubE -ymc mVX mVX mVX @@ -58766,79 +58777,132 @@ mVX mVX mVX mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -tbW -bQF -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -58961,59 +59025,6 @@ rRS rRS "} (25,1,1) = {" -pNM -pwa -pwa -pwa -pwa -mVX -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -akv -giC -aWY -giC -giC -dzO -giC -cMR -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -vzm -vzm -vzm -vzm -vzm -vzm -trC -vrM -trC -vzm -ubE -ubE -ubE -ubE -ymc mVX mVX mVX @@ -59023,79 +59034,132 @@ mVX mVX mVX mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -bQF -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -59218,141 +59282,141 @@ rRS rRS "} (26,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -59475,59 +59539,6 @@ rRS rRS "} (27,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc mVX mVX mVX @@ -59537,28 +59548,6 @@ mVX mVX mVX mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc mVX mVX mVX @@ -59575,41 +59564,116 @@ mVX mVX mVX mVX -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -59732,59 +59796,6 @@ rRS rRS "} (28,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc mVX mVX mVX @@ -59794,28 +59805,6 @@ mVX mVX mVX mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc mVX mVX mVX @@ -59826,47 +59815,122 @@ mVX mVX mVX mVX -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -59989,59 +60053,6 @@ rRS rRS "} (29,1,1) = {" -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc mVX mVX mVX @@ -60051,28 +60062,6 @@ mVX mVX mVX mVX -ymc -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ubE -ymc mVX mVX mVX @@ -60083,47 +60072,122 @@ mVX mVX mVX mVX -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -60246,59 +60310,6 @@ rRS rRS "} (30,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc mVX mVX mVX @@ -60308,28 +60319,6 @@ mVX mVX mVX mVX -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc -ymc mVX mVX mVX @@ -60340,47 +60329,122 @@ mVX mVX mVX mVX -pNM -pwa -tEQ -vAA -vAA -vAA -vAA -vAA -vAA -vAA -tEQ -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -60503,40 +60567,6 @@ rRS rRS "} (31,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM mVX mVX mVX @@ -60545,26 +60575,6 @@ mVX mVX mVX mVX -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq mVX mVX mVX @@ -60574,70 +60584,124 @@ mVX mVX mVX mVX -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -pNM -pwa -vAA -uoq -uoq -uoq -uoq -uoq -uoq -uoq -vAA -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -60760,40 +60824,6 @@ rRS rRS "} (32,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -60802,26 +60832,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -60831,70 +60841,124 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -pNM -pwa -vAA -uoq -uoq -uoq -uoq -uoq -uoq -uoq -vAA -pwa -pNM -pNM -pwa -pwa -pwa -pwa -xXv -viX -xXv -xXv -xXv -ouJ -mEm -mEm -mEm -ouJ -xXv -xXv -xXv -xXv -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -61017,40 +61081,6 @@ rRS rRS "} (33,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -61059,26 +61089,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -61088,70 +61098,124 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -pNM -pwa -vAA -uoq -uoq -uoq -uoq -uoq -uoq -uoq -vAA -pwa -pNM -pNM -pwa -pwa -pwa -pwa -xXv -wvW -wFV -xhf -xVm -xxJ -xVm -xVm -xVm -xVm -uqw -xVo -ftH -eTw -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -61274,40 +61338,6 @@ rRS rRS "} (34,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -wtY -wtY -iYY -wtY -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -61316,26 +61346,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -wmt -wmt -uyn -uyn -uyn -uyn -wmt -wmt -oFJ -oFJ -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -61345,70 +61355,124 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -pNM -pwa -vAA -uvg -uoq -uoq -uoq -uoq -uoq -uPZ -vAA -pwa -pNM -pNM -pwa -pwa -pwa -pwa -wix -wxH -wKR -xXv -xVm -xVm -xVm -aCe -xVm -xVm -gdD -yiX -ftH -xZc -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -61426,17 +61490,17 @@ lfz lPg msl mNY -nmw -nmw -nmw -nmw -nmw -nmw -nmw -qcS -nmw -nmw -nmw +vLL +vLL +vLL +vLL +vLL +vLL +tjm +byD +tjm +vLL +vLL rgB keo gDm @@ -61531,40 +61595,6 @@ rRS rRS "} (35,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -wtY -iYY -alO -tBr -iSh -fSV -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -hoJ -gRr -fWE -gRr -hoJ -hoJ -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -61573,26 +61603,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -wmt -uyn -wmt -wmt -lgc -otE -rft -gJj -wmt -wmt -wkE -wmt -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -61602,70 +61612,124 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -nbA -nbA -nbA -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -nbA -nbA -nbA -oFJ -oFJ -kXq -pNM -pwa -vAA -uoq -uoq -uoq -uoq -uoq -uoq -uoq -vAA -pwa -pNM -pNM -pwa -pwa -pwa -pwa -xXv -xXv -xXv -xXv -xXv -xXv -xVm -lPB -xVm -xVm -tzz -xXv -xXv -xXv -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -61683,17 +61747,17 @@ vPe vPe mtI mNY -nmw -nmw -nmw -nmw -nmw -nmw -nmw -nmw -nmw -nmw -nmw +ttE +tMC +tVF +uzl +tVF +uGv +uGv +tVF +vfg +vtg +vLL rgB keo nYK @@ -61788,40 +61852,6 @@ rRS rRS "} (36,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -vWm -pvN -jkW -jkW -jkW -hgB -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -cnn -dHE -gal -bMr -gTu -pFM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -61830,26 +61860,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -xjR -gKi -gKi -hHU -riz -kgE -kPS -riz -hHU -gKi -gKi -tTX -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -61859,70 +61869,124 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -nbA -nbA -nbA -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -nbA -nbA -nbA -oFJ -oFJ -kXq -pNM -pwa -vAA -uoq -uoq -uoq -uoq -uoq -uoq -uoq -vAA -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -xXv -xVm -yai -xVm -xVm -nns -xXv -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -61940,17 +62004,17 @@ vPe lSp mvd mNY -nmw -nmw -nmw -nmw -nmw -nmw -nmw -nmw -nmw -nmw -nmw +lLG +tMC +tVF +stM +tVF +tVF +tVF +tVF +tVF +tVF +wWa rgB keo nYK @@ -62045,40 +62109,6 @@ rRS rRS "} (37,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -wtY -iYY -sAA -aCb -byS -fBi -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -cnn -bjM -gal -bQZ -cme -pFM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -62087,26 +62117,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -xjR -adM -kUi -vvs -iSZ -mtw -kVb -lzD -wmt -kUi -adM -tTX -nSu -oFJ -oFJ -kXq mVX mVX mVX @@ -62116,70 +62126,124 @@ mVX mVX mVX mVX -kXq -oFJ -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -oFJ -nbA -nbA -nbA -oFJ -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -oFJ -kXq -pNM -pwa -vAA -uoq -uoq -uoq -uoq -uoq -uoq -uoq -vAA -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -xXv -mEm -mEm -ouJ -xVm -yin -tLj -vIN -iGc -xXv -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -62197,17 +62261,17 @@ vPe lSq msl mNY -nmw -nmw -nmw -nmw -nmw -nmw -nmw -nmw -nmw -nmw -nmw +ruh +tMC +tVF +sxB +sGg +sSp +sSp +tDJ +upD +uws +vLL rgB keo nYK @@ -62302,40 +62366,6 @@ rRS rRS "} (38,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -wtY -wtY -iYY -wtY -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -hoJ -gRr -mzT -gRr -hoJ -hoJ -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -62344,26 +62374,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -wmt -wJV -wmt -wJV -wmt -jqj -wJV -wJV -jqj -wmt -wJV -wmt -wJV -wmt -oFJ -oFJ -kXq mVX mVX mVX @@ -62373,70 +62383,124 @@ mVX mVX mVX mVX -kXq -oFJ -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -oFJ -kXq -pNM -pwa -tEQ -vAA -vAA -vAA -uGV -vAA -vAA -vAA -tEQ -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -xXv -xXv -ugs -ugs -ouJ -xFI -ouJ -xXv -xXv -xXv -xXv -xXv -ouJ -xXv -xXv -xXv -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -62454,17 +62518,17 @@ vPe lTg mvd mNY -nmw -nmw -nmw -nmw -nmw -nmw -nmw -nmw -nmw -nmw -nmw +vLL +vLL +vLL +vLL +vLL +vLL +vLL +vLL +vLL +vLL +vLL rgB keo gDm @@ -62559,40 +62623,6 @@ rRS rRS "} (39,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -62601,26 +62631,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -wmt -eDO -qti -hHU -riz -riz -alM -bjJ -riz -riz -hHU -qti -kws -wmt -oFJ -oFJ -kXq mVX mVX mVX @@ -62630,70 +62640,124 @@ mVX mVX mVX mVX -kXq -oFJ -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -oFJ -kXq -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -xXv -xXv -ugs -xVm -xVm -xXv -xVm -vzo -xVm -pBK -leE -gWk -nbL -uQU -arg -uqH -xXv -xXv -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -62816,40 +62880,6 @@ rRS rRS "} (40,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -62858,26 +62888,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -wmt -jcs -vHj -wJV -qjX -mHL -mpN -mpN -qZj -vja -wJV -vHj -eDO -wmt -oFJ -oFJ -kXq mVX mVX mVX @@ -62887,70 +62897,124 @@ mVX mVX mVX mVX -kXq -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -kXq -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pwa -pwa -pwa -pwa -xTN -ctL -xVm -xVm -kKs -kbL -kKs -ouJ -xVm -xVm -xVm -xVm -xVm -uQU -bSe -xVm -rdn -xXv -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -62996,9 +63060,9 @@ sos keo vtI jjR -wGg -vLc -aQh +xol +tTE +ifF pXQ xGb xGb @@ -63073,40 +63137,6 @@ rRS rRS "} (41,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -63115,26 +63145,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -wJV -eYE -jqj -wJV -iJi -lcs -khG -khG -fsf -nfO -wJV -jqj -njE -wJV -oFJ -oFJ -kXq mVX mVX mVX @@ -63144,70 +63154,124 @@ mVX mVX mVX mVX -kXq -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -kXq -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pwa -pwa -pwa -pwa -xTN -wxI -kID -xVm -xVm -vzo -xVm -vzo -xVm -xVm -xVm -xVm -xVm -vzo -xVm -xVm -pwr -xXv -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -63330,40 +63394,6 @@ rRS rRS "} (42,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM mVX mVX mVX @@ -63372,26 +63402,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -wJV -vHj -vHj -hHU -itv -ssr -hlv -hlv -snA -mcM -hHU -vHj -vHj -wJV -oFJ -oFJ -kXq mVX mVX mVX @@ -63401,70 +63411,124 @@ mVX mVX mVX mVX -kXq -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -kXq -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -xTN -jbt -xVm -xVm -xVm -kbL -kKs -ouJ -xVm -xVm -xVm -xVm -xVm -uQU -xVm -jLc -vLY -xXv -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -63587,40 +63651,6 @@ rRS rRS "} (43,1,1) = {" -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM mVX mVX mVX @@ -63629,26 +63659,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -xjR -cKw -vHj -wJV -mBE -bur -riz -riz -lzZ -mBE -wJV -vHj -cKw -tTX -oFJ -oFJ -kXq mVX mVX mVX @@ -63658,70 +63668,124 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -kXq -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -xXv -xXv -wNi -xVm -xVm -xXv -xVm -vzo -xVm -dTK -oJH -fxt -tKn -uQU -vxN -kbb -xXv -xXv -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -63844,40 +63908,6 @@ rRS rRS "} (44,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -63886,26 +63916,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -xjR -rDm -gTs -wmt -wmt -vgd -wnA -wnA -xcN -wmt -wmt -mYE -jxr -tTX -oFJ -oFJ -kXq mVX mVX mVX @@ -63915,70 +63925,124 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -kXq -pNM -pwa -pwa -pwa -sXI -sXI -sXI -sXI -sXI -pwa -pwa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -xXv -xXv -wNi -wNi -ouJ -xFI -ouJ -xXv -xXv -xXv -xXv -xXv -ouJ -xXv -xXv -xXv -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -64006,13 +64070,13 @@ qiR qiR qiR qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR +xqR +qYO +wIQ +rTA +wIQ +qYO +xqR qiR qiR qiR @@ -64101,40 +64165,6 @@ rRS rRS "} (45,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -64143,26 +64173,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -xjR -uMn -vHj -wJV -mBE -xvt -xss -xss -xvt -mBE -wJV -vHj -uMn -tTX -oFJ -oFJ -kXq mVX mVX mVX @@ -64172,70 +64182,124 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -kXq -pNM -pwa -pwa -sXI -sXI -sXI -sXI -sXI -sXI -sXI -pwa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -xXv -xhz -xhz -ouJ -xVm -iqq -xVm -xVm -feW -xXv -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -64259,18 +64323,18 @@ qiR qiR qiR qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR +yiJ +wIQ +rTA +wIQ +yiJ +xqR +yiJ +xqR +yiJ +xqR +yiJ +yiJ qiR qiR uff @@ -64358,40 +64422,7 @@ rRS rRS "} (46,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa mVX -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -64400,26 +64431,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -wJV -tFk -vHj -hIt -riz -iTh -knt -knt -jSC -riz -mGD -vHj -nxK -wJV -oFJ -oFJ -kXq mVX mVX mVX @@ -64429,70 +64440,123 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -kXq -pNM -pwa -pwa -sXI -sXI -sXI -sXI -sXI -sXI -sXI -pwa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -xXv -xVm -iHB -xVm -xVm -xVm -xXv -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -64513,23 +64577,23 @@ qiR qiR qiR qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR +rRI +rZw +rZw +yiJ +yiJ +xqR +yiJ +yiJ +xqR +vDz +aHh +uca +qTw +uMZ +dMv +bWH +bWH uff uxM vgP @@ -64615,40 +64679,6 @@ rRS rRS "} (47,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -64657,26 +64687,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -wJV -eQJ -qwi -wJV -iuu -iWu -xEv -xEv -lBU -mqy -wJV -eQJ -qwi -wJV -oFJ -oFJ -kXq mVX mVX mVX @@ -64686,70 +64696,124 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -kXq -pNM -pwa -pwa -sXI -sXI -sXI -sXI -sXI -sXI -uSa -pwa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -xXv -xXv -xXv -xXv -xXv -xXv -xVm -mET -dGr -xVm -wod -xXv -xXv -xXv -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS vPe @@ -64768,25 +64832,25 @@ lXY qiR qiR qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR +xqM +xBA +yiJ +bUu +aJb +xmH +kgM +xAf +xGP +xuC +nKo +rxS +rxS +rxS +cIh +mog +dMv +kre +bWH uff uyg vhZ @@ -64863,49 +64927,133 @@ vPe iAZ duS vPe -vPe -vPe -ivq -vPe -rRS -rRS -rRS -"} -(48,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -nTJ -nTJ -peS -nTJ -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -oJI -sKg -lDH -sKg -sKg -sXM -prf -oJI -oJI -pwa -pwa -pwa -pwa -pNM +vPe +vPe +ivq +vPe +rRS +rRS +rRS +"} +(48,1,1) = {" +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -64914,26 +65062,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -wmt -jKI -mCX -wmt -ixL -jzk -riz -riz -lBX -mto -wmt -jKI -mCX -wmt -oFJ -oFJ -kXq mVX mVX mVX @@ -64943,70 +65071,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -oFJ -kXq -pNM -pwa -pwa -sXI -sXI -sXI -sXI -sXI -sXI -sXI -pwa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -nai -oMz -wXb -xXv -xVm -xVm -xVm -lAO -xVm -xVm -mdw -xVo -ftH -eTw -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM rRS vPe vPe @@ -65023,27 +65087,27 @@ kAO lmY lXY qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR +yiJ +yiJ +xqR +yiJ +yiJ +bUu +aTJ +bEU +bEU +bEU +bEU +bEU +bEU +bEU +aJb +lks +qxu +ssE +dMv +bWH +bWH uff uxM viK @@ -65129,40 +65193,6 @@ rRS rRS "} (49,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -nTJ -peS -oET -alp -iGk -pZj -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -sXM -lBl -lOB -svC -tbv -tbX -tbv -giK -mrP -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -65171,26 +65201,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -gtx -gtx -wJV -wmt -wmt -kuU -vQS -wmt -wmt -wJV -gtx -gtx -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -65200,70 +65210,124 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -oFJ -kXq -pNM -pwa -pwa -sXI -sXI -sXI -sXI -sXI -sXI -sXI -pwa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -xXv -wBe -wFV -xjY -xVm -xAd -xVm -xVm -xVm -xVm -uqw -yiX -ftH -xZc -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS vPe vPe @@ -65279,26 +65343,26 @@ jOH kAO aOe lXY -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR +rRI +yiJ +xil +xrD +xCU +yiJ +bUu +xKT +xKT +xpA +xKT +xKT +xKT +xKT +xKT +gnl +csQ +xqR +yiJ +yiJ qiR qiR uff @@ -65386,40 +65450,6 @@ rRS rRS "} (50,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -oMf -gyE -puY -puY -puY -xov -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -sXM -nVS -maj -sKg -tbv -kAJ -tbv -giK -mrP -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -65428,26 +65458,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -65457,70 +65467,124 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -oFJ -kXq -pNM -pwa -pwa -pwa -sXI -sXI -sXI -sXI -sXI -pwa -pwa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -xXv -wBy -xXv -xXv -xXv -ouJ -xhz -xhz -xhz -ouJ -xXv -xXv -xXv -xXv -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS vPe vPe @@ -65536,28 +65600,28 @@ jOH kAO aOe lXY -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR +xqR +xaF +xir +xun +xEX +yiJ +yiJ +vOQ +vOQ +yiJ +yiJ +xKT +xKT +kAK +dik +nYg +yiJ +yiJ +yiJ +yiJ +yiJ +yiJ ugm uHa vny @@ -65643,40 +65707,6 @@ rRS rRS "} (51,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -nTJ -peS -gWl -eag -cQf -mPs -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -bXg -ogO -oiv -ovE -oHK -peG -tbv -giK -mrP -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -65685,26 +65715,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -65714,70 +65724,124 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -oFJ -kXq -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS vPe vPe @@ -65793,28 +65857,28 @@ jSd kAO aOe lXz -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR +wNl +xaN +xiW +xuG +xHG +muh +xqR +xak +xKT +yiJ +xqR +yiJ +xKT +xYT +xqR +yiJ +yiJ +dXR +bBg +qFu +xqR +lDb keo wGu wGu @@ -65900,40 +65964,6 @@ rRS rRS "} (52,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -nTJ -nTJ -peS -nTJ -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -oJI -sKg -okx -sKg -oJI -sKg -qTI -oJI -oJI -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -65942,26 +65972,6 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -65971,70 +65981,124 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -oFJ -kXq -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS vPe vPe @@ -66050,28 +66114,28 @@ jOH kAO lsf lXz -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -tUi +wNl +xbx +xjg +xvJ +xJf +qyg +wDB +xKT +xKT +xwb +xAk +qBj +xKT +hYm +slR +hwZ +jpA +nqS +abs +wid +fhi +xbV ygg wlI wlI @@ -66157,40 +66221,6 @@ rRS rRS "} (53,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -66199,26 +66229,6 @@ mVX mVX mVX mVX -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq mVX mVX mVX @@ -66228,70 +66238,124 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -oFJ -kXq -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS vPe vPe @@ -66307,28 +66371,28 @@ jOH kAO aOe lXY -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR +wNl +xca +xkM +xwn +xKB +wXm +wEb +xKT +xKT +xwb +xAk +xLN +xKT +hYm +hNI +miW +puD +vnw +aEF +xGZ +auf +kpB ygg wlI wlI @@ -66414,141 +66478,141 @@ rRS rRS "} (54,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -mVX -mVX -mVX -mVX -mVX -mVX -mVX -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -oFJ -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -oFJ -kXq -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS vPe vPe @@ -66564,28 +66628,28 @@ jSd kAO lmY lXY -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR +wNl +vFb +xla +xwS +xKO +wua +xqR +xgF +xKT +yiJ +xqR +yiJ +xKT +azC +xqR +nGh +yiJ +qRJ +sik +rCi +xqR +ccA keo wGu wGu @@ -66671,40 +66735,6 @@ rRS rRS "} (55,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -66712,100 +66742,134 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -kXq -oFJ -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -oFJ -kXq -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -mVX -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS vPe vPe @@ -66821,28 +66885,28 @@ jOH kAO aOe lXz -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR +xqR +mjd +vLM +xcS +whO +yiJ +yiJ +vOQ +vOQ +yiJ +yiJ +xKT +xKT +aTJ +vhq +ncQ +yiJ +yiJ +yiJ +yiJ +yiJ +yiJ uhy uLg vrH @@ -66928,40 +66992,6 @@ rRS rRS "} (56,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM mVX mVX mVX @@ -66969,100 +66999,134 @@ mVX mVX mVX mVX -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -kXq -oFJ -oFJ -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -oFJ -oFJ -kXq -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS vPe vPe @@ -67078,26 +67142,26 @@ jPH kAO aOe lXz -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR +rRI +yiJ +vMC +xxs +ipB +yiJ +bUu +xKT +xKT +azO +xKT +xKT +xKT +xKT +xKT +gnl +sDD +xqR +yiJ +yiJ qiR qiR uhK @@ -67185,141 +67249,141 @@ rRS rRS "} (57,1,1) = {" -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -pNM -pwa -pwa -pwa -sXI -sXI -sXI -sXI -sXI -pwa -pwa -pwa -pNM -mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS vPe vPe @@ -67336,27 +67400,27 @@ kAO aOe lXY qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR +yiJ +yiJ +xqR +yiJ +yiJ +bUu +kAK +qyL +qyL +qyL +qyL +qyL +qyL +qyL +rhC +odm +iuF +uMZ +dMv +bWH +bWH uff uMl vvX @@ -67442,141 +67506,141 @@ rRS rRS "} (58,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -pNM -pwa -pwa -sXI -sXI -sXI -sXI -sXI -sXI -sXI -pwa -pwa -pNM -mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS vPe @@ -67595,25 +67659,25 @@ lXz qiR qiR qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR +waD +xBA +yiJ +bUu +rhC +vfR +vfR +plq +yac +llz +rcE +odm +odm +odm +msN +mog +dMv +kre +bWH uff uMQ yas @@ -67699,141 +67763,141 @@ rRS rRS "} (59,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -pNM -pwa -pwa -sXI -sXI -sXI -sXI -sXI -sXI -sXI -pwa -pwa -pNM -mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS vPe @@ -67854,23 +67918,23 @@ qiR qiR qiR qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR +rRI +wEF +wEF +yiJ +yiJ +xqR +yiJ +yiJ +xqR +bgz +pxJ +nCK +lAH +ssE +dMv +bWH +bWH uff uNx vxf @@ -67910,7 +67974,7 @@ dJo ebc hCl hCl -kXJ +biD rHb hCl hCl @@ -67945,152 +68009,152 @@ keo vPe ivl iAZ -duS -vPe -vPe -izZ -iwf -rRS -rRS -rRS -rRS -"} -(60,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -sKm -qZr -qZr -qZr -sKm -oFJ -oFJ -oFJ -oFJ -sKm -sKm -sKm -sKm -sKm -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -pNM -pwa -pwa -sXI -sXI -sXI -sXI -sXI -sXI -jIv -pwa -pwa -pNM -mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +duS +vPe +vPe +izZ +iwf +rRS +rRS +rRS +rRS +"} +(60,1,1) = {" +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -68114,18 +68178,18 @@ qiR qiR qiR qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR +yiJ +wIQ +xCi +wIQ +yiJ +xqR +yiJ +xqR +yiJ +xqR +yiJ +yiJ qiR qiR uff @@ -68213,141 +68277,141 @@ rRS rRS "} (61,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -sKm -sKm -euT -eJz -pzZ -sKm -qow -qZr -qZr -qow -sKm -tVR -hke -mNh -sKm -sKm -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -pNM -pwa -pwa -sXI -sXI -sXI -sXI -sXI -sXI -sXI -pwa -pwa -pNM -mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -afa -afa -psf -afa -afa -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -68375,13 +68439,13 @@ qiR qiR qiR qiR -qiR -qiR -qiR -qiR -qiR -qiR -qiR +xqR +xsR +wIQ +xCi +wIQ +xsR +xqR qiR qiR qiR @@ -68470,141 +68534,141 @@ rRS rRS "} (62,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -vAA -vAA -vAA -vAA -yjN -vAA -sJJ -vAA -bud -bud -bud -wkN -uEW -vAA -uEW -vAA -vAA -wkN -bud -bud -wkN -vAA -vAA -pwa -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -sKm -sKm -dOP -evd -fcd -fHH -sKm -szi -qOT -iBn -jBo -sKm -liC -lKX -mve -mNH -sKm -sKm -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -pNM -pwa -pwa -sXI -sXI -sXI -sXI -sXI -sXI -sXI -pwa -pwa -pNM -mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -afa -afa -afa -psf -afa -afa -afa -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -68727,141 +68791,141 @@ rRS rRS "} (63,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -wkN -rpQ -rOi -ayR -sms -wkN -sMr -sWd -izX -izX -izX -izX -dNe -sWd -dNe -uOA -wkN -uVo -vpD -aaa -vNc -vAA -ilW -osD -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -sKm -jLA -oqI -oqI -oqI -pFm -sKm -rTV -qPL -iCK -jEF -sKm -uAE -oJg -mGC -mUg -dVd -sKm -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -nbA -nbA -nbA -nbA -nbA -nbA -nbA -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -pNM -pwa -pwa -pwa -sXI -sXI -sXI -sXI -sXI -pwa -pwa -pwa -pNM -mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -afa -afa -afa -psf -afa -afa -afa -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -68984,141 +69048,141 @@ rRS rRS "} (64,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -bud -esN -rPC -oQJ -qJx -syr -dNe -izX -izX -izX -izX -izX -dNe -izX -dNe -izX -bud -tHp -qom -qom -vUY -vAA -ilW -osD -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -qow -kNE -oqI -oqI -oqI -oqI -pTY -pTY -hQS -hQS -pTY -sKm -sKm -sKm -pTY -orL -jta -sKm -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -nbA -nbA -nli -nbA -nbA -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -afa -afa -afa -psf -afa -afa -afa -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -69241,141 +69305,141 @@ rRS rRS "} (65,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -vAA -vAA -esN -qGu -sfc -sle -syr -dNe -dNe -dNe -dNe -dNe -dNe -dNe -dNe -dNe -izX -bud -tHp -qom -qom -bBU -vAA -ilW -osD -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -eYh -mro -oqI -oqI -pnz -pHw -qbr -qow -qRz -qRz -qow -rTV -wmD -noJ -sKm -orL -ndg -sKm -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -afa -afa -afa -psf -afa -afa -afa -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -69498,141 +69562,141 @@ rRS rRS "} (66,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -vAA -wkN -bud -wkN -vAA -vAA -esN -qGu -wJl -bwU -bud -dNe -izX -izX -izX -izX -izX -izX -izX -dNe -izX -wkN -vdg -qom -qom -epb -vAA -vAA -vAA -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -eYh -nOi -oqI -oQS -pnE -pHB -qfX -sKm -ofm -ofm -sKm -rVI -xVM -xhK -sKm -mWW -nDt -sKm -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -afa -afa -afa -psf -afa -afa -afa -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -69755,141 +69819,141 @@ rRS rRS "} (67,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -wkN -xnF -pSS -dDZ -qzL -vAA -esN -qGu -wJl -bwU -bud -dNe -eoF -izX -jYK -izX -izX -izX -eoF -dNe -dNe -uSG -qom -qom -qom -tOK -vAA -ilW -osD -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -eYh -fVA -oqI -oQS -fgu -pHB -gwG -sKm -hRI -ofm -jEY -kvU -lmJ -lMZ -sKm -orL -nDt -sKm -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -psf -psf -psf -psf -psf -psf -psf -psf -afa -afa -afa -psf -afa -afa -afa -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -69907,17 +69971,17 @@ vPe max mzI mTh -nqY -nqY -nqY -nqY -nqY -nqY -nqY -nqY -nqY -nqY -nqY +vzm +vzm +vzm +vzm +vzm +vzm +vzm +vzm +vzm +vzm +qiR rkx mZB hag @@ -70012,141 +70076,141 @@ rRS rRS "} (68,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -bud -vcC -qfz -qfz -qFm -vAA -jlQ -wTK -sle -sns -wkN -sNX -wkN -bud -wkN -bud -wkN -bud -wkN -uIy -dNe -uSG -qom -qom -qom -vRi -vAA -ilW -osD -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -qow -rTV -oqI -oQS -fqZ -pLm -gyY -sKm -ofm -ofm -sKm -kCX -lnR -lSn -sKm -orL -pbK -sKm -oFJ -oFJ -oFJ -oFJ -oFJ -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds -psf -psf -psf -psf -psf -psf -psf -afa -afa -afa -afa -psf -afa -afa -afa -afa -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -70164,17 +70228,17 @@ sBD vPe mBe mTh -nqY -nqY -nqY -nqY -nqY -nqY -nqY -nqY -nqY -nqY -nqY +tHx +tPu +uiP +uAz +sHv +sHv +tlK +ugF +vnF +vzm +vzm rkx mZB pQe @@ -70269,77 +70333,6 @@ rRS rRS "} (69,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -bud -koI -rxF -vFD -rxF -mdM -wkN -rRm -rRm -wkN -vAA -sOe -sWw -tsj -tTF -tsj -uAh -tsj -sWw -dNe -uPe -wkN -vdH -vqK -vJp -vSD -vAA -vAA -vAA -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -sKm -dmR -dUj -dmR -sKm -sKm -sKm -dmR -qRz -qRz -dmR -sKm -sKm -sKm -dmR -mXc -dmR -sKm -oFJ -oFJ -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -70363,47 +70356,118 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds -psf -psf -psf -psf -psf -psf -psf -afa -afa -afa -afa -psf -afa -afa -afa -afa -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -70421,17 +70485,17 @@ vPe lSp mCv mTh -nqY -nqY -nqY -nqY -nqY -nqY -nqY -nqY -nqY -nqY -nqY +gcu +tPu +vpg +vpg +vpg +vpg +vpg +vpg +vpg +lyB +uEU rkx mZB pQe @@ -70444,7 +70508,7 @@ wyt wWe viy xwm -wds +nIe qvD wvS wlI @@ -70526,77 +70590,6 @@ rRS rRS "} (70,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -bud -pAM -rxF -vFD -vFD -mdY -rqz -wDS -wDS -wDS -sCS -dNe -dNe -dNe -dNe -dNe -dNe -dNe -dNe -dNe -izX -vAA -vAA -vAA -vAA -vAA -vAA -ilW -osD -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -qow -dvI -ofm -eyL -qow -fTS -fTS -dvI -ofm -ofm -eyL -fTS -fTS -qow -dvI -ofm -eyL -qow -oFJ -oFJ -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -70620,47 +70613,118 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds -psf -psf -psf -psf -psf -psf -afa -afa -afa -afa -afa -psf -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -70678,17 +70742,17 @@ vPe lSq mzI mTh -nqY -nqY -nqY -nqY -nqY -nqY -nqY -nqY -nqY -nqY -nqY +rwu +tPu +smk +syj +syj +syj +syj +vpg +uuY +vzm +vzm rkx mZB pQe @@ -70713,7 +70777,7 @@ xlE wlI wlI yas -vwk +wbt keo vPe vPe @@ -70774,86 +70838,127 @@ iDT iEV iOg vPe -vPe -jAj -vPe -rRS -rRS -rRS -rRS -"} -(71,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -bud -lOH -rxF -vFD -vFD -mdY -dgT -wDS -wDS -wDS -sCS -dNe -dNe -dNe -dNe -dNe -dNe -dNe -dNe -dNe -izX -vAA -vAA -vAA -vAA -vAA -vAA -ilW -osD -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -dkS -ofm -ofm -ofm -frF -ofm -ofm -ofm -ofm -ofm -ofm -ofm -ofm -frF -ofm -ofm -ofm -npL -oFJ -oFJ -oFJ -oFJ -oFJ -kXq +vPe +jAj +vPe +rRS +rRS +rRS +rRS +"} +(71,1,1) = {" +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -70877,47 +70982,6 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds -psf -psf -psf -psf -psf -psf -afa -afa -afa -afa -afa -psf -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -psf -psf -psf -yds rRS rRS rRS @@ -70935,17 +70999,17 @@ vPe lTg mCv mTh -nqY -nqY -nqY -nqY -nqY -nqY -nqY -qfv -nqY -nqY -nqY +vzm +vzm +vzm +vzm +vzm +vzm +trC +iDA +trC +vzm +qiR rkx mZB hag @@ -70970,7 +71034,7 @@ wlI yas wlI wlI -vwk +wbt wGu vPe vPe @@ -71040,77 +71104,6 @@ rRS rRS "} (72,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -bud -qEN -rxF -vFD -rxF -mdM -wkN -kph -kph -wkN -vAA -sOe -hsz -tzJ -oPx -tzJ -uDh -tzJ -hsz -dNe -uPe -wkN -veO -vst -vst -lnZ -vAA -vAA -vAA -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -dkS -ofm -ofm -ofm -frF -ofm -ofm -ofm -ofm -ofm -ofm -ofm -ofm -frF -ofm -ofm -ofm -npL -oFJ -oFJ -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -71134,47 +71127,118 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -vvx -omP -sEW -sWH -vvx -psf -psf -psf -psf -yds -psf -psf -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -71227,7 +71291,7 @@ wlI wlI yas xlE -dxs +qGH wGu vPe vPe @@ -71297,77 +71361,6 @@ rRS rRS "} (73,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -bud -nCH -qhG -qhG -qIt -vAA -tEN -rUk -xaA -ybu -wkN -sNX -wkN -bud -wkN -bud -wkN -bud -wkN -uIy -dNe -uSZ -dNe -dNe -dNe -lgR -vAA -ilW -osD -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -qow -oji -dYy -oji -qow -ofm -ofm -lLn -ofm -nQT -jXC -kLu -lqy -qow -oji -dYy -oji -qow -oFJ -oFJ -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -71391,47 +71384,118 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -ryN -otM -otM -otM -ryN -psf -psf -psf -psf -yds -psf -psf -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -71554,77 +71618,6 @@ rRS rRS "} (74,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -wkN -pvA -qlQ -qwd -umm -vAA -qqG -til -wLl -soN -bud -dNe -sXP -izX -tZV -izX -izX -izX -sXP -dNe -dNe -uSZ -dNe -dNe -dNe -vSK -vAA -ilW -osD -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -sKm -jKp -kCJ -tzK -sKm -fXt -pTY -qow -qxs -pEd -qow -pTY -lvp -sKm -jKp -kCJ -tzK -sKm -oFJ -oFJ -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -71648,47 +71641,118 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -vvx -vTk -oAE -oSA -vvx -psf -psf -psf -psf -yds -psf -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -71811,77 +71875,6 @@ rRS rRS "} (75,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -vAA -wkN -bud -wkN -vAA -vAA -ugU -til -wLl -vDy -bud -dNe -izX -izX -izX -izX -izX -izX -izX -dNe -izX -wkN -vhp -dNe -dNe -vZr -vAA -vAA -vAA -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -sKm -cvQ -cvQ -cvQ -sKm -sKm -sKm -hut -qSh -roe -hRZ -sKm -sKm -sKm -cvQ -cvQ -cvQ -sKm -oFJ -oFJ -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -71905,47 +71898,118 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -ryN -vTk -wIw -vTk -ryN -psf -psf -psf -psf -yds -psf -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -72068,77 +72132,6 @@ rRS rRS "} (76,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -vAA -vAA -oDr -til -wrD -xaA -sDa -dNe -dNe -dNe -dNe -dNe -dNe -dNe -dNe -dNe -izX -bud -ezN -dNe -dNe -pTf -vAA -ilW -osD -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -sKm -dIg -dYJ -dIg -sKm -oFJ -sKm -hHq -hRZ -iJk -ket -sKm -oFJ -sKm -dIg -dYJ -dIg -sKm -oFJ -oFJ -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -72162,47 +72155,118 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -ohw -vTk -wIw -vTk -ohw -psf -psf -psf -psf -yds -psf -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -72325,77 +72389,6 @@ rRS rRS "} (77,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -bud -rqT -rXx -slQ -spf -sDa -dNe -izX -izX -izX -izX -izX -izX -izX -dNe -izX -bud -ezN -dNe -dNe -pTf -vAA -ilW -osD -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -dIg -dIg -dIg -oFJ -oFJ -sKm -qow -iei -vTF -qow -sKm -oFJ -oFJ -dIg -dIg -dIg -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -72419,47 +72412,118 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -ryN -vTk -wIw -vTk -ryN -psf -psf -psf -psf -yds -psf -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -72582,77 +72646,6 @@ rRS rRS "} (78,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -wkN -rsS -rYn -rYn -sra -wkN -sRl -sZH -izX -izX -izX -izX -izX -sZH -uKc -uOA -wkN -ezN -dNe -dNe -pTf -vAA -ilW -osD -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -72676,47 +72669,118 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -vvx -ouP -wIw -oUG -vvx -psf -psf -psf -psf -yds -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -72839,77 +72903,6 @@ rRS rRS "} (79,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -vAA -wkN -bud -bud -wkN -vAA -vAA -wkN -bud -bud -bud -wkN -vAA -vAA -vAA -vAA -vAA -bud -vtX -vKS -bud -vAA -vAA -pwa -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -72933,47 +72926,118 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -ryN -vTk -wIw -vTk -ryN -psf -psf -psf -psf -yds -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -73096,77 +73160,6 @@ rRS rRS "} (80,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -73190,47 +73183,118 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -ohL -vTk -wIw -vTk -ohL -psf -psf -psf -psf -yds -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -73350,80 +73414,121 @@ vPe vPe rRS rRS -rRS -"} -(81,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq +rRS +"} +(81,1,1) = {" +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -73447,47 +73552,6 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -ryN -vTk -wIw -vTk -ryN -psf -psf -psf -psf -yds -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -yds rRS rRS rRS @@ -73610,77 +73674,6 @@ rRS rRS "} (82,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -kXq -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -oFJ -kXq mVX mVX mVX @@ -73704,304 +73697,375 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -vvx -ovB -wIw -pan -vvx -psf -psf -psf -psf -yds -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -yds -rRS -rRS -rRS -ivl -vPe -iAZ -duS -vPe -ivl -vPe -vPe -vPe -iwf -lvG -vPe -mCM -vPe -izZ -vPe -obJ -daD -wFZ -oxJ -oxJ -oxJ -oxJ -oxJ -oxJ -oxJ -oxJ -oxJ -oxJ -oxJ -oxJ -oxJ -oxJ -oxJ -oxJ -oxJ -vIV -iEU -iEU -iEU -iEU -iEU -nAO -duS -vPe -xho -ftx -dfm -dfm -pQD -azv -lKE -nKg -kxL -xho -akg -vPe -jDy -qfY -iEU -iEU -iEU -qfY -duS -qqf -wpJ -mPk -vPe -vPe -akg -vPe -vPe -wpJ -ivl -vPe -iwb -cyF -vPe -akg -vPe -wpJ -vPe -vPe -iAZ -iEV -wFL -wSW -vPe -iAZ -iGf -cJJ -uXk -iWh -iGn -iEV -iWh -iGn -iEV -iWh -iGn -duS -vPe -vPe -ivl -vPe -wpJ -vPe -vPe -vPe -vPe -vPe -nAj -wpJ -vPe -rRS -rRS -rRS -"} -(83,1,1) = {" -pNM -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pwa -pNM -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -kXq -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -yds -psf -psf -psf -psf -vvx -nvB -urM -nvB -vvx -psf -psf -psf -psf -yds -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +rRS +rRS +rRS +ivl +vPe +iAZ +duS +vPe +ivl +vPe +vPe +vPe +iwf +lvG +vPe +mCM +vPe +izZ +vPe +obJ +daD +wFZ +oxJ +oxJ +oxJ +oxJ +oxJ +oxJ +oxJ +oxJ +oxJ +oxJ +oxJ +oxJ +oxJ +oxJ +oxJ +oxJ +oxJ +vIV +iEU +iEU +iEU +iEU +iEU +nAO +duS +vPe +xho +ftx +dfm +dfm +pQD +azv +bKX +nKg +kxL +xho +akg +vPe +jDy +qfY +iEU +iEU +iEU +qfY +duS +qqf +wpJ +mPk +vPe +vPe +akg +vPe +vPe +wpJ +ivl +vPe +iwb +cyF +vPe +akg +vPe +wpJ +vPe +vPe +iAZ +iEV +wFL +wSW +vPe +iAZ +iGf +cJJ +uXk +iWh +iGn +iEV +iWh +iGn +iEV +iWh +iGn +duS +vPe +vPe +ivl +vPe +wpJ +vPe +vPe +vPe +vPe +vPe +nAj +wpJ +vPe +rRS +rRS +rRS +"} +(83,1,1) = {" +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -74124,47 +74188,6 @@ rRS rRS "} (84,1,1) = {" -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM -pNM mVX mVX mVX @@ -74218,47 +74241,88 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -74475,47 +74539,47 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds -psf -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -74732,47 +74796,47 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds -psf -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -74989,47 +75053,47 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds -psf -psf -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -75246,47 +75310,47 @@ mVX mVX mVX mVX -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -psf -psf -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS rRS @@ -75503,47 +75567,47 @@ mVX mVX mVX mVX -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -psf -psf -psf -psf -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS vPe @@ -75760,47 +75824,47 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds -psf -psf -psf -psf -psf -psf -psf -afa -afa -afa -afa -afa -afa -afa -afa -afa -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS vPe @@ -76017,47 +76081,47 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds -psf -psf -psf -psf -psf -psf -psf -psf -afa -afa -afa -sdG -afa -afa -afa -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS vPe @@ -76274,47 +76338,47 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS vPe @@ -76531,47 +76595,47 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS vPe @@ -76788,47 +76852,47 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -usR -uVr -wnO -wHu -usR -psf -psf -psf -psf -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX rRS rRS vPe @@ -76951,6 +77015,47 @@ rRS rRS "} (95,1,1) = {" +hoJ +gRr +fWE +gRr +hoJ +hoJ +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -77045,47 +77150,6 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -tKr -wPT -wPT -wPT -tKr -psf -psf -psf -psf -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds rRS rRS vPe @@ -77208,6 +77272,65 @@ rRS rRS "} (96,1,1) = {" +cnn +dHE +gal +bMr +gTu +ipb +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -77284,6 +77407,151 @@ mVX mVX mVX mVX +rRS +rRS +vPe +vPe +vPe +iAZ +duS +ivl +izZ +vPe +vPe +jWb +kKP +kKP +mle +mle +kKP +kKP +kKP +oeH +mZB +pcD +pbN +pbN +pbN +pbN +pbN +qSv +ror +ryw +rRz +siZ +sug +sIY +tgO +ryw +tYq +unV +mZB +vPe +akg +uNb +vPe +akg +iAZ +iEU +duS +vPe +xho +bhW +dfm +dfm +pBc +xho +xJr +ogw +xho +xho +oDL +jQm +jQm +kWe +dQq +wNd +qGW +kWe +jQm +jQm +sfW +xho +vPe +vPe +ivl +wpJ +wpJ +vPe +vPe +wpJ +vPe +wpJ +vPe +vPe +ivl +vPe +wpJ +vPe +iBm +iGn +iEV +iWh +iOm +jhz +cRQ +vPe +vPe +jih +uXk +iOm +jhz +iNW +wFL +wvH +kEZ +duS +xMR +vPe +wpJ +weE +vPe +wpJ +vPe +vPe +vPe +wpJ +eOC +vPe +rRS +rRS +rRS +rRS +"} +(97,1,1) = {" +cnn +bjM +gal +bQZ +cme +ipb +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -77302,169 +77570,6 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -usR -vnx -rzg -jfd -usR -psf -psf -psf -psf -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds -rRS -rRS -vPe -vPe -vPe -iAZ -duS -ivl -izZ -vPe -vPe -jWb -kKP -kKP -mle -mle -kKP -kKP -kKP -oeH -mZB -pcD -pbN -pbN -pbN -pbN -pbN -qSv -ror -ryw -rRz -siZ -sug -sIY -tgO -ryw -tYq -unV -mZB -vPe -akg -uNb -vPe -akg -iAZ -iEU -duS -vPe -xho -bhW -dfm -dfm -pBc -xho -xJr -ogw -xho -xho -oDL -jQm -jQm -kWe -dQq -wNd -qGW -kWe -jQm -jQm -sfW -xho -vPe -vPe -ivl -wpJ -wpJ -vPe -vPe -wpJ -vPe -wpJ -vPe -vPe -ivl -vPe -wpJ -vPe -iBm -iGn -iEV -iWh -iOm -jhz -cRQ -vPe -vPe -jih -uXk -iOm -jhz -iNW -wFL -wvH -kEZ -duS -xMR -vPe -wpJ -weE -vPe -wpJ -vPe -vPe -vPe -wpJ -eOC -vPe -rRS -rRS -rRS -rRS -"} -(97,1,1) = {" mVX mVX mVX @@ -77559,47 +77664,6 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -usR -vpr -vtR -rZs -usR -psf -psf -psf -psf -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds rRS rRS vPe @@ -77722,6 +77786,22 @@ rRS rRS "} (98,1,1) = {" +hoJ +gRr +jHe +gRr +hoJ +hoJ +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -77816,21 +77896,6 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -tKr -vpJ -woV -vtR -usR -psf -psf -psf -psf -yds mVX mVX mVX @@ -77856,7 +77921,6 @@ mVX mVX mVX mVX -pNM rRS rRS vPe @@ -77979,6 +78043,22 @@ rRS rRS "} (99,1,1) = {" +jvI +jvI +jvI +jvI +jvI +jvI +giC +jvI +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -78073,21 +78153,6 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -sZA -qVX -woV -vtR -usR -psf -psf -psf -psf -yds mVX mVX mVX @@ -78113,7 +78178,6 @@ mVX mVX mVX mVX -pNM rRS rRS ivq @@ -78236,6 +78300,22 @@ rRS rRS "} (100,1,1) = {" +cHC +jfv +egK +cSb +cSb +btN +bSw +hCr +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -78330,21 +78410,6 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -sZA -vAU -woV -vtR -usR -psf -psf -psf -psf -yds mVX mVX mVX @@ -78370,7 +78435,6 @@ mVX mVX mVX mVX -pNM rRS rRS vPe @@ -78493,8 +78557,24 @@ rRS rRS "} (101,1,1) = {" +cHC +dvT +blt +jwD +jwD +jwD +bSw +hCr mVX mVX +piE +oQV +dDb +ftK +dDb +oQV +piE +mVX mVX mVX mVX @@ -78587,21 +78667,6 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -tKr -vtR -woV -xbu -usR -psf -psf -psf -psf -yds mVX mVX mVX @@ -78627,7 +78692,6 @@ mVX mVX mVX mVX -pNM rRS rRS iwb @@ -78750,8 +78814,24 @@ rRS rRS "} (102,1,1) = {" +cHC +aTE +jwD +bjs +bjs +jwD +bSw +hCr mVX mVX +oQV +nuC +qDA +qDA +lPy +jNn +piE +mVX mVX mVX mVX @@ -78844,21 +78924,6 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -usR -rdF -woV -xbu -usR -psf -psf -psf -psf -yds mVX mVX mVX @@ -78884,7 +78949,6 @@ mVX mVX mVX mVX -pNM rRS rRS rRS @@ -79007,8 +79071,24 @@ rRS rRS "} (103,1,1) = {" +jvI +giC +aWY +giC +giC +gmU +jvI +jvI mVX mVX +dDb +eeO +lPy +wDF +lPy +hhM +rYU +mVX mVX mVX mVX @@ -79101,21 +79181,6 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -usR -usR -woV -usR -usR -psf -psf -psf -psf -yds mVX mVX mVX @@ -79141,7 +79206,6 @@ mVX mVX mVX mVX -pNM rRS rRS rRS @@ -79264,6 +79328,40 @@ rRS rRS "} (104,1,1) = {" +bRt +bRt +bRt +vQc +vQc +vQc +eIX +iUN +bRt +bRt +oQV +ejG +qDA +qDA +lPy +hjp +piE +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -79358,39 +79456,6 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -psf -usR -jmf -usR -psf -psf -psf -psf -psf -yds -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX mVX mVX mVX @@ -79398,7 +79463,6 @@ mVX mVX mVX mVX -pNM rRS rRS rRS @@ -79521,6 +79585,23 @@ rRS rRS "} (105,1,1) = {" +tNp +qqE +nFv +ted +ted +ted +rxG +bnT +wQE +bRt +piE +oQV +dDb +jNQ +dDb +oQV +piE mVX mVX mVX @@ -79615,22 +79696,6 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds -mVX mVX mVX mVX @@ -79655,7 +79720,6 @@ mVX mVX mVX mVX -pNM rRS rRS rRS @@ -79778,6 +79842,25 @@ rRS rRS "} (106,1,1) = {" +rbb +qqE +ted +ted +ted +ted +bnT +ted +gEb +kAR +oJI +sKg +lDH +sKg +sKg +sXM +prf +oJI +oJI mVX mVX mVX @@ -79872,24 +79955,6 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds -mVX -mVX -mVX mVX mVX mVX @@ -79912,7 +79977,6 @@ mVX mVX mVX mVX -pNM rRS rRS rRS @@ -80035,6 +80099,25 @@ rRS rRS "} (107,1,1) = {" +rbb +qqE +nhX +bnT +bnT +bnT +bnT +ted +hwm +kAR +sKg +lBl +lOB +svC +tbv +tbX +tbv +qgA +sgG mVX mVX mVX @@ -80129,24 +80212,6 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds -mVX -mVX -mVX mVX mVX mVX @@ -80169,7 +80234,6 @@ mVX mVX mVX mVX -pNM rRS rRS rRS @@ -80292,6 +80356,25 @@ rRS rRS "} (108,1,1) = {" +rbb +qqE +ted +ted +ted +ted +bnT +ted +gEb +kAR +mMn +nVS +maj +sKg +tbv +kAJ +tbv +qgA +sgG mVX mVX mVX @@ -80386,24 +80469,6 @@ mVX mVX mVX mVX -yds -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -psf -yds -mVX -mVX -mVX mVX mVX mVX @@ -80426,7 +80491,6 @@ mVX mVX mVX mVX -pNM rRS rRS rRS @@ -80549,6 +80613,25 @@ rRS rRS "} (109,1,1) = {" +hIf +qqE +sHH +ted +ted +ted +uPJ +bnT +ePZ +bRt +sKg +ogO +oiv +ovE +oHK +peG +tbv +qgA +sgG mVX mVX mVX @@ -80643,24 +80726,6 @@ mVX mVX mVX mVX -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -yds -mVX -mVX -mVX mVX mVX mVX @@ -80683,7 +80748,6 @@ mVX mVX mVX mVX -pNM rRS rRS rRS @@ -80806,6 +80870,25 @@ rRS rRS "} (110,1,1) = {" +bRt +bRt +bRt +vQc +vQc +vQc +eIX +rKd +bRt +bRt +oJI +sKg +okx +sKg +oJI +sKg +dhK +oJI +oJI mVX mVX mVX @@ -80922,25 +81005,6 @@ mVX mVX mVX mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -pNM rRS rRS rRS @@ -85484,7 +85548,7 @@ kQk ykS ykS ykS -ykS +xDA ykS ykS ykS @@ -85741,8 +85805,8 @@ tdj kQk ykS ykS -ykS -ykS +tbW +xDA ykS ykS mFm @@ -85998,9 +86062,9 @@ gLX tdj ykS ykS -ykS -ykS -ykS +gLw +xfs +xDA nVI ykS ykS @@ -86125,15 +86189,15 @@ mVX mVX mVX mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX +nAN +nAN +nAN +nAN +nAN +nAN +nAN +nAN +nAN mVX mVX mVX @@ -86255,10 +86319,10 @@ tcW ova ova mBj -ykS -ykS -ykS -ykS +kgk +xhP +xfs +xDA ykS ykS ykS @@ -86382,15 +86446,15 @@ mVX mVX mVX mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX +nAN +wJm +yhG +pPo +yhG +aHe +nAN +sIz +nAN mVX mVX mVX @@ -86512,11 +86576,11 @@ hxT tcW myy ykS -ykS -ykS -ykS -ykS -ykS +uHf +kMS +dUN +xfs +xDA ykS ykS mFm @@ -86639,15 +86703,15 @@ mVX mVX mVX mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX +nAN +rdz +sZK +sZK +sZK +eDu +nAN +bBe +nAN jMD mVX mVX @@ -86768,13 +86832,13 @@ drh tcW mfc ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS +whe +vNF +hNg +uFB +wQF +vNF +xDA nVI ykS ykS @@ -86896,15 +86960,15 @@ mVX mVX mVX jMD -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX +nAN +rdz +sZK +sZK +sZK +eDu +tIk +jJD +nAN jMD mVX mVX @@ -87024,15 +87088,15 @@ ykS hxT cUD ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS +eul +eul +mCK +xIi +nzK +aYm +fAv +tbW +xDA ykS ykS ykS @@ -87153,15 +87217,15 @@ mVX mVX mVX jMD -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX +nAN +gxu +uAg +jCl +uAg +aYk +nAN +bBe +nAN jMD mVX mVX @@ -87281,16 +87345,16 @@ ykS hxT cUD ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS +eul +tlW +mCK +aTQ +lrJ +iVW +iVW +odX +gfP +xDA ykS rns ykS @@ -87410,15 +87474,15 @@ mVX mVX mVX jMD -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX +nAN +nAN +nAN +nAN +nAN +nAN +nAN +bBe +nAN jMD mVX mVX @@ -87470,10 +87534,10 @@ pqb pqb pqb pqb -mmo +tEi kVf hsJ -dSG +sJY pqb pqb mVX @@ -87538,16 +87602,16 @@ plK hxT cUD ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS +eul +eul +mCK +uLd +ubF +xhP +xhP +xhP +xfs +mll ykS ykS ykS @@ -87651,15 +87715,15 @@ mVX mVX jMD mVX -fID -fID -fID +iRb +bkn +iRb mVX jMD mVX -fID -fID -fID +vMQ +qKL +vMQ mVX jMD mVX @@ -87672,40 +87736,40 @@ nAN nAN nAN nAN -nAN -nAN -nAN +psX +tHL +fJp nAN nAN nAN nAN nAN jMD -fID -fID -fID -fID -fID +nSu +hDY +ggH +aBV +nSu jMD nAN -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID +mVX +mVX +fzV +xRD +xRD +xRD +fzV +mVX +mVX +mVX +mVX +fzV +fzV +fzV +fzV +fzV +mVX +mVX pqb pqb pqb @@ -87726,11 +87790,11 @@ oVf vDj oVf pqb -aNU +dXA mxj myp -vsm -qza +kAt +kfC pqb pqb mVX @@ -87796,15 +87860,15 @@ tcW cUD ykS ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS +eul +tIe +rCS +uFn +xhP +xhP +pvn +cHW +pYK tdj ykS tdj @@ -87907,17 +87971,17 @@ mVX mVX mVX jMD -fID -fID -fID -fID -fID +iRb +iRb +lzU +iRb +iRb onc -fID -fID -fID -fID -fID +vMQ +vMQ +xxa +vMQ +vMQ jMD mVX onc @@ -87931,38 +87995,38 @@ nAN nAN nAN nAN +srJ +bBe +aoW +nIr +nIr +waZ nAN -edm -mSD -sXg -sXg -gDX -nAN -fID -fID -fID -fID -fID +dcl +jAV +jAV +jAV +dcl nAN nAN -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID +mVX +fzV +fzV +aRJ +rqr +uMf +fzV +vtH +xRD +xRD +vtH +fzV +bbE +pvX +rcD +fzV +fzV +mVX pqb pqb pqb @@ -87987,7 +88051,7 @@ myp xmb hpD bje -vpL +gDk pqb pqb mVX @@ -88053,15 +88117,15 @@ tcW cUD ykS ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS +eul +mCK +mBi +bLb +xhP +xhP +pvn +psd +pYK ykS ykS ykS @@ -88164,62 +88228,62 @@ mVX mVX mVX onc -fID -fID -fID -fID -fID +iRb +bgJ +rFb +vAs +iRb onc -fID -fID -fID -fID -fID +vMQ +bej +rmm +leh +vMQ onc onc onc onc onc onc -fID -qMC -ivZ -gjE -ivZ -qMC -fID -nAN -wAm -mSD -ggJ -ggJ -gDX +eYl +jUO +iKU +tte +iKU +wiU +fID +jtl +vHF +aoW +kpi +kpi +waZ nAN -fID -fID -fID -fID -fID +nSu +kTa +qsV +chv +nSu nAN nAN -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID +fzV +fzV +sfK +ijs +alw +rRG +fzV +bZc +raj +cqf +xRv +fzV +rGF +flG +axP +nRZ +fzV +fzV pqb tSR pqb @@ -88240,13 +88304,13 @@ kTy myg uam pqb -lhn -bPw -xHb -aKY +sQD +dBL +mVe +oJm pqb -qAy -ono +eVn +tad mVX mVX pNM @@ -88309,16 +88373,16 @@ plK hxT cUD ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS +eul +eul +mCK +sIh +ubF +xhP +xhP +xhP +bYi +htX ykS ykS ykS @@ -88421,62 +88485,62 @@ mVX mVX onc onc -fID -fID -fID -fID -fID +iRb +wrq +rFb +jec +iRb onc -fID -fID -fID -fID -fID +vMQ +sEb +rmm +rUL +vMQ onc onc onc onc onc onc -qMC -qMC -fyc -cuU -fyc -qMC -qMC -xhX -owf -qcL -ggJ -ggJ -ylA -nAN -fID -fID -fID -fID -fID -nAN -nAN -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID +wiU +wiU +iXI +mfP +iXI +wiU +wiU +kmM +aPL +qap +kpi +kpi +tXE +nAN +dcl +kTa +lGL +kTa +dcl +nAN +nAN +fzV +uTw +jJA +jJA +jJA +iJd +fzV +erI +bHU +gVU +tMy +fzV +liD +dVg +buk +laj +qXF +fzV pqb pqb pqb @@ -88566,16 +88630,16 @@ ykS hxT cUD ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS +eul +tlW +mCK +pyh +lrJ +iVW +iVW +acK +rgH +bQF ykS nQm ykS @@ -88678,62 +88742,62 @@ onc onc onc onc -fID -fID -fID -fID -fID +iRb +nRK +rFb +ijZ +iRb onc -fID -fID -fID -fID -fID +vMQ +nXE +rmm +xqU +vMQ onc cte bQu cMG cte onc -ivZ -yfS -cuU -oFo -cuU -uJp -ivZ -xhX +iKU +rAR +mfP +bhf +mfP +vfD +iKU +kmM hTD fAg fAg fAg kZY nAN -fID -fID -fID -fID -fID -nAN -nAN -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID +ePN +kTa +lGL +kTa +ePN +nAN +nAN +vtH +xYl +jJA +jJA +jJA +jJA +jiI +jiI +fgS +fgS +jiI +fzV +fzV +fzV +jiI +iac +csr +fzV pqb pqb pqb @@ -88758,7 +88822,7 @@ uam wcz oVf pqb -qAy +eVn fID hne mVX @@ -88823,15 +88887,15 @@ ykS hxT cUD ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS +eul +eul +mCK +uLd +wos +ssx +lxP +tbW +bQF ykS ykS ykS @@ -88936,15 +89000,15 @@ onc onc onc onc -fID -dom -fID +tnL +ceX +xvY onc onc onc -fID -djs -fID +cCQ +dsK +jok onc onc cte @@ -88952,45 +89016,45 @@ tZe tZe cte onc -gjE -cuU -qHw -mdZ -omF -cuU -oxE -cPv +tte +mfP +vgz +sjU +qzU +mfP +vjK +vbO mTv fAg fAg fAg kZY nAN -fID -fID -fID -fID -fID -nAN -nAN -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID +dcl +kTa +lGL +kTa +dcl +nAN +nAN +kMT +uVl +jJA +jJA +fBQ +vbB +orF +vtH +fdL +fdL +vtH +erI +qBf +hcs +fzV +iac +wlj +fzV pqb pqb pqb @@ -89015,7 +89079,7 @@ myg myg ovc pqb -qAy +eVn fID mVX mVX @@ -89081,13 +89145,13 @@ pqv tcW mfn ykS -ykS -ykS -ykS -ykS -ykS -ykS -ykS +rug +bpJ +hNg +uFB +wQF +bpJ +bQF nVI ykS ykS @@ -89209,45 +89273,45 @@ tZe tZe jtQ onc -ivZ -yfS -cuU -dYQ -cuU -uJp -ivZ -xhX +iKU +rAR +mfP +iAD +mfP +vfD +iKU +kmM hTD fAg fAg fAg kZY nAN -fID -fID -fID -fID -fID +nSu +llT +lGL +fhy +nSu nAN nAN -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID +kMT +xuv +jJA +xXn +xwz +pKU +kZy +fzV +qyq +qyq +fzV +ydm +dEc +jbQ +fzV +cpW +tjY +fzV pqb sdw sdw @@ -89255,16 +89319,16 @@ sdw eNf myp trB -qvY -fpU -mVN -fpU -fEN -ihi -fpU -kEK -fpU -bla +ezA +mDU +pub +mDU +ktZ +xEV +mDU +jQj +mDU +wgx eNf trB efW @@ -89339,11 +89403,11 @@ pqv tcW myE ykS -ykS -ykS -ykS -ykS -ykS +uNo +oyc +pUJ +bYi +bQF ykS ykS mFm @@ -89466,45 +89530,45 @@ tZe tZe hNh onc -qMC -qMC -biy -cuU -biy -qMC -qMC -xhX -jGz -dnM -aqp -fqC -wZK -nAN -fID -fID -fID -fID -fID -nAN -nAN -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID +wiU +wiU +kNG +mfP +kNG +wiU +wiU +kmM +tqr +tLb +ttN +lHs +uho +nAN +dcl +kTa +lGL +kTa +dcl +nAN +nAN +kMT +kbV +jJA +xXn +qpM +pKU +tKZ +fzV +npn +qyq +lbH +auF +rrU +exr +fzV +iac +tjY +fzV pqb sdw sdw @@ -89512,16 +89576,16 @@ sdw eNf myp trB -fjw +uLj myp -aLI -wxE +mXv +kyM myp -qTA -xQA -sJr +wlb +aWA +poN myp -uzh +vJu eNf xAZ pqb @@ -89529,7 +89593,7 @@ pqb pqb pqb pqb -qAy +eVn fID hne mVX @@ -89596,10 +89660,10 @@ ykS pqv kQT mBj -mCD -ykS -ykS -ykS +xaJ +xhP +bYi +bQF ykS ykS ykS @@ -89724,11 +89788,11 @@ tZe sVV onc fID -qMC -ivZ -gjE -ivZ -qMC +wiU +iKU +tte +iKU +wiU fID nAN nAN @@ -89737,31 +89801,31 @@ nAN nAN nAN nAN -fID -fID -fID -fID -fID +oTf +kTa +lGL +kTa +oTf nAN nAN -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID +vtH +erI +jJA +xXn +cGL +fJh +tll +fzV +qyq +qyq +fzV +vZg +osM +tIw +fzV +iac +aPy +fzV pqb cBu sdw @@ -89769,16 +89833,16 @@ myp mxj myp trB -fJu -wxE +gXQ +kyM myp -uYJ +bUi myp -qTA -ize +wlb +xKI myp -xQA -twC +aWA +aux eNf trB efW @@ -89786,7 +89850,7 @@ uam wcz oVf pqb -qAy +eVn fID mVX mVX @@ -89853,9 +89917,9 @@ ykS ykS ykS ykS -ykS -ykS -ykS +rAu +bYi +bQF nVI ykS ykS @@ -89988,37 +90052,37 @@ nAN nAN nAN nAN -fLF -iQy -ueL -luA -nmT +kXz +xCr +bBh +kHS +tRj nAN -fID -fID -fID -fID -fID +dcl +kTa +lGL +kTa +dcl nAN nAN -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID +fzV +tfX +seE +tfX +fzV +fzV +fzV +tfX +fdL +fdL +tfX +fzV +fzV +fzV +tfX +sSa +tfX +fzV pqb sdw sdw @@ -90026,16 +90090,16 @@ myp mxj fBc trB -vPL -uYJ +neK +bUi myp -uYJ +bUi tqT -jAZ -ize +hzJ +xKI myp -ize -eQX +xKI +keE eNf awK kvN @@ -90110,8 +90174,8 @@ ykS ykS ykS ykS -ykS -ykS +tbW +bQF ykS ykS mFm @@ -90235,47 +90299,47 @@ tZe tZe tZe tZe -wMB -sFQ +fDV +moN vAm -uoM -biT +hat +gBS iwS -wBV -vMv -fbk -bvD -jUo -yfP -kjt -pEa -aeD +sFz +nUi +eQt +fuR +rIE +kkq +oJt +ckm +hya nAN -fID -fID -fID -fID -fID +nSu +wDk +lGL +dmx +nSu nAN nAN -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID +vtH +dFD +qyq +aPi +vtH +saH +saH +dFD +qyq +qyq +aPi +saH +saH +vtH +dFD +qyq +aPi +vtH pqb sdw sdw @@ -90283,16 +90347,16 @@ myp mxj myp trB -vqW -crY +qTJ +eVU myp -uYJ +bUi myp -qTA -ize +wlb +xKI myp -fui -kgO +nQl +gPP eNf trB efW @@ -90300,7 +90364,7 @@ nyo rkU oVf pqb -qAy +eVn fID hne mVX @@ -90343,7 +90407,7 @@ fzw fnh fzw fnh -msS +gAV fnh fzw fnh @@ -90367,7 +90431,7 @@ ykS ykS tdj ykS -ykS +bQF ykS ykS ykS @@ -90446,11 +90510,11 @@ jlG hNH spu tbh -aoA -aoA -aoA -aoA -aoA +odZ +odZ +odZ +odZ +odZ tqy pyu sgv @@ -90493,46 +90557,46 @@ wUF sAT tZe pTI -sFQ +moN qRs -fMn -eLb +htN +mQg iwS -uCx -qqt -juM -pEa -rxs -vXQ -uCx -ueL -lRc +kTW +nNn +rzE +ckm +luw +opi +kTW +bBh +rCg nAN -fID -fID -mgz -fID -fID +nSu +ePN +pEE +ePN +nSu nAN nAN -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID +nrV +qyq +qyq +qyq +gJa +qyq +qyq +qyq +qyq +qyq +qyq +qyq +qyq +gJa +qyq +qyq +qyq +agl pqb sdw sdw @@ -90540,16 +90604,16 @@ myp mxj mqK trB -fjw +uLj myp -qkE -crY +nnN +eVU myp -qTA -fui -xry +wlb +nQl +xpj myp -uzh +vJu eNf xAZ pqb @@ -90557,7 +90621,7 @@ pqb pqb pqb pqb -qAy +eVn fID mVX mVX @@ -90698,24 +90762,24 @@ mVX mVX mVX wLM -htt +nJH cHU cHU cHU cIn -aoA -aoA -aoA -aoA -aoA +odZ +odZ +odZ +odZ +odZ tqy pyu rpk kxR hnv -dhv -tAC -rHl +qlu +uSc +fnD hnv dgy onc @@ -90752,44 +90816,44 @@ iwS iwS eyb iwS -rFx -cMz +gnR +tRF iwS -sBC -rxs -uCx -ueL -juM -rxs -aeD +wIg +luw +kTW +bBh +rzE +luw +hya lYZ -aUM +nMb kWm kWm shl -eTK +qDT shl kWm kWm kWm -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID +nrV +qyq +qyq +qyq +gJa +qyq +qyq +qyq +qyq +qyq +qyq +qyq +qyq +gJa +qyq +qyq +qyq +agl pqb cBu sdw @@ -90797,16 +90861,16 @@ myp mxj myp trB -bJk +kLX txY -ipv +rjH txY -hUV -qpR -uIF -mdx -uIF -ifh +jUN +njO +hvZ +ufR +hvZ +wXo eNf trB efW @@ -90959,8 +91023,8 @@ hNH cHU cHU kvz -owS -aoA +oGK +odZ oZR oZR oZR @@ -90968,13 +91032,13 @@ fTt kcO pyu rpk -oNm -cKh -kNc -bji -lAD -sSG -bnf +uQD +hXs +wKn +lKS +fVB +mqd +kqu onc onc fsr @@ -90996,57 +91060,57 @@ wUF tZe wUF onc -rvj +pdE dkR -oyd +cts kbo onc -pbs -dEK -rDM +tzY +pLN +ewA onc -kVP +uDo lIh rnN tOu -nyg -way +vlQ +hTU iwS -aeD -pEa -ueL -pEa -uPV -yfP +hya +ckm +bBh +ckm +eru +kkq lYZ -aok +bDb kWm kWm -sGH +mxY evA uku fkW kWm kWm kWm -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID +vtH +qoS +rbZ +qoS +vtH +qyq +qyq +anE +qyq +dXS +djc +bVq +aRd +vtH +qoS +rbZ +qoS +vtH pqb sdw sdw @@ -91060,10 +91124,10 @@ nVl mxS myp myp -oUl -aUs -oEM -uJA +gJq +oSm +ltP +pIW eNf viw kvN @@ -91213,11 +91277,11 @@ mVX mVX wLM dvz -sDM -mvz -fgc -pJo -aoA +aAF +mcX +aLy +gkW +odZ oZR oZR oZR @@ -91226,12 +91290,12 @@ tqy jcE rpk art -kNc -bji -bji -bji -lAD -noS +wKn +lKS +lKS +lKS +fVB +aya onc onc bRi @@ -91253,7 +91317,7 @@ ngX tZe wUF mPM -dEK +pLN ihM ihM tPt @@ -91262,48 +91326,48 @@ sDc jWT nzW onc -frJ +ilu ueh -kDD +ugK iwS wLL qUb iwS -bXr -yfP +gAp +kkq lYZ -yfP +kkq iwS -pJG -ueL -ueL +qdd +bBh +bBh kWm -sMp -sMp +lZV +lZV tLO oBC -uqG -sMp -sMp +mUi +lZV +lZV kWm -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID +fzV +urj +qms +deE +fzV +ooE +jiI +vtH +lUp +bcx +vtH +jiI +iZX +fzV +urj +qms +deE +fzV pqb sdw sdw @@ -91317,10 +91381,10 @@ lBg lBg myp myp -oEM -oEM -oEM -chF +ltP +ltP +ltP +gqg eNf trB efW @@ -91470,26 +91534,26 @@ mVX mVX wLM dvz -siq +vAb vTg vTg tNv -gFs -dGv -gLC +vqd +xuT +sSm oZR xuc tqy lhs rpk -jxO +yaB ctv ctv ctv ctv ctv ctv -aqo +sBC onc wEK qPt @@ -91504,63 +91568,63 @@ onc sVm vlH sDc -hxE +wdH onc wUF tZe wUF onc -jpQ +nzq eNL kgA svl onc vlH jWT -hby +ftQ onc -iJC +fJC ueh -oXT +wxh eyb -rKR -snf +mTD +kEv iwS iwS iwS -gTR +qoH iwS iwS -mfd -mjU -kDd +vPW +ihP +mZk kWm -mtY -fIa +nWx +sRk tLO -lhy +gzp ueN -fIa -lRQ +sRk +ase kWm -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID +fzV +ykH +ykH +ykH +fzV +fzV +fzV +euY +ddb +rMh +rDf +fzV +fzV +fzV +ykH +ykH +ykH +fzV pqb pqb pqb @@ -91574,10 +91638,10 @@ oBR hzh myp myp -oEM -oEM -aUs -chF +ltP +ltP +oSm +gqg eNf xAZ pqb @@ -91726,27 +91790,27 @@ mVX mVX mVX wLM -otz -siq +oIM +vAb vTg puZ tQh -iak -sHL +aOO +fBk puZ vTg sOr rwi lhs rpk -cqx -bhM -bhM -shI -bhM -bhM -bhM -ctz +tGh +rlF +rlF +wqP +rlF +rlF +rlF +ctG onc iqP feR @@ -91761,7 +91825,7 @@ onc kpZ jWT jWT -dEK +pLN mPM wUF tZe @@ -91783,7 +91847,7 @@ fYP lZM xIm sZP -wWA +iDM sZP pMT wde @@ -91792,32 +91856,32 @@ kWm kWm kWm kWm -mSy -mSy +xVi +xVi tLO -oZI +lhl ueN -mSy -mSy +xVi +xVi kWm -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID -fID +fzV +xig +fKr +xig +fzV +mVX +fzV +rcB +rDf +pre +xVY +fzV +mVX +fzV +xig +fKr +xig +fzV pqb pqb pqb @@ -91831,10 +91895,10 @@ tSu aIy myp myp -gAR -xpS -xpS -vYd +aag +bSd +bSd +wwE eNf trB efW @@ -91984,26 +92048,26 @@ mVX mVX iIs iIs -anL +qNE vTg vTg tNv -lPG -inm -pbI +dfd +xTS +sGl oZR rXP tqy lhs rpk -jxO +yaB ctv ctv ctv ctv ctv ctv -dDF +fny onc oIW nWB @@ -92016,16 +92080,16 @@ onc onc onc kqD -fcT +voT nzW -bsy +nig onc wUF tZe wUF onc -jNs -cHQ +wfo +xMC aOR nzW onc @@ -92033,8 +92097,8 @@ onc onc onc onc -otJ -phW +dRg +uAJ ueh iwS aRW @@ -92043,38 +92107,38 @@ pUa pUa pUa pUa -sTj -knR +lwk +jJr iUy -okw -kEW +gOl +vOq kWm vtr vtr tLO -jvX +xpQ ueN vtr vtr kWm -fID -fID -fID -fID -fID -fID -fID -fID -fID -lms -fID -fID -fID -fID -fID -fID -fID -fID +mVX +xig +xig +xig +mVX +mVX +fzV +vtH +iyG +ebI +vtH +fzV +mVX +mVX +xig +xig +xig +mVX pqb reY hiF @@ -92241,11 +92305,11 @@ mVX mVX mVX wLM -sAS -bBo -gwz -vsc -aoA +cGy +aqV +bPG +jXt +odZ oZR oZR oZR @@ -92254,11 +92318,11 @@ tqy jcE rpk art -kUK -wXK -wXK -wXK -ujw +uBl +qCu +qCu +qCu +rHV cjY onc onc @@ -92281,30 +92345,30 @@ ngX tZe wUF mPM -dEK -dEK +pLN +pLN jWT yhH onc -jqo -uVb -wIX +wfA +ash +elD iwS iwS iwS iwS iwS -aLY -vRe -hQG +kOx +oOK +aGx fCa pUa pUa oNa iwS -sJH -kjL -unp +qlP +mzH +jtL kWm bbk jny @@ -92318,16 +92382,16 @@ kWm kWm kWm kWm -wZB -wZB +tzC +tzC kWm kWm -amO -amO +vDP +vDP kWm kWm -wZB -wZB +tzC +tzC kWm kWm kWm @@ -92355,7 +92419,7 @@ efW nyo rkU oVf -dUt +cKq pqb mVX mVX @@ -92501,8 +92565,8 @@ wLM hNH cHU kvz -obI -aoA +svr +odZ oZR oZR oZR @@ -92510,20 +92574,20 @@ mli kcO pyu rpk -vcM -eDv -kUK -wXK -ujw -vmx -tMM +eXk +ygT +uBl +qCu +rHV +tcH +wZz onc voi nWB nWB nWB avP -xFX +xQp rBp rBp rBp @@ -92532,63 +92596,63 @@ onc mES pVt rfO -hxE +wdH onc wUF tZe cte onc -bDp -igZ +bdw +jdQ jWT jFM onc vES vES vES -yjI -wGE -lYx -wDu +pOQ +dDW +xAt +vuc iwS iwS -hNo -oih -fht +doA +naM +mpj pUa pUa oNa iwS jDB -gom +uWy jDB kWm evA nHr gul oBC -gOH +bSx nHr nHr uSA nHr nHr -gLF -vXv +psv +lJP nHr nHr nHr nHr uku -pCq +ivb nHr nHr nHr nHr -lRR -adj -bul -vqP +wcM +euy +kGp +vTi pqb ont tGz @@ -92755,23 +92819,23 @@ mVX mVX mVX wLM -nvQ +cwU cHU cHU cIn -aoA -aoA -aoA -aoA -aoA +odZ +odZ +odZ +odZ +odZ tqy pyu rpk qFa aXl -eQO -iNb -iSJ +dCK +cUs +gFC aXl pcw onc @@ -92780,7 +92844,7 @@ nWB nWB nWB bBI -tjc +xac rBp rBp rBp @@ -92789,38 +92853,38 @@ onc lBF tZe tZe -dEK +pLN mPM wUF tZe itS onc -ptx +oFM pTF tZe rfO onc -dWB -dpw -lxv -xVj +csN +oQO +aLD +ahD vES vES vES siN -teo -emH -eQA -fht +eiF +uqZ +uOa +mpj uFT pUa -ueR -eqh +sBh +nsd ohk vnv jBc -rps -dpf +oeJ +gMO oBC oBC yau @@ -92843,9 +92907,9 @@ htk htk ozZ ueN -gGR -bul -aNf +hmB +kGp +ylC pqb ont tGz @@ -93015,12 +93079,12 @@ wLM sIC hNH ggS -uOl -aoA -aoA -aoA -aoA -aoA +rtO +odZ +odZ +odZ +odZ +odZ tqy pyu rUb @@ -93044,9 +93108,9 @@ kvI onc onc yce -bjK +sHV qpQ -bsy +nig onc wUF tZe @@ -93057,27 +93121,27 @@ pTF tZe tZe onc -mUU -sdy -sjb -ofN -ueG -dqc -bbi -ofN -nFw -jmt -sql -oCe +wKZ +bVU +wbF +oJc +wta +fCK +bFM +oJc +sfO +qDR +wvg +fUK fCa pUa -ueR -wzK -dyh -xTu +sBh +kkU +cVB +tiF boc -umb -fPj +vUy +kyB ufi ozZ oBC @@ -93089,20 +93153,20 @@ ufi ufi ufi ozZ -vct -qzX -rEu -rEu -rEu -rEu -rEu -rEu -bJo +lpP +qww +uNq +uNq +uNq +uNq +uNq +uNq +nGk fOM ueN oBC oBC -hqq +msO pqb reY kUC @@ -93332,21 +93396,21 @@ oNa iwS kWm kWm -vmX +uTp kWm -vmX -lgz -mOM -qXJ -pjS -lgz -vmX +uTp +vcj +ira +vwe +dtR +vcj +uTp kWm -vmX +uTp kWm kWm tLO -gOH +bSx uku uku uku @@ -93357,9 +93421,9 @@ uku uku gul ueN -adj -bul -vqP +euy +kGp +vTi pqb pqb pqb @@ -93567,11 +93631,11 @@ tZe cte onc aIb -cdD -bri +xNZ +mpW mES onc -cqX +rKq lYZ lYZ lYZ @@ -93582,48 +93646,48 @@ lYZ lYZ bAw waY -esm +kTd lZM pUa udJ iwS kWm -olU -gLN -sMp -sMp +xap +wqj +lZV +lZV oBC -gUc -eud -rep +bni +cqY +bul oBC -sMp -sMp -iDd -olU +lZV +lZV +oNH +xap kWm fuF htk ufi -cWV +tnH ufi -ofB -ofB +qiO +qiO ufi -cWV -lpz +tnH +eDV ufi lgU -gGR -iji -aNf +hmB +mOD +ylC pqb tRY tRY tRY eNf myp -hUu +evj pqb pqb pqb @@ -93639,7 +93703,7 @@ pqb pqb fAN pqb -dkb +lPn fID mVX mVX @@ -93784,9 +93848,9 @@ mVX mVX mVX wLM -odZ -odZ -fpH +iFf +iFf +lFv bGq jKi ohN @@ -93828,49 +93892,49 @@ onc onc onc onc -rBJ +uNI mvQ -imd -qfn -mNl +cXc +pup +eMU lYZ -kfU -ezV +bwd +fcH lYZ eyb njy xpx aRW pUa -sTj -bdQ +lwk +ppZ kWm aSp -gLN -sMp -sMp +wqj +lZV +lZV oBC -khn -wax -cAh +vKl +eWH +daM oBC -sMp -sMp -iDd +lZV +lZV +oNH aSp kWm kWm -bjO +akk kWm kWm nAN -doh -qWE +xcV +qTo nAN nAN pqb -qSC -ejW +oaK +sSU pqb pqb pqb @@ -93894,9 +93958,9 @@ lYr keG hiL cQD -buT +epD pqb -oYW +quv fID aDl mVX @@ -94042,8 +94106,8 @@ mVX mVX wLM dUh -odZ -odZ +iFf +iFf aQX fkh fkh @@ -94085,51 +94149,51 @@ oMM vwP vTz onc -rtr -kNq -ufB -uuD -tpf +rVH +ueU +waz +vOS +kKV lYZ -vCI -pYF +hrI +tMK ohJ eyb nMv bwf aRW pUa -sTj -axM +lwk +oCp kWm -bWc -uyw -sMp -sMp +wAE +rnv +lZV +lZV oBC -oBX -erC -vlF +jid +kDe +kgq oBC -sMp -sMp -qAF -hkg +lZV +lZV +ayG +etw kWm jle -kcH +hWn nRs kWm -ivG -lim -lim -jTE -xqO -eJQ -ole -meF -rxC -gEv +nwq +xGr +xGr +fhx +icQ +aie +inC +beg +pOU +axr pqb pqb izs @@ -94153,7 +94217,7 @@ kCu kCu nXK pqb -rjY +fQO fID mVX mVX @@ -94299,8 +94363,8 @@ mVX mVX wLM gcU -odZ -odZ +iFf +iFf xPF fkh ohN @@ -94342,48 +94406,48 @@ tZe tZe rnV onc -gAL -eHC -jSA -dzA -lCX +oMB +ago +oCh +nOe +mOu lYZ -gFg -gxB -aZl +cxK +ihz +aXP eyb osp bwf aRW pUa -sTj -sLB +lwk +kgC kWm aSp -uyw +rnv oBC oBC oBC oBC -cvg +kaY oBC oBC oBC oBC -qAF +ayG aSp kWm -hgx -kcH -fwM +kXF +hWn +ifS kWm -peZ +lVD fAg fAg fAg -kZD -ufN -psn +nHw +tDo +aig myp myp trB @@ -94403,14 +94467,14 @@ tGz tGz uDD pqb -rxO +fhT kCu -fJf -fJf +wAV +wAV kCu oJi pqb -dkb +lPn fID mVX mVX @@ -94557,8 +94621,8 @@ mVX iIs iIs dGP -odZ -odZ +iFf +iFf fkh ohN ohN @@ -94583,10 +94647,10 @@ wUF wUF aNP onc -xoR -gSl -gSl -xoR +nYA +vPm +vPm +nYA onc onc vod @@ -94600,52 +94664,52 @@ vwP vTz onc juL -dqc -ofN -gvA -byq +fCK +oJc +jgV +jLN lYZ -kTL +ovu vES -xuN +gfm eyb erk fKH aRW pUa -sTj -prs +lwk +oHS kWm -olU -xCc -oPN -hyc -fBr -ovZ -gGz -frj -vtL -caN -ryj -vit -olU +xap +kaz +oMa +kRJ +kzB +xBe +qYE +tPY +ooF +cKI +vYW +sUB +xap kWm -egc +rbD qqS -wze +wLp kWm -kpO +iFB fAg fAg -rxw -jfZ -eJQ -cZF -wUt +kXg +qMf +aie +cko +wRR hpD gRK pqb -hZg +ftj jIK pqb lpB @@ -94662,12 +94726,12 @@ pqb pqb pqb iwv -buT -buT +epD +epD kCu oJi pqb -oYW +quv fID aDl mVX @@ -94814,7 +94878,7 @@ mVX mVX wLM abb -odZ +iFf lJm fkh fkh @@ -94839,12 +94903,12 @@ rye wUF wUF wxO -gSl +vPm jWT jWT jWT jWT -gSl +vPm onc cTV wUF @@ -94856,66 +94920,66 @@ tZe tZe tZe onc -woU +aCs lYZ lYZ lYZ lYZ lYZ -cbK +sZu vES vES bAw fHh -ltb +hLq lZM pUa udJ iwS kWm kWm -mAt -gMD -nJu -stV -xec -knk -fFk -puz -lfD -pVW -gET -dpJ -paN -paN -paN -paN -ykz -rDf +pDz +toh +oxw +bCT +nPt +hLB +iyb +cDS +cHS +uzx +eRR +aiz +gDR +gDR +gDR +gDR +tPx +kYe fAg fAg -ozw +jJv pqb pqb pqb pqb -eGn +aWr pqb pqb eNf -vsm +kAt nCA mxj myp myp ser uVO -qoS +rLo aji kVf kVf aji -qoS +rLo hsJ sAZ kCu @@ -94924,7 +94988,7 @@ kCu kCu oJi pqb -rjY +fQO fID mVX mVX @@ -95101,7 +95165,7 @@ jWT jWT jWT jWT -pBj +uMu onc xzd wUF @@ -95113,15 +95177,15 @@ tZe tZe tZe onc -mue -rBJ -iYa -wAS +pEc +uNI +hWy +kPg lYZ ohJ -pfP -iMk -rIS +uVc +kfE +gap eyb msA kQr @@ -95129,32 +95193,32 @@ aRW pUa xIm wde -pKB +ozy kWm kWm -sEx -vrd -stV -ggL -ggL -ggL -puz -vrd -sEx +wbe +aGD +bCT +qlX +qlX +qlX +cDS +aGD +wbe kWm -vAC -eOY -qAj -oCf -uMB -vAC -peZ +wBr +qVd +lGS +mQQ +dQQ +wBr +lVD fAg fAg -kZD +nHw fmZ ntW -ipZ +rlz uVO kVf uVO @@ -95181,7 +95245,7 @@ gmq vbb naw pqb -dkb +lPn fID mVX mVX @@ -95213,24 +95277,24 @@ cVs doL dxR tYd -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +xXv +viX +xXv +xXv +xXv +ouJ +mEm +mEm +mEm +ouJ +xXv +xXv +xXv +xXv +mVX +mVX +mVX +mVX tYd pNM pNM @@ -95328,13 +95392,13 @@ mVX mVX iIs iIs -erP +aab qJu fkh jPx gMB mDs -scs +uvO iIs tqy pyu @@ -95370,13 +95434,13 @@ tJC tle pNt onc -vrA +iCn vES buW -bAW +gMv lYZ pbe -neo +dYZ acQ kTP iwS @@ -95386,29 +95450,29 @@ aRW pUa pUa oNa -pMe +qbO iwS kWm -gNe -gNe -stV -ggL -ggL -ggL -puz -gNe -gNe +fWt +fWt +bCT +qlX +qlX +qlX +cDS +fWt +fWt kWm -fdw -oDK -hdS -rIi -jRt -vAC -kpO +vGX +vqC +igb +fgq +tyB +wBr +iFB fAg fAg -kZD +nHw fmZ xmb hpD @@ -95419,7 +95483,7 @@ sSK fXZ trB pqb -bIj +kYG sSK hpD hpD @@ -95438,7 +95502,7 @@ pqb pqb pqb pqb -oYW +quv fID aDl mVX @@ -95470,24 +95534,24 @@ azG aAL dyM tYd -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +xXv +wvW +wFV +xhf +xVm +xxJ +xVm +xVm +xVm +xVm +uqw +sVi +kWH +eTw +mVX +mVX +mVX +mVX tYd mVX mVX @@ -95602,7 +95666,7 @@ pGJ pGJ pGJ pGJ -wnC +xRM iIs vQi sAi @@ -95628,51 +95692,51 @@ onc onc onc kHT -uqc -iVe +grF +jZF kLt lYZ lYZ -kHW -vLy -uOd +jtm +qIo +vHf iwS pUa iwS -gqU +iGT pUa pUa oNa -arK +nJe iwS kWm -nev -pVg -fZj -hnF -oqa -mEe -fVV -pVg -nev +aCM +nCx +amK +tJV +uRM +nVg +tfW +nCx +aCM kWm -hrp -dnA -fgt -ciS +pxK +dGA +uWl +dvD aSp -vAC -bgm -bSA -bSA -jfZ +wBr +acx +mZp +mZp +qMf pqb -ipL -kfE -akQ -ipL -kfE -akQ +fvk +qcB +jOp +fvk +qcB +jOp eNf trB pqb @@ -95695,7 +95759,7 @@ fLn xaU uBr pqb -rjY +fQO fID mVX mVX @@ -95727,41 +95791,41 @@ aXg aAL dzo dEE -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +wix +wxH +wKR +xXv +xVm +xVm +xVm +aCe +xVm +xVm +gdD +prZ +kWH +xZc +mVX +mVX +mVX +mVX tYd mVX mVX mVX -icm -iOx -jnr -jVO -kob mVX mVX mVX -icm -iOx -jnr -jVO -kob +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -95879,8 +95943,8 @@ wUF tZe wUF onc -jNs -cHQ +wfo +xMC aOR nzW onc @@ -95888,19 +95952,19 @@ iwS iwS iwS iwS -oXZ +xws iwS iwS iwS iwS iwS -ecJ -ecJ +xSg +xSg xGH wUU wUU kNj -pMe +qbO iwS kWm kWm @@ -95916,20 +95980,20 @@ kWm nAN nAN nAN -ktw -hoq -eZG +qxd +reu +iPn nAN -lej -ihA +pTK +uEf nAN pqb -wFf +taC myp -gyi -wFf +gcZ +taC myp -gyi +gcZ eNf trB pqb @@ -95942,17 +96006,17 @@ pUR myp pUR cmf -wqx +ivr ipn ipn xaU bXH xaU bXH -dWI +pVX roU pqb -dkb +lPn fID mVX mVX @@ -95984,42 +96048,42 @@ azG aAL dzo dFv -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +xXv +xXv +xXv +xXv +xXv +xXv +xVm +lPB +xVm +xVm +tzz +xXv +xXv +xXv +mVX +mVX +mVX +mVX tYd mVX mVX -hLV -igh -iPF -jsZ -jXB -kps -dpg mVX -hLV -igh -lKy -jsZ -jXB -kps -dpg +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -96100,7 +96164,7 @@ mVX mVX iIs iIs -sPu +oKP fkh app xtI @@ -96136,19 +96200,19 @@ wUF tZe wUF mPM -dEK -dEK +pLN +pLN jWT yhH onc -pkP +bCw vES vES vES vES vES vES -yeq +egp fMQ fMQ fMQ @@ -96161,32 +96225,32 @@ fMQ fMQ fMQ fMQ -wmR -lxV -gFo -mcF +cAA +nLd +ccq +mSp nAN -hQX +wyk wrh -xpi +nnM fDY idI vxR nAN -bqR -mYP +wMU +apl nAN -ric -xLO -xLO +aPL +noY +noY csZ pqb -fYj +erD sSK -pZH -fYj +uPb +erD sSK -pZH +uPb xmb bje pqb @@ -96199,8 +96263,8 @@ dGN myp dGN yag -wqx -wqx +ivr +ivr ipn ipn ipn @@ -96209,7 +96273,7 @@ ipn ipn ipn pqb -oYW +quv fID aDl mVX @@ -96241,42 +96305,42 @@ azG aAL dzW qZO -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +mVX +mVX +mVX +mVX +mVX +xXv +xVm +yai +xVm +xVm +nns +xXv +mVX +mVX +mVX +mVX +mVX +mVX tYd mVX mVX -hMy -ikC -iPL -jue -iPL -kru -kLh mVX -hMy -lhU -iPL -lTj -iPL -kru -kLh +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -96393,30 +96457,30 @@ wUF tZe wUF onc -bDp -igZ +bdw +jdQ jWT jFM onc -rIw -jzp -sNt -sNt -sNt -sNt -sNt -cQX +qpP +rjF +ckU +ckU +ckU +ckU +ckU +jFA fMQ -dXk -dXk +eZg +eZg rgF rgF -awU -mnt +aFM +sVL rgF rgF -dXk -dXk +eZg +eZg fMQ hTD fAg @@ -96444,8 +96508,8 @@ pqb pqb pqb pqb -lla -lla +tHQ +tHQ pqb fJR fJR @@ -96456,9 +96520,9 @@ fJR myp fJR pAp -gMP -wqx -wqx +uYa +ivr +ivr ipn ipn ipn @@ -96466,7 +96530,7 @@ ipn ipn ipn pqb -rjY +fQO fID mVX mVX @@ -96498,42 +96562,42 @@ cMm cMm dBJ qZO -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +mVX +mVX +xXv +mEm +mEm +ouJ +xVm +yin +tLj +vIN +iGc +xXv +mVX +mVX +mVX +mVX +mVX +mVX tYd mVX mVX -hMD -ikP -iPL -juD -iPL -ktf -kMQ mVX -hMD -ljz -iPL -juD -iPL -ktf -kMQ +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -96650,28 +96714,28 @@ oiy tZe sTV onc -mSE +hNK xPS ihM eNL onc -jCg -bLx -xed -xed -xed -aov -uue -xQc +cKK +tuh +xQz +xQz +xQz +xAD +eeG +prX fMQ vjq smL -dXk -hlk -dEW -dEW -tQg -dXk +eZg +fcv +cJL +cJL +maJ +eZg uqg uqg fMQ @@ -96695,12 +96759,12 @@ fAg fAg abk pqb -lhk -lhk -lhk -nnf -aPy -lXe +ssL +ssL +ssL +tWj +jaY +vdO ntW hsJ pqb @@ -96713,15 +96777,15 @@ myp myp myp eOl -wVY -wqx -wqx -wqx -wqx -wqx -axQ -fdP -xsd +bRL +ivr +ivr +ivr +ivr +ivr +sjx +mud +ssB pqb nAN nAN @@ -96755,42 +96819,42 @@ aJQ aJQ qZO qZO -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +mVX +xXv +xXv +ugs +ugs +ouJ +xFI +ouJ +xXv +xXv +xXv +xXv +xXv +ouJ +xXv +xXv +xXv +mVX tYd mVX mVX -hOM -ild -iPL -jvb -iPL -kuJ -kNN mVX -hOM -lkD -iPL -lWT -iPL -kuJ -kNN +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -96872,7 +96936,7 @@ mVX mVX mVX mVX -vGJ +ibs jMD jMD mVX @@ -96912,25 +96976,25 @@ xPS ihM ihM onc -rhT -bLx -cei -deM -gOb -rAB -ihc -wzC +nDz +tuh +sFp +ePz +rgg +adC +kIT +rOb fMQ -mLo -sGe +ccX +lVT ffV -hqH -dEW -dEW -daN -bpE -thQ -kSD +efE +cJL +cJL +oTY +oON +lTX +tOR fMQ wRu mzs @@ -96970,19 +97034,19 @@ jlp tqI qco cgU -wSS -wqx -wqx -wSS -wSS -wqx -bim -ksI +gYQ +ivr +ivr +gYQ +gYQ +ivr +mrg +kKp hwc pqb nAN nAN -dqe +eWS fID mVX mVX @@ -97012,42 +97076,42 @@ cYr aAL azG qZO -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +xXv +xXv +ugs +xVm +xVm +xXv +xVm +vzo +xVm +pBK +leE +gWk +nbL +uQU +arg +uqH +xXv +xXv tYd mVX mVX -hQj -ilI -iTp -jxF -iTp -kvR -kOn mVX -hQj -ilI -iTp -jxF -iTp -kvR -kOn +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -97169,47 +97233,47 @@ ihM ihM rag onc -sDN -bLx -cQO -cQO -cQO -xBq -uYX -kNH +xgK +tuh +gVO +gVO +gVO +bfH +kYb +vlW fMQ -dXk -dXk +eZg +eZg rgF rgF -awU -mnt +aFM +sVL rgF rgF -dXk -dXk +eZg +eZg fMQ -pFn -mVk -mVk -bYY +uEQ +rcK +rcK +hNX nAN -vVT -kYF -uox -ftv -vVT -tsO -uox +quG +txZ +jyR +rJF +quG +sVy +jyR nAN nAN nAN -kDB -ijf -ijf -wpg +qnP +hjL +hjL +tJJ pqb -fam +pxs vdf vdf hwc @@ -97228,18 +97292,18 @@ lLt lLt rqJ pqb -inv -ePf +mYM +gQl pqb pqb pqb pqb eEj -bmO -qfa -qfa +wGf +puM +puM nAN -toW +bMP fID aDl mVX @@ -97269,41 +97333,41 @@ aAL aAL aBj tYd -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +xTN +ctL +xVm +xVm +kKs +xXv +kKs +ouJ +xVm +xVm +xVm +xVm +xVm +uQU +bSe +xVm +rdn +xXv tYd mVX mVX mVX -imX -iVo -jAl -jYQ -kwr mVX mVX mVX -imX -iVo -jAl -jYQ -kwr +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -97422,58 +97486,58 @@ onc onc onc jXe -gfq -uPQ +qkx +aVs kgA onc -jRu -sgp -iSK -iSK -iSK -iSK -iSK -coZ +aYp +ajM +hHa +hHa +hHa +hHa +hHa +mFU fMQ xqZ hRy -dXk -hTA -dEW -dEW -tQg -dXk +eZg +wWF +cJL +cJL +maJ +eZg bQi bQi fMQ -qPR -dIZ -dIZ -jWd -nAN -vVT -uEI -uox -swV -vVT -oaw -uox -lCr -qjY +bEW +omd +omd +ulG +nAN +quG +hQU +jyR +buY +quG +ebD +jyR +evD +cby eSL fDP fDP fDP fDP pqb -lhk -lhk -lhk -mBl +ssL +ssL +ssL +nEJ cFY eNf myp -oku +jzj pqb fJR fJR @@ -97488,15 +97552,15 @@ nAN nAN nAN nAN -vAq -emX +sLt +cjr nAN nAN nAN nAN -qfa +puM nAN -iYd +eaX fID mVX mVX @@ -97526,24 +97590,24 @@ aXg aAL dBZ qZO -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +xTN +wxI +kID +xVm +xVm +vzo +xVm +vzo +xVm +xVm +xVm +xVm +xVm +vzo +xVm +xVm +pwr +xXv tYd mVX mVX @@ -97649,7 +97713,7 @@ mVX mVX mVX mVX -vGJ +ibs jMD jMD mVX @@ -97692,21 +97756,21 @@ vES vES kHT fMQ -nTO -qmN +lYC +oCT haZ -rrD -dEW -dEW -iXL -pEA -kFL -wcC +bwb +cJL +cJL +xhT +fWh +uOw +eXq fMQ -frL -uUY -joJ -fll +iHz +khE +kyQ +dRu fMQ fMQ fMQ @@ -97718,19 +97782,19 @@ fMQ fMQ nAN nAN -kDB -ijf -ijf -wpg +qnP +hjL +hjL +tJJ pqb pqb pqb pqb pqb -oeV +erc rWg myp -hKG +rZk pqb grj myp @@ -97742,18 +97806,18 @@ nlT lLt oUm nAN -iEW -uJi -pql -gQT -gBL -ngB -cpK -fgM +jbd +dAl +jzh +hfl +xsU +ozS +wOD +sVH nAN -bkR +jWu nAN -dqe +eWS fID mVX mVX @@ -97783,41 +97847,41 @@ aAL aAL dCs tYd -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +xTN +jbt +xVm +xVm +xVm +xXv +kKs +ouJ +xVm +xVm +xVm +xVm +xVm +uQU +xVm +jLc +vLY +xXv tYd mVX mVX mVX -icm -iOx -jnr -jVO -kob mVX mVX mVX -icm -iOx -jnr -jVO -kob +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -97942,14 +98006,14 @@ mVX mVX iwS iwS -olu -olu -olu -olu -olu +tnc +tnc +tnc +tnc +tnc iwS fMQ -ngT +jiz aBX aBX aBX @@ -97958,7 +98022,7 @@ aBX aBX aBX aBX -gIc +oFz fMQ fMQ fMQ @@ -97967,27 +98031,27 @@ fMQ fMQ fMQ fMQ -rBA -hYC -gnk -gtm +tbo +eXN +adL +flX fMQ fMQ fMQ nAN sVW -iTF +wmC fAg kZY pqb brM -rQt +cWC vep -qJV +qfJ xmb hpD hpD -bRw +inI pqb pUR pUR @@ -97999,18 +98063,18 @@ uAi lLt fgx nAN -gzJ -sZc +nLN +sBk uZB -bkc -ccc -jOj -aHN -jVf +jdg +hxv +onE +lwX +qOP nAN mIC nAN -toW +bMP fID aDl mVX @@ -98040,42 +98104,42 @@ cYr aAL dCG tYd -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +xXv +xXv +wNi +xVm +xVm +xXv +xVm +vzo +xVm +dTK +oJH +fxt +tKn +uQU +vxN +kbb +xXv +xXv tYd mVX mVX -hLV -igh -jbL -jsZ -jXB -kps -dpg mVX -hLV -igh -lKZ -jsZ -jXB -kps -dpg +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -98167,7 +98231,7 @@ mVX mVX mVX mVX -vGJ +ibs jMD wLM ctv @@ -98206,10 +98270,10 @@ mVX mVX mVX hgc -cfr -iiU -dQu -djD +hJy +gsJ +uLw +bUs aBX aBX nVd @@ -98217,25 +98281,25 @@ qxt aBX kPi fMQ -otn -uVX -sJx -gMV +iky +kJd +hAd +ovI fMQ fMQ -lgD -qnr +lfP +eaT qQG oIb uOH -wDU -nuQ +qja +wch fMQ nNb mTv -kXQ +fPf fAg -daw +gZv pqb pqb pqb @@ -98244,7 +98308,7 @@ pqb fvx pIg hwc -lkr +hza pqb dGN dGN @@ -98256,18 +98320,18 @@ lLt lLt rxE nAN -gzJ -sZc -dbW -hBW -lYK -siz -aHN -jVf +nLN +sBk +tSE +qfj +pDH +con +lwX +qOP nAN qLC nAN -iYd +eaX fID mVX mVX @@ -98297,42 +98361,42 @@ aJQ aJQ tYd qZO -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +mVX +xXv +xXv +wNi +wNi +ouJ +xFI +ouJ +xXv +xXv +xXv +xXv +xXv +ouJ +xXv +xXv +xXv +mVX tYd mVX mVX -hMy -inR -iPL -jKg -iPL -kru -kLh mVX -hMy -luo -iPL -lXp -iPL -kru -kLh +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -98366,10 +98430,10 @@ mVX mVX xPO bmm -mZS -mZS -mZS -mZS +kEk +kEk +kEk +kEk bmm bmm bmm @@ -98391,10 +98455,10 @@ bmm bmm bmm bmm -mZS -mZS -mZS -mZS +kEk +kEk +kEk +kEk bmm xPO mVX @@ -98440,14 +98504,14 @@ mVX mVX mVX mVX -vGJ +ibs jMD jMD jMD mVX mVX mVX -vGJ +ibs jMD jMD jMD @@ -98463,45 +98527,45 @@ mVX mVX jMD hgc -tDu -eLE -wgN -vpP +mYF +tHM +wxt +jQb aBX fsS qxt -txs +hLZ aBX -xOk +pJr fMQ -qnr +eaT uWf oFO -qnr +eaT fMQ -eec -qnr +vOC +eaT aBX pnQ rqg gBo aBX -cdq +mag fMQ -lqG +mwq mTv -pHG +arZ hOe -wZK +uho pqb -fcD -rQt +jBs +cWC ayr pqb vTR aeY hwc -fgQ +qyk pqb fJR fJR @@ -98513,14 +98577,14 @@ xCN fKl xas nAN -gzJ -iLM -tcz -nqF -sla -aYD -wNe -jVf +nLN +iED +qrg +tlT +fCV +ajU +tHy +qOP nAN iRq nAN @@ -98554,42 +98618,42 @@ cNW cNW dCI tYd -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +mVX +mVX +xXv +xhz +xhz +ouJ +xVm +iqq +xVm +xVm +feW +xXv +mVX +mVX +mVX +mVX +mVX +mVX tYd mVX mVX -hMD -ioP -iPL -juD -iPL -kAj -kMQ mVX -hMD -lAn -iPL -juD -iPL -ktf -kMQ +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -98623,7 +98687,7 @@ mVX mVX xPO bmm -mZS +kEk bmm bmm bmm @@ -98651,7 +98715,7 @@ bmm bmm bmm bmm -mZS +kEk bmm xPO mVX @@ -98690,7 +98754,7 @@ ctv wLM mVX mVX -vGJ +ibs jMD jMD jMD @@ -98711,7 +98775,7 @@ mVX mVX mVX mVX -vGJ +ibs jMD jMD jMD @@ -98720,34 +98784,34 @@ jMD jMD jMD hgc -dnJ -eLE -wgN -vpP +ykf +tHM +wxt +jQb aBX sOT llm -gqn +mRR aBX -qFJ +jBV fMQ -eqL -aeH -njL -qnr +kgw +vHu +lhv +eaT uFO -qnr -qnr +eaT +eaT aBX -vZW -vkL -mBF +lto +vIY +quT aBX -dMn +eFf fMQ -maH +sYM mTv -vyx +bIE kZY nAN nAN @@ -98773,8 +98837,8 @@ nAN nAN nAN nAN -dbW -siz +tSE +con nAN nAN nAN @@ -98782,7 +98846,7 @@ nAN nAN nAN nAN -fID +mVX mVX mVX mVX @@ -98811,42 +98875,42 @@ azG aAL dzW qZO -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +mVX +mVX +mVX +mVX +mVX +xXv +xVm +iHB +xVm +xVm +xVm +xXv +mVX +mVX +mVX +mVX +mVX +mVX tYd mVX mVX -hOM -ipu -iPL -jLP -iPL -kuJ -kNN mVX -hOM -lAo -iPL -lYV -iPL -kuJ -kNN +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -98880,7 +98944,7 @@ mVX mVX xPO bmm -mZS +kEk bmm bmm bmm @@ -98908,7 +98972,7 @@ bmm bmm bmm bmm -mZS +kEk bmm xPO mVX @@ -98938,7 +99002,7 @@ mVX mVX mVX mVX -vGJ +ibs jMD wLM ctv @@ -98977,68 +99041,68 @@ mVX mVX mVX hgc -fiE -del -bQo -vlu -qty +sph +jtj +rDy +trm +xKM aBX qxt qxt aBX aBX uFO -qnr +eaT qUq uUr -qnr +eaT fMQ -sxr -qnr +lRs +eaT aBX -jsR -pYU -cFR +mEh +rLc +kxb aBX -xEY +lIy fMQ -pvl +bfa mTv -uEg +ilv kZY nAN qTB nIR qTB nAN -kVQ +pgu qTB nIR qTB -kVQ -nAN -vRQ -kyK -vGS -foL -cAw -xbJ -nqn -oUC -rZE -yim -hlh +pgu +nAN +xUz +kTQ +bNp +iXk +wyB +ocO +jYV +abn +bDa +asJ +uTC fDP -xDT -tcz -aYD -pql -nRi -gup +ifB +qrg +ajU +jzh +ndF +rey nAN -mXF +myL nAN -dqe +eWS fID mVX mVX @@ -99068,42 +99132,42 @@ azG aAL dzo dFv -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +xXv +xXv +xXv +xXv +xXv +xXv +xVm +mET +dGr +xVm +wod +xXv +xXv +xXv +mVX +mVX +mVX +mVX tYd mVX mVX -hQj -ilI -iTp -jxF -iTp -kvR -kOn mVX -hQj -ilI -iTp -jxF -iTp -kvR -kOn +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -99137,7 +99201,7 @@ mVX mVX xPO bmm -mZS +kEk bmm bmm bmm @@ -99165,7 +99229,7 @@ bmm bmm bmm bmm -mZS +kEk bmm xPO mVX @@ -99234,7 +99298,7 @@ onc onc onc fMQ -hMu +bZj aBX aBX aBX @@ -99243,30 +99307,30 @@ aBX aBX aBX aBX -oKz +mKh fMQ -avR -jTN -dji -fTc +qAL +hLH +jLd +lFt fMQ fMQ -qJi +pir aBX -fIN -hlM -fIN +vSE +sZB +vSE aBX -jsJ +fBW fMQ nNb mTv -aKm -hIl -qif +ksN +aOA +ncA rIb rIb -tMs +jTW nAN iUt iUt @@ -99274,28 +99338,28 @@ iUt iUt iUt dVa -gsK -rZE -rZE -rZE -rZE -rZE -rZE -pGF -sMC -xCh -ncc +qFk +bDa +bDa +bDa +bDa +bDa +bDa +fvp +hNa +oBW +oOk fDP -lZF -xDT -pql -hLw -jBZ -pXH -hSO -iiA -nAN -toW +jMK +ifB +jzh +qWa +xFY +vPx +kwn +dSN +nAN +bMP fID aDl mVX @@ -99325,41 +99389,41 @@ aXg aAL dzo dEE -dMT -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +rbv +oMz +wXb +xXv +xVm +xVm +xVm +lAO +xVm +xVm +mdw +sVi +kWH +eTw +mVX +mVX +mVX +mVX tYd mVX mVX mVX -imX -iVo -jAl -jYQ -kwr mVX mVX mVX -imX -iVo -jAl -jYQ -kwr +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -99448,7 +99512,7 @@ mVX mVX mVX mVX -vGJ +ibs jMD jMD mVX @@ -99491,16 +99555,16 @@ onc onc onc fMQ -xsn -qrm -qEZ -kXm -qAe -qAe -qCq -fFC -oiP -leF +ckb +oso +mze +vui +eed +eed +fBJ +kuA +uEE +tpU fMQ fMQ fMQ @@ -99508,19 +99572,19 @@ fMQ fMQ fMQ fMQ -dix +vza aBX aBX aBX aBX aBX -bEx +mRX fMQ fMQ sVW fAg moU -pqC +nIn fAg fAg fAg @@ -99531,28 +99595,28 @@ iUt eeU eeU dVa -wXu -hux -sMC -vjG -vjG -vjG -sMC -sMC -ntN -bki -nqT +fls +leC +hNa +sZy +sZy +sZy +hNa +hNa +ncv +ydH +gMj fDP -sjr -dyH +vng +uzs pgs -jWN -vzz -pOT +sJw +pcr +mdV nAN -juc +hUD nAN -iYd +eaX fID mVX mVX @@ -99582,24 +99646,24 @@ azG aAL dzW tYd -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +xXv +wBe +wFV +xjY +xVm +xAd +xVm +xVm +xVm +xVm +uqw +prZ +kWH +xZc +mVX +mVX +mVX +mVX tYd mVX mVX @@ -99745,42 +99809,42 @@ qlC qlC jkY guv -fvs -fvs +uRC +uRC fMQ tVL vIj -tPD -eZp -qAe -qAe -beu -tPD +eKv +jcM +eed +eed +txL +eKv veQ veQ fMQ -oWj -wPe -qOR -lza +cTj +boQ +pMq +nTY fMQ -eJc -tGc -mYX +xmI +aMV +mjE aBX -aGt +dYT aBX -tGc -mYX -eJc +aMV +mjE +xmI fMQ -kDB -ijf -wpg +qnP +hjL +tJJ nAN -hJg -xzN -xWg +uoZ +ebR +aHU nAN gqv gqv @@ -99789,27 +99853,27 @@ gqv gqv nAN wYx -hON -sMC -vjG -vjG -vjG -sMC -ntN -jkH +aoS +hNa +sZy +sZy +sZy +hNa +ncv +grD nAN nAN nAN -dyH +uzs wwK -jSE +fVl pgs nAN nAN nAN nAN nAN -dqe +eWS fID mVX mVX @@ -99839,24 +99903,24 @@ cYN aAL dCY tYd -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +xXv +wBy +xXv +xXv +xXv +ouJ +xhz +xhz +xhz +ouJ +xXv +xXv +xXv +xXv +mVX +mVX +mVX +mVX tYd mVX mVX @@ -100003,37 +100067,37 @@ mKB mbd mFe onc -fvs +uRC fMQ -tPD -tPD +eKv +eKv rgF rgF -awU -mnt +aFM +sVL rgF rgF -tPD -tPD +eKv +eKv fMQ -qPR -dIZ -dIZ -jWd +bEW +omd +omd +ulG fMQ -pDR -vmF -uqQ +xhn +oks +ovk aBX -aZw +iLs aBX -dZK -jRY -hHW +jgg +dgp +pxy fMQ fDP fDP -vNA +epo nAN nAN nAN @@ -100045,28 +100109,28 @@ nAN nAN nAN nAN -eBK -hON -ntN -bki -bki -bki -hux -ncc -hXc -nAN -sqO -wSQ +shp +aoS +ncv +ydH +ydH +ydH +leC +oOk +dGL +nAN +rjw +vRV wwK -bkc -ccc -jSE -pEE -gcn +jdg +hxv +fVl +lcU +mhA nAN nAN nAN -toW +bMP fID aDl mVX @@ -100213,7 +100277,7 @@ mVX mVX mVX mVX -vGJ +ibs jMD jMD mVX @@ -100258,43 +100322,43 @@ kqe tNZ osE mbd -ewR +aOd onc -fvs +uRC fMQ -hEl -owz -bKu -oXC -qAe -qAe -cVk -krW +mqo +ptV +atQ +miN +eed +eed +lNL +khg rgF qHm fMQ -pFn -mVk -mVk -hpN +uEQ +rcK +rcK +rLA fMQ -xkp -vMl -aix +oOQ +ctk +fgL aBX rVg aBX -xfP -cvq -hsk +ddG +pnZ +pwF fMQ -kDB -ijf -wpg +qnP +hjL +tJJ nAN -htg -pIR -kEs +jDr +vxF +wSE nAN qTB qTB @@ -100302,28 +100366,28 @@ nIR qTB qTB nAN -eRm -hON -ncc -xKK -wym -rGZ -hON -ncc -pdi -nAN -sqO -wSQ -qsV -hBW -lYK -xIN -pEE -jUq +iha +aoS +oOk +eTm +sYS +tHm +aoS +oOk +nUf +nAN +rjw +vRV +xXq +qfj +pDH +knX +lcU +lsj nAN nAN nAN -iYd +eaX mVX mVX mVX @@ -100517,64 +100581,64 @@ jdj mbd uda onc -fvs +uRC fMQ oDu rLk -tPD -eZp -qAe -qAe -beu -tPD -unB -unB +eKv +jcM +eed +eed +txL +eKv +ppl +ppl fMQ qFV qto qto -nuh +ikI fMQ -mbS -nJB -iet +lfD +lle +lAd aBX -aGt +dYT aBX -ylh -unM -vRJ +jxo +adZ +wJI fMQ hTD fAg moU -rTH +dEr fAg fAg fAg nAN -lsv +lUK ism ism ism ism xeR -gsK -pGF -ncc -whw -fLB -gNC -hON -ncc -xeK +qFk +fvp +oOk +vtw +mFD +gCw +aoS +oOk +nyy nAN nAN nAN -xDT -tcz -aYD -pql +ifB +qrg +ajU +jzh nAN nAN nAN @@ -100596,20 +100660,20 @@ mVX "} (187,1,1) = {" fCq -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +mVX +mVX +mVX +wmt +wmt +uyn +uyn +uyn +uyn +wmt +wmt +mVX +mVX +mVX fCq eaV eaV @@ -100772,70 +100836,70 @@ smT ayw ayw vvD -pTc -fvs -fvs +cUN +uRC +uRC fMQ -tPD -tPD +eKv +eKv rgF rgF -awU -mnt +aFM +sVL rgF rgF -tPD -tPD +eKv +eKv fMQ hTD fAg fAg -dAz +uJy fMQ fMQ -rNJ -qnr +tGe +eaT aBX -aZw +iLs aBX -qnr -rNJ +eaT +tGe fMQ fMQ hTD fAg -cAb -rTH +jkL +dEr rIb rIb -tMs +jTW nAN -lsv +lUK ism ism ism ism xeR -wXu -hux -ncc -whw -nwb -gNC -hON -ncc -lln -nAN -pDr -tqY -kcl -xDT -pql -qMO -fnF -svw -nAN -dqe +fls +leC +oOk +vtw +rQZ +gCw +aoS +oOk +uCb +nAN +nnW +pwb +yep +ifB +jzh +pBp +qsa +fdZ +nAN +eWS fID mVX mVX @@ -100853,20 +100917,20 @@ mVX "} (188,1,1) = {" fCq -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +mVX +wmt +uyn +wmt +wmt +lgc +otE +rft +gJj +wmt +wmt +uyn +wmt +mVX fCq eaV eaV @@ -101030,7 +101094,7 @@ oWo kfj nCt onc -fvs +uRC onc fMQ fMQ @@ -101053,7 +101117,7 @@ fMQ fMQ fMQ ugS -sCX +bvK ugS fMQ fMQ @@ -101073,26 +101137,26 @@ ftP gqv pSN nAN -pPC -wXu -dvj -whw -fLB -gNC -wXu -dvj -jvJ -nAN -pDr -tqY -sjr -dyH +pFW +fls +qCI +vtw +mFD +gCw +fls +qCI +azd +nAN +nnW +pwb +vng +uzs pgs -jZY -fnF -xaL +tLa +qsa +pUX nAN -toW +bMP fID aDl mVX @@ -101110,20 +101174,20 @@ mVX "} (189,1,1) = {" fCq -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +mVX +xjR +gKi +gKi +hHU +riz +kgE +kPS +riz +hHU +gKi +gKi +tTX +mVX fCq eaV eaV @@ -101207,7 +101271,7 @@ bmm bmm bmm bmm -eGO +dTR bmm bmm bmm @@ -101291,7 +101355,7 @@ onc onc onc onc -ric +aPL qgi qto qto @@ -101331,25 +101395,25 @@ nAN nAN nAN nAN -glZ -sKX +bLr +pnL shl shl shl -glZ -sKX +bLr +pnL nAN nAN nAN nAN -eNX -pql -xDT -kWq +rwv +jzh +ifB +ibQ nAN nAN nAN -iYd +eaX fID mVX mVX @@ -101367,20 +101431,20 @@ mVX "} (190,1,1) = {" fCq -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +mVX +xjR +adM +kUi +wmt +iSZ +mtw +kVb +lzD +wmt +kUi +adM +tTX +mVX fCq eaV eaV @@ -101463,9 +101527,9 @@ bmm bmm bmm bmm -eGO -eGO -eGO +dTR +dTR +dTR bmm bmm bmm @@ -101538,16 +101602,16 @@ gdt avP feT aZv -ffS -wMB -dZu +bGO +fDV +qtP alG -uoM -xRq -kcz +hat +cKF +hnX qsO myG -esm +kTd mTv fAg fAg @@ -101579,15 +101643,15 @@ sYW qgi csZ hmX -fpV -iRV -rpJ -vLU -oQb -pyd -nAN -uEk -ikf +hqZ +raf +gsj +nbP +xLE +itf +nAN +aiQ +lqC qto qto qgi @@ -101595,18 +101659,18 @@ qgi qgi qto qto -mcF -nAN -aFX -aLe -pql -bkc -ccc -xDT -fuY -iJG -nAN -dqe +mSp +nAN +pXf +dqf +jzh +jdg +hxv +ifB +krh +wWh +nAN +eWS fID mVX mVX @@ -101624,20 +101688,20 @@ mVX "} (191,1,1) = {" fCq -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +wmt +wJV +wmt +wJV +wmt +jqj +wJV +wJV +jqj +wmt +wJV +wmt +wJV +wmt fCq eaV eaV @@ -101719,11 +101783,11 @@ bmm bmm bmm bmm -koc -koc -eGO -eGO -eGO +oJP +oJP +dTR +dTR +dTR bmm bmm bmm @@ -101755,27 +101819,27 @@ iIs iIs lvT fkh -nDI +pHc gnD skw rLO fIJ fkh fkh -pkz +glE fkh fkh bfx rLO iIs -dAk +mDq pOv iIs tqy rpk sfl onc -hfq +uBh sAi tWd jEu @@ -101796,15 +101860,15 @@ bBI eNm ePS ePS -bTd -dZu +xJZ +qtP bXp -nyg -bxi -way +vlQ +dcc +hTU koH myG -ltb +hLq mTv fAg fAg @@ -101836,14 +101900,14 @@ fAg fAg kZY hmX -tsa +yef oIc oIc oIc oIc -iIu +qKp nAN -wfE +rPH hTD fAg fAg @@ -101854,16 +101918,16 @@ fAg fAg abk nAN -aFX -wQA +pXf +ldS uZB -tQy -trn -jOj -pAt -iJG +sEU +mPi +onE +fim +wWh nAN -toW +bMP fID aDl mVX @@ -101881,20 +101945,20 @@ mVX "} (192,1,1) = {" fCq -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +wmt +eDO +qti +hHU +riz +riz +alM +bjJ +riz +riz +hHU +qti +kws +wmt fCq eaV eaV @@ -101975,13 +102039,13 @@ bmm bmm bmm bmm -koc -koc -koc -fli -eGO -eGO -eGO +oJP +oJP +oJP +cjk +dTR +dTR +dTR bmm bmm bmm @@ -102025,9 +102089,9 @@ fkh fkh rLO iIs -ogL +xTc nVN -nqj +hFX tqy rpk sfl @@ -102064,7 +102128,7 @@ iwS iwS wRu mzs -fOg +uJn hHu gvy hHu @@ -102093,12 +102157,12 @@ jJS fAg kZY hmX -lFb -uyV +nEQ +alR oIc oIc oIc -ddN +fJQ nAN efU cFn @@ -102111,16 +102175,16 @@ jJS fAg vRW nAN -aFX -cka -tcz -hBW -lYK -aYD -vQJ -iJG +pXf +oTI +qrg +qfj +pDH +ajU +xAy +wWh nAN -iYd +eaX fID mVX mVX @@ -102138,20 +102202,20 @@ mVX "} (193,1,1) = {" fCq -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +wmt +jcs +vHj +wJV +qjX +mHL +mpN +mpN +qZj +vja +wJV +vHj +eDO +wmt fCq eaV eaV @@ -102233,11 +102297,11 @@ bmm bmm bmm bmm -koc -koc -koc -koc -eGO +oJP +oJP +oJP +oJP +dTR bmm bmm bmm @@ -102320,8 +102384,8 @@ lYZ lYZ gFS fAg -bnd -sSh +bXG +anK nAN nAN nAN @@ -102336,48 +102400,48 @@ nAN nAN nAN nAN -oFR +fXY fQU fQU jed xPf fQU fQU -wUp -sLJ +wAL +kAW nAN fDP fDP fDP hmX -okK -reE -eDP +vVB +ngL +xCW oIc oIc -bGt +xTM nAN -bcs -bcs +bjP +bjP wYx fAg -eyf -eyf -eyf +rNd +rNd +rNd mTv fAg -xCZ +aAP nAN nAN nAN -lDf -tcz -aYD -gLW +mCa +qrg +ajU +rck nAN nAN nAN -dqe +eWS fID mVX mVX @@ -102395,20 +102459,20 @@ mVX "} (194,1,1) = {" fCq -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +wJV +eYE +jqj +wJV +iJi +lcs +khG +khG +fsf +nfO +wJV +jqj +njE +wJV fCq eaV eaV @@ -102491,9 +102555,9 @@ bmm bmm bmm bmm -eGO -eGO -koc +dTR +dTR +oJP bmm bmm bmm @@ -102539,7 +102603,7 @@ rLO rLO rLO iIs -dAk +mDq pOv iIs tqy @@ -102565,7 +102629,7 @@ onc eol kAE tak -sbQ +dhe nxD rny iwS @@ -102577,21 +102641,21 @@ ueh udI afP afP -cLz -gHl +uah +qqU afP -fTL -iRw -hIL -xNi -uby -mZl -wil -wmd -vcv -cMn -nAN -hyL +rFp +fpZ +nzx +eKh +cxl +dMM +vcO +hZa +vvt +wTk +nAN +tBT oIc oIc oIc @@ -102600,41 +102664,41 @@ oIc uOf uOf oIc -inL -iDy -lig +mjR +vXs +xgt hTD fAg kZY nAN -gUA -tlH -lkI +cNy +nfR +pWS oIc oIc -apZ -iRV -hpY -bcs -odr +eCT +raf +rIY +bjP +mOZ fAg -eyf -eyf -eyf +rNd +rNd +rNd mTv -nVB +wvZ kZY nAN -beG -kHx -cfq -jSE +qJz +lun +sAd +fVl wwK -hLw -xDT -vIe +qWa +ifB +oaa nAN -toW +bMP fID aDl mVX @@ -102652,20 +102716,20 @@ mVX "} (195,1,1) = {" fCq -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +wJV +vHj +vHj +hHU +itv +ssr +hlv +hlv +snA +mcM +hHU +vHj +vHj +wJV fCq eaV eaV @@ -102749,7 +102813,7 @@ bmm bmm bmm bmm -eGO +dTR bmm bmm bmm @@ -102796,7 +102860,7 @@ dZA phM skw iIs -vgD +mvM nVN wsP tqy @@ -102834,37 +102898,37 @@ gHS pbe afP lzS -uLN +irS pAe afP -eoJ +wqy xOe xOe xOe xsw xOe -hxB +xHl oIc oIc hIB nAN -rbm +uVd oIc oIc -usq +uqY uOf uOf -rnJ -kYt +bpI +wmP uOf oIc -rYi -hnD +uHe +hoc hTD fAg kZY hmX -sBS +cJg oIc oIc oIc @@ -102872,26 +102936,26 @@ oIc oIc oIc oIc -qff -odr +kkr +mOZ fAg -eyf -eyf -eyf +rNd +rNd +rNd mTv -dwn +xCu sYW -gcp -tcz -iYs -iYs -dyH +cuu +qrg +sub +sub +uzs pgs -pCj -aYD -ioy +dCD +ajU +clC nAN -iYd +eaX fID mVX mVX @@ -102909,20 +102973,20 @@ mVX "} (196,1,1) = {" fCq -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +xjR +cKw +vHj +wJV +mBE +bur +riz +riz +lzZ +mBE +wJV +vHj +cKw +tTX fCq eaV eaV @@ -103044,7 +103108,7 @@ qwy fkh skw nfF -dqR +hBl nfF jfM fkh @@ -103094,7 +103158,7 @@ lzS gbo xhN afP -pAg +vYC skz xOe xOe @@ -103107,20 +103171,20 @@ oIc kDg oIc oIc -xvv -kYt -kYt -kYt -usq -omf -kYt +lHw +wmP +wmP +wmP +uqY +toL +wmP nBX -alU -iXH +sgi +vIU hTD fAg moU -pys +bfQ oIc oIc oIc @@ -103128,27 +103192,27 @@ oIc oIc oIc oIc -jSF -dcf -odr +vSC +nBl +mOZ fAg fAg fAg fAg mTv -ezh -sxS -sOq -goy -cBR -cBR -cBR -cBR -cBR -oVq -dEQ -nAN -dqe +uvw +uJV +oAH +nvm +xFZ +xFZ +xFZ +xFZ +xFZ +nFx +bVg +nAN +eWS fID mVX mVX @@ -103166,20 +103230,20 @@ mVX "} (197,1,1) = {" fCq -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +xjR +rDm +gTs +wmt +wmt +vgd +wnA +wnA +xcN +wmt +wmt +mYE +jxr +tTX fCq eaV eaV @@ -103295,7 +103359,7 @@ mVX wLM kiX gdL -hMa +obT gdL qwy fkh @@ -103348,36 +103412,36 @@ uab afP afP afP -xmf -qvu +iLM +mqL afP -yhf +sHn xOe xOe xOe xOe xOe -jCG +ubx oIc oIc hIB nAN -oSr +uQg oIc oIc -rQc +jUQ rkN rkN -rnJ -kYt +bpI +wmP rkN oIc -rYi -uhi +uHe +eSd hTD fAg kZY -bOG +hsG oIc oIc oIc @@ -103386,26 +103450,26 @@ oIc oIc oIc oIc -clw -odr +dyN +mOZ fAg -eyf -eyf -eyf +rNd +rNd +rNd mTv -tuL +wsY hOe -nuF -vHQ -bMS -bMS -mIN -itN +npl +tNz +pZY +pZY +eFF +njW mcg -wgo -wYk +mSG +cWR nAN -toW +bMP fID aDl mVX @@ -103423,20 +103487,20 @@ mVX "} (198,1,1) = {" fCq -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +xjR +uMn +vHj +wJV +mBE +xvt +xss +xss +xvt +mBE +wJV +vHj +uMn +tTX fCq fCq jrL @@ -103598,28 +103662,28 @@ iOH mYH vdY afP -crA -wnu -tZi -qBD -pPK -oiM -odn -uLN +lJl +bRu +dnE +vwh +oCD +xea +vem +irS pAe afP -fTL -hPz -xVI -kro -xga -hjf -bEk -uGG -wWk -gHi -nAN -esy +rFp +iNI +jBK +uCT +pDE +hSv +oTM +nYX +itg +dAP +nAN +fLa oIc oIc oIc @@ -103628,41 +103692,41 @@ oIc rkN rkN oIc -kpQ -gri -wJr +tto +wlW +daB hTD fAg kZY nAN -wCq -kYP -ufK +igY +vNv +nBb oIc oIc -grH -rEn -oKE -rWG -odr +qsJ +wAs +ooy +tmQ +mOZ fAg -eyf -eyf -eyf +rNd +rNd +rNd mTv -bYI +oXE kZY nAN -eTs -vSp -hJN -hPR -rTJ +rSU +bfo +lhS +xin +goI rZo -mSi -cxL +vFy +nIL nAN -iYd +eaX fID mVX mVX @@ -103680,20 +103744,20 @@ mVX "} (199,1,1) = {" fCq -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +wJV +tFk +vHj +hIt +riz +iTh +knt +knt +jSC +riz +mGD +vHj +nxK +wJV dRc ecn jrL @@ -103855,13 +103919,13 @@ wUF wzu lGB afP -dpe -joV -joV -usb -mfB -tWr -odn +tRk +nBB +nBB +lCT +jAW +rhn +vem gbo xhN afP @@ -103878,44 +103942,44 @@ afP afP afP nAN -aFB +avx wEo wEo mnX ixP wEo wEo -ljT -bqy +lNv +aAr nAN fDP fDP fDP hmX -jjT -fmI -weS +fND +jzi +kRn oIc oIc -fVC +lpI nAN -rWG -rWG -eRm +tmQ +tmQ +iha fAg -eyf -eyf -eyf +rNd +rNd +rNd mTv fAg -xCZ +aAP nAN nAN nAN -kFY -vHQ -wgo -xSW +xqp +tNz +mSG +vik nAN nAN nAN @@ -103937,20 +104001,20 @@ mVX "} (200,1,1) = {" fCq -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +wJV +oEu +hcJ +wJV +iuu +iWu +xEv +xEv +lBU +mqy +wJV +oEu +hcJ +wJV dRc eeh jrL @@ -104112,22 +104176,22 @@ wUF iGX rhx afP -fzu -oeq -oeq -jNW +oKH +txJ +txJ +smB afP afP afP -dec +rDd pAe -uJF -cpd -jUd -rOj -sqD +dqo +tSV +wLt +xyc +wNL eFN -hOx +rFC lzS lzS afP @@ -104135,7 +104199,7 @@ lzS lzS afP nNb -ric +aPL qgi qgi qto @@ -104149,15 +104213,15 @@ oWu fAg kZY hmX -obp -lpU +fUj +edZ oIc oIc oIc oIc -sHb +apH mUH -ric +aPL qto qto qto @@ -104165,16 +104229,16 @@ qto qto oWu fAg -kvb +kub nAN -bgN -rzO -vHQ -bkc -ccc -wgo -rLX -xPc +fJn +dGB +tNz +jdg +hxv +mSG +cYV +cqv nAN nAN nAN @@ -104194,20 +104258,20 @@ mVX "} (201,1,1) = {" fCq -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA +wmt +ghb +hfa +wmt +ixL +jzk +riz +riz +lBX +mto +wmt +ghb +hfa +wmt dRc egu jrL @@ -104359,7 +104423,7 @@ eji lgv lnp onc -wbJ +vyL yly onc kAE @@ -104369,12 +104433,12 @@ poA cNn vqX afP -kKG -owg -wkl -jWv +xzg +xgh +kZA +jHf afP -vsi +jhY scN pej ona @@ -104386,12 +104450,12 @@ rgL rgL rgL rgL -coX -pKM +rnH +jGt rgL -coX -rLT -mpv +rnH +mDL +fEe mTv fAg fAg @@ -104406,13 +104470,13 @@ fAg fAg kZY hmX -mER +pBA oIc oIc oIc oIc oIc -sHb +apH mUH hTD fAg @@ -104424,14 +104488,14 @@ fAg fAg abk nAN -bgN -bpN -fDT -tQy -trn +fJn +qkU +sqZ +sEU +mPi blT -gTa -xPc +obc +cqv nAN nAN nAN @@ -104451,20 +104515,20 @@ mVX "} (202,1,1) = {" fCq -eWA -eWA -eWA -eWA -eWA -eWA -eWA -cgx -eWA -eWA -eWA -eWA -eWA -eWA +mVX +gtx +gtx +wJV +wmt +wmt +kuU +kRw +wmt +wmt +wJV +gtx +gtx +mVX dRc egF jrL @@ -104496,7 +104560,7 @@ kRq jlR iuf cjS -cqN +xpw mal mal muA @@ -104626,12 +104690,12 @@ onc onc onc afP -dNs -erX -uLB -gSb +fpg +mxz +kgx +rhO afP -smf +aDh gbo fon srE @@ -104643,12 +104707,12 @@ ifZ ifZ ofy fon -jCz -jgl -fqL -eiV -mMp -aWp +gFZ +kJF +yeh +kHQ +wOy +xZt wRu gvy hHu @@ -104663,32 +104727,32 @@ jJS fAg kZY hmX -tvU -cVv -gmY -rJz -rbV -pmr -nAN -vEG -rpP +aWz +lvI +drr +fnT +kPa +ewE +nAN +nug +ugQ hHu mzs -gSz +iIo mzs hHu hHu -ffZ -bOU +mGx +tEV nAN -bgN -bpS -dwI -hBW -lYK -mSi -crc -xPc +fJn +hYY +xkB +qfj +pDH +vFy +lWt +cqv nAN nAN nAN @@ -104791,7 +104855,7 @@ mVX mVX xPO bmm -mZS +kEk bmm bmm bmm @@ -104819,7 +104883,7 @@ bmm bmm bmm bmm -mZS +kEk bmm xPO mVX @@ -104883,21 +104947,21 @@ iOH mYH vdY afP -tFD -dpG -dpG -oVy +eyj +kWB +kWB +ffA afP -gKt +fyy gbo fon jHX -bOX -kIU +dCm +bbv wtL -ciU -jHJ -oVx +rNB +mWR +biy gbo srE tgA @@ -104916,12 +104980,12 @@ nAN nAN nAN nAN -dIU -pZL -gog +tRX +xoJ +kom nAN nAN -lSK +mpt nAN nAN nAN @@ -104930,9 +104994,9 @@ nAN nAN nAN nAN -rcp -rcp -rcp +vhP +vhP +vhP nAN nAN nAN @@ -104940,10 +105004,10 @@ nAN nAN nAN nAN -vcp -dwI -mSi -pYa +trp +xkB +vFy +hoD nAN nAN nAN @@ -105048,7 +105112,7 @@ mVX mVX xPO bmm -mZS +kEk bmm bmm bmm @@ -105076,7 +105140,7 @@ bmm bmm bmm bmm -mZS +kEk bmm xPO mVX @@ -105101,8 +105165,8 @@ kiX mgC gdL gdL -bqo -dYs +jyS +mMf gpF gdL qBE @@ -105140,72 +105204,72 @@ wUF rhx lGB afP -qOr -adO -adO -dSN +igz +pSw +pSw +ocf afP -eYa +nQW gbo kBa jHX gOI -fkt -kbJ -tHC -wWT -hSk +unl +gNS +gce +jYq +ljo gbo jHX -pnv +hIg cxA nAN -abg +kfl ycb eZR -tWD -wlz +ovR +oeU nAN hTD kZY nAN -rAp -twa -aUo +agb +naI +wRW nAN hTD fAg moU -kXu -adl +nDM +gjn nAN -rsB +rky cBr -pHk +ePR cBr -jDH +fvF nAN -mSP +tso qgi qto qto qto fAg -qYU -kHg -iGP +tAj +ntN +kzT nAN -oEt -seQ +oGQ +dXl hsZ -mIN -itN -gYD +eFF +njW +nsM hvs -fLG +jbY nAN nAN -vpe +jzx nAN nAN mVX @@ -105305,7 +105369,7 @@ mVX mVX xPO bmm -mZS +kEk bmm bmm bmm @@ -105333,7 +105397,7 @@ bmm bmm bmm bmm -mZS +kEk bmm xPO mVX @@ -105389,7 +105453,7 @@ wzu onc aUY sAI -vhh +dMq kAE tak xSv @@ -105397,12 +105461,12 @@ wUF wzu wzu afP -oja -gPi -gPi -tUJ +ePq +xqh +xqh +esL afP -iYp +rvV gbo fon ona @@ -105415,10 +105479,10 @@ rgL pej ona chG -vWv +hnc nAN -qop -guE +nCb +kgD dEb dEb fAg @@ -105426,40 +105490,40 @@ nAN hTD kZY nAN -ewU +rSk fAg -sWY +nZr nAN hTD fAg moU -kXu -adl +nDM +gjn nAN -ulL -ric +pNy +aPL qgi csZ gct nAN -xSt +xRh fAg fAg fAg fAg fAg -bhp -mNz -iGP -nAN -oEt -seQ -xix -mSi -dwI +chS +tig +kzT +nAN +oGQ +dXl +dIb +vFy +xkB rZo hvs -xjB +vCo nAN nAN uxZ @@ -105562,10 +105626,10 @@ mVX mVX xPO bmm -mZS -mZS -mZS -mZS +kEk +kEk +kEk +kEk bmm bmm bmm @@ -105587,10 +105651,10 @@ bmm bmm bmm bmm -mZS -mZS -mZS -mZS +kEk +kEk +kEk +kEk bmm xPO mVX @@ -105633,7 +105697,7 @@ aZX isw hQx aZX -coB +kic xbI onc frx @@ -105644,7 +105708,7 @@ poA cNn vqX onc -jop +tha oqC onc kAE @@ -105654,44 +105718,44 @@ poA mAw vqX afP -laj -iUX -iUX -pga +eUo +vOU +vOU +lur afP -rDB +lLE aWc -cvR +dOj ifZ ofy srE -fqL -qix -fqL -fqL -fqL -pse +yeh +jlH +yeh +yeh +yeh +oLW tgA tyO nAN -fHI -ePO -qon +oPU +fjj +apC fAg fAg -ggB -jTJ +cWM +aCC abk nAN -gLD +pFy fAg moU -aat +nZM mTv fAg moU -kXu -kgF +nDM +omz nAN jej hTD @@ -105699,24 +105763,24 @@ fAg kZY gct nAN -xtU +gFG jJS -bkc -bZC -ccc +jdg +uZt +hxv fAg -bhp -cAo -iGP +chS +uLr +kzT nAN nAN nAN -mSi -vHQ -wgo -dwI +vFy +tNz +mSG +xkB hvs -vdV +mNK nAN nAN dRV @@ -105911,23 +105975,23 @@ onc onc onc afP -ixR -gFQ -gFQ -rRQ +cZc +qOk +qOk +kNk afP afP -pji -klp -ram -rWx -fVm +esb +rzx +oDS +pzN +kRE afP afP afP afP afP -xom +cxI afP afP nAN @@ -105936,42 +106000,42 @@ fAg fAg fAg fAg -ggB +cWM mTv kZY nAN -ewU +rSk fAg -kqc +eBC nAN -udF +dBk fAg moU -kXu -foB +nDM +oRk nAN -acu +bKz hTD fAg kZY -wbd +gXI nAN -jBQ +iDG hTD -tQy -dUp -trn +sEU +bdB +mPi fAg -evN +ftT nAN nAN nAN -tYP -cgX -fBu -bkc -ccc -lgN +jdl +ljf +sqP +jdg +hxv +bZw nAN nAN nAN @@ -106120,7 +106184,7 @@ mVX wLM rUx hOr -nDI +pHc fkh fkh fkh @@ -106176,17 +106240,17 @@ afP afP afP afP -anJ +tBG gbo xhN afP -eWA -eWA -eWA +lJU +lJU +lJU eWA qtk eWA -eWA +lJU nAN fAg fAg @@ -106197,44 +106261,44 @@ nAN hTD kZY nAN -uRq -clv -lLd +ejF +gtH +sbW nAN hTD fAg moU -kXu -adl +nDM +gjn nAN -acu +bKz hTD fAg sYW qgi -oIN +cBt qFV oWu -tQy -dUp -trn +sEU +bdB +mPi fAg -bhp -cAo -iGP +chS +uLr +kzT nAN -cjN -hDk -rTJ -hBW -lYK -hPR -xkj -rOc +fCZ +ljf +goI +qfj +pDH +xin +tSk +uoR nAN nAN nAN -gpY +lJk fID hne mVX @@ -106385,7 +106449,7 @@ rLr mlk gdL xKz -xol +tkP lus gpF xKz @@ -106425,34 +106489,34 @@ ePS njZ onc afP -fID -fID -fID -fID -fID -fID -fID -afP -anJ -rWx -fVm +sbw +sbw +sbw +sbw +sbw +sbw +sbw ecV -eWA -eWA -eWA -eWA -eWA -eWA -eWA +tBG +pzN +kRE +ecV +lJU +jzc +oFJ +qUi +cVJ +mbb +lJU nAN -pci +qoC xxx nNb vad -pci +qoC nAN -bgL -hsP +pUz +vPy nAN nAN nAN @@ -106461,37 +106525,37 @@ nAN sVW fAg moU -kXu -adl +nDM +gjn nAN -acu +bKz hTD fAg fAg fAg -oWv +mnL mTv fAg -tQy -dUp -trn +sEU +bdB +mPi fAg -bhp -mNz -iGP +chS +tig +kzT nAN nAN nAN -mIN -rTJ -hPR -itN -xkj -ozP +eFF +goI +xin +njW +tSk +rId nAN nAN nAN -gpY +lJk fID mVX mVX @@ -106682,25 +106746,25 @@ oKG ekH onc afP -fID -fID -fID -fID -fID -fID -fID -ecV -anJ +sbw +rOB +rOB +qLe +rOB +rOB +sbw +afP +tBG gbo xhN ecV -eWA -eWA -eWA -eWA -eWA -eWA -eWA +lJU +sbc +cVJ +cVJ +cVJ +gDY +lJU nAN shl shl @@ -106710,14 +106774,14 @@ shl nAN uzP uzP -swk +lSV tgn -xxO -oFN +qxb +sfw nAN fDP fDP -rSw +aUX nAN nAN nAN @@ -106726,25 +106790,25 @@ cFn hHu hHu hHu -ueB -vBs +fJz +dyQ jJS -tQy -dUp -trn +sEU +bdB +mPi hOe -hPR -sNw -iGP +xin +uKU +kzT nAN -sru -jHw -aZs -mIN -itN -tDY -xkj -rOc +dDx +oVm +iRf +eFF +njW +dCT +tSk +uoR nAN nAN nAN @@ -106925,8 +106989,8 @@ cKy kcU siO kcU -rSA -tUB +frA +qrR onc kAE oKG @@ -106939,25 +107003,25 @@ oKG tak onc afP -fID -fID -fID -fID -fID -fID -fID -ecV -anJ -rWx -fVm +sbw +rOB +rOB +rOB +rOB +rOB +nnz +afP +tBG +pzN +kRE ecV -eWA -eWA -eWA -eWA -eWA -eWA -eWA +lJU +bwK +cVJ +cVJ +cVJ +wjG +lJU nAN mZo mZo @@ -106967,30 +107031,30 @@ mZo nAN uzP uzP -wIv -rXE -iiC -mvV -axF -daU +kAd +bAT +wAz +vwu +sfT +njh fAg kZY nAN -oKy -qKq +opw +dnh nAN nAN nAN nAN nAN nAN -jBQ +iDG mTv -tQy -dUp -trn +sEU +bdB +mPi moU -qRx +klT nAN nAN nAN @@ -107005,7 +107069,7 @@ nAN nAN nAN nAN -gpY +lJk fID hne mVX @@ -107196,25 +107260,25 @@ oKG sdz onc afP -fID -fID -fID -fID -fID -fID -fID -afP -anJ +sbw +rOB +rOB +rOB +rOB +rOB +waE +eQj +idQ gbo xhN ecV -eWA -eWA -eWA -eWA -eWA -eWA -eWA +lJU +gRj +oUC +cVJ +cVJ +jFG +lJU nAN mZo mZo @@ -107226,10 +107290,10 @@ uzP uzP uzP uzP -uGD -bpl -kNd -tYO +ocx +kse +shB +fHe fAg sYW qgi @@ -107238,31 +107302,31 @@ qto qgi ppx qgi -aqe +qBn nAN -wmR +cAA qto oWu -tQy -dUp -trn +sEU +bdB +mPi sYW qto -vkG -hkH -ino +jnM +mpo +oKa nAN -vbk -mkN +iRc +dnB rTL rTL -mYC -xZz +oHO +fnC hAn dqX mIW nAN -gpY +lJk fID mVX mVX @@ -107453,25 +107517,25 @@ oNF ajO onc afP -fID -fID -fID -fID -fID -fID -fID -xVk -kwU -rWx -fVm +sbw +rOB +rOB +rOB +rOB +rOB +nBC +sEs +scN +kOD +kRE afP +lJU +lJU eWA +lBp eWA -eWA -eWA -eWA -eWA -eWA +lJU +lJU nAN mZo mZo @@ -107483,10 +107547,10 @@ uzP uzP uzP uzP -qUi -eIs -mKI -tYO +tmG +cMh +fcs +fHe fAg fAg fAg @@ -107496,28 +107560,28 @@ fAg fAg fAg moU -pWo +nWU mTv fAg fAg -tQy -dUp -trn +sEU +bdB +mPi fAg fAg fAg fAg moU -ejA +ciK rTL rTL rTL rTL rTL -ohc +tAi toU toU -lvd +pHO nAN nAN nAN @@ -107710,17 +107774,17 @@ lbo ajO onc afP -fID -fID -fID -fID -fID -fID -fID -muR -scN -pej -soJ +sbw +ncN +rOB +rOB +rOB +eqg +nnz +afP +unC +fon +nve afP afP afP @@ -107736,15 +107800,15 @@ shl mZo mZo nAN -vPE -twi +sta +iVu uzP uzP -eTE -jhQ -hST -rjy -oVN +gzR +hem +riy +kGN +dZe fAg fAg fAg @@ -107753,30 +107817,30 @@ fAg fAg fAg moU -pWo +nWU mTv fAg fAg -tQy -dUp -trn +sEU +bdB +mPi fAg fAg fAg fAg moU -ejA +ciK rTL rTL rTL rTL rTL -ohc +tAi toU toU -hzw +xwc nAN -gpY +lJk fID hne mVX @@ -107967,25 +108031,25 @@ hHt ajO onc afP -fID -fID -fID -fID -fID -fID -fID -afP -jzw +peY +rOB +rOB +rOB +rOB +rOB +nBC +dEV +gbo fon jHX -tky +jVq gFx -cDQ -cDQ -cDQ -cDQ -cDQ -cDQ +xjM +xjM +xjM +xjM +xjM +xjM nAN mZo mZo @@ -107993,11 +108057,11 @@ shl mZo mZo nAN -fFt -wLV +pOM +glw uzP uzP -bRY +ngi tgn nAN nAN @@ -108009,31 +108073,31 @@ hHu hHu hHu hHu -kEv +xnh nAN jWM mzs jJS -hBW -kZm -lYK +qfj +jPF +pDH hOe mzs -kLi +wJo mzs cnO nAN -wyr +ajk rTL rTL rTL rTL -bQr +mPp qMy -feS -kxv +jtn +mYz nAN -gpY +lJk fID mVX mVX @@ -108213,36 +108277,36 @@ ddZ kcU onc onc -fID -bWt -fID +aLA +cqt +qZa onc onc onc -fID -xiX -fID +etQ +dBY +etQ onc afP -lmE -fID -fID -fID -fID -fID -fID -oVu -gbo +sbw +rOB +rOB +rOB +rOB +rOB +lLm +afP +dZk fon jHX -akY +xOy gFx -sXo -jXa -jXa -jXa -jXa -jXa +psK +psn +psn +psn +psn +psn nAN mZo mZo @@ -108250,18 +108314,18 @@ shl mZo mZo nAN -toV -qpb +fGy +spd uzP uzP -tRQ +rBs byz -mRL +pvS nAN shl shl -uGD -jhi +ocx +dnT shl shl nAN @@ -108269,23 +108333,23 @@ nAN nAN nAN nAN -apo +xjZ mTv fAg fAg fAg moU -evN +ftT nAN -agC -agC +qJo +qJo nAN -cqr +pUC rTL rTL rTL rTL -xbP +fnW nAN nAN nAN @@ -108469,37 +108533,37 @@ hRt hRt onc onc -fID -fID -fID -fID -fID +nTJ +ezH +puY +vKg +nTJ onc -fID -fID -fID -fID -fID +wtY +xCK +jkW +vwM +wtY afP -fID -fID -fID -fID -fID -fID -fID +sbw +rOB +rOB +rOB +rOB +rOB +nnz afP dZk fon jHX -uKN +oUw gFx -uUe -uUe -wzD -wzD -wzD -wzD +jHF +jHF +rNf +rNf +rNf +rNf nAN mXf mZo @@ -108507,48 +108571,48 @@ shl mXf mZo nAN -cSM -vum +yeO +nmE uzP uzP uzP -uGD -uGD -uGD -uGD -uGD +ocx +ocx +ocx +ocx +ocx uzP uzP uzP -uGD -qUi +ocx +tmG vEt -hSO -jGg +kwn +bGQ nAN nAN -naX +ina hHu mzs mzs cnO -ryO -mSD -guW -guW -gDX -izf +lSW +aoW +erZ +erZ +waZ +tzO rTL rTL rTL rTL -ohc +tAi fAg rWE nAN -xTT -aAm -aus +axT +ook +ccL nAN mVX mVX @@ -108726,37 +108790,37 @@ mVX mVX mVX onc -fID -fID -fID -fID -fID +nTJ +hUb +puY +eTN +nTJ onc -fID -fID -fID -fID -fID +wtY +eLA +jkW +eqe +wtY afP -fID -fID -fID -fID -fID -fID -fID +sbw +rOB +rOB +nLn +rOB +rOB +sbw afP dZk fon jHX -vBV +cgv gFx -aFy -aFy -aFy -aFy -aFy -aFy +sgW +sgW +sgW +sgW +sgW +sgW nAN mZo mZo @@ -108764,8 +108828,8 @@ shl mZo mZo nAN -nUc -uGD +qse +ocx uzP uzP uzP @@ -108778,34 +108842,34 @@ uzP uzP uzP uzP -eTE +gzR tgn nAN nAN nAN nAN nAN -pIz -hJM -eZD -pIz +bVt +geF +vYK +bVt nAN nAN nAN nAN nAN -cqr +pUC rTL rTL rTL rTL -ohc +tAi fAg fAg -orN -gLu -gLu -qVW +cPL +lPb +lPb +rHK nAN mVX mVX @@ -108983,37 +109047,37 @@ mVX mVX mVX onc -fID -fID -fID -fID -fID +nTJ +wmI +puY +wXd +nTJ onc -fID -fID -fID -fID -fID +wtY +lFU +jkW +uFt +wtY afP -fID -fID -fID -fID -fID -fID -fID +sbw +sbw +ipi +ipi +ipi +sbw +sbw ecV -oYw +vsV fon jHX -geh +riL gFx -rrh -rrh -jBz -jBz -jBz -jBz +qjA +qjA +tlp +tlp +tlp +tlp nAN mZo mZo @@ -109021,9 +109085,9 @@ shl mZo mZo nAN -rpx -uGD -uGD +wZH +ocx +ocx uzP uzP uzP @@ -109035,34 +109099,34 @@ uzP uzP uzP uzP -pGs +thl tgn nAN nAN -eHW -eHW -eHW -eHW -eHW -eHW -eHW -eHW -eHW -eHW -eHW -nAN -cIa -equ -equ -equ -equ -dmX +dTg +usR +usR +tKr +sZA +sZA +tKr +usR +usR +tKr +usR +nAN +tnU +ruu +ruu +ruu +ruu +oZM fAg fAg -orN -gLu -gLu -gLu +cPL +lPb +lPb +lPb nAN mVX mVX @@ -109240,37 +109304,37 @@ mVX mVX mVX onc -fID -fID -fID -fID -fID +nTJ +nTJ +iAH +nTJ +nTJ onc -fID -fID -fID -fID -fID +wtY +wtY +iVV +wtY +wtY afP -fID -fID -fID -fID -fID -fID -fID +mVX +bbq +bbq +bbq +bbq +bbq +mVX afP -jXf -fqL -tgA -mZi +dlT +aDR +jHX +hAX gFx -gdn -nfo -nfo -nfo -nfo -nfo +aLo +quA +quA +quA +quA +quA nAN mZo mZo @@ -109281,45 +109345,45 @@ nAN nAN gjP nAN -iAW -jpB -jpB -jpB -jpB -jpB -qfG +oWf +tqG +tqG +tqG +tqG +tqG +ejx uzP uzP uzP -uGD -tRQ +ocx +rBs byz nAN nAN -eHW -eHW -eHW -eHW -eHW -eHW -eHW -eHW -eHW -eHW -eHW +usR +usR +ajs +taZ +aLg +evp +fDh +vpr +agB +hVq +hQV nAN -nrO -xfU -oGC -dJw +kmt +qog +jNk +rTs nAN tdy -ntq +xCR fAg nAN -awn -uSe -jtt +uTt +kzR +sxu nAN mVX mVX @@ -109423,7 +109487,7 @@ mVX mVX mVX mVX -eCq +mVX mVX mVX mVX @@ -109498,15 +109562,15 @@ mVX mVX jMD mVX -fID -fID -fID +nTJ +oMf +nTJ mVX jMD mVX -fID -fID -fID +wtY +vWm +wtY mVX jMD mVX @@ -109517,9 +109581,9 @@ mVX mVX mVX afP -ecV -ecV -ecV +pgz +aDR +sIQ afP afP afP @@ -109536,42 +109600,42 @@ mZo mZo nAN mCQ -ths +ooD nAN -pHZ +dxk rjE rjE rjE rjE rjE -qfG -bZG -vrB -boG -uGD +ejx +lgV +iuv +kvh +ocx uSN uSN nAN -erq -vUA -eHW -eHW -eHW -eHW -eHW -eHW -eHW -eHW -eHW -eHW -nAN -hEG -lHe -tdw -ntc -nAN -aXC -faQ +xEr +pZG +woV +woV +woV +woV +woV +woV +taZ +lQg +hVq +hQV +nAN +tkR +vgt +mbA +qnE +nAN +gpm +aKz fAg nAN nAN @@ -109708,192 +109772,7 @@ mVX mVX mVX mVX -pNM -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -jMD -mVX -mVX -wLM -vNw -wLM -vNw -wLM -jMD -jMD -jMD -wLM -vNw -wLM -vNw -wLM -mVX -mVX -mVX -mVX -mVX -mVX -jMD -mVX -mVX -mVX -mVX -mVX -jMD -mVX -mVX -mVX -mVX -mVX -jMD -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -nAN -lRD -lRD -shl -lRD -lRD -nAN -aqG -mCb -nAN -nkz -aIk -fAg -fAg -fAg -fAg -qml -uVZ -tgn -nFb -uSN -uSN -eWz -eWz -nAN -eHW -eHW -eHW -eHW -eHW -eHW -eHW -eHW -eHW -eHW -eHW -nAN -nAN -gIq -dEN -uZI -nAN -quz -fvO -mcK -tmn -nAN -nAN -gpY -ono -mVX -mVX -pNM -mVX -mVX -mVX -mVX -mVX -mVX -mVX -"} -(223,1,1) = {" -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX +pNM mVX mVX mVX @@ -109910,31 +109789,47 @@ mVX mVX mVX mVX -pNM mVX mVX mVX mVX mVX mVX +jMD mVX mVX +wLM +vNw +wLM +vNw +wLM +jMD +jMD +jMD +wLM +vNw +wLM +vNw +wLM mVX mVX mVX mVX mVX mVX +jMD mVX mVX mVX mVX mVX +jMD mVX mVX mVX mVX mVX +jMD mVX mVX mVX @@ -109942,9 +109837,71 @@ mVX mVX mVX mVX +ecV +dZk +aDR +xhN +afP +qAI +aiB +dTt +aiB +dtp +afP mVX +nAN +lRD +lRD +shl +lRD +lRD +nAN +tbt +mCb +nAN +nkz +tAB +fAg +fAg +fAg +fAg +bhj +nQM +tgn +dPr +uSN +uSN +jMD +jMD +nAN +usR +usR +taZ +taZ +taZ +taZ +taZ +xie +kQO +hVq +hQV +nAN +nAN +eRb +dOf +rHW +nAN +iXF +xfD +uJU +fXf +nAN +nAN +lJk +tad mVX mVX +pNM mVX mVX mVX @@ -109952,6 +109909,8 @@ mVX mVX mVX mVX +"} +(223,1,1) = {" mVX mVX mVX @@ -109965,7 +109924,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -109983,35 +109941,6 @@ mVX mVX mVX mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -hRH -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA mVX mVX mVX @@ -110043,58 +109972,14 @@ mVX mVX mVX mVX -iae -iae -iae -iae -iae -nAN -nAN -nAN -nAN -nAN -nDw -uOj -cGx -uea -aoZ -nAN -nAN -uSN -uSN -uSN -eWz mVX mVX -eWz -eHW -eHW -eHW -eHW -eHW -eHW -eHW -jMD -jMD +pNM mVX mVX mVX -nAN -shl -shl -nAN -nAN -nAN -nAN -nAN -nAN -nAN -nAN -nAN -nAN mVX mVX -pNM mVX mVX mVX @@ -110102,8 +109987,6 @@ mVX mVX mVX mVX -"} -(224,1,1) = {" mVX mVX mVX @@ -110146,6 +110029,7 @@ mVX mVX mVX mVX +pNM mVX mVX mVX @@ -110167,8 +110051,30 @@ mVX mVX mVX mVX -pNM mVX +vAA +vAA +vAA +vAA +yjN +vAA +iil +vAA +bud +bud +bud +wkN +uEW +vAA +uEW +vAA +vAA +wkN +bud +bud +wkN +vAA +vAA mVX mVX mVX @@ -110188,13 +110094,71 @@ mVX mVX mVX mVX +ecV +dZk +aDR +xhN +afP +htF +aeQ +aeQ +aeQ +bIN +afP mVX mVX +rFY +rFY +rFY +rFY +rFY +nAN +nAN +nAN +nAN +nAN +pYv +uOj +ugM +uea +oUi +nAN +nAN +uSN +uSN +uSN +jMD mVX mVX +jMD +dTg +usR +usR +usR +usR +usR +usR +beS +beS +tKr +usR mVX +nAN +shl +shl +nAN +nAN +nAN +nAN +nAN +nAN +nAN +nAN +nAN +nAN mVX mVX +pNM mVX mVX mVX @@ -110202,6 +110166,8 @@ mVX mVX mVX mVX +"} +(224,1,1) = {" mVX mVX mVX @@ -110222,7 +110188,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -110240,35 +110205,6 @@ mVX mVX mVX mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA mVX mVX mVX @@ -110295,6 +110231,7 @@ mVX mVX mVX mVX +pNM mVX mVX mVX @@ -110309,13 +110246,6 @@ mVX mVX mVX mVX -nAN -nAN -nAN -nAN -nAN -nAN -nAN mVX mVX mVX @@ -110324,7 +110254,6 @@ mVX mVX mVX mVX -jMD mVX mVX mVX @@ -110332,7 +110261,6 @@ mVX mVX mVX mVX -jMD mVX mVX mVX @@ -110351,7 +110279,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -110359,8 +110286,7 @@ mVX mVX mVX mVX -"} -(225,1,1) = {" +pNM mVX mVX mVX @@ -110383,6 +110309,30 @@ mVX mVX mVX mVX +wkN +rpQ +rOi +ayR +sms +wkN +sMr +sWd +izX +izX +izX +izX +dNe +sWd +dNe +uOA +wkN +uVo +vpD +aaa +vNc +vAA +eLd +iVX mVX mVX mVX @@ -110401,6 +110351,17 @@ mVX mVX mVX mVX +ecV +dZk +aDR +jHX +saq +htF +aeQ +aeQ +aeQ +bIN +afP mVX mVX mVX @@ -110408,6 +110369,17 @@ mVX mVX mVX mVX +nAN +lbZ +lbZ +lbZ +nAN +nAN +nAN +nAN +nAN +nAN +nAN mVX mVX mVX @@ -110416,6 +110388,7 @@ mVX mVX mVX mVX +jMD mVX mVX mVX @@ -110423,8 +110396,8 @@ mVX mVX mVX mVX +jMD mVX -pNM mVX mVX mVX @@ -110442,6 +110415,7 @@ mVX mVX mVX mVX +pNM mVX mVX mVX @@ -110449,6 +110423,8 @@ mVX mVX mVX mVX +"} +(225,1,1) = {" mVX mVX mVX @@ -110479,9 +110455,6 @@ mVX mVX mVX mVX -pNM -mVX -mVX mVX mVX mVX @@ -110497,39 +110470,6 @@ mVX mVX mVX mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -mVX -mVX -mVX -mVX mVX mVX mVX @@ -110548,6 +110488,7 @@ mVX mVX mVX mVX +pNM mVX mVX mVX @@ -110589,7 +110530,6 @@ mVX mVX mVX mVX -jMD mVX mVX mVX @@ -110603,12 +110543,12 @@ mVX mVX mVX mVX +pNM mVX mVX mVX mVX mVX -pNM mVX mVX mVX @@ -110616,8 +110556,6 @@ mVX mVX mVX mVX -"} -(226,1,1) = {" mVX mVX mVX @@ -110628,6 +110566,30 @@ mVX mVX mVX mVX +bud +esN +rPC +oQJ +qJx +syr +dNe +izX +izX +izX +izX +izX +dNe +izX +dNe +izX +bud +tHp +qom +qom +vUY +vAA +eLd +iVX mVX mVX mVX @@ -110646,6 +110608,17 @@ mVX mVX mVX mVX +ecV +dZk +aDR +xhN +afP +bEA +mRm +wEu +mRm +wPe +afP mVX mVX mVX @@ -110653,6 +110626,11 @@ mVX mVX mVX mVX +nAN +lbZ +lbZ +lbZ +nAN mVX mVX mVX @@ -110675,13 +110653,13 @@ mVX mVX mVX mVX +jMD mVX mVX mVX mVX mVX mVX -pNM mVX mVX mVX @@ -110694,6 +110672,7 @@ mVX mVX mVX mVX +pNM mVX mVX mVX @@ -110701,6 +110680,8 @@ mVX mVX mVX mVX +"} +(226,1,1) = {" mVX mVX mVX @@ -110736,7 +110717,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -110754,35 +110734,6 @@ mVX mVX mVX mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA mVX mVX mVX @@ -110794,6 +110745,7 @@ mVX mVX mVX mVX +pNM mVX mVX mVX @@ -110846,9 +110798,9 @@ mVX mVX mVX mVX -jMD mVX mVX +pNM mVX mVX mVX @@ -110865,16 +110817,38 @@ mVX mVX mVX mVX -pNM mVX mVX mVX mVX mVX +vAA +vAA +esN +qGu +sfc +sle +syr +dNe +dNe +dNe +dNe +dNe +dNe +dNe +dNe +dNe +izX +bud +tHp +qom +qom +bBU +vAA +eLd +iVX mVX mVX -"} -(227,1,1) = {" mVX mVX mVX @@ -110891,6 +110865,17 @@ mVX mVX mVX mVX +afP +pgz +aDR +iRY +afP +afP +afP +afP +afP +afP +afP mVX mVX mVX @@ -110898,6 +110883,11 @@ mVX mVX mVX mVX +nAN +lbZ +lbZ +lbZ +nAN mVX mVX mVX @@ -110920,6 +110910,7 @@ mVX mVX mVX mVX +jMD mVX mVX mVX @@ -110946,6 +110937,8 @@ mVX mVX mVX mVX +"} +(227,1,1) = {" mVX mVX mVX @@ -110993,7 +110986,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -111010,36 +111002,8 @@ mVX mVX mVX mVX +pNM mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA mVX mVX mVX @@ -111093,6 +111057,7 @@ mVX mVX mVX mVX +pNM mVX mVX mVX @@ -111103,7 +111068,6 @@ mVX mVX mVX mVX -jMD mVX mVX mVX @@ -111111,6 +111075,35 @@ mVX mVX mVX mVX +vAA +wkN +bud +wkN +vAA +vAA +esN +qGu +wJl +bwU +bud +dNe +izX +izX +izX +izX +izX +izX +izX +dNe +izX +wkN +vdg +qom +qom +epb +vAA +vAA +vAA mVX mVX mVX @@ -111122,7 +111115,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -111130,8 +111122,17 @@ mVX mVX mVX mVX -"} -(228,1,1) = {" +ecV +dZk +aDR +xhN +afP +vZp +lwT +oKI +lwT +gYf +afP mVX mVX mVX @@ -111139,6 +111140,11 @@ mVX mVX mVX mVX +nAN +nAN +nAN +nAN +nAN mVX mVX mVX @@ -111161,6 +111167,7 @@ mVX mVX mVX mVX +jMD mVX mVX mVX @@ -111179,6 +111186,7 @@ mVX mVX mVX mVX +pNM mVX mVX mVX @@ -111186,6 +111194,8 @@ mVX mVX mVX mVX +"} +(228,1,1) = {" mVX mVX mVX @@ -111195,7 +111205,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -111268,37 +111277,6 @@ mVX mVX mVX mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -mVX -mVX mVX mVX mVX @@ -111336,6 +111314,7 @@ mVX mVX mVX mVX +pNM mVX mVX mVX @@ -111353,6 +111332,35 @@ mVX mVX mVX mVX +wkN +xnF +pSS +dDZ +qzL +vAA +esN +qGu +wJl +bwU +bud +dNe +eoF +izX +jYK +izX +izX +izX +eoF +dNe +dNe +uSG +qom +qom +qom +tOK +vAA +eLd +iVX mVX mVX mVX @@ -111371,6 +111379,17 @@ mVX mVX mVX mVX +ecV +dZk +aDR +xhN +afP +paz +ilJ +ilJ +ilJ +lFA +afP mVX mVX mVX @@ -111378,8 +111397,12 @@ mVX mVX mVX mVX +nAN +vjb +vjb +vjb +nAN mVX -pNM mVX mVX mVX @@ -111387,8 +111410,6 @@ mVX mVX mVX mVX -"} -(229,1,1) = {" mVX mVX mVX @@ -111422,6 +111443,7 @@ mVX mVX mVX mVX +pNM mVX mVX mVX @@ -111429,6 +111451,8 @@ mVX mVX mVX mVX +"} +(229,1,1) = {" mVX mVX mVX @@ -111452,7 +111476,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -111493,6 +111516,7 @@ mVX mVX mVX mVX +pNM mVX mVX mVX @@ -111507,7 +111531,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -111525,35 +111548,6 @@ mVX mVX mVX mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA mVX mVX mVX @@ -111577,6 +111571,7 @@ mVX mVX mVX mVX +pNM mVX mVX mVX @@ -111594,6 +111589,35 @@ mVX mVX mVX mVX +bud +vcC +qfz +qfz +qFm +vAA +jlQ +wTK +sle +sns +wkN +sNX +wkN +bud +wkN +bud +wkN +bud +wkN +uIy +dNe +uSG +qom +qom +qom +vRi +vAA +eLd +iVX mVX mVX mVX @@ -111612,6 +111636,17 @@ mVX mVX mVX mVX +ecV +dZk +aDR +jHX +lDl +paz +ilJ +ilJ +ilJ +lFA +afP mVX mVX mVX @@ -111619,6 +111654,11 @@ mVX mVX mVX mVX +nAN +vjb +vjb +vjb +nAN mVX mVX mVX @@ -111636,7 +111676,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -111644,8 +111683,6 @@ mVX mVX mVX mVX -"} -(230,1,1) = {" mVX mVX mVX @@ -111663,6 +111700,7 @@ mVX mVX mVX mVX +pNM mVX mVX mVX @@ -111670,6 +111708,8 @@ mVX mVX mVX mVX +"} +(230,1,1) = {" mVX mVX mVX @@ -111709,7 +111749,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -111734,6 +111773,8 @@ mVX mVX mVX mVX +pNM +mVX mVX mVX mVX @@ -111764,7 +111805,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -111782,41 +111822,14 @@ mVX mVX mVX mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA mVX mVX mVX mVX mVX mVX +pNM +mVX mVX mVX mVX @@ -111833,6 +111846,41 @@ mVX mVX mVX mVX +bud +koI +rxF +vFD +rxF +mdM +wkN +rRm +rRm +wkN +vAA +sOe +sWw +tsj +tTF +tsj +uAh +tsj +sWw +dNe +uPe +wkN +vdH +vqK +vJp +vSD +vAA +vAA +vAA +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -111845,6 +111893,17 @@ mVX mVX mVX mVX +ecV +dZk +aDR +xhN +afP +jfm +hQZ +vdy +hQZ +bRZ +afP mVX mVX mVX @@ -111852,6 +111911,11 @@ mVX mVX mVX mVX +nAN +vjb +vjb +vjb +nAN mVX mVX mVX @@ -112039,54 +112103,35 @@ mVX mVX mVX mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX +bud +pAM +rxF +vFD +vFD +mdY +rqz +wDS +wDS +wDS +sCS +dNe +dNe +dNe +dNe +dNe +dNe +dNe +dNe +dNe +izX +vAA +vAA +vAA +vAA +vAA +vAA +eLd +iVX mVX mVX mVX @@ -112105,6 +112150,17 @@ mVX mVX mVX mVX +afP +pgz +aDR +iRY +afP +afP +afP +afP +afP +afP +afP mVX mVX mVX @@ -112112,6 +112168,14 @@ mVX mVX mVX mVX +nAN +nAN +nAN +nAN +nAN +mVX +mVX +mVX mVX mVX mVX @@ -112296,46 +112360,35 @@ mVX mVX mVX mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX +bud +lOH +rxF +vFD +vFD +mdY +dgT +wDS +wDS +wDS +sCS +dNe +dNe +dNe +dNe +dNe +dNe +dNe +dNe +dNe +izX +vAA +vAA +vAA +vAA +vAA +vAA +eLd +iVX mVX mVX mVX @@ -112354,6 +112407,17 @@ mVX mVX mVX mVX +ecV +dZk +aDR +xhN +afP +gDh +jXp +kek +jXp +hsP +afP mVX mVX mVX @@ -112553,46 +112617,35 @@ mVX mVX mVX mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX +bud +qEN +rxF +vFD +rxF +mdM +wkN +kph +kph +wkN +vAA +sOe +hsz +tzJ +oPx +tzJ +uDh +tzJ +hsz +dNe +uPe +wkN +veO +vst +vst +lnZ +vAA +vAA +vAA mVX mVX mVX @@ -112611,6 +112664,17 @@ mVX mVX mVX mVX +ecV +dZk +aDR +xhN +afP +iuR +hLb +hLb +hLb +nNQ +afP mVX mVX mVX @@ -112810,46 +112874,35 @@ mVX mVX mVX mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX +bud +nCH +qhG +qhG +qIt +vAA +tEN +rUk +xaA +ybu +wkN +sNX +wkN +bud +wkN +bud +wkN +bud +wkN +uIy +dNe +uSZ +dNe +dNe +dNe +lgR +vAA +eLd +iVX mVX mVX mVX @@ -112868,6 +112921,17 @@ mVX mVX mVX mVX +ecV +dZk +aDR +jHX +wTC +iuR +hLb +hLb +hLb +nNQ +afP mVX mVX mVX @@ -112994,27 +113058,7 @@ mVX mVX mVX mVX -pNM -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX +pNM mVX mVX mVX @@ -113049,7 +113093,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -113067,41 +113110,10 @@ mVX mVX mVX mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -mVX -mVX -mVX mVX mVX mVX +pNM mVX mVX mVX @@ -113119,6 +113131,35 @@ mVX mVX mVX mVX +wkN +pvA +qlQ +qwd +umm +vAA +qqG +til +wLl +soN +bud +dNe +sXP +izX +tZV +izX +izX +izX +sXP +dNe +dNe +uSZ +dNe +dNe +dNe +vSK +vAA +eLd +iVX mVX mVX mVX @@ -113137,6 +113178,17 @@ mVX mVX mVX mVX +ecV +dZk +aDR +xhN +afP +vUp +gIp +cAU +gIp +eZq +afP mVX mVX mVX @@ -113178,7 +113230,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -113186,13 +113237,12 @@ mVX mVX mVX mVX -"} -(236,1,1) = {" mVX mVX mVX mVX mVX +pNM mVX mVX mVX @@ -113200,6 +113250,8 @@ mVX mVX mVX mVX +"} +(236,1,1) = {" mVX mVX mVX @@ -113251,7 +113303,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -113264,6 +113315,7 @@ mVX mVX mVX mVX +pNM mVX mVX mVX @@ -113290,6 +113342,7 @@ mVX mVX mVX mVX +eCq mVX mVX mVX @@ -113306,7 +113359,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -113318,41 +113370,13 @@ mVX mVX mVX mVX +pNM mVX mVX mVX mVX mVX mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA mVX mVX mVX @@ -113364,6 +113388,35 @@ mVX mVX mVX mVX +vAA +wkN +bud +wkN +vAA +vAA +ugU +til +wLl +vDy +bud +dNe +izX +izX +izX +izX +izX +izX +izX +dNe +izX +wkN +vhp +dNe +dNe +vZr +vAA +vAA +vAA mVX mVX mVX @@ -113382,6 +113435,17 @@ mVX mVX mVX mVX +afP +pgz +aDR +iRY +afP +afP +afP +afP +afP +afP +afP mVX mVX mVX @@ -113581,76 +113645,35 @@ mVX mVX mVX mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX -mVX mVX mVX mVX mVX +vAA +vAA +oDr +til +wrD +xaA +sDa +dNe +dNe +dNe +dNe +dNe +dNe +dNe +dNe +dNe +izX +bud +ezN +dNe +dNe +pTf +vAA +eLd +iVX mVX mVX mVX @@ -113669,6 +113692,17 @@ mVX mVX mVX mVX +ecV +dZk +aDR +xhN +afP +thd +voW +eGx +voW +cJx +afP mVX mVX mVX @@ -113692,7 +113726,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -113700,23 +113733,6 @@ mVX mVX mVX mVX -"} -(238,1,1) = {" -xVn -xVn -xVn -xVn -xVn -xVn -xVn -xVn -xVn -xVn -xVn -xVn -xVn -xVn -xVn mVX mVX mVX @@ -113740,6 +113756,7 @@ mVX mVX mVX mVX +pNM mVX mVX mVX @@ -113747,6 +113764,23 @@ mVX mVX mVX mVX +"} +(238,1,1) = {" +xVn +xVn +xVn +xVn +xVn +xVn +xVn +xVn +xVn +xVn +xVn +xVn +xVn +xVn +xVn mVX mVX mVX @@ -113765,7 +113799,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -113796,6 +113829,7 @@ mVX mVX mVX mVX +pNM mVX mVX mVX @@ -113820,7 +113854,6 @@ mVX mVX mVX mVX -pNM mVX mVX mVX @@ -113838,35 +113871,6 @@ mVX mVX mVX mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA mVX mVX mVX @@ -113880,6 +113884,7 @@ mVX mVX mVX mVX +pNM mVX mVX mVX @@ -113902,6 +113907,65 @@ mVX mVX mVX mVX +bud +rqT +rXx +slQ +spf +sDa +dNe +izX +izX +izX +izX +izX +izX +izX +dNe +izX +bud +ezN +dNe +dNe +pTf +vAA +eLd +iVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +ecV +dZk +aDR +xhN +afP +qoL +lbx +lbx +lbx +nnC +afP +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX @@ -114095,46 +114159,35 @@ mVX mVX mVX mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -mVX -mVX -mVX -mVX -mVX -mVX mVX mVX mVX mVX mVX +wkN +rsS +rYn +rYn +sra +wkN +sRl +sZH +izX +izX +izX +izX +izX +sZH +uKc +uOA +wkN +ezN +dNe +dNe +pTf +vAA +eLd +iVX mVX mVX mVX @@ -114153,6 +114206,17 @@ mVX mVX mVX mVX +ecV +dZk +aDR +jHX +sVB +qoL +lbx +lbx +lbx +nnC +afP mVX mVX mVX @@ -114352,45 +114416,34 @@ mVX mVX mVX mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -mVX -mVX -mVX -mVX -mVX mVX mVX mVX mVX mVX +vAA +wkN +bud +bud +wkN +vAA +vAA +wkN +bud +bud +bud +wkN +vAA +vAA +vAA +vAA +vAA +bud +vtX +vKS +bud +vAA +vAA mVX mVX mVX @@ -114410,6 +114463,17 @@ mVX mVX mVX mVX +ecV +fRi +yeh +aOM +afP +czW +oPk +qtl +oPk +pYT +afP mVX mVX mVX @@ -114609,35 +114673,6 @@ mVX mVX mVX mVX -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA -eWA mVX mVX mVX @@ -114685,6 +114720,35 @@ mVX mVX mVX mVX +afP +ecV +ecV +ecV +afP +afP +afP +afP +afP +afP +afP +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX +mVX mVX mVX mVX diff --git a/_maps/map_files/generic/Lavaland.dmm b/_maps/map_files/generic/Lavaland.dmm index 94eda5b4b9a5..c5456e296863 100644 --- a/_maps/map_files/generic/Lavaland.dmm +++ b/_maps/map_files/generic/Lavaland.dmm @@ -2136,6 +2136,10 @@ icon_state = "brown" }, /area/mine/production) +"fa" = ( +/obj/ash_walker_landmark, +/turf/template_noop, +/area/lavaland/surface/outdoors/necropolis) "fb" = ( /obj/machinery/alarm{ dir = 1; @@ -7153,6 +7157,9 @@ /obj/structure/window/reinforced/clockwork, /turf/simulated/floor/indestructible/boss, /area/lavaland/surface/outdoors/necropolis) +"YG" = ( +/turf/template_noop, +/area/lavaland/surface/outdoors/necropolis) "YJ" = ( /obj/machinery/door/airlock{ name = "Labor Camp Storage" @@ -60217,7 +60224,7 @@ xu aj aj aj -ab +aj ab ab ab @@ -62019,7 +62026,7 @@ aj aj aj aj -ab +aj ab ab mK @@ -62276,7 +62283,7 @@ aj aj aj aj -ab +aj ab ab mK @@ -62518,13 +62525,14 @@ oG xu xu xu -xu -xu -xu -xu -xu -xu -xu +YG +YG +YG +YG +YG +YG +YG +aj aj aj aj @@ -62533,7 +62541,6 @@ aj aj aj aj -ab ab ab mK @@ -62775,13 +62782,15 @@ oG xu xu xu -xu -xu -xu -xu -xu -xu -xu +YG +YG +YG +YG +YG +YG +YG +aj +aj aj aj aj @@ -62790,8 +62799,6 @@ aj aj aj aj -ab -ab ab mK mK @@ -63032,13 +63039,15 @@ Pm WP xu xu -xu -xu -xu -xu -xu -xu -xu +YG +YG +YG +YG +YG +YG +YG +aj +aj aj aj aj @@ -63047,8 +63056,6 @@ aj aj aj aj -ab -ab ab mK mK @@ -63289,13 +63296,15 @@ Pm Pm Pm xu -xu -xu -xu -xu -xu -xu -xu +YG +YG +YG +fa +YG +YG +YG +aj +aj aj aj aj @@ -63304,8 +63313,6 @@ aj aj aj aj -ab -ab ab mK mK @@ -63546,13 +63553,15 @@ Pm Le Le Le -Le -xu -xu -xu -xu -xu -xu +YG +YG +YG +YG +YG +YG +YG +aj +aj aj aj aj @@ -63561,8 +63570,6 @@ aj aj aj aj -ab -ab ab mK mK @@ -63803,13 +63810,15 @@ Pm Le Le Le -Le -Pm -xu -xu -xu -xu -xu +YG +YG +YG +YG +YG +YG +YG +aj +aj aj aj aj @@ -63818,8 +63827,6 @@ aj aj aj aj -ab -ab ab mK mK @@ -64060,13 +64067,14 @@ Pm Le Le Le -Le -Pm -xu -xu -xu -xu -xu +YG +YG +YG +YG +YG +YG +YG +aj aj aj aj @@ -64075,7 +64083,6 @@ aj aj aj aj -ab ab ab mK @@ -64332,7 +64339,7 @@ aj aj aj aj -ab +aj ab ab mK @@ -65357,7 +65364,7 @@ xu aj aj aj -ab +aj ab mK mK diff --git a/_maps/map_files/nova/Lavaland.dmm b/_maps/map_files/nova/Lavaland.dmm index bca7828f3ccd..468bd86c8f20 100644 --- a/_maps/map_files/nova/Lavaland.dmm +++ b/_maps/map_files/nova/Lavaland.dmm @@ -1,8 +1,5 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aa" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 2 - }, /obj/machinery/camera{ c_tag = "Mining Post South-East Hallway"; dir = 2; @@ -35,11 +32,23 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/mine/laborcamp) +"an" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/mine/storage) "ao" = ( /obj/effect/mapping_helpers/no_lava, /obj/structure/ore_box, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/explored) +"ap" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/mine/storage) "as" = ( /obj/structure/cable{ icon_state = "1-8" @@ -130,6 +139,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/effect/baseturf_helper/lava_land/surface, /turf/simulated/floor/plasteel, /area/mine/eva) "aM" = ( @@ -142,13 +152,12 @@ /obj/structure/stone_tile, /turf/simulated/floor/indestructible/boss, /area/mine/necropolis) +"aS" = ( +/obj/effect/turf_decal/delivery, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "bf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, +/obj/machinery/door/firedoor, /turf/simulated/floor/plasteel, /area/mine/living_quarters) "bg" = ( @@ -205,9 +214,7 @@ /area/lavaland/surface/outdoors) "bG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel, /area/mine/lobby) "bH" = ( @@ -312,7 +319,7 @@ dir = 4; icon_state = "brown" }, -/area/mine/living_quarters) +/area/mine/storage) "dm" = ( /obj/structure/stone_tile/block/cracked, /turf/simulated/floor/lava/lava_land_surface, @@ -422,15 +429,29 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/simulated/floor/plasteel, /area/mine/living_quarters) +"eg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/mine/living_quarters) "ej" = ( /obj/structure/table, /obj/item/reagent_containers/food/drinks/cans/beer, @@ -829,6 +850,15 @@ icon_state = "brownfull" }, /area/mine/laborcamp) +"gE" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/poster/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel/dark, +/area/mine/maintenance) "gF" = ( /obj/structure/cable{ d1 = 4; @@ -917,6 +947,29 @@ /obj/structure/stone_tile, /turf/simulated/floor/indestructible/boss, /area/mine/necropolis) +"he" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -25; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) +"hh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Mining Station Communications"; + req_access = list(48) + }, +/turf/simulated/floor/plasteel/dark, +/area/mine/maintenance) "ho" = ( /obj/machinery/atmospherics/binary/pump/on{ desc = "Отправляет дыхательную смесь из трубы распространяться по аванпосту через вентиляцию."; @@ -936,6 +989,10 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/mine/laborcamp) +"ht" = ( +/obj/structure/sign/mining, +/turf/simulated/wall, +/area/mine/living_quarters) "hu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -1036,6 +1093,13 @@ "hQ" = ( /turf/simulated/wall, /area/lavaland/surface/outdoors/explored) +"hT" = ( +/obj/machinery/conveyor{ + id = "mining_internal"; + use_power = 0 + }, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "hX" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/old, @@ -1255,6 +1319,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/wood, /area/mine/cafeteria) "jE" = ( @@ -1324,13 +1391,9 @@ /turf/simulated/floor/wood, /area/mine/cafeteria) "jM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel, -/area/mine/living_quarters) +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/mine/storage) "jU" = ( /obj/structure/stone_tile/block{ dir = 1 @@ -1340,10 +1403,6 @@ /area/mine/necropolis) "jW" = ( /obj/structure/fans/tiny, -/obj/machinery/door/airlock/external{ - id_tag = "laborcamp_away2"; - name = "Lava Camp Airlock" - }, /obj/machinery/access_button{ command = "cycle_exterior"; frequency = 1379; @@ -1351,6 +1410,15 @@ name = "exterior access button"; pixel_y = -25 }, +/obj/machinery/door/airlock/external{ + frequency = 1379; + glass = 1; + id_tag = "mining_outer"; + locked = 1; + name = "Mining External Airlock"; + opacity = 0; + req_access = list(54) + }, /turf/simulated/floor/plating, /area/mine/lobby) "jX" = ( @@ -1397,18 +1465,14 @@ }, /area/mine/laborcamp) "kf" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 2 - }, +/obj/effect/decal/cleanable/dirt, /obj/machinery/camera{ - c_tag = "Mining Communications Relay"; - network = list("Mining Outpost") + c_tag = "Mining Smeltery"; + network = list("Mining Outpost"); + dir = 4 }, -/turf/simulated/floor/plasteel/dark, -/area/mine/maintenance) +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "kg" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 @@ -1503,12 +1567,18 @@ /turf/simulated/floor/lava/lava_land_surface, /area/mine/necropolis) "kR" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/turf/simulated/floor/plasteel{ - icon_state = "browncorner" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, +/turf/simulated/floor/plasteel, /area/mine/living_quarters) "lb" = ( /obj/structure/sink{ @@ -1652,7 +1722,6 @@ /turf/simulated/floor/plating, /area/mine/living_quarters) "lJ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment{ dir = 6 @@ -1724,9 +1793,6 @@ /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/necropolis) "me" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "browncorner" @@ -1830,6 +1896,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/decal/warning_stripes/yellow, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/simulated/floor/plasteel, /area/mine/living_quarters) "nb" = ( @@ -1880,6 +1949,9 @@ /obj/machinery/light{ dir = 4 }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 26 + }, /turf/simulated/floor/plasteel/dark, /area/mine/cafeteria) "nA" = ( @@ -1891,12 +1963,14 @@ /turf/simulated/wall, /area/mine/living_quarters) "nM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 +/obj/machinery/alarm{ + pixel_y = 24 }, -/turf/simulated/floor/plasteel, -/area/mine/lobby) +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/mine/living_quarters) "nN" = ( /obj/machinery/suit_storage_unit/lavaland, /turf/simulated/floor/plasteel{ @@ -1980,10 +2054,10 @@ /area/mine/lobby) "on" = ( /obj/machinery/light/small{ - dir = 1 + dir = 4 }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 2 +/obj/structure/sign/poster/random{ + pixel_x = 32 }, /turf/simulated/floor/plasteel/dark, /area/mine/maintenance) @@ -2016,6 +2090,18 @@ icon_state = "browncorner" }, /area/mine/living_quarters) +"oy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor_switch/oneway{ + id = "mining_internal"; + name = "mining conveyor"; + use_power = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "oz" = ( /obj/structure/stone_tile/block{ dir = 8 @@ -2273,6 +2359,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel, /area/mine/laborcamp) +"pP" = ( +/obj/machinery/mineral/processing_unit_console{ + use_power = 0 + }, +/turf/simulated/wall, +/area/mine/living_quarters) "pS" = ( /obj/structure/stone_tile/block/cracked{ dir = 8 @@ -2452,11 +2544,15 @@ "rv" = ( /obj/structure/closet/secure_closet/miner, /obj/item/pickaxe/safety, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -24 + }, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "brown" }, -/area/mine/living_quarters) +/area/mine/storage) "rC" = ( /obj/machinery/atmospherics/unary/outlet_injector/on{ dir = 4; @@ -2525,7 +2621,7 @@ dir = 1; icon_state = "brown" }, -/area/mine/living_quarters) +/area/mine/storage) "se" = ( /obj/structure/table, /obj/machinery/light{ @@ -2694,6 +2790,21 @@ /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plating, /area/mine/laborcamp) +"ts" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel/dark, +/area/mine/cafeteria) "tv" = ( /obj/machinery/atmospherics/pipe/manifold/visible/cyan{ dir = 1 @@ -2819,9 +2930,10 @@ dir = 1 }, /obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "2-8" }, /turf/simulated/floor/plasteel, /area/mine/living_quarters) @@ -2989,15 +3101,17 @@ }, /area/mine/laborcamp) "uV" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/structure/cable{ d1 = 4; d2 = 8; icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/plasteel, /area/mine/living_quarters) "va" = ( @@ -3010,14 +3124,18 @@ "vb" = ( /obj/structure/bed, /obj/item/bedsheet/brown, -/obj/item/toy/plushie/ashwalkerplushie{ - name = "Зюзя" - }, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "brown" }, /area/mine/living_quarters) +"vc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/baseturf_helper/lava_land/surface, +/turf/simulated/floor/plasteel{ + icon_state = "darkredfull" + }, +/area/mine/laborcamp/security) "ve" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -3126,6 +3244,18 @@ /mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril, /turf/simulated/floor/indestructible/boss, /area/mine/necropolis) +"vA" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "vB" = ( /turf/template_noop, /area/lavaland/surface/outdoors/necropolis) @@ -3174,6 +3304,14 @@ icon_state = "brown" }, /area/mine/lobby) +"vW" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + id = "mining_internal"; + use_power = 0 + }, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "vX" = ( /obj/structure/stone_tile/cracked{ dir = 8 @@ -3196,6 +3334,21 @@ }, /turf/simulated/floor/indestructible/boss, /area/mine/necropolis) +"wc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/tcomms/relay/mining, +/turf/simulated/floor/bluegrid, +/area/mine/maintenance) "we" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral{ @@ -3227,7 +3380,7 @@ dir = 1; icon_state = "brown" }, -/area/mine/living_quarters) +/area/mine/storage) "wo" = ( /obj/structure/stone_tile/block{ dir = 1 @@ -3414,6 +3567,9 @@ }, /turf/simulated/floor/plasteel, /area/mine/lobby) +"xV" = ( +/turf/simulated/floor/plasteel, +/area/mine/storage) "xW" = ( /obj/structure/window/reinforced/clockwork{ dir = 4; @@ -3579,6 +3735,10 @@ }, /turf/simulated/floor/indestructible/boss, /area/mine/necropolis) +"za" = ( +/obj/ash_walker_landmark, +/turf/template_noop, +/area/lavaland/surface/outdoors/necropolis) "zg" = ( /obj/structure/table, /obj/item/restraints/handcuffs{ @@ -3664,6 +3824,21 @@ /obj/machinery/mineral/equipment_vendor/labor, /turf/simulated/floor/plating, /area/mine/laborcamp) +"zO" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "mining_internal"; + use_power = 0 + }, +/obj/machinery/mineral/unloading_machine{ + dir = 1; + icon_state = "unloader-corner"; + input_dir = 2; + output_dir = 1; + use_power = 0 + }, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "zP" = ( /obj/structure/stone_tile/block{ dir = 4 @@ -3682,12 +3857,11 @@ /turf/simulated/floor/indestructible/boss, /area/mine/necropolis) "zT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel/dark, -/area/mine/cafeteria) +/turf/simulated/floor/plasteel, +/area/mine/lobby) "zY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -3802,11 +3976,15 @@ /turf/simulated/floor/plasteel/dark, /area/mine/cafeteria) "Ay" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 }, -/turf/simulated/floor/plasteel, -/area/mine/lobby) +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/mine/living_quarters) "AA" = ( /obj/structure/fluff/drake_statue, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, @@ -3901,6 +4079,10 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, +/obj/item/toy/plushie/ashwalkerplushie{ + name = "Зюзя"; + desc = "Мило выглядящая плюшевая игрушка пеплоходца с странным именем." + }, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "brown" @@ -3951,6 +4133,16 @@ }, /turf/simulated/floor/lava/lava_land_surface, /area/mine/necropolis) +"Bm" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "Bn" = ( /obj/structure/stone_tile/block, /obj/structure/stone_tile{ @@ -3993,8 +4185,12 @@ }, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/simulated/floor/plasteel, -/area/mine/living_quarters) +/area/mine/storage) "Bz" = ( /obj/structure/safe/floor, /obj/item/whetstone/cult{ @@ -4147,15 +4343,21 @@ /area/lavaland/surface/outdoors/necropolis) "Cn" = ( /obj/machinery/door/firedoor, -/obj/machinery/light/small{ - dir = 1 - }, /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" }, /area/mine/living_quarters) +"Cr" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/mine/living_quarters) "Cs" = ( /obj/machinery/atmospherics/pipe/simple/visible/universal{ dir = 8 @@ -4322,17 +4524,25 @@ /turf/simulated/floor/lava/lava_land_surface, /area/mine/necropolis) "Dh" = ( -/obj/machinery/hologram/holopad, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/turf/simulated/floor/plasteel/dark, +/obj/machinery/alarm{ + pixel_y = 24 + }, +/obj/machinery/camera{ + c_tag = "Mining Communications Relay"; + network = list("Mining Outpost") + }, +/turf/simulated/floor/bluegrid, /area/mine/maintenance) "Dl" = ( /obj/structure/stone_tile/slab/cracked, @@ -4425,11 +4635,8 @@ dir = 4 }, /turf/simulated/floor/plasteel, -/area/mine/living_quarters) +/area/mine/storage) "DW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, @@ -4442,6 +4649,9 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/wood, /area/mine/cafeteria) "Ej" = ( @@ -4493,11 +4703,20 @@ dir = 8; network = list("Mining Outpost") }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 26 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "brown" }, -/area/mine/living_quarters) +/area/mine/storage) "Es" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -4527,6 +4746,12 @@ icon_state = "freezerfloor" }, /area/mine/living_quarters) +"ET" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/mine/storage) "EU" = ( /obj/structure/stone_tile{ dir = 1 @@ -4569,7 +4794,7 @@ dir = 6; icon_state = "brown" }, -/area/mine/living_quarters) +/area/mine/storage) "Fv" = ( /obj/structure/stone_tile/center, /obj/structure/stone_tile/surrounding, @@ -4629,6 +4854,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/baseturf_helper/lava_land/surface, /turf/simulated/floor/plasteel/dark, /area/mine/cafeteria) "FJ" = ( @@ -4661,7 +4887,7 @@ dir = 8 }, /turf/simulated/floor/plasteel, -/area/mine/living_quarters) +/area/mine/storage) "FX" = ( /obj/structure/stone_tile/block/burnt{ dir = 1 @@ -4695,6 +4921,14 @@ icon_state = "clockwork_floor" }, /area/mine/necropolis) +"Gi" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "mining_internal"; + use_power = 0 + }, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "Gm" = ( /obj/structure/stone_tile/cracked{ dir = 4 @@ -4819,6 +5053,12 @@ icon_state = "brown" }, /area/mine/eva) +"GX" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/mine/lobby) "GY" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, @@ -5017,7 +5257,6 @@ /turf/simulated/floor/plasteel, /area/mine/lobby) "IF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, @@ -5058,17 +5297,16 @@ /turf/simulated/floor/indestructible/boss, /area/mine/necropolis) "Jl" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Mining Communications APC"; - pixel_x = 1; - pixel_y = 25 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 }, /obj/structure/cable{ - d2 = 4; - icon_state = "0-4" + icon_state = "1-2" }, -/turf/simulated/floor/bluegrid, +/turf/simulated/floor/plasteel/dark, /area/mine/maintenance) "Jm" = ( /obj/structure/fluff/drake_statue{ @@ -5159,8 +5397,15 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/baseturf_helper/lava_land/surface, /turf/simulated/floor/plasteel, -/area/mine/living_quarters) +/area/mine/storage) "Kb" = ( /obj/structure/table/wood, /obj/machinery/chem_dispenser/beer, @@ -5266,6 +5511,15 @@ }, /turf/simulated/floor/indestructible/boss, /area/mine/necropolis) +"KJ" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/mine/living_quarters) "KO" = ( /obj/structure/window/reinforced/clockwork{ dir = 8; @@ -5371,24 +5625,30 @@ }, /area/mine/laborcamp) "Lo" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 }, -/obj/machinery/light_switch{ +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 1; pixel_y = -25 }, -/turf/simulated/floor/plasteel/dark, +/turf/simulated/floor/bluegrid, /area/mine/maintenance) "Lp" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 30 - }, /obj/machinery/light{ dir = 4 }, @@ -5423,8 +5683,25 @@ }, /area/mine/necropolis) "LI" = ( -/obj/machinery/tcomms/relay/mining, -/turf/simulated/floor/plasteel/dark, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4; + pixel_y = 0 + }, +/obj/machinery/light_switch{ + pixel_y = -25 + }, +/turf/simulated/floor/bluegrid, /area/mine/maintenance) "LK" = ( /obj/structure/stone_tile/surrounding/cracked{ @@ -5619,9 +5896,6 @@ /turf/simulated/floor/plasteel, /area/mine/laborcamp) "MI" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral{ @@ -5702,14 +5976,27 @@ }, /turf/simulated/floor/plasteel, /area/mine/lobby) +"Nw" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/conveyor{ + id = "mining_internal"; + use_power = 0 + }, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "NA" = ( /obj/item/trash/syndi_cakes{ layer = 1.9; pixel_x = -6; pixel_y = -6 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel, -/area/mine/living_quarters) +/area/mine/storage) "NC" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 @@ -5763,6 +6050,13 @@ }, /turf/simulated/floor/plating, /area/mine/laborcamp) +"NW" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/baseturf_helper/lava_land/surface, +/turf/simulated/floor/plasteel/dark, +/area/mine/maintenance) "NY" = ( /obj/structure/stone_tile/surrounding_tile{ dir = 4 @@ -5781,11 +6075,13 @@ /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/necropolis) "Ob" = ( -/obj/machinery/alarm{ - pixel_y = 24 +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 }, -/turf/simulated/floor/bluegrid, -/area/mine/maintenance) +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "Og" = ( /obj/machinery/door/airlock, /obj/effect/decal/cleanable/dirt, @@ -5795,10 +6091,6 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /obj/structure/fans/tiny, /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/external{ - id_tag = "laborcamp_away2"; - name = "Lava Camp Airlock" - }, /obj/machinery/access_button{ command = "cycle_interior"; frequency = 1379; @@ -5806,6 +6098,15 @@ name = "interior access button"; pixel_y = 25 }, +/obj/machinery/door/airlock/external{ + frequency = 1379; + glass = 1; + id_tag = "mining_inner"; + locked = 1; + name = "Mining External Airlock"; + opacity = 0; + req_access = list(54) + }, /turf/simulated/floor/plasteel/dark, /area/mine/lobby) "Ol" = ( @@ -5839,6 +6140,19 @@ "Oy" = ( /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/necropolis) +"OB" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Mining Communications APC"; + pixel_x = 1; + pixel_y = 25 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel/dark, +/area/mine/maintenance) "OF" = ( /obj/structure/table, /obj/item/clothing/gloves/fingerless, @@ -5847,7 +6161,7 @@ dir = 5; icon_state = "brown" }, -/area/mine/living_quarters) +/area/mine/storage) "OL" = ( /obj/machinery/suit_storage_unit/lavaland, /obj/machinery/light{ @@ -5939,6 +6253,13 @@ icon_state = "brown" }, /area/mine/laborcamp) +"Pk" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "Pl" = ( /obj/machinery/disposal, /obj/effect/decal/warning_stripes/yellow, @@ -5971,6 +6292,27 @@ }, /turf/simulated/floor/plasteel, /area/mine/living_quarters) +"Pt" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/mine/living_quarters) +"Pu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "Pv" = ( /obj/structure/stone_tile/block/cracked{ dir = 4 @@ -6101,6 +6443,15 @@ }, /turf/simulated/floor/plasteel, /area/mine/laborcamp) +"Qm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/nuke{ + pixel_y = -32; + pixel_x = -32 + }, +/turf/simulated/floor/plasteel/dark, +/area/mine/cafeteria) "Qo" = ( /obj/machinery/atmospherics/unary/tank/air{ dir = 8 @@ -6115,18 +6466,8 @@ /turf/simulated/floor/plasteel/white, /area/mine/laborcamp) "Qr" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Communications"; - req_access = list(48) - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel/dark, -/area/mine/maintenance) +/turf/simulated/wall, +/area/mine/storage) "Qs" = ( /obj/structure/stone_tile/block/cracked{ dir = 8 @@ -6152,6 +6493,15 @@ icon_state = "clockwork_floor" }, /area/mine/necropolis) +"Qw" = ( +/obj/effect/turf_decal/loading_area{ + dir = 1 + }, +/obj/structure/sign/poster/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "Qz" = ( /obj/structure/stone_tile/block/burnt{ dir = 4 @@ -6243,8 +6593,15 @@ /turf/simulated/floor/indestructible/boss, /area/mine/necropolis) "Rc" = ( -/obj/machinery/light/small{ - dir = 1 +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 2 + }, +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1; + on = 1 }, /turf/simulated/floor/plasteel{ dir = 1; @@ -6398,14 +6755,14 @@ /area/lavaland/surface/outdoors/necropolis) "St" = ( /obj/structure/extinguisher_cabinet{ - pixel_x = -28; + pixel_x = -25; pixel_y = -32 }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "brown" }, -/area/mine/living_quarters) +/area/mine/storage) "Sy" = ( /obj/structure/stone_tile/block{ dir = 8 @@ -6417,8 +6774,13 @@ }, /area/mine/necropolis) "Sz" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/plasteel, -/area/mine/living_quarters) +/area/mine/storage) "SA" = ( /obj/structure/stone_tile/block, /obj/structure/stone_tile{ @@ -6440,6 +6802,9 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/wood, /area/mine/cafeteria) "SD" = ( @@ -6477,11 +6842,19 @@ pixel_x = -32 }, /obj/structure/table, +/obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "brown" }, /area/mine/living_quarters) +"SH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "SI" = ( /obj/structure/stone_tile/block/cracked{ dir = 4 @@ -6517,6 +6890,23 @@ }, /turf/simulated/floor/indestructible/boss, /area/mine/necropolis) +"Te" = ( +/obj/machinery/conveyor{ + dir = 6; + id = "mining_internal"; + use_power = 0 + }, +/obj/machinery/mineral/processing_unit{ + dir = 1; + input_dir = 2; + output_dir = 1; + use_power = 0 + }, +/obj/effect/decal/cleanable/cobweb2{ + layer = 4 + }, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "Tf" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, @@ -6586,14 +6976,14 @@ /turf/simulated/floor/lava/lava_land_surface, /area/mine/necropolis) "TA" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 2 - }, /obj/machinery/camera{ c_tag = "Mining Post South-West Hallway"; dir = 2; network = list("Mining Outpost") }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 2 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" @@ -6691,6 +7081,7 @@ /obj/machinery/alarm{ pixel_y = 24 }, +/obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel/dark, /area/mine/cafeteria) "Uw" = ( @@ -6699,7 +7090,7 @@ /turf/simulated/floor/plasteel{ icon_state = "brown" }, -/area/mine/living_quarters) +/area/mine/storage) "Uy" = ( /turf/simulated/mineral/random/high_chance/volcanic, /area/lavaland/surface/outdoors) @@ -6714,6 +7105,31 @@ tag = "icon-whiteblue (WEST)" }, /area/mine/lobby) +"UC" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/baseturf_helper/lava_land/surface, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) +"UG" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/mine/living_quarters) "UI" = ( /obj/structure/closet/secure_closet/personal, /turf/simulated/floor/plasteel{ @@ -6772,11 +7188,15 @@ name = "Emergency NanoMed"; pixel_x = -28 }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = 27 + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "brown" }, -/area/mine/living_quarters) +/area/mine/storage) "Va" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -6787,6 +7207,20 @@ icon_state = "brown" }, /area/mine/laborcamp) +"Vb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "Vd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel, @@ -6827,11 +7261,9 @@ }, /area/mine/necropolis) "Vy" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/turf/simulated/floor/plasteel/dark, -/area/mine/maintenance) +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "Vz" = ( /obj/structure/stone_tile/surrounding_tile{ dir = 8 @@ -6879,7 +7311,7 @@ /turf/simulated/floor/plasteel{ icon_state = "brown" }, -/area/mine/living_quarters) +/area/mine/storage) "VG" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/vending/sustenance, @@ -6910,6 +7342,14 @@ /obj/structure/chair/stool, /turf/simulated/floor/plasteel/dark, /area/mine/cafeteria) +"VW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/mine/living_quarters) "VY" = ( /obj/machinery/power/port_gen/pacman{ anchored = 1 @@ -7041,6 +7481,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel/dark, /area/mine/cafeteria) "WI" = ( @@ -7056,8 +7497,13 @@ "WJ" = ( /obj/item/radio/beacon, /obj/machinery/hologram/holopad, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/baseturf_helper/lava_land/surface, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, /turf/simulated/floor/plasteel, /area/mine/lobby) "WR" = ( @@ -7068,6 +7514,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, +/obj/effect/baseturf_helper/lava_land/surface, /turf/simulated/floor/plasteel, /area/mine/laborcamp) "WT" = ( @@ -7100,6 +7547,9 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/plasteel/dark, /area/mine/cafeteria) "Xf" = ( @@ -7175,10 +7625,13 @@ }, /turf/simulated/floor/indestructible/boss, /area/mine/necropolis) +"Ya" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "Ye" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -7201,7 +7654,7 @@ /turf/simulated/floor/plasteel{ icon_state = "brown" }, -/area/mine/living_quarters) +/area/mine/storage) "Yl" = ( /obj/structure/stone_tile/surrounding_tile, /obj/structure/stone_tile/surrounding_tile{ @@ -7320,6 +7773,10 @@ }, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/necropolis) +"Zb" = ( +/obj/effect/turf_decal/loading_area, +/turf/simulated/floor/plasteel, +/area/mine/living_quarters) "Zc" = ( /obj/structure/stone_tile/cracked{ dir = 4 @@ -7427,11 +7884,15 @@ }, /area/mine/necropolis) "ZC" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/structure/cable{ - icon_state = "1-4" + d1 = 4; + d2 = 8; + icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/plasteel, /area/mine/living_quarters) "ZD" = ( @@ -13939,7 +14400,7 @@ tf dI aE Es -Es +vc HV dI Ne @@ -18309,8 +18770,8 @@ DH DH Ne Ne -Ne -Ne +bB +tG Ne Ne Ne @@ -18566,9 +19027,9 @@ DH DH Ne bB -Ne -Ne -Ne +bB +tG +tG Ne Ne Ne @@ -18825,8 +19286,8 @@ Ne bB bB bB -Ne -Ne +tG +tG Ne Ne Ne @@ -19083,8 +19544,8 @@ bB bB bB bB -Ne -Ne +tG +bB Ne Ne "} @@ -19341,7 +19802,7 @@ bB bB bB bB -Ne +bB Ne Ne "} @@ -19598,8 +20059,8 @@ Ne bB bB bB -Ne -Ne +bB +bB Ne "} (48,1,1) = {" @@ -20617,12 +21078,12 @@ Ne Ne uq uq -Fc +ts As sU CJ Fc -XJ +Qm fi hw bB @@ -20878,7 +21339,7 @@ QF sU ib sU -CJ +gn Fc CS hw @@ -21121,18 +21582,18 @@ Ne Ne Ne Ne -Ne -Ne -Ne -Ne -dg +CO +CO +CO +CO +CO oL dg oL eT bg sU -gn +CJ FI Sf WY @@ -21378,10 +21839,10 @@ Ne Ne Ne Ne -Ne -Ne -CO CO +wc +gE +LI CO dA SG @@ -21635,18 +22096,18 @@ Ne Ne Ne Ne -Ne -CO CO +OB +NW Jl -CO -Pm -Sz +hh +eg +Pu ou kA CJ pg -zT +CJ Kb ka jq @@ -21892,14 +22353,14 @@ Ne Ne Ne Ne -Ne CO +Dh on Lo CO -TA -bf +KJ kR +JN cT fX eR @@ -22147,16 +22608,16 @@ Ne Ne Ne Ne -Ne -Ne -Ne +dg +dg CO -LI -Dh -Qr -jM +CO +CO +CO +CO +TA ZC -iB +Pt Ul nz Bz @@ -22404,13 +22865,13 @@ Ne Ne Ne Ne -Ne -Ne -Ne -CO +dg +aS +Qw +he kf Vy -CO +dg Cn vk lY @@ -22661,24 +23122,24 @@ Ne Ne Ne Ne -Ne -Ne -bB -CO -CO +oL +zO +oL +oy +Pk Ob -CO -Ls -AQ +Ya +VW +Bm ou cH Ha Ha -Ha -Ha +Ay +WX Oq Em -WX +Ha Ha qv Hs @@ -22918,28 +23379,28 @@ Ne Ne Ne Ne -Ne -Ne -bB -bB -CO -CO -CO -gk +oL +Gi +ht +oL +pP +SH +bf +Ls us -Dd +AN mY -Dd -Dd -Dd -Dd -Dd +AN +AN +AN +AN +AN ed Dd Dd jc iB -dg +oL bB Ne "} @@ -23175,21 +23636,21 @@ Ne Ne Ne Ne -Ne -Ne -Ne -bB -bB -bB dg -Ls +Te +Nw +hT +vW +Zb +dg +Cr AQ JN Hy vq vq vq -vq +UG vl Em vq @@ -23431,23 +23892,23 @@ bB bB bB Ne -bB -Ne -Ne -Ne Ne -bB -bB +dg +dg oL -Ls -AQ -iB -uL -uL oL oL -uL -uL +dg +dg +gk +Vb +iB +Qr +Qr +jM +jM +Qr +Qr pv uL IP @@ -23688,23 +24149,23 @@ bB bB bB bB -bB -bB Ne Ne Ne Ne bB -oL -Ls -AQ -iB -uL +bB +bB +dg +Rc +vA +VC +Qr UV -Ha +ET St rv -uL +Qr Ah uL mI @@ -23950,18 +24411,18 @@ bB bB Ne Ne -Ne bB -dg -Rc +bB +oL +Ls AQ iB -oL +jM wn DV -Sz +xV Yg -uL +Qr Ah uL AP @@ -24211,14 +24672,14 @@ Ne bB oL Ls -vH -Vd +UC +AN Bw -Vd +ap Ka Sz VE -uL +Qr Ah dg dg @@ -24466,16 +24927,16 @@ bB Ne Ne bB -oL -Ls +dg +nM AQ iB -oL +jM sb FU NA Uw -uL +Qr Ah dg bB @@ -24726,13 +25187,13 @@ bB dg aa uV -VC -uL +iB +Qr OF dh Er Fq -uL +Qr jE dg bB @@ -24982,14 +25443,14 @@ Ne bB oL Ls -AQ +Vb iB -nH -uL -uL -uL -uL -uL +an +Qr +Qr +Qr +Qr +Qr Ah dg bB @@ -25496,8 +25957,8 @@ bB bB dg Rc -AQ -iB +vA +VC uL UI MA @@ -26256,7 +26717,7 @@ oY zt xZ TQ -IE +GX me Xu Jb @@ -26514,7 +26975,7 @@ uH yX bG WJ -nM +yX Gq yX yX @@ -26769,8 +27230,8 @@ hu pA zt EZ -Ay IE +zT gX xY AO @@ -51983,372 +52444,115 @@ Or Or Or Or -"} -(174,1,1) = {" -Rs -Rs -Rs -Rs -Rs -Rs -Rs -Rs -Rs -Rs -Rs -Rs -Rs -Rs -yU -yU -yU -yU -yU -Oy -EW -rJ -rJ -rJ -rJ -EW -Oy -Oy -Ne -Ne -Ne -Ne -Ne -Ne -Ne -Ne -Ne -Cg -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -"} -(175,1,1) = {" -Rs -Rs -Rs -Rs -Rs -Rs -Rs -Rs -Rs -Rs -Rs -Rs -Rs -Rs -yU -yU -yU -yU -yU -Oy -Mv -rJ -rJ -rJ -rJ -Ys -Oy -Ne -Ne -Ne -Ne -Ne -Ne -Ne -Ne -Ne -Ne -Cg -tG -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or +"} +(174,1,1) = {" +Rs +Rs +Rs +Rs +Rs +Rs +Rs +Rs +Rs +Rs +Rs +Rs +Rs +Rs +yU +yU +yU +yU +yU +Oy +EW +rJ +rJ +rJ +rJ +EW +Oy +Oy +Ne +Ne +Ne +Ne +Ne +Ne +Ne +Ne +Ne +Cg +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or Or Or Or @@ -52498,7 +52702,7 @@ Or Or Or "} -(176,1,1) = {" +(175,1,1) = {" Rs Rs Rs @@ -52518,12 +52722,13 @@ yU yU yU yU -Mb Oy +Mv rJ rJ rJ rJ +Ys Oy Ne Ne @@ -52535,7 +52740,6 @@ Ne Ne Ne Ne -Ne Cg tG Or @@ -52755,7 +52959,7 @@ Or Or Or "} -(177,1,1) = {" +(176,1,1) = {" Rs Rs Rs @@ -52775,12 +52979,12 @@ yU yU yU yU +Mb Oy -Oy -Oy -EW -EW -Oy +rJ +rJ +rJ +rJ Oy Ne Ne @@ -52792,7 +52996,7 @@ Ne Ne Ne Ne -Cg +Ne Cg tG Or @@ -53012,7 +53216,7 @@ Or Or Or "} -(178,1,1) = {" +(177,1,1) = {" Rs Rs Rs @@ -53031,14 +53235,14 @@ yU yU yU yU +yU Oy Oy Oy +EW +EW Oy Oy -Oy -Oy -Ne Ne Ne Ne @@ -53051,7 +53255,7 @@ Ne Ne Cg Cg -Or +tG Or Or Or @@ -53269,19 +53473,21 @@ Or Or Or "} -(179,1,1) = {" -yU -yU -yU -yU -yU -yU -yU -yU -yU -yU -yU -yU +(178,1,1) = {" +Rs +Rs +Rs +Rs +Rs +Rs +Rs +Rs +Rs +Rs +Rs +Rs +Rs +Rs yU yU yU @@ -53293,8 +53499,6 @@ Oy Oy Oy Oy -Oy -Ne Ne Ne Ne @@ -53307,7 +53511,7 @@ Ne Ne Ne Cg -Or +Cg Or Or Or @@ -53526,7 +53730,11 @@ Or Or Or "} -(180,1,1) = {" +(179,1,1) = {" +yU +yU +yU +yU yU yU yU @@ -53539,10 +53747,6 @@ yU yU yU yU -hD -EW -Oy -Oy Oy Oy Oy @@ -53562,7 +53766,7 @@ Ne Ne Ne Ne -Cg +Ne Cg Or Or @@ -53783,7 +53987,7 @@ Or Or Or "} -(181,1,1) = {" +(180,1,1) = {" yU yU yU @@ -53795,11 +53999,9 @@ yU yU yU yU -Hx -Oy -Oy -Oy -Oy +yU +hD +EW Oy Oy Oy @@ -53818,7 +54020,9 @@ Ne Ne Ne Ne -Cg +Ne +Ne +Ne Cg Cg Or @@ -54040,7 +54244,7 @@ Or Or Or "} -(182,1,1) = {" +(181,1,1) = {" yU yU yU @@ -54052,6 +54256,8 @@ yU yU yU yU +Hx +Oy Oy Oy Oy @@ -54065,8 +54271,6 @@ Oy Oy Oy Oy -Ne -Ne Ne Ne Ne @@ -54296,67 +54500,67 @@ Or Or Or Or -"} -(183,1,1) = {" -yU -yU -yU -yU -yU -yU -yU -yU -yU -yU -yU -Oy -Oy -Oy -Oy -Oy -Oy -Oy -Oy -Oy -Oy -Oy -Oy -Ne -Ne -Ne -Ne -Ne -Ne -Ne -Ne -Ne -Ne -Ne -Cg -Cg -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or -Or +"} +(182,1,1) = {" +yU +yU +yU +yU +yU +yU +yU +yU +yU +yU +yU +Oy +Oy +Oy +Oy +Oy +Oy +Oy +Oy +Oy +Oy +Oy +Oy +Oy +Ne +Ne +Ne +Ne +Ne +Ne +Ne +Ne +Ne +Ne +Cg +Cg +Cg +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or Or Or Or @@ -54554,7 +54758,7 @@ Or Or Or "} -(184,1,1) = {" +(183,1,1) = {" yU yU yU @@ -54567,8 +54771,8 @@ yU yU yU Oy -EW -rJ +Oy +Oy Oy Oy Oy @@ -54811,7 +55015,7 @@ Or Or Or "} -(185,1,1) = {" +(184,1,1) = {" yU yU yU @@ -54823,10 +55027,10 @@ yU yU yU yU -EW +Oy EW rJ -WT +Oy Oy Oy Oy @@ -54844,8 +55048,8 @@ Ne Ne Ne Ne -Cg -Cg +Ne +Ne Cg Cg Or @@ -55068,7 +55272,7 @@ Or Or Or "} -(186,1,1) = {" +(185,1,1) = {" yU yU yU @@ -55083,7 +55287,7 @@ yU EW EW rJ -EW +WT Oy Oy Oy @@ -55100,6 +55304,7 @@ Ne Ne Ne Ne +Ne Cg Cg Cg @@ -55323,9 +55528,8 @@ Or Or Or Or -Or "} -(187,1,1) = {" +(186,1,1) = {" yU yU yU @@ -55582,7 +55786,7 @@ Or Or Or "} -(188,1,1) = {" +(187,1,1) = {" yU yU yU @@ -55597,6 +55801,7 @@ yU EW EW rJ +EW Oy Oy Oy @@ -55613,11 +55818,10 @@ Ne Ne Ne Ne -Ne Cg Cg Cg -Or +Cg Or Or Or @@ -55839,7 +56043,7 @@ Or Or Or "} -(189,1,1) = {" +(188,1,1) = {" yU yU yU @@ -55852,8 +56056,8 @@ yU yU yU EW -Hx -Oy +EW +rJ Oy Oy Oy @@ -56096,7 +56300,7 @@ Or Or Or "} -(190,1,1) = {" +(189,1,1) = {" yU yU yU @@ -56108,6 +56312,7 @@ yU yU yU yU +EW Hx Oy Oy @@ -56118,19 +56323,18 @@ Oy Oy Oy Oy -Oy -Oy -Oy Ne -Cg +Ne +Ne +Ne +Ne +Ne +Ne Ne Ne Cg Cg Cg -Cg -Cg -Or Or Or Or @@ -56353,7 +56557,7 @@ Or Or Or "} -(191,1,1) = {" +(190,1,1) = {" yU yU yU @@ -56365,6 +56569,9 @@ yU yU yU yU +Hx +Oy +Oy Oy Oy Oy @@ -56376,13 +56583,10 @@ Oy Oy Oy Ne +Cg Ne Ne -Ne -Ne -Ne -Ne -Ne +Cg Cg Cg Cg @@ -56610,7 +56814,7 @@ Or Or Or "} -(192,1,1) = {" +(191,1,1) = {" yU yU yU @@ -56867,7 +57071,7 @@ Or Or Or "} -(193,1,1) = {" +(192,1,1) = {" yU yU yU @@ -56879,7 +57083,7 @@ yU yU yU yU -EW +Oy Oy Oy Oy @@ -56897,7 +57101,7 @@ Ne Ne Ne Ne -Ne +Cg Cg Cg Cg @@ -57124,9 +57328,7 @@ Or Or Or "} -(194,1,1) = {" -yU -yU +(193,1,1) = {" yU yU yU @@ -57138,6 +57340,8 @@ yU yU yU yU +EW +Oy Oy Oy Oy @@ -57381,7 +57585,7 @@ Or Or Or "} -(195,1,1) = {" +(194,1,1) = {" yU yU yU @@ -57412,7 +57616,7 @@ Ne Ne Ne Ne -Ne +Cg Cg Cg Or @@ -57638,7 +57842,7 @@ Or Or Or "} -(196,1,1) = {" +(195,1,1) = {" yU yU yU @@ -57652,7 +57856,7 @@ yU yU yU yU -EW +Oy Oy Oy Oy @@ -57895,7 +58099,7 @@ Or Or Or "} -(197,1,1) = {" +(196,1,1) = {" yU yU yU @@ -58152,7 +58356,9 @@ Or Or Or "} -(198,1,1) = {" +(197,1,1) = {" +yU +yU yU yU yU @@ -58165,11 +58371,9 @@ yU yU yU EW -EW -Hx Oy -EW -EW +Oy +Oy Oy Oy Oy @@ -58409,13 +58613,7 @@ Or Or Or "} -(199,1,1) = {" -yU -yU -yU -yU -yU -yU +(198,1,1) = {" yU yU yU @@ -58427,8 +58625,14 @@ yU yU yU yU +EW +EW Hx Oy +EW +EW +Oy +Oy Oy Oy Ne @@ -58666,7 +58870,7 @@ Or Or Or "} -(200,1,1) = {" +(199,1,1) = {" yU yU yU @@ -58684,7 +58888,7 @@ yU yU yU yU -EW +Hx Oy Oy Oy @@ -58699,7 +58903,7 @@ Ne Ne Ne Cg -Or +Cg Or Or Or @@ -58923,7 +59127,7 @@ Or Or Or "} -(201,1,1) = {" +(200,1,1) = {" yU yU yU @@ -59180,7 +59384,7 @@ Or Or Or "} -(202,1,1) = {" +(201,1,1) = {" yU yU yU @@ -59198,7 +59402,7 @@ yU yU yU yU -Oy +EW Oy Oy Oy @@ -59437,7 +59641,13 @@ Or Or Or "} -(203,1,1) = {" +(202,1,1) = {" +yU +yU +yU +yU +yU +yU yU yU yU @@ -59449,14 +59659,6 @@ yU yU yU yU -EW -EW -EW -Hx -Oy -Oy -Oy -Oy Oy Oy Oy @@ -59469,6 +59671,8 @@ Ne Ne Ne Ne +Ne +Ne Cg Or Or @@ -59694,7 +59898,7 @@ Or Or Or "} -(204,1,1) = {" +(203,1,1) = {" yU yU yU @@ -59707,9 +59911,9 @@ yU yU yU EW -Oy -Oy -Oy +EW +EW +Hx Oy Oy Oy @@ -59951,7 +60155,7 @@ Or Or Or "} -(205,1,1) = {" +(204,1,1) = {" yU yU yU @@ -59963,7 +60167,7 @@ yU yU yU yU -Mb +EW Oy Oy Oy @@ -59981,8 +60185,8 @@ Ne Ne Ne Ne -Cg -Cg +Ne +Ne Cg Or Or @@ -60208,7 +60412,7 @@ Or Or Or "} -(206,1,1) = {" +(205,1,1) = {" yU yU yU @@ -60228,8 +60432,7 @@ Oy Oy Oy Oy -rJ -rJ +Oy Oy Oy Oy @@ -60237,7 +60440,8 @@ Ne Ne Ne Ne -Cg +Ne +Ne Cg Cg Cg @@ -60465,7 +60669,7 @@ Or Or Or "} -(207,1,1) = {" +(206,1,1) = {" yU yU yU @@ -60477,6 +60681,7 @@ yU yU yU yU +Mb Oy Oy Oy @@ -60484,16 +60689,15 @@ Oy Oy Oy Oy -EW rJ rJ Oy Oy Oy Ne -Cg Ne -Cg +Ne +Ne Cg Cg Cg @@ -60722,7 +60926,7 @@ Or Or Or "} -(208,1,1) = {" +(207,1,1) = {" yU yU yU @@ -60741,12 +60945,12 @@ Oy Oy Oy Oy -Oy +EW rJ rJ -EW Oy -Ne +Oy +Oy Ne Ne Ne @@ -60979,7 +61183,7 @@ Or Or Or "} -(209,1,1) = {" +(208,1,1) = {" yU yU yU @@ -60999,11 +61203,10 @@ Oy Oy Oy Oy -Oy +rJ +rJ EW Oy -Oy -Ne Ne Ne Ne @@ -61012,6 +61215,7 @@ Ne Cg Cg Cg +Cg Or Or Or @@ -61236,7 +61440,7 @@ Or Or Or "} -(210,1,1) = {" +(209,1,1) = {" yU yU yU @@ -61248,7 +61452,6 @@ yU yU yU yU -EW Oy Oy Oy @@ -61258,6 +61461,7 @@ Oy Oy Oy Oy +EW Oy Oy Ne @@ -61269,7 +61473,7 @@ Ne Cg Cg Cg -Cg +Or Or Or Or @@ -61493,9 +61697,7 @@ Or Or Or "} -(211,1,1) = {" -yU -yU +(210,1,1) = {" yU yU yU @@ -61507,7 +61709,9 @@ yU yU yU yU -Mb +EW +Oy +Oy Oy Oy Oy @@ -61750,7 +61954,7 @@ Or Or Or "} -(212,1,1) = {" +(211,1,1) = {" yU yU yU @@ -61764,7 +61968,7 @@ yU yU yU yU -EW +Mb Oy Oy Oy @@ -61780,7 +61984,7 @@ Ne Ne Ne Ne -Ne +Cg Cg Cg Cg @@ -62007,7 +62211,7 @@ Or Or Or "} -(213,1,1) = {" +(212,1,1) = {" yU yU yU @@ -62264,7 +62468,8 @@ Or Or Or "} -(214,1,1) = {" +(213,1,1) = {" +yU yU yU yU @@ -62294,7 +62499,6 @@ Ne Ne Ne Ne -Ne Cg Cg Cg @@ -62521,7 +62725,7 @@ Or Or Or "} -(215,1,1) = {" +(214,1,1) = {" yU yU yU @@ -62534,7 +62738,7 @@ yU yU yU yU -Oy +EW Oy Oy Oy @@ -62552,7 +62756,7 @@ Ne Ne Ne Ne -Cg +Ne Cg Cg Or @@ -62778,7 +62982,7 @@ Or Or Or "} -(216,1,1) = {" +(215,1,1) = {" yU yU yU @@ -62809,7 +63013,7 @@ Ne Ne Ne Ne -Cg +Ne Cg Cg Or @@ -63035,7 +63239,7 @@ Or Or Or "} -(217,1,1) = {" +(216,1,1) = {" yU yU yU @@ -63051,13 +63255,14 @@ yU Oy Oy Oy -Oy -Oy -Oy -Oy -Oy -Oy -Oy +vB +vB +vB +vB +vB +vB +vB +Ne Ne Ne Ne @@ -63066,7 +63271,6 @@ Ne Ne Ne Ne -Cg Cg Cg Or @@ -63292,7 +63496,8 @@ Or Or Or "} -(218,1,1) = {" +(217,1,1) = {" +yU yU yU yU @@ -63304,17 +63509,18 @@ yU yU yU yU -EW -yh -Oy -Oy -Oy -Oy -Oy -Oy Oy Oy Oy +vB +vB +vB +vB +vB +vB +vB +Ne +Ne Ne Ne Ne @@ -63323,8 +63529,6 @@ Ne Ne Ne Ne -Cg -Cg Cg Or Or @@ -63549,7 +63753,7 @@ Or Or Or "} -(219,1,1) = {" +(218,1,1) = {" yU yU yU @@ -63562,16 +63766,18 @@ yU yU yU EW -EW -EW -Oy -Oy -Oy -Oy -Oy -Oy +yh Oy Oy +vB +vB +vB +vB +vB +vB +vB +Ne +Ne Ne Ne Ne @@ -63580,8 +63786,6 @@ Ne Ne Ne Ne -Cg -Cg Cg Or Or @@ -63806,7 +64010,7 @@ Or Or Or "} -(220,1,1) = {" +(219,1,1) = {" yU yU yU @@ -63819,16 +64023,18 @@ yU yU yU EW -rJ -rJ -rJ -rJ -Oy -Oy -Oy -Oy -Oy +EW +EW Oy +vB +vB +vB +za +vB +vB +vB +Ne +Ne Ne Ne Ne @@ -63837,8 +64043,6 @@ Ne Ne Ne Ne -Cg -Cg Cg Or Or @@ -64063,7 +64267,7 @@ Or Or Or "} -(221,1,1) = {" +(220,1,1) = {" yU yU yU @@ -64079,13 +64283,15 @@ EW rJ rJ rJ -rJ -EW -Oy -Oy -Oy -Oy -Oy +vB +vB +vB +vB +vB +vB +vB +Ne +Ne Ne Ne Ne @@ -64094,8 +64300,6 @@ Ne Ne Ne Ne -Cg -Cg Cg Or Or @@ -64320,7 +64524,7 @@ Or Or Or "} -(222,1,1) = {" +(221,1,1) = {" yU yU yU @@ -64336,13 +64540,15 @@ EW rJ rJ rJ -rJ -EW -Oy -Oy -Oy -Oy -Oy +vB +vB +vB +vB +vB +vB +vB +Ne +Ne Ne Ne Ne @@ -64351,8 +64557,6 @@ Ne Ne Ne Ne -Cg -Cg Cg Or Or @@ -64577,7 +64781,7 @@ Or Or Or "} -(223,1,1) = {" +(222,1,1) = {" yU yU yU @@ -64593,13 +64797,14 @@ EW rJ rJ rJ -rJ -EW -Oy -Oy -Oy -Oy -Oy +vB +vB +vB +vB +vB +vB +vB +Ne Ne Ne Ne @@ -64608,7 +64813,6 @@ Ne Ne Ne Ne -Cg Cg Cg Or @@ -64834,7 +65038,7 @@ Or Or Or "} -(224,1,1) = {" +(223,1,1) = {" yU yU yU @@ -64865,7 +65069,7 @@ Ne Ne Ne Ne -Cg +Ne Cg Cg Or @@ -65091,7 +65295,7 @@ Or Or Or "} -(225,1,1) = {" +(224,1,1) = {" yU yU yU @@ -65103,7 +65307,7 @@ yU yU yU yU -fU +EW rJ rJ rJ @@ -65122,7 +65326,7 @@ Ne Ne Ne Ne -Cg +Ne Cg Cg Or @@ -65348,7 +65552,7 @@ Or Or Or "} -(226,1,1) = {" +(225,1,1) = {" yU yU yU @@ -65360,18 +65564,19 @@ yU yU yU yU -Oy +fU rJ rJ rJ rJ +EW Oy Oy Oy Oy Oy -Oy -Oy +Ne +Ne Ne Ne Ne @@ -65380,8 +65585,7 @@ Ne Ne Cg Cg -Or -Or +Cg Or Or Or @@ -65605,7 +65809,7 @@ Or Or Or "} -(227,1,1) = {" +(226,1,1) = {" yU yU yU @@ -65629,14 +65833,14 @@ Oy Oy Oy Oy -Oy +Ne +Ne +Ne +Ne Ne Ne Cg Cg -Cg -Or -Or Or Or Or @@ -65862,7 +66066,7 @@ Or Or Or "} -(228,1,1) = {" +(227,1,1) = {" yU yU yU @@ -65875,8 +66079,10 @@ yU yU yU Oy -Oy -Oy +rJ +rJ +rJ +rJ Oy Oy Oy @@ -65889,13 +66095,11 @@ Ne Ne Ne Ne -Ne -Ne Cg Or Or -Cg -Cg +Or +Or Or Or Or @@ -66119,7 +66323,7 @@ Or Or Or "} -(229,1,1) = {" +(228,1,1) = {" yU yU yU @@ -66149,8 +66353,8 @@ Ne Ne Ne Cg -Cg -Cg +Or +Or Cg Cg Or @@ -66376,7 +66580,7 @@ Or Or Or "} -(230,1,1) = {" +(229,1,1) = {" yU yU yU @@ -66405,8 +66609,8 @@ Ne Ne Ne Ne -Ne -Ne +Cg +Cg Cg Cg Cg @@ -66633,7 +66837,7 @@ Or Or Or "} -(231,1,1) = {" +(230,1,1) = {" yU yU yU @@ -66664,7 +66868,7 @@ Ne Ne Ne Ne -Ne +Cg Cg Cg Or @@ -66890,7 +67094,7 @@ Or Or Or "} -(232,1,1) = {" +(231,1,1) = {" yU yU yU @@ -66902,7 +67106,7 @@ yU yU yU yU -Mb +Oy Oy Oy Oy @@ -66922,7 +67126,7 @@ Ne Ne Ne Ne -Ne +Cg Cg Or Or @@ -67147,7 +67351,7 @@ Or Or Or "} -(233,1,1) = {" +(232,1,1) = {" yU yU yU @@ -67159,7 +67363,7 @@ yU yU yU yU -EW +Mb Oy Oy Oy @@ -67404,7 +67608,7 @@ Or Or Or "} -(234,1,1) = {" +(233,1,1) = {" yU yU yU @@ -67417,7 +67621,7 @@ yU yU yU EW -EW +Oy Oy Oy Oy @@ -67661,7 +67865,7 @@ Or Or Or "} -(235,1,1) = {" +(234,1,1) = {" yU yU yU @@ -67675,8 +67879,8 @@ yU yU EW EW -EW -EW +Oy +Oy Oy Oy Oy @@ -67918,7 +68122,7 @@ Or Or Or "} -(236,1,1) = {" +(235,1,1) = {" yU yU yU @@ -67946,7 +68150,264 @@ Ne Ne Ne Ne +Ne +Ne +Ne +Ne +Ne Cg +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +Or +"} +(236,1,1) = {" +yU +yU +yU +yU +yU +yU +yU +yU +yU +yU +yU +EW +EW +EW +EW +Oy +Oy +Oy +Oy +Oy +Oy +Oy +Ne +Ne +Ne +Ne +Ne +Ne Ne Ne Ne @@ -68460,7 +68921,7 @@ Ne Ne Ne Ne -Cg +Ne Ne Ne Ne @@ -68716,7 +69177,7 @@ Ne Ne Ne Ne -Cg +Ne Cg Ne Ne @@ -68971,7 +69432,7 @@ Oy Oy Oy Ne -Cg +Ne Ne Cg Cg diff --git a/_maps/map_files/nova/nova.dmm b/_maps/map_files/nova/nova.dmm index f8997e7806c3..7bc0c8d25cd7 100644 --- a/_maps/map_files/nova/nova.dmm +++ b/_maps/map_files/nova/nova.dmm @@ -161,15 +161,6 @@ tag = "icon-wood-broken7" }, /area/maintenance/backstage) -"abj" = ( -/obj/effect/spawner/window/reinforced, -/obj/machinery/door/poddoor/shutters{ - id_tag = "janitorshutters"; - name = "Janitor Shutters"; - dir = 1 - }, -/turf/simulated/floor/plating, -/area/janitor) "abk" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -220,6 +211,20 @@ }, /turf/simulated/floor/plasteel, /area/quartermaster/delivery) +"abK" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/hallway/primary/fore) "abP" = ( /obj/structure/filingcabinet/filingcabinet, /obj/structure/disposalpipe/segment, @@ -237,6 +242,14 @@ icon_state = "barber" }, /area/maintenance/apmaint) +"aci" = ( +/obj/machinery/camera{ + c_tag = "Supermatter Second Floor South"; + dir = 1; + network = list("SS13","Engineering") + }, +/turf/simulated/floor/plasteel/dark, +/area/engineering/controlroom) "acz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -325,21 +338,6 @@ icon_state = "escape" }, /area/hallway/secondary/exit/maint) -"acU" = ( -/obj/machinery/door/window/westleft{ - dir = 2; - name = "Cargo Desk"; - req_access = list(50) - }, -/obj/machinery/conveyor{ - id = "packageExternal"; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark" - }, -/area/quartermaster/delivery) "acX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -406,6 +404,28 @@ icon_state = "white" }, /area/toxins/lab) +"adn" = ( +/obj/structure/flora/ausbushes/palebush, +/obj/structure/flora/ausbushes/brflowers, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/window/reinforced{ + color = "orange"; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + color = "orange"; + dir = 4; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + color = "orange"; + dir = 8; + layer = 2.9 + }, +/turf/simulated/floor/grass, +/area/quartermaster/miningstorage) "adq" = ( /obj/structure/chair{ dir = 4 @@ -513,31 +533,11 @@ /turf/simulated/floor/plasteel/dark, /area/engineering/controlroom) "aek" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/machinery/hologram/holopad, -/obj/effect/decal/warning_stripes/green/hollow, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/item/radio/intercom{ - pixel_x = 28; - pixel_y = 32 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" +/obj/machinery/atmospherics/binary/valve{ + dir = 4 }, -/area/medical/virology) +/turf/simulated/floor/plating, +/area/medical/virology/lab) "aeq" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -581,23 +581,6 @@ icon_state = "blue" }, /area/hydroponics) -"aeE" = ( -/obj/structure/table/reinforced, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/item/lightreplacer, -/obj/item/lightreplacer{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/storage/box/lights/mixed, -/obj/item/storage/box/lights/mixed{ - pixel_y = 2; - pixel_x = 2 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/engineering/break_room) "aeF" = ( /obj/structure/table, /obj/machinery/recharger{ @@ -606,8 +589,8 @@ }, /obj/effect/decal/warning_stripes/red/hollow, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "redcorner" + dir = 9; + icon_state = "red" }, /area/security/prison/cell_block/A) "aeK" = ( @@ -665,6 +648,18 @@ icon_state = "whitebluefull" }, /area/medical/medbay) +"afd" = ( +/obj/effect/decal/cleanable/dust, +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 1; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/obj/machinery/light, +/turf/simulated/floor/wood, +/area/maintenance/casino) "afg" = ( /obj/machinery/door/airlock/silver{ name = "Bathroom" @@ -794,33 +789,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/fsmaint3) -"agi" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/button/windowtint{ - id = "execution"; - pixel_x = -24; - pixel_y = 24 - }, -/obj/machinery/light_switch{ - pixel_y = 34; - pixel_x = -24 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkred" - }, -/area/security/execution) "agl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/table, @@ -895,25 +863,41 @@ /turf/simulated/floor/plating, /area/hallway/secondary/exit) "agU" = ( -/obj/structure/table, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/ai_module/oxygen, +/obj/item/ai_module/one_crew_member, +/obj/item/ai_module/purge, +/obj/item/ai_module/antimov, +/obj/structure/table/glass, /obj/machinery/door/window{ + base_state = "right"; dir = 8; - name = "High-Risk Modules"; + icon_state = "right"; + name = "Core Modules"; req_access = list(20) }, -/obj/structure/window/reinforced, /obj/structure/window/reinforced{ - dir = 1 + dir = 2 }, -/obj/structure/window/reinforced{ - dir = 4 +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/obj/item/aiModule/oxygen, -/obj/item/aiModule/oneCrewMember, -/obj/item/aiModule/purge, -/obj/item/aiModule/antimov, -/turf/simulated/floor/bluegrid, /area/turret_protected/ai_upload) +"agW" = ( +/obj/structure/chair/sofa/corner{ + color = "#85130b"; + dir = 4 + }, +/turf/simulated/floor/wood{ + icon_state = "wood-broken3"; + tag = "icon-wood-broken3" + }, +/area/maintenance/backstage) "agX" = ( /obj/structure/cable{ icon_state = "1-2" @@ -1021,7 +1005,9 @@ dir = 1; pixel_y = -24 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "ahH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -1048,11 +1034,12 @@ }, /area/medical/research/nhallway) "ahS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whitegreen" @@ -1242,6 +1229,10 @@ name = "east station intercom (General)"; pixel_x = 28 }, +/obj/machinery/camera{ + c_tag = "Central Ring Hallway West 1"; + dir = 8 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutral" @@ -1293,7 +1284,7 @@ scrub_Toxins = 1 }, /turf/simulated/floor/plasteel{ - dir = 1 + icon_state = "red" }, /area/security/lobby) "ajJ" = ( @@ -1312,11 +1303,11 @@ /turf/simulated/floor/plating, /area/maintenance/fpmaint) "ajO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "darkredfull" }, /area/turret_protected/ai) "ajQ" = ( @@ -1362,6 +1353,22 @@ "ake" = ( /turf/simulated/floor/engine/insulated/vacuum, /area/atmos) +"akw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/light_switch{ + pixel_x = -24; + pixel_y = -24 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/interrogation) "akC" = ( /obj/structure/closet/crate/freezer, /obj/item/reagent_containers/food/snacks/meat, @@ -1497,6 +1504,7 @@ icon_state = "1-4" }, /turf/simulated/floor/plasteel{ + dir = 10; icon_state = "darkred" }, /area/turret_protected/ai) @@ -1552,33 +1560,6 @@ icon_state = "darkblue" }, /area/medical/morgue) -"alz" = ( -/obj/structure/table/wood, -/obj/item/folder/blue, -/obj/item/folder/blue{ - pixel_y = 2; - pixel_x = 2 - }, -/obj/item/clothing/mask/cigarette/cigar/havana{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/mask/cigarette/cigar/havana, -/obj/item/flashlight/lamp/green{ - pixel_y = 13; - pixel_x = -3 - }, -/obj/item/radio/intercom{ - pixel_x = -28 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/carpet, -/area/crew_quarters/heads/hop) "alI" = ( /obj/machinery/door_control{ id = "hangar"; @@ -1642,6 +1623,7 @@ /area/quartermaster/storage) "ama" = ( /obj/effect/decal/cleanable/dirt, +/obj/item/folder, /turf/simulated/floor/plasteel, /area/maintenance/xenozoo) "amf" = ( @@ -1806,6 +1788,13 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"ano" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/primary/central/second/east) "anp" = ( /obj/structure/cable{ d1 = 4; @@ -1933,31 +1922,72 @@ icon_state = "showroomfloor" }, /area/maintenance/banya) -"anR" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, -/obj/item/tank/internals/emergency_oxygen/engi/empty, -/obj/item/tank/internals/emergency_oxygen/engi/empty, -/obj/structure/window/reinforced{ - dir = 1 +"anQ" = ( +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + id_tag = "aisole_airlock"; + pixel_y = 28; + tag_airpump = "aisole_pump"; + tag_chamber_sensor = "aisole_sensor"; + tag_exterior_door = "aisole_outer"; + tag_interior_door = "aisole_inner" + }, +/obj/machinery/airlock_sensor{ + id_tag = "aisole_sensor"; + pixel_y = 35 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1379; + id_tag = "aisole_pump" }, /obj/structure/cable{ - icon_state = "0-8" + icon_state = "4-8" }, -/obj/machinery/power/apc{ - cell_type = 5000; - dir = 4; - name = "east bump"; - pixel_x = 26 +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/maintenance/starboardaux) +"anR" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "dark" }, /area/security/medbay) +"anU" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1379; + id_tag = "station_ai_pump" + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + id_tag = "station_ai_airlock"; + pixel_x = 57; + req_access = list(10,13); + tag_airpump = "station_ai_pump"; + tag_chamber_sensor = "station_ai_sensor"; + tag_exterior_door = "station_ai_outer"; + tag_interior_door = "station_ai_inner" + }, +/obj/machinery/airlock_sensor{ + id_tag = "station_ai_sensor"; + pixel_x = 57; + pixel_y = 7 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/engineering/aienter) "aob" = ( /obj/machinery/gateway/centerstation, /obj/structure/cable{ @@ -1973,10 +2003,17 @@ /turf/simulated/floor/grass, /area/hydroponics) "aok" = ( -/obj/structure/closet/l3closet/virology, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/turf/simulated/floor/plating, -/area/medical/virology/lab) +/obj/structure/table/reinforced, +/obj/item/storage/ashtray/glass{ + pixel_x = 6 + }, +/obj/item/storage/fancy/cigarettes/cigpack_robust, +/obj/item/lighter, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "red" + }, +/area/security/interrogation) "aop" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2042,6 +2079,26 @@ "aoA" = ( /turf/simulated/floor/plating, /area/maintenance/fsmaint) +"aoB" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "RoboDesk"; + name = "Robotics Privacy Shutter" + }, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Biohazard"; + name = "Quarantine Lockdown"; + opacity = 0 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/assembly/robotics) "aoK" = ( /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/plasteel{ @@ -2062,7 +2119,9 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "aoU" = ( /obj/item/twohanded/required/kirbyplants, @@ -2156,6 +2215,17 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/toilet3) +"aqb" = ( +/obj/structure/table/wood/fancy/black, +/obj/item/candle{ + pixel_x = 2 + }, +/obj/item/toy/figure/wizard{ + pixel_x = 16; + pixel_y = 6 + }, +/turf/simulated/floor/carpet/green, +/area/library/game_zone) "aqr" = ( /obj/structure/cable{ icon_state = "1-2" @@ -2243,6 +2313,18 @@ icon_state = "neutralfull" }, /area/hallway/secondary/entry/lounge) +"aqZ" = ( +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno5"; + name = "Creature Cell #5" + }, +/obj/effect/spawner/window/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) "ara" = ( /obj/item/reagent_containers/syringe/antiviral, /obj/item/reagent_containers/syringe/charcoal, @@ -2290,7 +2372,9 @@ /turf/simulated/floor/shuttle/plating, /area/shuttle/arrival/station) "ari" = ( -/obj/machinery/door/airlock/external, +/obj/machinery/door/airlock/external{ + use_power = 0 + }, /turf/simulated/floor/plating, /area/maintenance/casino) "arn" = ( @@ -2340,26 +2424,23 @@ "arE" = ( /turf/simulated/openspace, /area/hallway/primary/central/sw) +"arR" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xenosecure"; + name = "Secure Creature Cell" + }, +/obj/effect/spawner/window/reinforced/plasma, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) "arU" = ( /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/plasteel/dark, /area/engineering/controlroom) -"arV" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 8 - }, -/obj/effect/turf_decal/number/number_2{ - dir = 1; - pixel_y = -10; - pixel_x = 6 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "neutral" - }, -/area/hallway/secondary/entry/lounge) "arW" = ( /obj/docking_port/stationary{ dir = 4; @@ -2407,6 +2488,15 @@ /obj/effect/spawner/random_spawners/cobweb_left_rare, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"asl" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/toxins/storage) "aso" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -2579,7 +2669,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "atT" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/official/nanotrasen_logo{ @@ -2638,6 +2728,29 @@ icon_state = "red" }, /area/security/processing) +"auF" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "Kitchen Dinner Windows"; + name = "Kitchen Shutters" + }, +/obj/machinery/door/window/westright{ + dir = 2; + name = "Kitchen"; + req_access = list(28) + }, +/obj/item/desk_bell{ + anchored = 1; + pixel_x = 7; + pixel_y = 7 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/crew_quarters/kitchen) "auP" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -2782,7 +2895,7 @@ dir = 6; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "avP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -2835,17 +2948,6 @@ /obj/machinery/atmospherics/meter, /turf/simulated/floor/plating/airless, /area/medical/virology/lab) -"avV" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "SKPP"; - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/bridge/checkpoint/south) "awf" = ( /obj/structure/bed, /obj/item/bedsheet/cmo, @@ -2861,6 +2963,24 @@ }, /turf/simulated/floor/carpet/blue, /area/medical/cmo) +"awh" = ( +/mob/living/simple_animal/bot/secbot/beepsky{ + desc = "It's Officer Rightsky! Powered by a potato and a shot of whiskey."; + name = "Officer Rightsky" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/quartermaster/lobby) "awj" = ( /obj/machinery/light{ dir = 1 @@ -2960,6 +3080,9 @@ /obj/item/radio/intercom{ pixel_x = 28 }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, /turf/simulated/floor/plasteel, /area/atmos) "axC" = ( @@ -3152,19 +3275,6 @@ }, /turf/simulated/floor/engine/insulated, /area/maintenance/apmaint) -"aze" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/newscaster{ - pixel_y = 32; - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "blue" - }, -/area/bridge/checkpoint/south) "azi" = ( /obj/machinery/atmospherics/trinary/mixer{ dir = 1 @@ -3187,6 +3297,21 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"azp" = ( +/obj/structure/table/glass, +/obj/item/clipboard, +/obj/item/toy/figure/virologist, +/obj/item/reagent_containers/food/drinks/coffee{ + pixel_x = 10; + pixel_y = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "whitegreenfull" + }, +/area/medical/virology/lab) "azs" = ( /obj/machinery/door/airlock/maintenance, /obj/structure/barricade/wooden, @@ -3202,9 +3327,6 @@ pixel_y = -22; req_access = list(39) }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/cable{ icon_state = "1-4" }, @@ -3213,6 +3335,9 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whitegreen" @@ -3248,13 +3373,27 @@ tag = "icon-whitehall (WEST)" }, /area/maintenance/medroom) +"azI" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters{ + dir = 2; + id_tag = "kitchen_abandoned"; + name = "Abandoned Kitchen Shutters" + }, +/obj/item/reagent_containers/food/condiment/peppermill, +/obj/machinery/door/window{ + dir = 1; + name = "Kitchen"; + req_access = list(28) + }, +/turf/simulated/floor/plasteel{ + icon_state = "stage_bleft" + }, +/area/maintenance/cafeteria) "azJ" = ( /obj/structure/table, /obj/item/aicard, -/obj/item/folder/blue{ - pixel_x = 2; - pixel_y = 2 - }, /obj/machinery/status_display{ pixel_x = -32 }, @@ -3470,18 +3609,6 @@ }, /turf/simulated/floor/wood, /area/maintenance/casino) -"aBm" = ( -/obj/effect/decal/cleanable/dust, -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 1 - }, -/obj/machinery/light, -/turf/simulated/floor/wood, -/area/maintenance/casino) "aBn" = ( /obj/structure/closet/secure_closet{ anchored = 1; @@ -3507,6 +3634,24 @@ }, /turf/simulated/floor/plasteel, /area/quartermaster/miningdock) +"aBw" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/table/reinforced, +/obj/item/kitchen/knife/combat/survival, +/obj/item/kitchen/knife/combat/survival{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/item/kitchen/knife/combat/survival{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/engineering/mechanic_workshop/expedition) "aBA" = ( /turf/simulated/wall, /area/medical/morgue) @@ -3534,6 +3679,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "dark" @@ -3547,8 +3695,8 @@ /obj/effect/turf_decal/caution/red{ dir = 4 }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" +/turf/simulated/floor/engine{ + slowdown = -0.3 }, /area/hallway/primary/central) "aBV" = ( @@ -3735,7 +3883,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "aCQ" = ( /obj/machinery/door/airlock/security/glass{ id = "Interrogation"; @@ -3938,6 +4086,17 @@ /obj/structure/table, /turf/simulated/floor/plating, /area/security/permabrig) +"aEn" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/sign/med{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "blue" + }, +/area/hallway/primary/fore) "aEo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -3956,8 +4115,6 @@ dir = 8; pixel_x = 24 }, -/obj/structure/table/wood, -/obj/item/stack/wrapping_paper, /obj/machinery/light/small{ dir = 4 }, @@ -3965,26 +4122,15 @@ name = "north newscaster"; pixel_y = 34 }, +/obj/machinery/vending/artvend, /turf/simulated/floor/wood, /area/civilian/pet_store) "aED" = ( /obj/effect/decal/warning_stripes/west, /turf/simulated/floor/plasteel, /area/engineering/mechanic_workshop/expedition) -"aEK" = ( -/obj/structure/bed, -/obj/item/bedsheet/captain, -/obj/item/storage/secure/safe{ - pixel_x = 32 - }, -/obj/item/radio/intercom{ - pixel_y = -26; - pixel_x = 26 - }, -/turf/simulated/floor/carpet/royalblue, -/area/crew_quarters/captain/bedroom) "aEL" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /obj/structure/sign/poster/contraband/lamarr{ @@ -4013,6 +4159,12 @@ icon_state = "whiteblue" }, /area/medical/biostorage) +"aEX" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "blue" + }, +/area/hallway/primary/fore) "aEZ" = ( /obj/item/radio/intercom{ pixel_x = 32; @@ -4079,21 +4231,6 @@ dir = 1 }, /area/security/brig) -"aFr" = ( -/obj/effect/spawner/window/reinforced, -/obj/machinery/door/poddoor/shutters{ - density = 0; - icon_state = "open"; - id_tag = "brig_detprivacy"; - name = "Detective Privacy Shutters"; - opacity = 0; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/simulated/floor/plating, -/area/security/detectives_office) "aFt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -4115,7 +4252,6 @@ }, /obj/machinery/power/apc{ dir = 4; - name = "east bump"; pixel_x = 26 }, /turf/simulated/floor/plasteel{ @@ -4233,34 +4369,12 @@ }, /area/hallway/primary/central/second/east) "aGk" = ( -/obj/structure/closet/wardrobe/pink, +/obj/machinery/vending/artvend, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutralcorner" }, /area/crew_quarters/locker) -"aGm" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/table/wood/fancy/red, -/obj/item/lighter/zippo/hos{ - pixel_y = 1; - pixel_x = -6 - }, -/obj/item/reagent_containers/food/drinks/mug/hos{ - pixel_y = 1; - pixel_x = 9 - }, -/obj/item/paper/safe_code{ - owner = "hos" - }, -/obj/item/spacepod_equipment/key{ - id = 100000; - pixel_y = 10 - }, -/turf/simulated/floor/wood, -/area/security/hos) "aGn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -4313,8 +4427,8 @@ dir = 8; pixel_x = -28 }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 6 }, /turf/simulated/floor/plasteel, /area/quartermaster/sorting) @@ -4328,17 +4442,18 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-8" }, /turf/simulated/floor/plasteel{ - dir = 1 + dir = 1; + icon_state = "red" }, /area/security/reception) "aGQ" = ( @@ -4353,6 +4468,28 @@ }, /turf/simulated/floor/grass, /area/maintenance/fore) +"aGR" = ( +/obj/structure/table/wood, +/obj/machinery/door_control{ + id = "conferenceroombolts"; + name = "Conference Room Bolts Control"; + normaldoorcontrol = 1; + pixel_x = -4; + req_access = list(19); + specialfunctions = 4 + }, +/obj/machinery/button/windowtint{ + id = "conferenceroomwindows"; + pixel_x = 7 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/carpet/royalblack, +/area/bridge/meeting_room) "aHa" = ( /obj/structure/toilet/captain_toilet{ pixel_y = 6 @@ -4439,6 +4576,33 @@ icon_state = "stage_bleft" }, /area/maintenance/cafeteria) +"aHt" = ( +/obj/item/reagent_containers/food/snacks/meatball{ + icon = 'icons/obj/food/candy.dmi'; + icon_state = "candy"; + name = "MRE with meat" + }, +/obj/item/reagent_containers/food/snacks/meatball{ + icon = 'icons/obj/food/candy.dmi'; + icon_state = "candy"; + name = "MRE with meat" + }, +/obj/item/reagent_containers/food/snacks/candy/mre, +/obj/item/reagent_containers/food/snacks/candy/mre, +/obj/structure/closet/secure_closet/medical_wall{ + name = "Exile item closet"; + pixel_x = -32; + req_access = list(3) + }, +/obj/machinery/camera{ + c_tag = "Gateway Exile"; + dir = 5 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/gateway) "aHx" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -4472,22 +4636,24 @@ }, /turf/simulated/floor/wood, /area/library/game_zone) -"aHT" = ( -/obj/structure/table/wood, -/obj/item/clothing/mask/cigarette/cigar/cohiba{ - pixel_x = 3; - pixel_y = -3 +"aHL" = ( +/obj/machinery/light/small, +/obj/effect/decal/warning_stripes/southwest, +/obj/machinery/camera{ + c_tag = "Engineering SM Access"; + dir = 10; + network = list("Engineering","SS13"); + pixel_x = -2; + pixel_y = -1 }, -/obj/item/clothing/mask/cigarette/cigar/cohiba{ - pixel_x = -4; - pixel_y = 9 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 }, -/obj/item/clothing/mask/cigarette/cigar/cohiba{ - pixel_y = 4; - pixel_x = 2 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 }, -/turf/simulated/floor/carpet/royalblack, -/area/bridge/meeting_room) +/turf/simulated/floor/plasteel/dark, +/area/engineering/controlroom) "aHV" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/red/line, @@ -4520,7 +4686,7 @@ icon_state = "4-8" }, /turf/simulated/floor/plasteel, -/area/engineering/engine) +/area/engineering/break_room) "aIf" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 @@ -4570,7 +4736,7 @@ /turf/simulated/floor/plating, /area/magistrateoffice) "aIt" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -4595,6 +4761,53 @@ icon_state = "white" }, /area/medical/research) +"aIz" = ( +/obj/machinery/computer/monitor, +/obj/structure/cable, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Chief Engineer's Desk"; + departmentType = 7; + name = "Chief Engineer Requests Console"; + pixel_y = -32 + }, +/obj/machinery/door_control{ + id = "transitlock"; + name = "Transit Ai Sattelite Lockdown Control"; + pixel_x = -26; + pixel_y = -26; + req_access = list(11) + }, +/obj/machinery/door_control{ + id = "engstorage"; + name = "Engineering Secure Storage Control"; + pixel_x = -38; + pixel_y = -26; + req_access = list(11) + }, +/obj/machinery/door_control{ + id = "ceprivacy1"; + name = "Privacy Shutters"; + pixel_x = 38; + pixel_y = -26 + }, +/obj/machinery/button/windowtint{ + dir = 1; + id = "ceprivacytint"; + pixel_x = 33; + pixel_y = -35 + }, +/obj/machinery/door_control{ + id = "Eng_lockdown"; + name = "Engineering Lockdown"; + pixel_x = 26; + pixel_y = -26; + req_access = list(56) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/chief) "aID" = ( /obj/structure/cable{ icon_state = "1-2" @@ -4641,16 +4854,6 @@ tag = "icon-whitebluecorner" }, /area/medical/medbay) -"aJe" = ( -/obj/machinery/kitchen_machine/microwave{ - pixel_x = -1; - pixel_y = 7 - }, -/obj/structure/table/reinforced, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/crew_quarters/kitchen) "aJg" = ( /obj/structure/chair/sofa/pew/right{ dir = 4 @@ -4700,13 +4903,7 @@ dir = 8; do_not_delete_me = 1 }, -/obj/structure/chair/stool/bar{ - icon = 'icons/obj/lighting.dmi'; - icon_state = "lantern-on"; - light_color = "#FFBF00"; - light_range = 6; - name = "lantern" - }, +/obj/item/flashlight/lantern, /turf/simulated/floor/carpet/red, /area/chapel/main) "aJv" = ( @@ -4719,21 +4916,6 @@ /obj/effect/spawner/random_spawners/oil_5, /turf/simulated/floor/plating, /area/maintenance/maintcentral) -"aJw" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/machinery/camera{ - c_tag = "HoS Office South"; - network = list("SS13","Security"); - dir = 10 - }, -/obj/item/radio/intercom{ - pixel_y = -28 - }, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkred" - }, -/area/security/hos) "aJI" = ( /obj/structure/cable{ icon_state = "4-8" @@ -4744,12 +4926,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/effect/landmark/start/botanist, /turf/simulated/floor/plasteel{ - dir = 0; + dir = 6; icon_state = "green" }, /area/hydroponics) @@ -4804,7 +4983,6 @@ }, /area/crew_quarters/fitness) "aJZ" = ( -/obj/effect/spawner/random_spawners/crate_spawner, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ dir = 1 @@ -4919,7 +5097,6 @@ "aKJ" = ( /obj/machinery/hologram/holopad, /obj/effect/turf_decal/box, -/obj/effect/landmark/start/shaft_miner, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -4928,48 +5105,10 @@ }, /turf/simulated/floor/plasteel, /area/quartermaster/miningstorage) -"aKK" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/flasher{ - desc = "A floor-mounted flashbulb device."; - id = "permacell2"; - layer = 5; - range = 3; - pixel_x = -24 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/turf/simulated/floor/plating, -/area/security/permabrig) "aKO" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/maintenance/apmaint) -"aKQ" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -25 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "rampbottom"; - tag = "icon-stage_stairs"; - dir = 4 - }, -/area/crew_quarters/sleep) "aKR" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor{ @@ -5097,6 +5236,42 @@ icon_state = "bcarpet05" }, /area/maintenance/medroom) +"aLV" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/machinery/door/window{ + color = "red"; + dir = 1; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/machinery/door/window{ + color = "red"; + dir = 2; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/gun/energy/dominator{ + pixel_y = -3 + }, +/obj/item/gun/energy/dominator{ + pixel_x = 3 + }, +/obj/item/gun/energy/dominator{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/structure/window/reinforced{ + color = "red"; + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark" + }, +/area/security/securearmory) "aLW" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dust, @@ -5266,15 +5441,6 @@ /obj/structure/flora/junglebush/b, /turf/simulated/floor/grass, /area/crew_quarters/fitness) -"aNx" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark" - }, -/area/security/securearmory) "aND" = ( /obj/structure/cable{ icon_state = "4-8" @@ -5372,6 +5538,18 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/secpost) +"aOl" = ( +/obj/machinery/atmospherics/binary/pump/on{ + desc = "Отправляет дыхательную смесь из трубы распространяться по станции через вентиляции"; + dir = 1; + name = "Дыхательную смесь на станцию"; + target_pressure = 303.325 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) "aOn" = ( /obj/effect/spawner/window/reinforced/polarized{ id = "conferenceroomwindows" @@ -5436,6 +5614,30 @@ icon_state = "showroomfloor" }, /area/security/brigstaff) +"aOR" = ( +/obj/structure/table/wood/fancy/royalblack, +/obj/item/clothing/under/retro/engineering, +/obj/item/clothing/under/retro/medical{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/clothing/under/retro/science{ + pixel_x = 6 + }, +/obj/item/clothing/under/retro/security{ + pixel_x = -7; + pixel_y = 4 + }, +/obj/item/clothing/under/solgov/civ, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/crew_quarters/theatre) "aOS" = ( /obj/structure/safe/floor, /obj/item/clothing/accessory/holster, @@ -5453,16 +5655,6 @@ icon_state = "floorgrime" }, /area/storage/office) -"aPa" = ( -/obj/machinery/alarm{ - dir = 4; - pixel_x = -24 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay2) "aPf" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -5470,6 +5662,24 @@ icon_state = "whitehall" }, /area/maintenance/fsmaint3) +"aPg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door_control{ + id = "FRange"; + name = "Firing Range Privacy Shutters Control"; + pixel_y = 26; + req_access = list(63) + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/range) "aPh" = ( /obj/structure/chair/comfy/brown, /obj/effect/landmark/start/librarian, @@ -5642,20 +5852,35 @@ /obj/item/airalarm_electronics, /turf/simulated/floor/plating, /area/maintenance/medroom) -"aQe" = ( -/obj/docking_port/stationary{ - dir = 2; - dwidth = 3; - height = 5; - id = "mining_home"; - name = "mining shuttle bay"; - width = 7; - turf_type = /turf/simulated/floor/plating +"aQi" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/ammo_box/magazine/sp91rc{ + pixel_x = 8 }, -/turf/space{ - icon_state = "black" +/obj/item/ammo_box/magazine/sp91rc{ + pixel_x = 4 }, -/area/quartermaster/miningdock) +/obj/item/ammo_box/magazine/sp91rc, +/obj/item/ammo_box/magazine/sp91rc{ + pixel_x = -4 + }, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/machinery/door/window{ + color = "red"; + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "aQk" = ( /obj/effect/decal/cleanable/blood, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -5764,7 +5989,8 @@ }, /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "aQG" = ( @@ -5865,21 +6091,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/fsmaint3) -"aRp" = ( -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 1 - }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "Brig_lockdown"; - name = "Cargo Lockdown"; - opacity = 0 - }, -/obj/structure/plasticflaps/mining, -/turf/simulated/floor/plating, -/area/quartermaster/delivery) "aRu" = ( /obj/structure/flora/ausbushes/lavendergrass, /obj/item/radio/intercom{ @@ -5955,16 +6166,17 @@ /obj/structure/lattice/catwalk, /turf/space, /area/solar/auxport) -"aRT" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 8 +"aRS" = ( +/obj/structure/cable{ + icon_state = "0-8" }, -/turf/simulated/floor/wood, -/area/library) +/obj/machinery/camera{ + c_tag = "Minisat AI Core Centre"; + dir = 10; + network = list("Minisat","SS13") + }, +/turf/simulated/floor/greengrid, +/area/turret_protected/ai) "aRV" = ( /obj/structure/cable{ icon_state = "1-2" @@ -6112,6 +6324,15 @@ icon_state = "neutralcorner" }, /area/maintenance/apmaint) +"aSQ" = ( +/obj/structure/lattice, +/obj/machinery/camera{ + c_tag = "AI Satellite Exterior 12"; + dir = 8; + network = list("SS13","MiniSat") + }, +/turf/space/openspace, +/area/maintenance/ai) "aSU" = ( /obj/structure/table/reinforced, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -6157,7 +6378,7 @@ }, /area/crew_quarters/fitness) "aTa" = ( -/obj/item/twohanded/required/kirbyplants, +/obj/machinery/station_map/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whiteblue" @@ -6209,17 +6430,6 @@ }, /turf/simulated/floor/plating, /area/quartermaster/miningstorage) -"aTF" = ( -/obj/machinery/alarm{ - dir = 8; - pixel_x = 24 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whitepurple"; - tag = "icon-whitepurple (EAST)" - }, -/area/medical/research/nhallway) "aTK" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/event/revenantspawn, @@ -6228,6 +6438,24 @@ icon_state = "freezerfloor" }, /area/maintenance/cafeteria) +"aTO" = ( +/obj/structure/table, +/obj/machinery/microscope{ + pixel_y = 6 + }, +/obj/machinery/camera{ + c_tag = "Detective's Lab"; + dir = 1; + network = list("SS13","Security") + }, +/obj/item/reagent_containers/spray/cleaner/brig, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/detectives_office) "aTR" = ( /obj/structure/sign/redcross{ desc = "The Star of Life, a symbol of Medical Aid."; @@ -6265,6 +6493,15 @@ }, /turf/simulated/floor/plating, /area/maintenance/fsmaint) +"aUa" = ( +/obj/effect/decal/warning_stripes/northeastcorner, +/obj/machinery/smartfridge/secure/chemistry/virology/preloaded, +/obj/machinery/newscaster{ + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel, +/area/medical/virology/lab) "aUk" = ( /obj/structure/cable{ icon_state = "4-8" @@ -6463,6 +6700,27 @@ icon_state = "vault" }, /area/engineering/mechanic_workshop) +"aVr" = ( +/obj/machinery/disposal/deliveryChute, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/window/eastleft{ + base_state = "right"; + dir = 2; + icon_state = "right"; + layer = 3; + req_access = list(50) + }, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "aVt" = ( /obj/structure/cable{ icon_state = "1-2" @@ -6605,21 +6863,12 @@ /turf/simulated/floor/plating, /area/maintenance/asmaint3) "aWH" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/vending/cart{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "brown" +/obj/machinery/status_display/supply_display{ + pixel_y = 32 }, -/area/quartermaster/office) +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) "aWJ" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -6734,6 +6983,10 @@ tag = "icon-shower (EAST)" }, /obj/effect/landmark/start/captain, +/obj/item/radio/intercom{ + dir = 1; + pixel_y = 25 + }, /turf/simulated/floor/plasteel/freezer, /area/crew_quarters/captain/bedroom) "aYf" = ( @@ -6865,12 +7118,39 @@ icon_state = "darkyellow" }, /area/engineering/mechanic_workshop/hangar) +"aZp" = ( +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_x = -26; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkbluealt" + }, +/area/hallway/primary/central/second/north) "aZq" = ( /obj/machinery/light/small{ dir = 4 }, /turf/simulated/floor/engine/air, /area/atmos) +"aZx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/mob/living/simple_animal/bot/secbot/beepsky{ + desc = "It's Officer Commandsky! Here to rule and command."; + name = "Officer Commandsky" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark" + }, +/area/hallway/primary/command/west) "aZA" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 1 @@ -6918,6 +7198,23 @@ }, /turf/simulated/floor/plating, /area/medical/chemistry) +"aZR" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; + dir = 4; + name = "Труба фильтрации" + }, +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/camera{ + c_tag = "Atmospherics South"; + dir = 1; + network = list("SS13","Engineering") + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) "aZX" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, @@ -7112,21 +7409,6 @@ /obj/structure/grille/broken, /turf/simulated/floor/plating, /area/maintenance/asmaint3) -"bbC" = ( -/obj/structure/dispenser, -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel/dark, -/area/engineering/controlroom) "bbI" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/drip{ @@ -7141,6 +7423,19 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/fore2) +"bbP" = ( +/obj/machinery/camera{ + c_tag = "Prisoners Lockers"; + dir = 4; + network = list("SS13","Security") + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/prisonlockers) "bbQ" = ( /obj/machinery/recharge_station, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -7201,6 +7496,20 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/starboard) +"bcj" = ( +/obj/structure/curtain/open/shower/security{ + alpha = 255; + anchored = 1; + name = "backstage"; + pixel_x = 32 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/carpet, +/area/library) "bck" = ( /obj/machinery/door/airlock/hatch{ name = "MiniSat Teleporter Room"; @@ -7255,16 +7564,6 @@ }, /turf/simulated/floor/plating, /area/quartermaster/miningdock) -"bcx" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 4 - }, -/turf/simulated/floor/plasteel, -/area/crew_quarters/toilet3) "bcC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -7277,6 +7576,18 @@ }, /turf/simulated/floor/glass/reinforced, /area/engineering/aienter) +"bcE" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 1; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/aisat/aihallway) "bcM" = ( /obj/effect/spawner/random_spawners/wall_rusted_70, /turf/simulated/wall, @@ -7585,6 +7896,20 @@ /obj/effect/decal/warning_stripes/southeastcorner, /turf/simulated/floor/plasteel/dark, /area/hallway/secondary/exit) +"bfo" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/radio/intercom{ + pixel_x = 26; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/seceqstorage) "bfp" = ( /obj/effect/decal/cleanable/dirt, /obj/item/reagent_containers/food/snacks/candy/gummyworm/green, @@ -7594,23 +7919,6 @@ icon_state = "barber" }, /area/maintenance/fpmaint) -"bfs" = ( -/obj/structure/railing{ - dir = 6 - }, -/obj/item/twohanded/required/kirbyplants{ - pixel_y = 7; - pixel_x = -4 - }, -/obj/effect/turf_decal/siding/wideplating/light{ - dir = 6 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkgreenfull" - }, -/area/hallway/secondary/exit) "bfv" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -28 @@ -7639,30 +7947,6 @@ /obj/effect/decal/warning_stripes/red/hollow, /turf/simulated/floor/wood, /area/crew_quarters/courtroom) -"bfF" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/hatch{ - name = "MiniSat Transit"; - req_access = list(19,32) - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/door/poddoor{ - id_tag = "transitlock"; - name = "Transit AI Sattelite Blast Doors"; - layer = 3 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/engineering/aienter) "bfN" = ( /obj/structure/window/reinforced{ dir = 4 @@ -7773,24 +8057,6 @@ icon_state = "cafeteria" }, /area/medical/research/restroom) -"bgA" = ( -/obj/structure/table/reinforced, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/item/paper/tcommskey, -/obj/item/paper/monitorkey{ - pixel_y = 2; - pixel_x = 3 - }, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/turf/simulated/floor/glass, -/area/crew_quarters/chief) "bgD" = ( /obj/structure/cable{ icon_state = "2-4" @@ -7911,6 +8177,16 @@ icon_state = "whitehall" }, /area/maintenance/fsmaint3) +"bhj" = ( +/obj/effect/decal/warning_stripes/west, +/obj/structure/sign/poster/official/random{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/podbay) "bhF" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/red/line, @@ -7936,6 +8212,8 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/item/radio/beacon, +/obj/machinery/hologram/holopad, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -7990,6 +8268,9 @@ "bhW" = ( /obj/structure/closet/bombcloset, /obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whitepurple" @@ -8203,6 +8484,11 @@ /obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood, /area/maintenance/fsmaint) +"bjD" = ( +/obj/effect/decal/cleanable/dust, +/obj/effect/decal/cleanable/spiderling_remains, +/turf/simulated/floor/wood, +/area/maintenance/library) "bjG" = ( /obj/structure/cable{ icon_state = "4-8" @@ -8272,6 +8558,21 @@ icon_state = "neutralfull" }, /area/hallway/secondary/entry/lounge) +"bjL" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/camera{ + c_tag = "HoS Office South"; + dir = 10; + network = list("SS13","Security") + }, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/security/hos) "bjQ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -8365,15 +8666,21 @@ /turf/simulated/floor/carpet/black, /area/chapel/main) "bkx" = ( -/obj/effect/decal/warning_stripes/northeast, -/obj/machinery/chem_master{ - pixel_x = -1 - }, /obj/structure/cable{ d1 = 4; d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/reagent_containers/dropper/precision, +/obj/item/reagent_containers/dropper/precision, +/obj/item/reagent_containers/dropper, +/obj/item/reagent_containers/dropper, +/obj/item/healthanalyzer/advanced, +/obj/item/healthanalyzer/advanced, /turf/simulated/floor/plasteel, /area/medical/virology/lab) "bky" = ( @@ -8533,6 +8840,12 @@ icon_state = "neutral" }, /area/hallway/primary/central/sw) +"bmb" = ( +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint3) "bmd" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/blood_20, @@ -8552,6 +8865,18 @@ tag = "icon-whiteblue (NORTH)" }, /area/medical/medrest) +"bmv" = ( +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno4"; + name = "Creature Cell #4" + }, +/obj/effect/spawner/window/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) "bmz" = ( /obj/machinery/computer/prisoner, /obj/machinery/status_display{ @@ -8595,6 +8920,22 @@ }, /turf/simulated/floor/plating, /area/maintenance/detectives_office) +"bmL" = ( +/obj/machinery/recharge_station, +/obj/machinery/door_control{ + desiredstate = 1; + id = "toilet4"; + name = "cyborg recharging cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel/freezer, +/area/crew_quarters/toilet2) "bmM" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -8606,11 +8947,11 @@ /turf/simulated/floor/plating, /area/security/permabrig) "bmP" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ +/obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, /turf/simulated/floor/plasteel{ - dir = 1 + icon_state = "redcorner" }, /area/security/prison/cell_block/A) "bmR" = ( @@ -8720,7 +9061,9 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "bnN" = ( /obj/effect/decal/cleanable/dirt, @@ -8817,6 +9160,17 @@ icon_state = "whitepurple" }, /area/medical/research/nhallway) +"boG" = ( +/obj/structure/chair/sofa/left{ + color = "#85130b"; + dir = 4 + }, +/obj/effect/turf_decal/siding/red{ + dir = 9 + }, +/obj/effect/landmark/start/civilian, +/turf/simulated/floor/carpet/black, +/area/crew_quarters/bar/atrium) "boI" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -8873,44 +9227,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/quartermaster/storage) -"boT" = ( -/obj/machinery/door/window{ - dir = 2; - req_access = list(73) - }, -/obj/structure/table/wood{ - color = "#996633" - }, -/obj/machinery/light_switch{ - pixel_x = 38; - pixel_y = 8 - }, -/obj/structure/disposalpipe/segment, -/obj/item/folder, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/item/folder/white{ - pixel_y = 2; - pixel_x = 2 - }, -/obj/item/folder/red{ - pixel_y = 4; - pixel_x = 4 - }, -/obj/item/folder/blue{ - pixel_y = 6; - pixel_x = 6 - }, -/obj/item/folder/yellow{ - pixel_y = 8; - pixel_x = 8 - }, -/obj/item/stamp/rep, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/carpet/royalblack, -/area/ntrep) "boU" = ( /obj/machinery/hologram/holopad, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -8919,21 +9235,6 @@ icon_state = "dark" }, /area/crew_quarters/fitness) -"boY" = ( -/obj/structure/table/reinforced, -/obj/item/flashlight, -/obj/item/flashlight{ - pixel_y = 9 - }, -/obj/structure/window/reinforced{ - dir = 4; - layer = 2.9 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 4 - }, -/area/toxins/lab) "boZ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/remains/mouse, @@ -8997,17 +9298,6 @@ icon_state = "neutralfull" }, /area/hallway/secondary/entry/lounge) -"bpt" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "packageExternal"; - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "brown" - }, -/area/quartermaster/delivery) "bpy" = ( /obj/machinery/door_timer/cell_5{ dir = 4; @@ -9024,7 +9314,7 @@ "bpz" = ( /obj/machinery/portable_atmospherics/canister/toxins, /obj/machinery/vending/wallmed{ - pixel_x = 26 + pixel_x = 25 }, /obj/effect/decal/warning_stripes/yellow/hollow, /obj/effect/decal/warning_stripes/south, @@ -9054,6 +9344,14 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/livingcomplex) +"bpK" = ( +/obj/structure/closet/secure_closet/medical3, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue"; + tag = "icon-whiteblue (WEST)" + }, +/area/medical/biostorage) "bpW" = ( /obj/machinery/light{ dir = 4 @@ -9155,13 +9453,14 @@ /turf/simulated/floor/wood, /area/maintenance/fsmaint) "bqo" = ( -/obj/effect/decal/warning_stripes/northwestcorner, -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb2, -/obj/item/toy/figure/scientist, /obj/machinery/light/small{ dir = 1 }, +/obj/structure/closet/l3closet/scientist, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/decal/warning_stripes/northwestcorner, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/xenozoo) "bqr" = ( @@ -9176,7 +9475,7 @@ dir = 9; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "bqA" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -9206,6 +9505,29 @@ icon_state = "white" }, /area/teleporter/abandoned) +"bqK" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/machinery/door/window{ + color = "red"; + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "bqL" = ( /obj/structure/chair/sofa/corp/right{ dir = 1 @@ -9353,6 +9675,22 @@ icon_state = "dark" }, /area/crew_quarters/sleep) +"bro" = ( +/obj/effect/turf_decal/caution{ + dir = 1 + }, +/obj/machinery/door_control{ + desc = "A remote control-switch to lock down the prison wing's blast doors"; + id = "Prison Gate"; + name = "PermaBrig Lockdown"; + pixel_x = 26; + pixel_y = -25; + req_access = list(2) + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners" + }, +/area/security/permahallway) "brr" = ( /obj/machinery/hologram/holopad, /obj/effect/decal/warning_stripes/blue/hollow, @@ -9362,7 +9700,6 @@ }, /area/security/securearmory) "brw" = ( -/obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ dir = 8; id_tag = "SecMedPrivInside" @@ -9373,6 +9710,7 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/security/medbay) "bry" = ( @@ -9464,7 +9802,8 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /obj/effect/decal/warning_stripes/east, /turf/simulated/floor/plasteel{ - icon_state = "neutralfull" + icon_state = "redfull"; + tag = "icon-redfull (NORTHWEST)" }, /area/atmos) "bso" = ( @@ -9514,6 +9853,17 @@ icon_state = "whitepurple" }, /area/toxins/lab) +"bsK" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/newscaster{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/security/permabrig) "bsR" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -9630,6 +9980,19 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"btC" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_x = 32; + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/bridge/checkpoint/south) "btJ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -9734,6 +10097,18 @@ /obj/effect/decal/warning_stripes/northeastcorner, /turf/simulated/floor/plasteel, /area/engineering/controlroom) +"bun" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/west, +/obj/item/weldingtool/hugetank{ + pixel_x = 6; + pixel_y = -3 + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/maintenance/secpost) "bup" = ( /obj/structure/table/glass, /obj/item/hand_labeler{ @@ -9756,23 +10131,7 @@ dir = 4; icon_state = "whitegreen" }, -/area/medical/virology/lab) -"buq" = ( -/obj/machinery/firealarm{ - dir = 8; - name = "west fire alarm"; - pixel_x = -24 - }, -/obj/machinery/camera{ - c_tag = "Medbay Genetics Office"; - network = list("Medical","SS13"); - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkpurple" - }, -/area/medical/genetics) +/area/medical/virology) "buw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -9943,22 +10302,48 @@ codes_txt = "patrol;next_patrol=C9"; location = "C8" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "bvn" = ( +/obj/item/radio/intercom{ + pixel_y = 23 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/hallway/primary/central/second/west) +"bvs" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + id = "tintmagistrateoffice"; + id_tag = "magistrateoffice"; + name = "Magistrate's Office"; + req_access = list(74); + security_level = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-4" }, -/turf/simulated/floor/plasteel{ - dir = 1 +/obj/structure/cable{ + icon_state = "2-4" }, -/area/security/prison/cell_block/A) +/turf/simulated/floor/carpet/black, +/area/magistrateoffice) "bvt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -10060,7 +10445,9 @@ /area/hallway/primary/central/second/north) "bvT" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "bvV" = ( /obj/docking_port/stationary{ @@ -10128,22 +10515,42 @@ }, /area/maintenance/fpmaint) "bwt" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ - dir = 4 +/obj/structure/cable/multiz{ + color = "#dd1010" }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/table/glass, +/obj/item/paper_bin, +/obj/item/pen/red, +/obj/item/reagent_containers/spray/cleaner/medical{ + pixel_x = 7; + pixel_y = 9 }, -/obj/structure/disposalpipe/segment{ - invisibility = 101 +/obj/item/reagent_containers/spray/cleaner/medical{ + pixel_x = -2; + pixel_y = 9 }, -/turf/simulated/floor/plating, +/obj/effect/decal/warning_stripes/north, +/turf/simulated/floor/plasteel, /area/medical/virology/lab) +"bwD" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "QMLoad2" + }, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Brig_lockdown"; + name = "Cargo Lockdown"; + opacity = 0 + }, +/obj/structure/plasticflaps/mining, +/turf/simulated/floor/plating, +/area/quartermaster/delivery) "bwE" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -10384,27 +10791,6 @@ }, /turf/simulated/floor/carpet, /area/library) -"byI" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/atmos/glass{ - name = "Supermatter Chamber"; - req_access = list(24); - security_level = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "Eng_lockdown"; - name = "Engineering Lockdown"; - opacity = 0 - }, -/turf/simulated/floor/plasteel/dark, -/area/engineering/controlroom) "byL" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 @@ -10423,26 +10809,6 @@ tag = "icon-stage_stairs" }, /area/gateway) -"byN" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "RoboDesk"; - name = "Robotics Privacy Shutter"; - dir = 8 - }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "Biohazard"; - name = "Quarantine Lockdown"; - opacity = 0 - }, -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2" - }, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/assembly/robotics) "byT" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet, @@ -10469,7 +10835,7 @@ }, /area/medical/cloning) "bzd" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /turf/simulated/floor/wood, @@ -10510,6 +10876,22 @@ icon_state = "darkbluealt" }, /area/crew_quarters/fitness) +"bzt" = ( +/obj/structure/table/wood/fancy/black, +/obj/item/mining_voucher{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/lighter/zippo/qm{ + pixel_x = 7; + pixel_y = 5 + }, +/obj/item/mining_voucher{ + pixel_x = -6; + pixel_y = 6 + }, +/turf/simulated/floor/wood, +/area/quartermaster/qm) "bzv" = ( /obj/structure/chair/sofa{ dir = 4 @@ -10670,30 +11052,29 @@ icon_state = "neutralfull" }, /area/engineering/gravitygenerator) -"bAQ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/cans/beer{ - pixel_y = 10; - pixel_x = 5 +"bAU" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/mechanical, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/obj/item/storage/ashtray, -/turf/simulated/floor/plating, -/area/maintenance/apmaint) +/area/turret_protected/ai) "bAV" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/machinery/light/small{ + dir = 8 }, -/turf/simulated/floor/plasteel{ - icon_state = "white" +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + dir = 8 }, -/area/medical/virology) +/obj/structure/sign/poster/contraband/random{ + pixel_x = -32 + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) "bAX" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -10773,6 +11154,21 @@ icon_state = "darkred" }, /area/security/evidence) +"bBs" = ( +/obj/effect/turf_decal/caution/stand_clear, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) "bBt" = ( /obj/structure/rack{ dir = 8; @@ -10990,7 +11386,7 @@ }, /area/security/range) "bCZ" = ( -/obj/item/twohanded/required/kirbyplants, +/obj/machinery/bookbinder, /turf/simulated/floor/wood, /area/library) "bDa" = ( @@ -11011,17 +11407,10 @@ }, /area/security/processing) "bDb" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 1 - }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "bDc" = ( /obj/structure/chair/stool, /obj/effect/decal/cleanable/dust, @@ -11102,6 +11491,28 @@ }, /turf/simulated/floor/engine, /area/toxins/explab) +"bDB" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -25 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/crew_quarters/sleep) "bDC" = ( /obj/structure/cable{ icon_state = "4-8" @@ -11123,21 +11534,6 @@ /obj/effect/decal/cleanable/shreds, /turf/simulated/floor/plating, /area/maintenance/fpmaint) -"bDG" = ( -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 1 - }, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8; - layer = 2.494 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "brown" - }, -/area/quartermaster/delivery) "bDJ" = ( /obj/machinery/power/solar{ name = "South-East Solar Panel" @@ -11149,16 +11545,6 @@ icon_state = "solarpanel" }, /area/solar/starboardaux) -"bDL" = ( -/obj/structure/sign/directions/science{ - dir = 1 - }, -/obj/structure/sign/directions/engineering{ - pixel_y = 8; - dir = 4 - }, -/turf/simulated/wall, -/area/hallway/primary/fore) "bDM" = ( /obj/effect/turf_decal/box/white/corners, /obj/machinery/atmospherics/pipe/simple/hidden/universal{ @@ -11430,6 +11816,10 @@ "bFK" = ( /obj/item/hand_labeler, /obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_x = 1; + pixel_y = 3 + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -11552,6 +11942,18 @@ /obj/effect/turf_decal/stripes/gold, /turf/simulated/floor/carpet/red, /area/lawoffice) +"bGq" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 1; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkbluealt" + }, +/area/hallway/primary/central/second/north) "bGv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -11638,16 +12040,7 @@ }, /area/toxins/misc_lab) "bGQ" = ( -/obj/machinery/firealarm{ - pixel_y = 24 - }, -/obj/effect/turf_decal/loading_area{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "brown" - }, +/turf/simulated/openspace, /area/quartermaster/miningstorage) "bGZ" = ( /obj/structure/table/reinforced, @@ -11775,9 +12168,8 @@ "bIi" = ( /obj/structure/table, /obj/item/storage/box/donkpockets, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -28 +/obj/structure/sign/poster/official/random{ + pixel_x = -32 }, /turf/simulated/floor/plasteel{ dir = 1 @@ -11809,8 +12201,11 @@ /turf/simulated/floor/plating, /area/maintenance/maintcentral) "bIu" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/fueltank, -/turf/simulated/floor/plating, +/turf/simulated/floor/plasteel{ + icon_state = "yellowcorner" + }, /area/maintenance/apmaint) "bIw" = ( /obj/machinery/door/airlock/public/glass{ @@ -11851,6 +12246,7 @@ /turf/simulated/floor/wood, /area/maintenance/library) "bIH" = ( +/obj/effect/decal/cleanable/spiderling_remains, /turf/simulated/floor/plasteel{ icon_state = "whitebluecorner"; tag = "icon-whitebluecorner" @@ -11878,22 +12274,13 @@ /turf/simulated/floor/plating, /area/maintenance/atmospherics) "bIO" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/table, -/obj/machinery/recharger{ - pixel_x = 1; - pixel_y = 3 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/structure/stairs{ + layer = 2 }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "brown" + icon_state = "neutralfull" }, -/area/quartermaster/office) +/area/hallway/primary/starboard) "bIT" = ( /obj/structure/barricade/wooden{ layer = 3.5 @@ -11956,9 +12343,6 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/maintenance/double, -/obj/structure/sign/poster/official/random{ - pixel_x = -32 - }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "dark" @@ -12085,6 +12469,22 @@ /obj/machinery/light/small, /turf/simulated/floor/plating, /area/maintenance/asmaint3) +"bKo" = ( +/obj/machinery/station_map/directional/south, +/turf/simulated/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/hallway/primary/starboard) +"bKr" = ( +/obj/machinery/newscaster{ + pixel_x = -32; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) "bKt" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ @@ -12092,6 +12492,22 @@ icon_state = "purple" }, /area/hallway/primary/central/ne) +"bKv" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/machinery/door_control{ + id = "HoSBPriv"; + name = "HoS Bedroom Privacy Shutters Control"; + pixel_x = 26; + pixel_y = -24; + req_access = list(58) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/security/hos) "bKx" = ( /obj/effect/spawner/random_spawners/rodent, /turf/simulated/floor/plating, @@ -12188,25 +12604,6 @@ /obj/structure/flora/grass/jungle/b, /turf/simulated/floor/grass, /area/crew_quarters/fitness) -"bLw" = ( -/obj/structure/table/wood, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/lipstick/random, -/obj/item/lipstick/random{ - pixel_y = -3; - pixel_x = -3 - }, -/obj/item/lipstick/random{ - pixel_y = 6 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "dark" - }, -/area/civilian/barber) "bLy" = ( /obj/structure/cable{ icon_state = "1-2" @@ -12298,16 +12695,6 @@ icon_state = "darkgrey" }, /area/engineering/mechanic_workshop/hangar) -"bMf" = ( -/obj/effect/decal/warning_stripes/west, -/obj/structure/sign/poster/official/random{ - pixel_y = 0; - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/podbay) "bMg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -12468,14 +12855,14 @@ dir = 8; icon_state = "vault" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "bNL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /obj/structure/disposalpipe/segment, @@ -12519,6 +12906,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -12559,6 +12949,21 @@ icon_state = "purple" }, /area/janitor) +"bOp" = ( +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/power/apc{ + cell_type = 25000; + pixel_y = -26; + shock_proof = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "yellow" + }, +/area/engineering/engine) "bOt" = ( /obj/structure/extinguisher_cabinet{ pixel_y = 30 @@ -12687,6 +13092,7 @@ /obj/effect/decal/cleanable/dirt, /obj/item/wrench, /obj/effect/spawner/random_spawners/rodent, +/obj/effect/decal/cleanable/spiderling_remains, /turf/simulated/floor/plasteel, /area/maintenance/medroom) "bPt" = ( @@ -12866,14 +13272,6 @@ }, /turf/simulated/floor/glass/reinforced, /area/engineering/mechanic_workshop/hangar) -"bQv" = ( -/obj/machinery/conveyor/inverted{ - id = "garbage"; - dir = 9 - }, -/obj/effect/decal/warning_stripes/northeastcorner, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "bQz" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/plating, @@ -12976,6 +13374,15 @@ }, /turf/simulated/floor/grass, /area/maintenance/fore2) +"bRc" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningstorage) "bRg" = ( /obj/structure/sign/poster/official/nanotrasen_logo{ pixel_y = 32 @@ -13060,11 +13467,6 @@ /turf/simulated/floor/plating, /area/hallway/secondary/exit) "bRE" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/structure/cable{ d1 = 1; d2 = 4; @@ -13136,15 +13538,9 @@ /turf/simulated/floor/plating, /area/maintenance/secpost) "bRX" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -5; - pixel_y = 30 - }, -/obj/structure/table, /obj/machinery/atmospherics/pipe/multiz, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival{ - pixel_x = 6 +/obj/structure/closet/crate{ + icon_state = "crateopen" }, /turf/simulated/floor/plasteel{ dir = 1; @@ -13182,30 +13578,17 @@ }, /area/hallway/primary/central/second/east) "bSF" = ( -/obj/structure/table/reinforced, -/obj/item/storage/ashtray/glass{ - pixel_x = 6 - }, -/obj/item/storage/fancy/cigarettes/cigpack_robust, -/obj/item/lighter, -/obj/item/radio/intercom{ - pixel_y = 24 - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "red" +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 }, -/area/security/interrogation) +/turf/simulated/floor/plating, +/area/maintenance/asmaint4) "bSJ" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, /obj/structure/cable{ icon_state = "1-8" }, -/obj/structure/cable{ - icon_state = "1-4" - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -13240,6 +13623,39 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"bTc" = ( +/obj/structure/table/wood/fancy/royalblack, +/obj/item/gavelblock{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/gavelhammer{ + pixel_y = 7 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/button/windowtint{ + id = "courtroom"; + pixel_x = -6 + }, +/obj/machinery/door_control{ + id = "courtroombolts"; + name = "Courtroom Bolts Control"; + normaldoorcontrol = 1; + pixel_x = -6; + pixel_y = 7; + req_access = list(74); + specialfunctions = 4 + }, +/turf/simulated/floor/carpet/royalblack, +/area/crew_quarters/courtroom) "bTd" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -13260,24 +13676,6 @@ icon_state = "whitehall" }, /area/maintenance/fsmaint3) -"bTg" = ( -/obj/machinery/light/small, -/obj/effect/decal/warning_stripes/southwest, -/obj/machinery/camera{ - c_tag = "Engineering SM Access"; - dir = 10; - network = list("Engineering","SS13"); - pixel_y = -1; - pixel_x = -2 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/turf/simulated/floor/plasteel/dark, -/area/engineering/controlroom) "bTl" = ( /obj/item/radio/intercom/locked/prison{ pixel_x = 28 @@ -13591,16 +13989,6 @@ icon_state = "brown" }, /area/quartermaster/office) -"bVx" = ( -/obj/effect/decal/novastation{ - icon_state = "NStation4" - }, -/mob/living/simple_animal/bot/secbot/beepsky{ - name = "Officer Uploadsky"; - desc = "It's Officer Uploadsky! Powered by a potato and a shot of whiskey." - }, -/turf/simulated/floor/engine, -/area/hallway/primary/central) "bVz" = ( /obj/structure/cable{ icon_state = "1-8" @@ -13712,6 +14100,15 @@ /obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/plating, /area/maintenance/trading) +"bVX" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 1; + name = "Труба смешивания" + }, +/turf/space, +/area/space) "bWc" = ( /obj/structure/cable{ icon_state = "4-8" @@ -13729,6 +14126,10 @@ icon_state = "neutralfull" }, /area/hallway/primary/central/north) +"bWi" = ( +/obj/structure/flora/ausbushes/leafybush, +/turf/simulated/floor/grass, +/area/maintenance/garden) "bWj" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -13793,48 +14194,6 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/hallway/primary/central/se) -"bWP" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/table/wood, -/obj/item/folder/red{ - pixel_x = -7 - }, -/obj/item/folder/red{ - pixel_x = -7; - pixel_y = 3 - }, -/obj/item/folder/white{ - pixel_x = -4 - }, -/obj/item/folder/white{ - pixel_y = 3; - pixel_x = -4 - }, -/obj/item/folder/blue, -/obj/item/folder/blue{ - pixel_y = 3 - }, -/obj/item/folder{ - pixel_x = 3 - }, -/obj/item/folder{ - pixel_y = 3; - pixel_x = 3 - }, -/obj/item/folder/yellow{ - pixel_x = 6 - }, -/obj/item/folder/yellow{ - pixel_x = 6; - pixel_y = 3 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/carpet, -/area/crew_quarters/heads) "bWW" = ( /obj/machinery/light/small{ dir = 1 @@ -14076,7 +14435,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "bYT" = ( /obj/machinery/camera{ @@ -14303,7 +14664,8 @@ /obj/machinery/door/firedoor, /obj/effect/turf_decal/caution/red, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "caz" = ( @@ -14313,7 +14675,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "caB" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -14410,8 +14772,13 @@ }, /area/toxins/misc_lab) "cbk" = ( -/obj/structure/cable{ - icon_state = "2-8" +/obj/machinery/photocopier, +/obj/machinery/light{ + dir = 1; + in_use = 1 + }, +/obj/machinery/alarm{ + pixel_y = 25 }, /turf/simulated/floor/plasteel{ dir = 1 @@ -14463,6 +14830,14 @@ icon_state = "tranquillite" }, /area/crew_quarters/kitchen) +"cbM" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/obj/effect/decal/warning_stripes/north, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "cbN" = ( /turf/simulated/floor/plasteel{ icon_state = "white" @@ -14560,6 +14935,26 @@ dir = 1 }, /area/gateway) +"ccq" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + id = "tintmagistrateoffice"; + id_tag = "magistrateoffice"; + name = "Magistrate's Office"; + req_access = list(74); + security_level = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/carpet/black, +/area/magistrateoffice) "cct" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -14593,17 +14988,6 @@ }, /turf/simulated/floor/carpet/green, /area/crew_quarters/mrchangs) -"ccz" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/newscaster{ - pixel_y = 0; - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "bar" - }, -/area/security/permabrig) "ccA" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -14675,7 +15059,7 @@ dir = 4; icon_state = "darkredcorners" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "cdq" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -14690,19 +15074,6 @@ icon_state = "dark" }, /area/maintenance/fsmaint3) -"cdu" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "yellowcorner" - }, -/area/hallway/primary/starboard/east) "cdy" = ( /obj/structure/sign/engineering{ pixel_x = 32 @@ -14783,7 +15154,7 @@ dir = 8; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "cej" = ( /obj/structure/grille/broken, /turf/simulated/floor/plating, @@ -14933,12 +15304,6 @@ }, /area/atmos) "cfF" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, @@ -14948,6 +15313,14 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whitegreen" @@ -15036,11 +15409,13 @@ }, /area/hallway/primary/command/east) "cgz" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 +/obj/structure/table, +/obj/item/folder/blue{ + pixel_x = 2; + pixel_y = 2 }, /turf/simulated/floor/plasteel{ - icon_state = "darkredfull" + icon_state = "dark" }, /area/turret_protected/ai) "cgA" = ( @@ -15107,6 +15482,25 @@ }, /turf/simulated/floor/plating, /area/maintenance/trading) +"chg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "blue" + }, +/area/hallway/primary/fore) "chj" = ( /obj/effect/decal/warning_stripes/northeastcorner, /obj/structure/disposalpipe/segment, @@ -15148,53 +15542,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/secpost) -"chK" = ( -/obj/machinery/computer/monitor, -/obj/structure/cable, -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Chief Engineer's Desk"; - departmentType = 7; - name = "Chief Engineer Requests Console"; - pixel_y = -32 - }, -/obj/machinery/door_control{ - id = "transitlock"; - name = "Transit Ai Sattelite Lockdown Control"; - pixel_x = -26; - pixel_y = -26; - req_access = list(11) - }, -/obj/machinery/door_control{ - id = "engstorage"; - name = "Engineering Secure Storage Control"; - pixel_x = -38; - pixel_y = -26; - req_access = list(11) - }, -/obj/machinery/door_control{ - id = "ceprivacy1"; - name = "Privacy Shutters"; - pixel_y = -26; - pixel_x = 38 - }, -/obj/machinery/button/windowtint{ - dir = 1; - id = "ceprivacytint"; - pixel_x = 33; - pixel_y = -35 - }, -/obj/machinery/door_control{ - id = "Eng_lockdown"; - name = "Engineering Lockdown"; - pixel_x = 26; - pixel_y = -26; - req_access = list(56) - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/crew_quarters/chief) "chP" = ( /obj/structure/cable{ icon_state = "1-2" @@ -15206,20 +15553,6 @@ icon_state = "white" }, /area/medical/medbay) -"chV" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/ai_status_display{ - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) "chZ" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -15241,7 +15574,9 @@ dir = 1; pixel_y = -24 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "cij" = ( /obj/structure/chair/office/dark{ @@ -15328,21 +15663,6 @@ icon_state = "darkblue" }, /area/crew_quarters/fitness) -"ciN" = ( -/obj/item/radio/intercom{ - pixel_y = 24 - }, -/obj/machinery/camera{ - c_tag = "Brig Warden's Office"; - dir = 6; - network = list("SS13","Security") - }, -/turf/simulated/floor/plasteel{ - icon_state = "rampbottom"; - tag = "icon-stage_stairs"; - dir = 4 - }, -/area/security/warden) "ciO" = ( /obj/structure/chair, /turf/simulated/floor/plasteel{ @@ -15437,7 +15757,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "cjO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -15610,32 +15930,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/detectives_office) -"clx" = ( -/obj/structure/curtain/open/shower/security{ - alpha = 255; - name = "backstage"; - pixel_x = 32; - anchored = 1 - }, -/obj/structure/disposalpipe/junction{ - dir = 2 - }, -/obj/item/radio/intercom{ - pixel_x = 28; - pixel_y = 28 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10; - initialize_directions = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor/carpet, -/area/library) "clB" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -15768,6 +16062,31 @@ icon_state = "arrival" }, /area/hallway/secondary/entry) +"cmf" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + frequency = 1379; + id_tag = "sw_maint2_pump" + }, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + id_tag = "sw_maint2_airlock"; + pixel_x = 25; + pixel_y = -2; + tag_airpump = "sw_maint2_pump"; + tag_chamber_sensor = "sw_maint2_sensor"; + tag_exterior_door = "sw_maint2_outer"; + tag_interior_door = "sw_maint2_inner" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/airlock_sensor{ + id_tag = "sw_maint2_sensor"; + pixel_x = 25; + pixel_y = 5 + }, +/turf/simulated/floor/plating, +/area/maintenance/starboard) "cmh" = ( /obj/machinery/requests_console{ announcementConsole = 1; @@ -15979,6 +16298,16 @@ }, /turf/simulated/floor/plating, /area/security/permabrig) +"cnG" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel/dark, +/area/maintenance/starboardaux) "cnV" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/tracks{ @@ -16049,14 +16378,36 @@ /turf/simulated/floor/plating, /area/maintenance/tourist) "con" = ( -/obj/vehicle/ridden/janicart{ - dir = 4 - }, +/obj/vehicle/ridden/janicart, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purple" }, /area/janitor) +"coC" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1379; + id_tag = "arrival_south_pump" + }, +/obj/machinery/airlock_sensor{ + id_tag = "arrival_south_sensor"; + pixel_y = 34 + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + id_tag = "arrival_south_airlock"; + pixel_y = 27; + tag_airpump = "arrival_south_pump"; + tag_chamber_sensor = "arrival_south_sensor"; + tag_exterior_door = "arrival_south_outer"; + tag_interior_door = "arrival_south_inner" + }, +/obj/structure/sign/vacuum{ + icon_state = "space1"; + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/hallway/secondary/exit) "coJ" = ( /obj/effect/decal/remains/mouse, /turf/simulated/floor/plating, @@ -16178,7 +16529,11 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) +"cpg" = ( +/obj/effect/spawner/random_spawners/crate_spawner, +/turf/simulated/floor/plating, +/area/maintenance/starboard) "cpj" = ( /turf/simulated/floor/plasteel{ icon_state = "darkgrey" @@ -16232,6 +16587,7 @@ dir = 4; tag = "icon-bulb1 (EAST)" }, +/obj/effect/decal/cleanable/spiderling_remains, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -16239,33 +16595,7 @@ "cpJ" = ( /obj/machinery/computer/security, /turf/simulated/floor/redgrid, -/area/tcommsat/chamber) -"cpN" = ( -/obj/structure/table/wood, -/obj/item/flashlight/flare{ - pixel_y = -2 - }, -/obj/item/flashlight/flare{ - pixel_y = 8; - pixel_x = 2 - }, -/obj/item/flashlight/flare{ - pixel_y = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 1 - }, -/area/maintenance/trading) +/area/tcommsat/server) "cpT" = ( /obj/structure/cable{ icon_state = "1-2" @@ -16433,15 +16763,20 @@ /turf/simulated/floor/plating, /area/maintenance/asmaint) "cqS" = ( -/obj/machinery/light/small{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 +/obj/item/radio/intercom{ + pixel_x = 28; + pixel_y = 26 }, -/turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/light{ + dir = 4 }, +/turf/simulated/floor/carpet/green, /area/medical/virology) "cqU" = ( /obj/effect/spawner/window/reinforced, @@ -16464,7 +16799,9 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "crc" = ( /obj/machinery/power/apc{ @@ -16612,34 +16949,41 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/hallway/primary/central/sw) -"csh" = ( -/obj/effect/spawner/window/reinforced, -/obj/machinery/door/poddoor/shutters{ - density = 0; - icon_state = "open"; - id_tag = "brig_detprivacy"; - name = "Detective Privacy Shutters"; - opacity = 0; - dir = 1 +"csl" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/carpet/green, +/area/maintenance/casino) +"csp" = ( +/obj/structure/table/reinforced, +/obj/item/folder/yellow, +/obj/item/pen, +/obj/machinery/door/window{ + name = "Atmospherics Desk"; + req_access = list(24) }, /obj/structure/cable{ - icon_state = "0-2" + icon_state = "1-4" }, /obj/structure/cable{ icon_state = "2-4" }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/machinery/door/window{ + dir = 8; + name = "Atmospherics Desk" }, -/turf/simulated/floor/plating, -/area/security/detectives_office) -"csl" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Eng_lockdown"; + name = "Engineering Lockdown"; + opacity = 0 }, -/obj/effect/decal/cleanable/dust, -/turf/simulated/floor/carpet/green, -/area/maintenance/casino) +/turf/simulated/floor/plasteel, +/area/atmos/control) "csw" = ( /obj/effect/landmark/observer_start, /obj/structure/disposalpipe/junction/yjunction{ @@ -16730,21 +17074,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/quartermaster/storage) -"ctn" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/zaza{ - pixel_x = 7; - pixel_y = 12 - }, -/obj/item/reagent_containers/food/drinks/mug/serv{ - pixel_y = 6; - pixel_x = -8 - }, -/turf/simulated/floor/carpet/royalblack, -/area/quartermaster/qm) "cto" = ( /obj/structure/cable{ icon_state = "4-8" @@ -16796,6 +17125,14 @@ }, /turf/simulated/floor/plating, /area/bridge/checkpoint/south) +"ctD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/spiderling_remains, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/maintenance/medroom) "ctE" = ( /obj/machinery/vending/cola, /obj/effect/decal/warning_stripes/red/hollow, @@ -16850,13 +17187,14 @@ pixel_x = -3; pixel_y = 5 }, +/obj/item/megaphone, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "red" }, /area/security/reception) "ctX" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 4 }, /obj/machinery/light{ @@ -16951,6 +17289,29 @@ }, /turf/simulated/floor/plasteel, /area/storage/eva) +"cuI" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/eastleft{ + dir = 1; + name = "Hydroponics Desk"; + req_access = list(35) + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "Hydroponics Shutters"; + name = "Hydroponics Shutters" + }, +/obj/item/desk_bell{ + anchored = 1; + pixel_x = 7; + pixel_y = 7 + }, +/obj/item/reagent_containers/glass/bucket, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hydroponics) "cuL" = ( /obj/effect/decal/warning_stripes/east, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -17036,37 +17397,26 @@ /obj/structure/lattice/catwalk, /turf/space, /area/solar/port) -"cuZ" = ( -/turf/simulated/wall/r_wall, -/area/aisat/aihallway) -"cvb" = ( -/obj/structure/table/reinforced, -/obj/item/seeds/lime, -/obj/item/seeds/watermelon, -/obj/item/seeds/grape, -/obj/item/reagent_containers/food/snacks/grown/wheat, -/obj/item/reagent_containers/food/snacks/grown/watermelon, -/obj/item/reagent_containers/food/snacks/grown/banana, -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/eastleft{ - name = "Hydroponics Desk"; - req_access = list(35); - dir = 1 - }, -/obj/item/reagent_containers/food/snacks/grown/apple, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "Hydroponics Shutters"; - name = "Hydroponics Shutters"; - dir = 1 +"cuX" = ( +/obj/effect/spawner/window/reinforced/polarized{ + id = "blueshieldofficewindows" }, -/obj/structure/window/reinforced{ - dir = 8 +/obj/machinery/door/poddoor/shutters{ + density = 0; + dir = 8; + icon_state = "open"; + id_tag = "blueshield"; + name = "Privacy Shutters"; + opacity = 0 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/structure/cable{ + icon_state = "0-2" }, -/area/hydroponics) +/turf/simulated/floor/plating, +/area/blueshield) +"cuZ" = ( +/turf/simulated/wall/r_wall, +/area/aisat/aihallway) "cvc" = ( /obj/machinery/camera{ c_tag = "Holodeck South"; @@ -17106,6 +17456,17 @@ icon_state = "floorgrime" }, /area/maintenance/fsmaint) +"cvl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/toolbox_tiles, +/turf/simulated/floor/plating, +/area/maintenance/tourist) "cvr" = ( /obj/structure/cable{ icon_state = "2-8" @@ -17138,7 +17499,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "cvY" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -17440,7 +17801,9 @@ dir = 4 }, /obj/structure/window/reinforced, -/obj/item/twohanded/required/kirbyplants, +/obj/item/twohanded/required/kirbyplants{ + layer = 3.1 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -17520,6 +17883,12 @@ /area/crew_quarters/locker) "czo" = ( /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 2 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkred" @@ -17703,14 +18072,9 @@ }, /area/maintenance/medroom) "cAA" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "west bump"; - pixel_x = -26 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, +/obj/structure/closet/secure_closet/security, +/obj/item/clothing/mask/balaclava, +/obj/effect/decal/warning_stripes/red/hollow, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "red" @@ -17985,6 +18349,14 @@ /obj/effect/spawner/random_spawners/rodent, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"cCT" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/station_map/directional/east, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/crew_quarters/serviceyard) "cDa" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -18026,17 +18398,6 @@ icon_state = "caution" }, /area/atmos/control) -"cDr" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - dir = 1 - }, -/area/security/prison/cell_block/A) "cDE" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -18053,17 +18414,13 @@ /turf/simulated/floor/plasteel, /area/maintenance/atmospherics) "cDR" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/computer/merch{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/structure/table, +/obj/machinery/recharger{ + pixel_x = 1; + pixel_y = 3 }, /turf/simulated/floor/plasteel{ - dir = 5; + dir = 8; icon_state = "brown" }, /area/quartermaster/office) @@ -18409,25 +18766,11 @@ }, /area/chapel/office) "cGc" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/effect/spawner/window/reinforced, -/obj/structure/curtain/open/shower/security{ - alpha = 255; - icon_state = "closed"; - name = "backstage"; - opacity = 1; - anchored = 1 +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "redcorner" }, -/turf/simulated/floor/plating, -/area/security/medbay) +/area/hallway/primary/central/second/west) "cGm" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -18516,6 +18859,24 @@ icon_state = "neutralfull" }, /area/atmos/control) +"cGS" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters{ + dir = 2; + id_tag = "kitchen_abandoned"; + name = "Abandoned Kitchen Shutters" + }, +/obj/item/reagent_containers/food/condiment/saltshaker, +/obj/machinery/door/window{ + dir = 1; + name = "Kitchen"; + req_access = list(28) + }, +/turf/simulated/floor/plasteel{ + icon_state = "stage_bleft" + }, +/area/maintenance/cafeteria) "cGU" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -18556,7 +18917,7 @@ /turf/simulated/floor/glass, /area/hallway/primary/fore) "cHa" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /turf/simulated/floor/plasteel/dark, @@ -18642,8 +19003,10 @@ /obj/structure/cable{ icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/plasteel, /area/atmos) "cHB" = ( @@ -18666,7 +19029,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "cHO" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=A2"; @@ -18723,6 +19086,17 @@ dir = 1 }, /area/hallway/secondary/exit) +"cIn" = ( +/obj/machinery/door/airlock/glass{ + name = "Break room"; + req_access = list(63) + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood, +/area/crew_quarters/courtroom) "cIw" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -18757,6 +19131,23 @@ tag = "icon-whiteblue (NORTH)" }, /area/maintenance/medroom) +"cIF" = ( +/obj/effect/spawner/window/reinforced/polarized{ + id = "blueshieldofficewindows" + }, +/obj/machinery/door/poddoor/shutters{ + density = 0; + dir = 1; + icon_state = "open"; + id_tag = "blueshield"; + name = "Privacy Shutters"; + opacity = 0 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/blueshield) "cIH" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -18776,6 +19167,12 @@ icon_state = "red" }, /area/security/range) +"cJa" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) "cJe" = ( /obj/machinery/suit_storage_unit/security, /obj/effect/decal/warning_stripes/west, @@ -18830,6 +19227,32 @@ "cJE" = ( /turf/simulated/wall, /area/maintenance/fsmaint2) +"cJF" = ( +/obj/structure/rack/gunrack, +/obj/item/gun/projectile/automatic/sp91rc{ + pixel_x = 3 + }, +/obj/item/gun/projectile/automatic/sp91rc, +/obj/item/gun/projectile/automatic/sp91rc{ + pixel_x = -3 + }, +/obj/item/gun/projectile/automatic/sp91rc{ + pixel_x = -3 + }, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/machinery/door/window{ + color = "red"; + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "cJI" = ( /obj/machinery/power/tracker, /obj/structure/lattice/catwalk, @@ -18849,7 +19272,17 @@ dir = 5; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) +"cJU" = ( +/obj/structure/curtain/open/shower/security{ + alpha = 255; + anchored = 1; + icon_state = "closed"; + name = "backstage"; + opacity = 1 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/crew_quarters/theatre) "cJZ" = ( /obj/machinery/smartfridge, /obj/machinery/door/window/eastleft{ @@ -18863,6 +19296,11 @@ }, /turf/simulated/floor/plating, /area/crew_quarters/kitchen) +"cKa" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/tripple, +/turf/simulated/floor/plating, +/area/maintenance/asmaint4) "cKc" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -18903,12 +19341,8 @@ }, /area/atmos) "cKm" = ( -/obj/structure/table, -/obj/item/aiModule/freeform, -/obj/machinery/camera/motion{ - c_tag = "AI Upload Chamber"; - dir = 8 - }, +/obj/item/ai_module/freeform, +/obj/structure/table/glass, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -18931,15 +19365,6 @@ }, /turf/simulated/floor/wood, /area/library) -"cKy" = ( -/obj/effect/spawner/lootdrop/maintenance/double, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 1 - }, -/obj/structure/plasticflaps/mining, -/turf/simulated/floor/plating, -/area/quartermaster/delivery) "cKD" = ( /obj/structure/chair/office/light{ dir = 8 @@ -19014,7 +19439,9 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "cLn" = ( /obj/structure/disposalpipe/segment{ @@ -19118,7 +19545,6 @@ }, /area/hallway/secondary/entry) "cMg" = ( -/obj/structure/chair/office, /obj/machinery/light{ dir = 8 }, @@ -19129,6 +19555,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -25 }, +/obj/structure/chair/office, /turf/simulated/floor/wood/oak, /area/crew_quarters/courtroom) "cMj" = ( @@ -19251,6 +19678,24 @@ }, /turf/simulated/floor/plating, /area/maintenance/starboard) +"cMZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + locked = 1; + req_access = list(12); + welded = 1 + }, +/obj/structure/barricade/wooden{ + layer = 3.5 + }, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/maintenance/apmaint) "cNc" = ( /obj/effect/decal/warning_stripes/yellow, /obj/machinery/door/window/westright{ @@ -19427,12 +19872,13 @@ /turf/space/openspace, /area/space) "cOi" = ( -/obj/item/radio/intercom{ - pixel_x = 28; - pixel_y = 28 +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/simulated/floor/wood, -/area/library) +/turf/simulated/floor/plasteel{ + icon_state = "redcorner" + }, +/area/security/prison/cell_block/A) "cOl" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -19474,6 +19920,9 @@ c_tag = "Brig Cell 2"; dir = 10 }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, /turf/simulated/floor/carpet/cyan, /area/security/prison/cell_block/A) "cOz" = ( @@ -19525,9 +19974,6 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light{ - dir = 4 - }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "darkred" @@ -19559,40 +20005,6 @@ icon_state = "darkpurple" }, /area/assembly/chargebay) -"cPi" = ( -/obj/machinery/camera{ - c_tag = "Medbay Main Hall South"; - dir = 4; - network = list("Medical","SS13") - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay2) -"cPm" = ( -/obj/effect/spawner/window/reinforced/polarized{ - id = "blueshieldofficewindows" - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/door/poddoor/shutters{ - density = 0; - icon_state = "open"; - id_tag = "blueshield"; - name = "Privacy Shutters"; - opacity = 0; - dir = 8 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/simulated/floor/plating, -/area/blueshield) "cPp" = ( /obj/effect/turf_decal/siding/wood, /turf/simulated/floor/carpet, @@ -19613,6 +20025,20 @@ icon_state = "red" }, /area/maintenance/secpost) +"cPx" = ( +/obj/effect/decal/warning_stripes/northeast, +/obj/machinery/chem_dispenser, +/obj/structure/reagent_dispensers/fueltank/chem{ + pixel_y = 34 + }, +/obj/machinery/door_control{ + id = "Chemistry2"; + name = "Chem Hallway Desk Shutters"; + pixel_x = -4; + pixel_y = 24 + }, +/turf/simulated/floor/engine, +/area/medical/chemistry) "cPy" = ( /obj/machinery/papershredder, /obj/machinery/light{ @@ -19764,46 +20190,6 @@ icon_state = "neutralfull" }, /area/hallway/primary/central/se) -"cQt" = ( -/obj/machinery/camera{ - c_tag = "Research Director's Office"; - dir = 1; - network = list("Research","SS13") - }, -/obj/item/clothing/glasses/welding/superior{ - pixel_y = 5; - pixel_x = 6 - }, -/obj/structure/table/glass, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/spawner/lootdrop/officetoys, -/turf/simulated/floor/plasteel{ - icon_state = "darkpurple" - }, -/area/toxins/rdoffice) -"cQv" = ( -/obj/structure/railing{ - dir = 10 - }, -/obj/machinery/camera{ - c_tag = "Second Floor Departure Lounge center-south"; - dir = 8 - }, -/obj/effect/turf_decal/siding/wideplating/light{ - dir = 10 - }, -/obj/item/twohanded/required/kirbyplants{ - pixel_y = 7; - pixel_x = 2 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkgreenfull" - }, -/area/hallway/secondary/exit) "cQx" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, @@ -19861,10 +20247,10 @@ "cQQ" = ( /obj/structure/table, /obj/item/stack/sheet/metal{ - amount = 10 + amount = 30 }, /obj/item/stack/sheet/glass{ - amount = 10 + amount = 30 }, /obj/machinery/recharger/wallcharger{ pixel_x = 5; @@ -19896,12 +20282,6 @@ }, /turf/simulated/floor/wood, /area/security/hos) -"cRf" = ( -/obj/structure/disposalpipe/junction/reversed{ - dir = 4 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/sorting) "cRi" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -19958,21 +20338,6 @@ }, /turf/simulated/floor/glass/reinforced, /area/engineering/aienter) -"cRz" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/door/poddoor/shutters{ - density = 0; - icon_state = "open"; - id_tag = "rdprivacy"; - name = "Research Director Office Shutters"; - opacity = 0; - dir = 2 - }, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/toxins/rdoffice) "cRB" = ( /obj/structure/railing{ dir = 8 @@ -20004,9 +20369,6 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/structure/sign/poster/official/random{ - pixel_x = -32 - }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -20120,16 +20482,24 @@ /obj/structure/sign/xenobio{ pixel_x = 32 }, -/obj/machinery/camera{ - c_tag = "Research East Hallway"; - dir = 8; - network = list("Research","SS13") - }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whitepurple" }, /area/medical/research) +"cSt" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 4 + }, +/obj/effect/turf_decal/number/number_2{ + dir = 1; + pixel_x = -6; + pixel_y = -10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners" + }, +/area/security/permahallway) "cSB" = ( /turf/simulated/floor/plasteel{ dir = 1 @@ -20139,16 +20509,6 @@ /obj/structure/closet/emcloset, /turf/simulated/floor/plating, /area/maintenance/tourist) -"cSM" = ( -/obj/machinery/vending/wallmed{ - pixel_y = 0; - pixel_x = 28 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkred" - }, -/area/security/permahallway) "cSO" = ( /obj/machinery/power/grounding_rod{ anchored = 1 @@ -20156,6 +20516,21 @@ /obj/effect/decal/warning_stripes/east, /turf/simulated/floor/plating/airless, /area/engineering/engine) +"cSZ" = ( +/obj/structure/dispenser, +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 1; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel/dark, +/area/engineering/controlroom) "cTb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -20380,7 +20755,8 @@ icon_state = "2-4" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "cUZ" = ( @@ -20419,6 +20795,16 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"cVn" = ( +/obj/machinery/camera{ + c_tag = "Arrivals South Longue Hallway"; + dir = 5 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "blue" + }, +/area/hallway/primary/fore) "cVx" = ( /obj/structure/flora/ausbushes/ppflowers, /obj/structure/flora/ausbushes/ywflowers, @@ -20448,6 +20834,22 @@ "cVE" = ( /turf/simulated/floor/engine/n20, /area/atmos) +"cVH" = ( +/obj/machinery/door/window/eastleft{ + dir = 8; + name = "Mail"; + req_access = list(50) + }, +/obj/structure/window/reinforced, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) "cVL" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -20542,6 +20944,20 @@ }, /turf/simulated/floor/plating, /area/bridge) +"cWg" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + layer = 3.25; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "blue" + }, +/area/hydroponics) "cWo" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ dir = 8; @@ -20605,24 +21021,6 @@ icon_state = "brown" }, /area/quartermaster/delivery) -"cWN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/maintenance{ - req_access = list(12); - locked = 1; - welded = 1 - }, -/obj/structure/barricade/wooden{ - layer = 3.5 - }, -/turf/simulated/floor/plasteel{ - dir = 1 - }, -/area/maintenance/apmaint) "cWO" = ( /obj/structure/cable{ icon_state = "1-2" @@ -20769,12 +21167,6 @@ tag = "icon-wood-broken" }, /area/maintenance/casino) -"cXR" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/plasteel{ - dir = 1 - }, -/area/security/prison/cell_block/A) "cXW" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ dir = 1; @@ -20973,20 +21365,6 @@ dir = 8 }, /area/hallway/primary/central/second/south) -"cYZ" = ( -/obj/structure/sign/directions/cargo{ - dir = 4 - }, -/obj/structure/sign/directions/engineering{ - pixel_y = -8; - dir = 1 - }, -/obj/structure/sign/directions/medical{ - dir = 1; - pixel_y = 8 - }, -/turf/simulated/wall, -/area/crew_quarters/serviceyard) "cZe" = ( /obj/effect/landmark/start/captain, /obj/structure/chair/comfy/blue{ @@ -21134,6 +21512,16 @@ /obj/effect/spawner/random_spawners/grille_13, /turf/simulated/floor/plating, /area/maintenance/fsmaint3) +"daC" = ( +/obj/machinery/alarm{ + dir = 4; + pixel_x = -24 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medrest) "daJ" = ( /obj/structure/sign/poster/official/random{ pixel_y = 32 @@ -21202,6 +21590,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/rack, /obj/random/tool, +/obj/item/clothing/head/welding, /turf/simulated/floor/plating, /area/maintenance/tourist) "dbs" = ( @@ -21306,10 +21695,6 @@ /obj/effect/spawner/lootdrop/maintenance/tripple, /turf/simulated/floor/plating, /area/maintenance/fore2) -"dcD" = ( -/obj/machinery/mineral/processing_unit_console, -/turf/simulated/wall, -/area/quartermaster/miningstorage) "dcH" = ( /obj/structure/railing{ dir = 4 @@ -21353,7 +21738,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "ddi" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/tiles/damageturf, @@ -21407,6 +21792,19 @@ icon_state = "darkred" }, /area/security/hos) +"ddH" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/hallway/primary/central/second/east) "ddK" = ( /obj/machinery/door/window/southright{ dir = 4; @@ -21433,6 +21831,27 @@ icon_state = "darkred" }, /area/maintenance/secpost) +"ddW" = ( +/obj/structure/toilet{ + pixel_y = 19 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/door_control{ + desiredstate = 1; + id = "toilet1"; + name = "Toilet Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/sign/poster/secret/lizard{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel/freezer, +/area/crew_quarters/toilet2) "ddX" = ( /obj/machinery/camera{ c_tag = "Mining Shuttle East"; @@ -21526,12 +21945,14 @@ }, /area/crew_quarters/sleep/secondary) "dfe" = ( +/obj/structure/railing{ + dir = 4 + }, /turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "whitepurple"; - tag = "icon-whitepurple (SOUTHWEST)" + dir = 1; + icon_state = "rampbottom" }, -/area/toxins/launch) +/area/maintenance/casino) "dff" = ( /obj/structure/table/reinforced, /obj/item/folder/yellow, @@ -21557,6 +21978,27 @@ icon_state = "darkbluealt" }, /area/bridge) +"dft" = ( +/obj/structure/table/wood, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/folder/yellow, +/obj/item/folder/blue{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/folder/red{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/effect/turf_decal{ + icon_state = "golden_stripes" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge/meeting_room) "dfy" = ( /obj/structure/window/reinforced{ dir = 8 @@ -21599,19 +22041,6 @@ }, /turf/simulated/floor/engine, /area/toxins/explab) -"dfW" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 4 - }, -/obj/effect/turf_decal/number/number_2{ - dir = 1; - pixel_y = -10; - pixel_x = -6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/hallway/secondary/entry/lounge) "dgg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -21626,8 +22055,7 @@ dir = 9 }, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "red" + dir = 1 }, /area/hallway/primary/central/second/west) "dgl" = ( @@ -21669,16 +22097,9 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "dgD" = ( -/obj/machinery/door/airlock/maintenance{ - req_access = list(12,39); - name = "Virology maintenance" - }, -/obj/structure/cable{ - icon_state = "1-2"; - tag = "" +/turf/simulated/floor/plasteel{ + icon_state = "ramptop" }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plating, /area/maintenance/asmaint4) "dgH" = ( /obj/machinery/embedded_controller/radio/airlock/airlock_controller{ @@ -21732,22 +22153,6 @@ icon_state = "arrival" }, /area/hallway/secondary/entry) -"dgR" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/item/storage/belt/medical, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/regular, -/obj/machinery/alarm{ - dir = 4; - pixel_x = -22 - }, -/obj/item/reagent_containers/hypospray/safety, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "whiteblue"; - tag = "icon-whiteblue (WEST)" - }, -/area/medical/biostorage) "dgS" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -21807,23 +22212,6 @@ state = 7 }, /area/crew_quarters/bar/atrium) -"dhn" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/effect/decal/warning_stripes/west, -/obj/machinery/camera{ - c_tag = "Engine Room West"; - network = list("Engineering","SS13"); - dir = 4 - }, -/obj/machinery/alarm{ - dir = 4; - pixel_x = -22 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "yellow" - }, -/area/engineering/engine) "dho" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -21860,12 +22248,17 @@ }, /area/hallway/secondary/exit) "dhv" = ( -/obj/machinery/door/airlock{ - id_tag = "toilet3"; - name = "Toilet" +/obj/effect/turf_decal/number/number_2{ + dir = 1; + pixel_y = -18 }, -/turf/simulated/floor/plasteel/freezer, -/area/crew_quarters/toilet2) +/obj/effect/turf_decal/arrows/white{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/hallway/primary/central/west) "dhz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -21889,21 +22282,6 @@ }, /turf/simulated/floor/plating, /area/medical/morgue) -"dhH" = ( -/obj/machinery/turretid/stun{ - control_area = "AI Satellite"; - name = "AI Antechamber Turret Control"; - req_access = list(75); - pixel_y = -32 - }, -/obj/machinery/light, -/obj/machinery/camera{ - c_tag = "AI Sattelit Hallway Main Acces South"; - dir = 10; - network = list("Engineering","SS13") - }, -/turf/simulated/floor/redgrid, -/area/aisat/aihallway) "dhM" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -21929,7 +22307,7 @@ /turf/simulated/floor/wood, /area/security/permabrig) "dhR" = ( -/obj/structure/chair/stool/holostool, +/obj/structure/chair/stool, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) "dhS" = ( @@ -22102,6 +22480,12 @@ }, /turf/simulated/floor/carpet, /area/medical/psych) +"djp" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/serviceyard) "djy" = ( /obj/machinery/door_control{ id = "mechanicgate"; @@ -22278,8 +22662,23 @@ /obj/effect/decal/novastation{ icon_state = "NStation3" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) +"dkU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/curtain/open{ + anchored = 1; + color = "#222222" + }, +/turf/simulated/floor/plasteel{ + icon_state = "rampbottom" + }, +/area/maintenance/banya) "dlb" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -22363,6 +22762,12 @@ /obj/machinery/light, /turf/simulated/floor/plasteel, /area/toxins/storage) +"dlr" = ( +/obj/structure/disposalpipe/trunk/multiz{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) "dlD" = ( /turf/simulated/wall/r_wall, /area/security/prison/cell_block/A) @@ -22386,17 +22791,6 @@ icon_state = "dark" }, /area/turret_protected/ai) -"dlT" = ( -/obj/effect/spawner/window/reinforced, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id_tag = "SecMedPrivOutside" - }, -/turf/simulated/floor/plating, -/area/security/medbay) "dmj" = ( /obj/machinery/atmospherics/pipe/multiz{ dir = 4 @@ -22441,16 +22835,6 @@ /obj/effect/spawner/lootdrop/maintenance/double, /turf/simulated/floor/plating, /area/maintenance/asmaint3) -"dmu" = ( -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/machinery/flasher/portable, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "dmy" = ( /obj/machinery/firealarm{ dir = 4; @@ -22465,6 +22849,39 @@ icon_state = "freezerfloor" }, /area/maintenance/cafeteria) +"dmz" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + color = "red"; + dir = 4 + }, +/obj/machinery/door/window{ + color = "red"; + dir = 1; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/machinery/door/window{ + color = "red"; + dir = 2; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/melee/baton/security/loaded{ + pixel_x = -4 + }, +/obj/item/melee/baton/security/loaded, +/obj/item/melee/baton/security/loaded{ + pixel_x = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark" + }, +/area/security/securearmory) "dmC" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ desc = "Труба хранит в себе набор газов для смешивания"; @@ -22487,6 +22904,26 @@ icon_state = "dark" }, /area/maintenance/gambling_den) +"dmP" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/door/window/brigdoor{ + dir = 8; + name = "Creature Pen"; + req_access = list(47) + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno1"; + name = "Creature Cell #1" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/toxins/xenobiology) "dmV" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -22533,16 +22970,20 @@ icon_state = "redfull" }, /area/security/checkpoint) -"dni" = ( -/obj/structure/table/wood, -/obj/machinery/fishtank/bowl, -/obj/item/fish_net, -/obj/item/fishfood{ - pixel_y = 3; - pixel_x = 2 +"dnh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/simulated/floor/wood, -/area/civilian/pet_store) +/obj/machinery/light_switch{ + pixel_x = -26; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) "dnj" = ( /turf/simulated/wall/r_wall, /area/crew_quarters/chief) @@ -22570,6 +23011,17 @@ tag = "icon-whitepurple (WEST)" }, /area/medical/research) +"dns" = ( +/obj/structure/table/reinforced, +/obj/structure/curtain/open{ + anchored = 1; + color = "#222222" + }, +/obj/item/healthupgrade, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/trading) "dnu" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -22681,6 +23133,20 @@ icon_state = "darkred" }, /area/turret_protected/aisat) +"doo" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/radio/intercom{ + name = "south station intercom (General)"; + pixel_y = -28 + }, +/obj/machinery/camera{ + c_tag = "Gravity Generator Area East"; + dir = 4; + network = list("SS13","Engineering") + }, +/turf/simulated/floor/plasteel, +/area/engineering/gravitygenerator) "dop" = ( /obj/machinery/vending/cigarette, /obj/machinery/light{ @@ -22689,27 +23155,6 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/serviceyard) -"doq" = ( -/obj/machinery/door/airlock/security{ - name = "Execution Room"; - req_access = list(2); - id = "execution" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "dark" - }, -/area/security/execution) "dos" = ( /obj/machinery/door/airlock/external{ frequency = 1379; @@ -23249,7 +23694,8 @@ pixel_y = 32 }, /turf/simulated/floor/plasteel{ - dir = 1 + dir = 1; + icon_state = "red" }, /area/security/prison/cell_block/A) "dsh" = ( @@ -23274,7 +23720,9 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "dso" = ( /obj/effect/decal/cleanable/dirt, @@ -23381,6 +23829,12 @@ icon_state = "neutralfull" }, /area/quartermaster/delivery) +"dsN" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/prison/cell_block/A) "dsO" = ( /obj/machinery/libraryscanner, /turf/simulated/floor/wood, @@ -23580,15 +24034,10 @@ /turf/simulated/floor/carpet/royalblack, /area/hallway/secondary/exit) "duz" = ( -/obj/effect/turf_decal/loading_area{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, -/turf/simulated/floor/plasteel{ - icon_state = "brown" - }, +/turf/simulated/floor/plasteel, /area/quartermaster/miningstorage) "duC" = ( /obj/effect/decal/cleanable/dust, @@ -23635,22 +24084,6 @@ icon_state = "whiteyellow" }, /area/medical/chemistry) -"duV" = ( -/obj/effect/decal/warning_stripes/yellow/partial, -/obj/item/radio/intercom{ - dir = 1; - pixel_y = 28; - pixel_x = -26 - }, -/obj/effect/landmark/join_late_cyborg, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "purple" - }, -/area/assembly/showroom) "duZ" = ( /obj/structure/cable{ icon_state = "1-8" @@ -23688,7 +24121,9 @@ name = "Emergency NanoMed"; pixel_y = 30 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "dvi" = ( /obj/structure/cable{ @@ -23749,6 +24184,11 @@ dir = 1 }, /area/hallway/primary/central/second/west) +"dvO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/caution, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) "dvT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -23965,6 +24405,10 @@ }, /turf/simulated/floor/carpet, /area/medical/psych) +"dxq" = ( +/obj/structure/flora/ausbushes/grassybush, +/turf/simulated/floor/grass, +/area/maintenance/garden) "dxv" = ( /obj/structure/cable{ icon_state = "1-2" @@ -24055,6 +24499,7 @@ /area/bridge) "dyb" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/oil, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -24082,7 +24527,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "dyi" = ( /obj/effect/decal/cleanable/dirt, @@ -24227,8 +24674,8 @@ }, /area/maintenance/detectives_office) "dzE" = ( -/obj/structure/table, -/obj/item/aiModule/quarantine, +/obj/item/ai_module/quarantine, +/obj/structure/table/glass, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -24249,6 +24696,7 @@ /area/medical/cmo) "dzH" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/spiderling_remains, /turf/simulated/floor/wood{ icon_state = "wood-broken" }, @@ -24303,14 +24751,6 @@ /obj/item/trash/raisins, /turf/simulated/floor/plating, /area/security/permabrig) -"dzV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/random{ - pixel_y = 0; - pixel_x = 32 - }, -/turf/simulated/floor/plating, -/area/maintenance/asmaint6) "dAb" = ( /obj/machinery/light, /obj/structure/sign/directions/floor/alt{ @@ -24325,34 +24765,6 @@ icon_state = "brown" }, /area/quartermaster/office) -"dAc" = ( -/obj/structure/table/reinforced, -/obj/item/folder/yellow, -/obj/item/pen, -/obj/machinery/door/window{ - name = "Atmospherics Desk"; - req_access = list(24) - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/door/window{ - name = "Atmospherics Desk"; - dir = 8 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "Eng_lockdown"; - name = "Engineering Lockdown"; - opacity = 0 - }, -/turf/simulated/floor/plasteel, -/area/atmos/control) "dAn" = ( /obj/machinery/camera{ c_tag = "Second Floor Departure Lounge North"; @@ -24479,6 +24891,14 @@ }, /turf/simulated/floor/glass/reinforced, /area/quartermaster/qm) +"dAX" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/massdriver) "dAZ" = ( /obj/machinery/door/airlock/silver{ name = "Bathroom" @@ -24491,21 +24911,6 @@ icon_state = "freezerfloor" }, /area/medical/cmo) -"dBk" = ( -/obj/effect/spawner/window/reinforced/polarized{ - id = "blueshieldofficewindows" - }, -/obj/machinery/door/poddoor/shutters{ - density = 0; - icon_state = "open"; - id_tag = "blueshield"; - name = "Privacy Shutters"; - opacity = 0; - dir = 8 - }, -/obj/structure/cable, -/turf/simulated/floor/plating, -/area/blueshield) "dBr" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -24708,6 +25113,11 @@ /obj/effect/decal/ants, /turf/simulated/floor/plating, /area/security/permabrig) +"dCH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random_spawners/crate_spawner, +/turf/simulated/floor/plating, +/area/maintenance/tourist) "dCL" = ( /obj/structure/chair/sofa/right, /obj/effect/decal/cleanable/dirt, @@ -24745,19 +25155,26 @@ }, /turf/simulated/floor/carpet/green, /area/crew_quarters/mrchangs) -"dCX" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; +"dDj" = ( +/obj/effect/turf_decal/arrows/white{ dir = 4 }, +/obj/effect/turf_decal/number/number_1{ + dir = 1; + pixel_x = -5; + pixel_y = -10 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "whitepurplecorner" + dir = 5; + icon_state = "dark" }, -/area/toxins/misc_lab) +/area/hallway/primary/command/west) "dDk" = ( /turf/simulated/floor/plating, /area/maintenance/fore2) @@ -24784,17 +25201,6 @@ "dDu" = ( /turf/simulated/wall/r_wall, /area/crew_quarters/heads) -"dDz" = ( -/obj/effect/decal/warning_stripes/west, -/obj/machinery/vending/wallmed{ - name = "Emergency NanoMed"; - pixel_y = 0; - pixel_x = -26 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/engineering/gravitygenerator) "dDE" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -24809,7 +25215,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /turf/simulated/floor/plasteel{ @@ -25013,6 +25419,17 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/maintenance/asmaint) +"dFE" = ( +/obj/structure/closet/radiation, +/obj/machinery/camera{ + c_tag = "Medbay GenCells"; + dir = 1; + network = list("Medical","SS13") + }, +/turf/simulated/floor/plasteel{ + icon_state = "whitepurple" + }, +/area/medical/genetics) "dFH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -25022,17 +25439,14 @@ icon_state = "white" }, /area/medical/cmostore) -"dFK" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #6"; - id_tag = "xeno6" +"dFI" = ( +/obj/structure/curtain/open/shower/security{ + alpha = 255; + anchored = 1; + name = "backstage" }, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/toxins/xenobiology) +/turf/simulated/floor/wood/fancy/cherry, +/area/crew_quarters/theatre) "dFN" = ( /obj/structure/chair/comfy/red, /obj/effect/turf_decal/siding/wood{ @@ -25125,6 +25539,13 @@ icon_state = "dark" }, /area/maintenance/trading) +"dGX" = ( +/obj/machinery/newscaster{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/wood/dark, +/area/crew_quarters/bar/atrium) "dHa" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/blood_20, @@ -25282,7 +25703,7 @@ /obj/machinery/firealarm{ dir = 4; name = "east fire alarm"; - pixel_x = 24 + pixel_x = 26 }, /turf/simulated/floor/plasteel{ dir = 4; @@ -25290,9 +25711,6 @@ }, /area/hallway/primary/central/west) "dId" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -25389,6 +25807,16 @@ }, /turf/simulated/floor/plating, /area/maintenance/gambling_den) +"dIS" = ( +/obj/machinery/computer/secure_data, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/security/reception) "dIY" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -25522,6 +25950,21 @@ icon_state = "dark" }, /area/hydroponics) +"dJR" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/sortjunction{ + dir = 1; + name = "Engineering Junction"; + sortType = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) "dJS" = ( /obj/machinery/computer/shuttle/labor, /obj/machinery/light/small{ @@ -25545,8 +25988,11 @@ }, /area/security/brigstaff) "dKd" = ( -/obj/machinery/vending/tool, /obj/effect/decal/cleanable/dust, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-dead"; + tag = "plant-dead" + }, /turf/simulated/floor/carpet, /area/maintenance/casino) "dKf" = ( @@ -25628,20 +26074,6 @@ icon_state = "dark" }, /area/crew_quarters/fitness) -"dKT" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/item/radio/intercom{ - name = "south station intercom (General)"; - pixel_y = -28 - }, -/obj/machinery/camera{ - c_tag = "Gravity Generator Area West"; - network = list("SS13","Engineering"); - dir = 8 - }, -/turf/simulated/floor/plasteel, -/area/engineering/gravitygenerator) "dKV" = ( /obj/effect/turf_decal/siding/wood{ dir = 8; @@ -25768,6 +26200,16 @@ icon_state = "vault" }, /area/bridge) +"dLR" = ( +/obj/item/radio/intercom{ + dir = 1; + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "red" + }, +/area/hallway/primary/central/west) "dMb" = ( /obj/machinery/light/small{ dir = 4 @@ -25840,6 +26282,15 @@ tag = "icon-whitepurple (WEST)" }, /area/toxins/xenobiology) +"dMA" = ( +/obj/effect/turf_decal/siding/white/end{ + color = "#444444"; + dir = 4 + }, +/turf/simulated/floor/glass{ + slowdown = -0.3 + }, +/area/hallway/primary/central) "dMB" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -25923,6 +26374,13 @@ /area/security/interrogation) "dNe" = ( /obj/effect/decal/cleanable/dirt, +/obj/structure/safe/floor, +/obj/item/reagent_containers/food/condiment/cheesesauce, +/obj/item/reagent_containers/food/condiment/garlicsauce, +/obj/item/reagent_containers/food/condiment/diablosauce, +/obj/item/reagent_containers/food/condiment/mushroomsauce, +/obj/item/reagent_containers/food/condiment/herbs, +/obj/item/reagent_containers/food/condiment/soysauce, /turf/simulated/floor/plasteel{ icon_state = "bar" }, @@ -26159,19 +26617,6 @@ dir = 1 }, /area/security/range) -"dOF" = ( -/obj/structure/sign/directions/evac{ - pixel_y = -8 - }, -/obj/structure/sign/directions/security{ - pixel_y = 8; - dir = 1 - }, -/obj/structure/sign/directions/medical{ - dir = 1 - }, -/turf/simulated/wall, -/area/hallway/primary/fore) "dOH" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -26233,6 +26678,46 @@ icon_state = "white" }, /area/medical/research) +"dPl" = ( +/obj/machinery/autolathe, +/obj/machinery/door/window/brigdoor{ + dir = 8; + id = "Autolathe"; + name = "Autolathe Access"; + req_access = list(47) + }, +/obj/item/stack/sheet/metal{ + amount = 10 + }, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/door/poddoor/shutters{ + density = 0; + dir = 8; + icon_state = "open"; + id_tag = "researchdesk1"; + name = "Research Desk Shutters"; + opacity = 0 + }, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Biohazard"; + name = "Quarantine Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) "dPp" = ( /obj/effect/decal/warning_stripes/northwestcorner, /obj/machinery/light/small, @@ -26271,6 +26756,23 @@ icon_state = "whitebluefull" }, /area/medical/medbay2) +"dPz" = ( +/obj/effect/spawner/window/reinforced/polarized{ + id = "blueshieldofficewindows" + }, +/obj/machinery/door/poddoor/shutters{ + density = 0; + dir = 1; + icon_state = "open"; + id_tag = "blueshield"; + name = "Privacy Shutters"; + opacity = 0 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/blueshield) "dPB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -26312,24 +26814,6 @@ }, /turf/simulated/floor/grass, /area/crew_quarters/captain) -"dPO" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 8; - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 - }, -/obj/structure/sign/poster/random{ - pixel_y = 0; - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whitepurple"; - tag = "icon-whitepurple (EAST)" - }, -/area/medical/research/nhallway) "dPR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -26340,11 +26824,10 @@ }, /area/crew_quarters/fitness) "dQa" = ( -/obj/machinery/light/small{ - dir = 4; - tag = "icon-bulb1 (EAST)" +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "0-4" }, -/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) "dQc" = ( @@ -26352,21 +26835,6 @@ /obj/structure/cable, /turf/simulated/floor/plating, /area/engineering/engine/monitor) -"dQd" = ( -/obj/machinery/kitchen_machine/microwave{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/structure/table, -/obj/machinery/camera{ - c_tag = "Research Break Room"; - network = list("Research","SS13"); - dir = 10 - }, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/medical/research/restroom) "dQn" = ( /obj/structure/plasticflaps, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -26452,29 +26920,8 @@ /turf/simulated/floor/plating, /area/maintenance/brig) "dQT" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/door/airlock/medical{ - name = "Brig Medical Bay"; - req_access = list(63); - security_level = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "dark" - }, -/area/security/medbay) +/turf/simulated/openspace, +/area/hallway/primary/central/second/west) "dQY" = ( /obj/structure/chair{ dir = 1 @@ -26524,17 +26971,14 @@ /turf/simulated/floor/plating, /area/engineering/engine) "dRn" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/cable{ + icon_state = "4-8" }, /turf/simulated/floor/plasteel{ dir = 1; @@ -26553,6 +26997,7 @@ dir = 1; pixel_y = -25 }, +/obj/item/reagent_containers/spray/pestspray, /turf/simulated/floor/grass, /area/maintenance/garden) "dRw" = ( @@ -26697,7 +27142,7 @@ pixel_y = -30 }, /turf/simulated/floor/plasteel{ - dir = 1 + icon_state = "red" }, /area/security/lobby) "dSt" = ( @@ -26858,19 +27303,6 @@ "dTH" = ( /turf/simulated/wall/rust, /area/maintenance/trading) -"dTN" = ( -/obj/structure/chair/sofa/right{ - dir = 4; - color = "#85130b" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/item/trash/gum, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light_construct, -/turf/simulated/floor/wood, -/area/maintenance/backstage) "dTS" = ( /turf/simulated/wall, /area/hallway/primary/central/south) @@ -26917,6 +27349,9 @@ /obj/effect/decal/warning_stripes/east, /turf/simulated/floor/plating/airless, /area/space) +"dUj" = ( +/turf/simulated/floor/carpet/green, +/area/medical/virology) "dUt" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -26937,6 +27372,21 @@ /obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/plating, /area/maintenance/asmaint) +"dUA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/turretid/stun{ + control_area = "AI Upload Chamber"; + name = "AI Upload Turret Control"; + pixel_x = 32; + pixel_y = -24; + req_access = list(75) + }, +/turf/simulated/floor/plasteel/dark, +/area/turret_protected/ai_upload) "dUB" = ( /obj/machinery/vending/wallmed{ name = "Emergency NanoMed"; @@ -26963,9 +27413,17 @@ icon_state = "1-2" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) +"dUZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/spiderling_remains, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/trading) "dVa" = ( /obj/structure/window/reinforced{ dir = 1 @@ -26984,6 +27442,17 @@ /obj/item/pen, /turf/simulated/floor/plating, /area/security/permabrig) +"dVg" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno5"; + name = "Creature Cell #5" + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) "dVm" = ( /obj/effect/decal/cleanable/dirt, /obj/item/radio/intercom/locked/prison{ @@ -27156,20 +27625,24 @@ }, /area/toxins/xenobiology) "dWV" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, /obj/structure/disposalpipe/segment{ dir = 9 }, +/obj/machinery/light_switch{ + pixel_x = -26; + pixel_y = 26 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "dXb" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -27216,7 +27689,7 @@ icon_state = "whitegreen"; tag = "icon-whitegreen (EAST)" }, -/area/medical/virology/lab) +/area/medical/virology) "dXy" = ( /obj/machinery/vending/clothing/departament/security, /obj/effect/decal/warning_stripes/red/hollow, @@ -27306,6 +27779,16 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/casino) +"dYx" = ( +/obj/structure/flora/ausbushes/leafybush, +/obj/machinery/camera{ + c_tag = "Xenobio Central-North"; + dir = 1; + network = list("Research","SS13"); + pixel_x = -1 + }, +/turf/simulated/floor/grass, +/area/toxins/xenobiology) "dYB" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/white/line{ @@ -27319,9 +27802,8 @@ /turf/simulated/floor/plating, /area/maintenance/tourist) "dYK" = ( -/obj/structure/closet/l3closet/scientist, -/obj/effect/decal/warning_stripes/yellow/hollow, /obj/effect/decal/cleanable/dirt, +/obj/item/paper_bin, /turf/simulated/floor/plasteel, /area/maintenance/xenozoo) "dYN" = ( @@ -27380,6 +27862,20 @@ icon_state = "darkbluecornersalt" }, /area/crew_quarters/fitness) +"dYX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light_switch{ + pixel_x = -26; + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) "dZb" = ( /obj/structure/cable{ icon_state = "1-2" @@ -27428,6 +27924,17 @@ }, /turf/simulated/floor/plasteel, /area/storage/secure) +"dZn" = ( +/obj/structure/window/reinforced{ + color = "red"; + dir = 8 + }, +/obj/machinery/flasher/portable, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "dZq" = ( /obj/machinery/atmospherics/pipe/simple/visible/cyan{ desc = "Труба содержит дыхательную смесь для подачи на станцию"; @@ -27435,6 +27942,9 @@ name = "Труба дыхательной смеси" }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "yellow" @@ -27519,7 +28029,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "dZM" = ( @@ -27547,12 +28058,29 @@ /turf/simulated/floor/plating, /area/maintenance/apmaint) "eab" = ( -/obj/item/twohanded/required/kirbyplants, /obj/machinery/vending/wallmed{ pixel_y = -30 }, +/obj/machinery/vending/artvend, /turf/simulated/floor/wood/oak, /area/civilian/barber) +"ead" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/lightreplacer, +/obj/item/lightreplacer{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/box/lights/mixed, +/obj/item/storage/box/lights/mixed{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) "eae" = ( /obj/machinery/computer/station_alert, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -27718,6 +28246,18 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"ebl" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/chair/stool, +/obj/structure/sign/poster/official/the_owl{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel, +/area/maintenance/apmaint) "ebm" = ( /obj/structure/cable{ icon_state = "4-8" @@ -27747,6 +28287,18 @@ icon_state = "green" }, /area/hallway/secondary/exit) +"ebq" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/quartermaster/lobby) "ebr" = ( /obj/structure/window/reinforced{ dir = 8; @@ -27811,26 +28363,6 @@ icon_state = "darkblue" }, /area/hallway/secondary/exit) -"eby" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/light_switch{ - name = "north light switch"; - pixel_y = 24; - pixel_x = 24 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/sorting) "ebK" = ( /obj/machinery/atm{ pixel_x = -32 @@ -27989,29 +28521,6 @@ icon_state = "neutralcorner" }, /area/storage/tech) -"edg" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "Kitchen Dinner Windows"; - name = "Kitchen Shutters"; - dir = 2 - }, -/obj/machinery/door/window/westright{ - dir = 2; - name = "Kitchen"; - req_access = list(28) - }, -/obj/item/desk_bell{ - anchored = 1; - pixel_x = 7; - pixel_y = 7 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "dark" - }, -/area/crew_quarters/kitchen) "edh" = ( /obj/structure/table/wood, /obj/item/taperecorder, @@ -28021,6 +28530,16 @@ }, /turf/simulated/floor/carpet/red, /area/civilian/vacantoffice) +"edl" = ( +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -28 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "blue" + }, +/area/hallway/primary/fore) "edn" = ( /obj/structure/cable{ icon_state = "1-2" @@ -28090,6 +28609,14 @@ icon_state = "neutralfull" }, /area/security/nuke_storage) +"edG" = ( +/obj/structure/table, +/obj/item/robot_parts/l_leg, +/obj/item/robot_parts/r_leg, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) "edO" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/vomit, @@ -28152,19 +28679,18 @@ icon_state = "vault" }, /area/engineering/mechanic_workshop) -"eeb" = ( -/obj/machinery/camera{ - c_tag = "Prisoners Lockers"; - network = list("SS13","Security"); +"edZ" = ( +/obj/machinery/light{ dir = 4 }, -/obj/machinery/light/small{ - dir = 8 +/obj/structure/disposalpipe/junction{ + dir = 2 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/structure/railing/corner{ + dir = 4 }, -/area/security/prisonlockers) +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) "eed" = ( /obj/machinery/alarm{ pixel_y = 23 @@ -28285,6 +28811,19 @@ "efd" = ( /turf/simulated/wall, /area/engineering/engine) +"efe" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/hallway/primary/starboard/east) "efl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -28321,6 +28860,13 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/fore) +"efz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plating, +/area/maintenance/tourist) "efA" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -28435,7 +28981,7 @@ dir = 10; icon_state = "whitegreen" }, -/area/medical/virology/lab) +/area/medical/virology) "egq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 5 @@ -28577,6 +29123,29 @@ dir = 1 }, /area/quartermaster/lobby) +"ehh" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/machinery/door/window{ + color = "red"; + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/clothing/shoes/combat/riot, +/obj/item/clothing/shoes/combat/riot, +/obj/item/clothing/shoes/combat/riot, +/obj/item/clothing/shoes/combat/riot, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "ehn" = ( /obj/structure/flora/ausbushes/brflowers, /obj/structure/window/reinforced{ @@ -28634,7 +29203,9 @@ icon_state = "4-8" }, /obj/machinery/light, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "ehA" = ( /obj/effect/decal/cleanable/dirt, @@ -28654,6 +29225,19 @@ icon_state = "bot" }, /area/maintenance/medroom) +"ehE" = ( +/obj/structure/chair/sofa/right{ + color = "#85130b"; + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/trash/gum, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_construct, +/turf/simulated/floor/wood, +/area/maintenance/backstage) "ehF" = ( /obj/machinery/ticket_machine{ layer = 4; @@ -28689,24 +29273,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/chapel) -"ehS" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door_control{ - id = "Evidence Storage"; - name = "Evidence Storage Privacy Shutters Control"; - pixel_x = -24; - req_access = list(63); - pixel_y = -24 - }, -/turf/simulated/floor/plasteel{ - dir = 0; - icon_state = "red" - }, -/area/security/processing) "ehW" = ( /obj/structure/table/wood, /turf/simulated/floor/plasteel{ @@ -28942,32 +29508,6 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/security/permabrig) -"ejJ" = ( -/obj/effect/decal/warning_stripes/red/hollow, -/obj/structure/rack/gunrack, -/obj/item/gun/energy/gun, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 1 - }, -/obj/machinery/door/window{ - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/obj/item/gun/energy/gun{ - pixel_x = 3 - }, -/obj/item/gun/energy/gun{ - pixel_x = 6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "ejK" = ( /obj/machinery/vending/tool, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -29094,6 +29634,18 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plating, /area/maintenance/trading) +"ekJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "ekP" = ( /obj/structure/railing{ dir = 10 @@ -29203,9 +29755,6 @@ /area/security/permabrig) "elt" = ( /obj/effect/landmark/start/brig_physician, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/cable{ icon_state = "2-8" }, @@ -29215,8 +29764,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/cable{ + icon_state = "2-4" }, /turf/simulated/floor/plasteel{ dir = 1; @@ -29244,6 +29793,25 @@ tag = "icon-vault (NORTHEAST)" }, /area/medical/morgue) +"elC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/twohanded/required/kirbyplants{ + pixel_y = 12; + tag = "plant-dead" + }, +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "escape" + }, +/area/hallway/secondary/exit/maint) "elE" = ( /obj/machinery/disposal, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -29268,7 +29836,9 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "elH" = ( /obj/machinery/door/poddoor{ @@ -29388,6 +29958,17 @@ icon_state = "red" }, /area/security/processing) +"emp" = ( +/obj/machinery/light, +/obj/machinery/vending/wallmed{ + layer = 3.3; + name = "Emergency NanoMed"; + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/hallway/primary/central/second/east) "emr" = ( /obj/structure/flora/ausbushes/ppflowers, /obj/structure/flora/ausbushes/ywflowers, @@ -29555,19 +30136,14 @@ }, /area/maintenance/trading) "enP" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "dark" + dir = 4; + icon_state = "red" }, -/area/security/medbay) +/area/security/processing) "enR" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -29576,11 +30152,12 @@ dir = 4 }, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "1-8" }, /obj/structure/cable{ - icon_state = "1-8" + icon_state = "2-8" }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "red" @@ -29593,16 +30170,6 @@ icon_state = "blue" }, /area/hallway/primary/central/nw) -"enZ" = ( -/obj/machinery/door/airlock/security/glass{ - id_tag = "BrigRight"; - name = "Brig Mechbay"; - req_access = list(63); - welded = 1; - locked = 1 - }, -/turf/simulated/floor/plating, -/area/maintenance/secpost) "eoc" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 @@ -29674,7 +30241,7 @@ pixel_x = -28 }, /turf/simulated/floor/redgrid, -/area/tcommsat/chamber) +/area/tcommsat/server) "eoV" = ( /obj/machinery/porta_turret{ dir = 8 @@ -29684,9 +30251,6 @@ }, /area/turret_protected/ai_upload) "eoY" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, @@ -29701,6 +30265,9 @@ name = "Janitor"; sortType = 22 }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -29880,8 +30447,16 @@ /obj/machinery/light{ dir = 4 }, +/obj/machinery/power/apc{ + cell_type = 5000; + dir = 4; + name = "east bump"; + pixel_x = 26 + }, +/obj/structure/cable, /turf/simulated/floor/plasteel{ - icon_state = "redcorner" + dir = 4; + icon_state = "red" }, /area/security/prison/cell_block/A) "eqO" = ( @@ -29941,18 +30516,6 @@ tag = "icon-whitepurple (WEST)" }, /area/toxins/explab) -"erx" = ( -/obj/structure/table/glass, -/obj/item/storage/box/masks, -/obj/item/storage/box/gloves{ - pixel_x = 3; - pixel_y = 3 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whiteblue" - }, -/area/medical/surgery/north) "erC" = ( /obj/structure/showcase, /obj/structure/window/reinforced{ @@ -30006,7 +30569,6 @@ icon_state = "4-8" }, /obj/machinery/photocopier, -/obj/structure/table, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purple" @@ -30086,23 +30648,6 @@ /obj/effect/spawner/random_spawners/rodent, /turf/simulated/floor/plating, /area/maintenance/fsmaint3) -"esF" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 4 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/item/radio/intercom{ - name = "west station intercom (General)"; - pixel_x = -28 - }, -/turf/simulated/floor/plasteel/freezer, -/area/crew_quarters/toilet3) "esG" = ( /obj/structure/cable{ icon_state = "1-2" @@ -30123,23 +30668,6 @@ icon_state = "solarpanel" }, /area/solar/port) -"esR" = ( -/obj/structure/sign/vacuum{ - pixel_x = -32; - icon_state = "space1" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/maintenance/tourist) "esT" = ( /obj/structure/cable{ icon_state = "1-2" @@ -30234,6 +30762,15 @@ icon_state = "dark" }, /area/security/securearmory) +"etN" = ( +/obj/item/pen, +/obj/structure/table, +/obj/item/toy/figure/scientist, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/xenozoo) "etQ" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ @@ -30241,6 +30778,16 @@ icon_state = "brown" }, /area/quartermaster/miningstorage) +"euc" = ( +/obj/machinery/blackbox_recorder, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/camera/motion{ + c_tag = "Minisat AI Core South"; + dir = 10; + network = list("Minisat","SS13") + }, +/turf/simulated/floor/redgrid, +/area/turret_protected/ai) "euh" = ( /obj/structure/table/wood/fancy/royalblack, /obj/item/clothing/under/syndicate/tacticool, @@ -30308,17 +30855,6 @@ icon_state = "whitehall" }, /area/medical/reception) -"eut" = ( -/obj/machinery/computer/card, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = 0; - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "bluefull" - }, -/area/bridge/checkpoint/south) "euv" = ( /turf/simulated/wall/shuttle/overspace, /area/shuttle/arrival/station) @@ -30428,16 +30964,6 @@ tag = "icon-whiteblue" }, /area/medical/medrest) -"evm" = ( -/obj/machinery/light_switch{ - pixel_y = 0; - pixel_x = -24 - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkred" - }, -/area/security/detectives_office) "evr" = ( /turf/simulated/wall/r_wall, /area/hallway/secondary/entry/additional) @@ -30532,7 +31058,7 @@ name = "fore bay 1"; width = 9 }, -/turf/space{ +/turf/space/openspace{ icon_state = "black" }, /area/space) @@ -30616,56 +31142,12 @@ }, /turf/simulated/floor/wood, /area/maintenance/backstage) -"ewT" = ( -/obj/structure/table/wood, -/obj/item/grenade/chem_grenade{ - pixel_y = 5; - pixel_x = 3 - }, -/obj/item/grenade/chem_grenade{ - pixel_x = 7 - }, -/obj/item/grenade/chem_grenade, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/trading) "ewV" = ( /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" }, /area/quartermaster/miningstorage) -"ewY" = ( -/obj/machinery/computer/general_air_control{ - name = "Tank Monitor"; - sensors = list("n2_sensor"="Nitrogen","o2_sensor"="Oxygen","co2_sensor"="Carbon Dioxide","tox_sensor"="Toxins","n2o_sensor"="Nitrous Oxide","mix_sensor"="Gas Mix Tank") - }, -/obj/structure/extinguisher_cabinet{ - pixel_y = 32 - }, -/obj/machinery/light{ - dir = 1; - in_use = 1 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/item/radio/intercom{ - pixel_y = 23; - pixel_x = -28 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "caution" - }, -/area/atmos/control) "exa" = ( /obj/machinery/sleeper{ pixel_x = 3 @@ -30687,6 +31169,18 @@ icon_state = "whitehall" }, /area/maintenance/fsmaint3) +"exh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/curtain/open/shower/security{ + alpha = 255; + anchored = 1; + icon_state = "closed"; + name = "backstage"; + opacity = 1 + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/plating, +/area/maintenance/backstage) "exm" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/carpet/royalblack, @@ -30727,26 +31221,6 @@ icon_state = "red" }, /area/security/interrogation) -"exH" = ( -/obj/machinery/alarm{ - dir = 1; - pixel_y = -24 - }, -/obj/machinery/camera{ - c_tag = "Minisat Maintenance Room"; - dir = 8; - network = list("Minisat","SS13") - }, -/obj/item/twohanded/required/kirbyplants, -/obj/item/radio/intercom{ - dir = 1; - pixel_y = 0; - pixel_x = 28 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/aisat/maintenance) "exK" = ( /obj/structure/cable{ icon_state = "4-8" @@ -31014,23 +31488,23 @@ }, /turf/simulated/floor/carpet, /area/maintenance/casino) -"ezi" = ( -/obj/structure/table/reinforced, -/obj/item/clothing/ears/earmuffs, -/obj/item/clothing/ears/earmuffs{ - pixel_y = 4 +"ezg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/machinery/door/window/brigdoor{ - name = "Security Reception"; - req_access = list(1); - dir = 2; - color = "red" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" }, /turf/simulated/floor/plasteel{ - icon_state = "redfull"; - tag = "icon-redfull (NORTHWEST)" + icon_state = "grimy" }, -/area/security/range) +/area/chapel/office) "ezl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -31126,11 +31600,14 @@ }, /area/medical/cloning) "ezI" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/structure/disposalpipe/trunk{ + dir = 4 }, -/area/security/interrogation) +/obj/structure/disposaloutlet{ + dir = 8 + }, +/turf/simulated/floor/plating/airless, +/area/space) "ezJ" = ( /obj/structure/table, /obj/item/storage/fancy/cigarettes/cigpack_robust{ @@ -31190,23 +31667,6 @@ /obj/effect/decal/warning_stripes/northeast, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/additional) -"eAf" = ( -/obj/structure/bed, -/obj/item/bedsheet/captain{ - name = "NT Representative's bedsheet." - }, -/obj/item/radio/intercom{ - pixel_x = -28 - }, -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 1 - }, -/turf/simulated/floor/carpet/royalblue, -/area/ntrep) "eAh" = ( /obj/structure/toilet{ pixel_y = 19 @@ -31371,16 +31831,6 @@ /obj/machinery/door/firedoor, /turf/simulated/floor/carpet, /area/crew_quarters/captain) -"eBd" = ( -/obj/structure/chair/sofa/right{ - dir = 4; - color = "#85130b" - }, -/obj/effect/turf_decal/siding/red{ - dir = 8 - }, -/turf/simulated/floor/carpet/black, -/area/crew_quarters/bar/atrium) "eBi" = ( /obj/structure/rack{ dir = 8; @@ -31514,6 +31964,20 @@ /obj/structure/lattice, /turf/space, /area/space) +"eCo" = ( +/obj/machinery/light/small, +/obj/machinery/camera{ + c_tag = "Brig Cells"; + dir = 10; + network = list("SS13","Security") + }, +/obj/machinery/door_timer/cell_6{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "redcorner" + }, +/area/security/prison/cell_block/A) "eCs" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable, @@ -31550,6 +32014,7 @@ /area/crew_quarters/fitness) "eCB" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/spiderling_remains, /turf/simulated/floor/plasteel{ icon_state = "whiteblue"; tag = "icon-whitehall (WEST)" @@ -31621,6 +32086,18 @@ icon_state = "white" }, /area/toxins/misc_lab) +"eDo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno2"; + name = "Creature Cell #2" + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) "eDs" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -31632,6 +32109,18 @@ }, /turf/simulated/floor/plating, /area/maintenance/brig) +"eDt" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/engineering/gravitygenerator) "eDu" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig Customs"; @@ -31771,25 +32260,6 @@ icon_state = "neutralfull" }, /area/crew_quarters/serviceyard) -"eER" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) "eEY" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -31820,7 +32290,7 @@ }, /area/chapel/office) "eFg" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /turf/simulated/floor/plating, @@ -31856,17 +32326,6 @@ icon_state = "blue" }, /area/hallway/secondary/entry/lounge) -"eFC" = ( -/obj/machinery/door/firedoor, -/obj/effect/decal/warning_stripes/yellow, -/obj/structure/sign/med{ - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) "eFF" = ( /obj/structure/chair{ dir = 4 @@ -31896,6 +32355,16 @@ icon_state = "neutralfull" }, /area/atmos) +"eFT" = ( +/obj/structure/chair/sofa/right{ + color = "#85130b"; + dir = 4 + }, +/obj/effect/turf_decal/siding/red{ + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/crew_quarters/bar/atrium) "eFZ" = ( /obj/effect/decal/warning_stripes/northwest, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -31975,6 +32444,23 @@ }, /turf/simulated/floor/grass, /area/maintenance/fore2) +"eGQ" = ( +/obj/structure/bed, +/obj/item/bedsheet/captain{ + name = "NT Representative's bedsheet." + }, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 1; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/carpet/royalblue, +/area/ntrep) "eGS" = ( /obj/structure/window/reinforced{ color = "red"; @@ -32135,11 +32621,14 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "eHH" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -32188,24 +32677,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, +/obj/machinery/station_map/directional/north, /turf/simulated/floor/plasteel/dark, /area/maintenance/starboardaux) -"eHZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/curtain/open{ - color = "#222222"; - anchored = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "rampbottom" - }, -/area/maintenance/banya) "eIe" = ( /obj/structure/lattice, /turf/space, @@ -32285,6 +32759,29 @@ icon_state = "neutralfull" }, /area/crew_quarters/serviceyard) +"eII" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple"; + tag = "icon-whitepurple (NORTH)" + }, +/area/medical/research) +"eIJ" = ( +/obj/item/weldingtool, +/obj/item/weldingtool, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/structure/closet/secure_closet/medical_wall{ + name = "Exile item closet"; + pixel_x = -32; + req_access = list(3) + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/gateway) "eIM" = ( /obj/structure/cable{ icon_state = "0-2" @@ -32335,13 +32832,11 @@ /turf/simulated/floor/carpet/red, /area/security/warden) "eJc" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 +/obj/structure/cable{ + icon_state = "2-8" }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whitepurple"; - tag = "icon-whitepurple (NORTH)" + icon_state = "purplefull" }, /area/toxins/launch) "eJf" = ( @@ -32499,7 +32994,7 @@ dir = 5; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "eKz" = ( /turf/simulated/wall, /area/clownoffice) @@ -32543,12 +33038,6 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/toilet) -"eKM" = ( -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkred" - }, -/area/tcommsat/chamber) "eLa" = ( /obj/structure/flora/ausbushes/ppflowers, /obj/structure/flora/ausbushes/ywflowers, @@ -32630,25 +33119,6 @@ color = "orange" }, /area/crew_quarters/captain/bedroom) -"eLJ" = ( -/obj/structure/table/glass, -/obj/item/folder/blue, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/item/folder/white{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/flashlight/lamp/green{ - pixel_y = 10; - pixel_x = -7 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/carpet/blue, -/area/medical/cmo) "eLK" = ( /obj/structure/table/reinforced, /obj/item/stack/packageWrap, @@ -32722,39 +33192,6 @@ icon_state = "grimy" }, /area/bridge) -"eLS" = ( -/obj/item/reagent_containers/glass/bucket, -/obj/item/reagent_containers/glass/bucket{ - pixel_y = 3; - pixel_x = 3 - }, -/obj/structure/table, -/obj/structure/window/reinforced/polarized, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "blue" - }, -/area/security/permabrig) -"eLY" = ( -/obj/structure/rack, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = -4; - pixel_y = 5 - }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_y = 2; - pixel_x = -1 - }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 2; - pixel_y = -1 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/engineering/hardsuitstorage) "eLZ" = ( /obj/structure/table/wood, /obj/item/storage/fancy/donut_box, @@ -32773,16 +33210,13 @@ name = "Труба дыхательной смеси" }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc{ - dir = 4; - name = "east bump"; - pixel_x = 26 - }, /obj/structure/cable{ icon_state = "0-8" }, -/obj/structure/cable{ - icon_state = "0-8" +/obj/machinery/power/apc/worn_out{ + cell_type = 0; + dir = 4; + pixel_x = 26 }, /turf/simulated/floor/plating, /area/maintenance/atmospherics) @@ -32900,6 +33334,22 @@ icon_state = "yellow" }, /area/engineering/hardsuitstorage) +"eMY" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/hallway/primary/central/second/west) "eNa" = ( /obj/effect/decal/cleanable/blood/old, /obj/effect/decal/cleanable/dirt, @@ -32921,6 +33371,45 @@ icon_state = "green" }, /area/hallway/secondary/exit) +"eNo" = ( +/obj/structure/table/glass, +/obj/item/circuitboard/aicore{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/aicard, +/obj/machinery/door_control{ + id = "rdofficedoor"; + name = "Office Door"; + normaldoorcontrol = 1; + pixel_x = -6; + pixel_y = 27; + req_access = list(30) + }, +/obj/machinery/door_control{ + id = "rdprivacy"; + name = "Privacy Shutters"; + pixel_x = -6; + pixel_y = 36 + }, +/obj/machinery/keycard_auth{ + pixel_x = 6; + pixel_y = 27 + }, +/obj/machinery/door_control{ + id = "Biohazard"; + name = "R&D Lockdown"; + pixel_x = 5; + pixel_y = 36; + req_access = list(30) + }, +/obj/item/paper/monitorkey, +/obj/item/paper/rnd_logs_key{ + pixel_x = 6; + pixel_y = 6 + }, +/turf/simulated/floor/glass/reinforced, +/area/toxins/rdoffice) "eNp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -33007,6 +33496,20 @@ icon_state = "whitebluefull" }, /area/medical/medbay) +"eNY" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/warning_stripes/northeast, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/vending/wallmed{ + pixel_x = 26; + pixel_y = 32 + }, +/turf/simulated/floor/plasteel, +/area/engineering/controlroom) "eNZ" = ( /obj/machinery/suit_storage_unit/engine, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -33118,7 +33621,7 @@ dir = 8; icon_state = "vault" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "eOZ" = ( /obj/machinery/power/tesla_coil, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -33152,20 +33655,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) -"ePt" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_y = 26 - }, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 1 - }, -/area/hallway/primary/fore) "ePu" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, @@ -33280,18 +33769,16 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel, /area/storage/eva) -"eQD" = ( -/obj/machinery/light/small, +"eQx" = ( +/obj/item/reagent_containers/food/snacks/grown/tomato, /turf/simulated/floor/plasteel{ - icon_state = "rampbottom"; - tag = "icon-stage_stairs"; - dir = 4 + icon_state = "tranquillite" }, -/area/maintenance/fsmaint2) +/area/maintenance/trading) "eQG" = ( /obj/machinery/firealarm{ dir = 4; - pixel_x = 28 + pixel_x = 26 }, /turf/simulated/floor/plasteel{ dir = 6; @@ -33347,21 +33834,17 @@ /obj/effect/turf_decal/siding/wood{ dir = 8 }, -/obj/structure/table/wood, +/obj/machinery/arcade/minesweeper{ + freeplay = 1 + }, /turf/simulated/floor/wood, /area/security/permabrig) "eRj" = ( -/obj/machinery/shower{ - dir = 8; - tag = "icon-shower (WEST)" - }, -/obj/item/radio/intercom{ - pixel_x = 32; - pixel_y = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 }, +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/carpet/green, /area/medical/virology) "eRo" = ( /obj/machinery/door/airlock/maintenance{ @@ -33375,6 +33858,19 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/maintenance/asmaint) +"eRr" = ( +/obj/structure/curtain/open/shower/security{ + alpha = 255; + anchored = 1; + name = "backstage" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/crew_quarters/theatre) "eRu" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/vomit, @@ -33421,6 +33917,28 @@ }, /turf/simulated/floor/plating/airless, /area/toxins/test_area) +"eRO" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/machinery/door/window{ + color = "red"; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/clothing/gloves/color/black/ballistic, +/obj/item/clothing/gloves/color/black/ballistic, +/obj/item/clothing/gloves/color/black/ballistic, +/obj/item/clothing/gloves/color/black/ballistic, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "eRX" = ( /turf/simulated/floor/glass, /area/maintenance/fsmaint) @@ -33442,20 +33960,25 @@ icon_state = "dark" }, /area/hallway/primary/command/west) -"eSe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom{ - pixel_x = 28; - pixel_y = -2 - }, -/obj/machinery/light{ - dir = 4 +"eSd" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 }, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkred" + dir = 8; + icon_state = "whiteblue"; + tag = "icon-whiteblue (WEST)" }, -/area/security/interrogation) +/area/medical/biostorage) +"eSe" = ( +/obj/structure/sign/poster/contraband/random{ + pixel_y = -32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint4) "eSn" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -33475,9 +33998,6 @@ pixel_y = 24; req_access = list(66) }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/door/poddoor{ density = 0; icon_state = "open"; @@ -33515,7 +34035,7 @@ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "eSV" = ( /obj/machinery/gateway{ dir = 1 @@ -33606,26 +34126,6 @@ }, /turf/simulated/floor/plasteel, /area/engineering/controlroom) -"eTw" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/disposalpipe/sortjunction{ - name = "CE's Junction"; - sortType = 5; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/engineering/break_room) "eTx" = ( /obj/machinery/computer/teleporter, /turf/simulated/floor/plasteel/white, @@ -33653,6 +34153,36 @@ }, /turf/simulated/floor/plating, /area/security/hos) +"eTJ" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/medical/glass{ + id = "Morgue"; + name = "Morgue"; + req_access = list(5) + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/medical/morgue) +"eTN" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/sofa/left{ + color = "#85130b"; + dir = 4 + }, +/turf/simulated/floor/wood, +/area/maintenance/backstage) "eTU" = ( /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/plasteel{ @@ -33688,6 +34218,17 @@ icon_state = "neutralcorner" }, /area/crew_quarters/locker) +"eUi" = ( +/obj/machinery/computer/card, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "bluefull" + }, +/area/bridge/checkpoint/south) "eUp" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -33761,6 +34302,18 @@ icon_state = "white" }, /area/toxins/lab) +"eUS" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/closet/walllocker/emerglocker/north{ + pixel_x = -32; + pixel_y = 0 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "eVc" = ( /obj/structure/sign/securearea{ desc = "A warning sign which reads 'HIGH VOLTAGE'"; @@ -33846,6 +34399,16 @@ dir = 1 }, /area/hallway/primary/central/second/east) +"eVH" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/toilet3) "eVL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -33854,6 +34417,42 @@ icon_state = "neutralfull" }, /area/hallway/secondary/entry/commercial) +"eVR" = ( +/obj/effect/landmark/start/ai, +/obj/machinery/door_control{ + id = "ailockdown"; + name = "AI Asteroid Lockdown"; + pixel_y = -27; + req_access = list(56) + }, +/obj/machinery/door_control{ + id = "ai1"; + name = "Turret Hallway Shutters Control"; + pixel_x = -5; + pixel_y = -37 + }, +/obj/machinery/door_control{ + id = "ai2"; + name = "Turret AI Satellite Secondary Antechamber"; + pixel_x = 5; + pixel_y = -37 + }, +/obj/item/radio/intercom/custom{ + pixel_x = -28; + pixel_y = -10 + }, +/obj/item/radio/intercom/private{ + pixel_x = 28; + pixel_y = -10 + }, +/obj/item/radio/intercom{ + pixel_x = -28; + pixel_y = 3 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) "eVU" = ( /obj/effect/decal/warning_stripes/yellow, /obj/machinery/navbeacon{ @@ -33886,7 +34485,7 @@ /obj/structure/table/reinforced, /obj/effect/decal/warning_stripes/yellow, /obj/machinery/door/window/westleft{ - dir = 1; + dir = 2; name = "Cargo Bay Desk"; req_access = list(31) }, @@ -34110,13 +34709,6 @@ /obj/effect/decal/warning_stripes/northwest, /turf/simulated/floor/plating, /area/maintenance/auxsolarport) -"eYo" = ( -/obj/effect/decal/warning_stripes/yellow, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 9 - }, -/area/hallway/primary/fore) "eYp" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -34252,17 +34844,6 @@ dir = 5 }, /area/hydroponics) -"eYK" = ( -/obj/structure/grille/broken, -/obj/effect/decal/cleanable/dirt, -/obj/item/shard, -/obj/item/shard{ - icon_state = "medium"; - pixel_x = 1; - pixel_y = -9 - }, -/turf/simulated/floor/plating, -/area/maintenance/backstage) "eYL" = ( /obj/item/paper_bin, /obj/item/pen, @@ -34406,15 +34987,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/engine, /area/engineering/controlroom) -"eZN" = ( -/mob/living/simple_animal/bot/secbot/beepsky{ - name = "Officer Rightsky"; - desc = "It's Officer Rightsky! Powered by a potato and a shot of whiskey." - }, -/turf/simulated/floor/plasteel{ - dir = 1 - }, -/area/quartermaster/lobby) "eZU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ @@ -34532,7 +35104,6 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/hologram/holopad, /obj/effect/decal/warning_stripes/green/hollow, /obj/structure/disposalpipe/junction, /turf/simulated/floor/plasteel{ @@ -34605,8 +35176,8 @@ d2 = 4; icon_state = "0-4" }, -/obj/structure/cable{ - icon_state = "2-4" +/obj/structure/disposalpipe/segment{ + dir = 4 }, /turf/simulated/floor/plating, /area/medical/virology/lab) @@ -34657,7 +35228,7 @@ icon_state = "whitegreen"; tag = "icon-whitegreen (EAST)" }, -/area/medical/virology/lab) +/area/medical/virology) "fbw" = ( /obj/structure/cable{ icon_state = "4-8" @@ -34669,7 +35240,7 @@ dir = 8 }, /obj/structure/disposalpipe/segment{ - dir = 6 + dir = 10 }, /turf/simulated/floor/plasteel{ dir = 1; @@ -34724,9 +35295,6 @@ /turf/simulated/floor/carpet/cyan, /area/security/prison/cell_block/A) "fbU" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/cable{ icon_state = "1-4" }, @@ -34838,6 +35406,24 @@ /obj/effect/decal/cleanable/dust, /turf/simulated/floor/carpet/orange, /area/maintenance/casino) +"fcX" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/obj/structure/sign/poster/random{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple"; + tag = "icon-whitepurple (EAST)" + }, +/area/medical/research/nhallway) "fcZ" = ( /obj/structure/closet, /obj/item/stack/sheet/metal{ @@ -34887,6 +35473,20 @@ icon_state = "stage_bleft" }, /area/maintenance/casino) +"fde" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/radio/intercom{ + name = "south station intercom (General)"; + pixel_y = -28 + }, +/obj/machinery/camera{ + c_tag = "Gravity Generator Area West"; + dir = 8; + network = list("SS13","Engineering") + }, +/turf/simulated/floor/plasteel, +/area/engineering/gravitygenerator) "fdg" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -35044,7 +35644,8 @@ pixel_x = 28 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "fee" = ( @@ -35057,6 +35658,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/effect/decal/cleanable/spiderling_remains, /turf/simulated/floor/plasteel, /area/maintenance/apmaint) "fev" = ( @@ -35101,7 +35703,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "feN" = ( /obj/machinery/computer/arcade/orion_trail, @@ -35139,6 +35741,44 @@ "ffi" = ( /turf/simulated/wall/r_wall, /area/assembly/robotics) +"ffn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch{ + name = "south light switch"; + pixel_x = -25; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/power/apc/worn_out{ + cell_type = 0; + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "stage_bleft" + }, +/area/maintenance/cafeteria) +"fft" = ( +/obj/structure/rack, +/obj/item/extinguisher/mini{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/extinguisher/mini, +/obj/item/extinguisher/mini{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/engineering/hardsuitstorage) "ffw" = ( /turf/simulated/floor/plasteel{ dir = 6; @@ -35283,28 +35923,6 @@ icon_state = "yellow" }, /area/engineering/engine) -"fgq" = ( -/obj/structure/table/glass, -/obj/item/storage/fancy/vials{ - pixel_x = -2; - pixel_y = 15 - }, -/obj/item/storage/box/masks{ - pixel_y = 4; - pixel_x = 4 - }, -/obj/item/storage/box/gloves, -/obj/machinery/door_control{ - id = "viroshutters"; - name = "Privacy Shutters Control"; - pixel_x = 26; - pixel_y = 6 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "whitegreen" - }, -/area/medical/virology/lab) "fgy" = ( /turf/simulated/floor/plasteel{ dir = 2; @@ -35393,14 +36011,12 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "fhc" = ( -/obj/machinery/camera{ - c_tag = "Virology Bedroom 1"; - dir = 8; - network = list("Medical","SS13") - }, -/obj/item/twohanded/required/kirbyplants, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, /turf/simulated/floor/carpet/green, /area/medical/virology) @@ -35480,6 +36096,9 @@ "fhv" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, +/obj/machinery/vending/wallmed{ + pixel_x = -25 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutral" @@ -35493,8 +36112,7 @@ c_tag = "Mining Lobby West" }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "brown" + dir = 1 }, /area/quartermaster/lobby) "fhz" = ( @@ -35537,6 +36155,16 @@ }, /turf/simulated/floor/carpet/black, /area/crew_quarters/bar/atrium) +"fhS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/stool, +/turf/simulated/floor/plating, +/area/maintenance/tourist) "fhT" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ name = "standard air scrubber"; @@ -35662,9 +36290,28 @@ /turf/simulated/floor/shuttle, /area/shuttle/arrival/station) "fjf" = ( -/obj/structure/dresser, -/turf/simulated/floor/carpet/green, -/area/medical/virology) +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "Virology1"; + name = "Virology Shutters" + }, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Biohazard_medi"; + name = "Quarantine Lockdown"; + opacity = 0 + }, +/obj/structure/cable{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/medical/virology/lab) "fjk" = ( /obj/structure/disposalpipe/junction/reversed{ dir = 2 @@ -35726,17 +36373,6 @@ icon_state = "dark" }, /area/bridge/meeting_room) -"fjt" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #4"; - id_tag = "xeno4" - }, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/toxins/xenobiology) "fju" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -35785,18 +36421,29 @@ /obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/plating, /area/maintenance/fsmaint3) -"fjY" = ( -/obj/machinery/light{ - dir = 8 +"fjV" = ( +/obj/machinery/door/window{ + color = "red"; + dir = 1; + name = "Secure Armory"; + req_access = list(1) }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/storage/box/chemimp{ + pixel_x = 4; + pixel_y = 3 }, +/obj/item/storage/box/trackimp, +/obj/item/lock_buster, +/obj/item/storage/lockbox/mindshield, /turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 8 + icon_state = "dark" }, -/area/hallway/primary/fore) +/area/security/securearmory) "fkd" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -35856,11 +36503,13 @@ /area/security/podbay) "fky" = ( /obj/effect/turf_decal/siding/red{ - dir = 4 + dir = 5 }, -/obj/effect/landmark/start/brig_physician, -/obj/structure/cable{ - icon_state = "1-8" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 }, /turf/simulated/floor/carpet/red, /area/security/medbay) @@ -35893,6 +36542,18 @@ icon_state = "red" }, /area/security/processing) +"fkE" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 28 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "cult" + }, +/area/chapel/morgue) "fkI" = ( /obj/machinery/light{ dir = 1; @@ -35905,7 +36566,7 @@ /area/turret_protected/aisat_interior/secondary) "fkL" = ( /obj/machinery/vending/boozeomat, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "fkO" = ( /obj/structure/railing/corner{ @@ -35943,9 +36604,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -35956,6 +36614,9 @@ /obj/effect/turf_decal/siding/white{ dir = 1 }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/simulated/floor/glass, /area/crew_quarters/locker) "flc" = ( @@ -36058,6 +36719,7 @@ pixel_x = -2; pixel_y = 4 }, +/obj/item/storage/belt/medical, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "dark" @@ -36182,18 +36844,6 @@ icon_state = "blue" }, /area/bridge/checkpoint/south) -"fmX" = ( -/obj/machinery/door/airlock/maintenance{ - req_access = list(12); - name = "Cargo maintenance access" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plating, -/area/maintenance/apmaint) "fmZ" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/cable{ @@ -36529,6 +37179,18 @@ icon_state = "whitebluefull" }, /area/medical/surgery/south) +"fps" = ( +/obj/structure/window/reinforced, +/obj/item/flag/nt, +/obj/structure/sign/atmosplaque{ + desc = "Важное Уточнение! Рабочие пожелали оставаться анонимными, поэтому, обойдёмся их прозвищами. За помощь Главному Инженеру Новы в поисках и устранении неисправностей на станции НаноТрейзен. С благодарностью, Aeterna0. Слава НаноТрейзен!"; + name = "Благодарственное Письмо от Главного Инженера станции Нова"; + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) "fpt" = ( /obj/item/radio/intercom{ pixel_x = 28 @@ -36549,17 +37211,13 @@ /turf/simulated/floor/shuttle, /area/shuttle/arrival/station) "fpy" = ( -/obj/structure/cable, -/obj/effect/spawner/window/reinforced, -/obj/structure/curtain/open/shower/security{ - alpha = 255; - icon_state = "closed"; - name = "backstage"; - opacity = 1; - anchored = 1 +/obj/structure/sign/poster/official/obey{ + pixel_x = 32 }, -/turf/simulated/floor/plating, -/area/security/medbay) +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/security/prison/cell_block/A) "fpz" = ( /obj/structure/table/wood, /obj/effect/turf_decal/siding/wood{ @@ -36591,18 +37249,6 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) -"fpU" = ( -/obj/structure/sign/poster/official/random{ - pixel_x = 32 - }, -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 4 - }, -/area/toxins/lab) "fpW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -36614,20 +37260,17 @@ /obj/effect/landmark/event/blobstart, /turf/simulated/floor/wood, /area/maintenance/library) -"fpZ" = ( -/obj/machinery/computer/rdconsole/mechanics, -/obj/item/radio/intercom{ - pixel_y = 22; - pixel_x = 30 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +"fqb" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "yellow" +/obj/structure/table/wood/fancy/red, +/obj/item/candle{ + pixel_x = -9; + pixel_y = 4 }, -/area/engineering/mechanic_workshop) +/turf/simulated/floor/carpet/red, +/area/crew_quarters/theatre) "fqf" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -36694,10 +37337,9 @@ /turf/simulated/floor/plating, /area/maintenance/gambling_den) "fqA" = ( -/obj/machinery/door/airlock/maintenance, -/obj/structure/barricade/wooden, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, -/area/maintenance/apmaint) +/area/maintenance/atmospherics) "fqI" = ( /obj/item/radio/intercom{ pixel_x = -28 @@ -36777,19 +37419,6 @@ }, /turf/simulated/floor/grass, /area/hallway/primary/central/nw) -"fro" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/maintenance{ - req_access = list(18,48,70,71); - name = "Hangar access" - }, -/turf/simulated/floor/plating, -/area/maintenance/maintcentral) "frp" = ( /obj/machinery/alarm{ dir = 4; @@ -36840,14 +37469,36 @@ /obj/structure/reagent_dispensers/watertank, /turf/simulated/floor/wood, /area/maintenance/banya) +"frK" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/door/window/brigdoor{ + dir = 8; + name = "Creature Pen"; + req_access = list(47) + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno2"; + name = "Creature Cell #2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/toxins/xenobiology) "frL" = ( /obj/structure/cable{ - d2 = 4; - icon_state = "0-4" + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/medical/virology) +/obj/machinery/computer/pandemic, +/obj/effect/decal/warning_stripes/northeast, +/turf/simulated/floor/plasteel, +/area/medical/virology/lab) "frO" = ( /obj/structure/cable{ icon_state = "4-8" @@ -36982,16 +37633,13 @@ "fsy" = ( /obj/effect/decal/cleanable/vomit, /obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc{ - name = "south bump"; - pixel_y = -26 +/obj/structure/disposalpipe/segment{ + dir = 4 }, /obj/structure/cable{ + d1 = 4; d2 = 8; - icon_state = "0-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 + icon_state = "4-8" }, /turf/simulated/floor/plating, /area/maintenance/disposal) @@ -37181,6 +37829,24 @@ }, /turf/simulated/floor/plasteel, /area/engineering/engine) +"fuj" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door_control{ + id = "Evidence Storage"; + name = "Evidence Storage Privacy Shutters Control"; + pixel_x = -24; + pixel_y = -24; + req_access = list(63) + }, +/turf/simulated/floor/plasteel{ + dir = 0; + icon_state = "red" + }, +/area/security/processing) "fuk" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/white/line{ @@ -37261,6 +37927,16 @@ /obj/effect/landmark/start/chaplain, /turf/simulated/floor/carpet, /area/chapel/office) +"fve" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/primary/central/ne) "fvl" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -37310,6 +37986,26 @@ dir = 1 }, /area/crew_quarters/courtroom) +"fvu" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "RoboDesk"; + name = "Robotics Privacy Shutter" + }, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Biohazard"; + name = "Quarantine Lockdown"; + opacity = 0 + }, +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/assembly/robotics) "fvD" = ( /obj/machinery/door/airlock/research{ name = "Mech PowerBay"; @@ -37412,6 +38108,13 @@ /obj/machinery/light{ dir = 1 }, +/obj/structure/extinguisher_cabinet{ + name = "west extinguisher cabinet"; + pixel_x = -27 + }, +/obj/machinery/alarm{ + pixel_y = 24 + }, /turf/simulated/floor/plasteel, /area/toxins/launch) "fwg" = ( @@ -37515,6 +38218,20 @@ icon_state = "darkbluecornersalt" }, /area/hallway/primary/command/west) +"fwV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/camera{ + c_tag = "Supermatter South"; + dir = 1; + network = list("SS13","Engineering") + }, +/turf/simulated/floor/redgrid, +/area/engineering/controlroom) "fwW" = ( /obj/structure/bookcase, /obj/item/book/manual/sop_engineering, @@ -37670,6 +38387,18 @@ icon_state = "yellow" }, /area/engineering/break_room) +"fxP" = ( +/obj/machinery/camera{ + c_tag = "Research West Hallway 1"; + dir = 9; + network = list("Research","SS13") + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple"; + tag = "icon-whitepurple (EAST)" + }, +/area/medical/research/nhallway) "fxR" = ( /obj/structure/disposaloutlet{ dir = 4 @@ -37706,6 +38435,17 @@ }, /turf/simulated/floor/plasteel/grimy, /area/crew_quarters/bar) +"fxY" = ( +/obj/effect/decal/warning_stripes/west, +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel, +/area/atmos) "fyh" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -37764,7 +38504,7 @@ }, /area/medical/chemistry) "fyx" = ( -/obj/structure/chair/office, +/obj/structure/chair, /obj/effect/landmark/start/civilian, /obj/item/radio/intercom{ dir = 8; @@ -37841,7 +38581,7 @@ /area/medical/medbay2) "fyU" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /obj/effect/landmark/start/scientist, @@ -37887,6 +38627,7 @@ }, /area/medical/genetics) "fzn" = ( +/obj/structure/flora/ausbushes/ppflowers, /obj/item/storage/bag/plants/portaseeder, /turf/simulated/floor/grass, /area/maintenance/garden) @@ -37944,23 +38685,14 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel{ - icon_state = "darkblue" - }, -/area/chapel/main) -"fzE" = ( -/obj/machinery/door_control{ - id = "xeno5"; - name = "Containment Control"; - req_access = list(55); - pixel_x = 32 +/obj/machinery/light_switch{ + pixel_x = -26; + pixel_y = -26 }, -/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "whitehall" + icon_state = "darkblue" }, -/area/toxins/xenobiology) +/area/chapel/massdriver) "fzG" = ( /turf/simulated/floor/plasteel{ dir = 10; @@ -37997,39 +38729,11 @@ icon_state = "dark" }, /area/security/permahallway) -"fAf" = ( -/obj/structure/table/wood/fancy/blue, -/obj/item/lighter/zippo/hop, -/obj/item/paper/monitorkey{ - pixel_y = 4; - pixel_x = 5 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/item/toy/figure/hop{ - pixel_y = 10; - pixel_x = -8 - }, -/turf/simulated/floor/wood/fancy/light, -/area/crew_quarters/heads/hop) "fAo" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/watertank, /turf/simulated/floor/plating, /area/maintenance/starboard) -"fAs" = ( -/obj/structure/closet/secure_closet, -/obj/item/storage/secure/briefcase, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 28 - }, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 6 - }, -/area/bridge/checkpoint/south) "fAu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -38070,17 +38774,6 @@ icon_state = "dark" }, /area/maintenance/library) -"fAF" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/door/poddoor/preopen{ - name = "Secure Creature Cell"; - id_tag = "xenosecure" - }, -/obj/effect/spawner/window/reinforced/plasma, -/turf/simulated/floor/plating, -/area/toxins/xenobiology) "fAI" = ( /obj/structure/cable{ icon_state = "1-2" @@ -38109,18 +38802,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/engineering) -"fAX" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/chair/stool, -/obj/structure/sign/poster/official/the_owl{ - pixel_y = 0; - pixel_x = 32 - }, -/turf/simulated/floor/plasteel, -/area/maintenance/apmaint) "fAY" = ( /obj/effect/decal/warning_stripes/north, /obj/machinery/status_display{ @@ -38128,6 +38809,37 @@ }, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/commercial) +"fBc" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/storage/box/barrier{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/storage/box/barrier, +/obj/item/grenade/barrier{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/item/grenade/barrier{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/machinery/door/window{ + color = "red"; + name = "Secure Armory"; + req_access = list(1) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "fBf" = ( /obj/machinery/light{ dir = 8 @@ -38186,7 +38898,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /turf/simulated/floor/plasteel{ @@ -38194,6 +38906,15 @@ icon_state = "neutral" }, /area/bridge/checkpoint/south) +"fBr" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "browncorner" + }, +/area/quartermaster/miningstorage) "fBt" = ( /obj/structure/window/plasmareinforced{ dir = 4 @@ -38251,15 +38972,26 @@ icon_state = "green" }, /area/hallway/secondary/exit) +"fCh" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_x = 25 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/crew_quarters/serviceyard) "fCk" = ( /turf/simulated/floor/shuttle, /area/shuttle/arrival/station) "fCq" = ( -/obj/structure/chair/office, /obj/effect/turf_decal/siding/wood{ dir = 4; do_not_delete_me = 1 }, +/obj/structure/chair/office, /turf/simulated/floor/wood/oak, /area/crew_quarters/courtroom) "fCw" = ( @@ -38435,8 +39167,29 @@ icon_state = "white" }, /area/medical/medrest) +"fDJ" = ( +/obj/structure/chair, +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/crew_quarters/courtroom) "fDM" = ( /obj/machinery/light, +/obj/machinery/vending/wallmed{ + layer = 3.3; + name = "Emergency NanoMed"; + pixel_y = -30 + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -38489,7 +39242,7 @@ dir = 4; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "fDY" = ( /turf/simulated/wall, /area/crew_quarters/kitchen) @@ -38636,14 +39389,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/security/permabrig) -"fEJ" = ( -/obj/structure/curtain/open/shower/security{ - alpha = 255; - name = "backstage"; - anchored = 1 - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/crew_quarters/theatre) "fER" = ( /obj/structure/railing{ dir = 1 @@ -38658,17 +39403,6 @@ }, /turf/simulated/floor/glass/reinforced, /area/engineering/controlroom) -"fES" = ( -/obj/effect/turf_decal/number/number_2{ - dir = 1; - pixel_y = -10; - pixel_x = 6 - }, -/obj/effect/turf_decal/arrows/white{ - dir = 8 - }, -/turf/simulated/floor/plasteel, -/area/engineering/controlroom) "fET" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/bed, @@ -38765,6 +39499,7 @@ /area/hallway/secondary/entry/lounge) "fFA" = ( /obj/structure/table/reinforced, +/obj/item/storage/firstaid/adv, /obj/item/reagent_containers/spray/cleaner/medical, /turf/simulated/floor/plasteel{ icon_state = "whitebluefull" @@ -39213,7 +39948,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/structure/disposalpipe/junction/reversed{ +/obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/floor/plasteel{ @@ -39309,6 +40044,19 @@ }, /turf/simulated/floor/redgrid, /area/aisat/aihallway) +"fKo" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/purple, +/obj/structure/curtain/open{ + anchored = 1; + color = "#222222" + }, +/turf/simulated/floor/plasteel{ + dir = 5 + }, +/area/civilian/barber) "fKq" = ( /obj/structure/closet/l3closet/scientist, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -39375,19 +40123,11 @@ /turf/simulated/floor/grass, /area/hydroponics) "fKM" = ( -/obj/effect/spawner/window/reinforced/polarized{ - id = "vir2" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id_tag = "Virology1"; - name = "Virology Shutters" - }, -/obj/structure/cable{ - icon_state = "0-2" +/obj/machinery/atmospherics/unary/tank/air{ + dir = 8 }, /turf/simulated/floor/plating, -/area/medical/virology) +/area/medical/virology/lab) "fKP" = ( /obj/effect/decal/cleanable/flour, /obj/machinery/light/small{ @@ -39513,12 +40253,12 @@ /turf/simulated/floor/plasteel, /area/engineering/controlroom) "fLX" = ( -/obj/machinery/camera{ - c_tag = "Mining Furnace"; - dir = 5 +/obj/machinery/firealarm{ + dir = 8; + name = "west fire alarm"; + pixel_x = -24 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/small{ +/obj/machinery/light{ dir = 8 }, /turf/simulated/floor/plasteel{ @@ -39610,6 +40350,7 @@ dir = 4 }, /obj/machinery/hologram/holopad, +/obj/effect/decal/warning_stripes/blue/hollow, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -39628,15 +40369,6 @@ icon_state = "podfloor" }, /area/maintenance/apmaint) -"fMP" = ( -/obj/structure/chair/sofa/corp/right{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/reception) "fMT" = ( /obj/structure/closet/secure_closet/brig, /turf/simulated/floor/plasteel{ @@ -39685,7 +40417,9 @@ }, /area/security/permabrig) "fNi" = ( -/obj/structure/statue/unknown, +/obj/structure/statue/unknown{ + max_integrity = 500 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -39723,10 +40457,20 @@ pixel_x = 25 }, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whitepurple" + dir = 6; + icon_state = "whitepurple"; + tag = "icon-whitepurple (SOUTHEAST)" }, /area/toxins/mixing) +"fNu" = ( +/obj/machinery/door_control{ + id = "xeno3"; + name = "Containment Control"; + pixel_x = -32; + req_access = list(55) + }, +/turf/simulated/floor/plasteel, +/area/toxins/xenobiology) "fNy" = ( /obj/effect/decal/warning_stripes/northwestcorner, /obj/machinery/portable_atmospherics/canister, @@ -39806,34 +40550,6 @@ }, /turf/simulated/floor/plating, /area/security/interrogation) -"fNY" = ( -/obj/structure/table/reinforced, -/obj/item/folder/yellow, -/obj/item/pen, -/obj/machinery/door/window{ - name = "Atmospherics Desk"; - req_access = list(24) - }, -/obj/machinery/door/window{ - name = "Atmospherics Desk"; - dir = 8 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "Eng_lockdown"; - name = "Engineering Lockdown"; - opacity = 0 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine/monitor) "fOk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -39921,11 +40637,10 @@ }, /area/medical/cryo) "fON" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-dead"; - tag = "plant-dead" - }, /obj/effect/decal/cleanable/dust, +/obj/structure/sign/poster/contraband/revolver{ + pixel_y = 32 + }, /turf/simulated/floor/carpet, /area/maintenance/casino) "fOQ" = ( @@ -39935,17 +40650,6 @@ /obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood, /area/maintenance/casino) -"fOY" = ( -/obj/structure/sign/directions/security{ - pixel_y = 8; - dir = 8 - }, -/obj/structure/sign/directions/medical, -/obj/structure/sign/directions/evac{ - pixel_y = -8 - }, -/turf/simulated/wall, -/area/medical/morgue) "fPd" = ( /obj/effect/turf_decal/siding/wood, /turf/simulated/floor/wood, @@ -39976,6 +40680,7 @@ /obj/structure/sign/poster/contraband/tools{ pixel_y = 32 }, +/obj/item/clothing/gloves/color/yellow, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -40004,17 +40709,6 @@ icon_state = "dark" }, /area/chapel/office) -"fPC" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #5"; - id_tag = "xeno5" - }, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/toxins/xenobiology) "fPJ" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -40027,6 +40721,17 @@ }, /turf/simulated/floor/plating, /area/teleporter) +"fPV" = ( +/obj/machinery/door/airlock/highsecurity{ + heat_proof = 1; + id_tag = "smbolts"; + locked = 1; + name = "Supermatter Chamber"; + req_access = list(10,24) + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/engine, +/area/engineering/supermatter) "fQa" = ( /obj/machinery/atmospherics/pipe/simple/visible, /obj/effect/decal/warning_stripes/east, @@ -40079,12 +40784,12 @@ }, /area/maintenance/medroom) "fQn" = ( -/obj/structure/chair/office{ - dir = 4 - }, /obj/machinery/light{ dir = 8 }, +/obj/structure/chair{ + dir = 4 + }, /turf/simulated/floor/wood, /area/crew_quarters/serviceyard) "fQo" = ( @@ -40154,6 +40859,7 @@ icon_state = "1-8" }, /obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/vomit, /turf/simulated/floor/plating, /area/maintenance/tourist) "fQN" = ( @@ -40193,26 +40899,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) -"fRi" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 8 - }, -/obj/effect/turf_decal/number/number_1{ - dir = 1; - pixel_y = -10; - pixel_x = 5 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "red" - }, -/area/security/processing) "fRk" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -40240,16 +40926,6 @@ icon_state = "darkgrey" }, /area/engineering/mechanic_workshop/hangar) -"fRt" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 8 - }, -/turf/simulated/floor/carpet/royalblack, -/area/crew_quarters/courtroom) "fRv" = ( /obj/structure/chair/comfy/black{ dir = 1 @@ -40379,6 +41055,18 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"fSu" = ( +/obj/structure/table, +/obj/item/hand_tele, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/item/radio/intercom{ + pixel_x = 26; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel/white, +/area/teleporter) "fSw" = ( /obj/structure/cable{ icon_state = "1-8" @@ -40492,12 +41180,6 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/quartermaster/office) -"fTg" = ( -/obj/machinery/cooker/deepfryer, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/crew_quarters/kitchen) "fTi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -40563,6 +41245,14 @@ /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/carpet/royalblue, /area/crew_quarters/captain/bedroom) +"fTL" = ( +/obj/machinery/ai_slipper{ + uses = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) "fTO" = ( /obj/machinery/atmospherics/trinary/mixer{ dir = 8 @@ -40730,6 +41420,11 @@ id = "AI"; pixel_y = -27 }, +/obj/machinery/camera/motion{ + c_tag = "AI Upload Chamber"; + dir = 1; + pixel_x = 10 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -40771,6 +41466,7 @@ /turf/simulated/floor/plasteel, /area/assembly/showroom) "fVo" = ( +/obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood{ icon_state = "wood-broken5"; tag = "icon-wood-broken5" @@ -40894,7 +41590,9 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "fWi" = ( /obj/machinery/light_switch{ @@ -40936,6 +41634,49 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"fWw" = ( +/obj/machinery/power/apc{ + cell_type = 15000; + dir = 4; + name = "Cryo and Arrivals Super APC"; + pixel_x = 24 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/toxins/lab) +"fWC" = ( +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + id_tag = "aisolw_airlock"; + pixel_y = 28; + tag_airpump = "aisolw_pump"; + tag_chamber_sensor = "aisolw_sensor"; + tag_exterior_door = "aisolw_outer"; + tag_interior_door = "aisolw_inner" + }, +/obj/machinery/airlock_sensor{ + id_tag = "aisolw_sensor"; + pixel_y = 35 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1379; + id_tag = "aisolw_pump" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/maintenance/starboardaux) "fWE" = ( /obj/structure/extinguisher_cabinet{ pixel_x = 26 @@ -40960,26 +41701,6 @@ }, /turf/simulated/floor/plasteel, /area/security/permabrig) -"fWP" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 8 - }, -/obj/effect/turf_decal/number/number_1{ - dir = 1; - pixel_y = -10; - pixel_x = 5 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "red" - }, -/area/security/processing) "fWQ" = ( /obj/structure/window/full/reinforced/tinted, /obj/structure/grille, @@ -41034,6 +41755,14 @@ icon_state = "darkbluecorners" }, /area/aisat/aihallway) +"fXx" = ( +/obj/effect/decal/cleanable/dust, +/obj/item/pen{ + pixel_x = -13; + pixel_y = -13 + }, +/turf/simulated/floor/wood, +/area/maintenance/library) "fXy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -41047,18 +41776,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/tourist) -"fXI" = ( -/obj/structure/table/reinforced, -/obj/item/gps, -/obj/item/gps{ - pixel_y = 2; - pixel_x = 2 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkyellow" - }, -/area/engineering/mechanic_workshop/hangar) "fXQ" = ( /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" @@ -41232,18 +41949,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/tourist) -"fYQ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/south, -/obj/machinery/camera{ - c_tag = "Experimentation Lab"; - network = list("Research","SS13"); - dir = 10 - }, -/turf/simulated/floor/engine, -/area/toxins/explab) "fYR" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -41336,6 +42041,9 @@ "fZj" = ( /obj/effect/turf_decal/siding/wood/corner, /obj/effect/decal/cleanable/dust, +/obj/structure/railing/corner{ + dir = 8 + }, /turf/simulated/floor/carpet, /area/maintenance/casino) "fZk" = ( @@ -41381,55 +42089,11 @@ }, /turf/simulated/floor/wood/dark, /area/ntrep) -"fZz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/drip{ - pixel_y = 12; - pixel_x = 6 - }, -/obj/effect/decal/cleanable/blood/drip{ - pixel_x = -11; - pixel_y = 2 - }, -/turf/simulated/floor/plating, -/area/maintenance/maintcentral) -"fZC" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 4 - }, -/obj/machinery/door/window{ - dir = 1; - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/obj/machinery/door/window{ - dir = 2; - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 8 - }, -/obj/item/melee/baton/security/loaded, -/obj/item/melee/baton/security/loaded{ - pixel_x = 2 - }, -/obj/item/melee/baton/security/loaded{ - pixel_x = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark" - }, -/area/security/securearmory) +"fZu" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/flora/ausbushes/ppflowers, +/turf/simulated/floor/grass, +/area/maintenance/garden) "fZG" = ( /obj/structure/sign/poster/official/nanotrasen_logo{ pixel_y = 32 @@ -41450,6 +42114,17 @@ icon_state = "neutral" }, /area/hallway/secondary/entry/lounge) +"fZP" = ( +/obj/structure/chair/sofa/right{ + color = "#85130b"; + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/maintenance/backstage) "fZR" = ( /obj/effect/turf_decal/tile/purple, /obj/effect/turf_decal/tile/purple{ @@ -41462,6 +42137,19 @@ icon_state = "neutralfull" }, /area/civilian/barber) +"fZW" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/vending/wallmed{ + pixel_x = -26; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/processing) "gab" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/carpet/black, @@ -41511,7 +42199,6 @@ /turf/simulated/floor/wood/fancy/cherry, /area/magistrateoffice) "gaj" = ( -/obj/structure/chair/office, /obj/machinery/light{ dir = 4 }, @@ -41519,6 +42206,7 @@ dir = 4; do_not_delete_me = 1 }, +/obj/structure/chair/office, /turf/simulated/floor/wood/oak, /area/crew_quarters/courtroom) "gay" = ( @@ -41557,6 +42245,7 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/machinery/station_map/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "green" @@ -41718,7 +42407,7 @@ }, /area/assembly/chargebay) "gcz" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /obj/structure/sign/poster/contraband/commando{ @@ -41757,7 +42446,6 @@ }, /area/hallway/secondary/exit/maint) "gcH" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -41767,6 +42455,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -41892,8 +42583,7 @@ c_tag = "Mining Lobby East" }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "brown" + dir = 1 }, /area/quartermaster/lobby) "gdP" = ( @@ -41996,14 +42686,11 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "geA" = ( -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/storage/belt/utility, -/obj/effect/decal/warning_stripes/yellow/hollow, /obj/effect/decal/warning_stripes/northeast, +/obj/machinery/computer/roboquest, +/obj/effect/turf_decal/bot_red{ + layer = 1.99 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -42238,7 +42925,7 @@ dir = 6; icon_state = "darkred" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "gfP" = ( /turf/simulated/openspace, /area/quartermaster/delivery) @@ -42263,22 +42950,37 @@ icon_state = "bar" }, /area/maintenance/backstage) +"ggd" = ( +/obj/effect/decal/warning_stripes/west, +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/toxins/mixing) +"ggm" = ( +/obj/structure/sign/chinese, +/turf/simulated/wall, +/area/crew_quarters/mrchangs) "ggn" = ( /turf/simulated/floor/plasteel{ dir = 1 }, /area/hallway/primary/central/north) -"ggp" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/item/storage/box/bodybags/biohazard, -/obj/item/clothing/suit/apron/surgical, -/obj/item/storage/box/bodybags, -/obj/item/storage/belt/medical/surgery/loaded, -/turf/simulated/floor/plasteel{ +"ggo" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/meter, +/obj/machinery/alarm{ dir = 1; - icon_state = "whitebluecorner" + pixel_y = -23 }, -/area/medical/surgery/south) +/obj/effect/decal/warning_stripes/south, +/turf/simulated/floor/plasteel, +/area/engineering/supermatter) "ggs" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -42327,6 +43029,23 @@ icon_state = "dark" }, /area/maintenance/trading) +"ggG" = ( +/obj/structure/sign/vacuum{ + icon_state = "space1"; + pixel_x = -32 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/tourist) "ggK" = ( /obj/structure/table/wood, /obj/structure/window/reinforced, @@ -42436,19 +43155,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel, /area/maintenance/xenozoo) -"ghS" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "vault" - }, -/area/chapel/office) "ghT" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 10 @@ -42498,9 +43204,6 @@ /turf/simulated/floor/carpet/orange, /area/maintenance/casino) "gig" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/structure/cable{ icon_state = "2-4" }, @@ -42510,6 +43213,11 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "red" @@ -42554,24 +43262,8 @@ }, /turf/simulated/floor/plating, /area/maintenance/brig) -"giK" = ( -/obj/machinery/firealarm{ - dir = 1; - name = "south fire alarm"; - pixel_y = -25; - pixel_x = 29 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plasteel{ - icon_state = "purplecorner" - }, -/area/hallway/primary/fore) "giL" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 1 }, /turf/simulated/floor/wood, @@ -42668,6 +43360,29 @@ icon_state = "barber" }, /area/maintenance/medroom) +"gjt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/vomit, +/turf/simulated/floor/plating, +/area/maintenance/tourist) +"gjv" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + id = "Morgue"; + name = "Morgue"; + req_access = list(5) + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/medical/morgue) "gjx" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -42698,7 +43413,7 @@ dir = 9; icon_state = "darkred" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "gjB" = ( /obj/structure/table/reinforced, /obj/item/taperecorder, @@ -42950,6 +43665,12 @@ }, /turf/simulated/floor/glass, /area/crew_quarters/chief) +"gkR" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredcorners" + }, +/area/tcommsat/server) "gkT" = ( /obj/effect/turf_decal/siding/wood{ dir = 8; @@ -43058,16 +43779,11 @@ }, /area/toxins/mixing) "gmd" = ( -/obj/machinery/conveyor{ - id = "mining_internal" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light/small{ +/obj/machinery/light{ dir = 4 }, -/turf/simulated/floor/plating, +/obj/effect/turf_decal/loading_area, +/turf/simulated/floor/plasteel, /area/quartermaster/miningstorage) "gmg" = ( /obj/machinery/vending/cola, @@ -43135,15 +43851,6 @@ /obj/effect/spawner/random_spawners/rodent, /turf/simulated/floor/plating, /area/maintenance/asmaint) -"gmA" = ( -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "brown" - }, -/area/quartermaster/delivery) "gmB" = ( /obj/structure/closet/emcloset, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -43170,17 +43877,6 @@ icon_state = "whitehall" }, /area/toxins/xenobiology) -"gmG" = ( -/obj/machinery/door/firedoor, -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/cryo) "gmI" = ( /obj/structure/cable{ icon_state = "4-8" @@ -43238,28 +43934,6 @@ icon_state = "dark" }, /area/crew_quarters/fitness) -"gmR" = ( -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - frequency = 1379; - id_tag = "ai_pump" - }, -/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - id_tag = "ai_airlock"; - pixel_x = 28; - tag_airpump = "ai_pump"; - tag_chamber_sensor = "ai_sensor"; - tag_exterior_door = "ai_outer"; - tag_interior_door = "ai_inner" - }, -/obj/machinery/airlock_sensor{ - id_tag = "ai_sensor"; - pixel_x = -28 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/aisat/aihallway) "gmW" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -43438,6 +44112,25 @@ /obj/effect/spawner/window/reinforced/plasma, /turf/simulated/floor/plating, /area/engineering/controlroom) +"gon" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/door/window/brigdoor{ + name = "Creature Pen"; + req_access = list(47) + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno6"; + name = "Creature Cell #6" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/toxins/xenobiology) "goy" = ( /obj/effect/decal/warning_stripes/northwestsouth, /obj/machinery/power/emitter{ @@ -43525,20 +44218,10 @@ icon_state = "1-2" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) -"gph" = ( -/obj/structure/curtain/open{ - color = "#222222"; - anchored = 1 - }, -/obj/structure/table/reinforced, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/maintenance/trading) "gpn" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment, @@ -43568,9 +44251,6 @@ /turf/simulated/floor/plasteel, /area/security/permabrig) "gpy" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/structure/cable{ @@ -43580,6 +44260,11 @@ /obj/effect/turf_decal/siding/white{ dir = 1 }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/glass, /area/crew_quarters/locker) "gpI" = ( @@ -43652,7 +44337,7 @@ /obj/structure/railing/corner{ dir = 4 }, -/obj/structure/chair/office, +/obj/structure/chair, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "whitehall" @@ -43741,7 +44426,9 @@ /obj/structure/cable{ icon_state = "2-4" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "gqV" = ( /obj/machinery/gateway{ @@ -43753,23 +44440,6 @@ icon_state = "vault" }, /area/gateway) -"gqZ" = ( -/obj/structure/table, -/obj/item/storage/ashtray/glass{ - pixel_x = 6; - pixel_y = 7 - }, -/obj/item/clothing/mask/cigarette/syndicate{ - pixel_y = 7; - pixel_x = 5 - }, -/obj/item/lighter{ - pixel_y = 2; - pixel_x = -4 - }, -/obj/structure/cable, -/turf/simulated/floor/plating, -/area/maintenance/secpost) "gre" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -43807,6 +44477,17 @@ icon_state = "whitehall" }, /area/maintenance/fsmaint3) +"grl" = ( +/obj/machinery/atmospherics/binary/volume_pump/on{ + desc = "Возвращает газ после обработки в трубу смешивания"; + dir = 1; + name = "Выход газа после обработки" + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) "grt" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/apc{ @@ -43819,17 +44500,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/maintcentral) -"grz" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #2"; - id_tag = "xeno2" - }, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/toxins/xenobiology) "grA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -43873,7 +44543,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "grY" = ( /obj/structure/sign/directions/cargo{ dir = 4 @@ -43928,23 +44598,22 @@ /obj/machinery/embedded_controller/radio/airlock/airlock_controller{ id_tag = "robotics_solar_airlock"; layer = 3.3; - pixel_y = -25; + pixel_y = -30; req_access = list(13); tag_airpump = "robotics_solar_pump"; tag_chamber_sensor = "robotics_solar_sensor"; tag_exterior_door = "robotics_solar_outer"; tag_interior_door = "robotics_solar_inner" }, -/obj/machinery/airlock_sensor{ - id_tag = "robotics_solar_sensor"; - layer = 3.3; - pixel_x = 12; - pixel_y = -25 - }, /obj/effect/decal/warning_stripes/yellow, /obj/machinery/light/small{ dir = 1 }, +/obj/machinery/airlock_sensor{ + id_tag = "robotics_solar_sensor"; + layer = 3.3; + pixel_y = -23 + }, /turf/simulated/floor/plating, /area/maintenance/portsolar) "gsB" = ( @@ -44119,23 +44788,6 @@ icon_state = "red" }, /area/security/range) -"gtM" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/flasher{ - desc = "A floor-mounted flashbulb device."; - id = "permacell1"; - layer = 5; - range = 3; - pixel_x = 24 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/effect/decal/remains/human, -/turf/simulated/floor/plating, -/area/security/permabrig) "gtN" = ( /turf/simulated/floor/carpet/green, /area/security/detectives_office) @@ -44206,6 +44858,32 @@ }, /turf/simulated/floor/plasteel/grimy, /area/crew_quarters/bar) +"guq" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + id_tag = "engineering_west_airlock"; + pixel_x = 25; + pixel_y = -4; + req_access = list(10,13); + tag_airpump = "engineering_west_pump"; + tag_chamber_sensor = "engineering_west_sensor"; + tag_exterior_door = "engineering_west_outer"; + tag_interior_door = "engineering_west_inner" + }, +/obj/machinery/airlock_sensor{ + id_tag = "engineering_west_sensor"; + pixel_x = 25; + pixel_y = 3 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "podfloor" + }, +/area/engineering/engine) "guy" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -44229,20 +44907,17 @@ icon_state = "neutralcorner" }, /area/crew_quarters/locker) -"guH" = ( -/obj/machinery/door/window/northleft{ - name = "Cafe"; - dir = 2 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dust, -/turf/simulated/floor/wood, -/area/maintenance/fsmaint) "guJ" = ( /obj/structure/closet/firecloset, /obj/effect/decal/warning_stripes/red, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/additional) +"guO" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/security/prison/cell_block/A) "guT" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -44315,11 +44990,51 @@ }, /turf/simulated/floor/carpet, /area/library) +"gvo" = ( +/obj/structure/table/reinforced, +/obj/item/stamp/hos{ + pixel_x = -7; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/drinks/bottle/whiskey{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/simulated/floor/carpet/red, +/area/security/hos) +"gvp" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "Kitchen Dinner Windows"; + name = "Kitchen Shutters" + }, +/obj/machinery/door/window/westright{ + dir = 2; + name = "Kitchen"; + req_access = list(28) + }, +/obj/item/kitchen/utensil/fork{ + pixel_x = -2 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/crew_quarters/kitchen) "gvz" = ( /obj/structure/flora/ausbushes/ywflowers/hell, /obj/structure/flora/ausbushes/hell, /turf/simulated/floor/grass, /area/hydroponics) +"gvD" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/primary/central/second/south) "gvF" = ( /obj/structure/cable{ icon_state = "1-2" @@ -44332,28 +45047,6 @@ }, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/heads/hop) -"gvG" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/sortjunction{ - name = "Atmospherics Junction"; - sortType = 6; - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/engineering/break_room) "gvK" = ( /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -44365,11 +45058,11 @@ /turf/simulated/floor/plating, /area/security/customs) "gvO" = ( -/obj/structure/sign/nosmoking_2{ - pixel_y = 32 - }, /obj/structure/dispenser, /obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/firealarm{ + pixel_y = 27 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple"; @@ -44454,6 +45147,19 @@ }, /turf/simulated/floor/plating, /area/maintenance/secpost) +"gwn" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/hallway/spacebridge/somsec) "gwq" = ( /obj/machinery/atmospherics/pipe/simple/visible/green{ desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; @@ -44566,8 +45272,8 @@ /area/crew_quarters/chief) "gxr" = ( /obj/effect/decal/warning_stripes/northwest, -/obj/machinery/light{ - dir = 8 +/obj/structure/closet/sechammercabinet{ + pixel_x = -30 }, /turf/simulated/floor/plasteel{ dir = 9; @@ -44575,20 +45281,23 @@ }, /area/security/securearmory) "gxv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 +/obj/machinery/camera{ + c_tag = "Virology Bedroom 1"; + dir = 5; + network = list("Medical","SS13"); + pixel_y = 9 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 }, /obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" + icon_state = "2-4" }, -/obj/item/radio/intercom{ - pixel_x = 28; - pixel_y = 26 +/obj/machinery/vending/wallmed{ + pixel_x = -26 }, /turf/simulated/floor/carpet/green, /area/medical/virology) @@ -44625,6 +45334,26 @@ dir = 1 }, /area/hallway/primary/central/second/west) +"gxM" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/door/window/brigdoor{ + dir = 2; + name = "Creature Pen"; + req_access = list(47) + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xenosecure"; + name = "Secure Creature Cell" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/toxins/xenobiology) "gxN" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -44642,8 +45371,9 @@ /area/maintenance/fore) "gxY" = ( /obj/structure/window/reinforced, -/obj/structure/statue/gold/hop{ - pixel_y = 7 +/obj/structure/statue/gold/tajaran{ + desc = "Перед собою вы наблюдаете статую таяры, которая держит в руках чертежи станции очень похожие на станцию Нова. Надпись на табличке - Один из двух главных инженеров союза Таяр и Унати, по прозвищу Daeberdir, принимавших участие в разработке передовой научно-исследовательской станции НаноТрейзен - Nova."; + name = "Л.А.Р" }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -44838,17 +45568,6 @@ icon_state = "yellow" }, /area/engineering/engine) -"gzU" = ( -/obj/structure/closet/radiation, -/obj/machinery/camera{ - c_tag = "Medbay GenCells"; - network = list("Medical","SS13"); - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whitepurple" - }, -/area/medical/genetics) "gzW" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/cobweb_left_frequent, @@ -44857,12 +45576,10 @@ }, /area/maintenance/trading) "gAb" = ( -/obj/structure/disposaloutlet{ - dir = 8 - }, -/obj/structure/disposalpipe/trunk, -/turf/simulated/floor/plating/airless, -/area/space) +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/remains/human, +/turf/simulated/floor/plating, +/area/maintenance/asmaint4) "gAe" = ( /obj/structure/cable{ icon_state = "4-8" @@ -44928,6 +45645,20 @@ icon_state = "tranquillite" }, /area/crew_quarters/kitchen) +"gAS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/fancy/cigarettes/cigpack_robust, +/turf/simulated/floor/plating, +/area/maintenance/tourist) "gAY" = ( /obj/structure/spacepoddoor{ dir = 4; @@ -44951,24 +45682,14 @@ }, /area/crew_quarters/theatre) "gBh" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/machinery/status_display{ - pixel_x = -32 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1; - in_use = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/wrench, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 6 }, -/area/medical/virology) +/turf/simulated/floor/plating, +/area/medical/virology/lab) "gBD" = ( /obj/structure/table/wood, /obj/item/kitchen/utensil/fork, @@ -44992,6 +45713,22 @@ icon_state = "darkred" }, /area/turret_protected/aisat) +"gBJ" = ( +/obj/effect/decal/warning_stripes/yellow/partial, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -26; + pixel_y = 28 + }, +/obj/effect/landmark/join_late_cyborg, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/assembly/showroom) "gBM" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -45014,6 +45751,32 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/fsmaint3) +"gCm" = ( +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/door/poddoor/shutters{ + density = 0; + dir = 2; + icon_state = "open"; + id_tag = "rdprivacy"; + name = "Research Director Office Shutters"; + opacity = 0 + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/toxins/rdoffice) +"gCv" = ( +/obj/machinery/station_map/directional/east, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/hallway/primary/central/second/west) "gCw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -45127,6 +45890,35 @@ icon_state = "dark" }, /area/storage/eva) +"gDb" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/firealarm{ + pixel_x = 4; + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue"; + tag = "icon-whiteblue" + }, +/area/medical/medrest) +"gDh" = ( +/obj/structure/table/glass, +/obj/structure/sign/nosmoking_1{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1; + in_use = 1 + }, +/obj/item/reagent_containers/iv_bag, +/obj/item/reagent_containers/iv_bag{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/surgery/north) "gDm" = ( /obj/effect/decal/warning_stripes/west, /obj/machinery/alarm{ @@ -45149,6 +45941,7 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "redcorner" @@ -45165,9 +45958,6 @@ icon_state = "1-2" }, /obj/effect/turf_decal/caution/stand_clear, -/obj/structure/cable{ - icon_state = "2-4" - }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -45178,7 +45968,7 @@ dir = 6; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "gDC" = ( /obj/structure/cable{ icon_state = "4-8" @@ -45257,37 +46047,6 @@ icon_state = "whitehall" }, /area/maintenance/fsmaint3) -"gEx" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/machinery/door/window{ - dir = 8; - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/obj/item/clothing/suit/armor/riot, -/obj/item/shield/riot, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/head/helmet/riot, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 1 - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "gEz" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel{ @@ -45317,14 +46076,7 @@ /area/bridge/meeting_room) "gEI" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small{ - dir = 4; - tag = "icon-bulb1 (EAST)" - }, -/obj/structure/sign/poster/contraband/random{ - pixel_y = 32 - }, -/obj/effect/spawner/random_spawners/cobweb_right_rare, +/obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) "gEO" = ( @@ -45345,7 +46097,7 @@ icon_state = "1-4" }, /turf/simulated/floor/plasteel{ - icon_state = "red" + dir = 1 }, /area/security/seceqstorage) "gFc" = ( @@ -45371,6 +46123,13 @@ icon_state = "whitebluefull" }, /area/medical/medbay) +"gFm" = ( +/obj/machinery/flasher/portable, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "gFt" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -45382,7 +46141,7 @@ }, /obj/structure/cable, /turf/simulated/floor/plasteel{ - dir = 1 + icon_state = "red" }, /area/security/lobby) "gFE" = ( @@ -45476,11 +46235,12 @@ dir = 8; pixel_x = 25 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "whitegreen" @@ -45580,7 +46340,9 @@ /obj/structure/cable{ icon_state = "2-8" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "gGH" = ( /obj/effect/decal/warning_stripes/yellow/hollow, @@ -45828,6 +46590,38 @@ icon_state = "blue" }, /area/hallway/primary/central/north) +"gIa" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/shield/riot{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/shield/riot, +/obj/item/shield/riot{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/shield/riot{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/machinery/door/window{ + color = "red"; + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "gIb" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -45898,21 +46692,6 @@ icon_state = "neutralfull" }, /area/hallway/secondary/entry/additional) -"gIB" = ( -/obj/machinery/optable, -/obj/machinery/shower{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/machinery/defibrillator_mount/loaded{ - pixel_y = 26; - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkblue" - }, -/area/security/medbay) "gIM" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ desc = "Труба хранит в себе набор газов для смешивания"; @@ -45944,6 +46723,13 @@ icon_state = "tranquillite" }, /area/crew_quarters/kitchen) +"gIP" = ( +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/hallway/primary/central/sw) "gIS" = ( /obj/structure/chair/comfy/red, /obj/effect/turf_decal/siding/wood{ @@ -46193,6 +46979,7 @@ dir = 9 }, /turf/simulated/floor/plasteel{ + dir = 6; icon_state = "darkred" }, /area/turret_protected/ai) @@ -46304,39 +47091,9 @@ /turf/simulated/floor/plating, /area/medical/virology/lab) "gLO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/button/windowtint{ - id = "vir2"; - pixel_x = -24; - pixel_y = 24 - }, -/obj/machinery/light_switch{ - pixel_x = -32; - pixel_y = 24 - }, -/turf/simulated/floor/carpet/green, +/obj/structure/sign/biohazard, +/turf/simulated/wall/r_wall, /area/medical/virology) -"gLP" = ( -/obj/machinery/vending/wallmed{ - name = "Emergency NanoMed"; - pixel_y = 0; - pixel_x = -26 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkbluealt" - }, -/area/hallway/primary/central/second/north) "gLW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -46352,13 +47109,16 @@ /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/commercial) "gMD" = ( -/obj/machinery/conveyor{ - id = "mining_internal" +/obj/structure/extinguisher_cabinet{ + pixel_x = 26 }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "brown" }, -/turf/simulated/floor/plating, /area/quartermaster/miningstorage) "gMK" = ( /obj/machinery/door/airlock/command{ @@ -46483,6 +47243,20 @@ icon_state = "neutral" }, /area/crew_quarters/serviceyard) +"gND" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/quartermaster/lobby) "gNJ" = ( /turf/simulated/floor/plasteel{ dir = 6; @@ -46558,6 +47332,26 @@ }, /turf/simulated/floor/plating, /area/security/prisonlockers) +"gOq" = ( +/obj/machinery/door/window/brigdoor{ + color = "red"; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/blood/tracks, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/maintenance/gambling_den) "gOy" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -46566,7 +47360,8 @@ /area/bridge/meeting_room) "gOD" = ( /obj/structure/stairs{ - dir = 1 + dir = 1; + layer = 2 }, /obj/structure/railing{ dir = 8 @@ -46666,21 +47461,29 @@ icon_state = "white" }, /area/medical/sleeper) -"gPz" = ( -/obj/structure/disposalpipe/segment, +"gPq" = ( +/obj/effect/spawner/window/reinforced/polarized{ + id = "blueshieldofficewindows" + }, +/obj/machinery/door/poddoor/shutters{ + density = 0; + dir = 1; + icon_state = "open"; + id_tag = "blueshield"; + name = "Privacy Shutters"; + opacity = 0 + }, /obj/structure/cable{ - icon_state = "0-8" + icon_state = "0-2" }, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "2-4" }, -/obj/machinery/door/poddoor/preopen{ - name = "Secure Creature Cell"; - id_tag = "xenosecure" +/obj/structure/cable{ + icon_state = "2-8" }, -/obj/effect/spawner/window/reinforced/plasma, /turf/simulated/floor/plating, -/area/toxins/xenobiology) +/area/blueshield) "gPH" = ( /obj/effect/decal/warning_stripes/east, /obj/machinery/alarm{ @@ -46729,7 +47532,8 @@ /area/engineering/mechanic_workshop/hangar) "gPX" = ( /obj/structure/stairs{ - dir = 8 + dir = 8; + layer = 2 }, /turf/simulated/floor/plasteel, /area/engineering/controlroom) @@ -46818,17 +47622,6 @@ icon_state = "neutral" }, /area/hallway/spacebridge/comcar) -"gRo" = ( -/obj/effect/turf_decal/siding/red, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/newscaster/security_unit{ - pixel_y = -30; - pixel_x = -32 - }, -/turf/simulated/floor/carpet/red, -/area/security/hos) "gRs" = ( /obj/machinery/disposal, /obj/machinery/alarm{ @@ -46903,16 +47696,6 @@ /obj/structure/lattice/catwalk, /turf/space/openspace, /area/solar/auxport) -"gRO" = ( -/obj/structure/chair/sofa/right{ - dir = 8; - color = "#85130b" - }, -/obj/effect/turf_decal/siding/red{ - dir = 5 - }, -/turf/simulated/floor/carpet/black, -/area/crew_quarters/bar/atrium) "gRW" = ( /obj/machinery/door/airlock/public/glass{ name = "Casino" @@ -47027,24 +47810,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/starboard) -"gSO" = ( -/obj/structure/plasticflaps, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "Brig_lockdown"; - name = "Cargo Lockdown"; - opacity = 0 - }, -/obj/machinery/conveyor{ - id = "packageExternal"; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark" - }, -/area/quartermaster/delivery) "gST" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/structure/rack, @@ -47072,6 +47837,9 @@ /area/medical/research/nhallway) "gSZ" = ( /obj/item/twohanded/required/kirbyplants, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "red" @@ -47097,7 +47865,16 @@ }, /area/crew_quarters/fitness) "gTr" = ( -/obj/structure/reagent_dispensers/fueltank, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 4 + }, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) "gTu" = ( @@ -47119,15 +47896,20 @@ /area/maintenance/fpmaint) "gTN" = ( /obj/item/twohanded/required/kirbyplants, -/obj/structure/curtain/open/shower/security{ - alpha = 255; - name = "backstage"; - anchored = 1; - pixel_y = 32 - }, /obj/effect/decal/cleanable/glass, /turf/simulated/floor/carpet/red, /area/maintenance/backstage) +"gTU" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 28; + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/tcommsat/server) "gTY" = ( /obj/machinery/photocopier, /turf/simulated/floor/wood, @@ -47194,7 +47976,9 @@ color = "#dd1010" }, /obj/structure/cable, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "gUA" = ( /obj/effect/turf_decal/stripes/gold{ @@ -47305,7 +48089,7 @@ /area/bridge) "gVD" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /turf/simulated/floor/plating, @@ -47518,7 +48302,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/structure/table/wood, +/obj/machinery/computer/arcade, /turf/simulated/floor/wood, /area/security/permabrig) "gWD" = ( @@ -47640,6 +48424,17 @@ icon_state = "bar" }, /area/security/permabrig) +"gXm" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno1"; + name = "Creature Cell #1" + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) "gXr" = ( /obj/machinery/portable_atmospherics/canister/toxins, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -47687,19 +48482,6 @@ icon_state = "purplefull" }, /area/toxins/lab) -"gXC" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, -/obj/item/lighter/zippo/ce{ - pixel_y = 2; - pixel_x = 4 - }, -/obj/effect/turf_decal/siding/white{ - dir = 5 - }, -/turf/simulated/floor/glass, -/area/crew_quarters/chief) "gXH" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -47781,16 +48563,6 @@ icon_state = "purplefull" }, /area/teleporter/abandoned) -"gYb" = ( -/obj/structure/flora/ausbushes/grassybush, -/obj/machinery/camera{ - c_tag = "Xenobio Central-South"; - network = list("Research","SS13"); - pixel_x = -1; - dir = 6 - }, -/turf/simulated/floor/grass, -/area/toxins/xenobiology) "gYf" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -47813,6 +48585,15 @@ dir = 5 }, /area/hydroponics) +"gYk" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) "gYl" = ( /turf/simulated/floor/plasteel{ icon_state = "white" @@ -47827,6 +48608,15 @@ icon_state = "dark" }, /area/maintenance/trading) +"gYr" = ( +/obj/effect/turf_decal/number/number_1{ + dir = 1 + }, +/obj/effect/turf_decal/arrows/white, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/hallway/primary/central/second/west) "gYu" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -47850,16 +48640,15 @@ /turf/simulated/floor/plating/airless, /area/space) "gYE" = ( -/obj/machinery/ai_slipper{ - uses = 10 - }, /obj/machinery/turretid/lethal{ check_synth = 1; name = "AI Chamber Turret Control"; pixel_y = 28; req_access = list(75) }, -/turf/simulated/floor/greengrid, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, /area/turret_protected/ai) "gYJ" = ( /obj/structure/cable/yellow{ @@ -47897,32 +48686,6 @@ icon_state = "dark" }, /area/hallway/primary/command/west) -"gYL" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/circuitboard/med_data{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/clonescanner, -/obj/item/circuitboard/scan_consolenew, -/obj/item/circuitboard/cryo_tube{ - pixel_x = 3 - }, -/obj/machinery/alarm{ - pixel_x = -24; - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "caution" - }, -/area/storage/tech) "gYR" = ( /obj/structure/cable{ icon_state = "4-8" @@ -48133,7 +48896,8 @@ dir = 8 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "hah" = ( @@ -48266,7 +49030,8 @@ icon_state = "0-8" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "hbl" = ( @@ -48295,7 +49060,11 @@ /turf/simulated/floor/glass/reinforced, /area/hallway/secondary/exit) "hbx" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/stripes/line, /turf/simulated/floor/plasteel, /area/quartermaster/sorting) "hbz" = ( @@ -48464,16 +49233,6 @@ icon_state = "dark" }, /area/atmos) -"hcF" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 4 - }, -/turf/simulated/floor/plasteel/dark, -/area/maintenance/starboardaux) "hcM" = ( /obj/machinery/disposal, /obj/effect/decal/warning_stripes/yellow, @@ -48509,22 +49268,6 @@ /obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood, /area/maintenance/livingcomplex) -"hde" = ( -/obj/effect/turf_decal/caution{ - dir = 1 - }, -/obj/machinery/door_control{ - desc = "A remote control-switch to lock down the prison wing's blast doors"; - id = "Prison Gate"; - name = "PermaBrig Lockdown"; - pixel_y = -25; - req_access = list(2); - pixel_x = 26 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkredcorners" - }, -/area/security/permahallway) "hdj" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -48566,7 +49309,9 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "hdt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -48640,23 +49385,6 @@ icon_state = "neutralfull" }, /area/crew_quarters/serviceyard) -"hdT" = ( -/obj/structure/noticeboard{ - pixel_y = 30 - }, -/obj/item/paper_bin{ - pixel_y = 6 - }, -/obj/structure/table/wood, -/obj/item/pen/fancy{ - pixel_y = 3 - }, -/obj/item/reagent_containers/food/drinks/mug/hop{ - pixel_y = -11; - pixel_x = 10 - }, -/turf/simulated/floor/carpet, -/area/crew_quarters/heads/hop) "hdV" = ( /obj/effect/decal/warning_stripes/west{ icon = 'icons/turf/floors.dmi'; @@ -48692,32 +49420,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) -"hei" = ( -/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - id_tag = "aisole_airlock"; - tag_airpump = "aisole_pump"; - tag_chamber_sensor = "aisole_sensor"; - tag_exterior_door = "aisole_outer"; - tag_interior_door = "aisole_inner"; - pixel_y = 28 - }, -/obj/machinery/airlock_sensor{ - id_tag = "aisole_sensor"; - pixel_y = -28 - }, -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - frequency = 1379; - id_tag = "aisole_pump"; - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/maintenance/starboardaux) "heo" = ( /obj/structure/closet/secure_closet/freezer/fridge/open, /obj/effect/decal/cleanable/dirt, @@ -48742,7 +49444,7 @@ icon_state = "2-8" }, /turf/simulated/floor/plasteel, -/area/engineering/engine) +/area/engineering/break_room) "hes" = ( /turf/simulated/floor/plasteel{ icon_state = "whitebluefull" @@ -48823,6 +49525,9 @@ /area/security/brig) "hfj" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/chair/sofa/pew/left{ + dir = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "chapel" }, @@ -48842,22 +49547,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/apmaint) -"hfq" = ( -/obj/structure/sign/poster/official/cleanliness{ - pixel_x = -32 - }, -/obj/machinery/door/firedoor, -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/camera{ - c_tag = "Medbay Main Hall North"; - dir = 4; - network = list("Medical","SS13") - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay2) "hft" = ( /obj/structure/sink{ dir = 8; @@ -48993,6 +49682,17 @@ /obj/structure/reagent_dispensers/watertank, /turf/simulated/floor/plating, /area/maintenance/ai) +"hgf" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno4"; + name = "Creature Cell #4" + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) "hgi" = ( /obj/machinery/porta_turret{ dir = 8; @@ -49145,12 +49845,9 @@ /area/maintenance/apmaint) "hho" = ( /obj/effect/decal/warning_stripes/southwest, -/obj/machinery/light{ - dir = 8 - }, /obj/machinery/firealarm{ dir = 4; - pixel_x = -28 + pixel_x = -26 }, /turf/simulated/floor/plasteel{ dir = 10; @@ -49183,6 +49880,12 @@ icon_state = "neutral" }, /area/crew_quarters/serviceyard) +"hhB" = ( +/obj/structure/sign/directions/floor/alt{ + dir = 6 + }, +/turf/simulated/wall, +/area/crew_quarters/theatre) "hhF" = ( /obj/structure/chair/sofa/pew/left{ dir = 1 @@ -49210,21 +49913,11 @@ }, /area/quartermaster/office) "hic" = ( -/obj/structure/chair/office{ - dir = 8 - }, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/serviceyard) "him" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 8 - }, /turf/simulated/floor/plasteel{ - icon_state = "white" + icon_state = "whitepurple" }, /area/toxins/mixing) "hio" = ( @@ -49246,7 +49939,9 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants, +/obj/item/twohanded/required/kirbyplants{ + layer = 3.1 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -49357,18 +50052,6 @@ /obj/structure/grille/broken, /turf/simulated/floor/plating, /area/maintenance/engineering) -"hjr" = ( -/obj/machinery/power/apc{ - pixel_x = 28; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "cult" - }, -/area/chapel/office) "hjv" = ( /obj/effect/decal/warning_stripes/north, /turf/simulated/floor/plasteel{ @@ -49595,9 +50278,26 @@ pixel_x = 24 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) +"hla" = ( +/obj/structure/chair/comfy/teal{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = -32 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/landmark/start/intern, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medrest) "hlb" = ( /obj/machinery/hydroponics/soil, /obj/item/seeds/tea, @@ -49619,17 +50319,17 @@ /turf/simulated/floor/plasteel/white, /area/teleporter) "hlh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" +/obj/structure/table/reinforced, +/obj/item/flashlight/lamp{ + layer = 4; + pixel_x = 7; + pixel_y = 12 }, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/item/radio/intercom/department/security, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/turf/simulated/floor/plating, -/area/maintenance/asmaint4) +/area/security/interrogation) "hlo" = ( /obj/effect/decal/warning_stripes/east, /turf/simulated/floor/plasteel{ @@ -49673,6 +50373,19 @@ icon_state = "blue" }, /area/hydroponics) +"hlC" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 4 + }, +/obj/effect/turf_decal/number/number_2{ + dir = 1; + pixel_x = -6; + pixel_y = -10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/permahallway) "hlF" = ( /obj/structure/cable{ icon_state = "4-8" @@ -49781,22 +50494,16 @@ }, /area/crew_quarters/theatre) "hmj" = ( -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/machinery/flasher/portable, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/machinery/light, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random_spawners/blood_5, +/turf/simulated/floor/plating, +/area/maintenance/tourist) "hmk" = ( /obj/effect/decal/warning_stripes/northeastsouth, -/obj/vehicle/ridden/ambulance{ +/obj/machinery/light{ dir = 4 }, -/obj/machinery/light{ +/obj/vehicle/ridden/ambulance{ dir = 4 }, /turf/simulated/floor/plasteel{ @@ -50002,6 +50709,17 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel/freezer, /area/crew_quarters/toilet2) +"hoj" = ( +/obj/machinery/camera{ + c_tag = "Medbay Main Hall South"; + dir = 4; + network = list("Medical","SS13") + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) "hol" = ( /obj/machinery/atmospherics/unary/outlet_injector/on, /obj/effect/decal/cleanable/dirt, @@ -50009,32 +50727,6 @@ icon_state = "blue" }, /area/security/permabrig) -"hor" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - id_tag = "engineering_west_airlock"; - pixel_y = -4; - req_access = list(10,13); - tag_airpump = "engineering_west_pump"; - tag_chamber_sensor = "engineering_west_sensor"; - tag_exterior_door = "engineering_west_outer"; - tag_interior_door = "engineering_west_inner"; - pixel_x = 25 - }, -/obj/machinery/airlock_sensor{ - id_tag = "engineering_west_sensor"; - pixel_y = 7; - pixel_x = 25 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "podfloor" - }, -/area/engineering/engine) "hov" = ( /obj/machinery/disposal, /obj/effect/decal/warning_stripes/red, @@ -50046,10 +50738,10 @@ }, /area/medical/virology/lab) "how" = ( -/obj/effect/spawner/window/reinforced, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/railing/corner{ + dir = 1 }, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/asmaint4) "hoC" = ( @@ -50065,20 +50757,6 @@ /obj/structure/closet/firecloset, /turf/simulated/floor/plating, /area/maintenance/secpost) -"hoR" = ( -/obj/structure/sign/directions/evac{ - pixel_y = -8; - dir = 1 - }, -/obj/structure/sign/directions/security{ - dir = 8 - }, -/obj/structure/sign/directions/science{ - dir = 8; - pixel_y = 8 - }, -/turf/simulated/wall, -/area/crew_quarters/serviceyard) "hoS" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor{ @@ -50101,19 +50779,6 @@ }, /turf/simulated/floor/wood, /area/library) -"hpi" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/window/brigdoor/southright{ - req_access = list(17,75); - dir = 8 - }, -/obj/structure/fans/tiny, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/aisat/aihallway) "hpj" = ( /obj/machinery/door/poddoor{ id_tag = "ToxinsVenting"; @@ -50163,6 +50828,16 @@ icon_state = "neutralcorner" }, /area/crew_quarters/fitness) +"hpC" = ( +/obj/structure/sign/directions/floor/alt{ + dir = 6; + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "red" + }, +/area/hallway/primary/central/second/west) "hpH" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -50183,13 +50858,13 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=A17"; location = "A16" }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -50328,7 +51003,9 @@ codes_txt = "patrol;next_patrol=C3"; location = "C2" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "hrn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -50559,6 +51236,9 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, +/obj/structure/chair/sofa/pew/right{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "chapel" @@ -50602,6 +51282,7 @@ pixel_y = -32 }, /obj/structure/grille/broken, +/obj/effect/spawner/random_spawners/blood_5, /turf/simulated/floor/carpet/royalblack, /area/maintenance/fsmaint2) "htF" = ( @@ -50638,16 +51319,6 @@ icon_state = "vault" }, /area/engineering/gravitygenerator) -"htU" = ( -/obj/machinery/conveyor/inverted{ - id = "QMLoad2"; - dir = 10 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "brown" - }, -/area/quartermaster/delivery) "htW" = ( /obj/machinery/computer/rdconsole/robotics, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -50680,7 +51351,7 @@ dir = 1 }, /turf/simulated/floor/plasteel{ - dir = 9; + dir = 1; icon_state = "brown" }, /area/quartermaster/lobby) @@ -50774,10 +51445,12 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "huy" = ( -/obj/structure/chair/office, +/obj/structure/chair, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -50825,7 +51498,7 @@ dir = 5; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "hva" = ( /obj/item/chair/wood/wings, /obj/effect/decal/remains/human, @@ -50843,8 +51516,7 @@ }, /area/crew_quarters/locker) "hvj" = ( -/obj/structure/table, -/obj/item/soap, +/obj/structure/closet/wardrobe/xenos, /turf/simulated/floor/plasteel{ icon_state = "barber" }, @@ -50941,7 +51613,8 @@ /area/toxins/rdoffice) "hwg" = ( /obj/structure/stairs{ - dir = 8 + dir = 8; + layer = 2 }, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) @@ -50983,12 +51656,12 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "red" @@ -51020,6 +51693,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "red" @@ -51094,7 +51770,7 @@ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "hxl" = ( /obj/effect/decal/cleanable/dust, /turf/simulated/floor/carpet/orange, @@ -51148,6 +51824,22 @@ icon_state = "neutral" }, /area/hallway/spacebridge/comcar) +"hxM" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating/airless, +/area/toxins/test_area) +"hxR" = ( +/obj/machinery/atmospherics/meter, +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 1; + name = "Труба смешивания" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) "hya" = ( /turf/simulated/floor/plasteel{ dir = 9; @@ -51164,15 +51856,6 @@ dir = 9 }, /area/hallway/secondary/exit) -"hys" = ( -/obj/machinery/door_control{ - id = "xeno3"; - name = "Containment Control"; - req_access = list(55); - pixel_x = -32 - }, -/turf/simulated/floor/plasteel, -/area/toxins/xenobiology) "hyu" = ( /obj/structure/closet/l3closet/janitor, /obj/structure/sign/poster/random{ @@ -51224,12 +51907,15 @@ /turf/simulated/floor/carpet/cyan, /area/maintenance/livingcomplex) "hzd" = ( -/obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/light{ + dir = 4 + }, /turf/simulated/floor/plasteel{ - dir = 6; + dir = 4; icon_state = "brown" }, /area/quartermaster/miningstorage) @@ -51291,23 +51977,6 @@ }, /turf/simulated/floor/plasteel, /area/engineering/engine) -"hzT" = ( -/obj/effect/turf_decal/siding/red{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Head of Security's Desk"; - departmentType = 5; - name = "Head of Security Requests Console"; - pixel_y = 30; - pixel_x = -32 - }, -/turf/simulated/floor/carpet/red, -/area/security/hos) "hzU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -51334,16 +52003,6 @@ "hAa" = ( /turf/simulated/wall, /area/maintenance/fore2) -"hAk" = ( -/obj/machinery/computer/sm_monitor, -/obj/machinery/camera/autoname{ - dir = 1; - c_tag = "Chief Engineer's Office" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/crew_quarters/chief) "hAl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 @@ -51456,25 +52115,22 @@ icon_state = "redfull" }, /area/security/processing) -"hBk" = ( -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 9 - }, -/area/toxins/lab) "hBv" = ( /obj/structure/chair{ dir = 1 }, +/obj/item/radio/intercom{ + name = "south station intercom (General)"; + pixel_x = -28 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) +"hBC" = ( +/turf/simulated/wall/r_wall, +/area/tcommsat/server) "hBG" = ( /obj/structure/cable{ icon_state = "1-2" @@ -51511,12 +52167,8 @@ /turf/simulated/floor/carpet, /area/maintenance/library) "hBY" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 1; - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -51543,22 +52195,6 @@ dir = 1 }, /area/hallway/primary/central/second/south) -"hCi" = ( -/obj/structure/table/wood/fancy/black, -/obj/item/mining_voucher{ - pixel_y = 6; - pixel_x = -6 - }, -/obj/item/lighter/zippo/qm{ - pixel_x = 7; - pixel_y = 5 - }, -/obj/item/mining_voucher{ - pixel_y = 6; - pixel_x = -6 - }, -/turf/simulated/floor/wood, -/area/quartermaster/qm) "hCr" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -51579,30 +52215,6 @@ dir = 1 }, /area/maintenance/trading) -"hCw" = ( -/obj/effect/turf_decal/siding/red{ - dir = 6 - }, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/obj/structure/sign/poster/secret/lady{ - pixel_x = 32 - }, -/obj/machinery/camera{ - c_tag = "HoS Bedroom"; - network = list("SS13","Security"); - dir = 9 - }, -/obj/item/radio/intercom{ - pixel_x = 28; - pixel_y = 26 - }, -/turf/simulated/floor/carpet/red, -/area/security/hos) "hCC" = ( /obj/structure/window/reinforced{ dir = 4 @@ -51647,22 +52259,6 @@ icon_state = "green" }, /area/hallway/secondary/exit) -"hDd" = ( -/obj/machinery/recharge_station, -/obj/machinery/door_control{ - desiredstate = 1; - id = "toilet4"; - name = "cyborg recharging cabin Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4; - pixel_x = 25 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel/freezer, -/area/crew_quarters/toilet2) "hDi" = ( /obj/item/twohanded/required/kirbyplants, /obj/structure/disposalpipe/segment, @@ -51700,7 +52296,7 @@ /turf/space/openspace, /area/solar/starboard) "hDy" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 1 }, /turf/simulated/floor/wood/fancy/light, @@ -51803,21 +52399,72 @@ /obj/structure/closet/firecloset, /turf/simulated/floor/plasteel, /area/engineering/controlroom) +"hEo" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters{ + density = 0; + dir = 1; + icon_state = "open"; + id_tag = "brig_detprivacy"; + name = "Detective Privacy Shutters"; + opacity = 0 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/security/detectives_office) "hEv" = ( /obj/structure/table, /obj/effect/decal/warning_stripes/yellow/hollow, /obj/item/storage/firstaid/regular, +/obj/item/storage/firstaid/regular{ + pixel_x = 2; + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 1 }, /area/gateway) -"hEB" = ( -/obj/effect/turf_decal/siding/white/end{ - dir = 1; - color = "#444444" +"hEz" = ( +/obj/machinery/light/small, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" }, -/turf/simulated/floor/glass, -/area/hallway/primary/central) +/area/maintenance/fsmaint2) +"hED" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/item/storage/box/flashbangs, +/obj/item/storage/box/flashbangs{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/flashbang{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/flashbang{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/machinery/door/window{ + color = "red"; + name = "Secure Armory"; + req_access = list(1) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "hEG" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -51887,6 +52534,15 @@ icon_state = "darkbluealt" }, /area/hallway/primary/command/east) +"hFd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/shard{ + icon_state = "medium"; + pixel_x = 13; + pixel_y = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/tourist) "hFe" = ( /obj/structure/table/reinforced, /obj/item/storage/belt/utility, @@ -52004,20 +52660,6 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/glass/reinforced, /area/engineering/gravitygenerator) -"hGp" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/decal/warning_stripes/northeast, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/vending/wallmed{ - pixel_y = 32; - pixel_x = 26 - }, -/turf/simulated/floor/plasteel, -/area/engineering/controlroom) "hGs" = ( /obj/effect/decal/warning_stripes/east, /turf/simulated/floor/plating, @@ -52043,17 +52685,6 @@ /obj/structure/sign/poster/official/random, /turf/simulated/wall/r_wall, /area/security/evidence) -"hGF" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/machinery/firealarm{ - pixel_y = -28; - pixel_x = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - tag = "icon-whiteblue" - }, -/area/medical/medrest) "hGI" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -52145,7 +52776,7 @@ /area/crew_quarters/captain/bedroom) "hHY" = ( /obj/machinery/door/airlock/mining{ - name = "Mining Dock"; + name = "Mining Storage"; req_access = list(31) }, /obj/structure/cable{ @@ -52303,10 +52934,6 @@ /turf/simulated/floor/carpet/royalblack, /area/hallway/secondary/exit) "hJq" = ( -/obj/machinery/door/airlock/mining/glass{ - name = "Processing Area"; - req_access = list(48) - }, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -52314,10 +52941,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/simulated/floor/plasteel{ + icon_state = "brownfull" }, -/turf/simulated/floor/plasteel, /area/quartermaster/miningstorage) "hJs" = ( /obj/structure/cable{ @@ -52362,14 +52988,6 @@ icon_state = "whiteblue" }, /area/medical/reception) -"hJE" = ( -/obj/machinery/door/window/eastright{ - name = "Forensic laboratory"; - req_access = list(3,4); - dir = 2 - }, -/turf/simulated/floor/wood, -/area/security/detectives_office) "hJH" = ( /obj/structure/computerframe{ dir = 1 @@ -52453,6 +53071,14 @@ "hKK" = ( /turf/simulated/floor/carpet/orange, /area/maintenance/casino) +"hKO" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "ramptop" + }, +/area/maintenance/asmaint4) "hKS" = ( /obj/structure/cable{ d1 = 4; @@ -52585,16 +53211,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/asmaint4) -"hMn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/statue/bone/rib{ - dir = 1; - anchored = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "cult" - }, -/area/maintenance/chapel) "hMq" = ( /obj/machinery/computer/security/telescreen/prison{ network = list("Interrogation"); @@ -52621,6 +53237,22 @@ icon_state = "yellow" }, /area/engineering/break_room) +"hMv" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/flasher{ + desc = "A floor-mounted flashbulb device."; + id = "permacell2"; + layer = 5; + pixel_x = -24; + range = 3 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/security/permabrig) "hMD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/official/random{ @@ -52628,6 +53260,19 @@ }, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"hMJ" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 8 + }, +/obj/effect/turf_decal/number/number_2{ + dir = 1; + pixel_x = 6; + pixel_y = -10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/lounge) "hNh" = ( /obj/machinery/computer/communications, /turf/simulated/floor/plasteel{ @@ -52655,9 +53300,6 @@ /turf/simulated/floor/wood, /area/security/detectives_office) "hNs" = ( -/obj/machinery/light_switch{ - pixel_x = -26 - }, /obj/machinery/light{ dir = 8 }, @@ -52859,19 +53501,6 @@ icon_state = "darkbluealt" }, /area/hallway/primary/command) -"hPi" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 4 - }, -/obj/effect/turf_decal/number/number_2{ - dir = 1; - pixel_y = -10; - pixel_x = -6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkredcorners" - }, -/area/security/permahallway) "hPn" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -52994,6 +53623,16 @@ }, /turf/simulated/floor/carpet/black, /area/lawoffice) +"hQa" = ( +/obj/structure/sign/directions/science{ + dir = 1 + }, +/obj/structure/sign/directions/engineering{ + dir = 4; + pixel_y = 8 + }, +/turf/simulated/wall, +/area/hallway/primary/fore) "hQe" = ( /obj/structure/cable{ icon_state = "4-8" @@ -53044,7 +53683,7 @@ pixel_x = 28 }, /turf/simulated/floor/redgrid, -/area/tcommsat/chamber) +/area/tcommsat/server) "hQr" = ( /obj/structure/cable, /obj/machinery/power/apc{ @@ -53191,17 +53830,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/wall, /area/maintenance/fsmaint) -"hRC" = ( -/obj/structure/curtain/open/shower/security{ - alpha = 255; - icon_state = "closed"; - name = "backstage"; - opacity = 1; - anchored = 1 - }, -/obj/effect/decal/cleanable/dust, -/turf/simulated/floor/plating, -/area/maintenance/backstage) "hRD" = ( /obj/machinery/light{ dir = 8 @@ -53300,10 +53928,13 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "hSz" = ( /turf/simulated/floor/plasteel{ icon_state = "darkbluealt" @@ -53316,10 +53947,8 @@ /turf/simulated/floor/plating/airless, /area/turret_protected/ai) "hSF" = ( -/obj/structure/disposalpipe/junction{ - dir = 1; - icon_state = "pipe-j2"; - tag = "icon-pipe-j1 (WEST)" +/obj/structure/disposalpipe/junction/reversed{ + dir = 1 }, /turf/simulated/floor/plasteel{ dir = 4; @@ -53425,15 +54054,6 @@ dir = 1 }, /area/security/main) -"hTo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 8; - pixel_y = 10; - pixel_x = 9 - }, -/turf/simulated/floor/plating, -/area/maintenance/starboard) "hTs" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -53441,6 +54061,10 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/structure/sign/directions/floor/alt{ + dir = 8; + pixel_y = 32 + }, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) "hTx" = ( @@ -53457,16 +54081,6 @@ color = "orange" }, /area/crew_quarters/captain) -"hTz" = ( -/obj/machinery/newscaster{ - pixel_y = 0; - pixel_x = -30 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "neutral" - }, -/area/crew_quarters/serviceyard) "hTB" = ( /obj/structure/railing{ dir = 4 @@ -53497,34 +54111,28 @@ tag = "icon-whitepurple (WEST)" }, /area/medical/research/nhallway) -"hTF" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/table/glass, -/obj/item/reagent_containers/glass/bottle/epinephrine{ - pixel_y = 2; - pixel_x = 8 - }, -/obj/item/reagent_containers/food/drinks/mug/sec{ - pixel_x = 3; - pixel_y = 14 - }, -/obj/item/reagent_containers/glass/bottle/charcoal{ - pixel_y = 2; - pixel_x = -2 +"hTG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/item/reagent_containers/hypospray/autoinjector, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkblue" +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/cans/beer{ + pixel_x = 5; + pixel_y = 10 }, -/area/security/medbay) +/obj/item/storage/ashtray, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) "hTM" = ( /obj/machinery/camera{ c_tag = "East Primary Hallway 1"; dir = 1 }, +/obj/item/radio/intercom{ + pixel_y = -32 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" }, @@ -53549,16 +54157,6 @@ }, /turf/simulated/floor/plating, /area/security/permabrig) -"hTW" = ( -/obj/machinery/atmospherics/pipe/simple/visible{ - desc = "Труба содержит газ для обработки и после возвращает его обратно в трубу смешивания"; - name = "Труба обработки"; - dir = 9 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/atmos) "hUe" = ( /obj/item/destTagger, /obj/item/stamp/granted{ @@ -53586,7 +54184,8 @@ /area/quartermaster/qm) "hUk" = ( /obj/structure/stairs{ - dir = 1 + dir = 1; + layer = 2 }, /obj/structure/railing{ dir = 8 @@ -53713,6 +54312,16 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/simulated/floor/plasteel, /area/engineering/engine) +"hUS" = ( +/obj/machinery/door_control{ + id = "xeno6"; + name = "Containment Control"; + pixel_x = 32; + req_access = list(55) + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel, +/area/toxins/xenobiology) "hUV" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light{ @@ -53749,23 +54358,14 @@ /turf/simulated/floor/plating, /area/maintenance/apmaint) "hVx" = ( -/obj/structure/toilet{ - pixel_y = 19 - }, -/obj/machinery/light/small{ +/obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, -/obj/machinery/door_control{ - desiredstate = 1; - id = "toilet3"; - name = "Toilet Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4; - pixel_x = 25 +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel/freezer, -/area/crew_quarters/toilet2) +/area/hallway/primary/central/west) "hVS" = ( /obj/machinery/vending/crittercare, /obj/item/radio/intercom{ @@ -53777,22 +54377,6 @@ }, /turf/simulated/floor/wood, /area/civilian/pet_store) -"hVU" = ( -/obj/item/stack/packageWrap{ - pixel_y = -4; - pixel_x = -3 - }, -/obj/item/stack/packageWrap, -/obj/item/stack/packageWrap{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/hand_labeler, -/obj/structure/table/reinforced, -/turf/simulated/floor/plasteel{ - dir = 1 - }, -/area/quartermaster/office) "hVY" = ( /obj/machinery/conveyor/inverted{ id = "garbage" @@ -53858,18 +54442,6 @@ /obj/structure/lattice/catwalk, /turf/space, /area/space) -"hWy" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/snacks/fried_vox{ - pixel_y = 4; - pixel_x = -6 - }, -/obj/item/cigbutt{ - pixel_y = 12; - pixel_x = 6 - }, -/turf/simulated/floor/plating, -/area/maintenance/asmaint) "hWC" = ( /obj/effect/turf_decal/stripes/gold, /turf/simulated/floor/carpet/royalblack, @@ -54143,14 +54715,6 @@ dir = 8 }, /area/medical/cryo) -"hYl" = ( -/obj/machinery/recharge_station, -/obj/effect/decal/warning_stripes/yellow, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/reception) "hYo" = ( /obj/machinery/portable_atmospherics/canister/toxins, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -54159,6 +54723,26 @@ icon_state = "purplefull" }, /area/toxins/storage) +"hYw" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 1; + name = "CE's Junction"; + sortType = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) "hYy" = ( /obj/effect/decal/warning_stripes/south, /obj/machinery/light{ @@ -54166,21 +54750,10 @@ }, /turf/simulated/floor/bluegrid, /area/assembly/showroom) -"hYz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #7"; - id_tag = "xeno7" - }, -/obj/effect/spawner/window/reinforced/plasma, -/turf/simulated/floor/plating, -/area/toxins/xenobiology) "hYO" = ( /obj/structure/stairs{ - dir = 1 + dir = 1; + layer = 2 }, /turf/simulated/floor/plasteel{ dir = 5; @@ -54222,6 +54795,13 @@ /obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/plating, /area/maintenance/fore) +"hZu" = ( +/obj/effect/decal/cleanable/dust, +/obj/effect/decal/cleanable/spiderling_remains, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/trading) "hZx" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -54377,6 +54957,7 @@ "iaB" = ( /obj/effect/decal/cleanable/dirt, /mob/living/simple_animal/moth, +/obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood, /area/maintenance/livingcomplex) "iaP" = ( @@ -54419,15 +55000,6 @@ icon_state = "darkpurplecorners" }, /area/assembly/chargebay) -"iaY" = ( -/obj/structure/sign/med{ - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) "ibg" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ desc = "Труба хранит в себе набор газов для смешивания"; @@ -54519,19 +55091,6 @@ }, /turf/simulated/floor/glass/reinforced/plasma, /area/engineering/controlroom) -"ibB" = ( -/obj/structure/sign/poster/official/random{ - pixel_y = -32 - }, -/obj/machinery/camera{ - c_tag = "Briefing Room South"; - network = list("SS13","Security"); - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "red" - }, -/area/security/main) "ibI" = ( /obj/machinery/power/apc{ dir = 1; @@ -54823,7 +55382,7 @@ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "idu" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -54868,7 +55427,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "idL" = ( /obj/item/radio/intercom{ dir = 4; @@ -54892,6 +55451,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -55018,6 +55580,15 @@ icon_state = "dark" }, /area/maintenance/gambling_den) +"iez" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters{ + dir = 1; + id_tag = "janitorshutters"; + name = "Janitor Shutters" + }, +/turf/simulated/floor/plating, +/area/janitor) "ieG" = ( /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/preopen{ @@ -55088,12 +55659,34 @@ icon_state = "dark" }, /area/security/prisonlockers) +"ieZ" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/item/radio/intercom{ + pixel_y = 24 + }, +/obj/machinery/light{ + dir = 1; + in_use = 1 + }, +/obj/machinery/camera{ + c_tag = "HoS Office North"; + dir = 6; + network = list("SS13","Security") + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/hos) "ifd" = ( +/obj/machinery/camera{ + c_tag = "Central Ring Hallway South 6"; + dir = 10 + }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "browncorner" + icon_state = "neutral" }, -/area/quartermaster/lobby) +/area/hallway/primary/central/sw) "ifo" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/fernybush, @@ -55147,6 +55740,23 @@ icon_state = "white" }, /area/toxins/explab) +"ifM" = ( +/obj/machinery/door/window/brigdoor/southleft{ + base_state = "rightsecure"; + color = "red"; + dir = 1; + icon_state = "rightsecure"; + req_access = list(63) + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/evidence) "ifN" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ dir = 1; @@ -55166,7 +55776,7 @@ /obj/structure/railing{ dir = 10 }, -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 4 }, /obj/effect/landmark/start/cargo_technician, @@ -55198,6 +55808,17 @@ icon_state = "yellow" }, /area/engineering/break_room) +"igl" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "port4"; + name = "exterior access button"; + pixel_x = -28; + pixel_y = -28 + }, +/turf/space, +/area/space) "ign" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -55374,7 +55995,7 @@ dir = 6; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "ihk" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -55386,9 +56007,6 @@ /turf/simulated/floor/plating, /area/maintenance/secpost) "ihz" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -55398,6 +56016,9 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -55467,31 +56088,12 @@ /obj/structure/extinguisher_cabinet{ pixel_x = 25 }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "brown" }, /area/quartermaster/miningstorage) -"ihW" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 8 - }, -/obj/effect/turf_decal/number/number_1{ - dir = 1; - pixel_y = -10; - pixel_x = 5 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "red" - }, -/area/security/processing) "iib" = ( /obj/machinery/door/airlock/external{ frequency = 1379; @@ -55643,6 +56245,24 @@ tag = "icon-whiteblue (NORTHEAST)" }, /area/medical/medbay) +"ijc" = ( +/obj/machinery/flasher_button{ + id = "permacell1"; + name = "Perma cell 1 flasher button"; + pixel_x = -7; + pixel_y = -32 + }, +/obj/machinery/flasher_button{ + id = "permacell2"; + name = "Perma cell 2 flasher button"; + pixel_x = 7; + pixel_y = -32 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/permahallway) "ijg" = ( /obj/structure/railing{ dir = 8 @@ -55657,6 +56277,9 @@ /obj/effect/decal/warning_stripes/southeast, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/additional) +"ijt" = ( +/turf/simulated/wall, +/area/chapel/massdriver) "ijx" = ( /obj/effect/decal/warning_stripes/yellow, /obj/machinery/door/window/eastright{ @@ -55708,34 +56331,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint) -"ijH" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/machinery/door_control{ - id = "HoSBPriv"; - name = "HoS Bedroom Privacy Shutters Control"; - pixel_y = -24; - req_access = list(58); - pixel_x = 26 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/wood, -/area/security/hos) -"ijI" = ( -/obj/machinery/door/window/eastright{ - name = "Mime Delivery"; - req_access = list(46); - dir = 8 - }, -/obj/effect/decal/warning_stripes/yellow, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "tranquillite" - }, -/area/mimeoffice) "ijW" = ( /obj/structure/cable{ d1 = 4; @@ -55836,19 +56431,6 @@ icon_state = "darkbluealt" }, /area/bridge) -"iks" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "neutral" - }, -/area/hallway/primary/central/second/east) "ikt" = ( /obj/item/stock_parts/cell/high, /obj/structure/closet/crate/can, @@ -55857,17 +56439,6 @@ icon_state = "tranquillite" }, /area/maintenance/trading) -"ikv" = ( -/obj/structure/table/reinforced, -/obj/structure/curtain/open{ - color = "#222222"; - anchored = 1 - }, -/obj/item/healthupgrade, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/maintenance/trading) "ikF" = ( /obj/machinery/door/window/southright{ name = "Primate Pen"; @@ -55928,6 +56499,44 @@ dir = 1 }, /area/gateway) +"iln" = ( +/obj/structure/chair/comfy/red{ + dir = 4 + }, +/obj/effect/landmark/start/head_of_security, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door_control{ + desc = "A remote control-switch to lock down the prison wing's blast doors"; + id = "Prison Gate"; + name = "PermaBrig Lockdown"; + pixel_x = 26; + pixel_y = 20; + req_access = list(2) + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/door_control{ + id = "HoSPriv"; + name = "HoS Office Privacy Shutters Control"; + pixel_x = 26; + pixel_y = -10; + req_access = list(58) + }, +/obj/machinery/door_control{ + id = "Brig_lockdown"; + name = "Brig Lockdown"; + pixel_x = 26; + pixel_y = 10; + req_access = list(58) + }, +/turf/simulated/floor/carpet/red, +/area/security/hos) "ilq" = ( /obj/machinery/light/small{ dir = 1 @@ -56094,7 +56703,7 @@ name = "Emergency NanoMed"; pixel_x = 26 }, -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /obj/machinery/camera{ @@ -56106,6 +56715,18 @@ icon_state = "dark" }, /area/crew_quarters/fitness) +"imj" = ( +/obj/structure/barricade/wooden, +/obj/machinery/door/airlock/multi_tile{ + dir = 1; + glass = 1; + name = "Medical Emergency Ward"; + req_access = list(5) + }, +/turf/simulated/floor/plasteel{ + icon_state = "bcarpet05" + }, +/area/maintenance/medroom) "imx" = ( /obj/structure/plasticflaps, /turf/simulated/floor/plating, @@ -56185,18 +56806,6 @@ /obj/structure/grille/broken, /turf/simulated/floor/plating, /area/maintenance/apmaint) -"imT" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkbluealt" - }, -/area/hallway/primary/central/second/north) "imU" = ( /obj/machinery/light{ dir = 4 @@ -56424,41 +57033,6 @@ /obj/structure/window/reinforced, /turf/space/openspace, /area/space) -"ioK" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor{ - armor = list("melee"=60,"bullet"=70,"laser"=70,"energy"=70,"bomb"=40,"bio"=100,"rad"=100,"fire"=70,"acid"=100); - dir = 2; - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/obj/machinery/door/window/brigdoor{ - armor = list("melee"=60,"bullet"=70,"laser"=70,"energy"=70,"bomb"=40,"bio"=100,"rad"=100,"fire"=70,"acid"=100); - dir = 1; - name = "Secure Armory"; - req_access = list(3); - color = "red" - }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "ArmoryLock"; - name = "Armory Lockdown"; - opacity = 0 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters{ - dir = 2; - id_tag = "ArmorySec"; - layer = 5; - name = "Armory Security Shutters" - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark" - }, -/area/security/securearmory) "ioL" = ( /obj/machinery/light{ dir = 4 @@ -56469,6 +57043,18 @@ icon_state = "dark" }, /area/crew_quarters/fitness) +"ioM" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "purplefull" + }, +/area/toxins/launch) "ioT" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -56562,19 +57148,9 @@ }, /area/medical/research/restroom) "ipA" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/effect/spawner/window/reinforced, -/obj/structure/curtain/open/shower/security{ - alpha = 255; - icon_state = "closed"; - name = "backstage"; - opacity = 1; - anchored = 1 - }, -/turf/simulated/floor/plating, -/area/security/medbay) +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/carpet, +/area/library) "ipK" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/effect/spawner/lootdrop/maintenance, @@ -56583,6 +57159,9 @@ c_tag = "Cargo Delivery Warehouse West"; dir = 5 }, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "dark" @@ -56698,10 +57277,10 @@ /turf/simulated/floor/plating, /area/maintenance/cafeteria) "iqw" = ( -/obj/structure/rack, /obj/effect/decal/cleanable/cobweb2, -/obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/tripple, /turf/simulated/floor/plating, /area/maintenance/apmaint) "iqC" = ( @@ -56795,16 +57374,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/starboard) -"irg" = ( -/obj/structure/table/reinforced, -/obj/structure/curtain/open{ - color = "#222222"; - anchored = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/maintenance/trading) "iri" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -56889,6 +57458,14 @@ icon_state = "neutral" }, /area/hallway/primary/central/second/south) +"irY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) "irZ" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -56937,7 +57514,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "isz" = ( /turf/simulated/wall, /area/crew_quarters/serviceyard) @@ -57027,6 +57604,20 @@ icon_state = "darkred" }, /area/security/execution) +"ite" = ( +/obj/machinery/computer/rdconsole/mechanics, +/obj/item/radio/intercom{ + pixel_x = 30; + pixel_y = 22 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engineering/mechanic_workshop) "ith" = ( /turf/simulated/floor/plasteel{ icon_state = "neutral" @@ -57053,6 +57644,9 @@ /obj/machinery/light/small{ dir = 1 }, +/obj/structure/sign/poster/official/obey{ + pixel_y = 32 + }, /turf/simulated/floor/plasteel, /area/security/permabrig) "itq" = ( @@ -57119,11 +57713,14 @@ /turf/simulated/floor/wood, /area/library/game_zone) "itL" = ( -/obj/structure/table/wood, -/obj/item/folder, -/obj/item/pen, -/turf/simulated/floor/wood, -/area/library) +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plasteel{ + icon_state = "red" + }, +/area/hallway/primary/central/west) "itM" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -57182,6 +57779,16 @@ icon_state = "neutral" }, /area/hallway/primary/central/se) +"itY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/quartermaster/lobby) "iub" = ( /obj/structure/table, /obj/random/plushie, @@ -57293,6 +57900,21 @@ /obj/effect/decal/warning_stripes/west, /turf/simulated/floor/plasteel, /area/engineering/controlroom) +"iuS" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/hallway/primary/central/second/west) "iuU" = ( /obj/effect/decal/warning_stripes/southwest, /obj/machinery/r_n_d/protolathe{ @@ -57320,6 +57942,14 @@ icon_state = "bar" }, /area/clownoffice) +"ivf" = ( +/obj/effect/spawner/random_spawners/grille_50, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "ivi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -57473,6 +58103,15 @@ }, /turf/simulated/floor/plasteel, /area/maintenance/electrical) +"iwp" = ( +/obj/machinery/door/window/northleft{ + dir = 2; + name = "Cafe" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood, +/area/maintenance/fsmaint) "iwq" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/remains/mouse, @@ -57571,11 +58210,14 @@ /obj/structure/chair{ dir = 1 }, +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_x = 32 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "ixj" = ( /obj/structure/chair/office/dark, /obj/structure/cable{ @@ -57617,7 +58259,8 @@ dir = 5 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "ixt" = ( @@ -57767,7 +58410,8 @@ icon_state = "2-8" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "iyK" = ( @@ -57891,13 +58535,6 @@ }, /turf/space, /area/solar/starboardaux) -"izA" = ( -/obj/structure/chair/office{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/maintenance/fsmaint3) "izB" = ( /obj/item/radio/intercom{ pixel_y = -30 @@ -57954,24 +58591,6 @@ icon_state = "tranquillite" }, /area/crew_quarters/kitchen) -"izH" = ( -/obj/machinery/flasher_button{ - id = "permacell1"; - name = "Perma cell 1 flasher button"; - pixel_x = -7; - pixel_y = -32 - }, -/obj/machinery/flasher_button{ - id = "permacell2"; - name = "Perma cell 2 flasher button"; - pixel_y = -32; - pixel_x = 7 - }, -/obj/machinery/light, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" - }, -/area/security/permahallway) "izK" = ( /obj/machinery/door/morgue{ name = "Dungeon" @@ -57988,29 +58607,14 @@ icon_state = "dark" }, /area/security/processing) -"izL" = ( -/obj/effect/spawner/window/reinforced/polarized{ - id = "blueshieldofficewindows" - }, -/obj/machinery/door/poddoor/shutters{ - density = 0; - icon_state = "open"; - id_tag = "blueshield"; - name = "Privacy Shutters"; - opacity = 0; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/simulated/floor/plating, -/area/blueshield) "izO" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, /turf/simulated/floor/plasteel{ icon_state = "white" }, -/area/medical/virology/lab) +/area/medical/virology) "izT" = ( /obj/structure/rack, /mob/living/simple_animal/bot/floorbot{ @@ -58100,7 +58704,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ - icon_state = "purplefull" + icon_state = "white" }, /area/toxins/mixing) "iAw" = ( @@ -58119,10 +58723,14 @@ }, /area/crew_quarters/kitchen) "iAJ" = ( -/obj/effect/decal/warning_stripes/southeast, /obj/structure/extinguisher_cabinet{ pixel_x = 26 }, +/obj/machinery/roboquest_pad, +/obj/effect/turf_decal/bot_red{ + layer = 1.99 + }, +/obj/effect/decal/warning_stripes/southeast, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -58142,13 +58750,11 @@ }, /area/engineering/engine) "iAN" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen" +/obj/structure/railing/corner{ + dir = 1 }, -/obj/effect/turf_decal/bot, -/obj/structure/disposalpipe/trunk/multiz/down, /turf/simulated/floor/plasteel{ - dir = 8; + dir = 9; icon_state = "brown" }, /area/quartermaster/miningstorage) @@ -58185,7 +58791,9 @@ }, /area/toxins/lab) "iBe" = ( -/obj/structure/stairs, +/obj/structure/stairs{ + layer = 2 + }, /turf/simulated/floor/plasteel, /area/crew_quarters/serviceyard) "iBi" = ( @@ -58200,6 +58808,7 @@ /turf/simulated/floor/plating, /area/maintenance/xenozoo) "iBD" = ( +/obj/machinery/station_map/directional/west, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "darkred" @@ -58528,15 +59137,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/fsmaint3) -"iEQ" = ( -/obj/machinery/conveyor{ - id = "garbage"; - dir = 4 - }, -/obj/machinery/recycler, -/obj/effect/decal/warning_stripes/north, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "iER" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -58585,6 +59185,22 @@ icon_state = "whitepurple" }, /area/medical/research/nhallway) +"iFb" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/coffee{ + pixel_x = -5; + pixel_y = 13 + }, +/obj/item/reagent_containers/food/drinks/coffee{ + pixel_x = 7; + pixel_y = 1 + }, +/obj/effect/spawner/lootdrop/maintenance{ + pixel_x = -5; + pixel_y = -1 + }, +/turf/simulated/floor/plating, +/area/maintenance/brig) "iFh" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -28 @@ -58613,18 +59229,9 @@ do_not_delete_me = 1 }, /obj/effect/decal/cleanable/dust, +/obj/item/stack/spacecash/c20, /turf/simulated/floor/carpet/green, /area/maintenance/casino) -"iFv" = ( -/obj/structure/table/wood, -/obj/machinery/keycard_auth{ - pixel_y = -1; - pixel_x = 6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/bridge) "iFB" = ( /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -58651,16 +59258,13 @@ /turf/simulated/floor/plating/airless, /area/toxins/test_area) "iGe" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "dark" @@ -58691,14 +59295,29 @@ }, /turf/simulated/floor/wood/fancy/cherry, /area/magistrateoffice) -"iGz" = ( -/obj/machinery/door/firedoor, -/obj/effect/decal/warning_stripes/yellow, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; +"iGt" = ( +/obj/structure/window/reinforced{ dir = 8 }, -/area/hallway/secondary/entry/lounge) +/obj/structure/table/glass, +/obj/item/reagent_containers/glass/bottle/epinephrine{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/item/reagent_containers/food/drinks/mug/sec{ + pixel_x = 3; + pixel_y = 14 + }, +/obj/item/reagent_containers/glass/bottle/charcoal{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/reagent_containers/hypospray/autoinjector, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkblue" + }, +/area/security/medbay) "iGA" = ( /obj/structure/cable{ icon_state = "4-8" @@ -58718,21 +59337,6 @@ /obj/structure/cable, /turf/simulated/floor/plating, /area/medical/biostorage) -"iGL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) "iGM" = ( /obj/machinery/optable, /obj/item/radio/intercom{ @@ -58772,11 +59376,24 @@ c_tag = "Kitchen West"; dir = 5 }, -/obj/machinery/kitchen_machine/oven, +/obj/machinery/cooker/deepfryer, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, /area/crew_quarters/kitchen) +"iGV" = ( +/obj/machinery/computer/operating{ + name = "Robotics Operating Computer" + }, +/obj/machinery/newscaster{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "blue" + }, +/area/assembly/robotics) "iGZ" = ( /obj/machinery/requests_console{ department = "AI"; @@ -58784,14 +59401,6 @@ name = "AI Requests Console"; pixel_y = 32 }, -/obj/machinery/camera{ - c_tag = "Minisat AI Core Centre"; - network = list("Minisat","SS13"); - dir = 10 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, /turf/simulated/floor/greengrid, /area/turret_protected/ai) "iHg" = ( @@ -58810,18 +59419,6 @@ icon_state = "neutralfull" }, /area/quartermaster/delivery) -"iHj" = ( -/obj/structure/barricade/wooden, -/obj/machinery/door/airlock/multi_tile{ - dir = 1; - glass = 1; - req_access = list(5); - name = "Medical Emergency Ward" - }, -/turf/simulated/floor/plasteel{ - icon_state = "bcarpet05" - }, -/area/maintenance/medroom) "iHn" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ desc = "Труба хранит в себе набор газов для смешивания"; @@ -58837,11 +59434,6 @@ }, /area/atmos) "iHr" = ( -/obj/item/radio/intercom{ - dir = 1; - name = "Station Intercom (General)"; - pixel_y = -29 - }, /obj/effect/decal/warning_stripes/south, /obj/machinery/light, /obj/effect/decal/warning_stripes/north, @@ -58853,17 +59445,6 @@ }, /turf/simulated/floor/plasteel, /area/storage/eva) -"iHv" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #1"; - id_tag = "xeno1" - }, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/toxins/xenobiology) "iHy" = ( /obj/structure/cable{ icon_state = "1-2" @@ -58998,10 +59579,12 @@ }, /area/maintenance/secpost) "iIT" = ( -/obj/effect/decal/warning_stripes/southeast, +/obj/structure/railing/corner{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 1; - icon_state = "neutralcorner" + icon_state = "whitepurplecorner" }, /area/toxins/mixing) "iIU" = ( @@ -59041,7 +59624,7 @@ /turf/simulated/floor/plating, /area/maintenance/apmaint) "iJl" = ( -/obj/structure/chair/office, +/obj/structure/chair, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/trading) @@ -59057,9 +59640,7 @@ "iJH" = ( /obj/structure/cable, /obj/machinery/power/apc{ - cell_type = 5000; - name = "south bump Important Area"; - pixel_y = -24 + pixel_y = -26 }, /turf/simulated/floor/redgrid, /area/aisat/aihallway) @@ -59083,11 +59664,14 @@ pixel_x = 2; pixel_y = 4 }, +/obj/structure/sign/fire{ + pixel_y = 32 + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "iJR" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -59198,7 +59782,6 @@ }, /area/toxins/xenobiology) "iKJ" = ( -/obj/machinery/light, /obj/structure/disposalpipe/segment{ dir = 5 }, @@ -59227,7 +59810,7 @@ }, /area/security/lobby) "iLd" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 1 }, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -59424,6 +60007,7 @@ /area/storage/secure) "iMC" = ( /obj/effect/spawner/random_spawners/cobweb_right_rare, +/obj/structure/reagent_dispensers/watertank, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) "iMF" = ( @@ -59563,7 +60147,7 @@ dir = 4 }, /turf/simulated/floor/plasteel, -/area/engineering/engine) +/area/engineering/break_room) "iNO" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -59626,6 +60210,11 @@ icon_state = "darkbluealt" }, /area/hallway/primary/command/east) +"iOm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stock_parts/cell/high, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "iOp" = ( /obj/machinery/optable, /obj/machinery/shower{ @@ -59697,7 +60286,9 @@ /area/quartermaster/qm) "iOP" = ( /obj/structure/window/reinforced, -/obj/item/twohanded/required/kirbyplants, +/obj/item/twohanded/required/kirbyplants{ + layer = 3.1 + }, /obj/machinery/light{ dir = 1; in_use = 1 @@ -59706,21 +60297,27 @@ icon_state = "dark" }, /area/bridge) +"iOS" = ( +/obj/machinery/door_control{ + id = "xeno1"; + name = "Containment Control"; + pixel_x = -32; + req_access = list(55) + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitehall" + }, +/area/toxins/xenobiology) "iOW" = ( -/obj/structure/ore_box, +/obj/structure/table, +/obj/item/coin/iron, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "brown" }, /area/quartermaster/miningstorage) -"iPd" = ( -/obj/structure/closet/l3closet/security, -/obj/effect/decal/warning_stripes/red, -/obj/item/restraints/handcuffs/pinkcuffs, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "iPl" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -59847,7 +60444,7 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/carpet/red, /area/security/prison/cell_block/A) "iQp" = ( @@ -60162,12 +60759,13 @@ }, /area/hallway/primary/command/east) "iTG" = ( -/obj/structure/stairs{ - dir = 1 - }, /obj/structure/railing{ dir = 4 }, +/obj/structure/stairs{ + dir = 1; + layer = 2 + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -60280,6 +60878,13 @@ }, /turf/simulated/floor/plating, /area/teleporter/abandoned) +"iUC" = ( +/obj/machinery/station_map/directional/east, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/hallway/primary/central/second/east) "iUG" = ( /obj/effect/spawner/window/reinforced/polarized{ id = "qm" @@ -60304,19 +60909,6 @@ "iUN" = ( /turf/simulated/floor/plasteel, /area/assembly/robotics) -"iUO" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkyellowfull" - }, -/area/engineering/controlroom) "iUX" = ( /obj/structure/table/wood, /obj/item/stack/packageWrap, @@ -60363,6 +60955,29 @@ icon_state = "dark" }, /area/toxins/rdoffice) +"iVg" = ( +/obj/effect/turf_decal/number/number_2{ + dir = 1; + pixel_x = 6; + pixel_y = -10 + }, +/obj/effect/turf_decal/arrows/white{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/engineering/controlroom) +"iVi" = ( +/obj/structure/window/reinforced, +/obj/item/flag/nt, +/obj/structure/sign/goldenplaque{ + desc = "Важное Уточнение! Рабочие пожелали оставаться анонимными, поэтому, обойдёмся их прозвищами. За помощь Главному Инженеру Новы в поисках и устранении неисправностей на станции НаноТрейзен. С благодарностью, Zhojaba. Слава НаноТрейзен!"; + name = "Благодарственное Письмо от Главного Инженера станции Нова"; + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) "iVs" = ( /obj/structure/cable/yellow{ d2 = 8; @@ -60486,7 +61101,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "iWt" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ name = "standard air scrubber"; @@ -60499,32 +61114,14 @@ icon_state = "neutral" }, /area/hallway/primary/central/sw) -"iWC" = ( -/obj/machinery/disposal/deliveryChute, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/window/eastleft{ - base_state = "right"; - icon_state = "right"; - layer = 3; - req_access = list(50); - dir = 2 - }, -/obj/effect/decal/warning_stripes/yellow, -/obj/structure/disposalpipe/trunk{ - dir = 2 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "iWG" = ( /obj/item/radio/intercom{ name = "east station intercom (General)"; pixel_x = 28 }, +/obj/structure/railing/corner, +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/stripes/line, /turf/simulated/floor/plasteel, /area/quartermaster/sorting) "iWH" = ( @@ -60554,7 +61151,9 @@ color = "#444444"; dir = 4 }, -/turf/simulated/floor/glass, +/turf/simulated/floor/glass{ + slowdown = -0.3 + }, /area/hallway/primary/central) "iWT" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ @@ -60750,7 +61349,8 @@ dir = 8 }, /obj/structure/stairs{ - dir = 1 + dir = 1; + layer = 2 }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -60912,10 +61512,10 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "iZx" = ( -/obj/machinery/conveyor{ - id = "packageSort2" +/obj/structure/disposalpipe/segment, +/obj/structure/railing{ + dir = 4 }, -/obj/structure/plasticflaps, /turf/simulated/floor/plasteel, /area/quartermaster/sorting) "iZA" = ( @@ -61116,6 +61716,43 @@ icon_state = "neutral" }, /area/hallway/primary/central/sw) +"jaG" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/table/reinforced, +/obj/item/storage/box/bodybags, +/obj/item/storage/box/masks{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/storage/box/gloves{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "blue" + }, +/area/assembly/robotics) +"jaZ" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/processing) +"jbb" = ( +/obj/machinery/light{ + dir = 1; + in_use = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/hallway/primary/fore) "jbe" = ( /obj/machinery/door/poddoor/preopen{ id_tag = "BridgeLockdown"; @@ -61136,14 +61773,14 @@ /area/medical/cmostore) "jbh" = ( /obj/machinery/door/morgue{ - name = "Chapel Morgue"; + name = "Crematorium"; req_access = list(22) }, /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "jbj" = ( /obj/structure/chair/comfy/brown{ dir = 8 @@ -61221,6 +61858,29 @@ icon_state = "blue" }, /area/hallway/secondary/entry/lounge) +"jbE" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/rack/gunrack, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/item/gun/energy/laser{ + pixel_x = -3 + }, +/obj/item/gun/energy/laser, +/obj/item/gun/energy/laser{ + pixel_x = 3 + }, +/obj/machinery/door/window{ + color = "red"; + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "jbV" = ( /obj/item/candle{ pixel_x = 9; @@ -61232,20 +61892,6 @@ /obj/structure/table/wood/fancy/red, /turf/simulated/floor/carpet/red, /area/crew_quarters/theatre) -"jca" = ( -/obj/structure/table/reinforced, -/obj/item/gun/energy/laser/practice, -/obj/machinery/door/window/brigdoor{ - name = "Security Reception"; - req_access = list(1); - dir = 2; - color = "red" - }, -/turf/simulated/floor/plasteel{ - icon_state = "redfull"; - tag = "icon-redfull (NORTHWEST)" - }, -/area/security/range) "jce" = ( /obj/machinery/door/airlock/atmos{ name = "Atmospherics Maintenance"; @@ -61263,24 +61909,13 @@ icon_state = "yellowfull" }, /area/maintenance/atmospherics) -"jcg" = ( -/obj/effect/landmark/event/xeno_spawn, -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 8 - }, -/obj/effect/decal/warning_stripes/north, -/turf/simulated/floor/engine, -/area/toxins/explab) "jcp" = ( -/obj/machinery/atmospherics/unary/tank/air{ - dir = 1 +/obj/structure/stairs{ + dir = 1; + layer = 2 }, /turf/simulated/floor/plating, -/area/medical/virology/lab) +/area/maintenance/asmaint4) "jcr" = ( /obj/effect/decal/warning_stripes/south, /obj/machinery/atmospherics/pipe/simple/insulated, @@ -61310,11 +61945,6 @@ }, /turf/simulated/floor/wood, /area/medical/cmo) -"jcD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/girder, -/turf/simulated/floor/plating, -/area/maintenance/fsmaint2) "jcK" = ( /obj/structure/railing/corner{ dir = 4 @@ -61451,7 +62081,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "jdJ" = ( /obj/structure/table/wood, @@ -61532,6 +62162,18 @@ }, /turf/simulated/floor/plating, /area/maintenance/starboard) +"jeg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno7"; + name = "Creature Cell #7" + }, +/obj/effect/spawner/window/reinforced/plasma, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) "jei" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -61539,6 +62181,30 @@ /obj/effect/decal/cleanable/blood, /turf/simulated/floor/plating, /area/maintenance/livingcomplex) +"jej" = ( +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Head of Personnel's Desk" + }, +/obj/machinery/door/window/brigdoor{ + base_state = "rightsecure"; + dir = 8; + icon_state = "rightsecure"; + name = "Head of Personnel's Desk"; + req_access = list(57) + }, +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/item/folder/blue, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "hopprivacy"; + name = "Head of Personal Privacy Shutters" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark" + }, +/area/crew_quarters/heads) "jer" = ( /obj/structure/cable{ icon_state = "0-2" @@ -61591,6 +62257,7 @@ dir = 10 }, /obj/machinery/hologram/holopad, +/obj/effect/decal/warning_stripes/blue/hollow, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -61762,14 +62429,6 @@ "jfI" = ( /turf/simulated/wall/r_wall, /area/hallway/secondary/exit) -"jfO" = ( -/obj/structure/table/reinforced, -/obj/item/lock_buster, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark" - }, -/area/security/securearmory) "jfR" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, @@ -61814,22 +62473,10 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/apmaint) -"jgl" = ( -/obj/machinery/door/window/southright{ - dir = 8; - name = "Toxins Launcher"; - req_access = list(7) - }, -/obj/machinery/door/window/southright{ - name = "Toxins Launcher"; - req_access = list(7); - dir = 4 - }, -/turf/simulated/floor/plating, -/area/toxins/launch) "jgv" = ( /obj/structure/disposaloutlet{ - dir = 2 + dir = 2; + eject_range = 1 }, /obj/structure/disposalpipe/trunk{ dir = 4 @@ -61921,31 +62568,6 @@ icon_state = "dark" }, /area/hallway/primary/command/west) -"jhf" = ( -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/ammo_box/shotgun/buck{ - pixel_x = 3 - }, -/obj/item/ammo_box/shotgun/buck{ - pixel_y = 3 - }, -/obj/item/ammo_box/shotgun{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/structure/closet/secure_closet/guncabinet{ - anchored = 1; - name = "Lethal Bullets"; - req_access = list(1) - }, -/obj/item/ammo_box/shotgun{ - pixel_x = -3; - pixel_y = 6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "jhi" = ( /obj/machinery/atmospherics/meter, /obj/machinery/atmospherics/pipe/simple/visible{ @@ -62011,7 +62633,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/door/airlock/mining/glass{ +/obj/machinery/door/airlock/mining{ name = "Cargo Bay"; req_access = list(31) }, @@ -62084,20 +62706,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/apmaint) -"jhT" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/westright{ - name = "Mechanic's Desk"; - req_access = list(70); - dir = 2 - }, -/obj/machinery/cell_charger{ - pixel_x = -1; - pixel_y = 2 - }, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plasteel, -/area/engineering/mechanic_workshop) "jhW" = ( /obj/machinery/hydroponics/soil, /turf/simulated/floor/grass, @@ -62138,15 +62746,6 @@ icon_state = "darkbluealt" }, /area/hallway/primary/central/second/north) -"jiw" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "red" - }, -/area/security/processing) "jix" = ( /obj/structure/window/reinforced{ dir = 1 @@ -62180,17 +62779,6 @@ /obj/item/storage/toolbox/mechanical/old, /turf/simulated/floor/plating, /area/maintenance/maintcentral) -"jiH" = ( -/obj/machinery/camera{ - c_tag = "Medbay Suit Storage"; - network = list("Medical","SS13"); - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "whiteblue" - }, -/area/medical/cmostore) "jiI" = ( /obj/structure/sign/poster/official/nanotrasen_logo{ pixel_y = -32 @@ -62236,13 +62824,13 @@ /turf/simulated/floor/plating, /area/maintenance/apmaint) "jiU" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 4 }, /turf/simulated/floor/plating, /area/maintenance/brig) "jiV" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 4 }, /turf/simulated/floor/plasteel{ @@ -62374,13 +62962,10 @@ }, /area/aisat/aihallway) "jjR" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 1 - }, -/area/security/interrogation) +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing/corner, +/turf/simulated/floor/plasteel, +/area/maintenance/xenozoo) "jjS" = ( /obj/machinery/light{ dir = 8 @@ -62390,7 +62975,8 @@ pixel_x = -28 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "jjV" = ( @@ -62403,7 +62989,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "jjX" = ( /obj/structure/window/reinforced{ dir = 4 @@ -62461,12 +63047,10 @@ /turf/simulated/floor/plating, /area/maintenance/apmaint) "jkm" = ( -/obj/item/radio/intercom{ - pixel_x = 28; - pixel_y = -2 - }, +/obj/structure/table, /turf/simulated/floor/plasteel{ - icon_state = "redcorner" + dir = 6; + icon_state = "red" }, /area/security/prison/cell_block/A) "jkt" = ( @@ -62512,16 +63096,6 @@ icon_state = "tranquillite" }, /area/security/permabrig) -"jkY" = ( -/obj/machinery/camera{ - c_tag = "Arrivals South Longue Hallway"; - dir = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) "jlb" = ( /turf/simulated/wall/r_wall, /area/toxins/lab) @@ -62556,6 +63130,13 @@ icon_state = "darkbluealt" }, /area/hallway/primary/central/second/north) +"jlt" = ( +/obj/structure/closet/secure_closet/medical3, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/biostorage) "jlv" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/girder, @@ -62589,13 +63170,14 @@ }, /area/maintenance/livingcomplex) "jlI" = ( -/obj/structure/sign/redcross{ - pixel_x = 32 +/obj/effect/turf_decal/number/number_1{ + dir = 1 }, +/obj/effect/turf_decal/arrows/white, /turf/simulated/floor/plasteel{ icon_state = "redcorner" }, -/area/security/prison/cell_block/A) +/area/hallway/primary/central/second/west) "jlM" = ( /obj/machinery/optable, /obj/effect/decal/cleanable/dirt, @@ -62692,7 +63274,7 @@ icon_state = "1-2" }, /turf/simulated/floor/plasteel{ - dir = 1 + icon_state = "red" }, /area/security/lobby) "jmH" = ( @@ -62776,55 +63358,11 @@ }, /area/hallway/primary/central/ne) "jmY" = ( -/turf/simulated/floor/plasteel{ - icon_state = "redfull"; - tag = "icon-redfull (NORTHWEST)" - }, -/area/security/seceqstorage) -"jna" = ( -/obj/structure/sign/directions/medical{ - dir = 1 - }, -/obj/structure/sign/directions/science{ - pixel_y = 8; - dir = 1 - }, -/obj/structure/sign/directions/evac{ - pixel_y = -8 - }, -/turf/simulated/wall, -/area/hallway/primary/central) -"jnj" = ( -/obj/structure/rack/gunrack, -/obj/item/gun/projectile/automatic/sp91rc{ - pixel_x = -7 - }, -/obj/item/gun/projectile/automatic/sp91rc{ - pixel_x = -2 - }, -/obj/item/gun/projectile/automatic/sp91rc{ - pixel_x = 2 - }, -/obj/item/gun/projectile/automatic/sp91rc{ - pixel_x = 7 - }, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 1 - }, -/obj/machinery/door/window{ - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, /turf/simulated/floor/plasteel{ dir = 8; - icon_state = "vault" + icon_state = "redcorner" }, -/area/security/securearmory) +/area/security/seceqstorage) "jnk" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -62868,27 +63406,15 @@ }, /turf/simulated/floor/plating, /area/security/permabrig) -"jnD" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "SKPP"; - dir = 8 - }, -/obj/structure/cable, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/bridge/checkpoint/south) "jnG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel{ - dir = 1 +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/light/small, +/obj/structure/sign/poster/contraband/random{ + pixel_y = -32 }, -/area/security/interrogation) +/turf/simulated/floor/plating, +/area/maintenance/asmaint4) "jnH" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -63188,25 +63714,10 @@ /turf/simulated/floor/plasteel, /area/engineering/engine) "jqb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "1-2"; - tag = "" - }, -/obj/structure/disposalpipe/segment, +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/double, /turf/simulated/floor/plating, /area/maintenance/asmaint4) -"jqf" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/item/storage/belt/medical, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/regular, -/obj/item/reagent_containers/hypospray/safety, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whiteblue" - }, -/area/medical/biostorage) "jqg" = ( /obj/effect/decal/warning_stripes/northwest, /obj/machinery/chem_heater, @@ -63288,6 +63799,9 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/simulated/floor/plating, /area/maintenance/disposal) "jqP" = ( @@ -63327,6 +63841,15 @@ icon_state = "dark" }, /area/security/permahallway) +"jqW" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/miningstorage) "jqY" = ( /obj/structure/closet/cardboard, /obj/effect/decal/cleanable/dirt, @@ -63497,8 +64020,8 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" +/turf/simulated/floor/engine{ + slowdown = -0.3 }, /area/hallway/primary/central) "jsj" = ( @@ -63556,6 +64079,18 @@ }, /turf/simulated/floor/plating, /area/quartermaster/storage) +"jsO" = ( +/obj/structure/table/glass, +/obj/item/flashlight/lamp{ + pixel_y = 8 + }, +/obj/item/storage/belt/medical, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/carpet/green, +/area/medical/virology) "jsP" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, @@ -63612,7 +64147,7 @@ }, /area/maintenance/gambling_den) "jtk" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 4 }, /turf/simulated/floor/plasteel/dark, @@ -63768,9 +64303,17 @@ }, /area/hallway/primary/central/second/east) "juQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "browncorner" + dir = 1 }, /area/quartermaster/lobby) "juU" = ( @@ -63815,6 +64358,14 @@ icon_state = "vault" }, /area/chapel/office) +"jvf" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/box, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningstorage) "jvj" = ( /obj/structure/railing, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -63863,7 +64414,8 @@ icon_state = "1-2" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "jvC" = ( @@ -63873,6 +64425,9 @@ layer = 5; pixel_y = -5 }, +/obj/item/radio/intercom{ + pixel_x = -28 + }, /turf/simulated/floor/plasteel/freezer, /area/ntrep) "jvL" = ( @@ -63907,29 +64462,6 @@ icon_state = "dark" }, /area/medical/genetics) -"jvQ" = ( -/obj/structure/table/reinforced, -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/eastleft{ - name = "Hydroponics Desk"; - req_access = list(35); - dir = 1 - }, -/obj/item/clipboard, -/obj/item/toy/figure/botanist, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "Hydroponics Shutters"; - name = "Hydroponics Shutters"; - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/hydroponics) "jvS" = ( /obj/structure/cable{ icon_state = "1-8" @@ -64201,18 +64733,6 @@ icon_state = "white" }, /area/toxins/mixing) -"jyA" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/item/storage/belt/medical, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/regular, -/obj/item/reagent_containers/hypospray/safety, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "whiteblue"; - tag = "icon-whiteblue (SOUTHEAST)" - }, -/area/medical/biostorage) "jyC" = ( /obj/machinery/door/window/brigdoor{ base_state = "rightsecure"; @@ -64313,7 +64833,9 @@ req_access = list(48) }, /obj/machinery/door/firedoor, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/plasteel{ + icon_state = "brownfull" + }, /area/quartermaster/miningstorage) "jzv" = ( /obj/structure/table/wood, @@ -64431,7 +64953,7 @@ }, /area/medical/cmostore) "jAm" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 1 }, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -64458,6 +64980,23 @@ }, /turf/simulated/floor/carpet/red, /area/crew_quarters/courtroom) +"jAr" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/flasher{ + desc = "A floor-mounted flashbulb device."; + id = "permacell1"; + layer = 5; + pixel_x = 24; + range = 3 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/effect/decal/remains/human, +/turf/simulated/floor/plating, +/area/security/permabrig) "jAs" = ( /obj/structure/cable{ icon_state = "1-2" @@ -64532,7 +65071,7 @@ }, /area/quartermaster/sorting) "jAM" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /turf/simulated/floor/plasteel{ @@ -64541,6 +65080,27 @@ icon_state = "tranquillite" }, /area/crew_quarters/kitchen) +"jAP" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + desc = "Труба хранит в себе набор газов для смешивания"; + dir = 6; + name = "Труба смешивания" + }, +/obj/structure/table/reinforced, +/obj/item/storage/box/lights/mixed{ + pixel_x = 5; + pixel_y = 6 + }, +/obj/item/storage/box/lights/mixed{ + pixel_x = 5; + pixel_y = 6 + }, +/obj/item/grenade/chem_grenade/metalfoam, +/obj/item/grenade/chem_grenade/metalfoam, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) "jBa" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -64646,7 +65206,9 @@ /obj/structure/cable{ icon_state = "0-2" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "jBM" = ( /turf/simulated/floor/engine/co2, @@ -64719,6 +65281,30 @@ /obj/structure/lattice, /turf/space, /area/space) +"jCT" = ( +/obj/effect/turf_decal/siding/red{ + dir = 6 + }, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/sign/poster/secret/lady{ + pixel_x = 32 + }, +/obj/machinery/camera{ + c_tag = "HoS Bedroom"; + dir = 9; + network = list("SS13","Security") + }, +/obj/item/radio/intercom{ + pixel_x = 28; + pixel_y = 26 + }, +/turf/simulated/floor/carpet/red, +/area/security/hos) "jCW" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -64855,39 +65441,14 @@ }, /area/janitor) "jDV" = ( -/obj/structure/sign/poster/random{ - pixel_x = 32 +/obj/structure/stairs{ + layer = 2 + }, +/obj/structure/railing{ + dir = 4 }, /turf/simulated/floor/plasteel, /area/quartermaster/sorting) -"jDY" = ( -/obj/structure/table, -/obj/machinery/requests_console{ - department = "Tech Storage"; - name = "Tech Storage Requests Console"; - pixel_y = -32 - }, -/obj/item/circuitboard/smes{ - pixel_y = -4; - pixel_x = -4 - }, -/obj/item/circuitboard/powermonitor{ - pixel_y = -2; - pixel_x = -2 - }, -/obj/item/circuitboard/stationalert, -/obj/item/circuitboard/atmos_alert{ - pixel_y = 2; - pixel_x = 2 - }, -/obj/item/circuitboard/thermomachine{ - pixel_y = 4; - pixel_x = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "caution" - }, -/area/storage/tech) "jEh" = ( /obj/structure/flora/ausbushes/ywflowers, /obj/structure/flora/ausbushes/ywflowers/hell, @@ -64907,7 +65468,7 @@ name = "gamma dock"; width = 7 }, -/turf/space{ +/turf/space/openspace{ icon_state = "black" }, /area/space) @@ -64965,6 +65526,25 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/hallway/primary/central/nw) +"jEM" = ( +/obj/structure/table/glass, +/obj/item/folder/blue, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/folder/white{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/flashlight/lamp/green{ + pixel_x = -7; + pixel_y = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/carpet/blue, +/area/medical/cmo) "jER" = ( /obj/item/reagent_containers/spray/cleaner/janitor{ pixel_x = -6 @@ -65000,7 +65580,8 @@ "jEX" = ( /obj/machinery/floodlight, /turf/simulated/floor/plasteel{ - dir = 5 + dir = 4; + icon_state = "blue" }, /area/hydroponics) "jFa" = ( @@ -65066,7 +65647,7 @@ dir = 4; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "jFz" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ name = "standard air scrubber"; @@ -65132,6 +65713,25 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/carpet/royalblack, /area/maintenance/fsmaint2) +"jFK" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "blue" + }, +/area/hallway/primary/fore) "jFL" = ( /turf/simulated/wall, /area/quartermaster/miningstorage) @@ -65142,13 +65742,15 @@ }, /area/hallway/primary/central/second/west) "jFO" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, +/obj/machinery/camera{ + c_tag = "Second Floor Central Ring South Hallway 2"; + dir = 2 + }, /turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "brown" + dir = 1; + icon_state = "red" }, -/area/hallway/primary/central/second/east) +/area/hallway/primary/central/second/west) "jFP" = ( /obj/machinery/alarm{ pixel_y = 22 @@ -65168,6 +65770,16 @@ /area/medical/cmo) "jFR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/ore_box, +/obj/effect/turf_decal/bot, +/obj/item/radio/intercom{ + dir = 4; + pixel_x = 32; + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "brown" @@ -65353,17 +65965,6 @@ icon_state = "dark" }, /area/security/seceqstorage) -"jHe" = ( -/obj/structure/table/wood{ - color = "#996633" - }, -/obj/item/paper/ntrep{ - pixel_y = 3; - pixel_x = 3 - }, -/obj/item/book/manual/sop_command, -/turf/simulated/floor/wood/dark, -/area/ntrep) "jHf" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -65386,7 +65987,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "jHy" = ( /turf/simulated/wall/r_wall, /area/security/warden) @@ -65500,20 +66101,6 @@ }, /turf/simulated/floor/wood/fancy/cherry, /area/crew_quarters/theatre) -"jIw" = ( -/obj/machinery/firealarm{ - dir = 8; - name = "west fire alarm"; - pixel_x = -24 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay2) "jIz" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -65567,18 +66154,20 @@ }, /area/atmos/control) "jIQ" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "jIT" = ( /obj/structure/chair/office/dark{ dir = 8 @@ -65709,7 +66298,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /turf/simulated/floor/plasteel{ @@ -65869,30 +66458,27 @@ /turf/simulated/floor/plating, /area/maintenance/fsmaint3) "jKN" = ( -/obj/effect/turf_decal/siding/red{ - dir = 5 +/obj/machinery/door/airlock/medical{ + name = "Brig Physician's Quarters"; + req_access = list(5); + security_level = 1 }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ - icon_state = "1-2" + d1 = 1; + d2 = 4; + icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 +/obj/structure/cable{ + icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" }, -/turf/simulated/floor/carpet/red, /area/security/medbay) -"jKU" = ( -/obj/structure/chair/sofa/right{ - dir = 4; - color = "#85130b" - }, -/obj/effect/turf_decal/siding/wood, -/turf/simulated/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/backstage) "jKZ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate, @@ -66002,7 +66588,9 @@ icon_state = "4-8" }, /obj/machinery/light, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "jLA" = ( /obj/machinery/atmospherics/pipe/simple/visible/purple{ @@ -66062,6 +66650,8 @@ }, /obj/item/clothing/accessory/holster, /obj/item/gun/projectile/revolver/mateba, +/obj/item/ammo_box/tox46x30mm, +/obj/item/ammo_box/inc46x30mm, /turf/simulated/floor/carpet/red, /area/security/hos) "jLH" = ( @@ -66190,17 +66780,20 @@ /turf/simulated/floor/bluegrid, /area/assembly/showroom) "jMH" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 4 +/obj/machinery/light, +/obj/structure/table/glass, +/obj/machinery/reagentgrinder{ + pixel_x = -1; + pixel_y = 9 }, -/obj/structure/cable/multiz{ - color = "#dd1010" +/obj/item/stack/sheet/mineral/plasma{ + amount = 5 }, -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 }, -/turf/simulated/floor/plating, +/obj/effect/decal/warning_stripes/north, +/turf/simulated/floor/plasteel, /area/medical/virology/lab) "jMK" = ( /obj/effect/spawner/window/reinforced/plasma, @@ -66338,6 +66931,24 @@ icon_state = "whitebluefull" }, /area/medical/medbay) +"jNE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/flasher{ + desc = "A floor-mounted flashbulb device."; + id = "brigkpp"; + layer = 5; + pixel_x = -55; + pixel_y = 0; + range = 3 + }, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/hallway/primary/central/second/west) "jNH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -66402,31 +67013,6 @@ icon_state = "neutralfull" }, /area/hallway/primary/central/nw) -"jOe" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/button/windowtint{ - pixel_y = -24; - pixel_x = 24; - id = "ntrepprivate"; - name = "Door tint control" - }, -/obj/machinery/door_control{ - id = "NTRprivate"; - name = "Privacy Shutters Control"; - pixel_x = 26; - pixel_y = -33; - req_access = list(73) - }, -/turf/simulated/floor/carpet/royalblack, -/area/ntrep) "jOs" = ( /obj/structure/cable{ icon_state = "0-8" @@ -66446,17 +67032,11 @@ /turf/simulated/floor/wood, /area/maintenance/casino) "jOz" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/alarm{ - pixel_y = 24 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "red" - }, -/area/security/interrogation) +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plating, +/area/maintenance/xenozoo) "jOA" = ( /turf/simulated/floor/plasteel{ icon_state = "redfull" @@ -66493,11 +67073,10 @@ /area/maintenance/tourist) "jPf" = ( /obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/effect/mapping_helpers/table_flip, /turf/simulated/floor/wood, /area/maintenance/library) "jPg" = ( @@ -66547,7 +67126,9 @@ /area/medical/research/nhallway) "jPA" = ( /obj/machinery/hologram/holopad, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "jPE" = ( /obj/structure/table, @@ -66670,6 +67251,27 @@ icon_state = "red" }, /area/security/processing) +"jQJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/mob/living/simple_animal/bot/secbot/beepsky{ + desc = "It's Officer Leftsky! Powered by a potato and a shot of whiskey."; + name = "Officer Leftsky" + }, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/security/lobby) "jQM" = ( /obj/effect/decal/warning_stripes/blue, /obj/machinery/portable_atmospherics/canister/oxygen, @@ -66726,9 +67328,6 @@ /turf/simulated/floor/plating, /area/maintenance/tourist) "jRe" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, @@ -66741,6 +67340,9 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -66804,18 +67406,6 @@ /obj/structure/sign/restroom, /turf/simulated/wall, /area/crew_quarters/bar/atrium) -"jRz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #1"; - id_tag = "xeno1" - }, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/toxins/xenobiology) "jRB" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ dir = 1; @@ -66875,6 +67465,24 @@ icon_state = "darkblue" }, /area/medical/surgery/south) +"jRZ" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/power/apc{ + cell_type = 5000; + dir = 4; + name = "east bump"; + pixel_x = 26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkblue" + }, +/area/security/medbay) "jSd" = ( /obj/structure/cable{ icon_state = "2-4" @@ -66914,6 +67522,18 @@ icon_state = "dark" }, /area/hallway/primary/command/west) +"jSp" = ( +/obj/machinery/light_construct{ + dir = 8 + }, +/obj/structure/chair/sofa/left{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/maintenance/apmaint) "jSr" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -66939,6 +67559,14 @@ icon_state = "neutral" }, /area/crew_quarters/serviceyard) +"jSA" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/curtain/open{ + anchored = 1; + color = "purple" + }, +/turf/simulated/floor/plating, +/area/janitor) "jST" = ( /obj/structure/cable{ d1 = 4; @@ -66956,6 +67584,17 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/maintcentral) +"jSU" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno2"; + name = "Creature Cell #2" + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) "jSX" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -67019,7 +67658,8 @@ dir = 8 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "jTE" = ( @@ -67051,7 +67691,6 @@ "jTS" = ( /obj/structure/table/reinforced, /obj/item/storage/firstaid/o2, -/obj/item/reagent_containers/spray/cleaner/medical, /obj/structure/extinguisher_cabinet{ name = "west extinguisher cabinet"; pixel_x = -27 @@ -67061,6 +67700,7 @@ dir = 4; network = list("SS13","Medical") }, +/obj/item/reagent_containers/spray/cleaner/medical, /turf/simulated/floor/plasteel{ icon_state = "whitebluefull" }, @@ -67082,6 +67722,16 @@ icon_state = "darkbluealt" }, /area/hallway/primary/command/east) +"jTY" = ( +/obj/machinery/conveyor/inverted{ + dir = 9; + id = "QMLoad" + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/quartermaster/delivery) "jUa" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -67204,6 +67854,10 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint) +"jVi" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/turf/simulated/floor/grass, +/area/maintenance/garden) "jVl" = ( /obj/machinery/conveyor_switch/oneway{ id = "QMLoad"; @@ -67359,7 +68013,8 @@ /area/atmos) "jWz" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/remains/mouse, +/obj/structure/closet/firecloset, +/obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/maintenance/xenozoo) "jWA" = ( @@ -67512,23 +68167,41 @@ icon_state = "vault" }, /area/turret_protected/aisat_interior/secondary) -"jXw" = ( -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #5"; - id_tag = "xeno5" - }, -/obj/effect/spawner/window/reinforced, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/toxins/xenobiology) "jXz" = ( /obj/structure/table/wood, /obj/item/camera, /turf/simulated/floor/plating, /area/maintenance/livingcomplex) +"jXD" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/door/window{ + color = "red"; + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/item/gun/projectile/automatic/wt550{ + pixel_x = -3 + }, +/obj/item/gun/projectile/automatic/wt550, +/obj/item/gun/projectile/automatic/wt550{ + pixel_x = 3 + }, +/obj/structure/rack/gunrack, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"jXF" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "red" + }, +/area/hallway/primary/central/west) "jXN" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -67539,6 +68212,16 @@ icon_state = "darkred" }, /area/security/evidence) +"jXQ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/tourist) "jXS" = ( /obj/structure/mineral_door/wood, /obj/effect/turf_decal/siding/wood{ @@ -67549,6 +68232,29 @@ /obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood, /area/maintenance/library) +"jYb" = ( +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + id_tag = "n_tool_airlock"; + layer = 3.3; + pixel_x = -25; + pixel_y = 0; + req_access = list(13); + tag_airpump = "n_tool_pump"; + tag_chamber_sensor = "n_tool_sensor"; + tag_exterior_door = "n_tool_outer"; + tag_interior_door = "n_tool_inner" + }, +/obj/machinery/airlock_sensor{ + id_tag = "n_tool_sensor"; + layer = 3.3; + pixel_x = -25; + pixel_y = 7 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) "jYf" = ( /obj/effect/spawner/window/reinforced/polarized{ id = "library_gameroom" @@ -67611,6 +68317,18 @@ }, /turf/simulated/floor/plating, /area/maintenance/secpost) +"jYQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = 6; + pixel_y = 12 + }, +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = -11; + pixel_y = 2 + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) "jYS" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -67631,32 +68349,6 @@ icon_state = "arrival" }, /area/hallway/secondary/entry) -"jYW" = ( -/obj/machinery/driver_button{ - id_tag = "toxinsdriver"; - pixel_x = 26; - pixel_y = -24 - }, -/obj/item/twohanded/required/kirbyplants, -/obj/structure/extinguisher_cabinet{ - pixel_y = -30 - }, -/obj/structure/cable/multiz{ - color = "#dd1010" - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/camera{ - c_tag = "Research Outpost Temporary Storage"; - network = list("Research Outpost"); - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whitepurple" - }, -/area/toxins/launch) "jYX" = ( /obj/structure/table/wood/fancy/red, /obj/item/paper_bin{ @@ -67722,7 +68414,8 @@ dir = 8 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "kac" = ( @@ -67962,26 +68655,6 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/heads) -"kbT" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 4 - }, -/obj/effect/turf_decal/number/number_2{ - dir = 1; - pixel_y = -10; - pixel_x = -6 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" - }, -/area/security/permahallway) -"kbY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/wood/fancy/black, -/obj/item/deck/cards, -/turf/simulated/floor/carpet/royalblack, -/area/maintenance/fsmaint2) "kbZ" = ( /turf/simulated/floor/plasteel, /area/quartermaster/miningdock) @@ -68002,13 +68675,11 @@ /area/maintenance/apmaint) "kch" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, /obj/structure/cable{ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ icon_state = "red" }, @@ -68019,6 +68690,11 @@ icon_state = "redcorner" }, /area/security/prison/cell_block/A) +"kct" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/spiderling_remains, +/turf/simulated/floor/plating, +/area/maintenance/gambling_den) "kcG" = ( /obj/machinery/firealarm{ dir = 1; @@ -68048,6 +68724,7 @@ /area/engineering/break_room) "kcN" = ( /obj/effect/decal/remains/mouse, +/obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood, /area/maintenance/livingcomplex) "kcQ" = ( @@ -68122,8 +68799,8 @@ "kdp" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "red" + dir = 1; + icon_state = "redcorner" }, /area/hallway/primary/central/second/west) "kds" = ( @@ -68152,7 +68829,7 @@ /obj/machinery/cell_charger, /obj/item/stock_parts/cell/high, /turf/simulated/floor/redgrid, -/area/tcommsat/chamber) +/area/tcommsat/server) "kdy" = ( /obj/machinery/computer/secure_data{ dir = 8 @@ -68273,6 +68950,19 @@ icon_state = "neutral" }, /area/crew_quarters/serviceyard) +"keR" = ( +/obj/structure/sign/vacuum{ + icon_state = "space1"; + pixel_x = -32 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/tourist) "kfa" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/warning_stripes/west, @@ -68294,18 +68984,6 @@ icon_state = "dark" }, /area/turret_protected/ai_upload) -"kff" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/engineering/gravitygenerator) "kfl" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ @@ -68356,7 +69034,7 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - dir = 4; + dir = 5; icon_state = "red" }, /area/security/reception) @@ -68506,9 +69184,26 @@ }, /turf/simulated/floor/plasteel{ dir = 4; - icon_state = "redcorner" + icon_state = "red" }, /area/security/prison/cell_block/A) +"kgH" = ( +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 4; + external_pressure_bound = 140; + external_pressure_bound_default = 140; + name = "server vent"; + on = 1; + pressure_checks = 0 + }, +/turf/simulated/floor/bluegrid{ + icon_state = "gcircuit"; + name = "Mainframe Floor"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/toxins/server) "kgI" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/visible/universal, @@ -68560,6 +69255,9 @@ }, /obj/structure/bed, /obj/machinery/light, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -68603,25 +69301,6 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/toilet) -"khy" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/door/window/brigdoor{ - name = "Creature Pen"; - req_access = list(47) - }, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #6"; - id_tag = "xeno6" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/toxins/xenobiology) "khz" = ( /obj/effect/decal/cleanable/dirt, /obj/item/clothing/gloves/color/latex/nitrile{ @@ -68666,6 +69345,25 @@ }, /turf/simulated/floor/plasteel, /area/security/permabrig) +"khS" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/door/window/brigdoor{ + name = "Creature Pen"; + req_access = list(47) + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno4"; + name = "Creature Cell #4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/toxins/xenobiology) "khX" = ( /obj/machinery/alarm{ dir = 1; @@ -68682,17 +69380,6 @@ icon_state = "dark" }, /area/crew_quarters/sleep) -"khZ" = ( -/obj/structure/sign/directions/cargo{ - dir = 4; - pixel_y = -8; - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "purple" - }, -/area/hallway/primary/fore) "kie" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/remains/mouse, @@ -68706,17 +69393,6 @@ }, /turf/simulated/floor/plasteel, /area/maintenance/xenozoo) -"kii" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #3"; - id_tag = "xeno3" - }, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/toxins/xenobiology) "kik" = ( /obj/effect/decal/warning_stripes/southwest, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -68744,7 +69420,7 @@ }, /area/crew_quarters/toilet4) "kiq" = ( -/obj/structure/chair/office, +/obj/structure/chair, /turf/simulated/floor/plasteel, /area/hallway/spacebridge/comcar) "kiz" = ( @@ -68769,7 +69445,6 @@ /area/toxins/storage) "kiE" = ( /obj/structure/table, -/obj/item/aiModule/reset, /obj/item/radio/intercom{ name = "east station intercom (General)"; pixel_x = 28 @@ -68809,18 +69484,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) -"kiS" = ( -/obj/machinery/door_control{ - id = "xeno7"; - name = "Containment Control"; - req_access = list(55); - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whitehall" - }, -/area/toxins/xenobiology) "kiT" = ( /obj/structure/spacepoddoor{ luminosity = 3 @@ -68859,18 +69522,6 @@ icon_state = "dark" }, /area/security/permabrig) -"kjf" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/engineering/gravitygenerator) "kjg" = ( /obj/machinery/camera{ c_tag = "Atmospherics Oxygen Tank"; @@ -68889,6 +69540,19 @@ icon_state = "wood-broken6" }, /area/maintenance/casino) +"kjz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/sofa/right{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/maintenance/apmaint) "kjF" = ( /obj/structure/window/reinforced{ dir = 4 @@ -68898,8 +69562,14 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) +"kjI" = ( +/obj/structure/flora/ausbushes/ywflowers, +/turf/simulated/floor/grass, +/area/maintenance/garden) "kjL" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -69057,6 +69727,16 @@ /obj/effect/decal/cleanable/glass, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"kle" = ( +/obj/machinery/newscaster{ + pixel_x = -30; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/crew_quarters/serviceyard) "klf" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel{ @@ -69085,24 +69765,6 @@ }, /turf/simulated/floor/plating, /area/engineering/engine) -"klz" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 2; - name = "Privacy Shutters"; - id_tag = "NTRprivate" - }, -/obj/effect/spawner/window/reinforced/polarized{ - id = "ntrepprivate" - }, -/turf/simulated/floor/plating, -/area/ntrep) "klA" = ( /obj/machinery/door/poddoor{ density = 0; @@ -69223,21 +69885,6 @@ icon_state = "neutralfull" }, /area/atmos) -"kmi" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Prison Solitary Confinement 2"; - dir = 9; - network = list("Prison","SS13") - }, -/turf/simulated/floor/plating, -/area/security/permabrig) "kml" = ( /obj/machinery/light, /turf/simulated/floor/plasteel{ @@ -69376,17 +70023,6 @@ color = "orange" }, /area/crew_quarters/captain/bedroom) -"knb" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/sofa/left{ - dir = 4; - color = "#85130b" - }, -/turf/simulated/floor/wood, -/area/maintenance/backstage) "kng" = ( /obj/effect/turf_decal/siding/wood{ dir = 8; @@ -69402,26 +70038,6 @@ icon_state = "wood-broken5" }, /area/maintenance/backstage) -"knh" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/door/window/brigdoor{ - dir = 8; - name = "Creature Pen"; - req_access = list(47) - }, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #7"; - id_tag = "xeno7" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/toxins/xenobiology) "kni" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -69558,37 +70174,22 @@ }, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/heads) -"koQ" = ( +"koY" = ( +/obj/effect/landmark/start/scientist, +/obj/structure/chair/office/light{ + dir = 8 + }, /obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4; name = "standard air scrubber"; on = 1; scrub_N2O = 1; - scrub_Toxins = 1; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "neutral" - }, -/area/hallway/spacebridge/somsec) -"koT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door_control{ - id = "FRange"; - name = "Firing Range Privacy Shutters Control"; - req_access = list(63); - pixel_y = 26 + scrub_Toxins = 1 }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "red" + icon_state = "white" }, -/area/security/range) +/area/toxins/mixing) "kpk" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -69698,29 +70299,6 @@ /obj/effect/spawner/random_spawners/grille_13, /turf/simulated/floor/plating, /area/maintenance/starboard) -"kqs" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/eastleft{ - name = "Hydroponics Desk"; - req_access = list(35); - dir = 1 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "Hydroponics Shutters"; - name = "Hydroponics Shutters"; - dir = 1 - }, -/obj/item/desk_bell{ - anchored = 1; - pixel_x = 7; - pixel_y = 7 - }, -/obj/item/reagent_containers/glass/bucket, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/hydroponics) "kqt" = ( /obj/machinery/newscaster{ pixel_x = -32 @@ -69744,6 +70322,9 @@ }, /turf/simulated/openspace, /area/quartermaster/delivery) +"kqy" = ( +/turf/simulated/wall, +/area/chapel/morgue) "kqz" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -69889,20 +70470,6 @@ icon_state = "darkred" }, /area/tcommsat/chamber) -"krP" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 4 - }, -/obj/effect/turf_decal/number/number_2{ - dir = 1; - pixel_y = -10; - pixel_x = -6 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "neutral" - }, -/area/hallway/secondary/entry/lounge) "krR" = ( /obj/structure/cable{ icon_state = "1-2" @@ -70065,6 +70632,20 @@ }, /turf/space, /area/space) +"ktH" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 4 + }, +/obj/effect/turf_decal/number/number_2{ + dir = 1; + pixel_x = -6; + pixel_y = -10 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/permahallway) "ktI" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ name = "standard air scrubber"; @@ -70085,17 +70666,6 @@ icon_state = "red" }, /area/hallway/primary/central/second/west) -"ktN" = ( -/obj/machinery/door/window/brigdoor{ - name = "Security Reception"; - req_access = list(1); - dir = 2; - color = "red" - }, -/turf/simulated/floor/plasteel{ - dir = 1 - }, -/area/security/range) "ktQ" = ( /obj/machinery/light, /turf/simulated/floor/plasteel{ @@ -70146,6 +70716,28 @@ }, /turf/simulated/floor/plasteel/freezer, /area/crew_quarters/toilet2) +"ktY" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 28 + }, +/obj/structure/table/reinforced, +/obj/item/storage/belt/utility, +/obj/item/storage/belt/utility, +/obj/item/wrench, +/obj/item/wrench, +/obj/item/clothing/glasses/welding, +/obj/item/clothing/glasses/welding, +/obj/machinery/camera{ + c_tag = "Research and Development East"; + dir = 9; + network = list("Research","SS13") + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/toxins/lab) "kua" = ( /obj/structure/toilet{ dir = 8 @@ -70327,7 +70919,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "kvy" = ( /obj/effect/decal/cleanable/ash, /turf/simulated/floor/plasteel, @@ -70348,32 +70940,10 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) -"kvG" = ( -/obj/effect/spawner/window/reinforced/polarized{ - id = "blueshieldofficewindows" - }, -/obj/machinery/door/poddoor/shutters{ - density = 0; - icon_state = "open"; - id_tag = "blueshield"; - name = "Privacy Shutters"; - opacity = 0; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor/plating, -/area/blueshield) "kvH" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 9 @@ -70402,15 +70972,6 @@ icon_state = "dark" }, /area/security/processing) -"kvO" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ - desc = "Труба хранит в себе набор газов для смешивания"; - name = "Труба смешивания"; - dir = 1 - }, -/turf/space, -/area/space) "kvW" = ( /obj/structure/chair/office/dark{ dir = 1 @@ -70449,39 +71010,6 @@ icon_state = "neutral" }, /area/hallway/secondary/entry/lounge) -"kwl" = ( -/obj/structure/table/wood/fancy/royalblack, -/obj/item/gavelblock{ - pixel_y = 6; - pixel_x = 6 - }, -/obj/item/gavelhammer{ - pixel_y = 7 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/button/windowtint{ - id = "courtroom"; - pixel_x = -6 - }, -/obj/machinery/door_control{ - id = "courtroombolts"; - name = "Courtroom Bolts Control"; - normaldoorcontrol = 1; - req_access = list(74); - specialfunctions = 4; - pixel_y = 7; - pixel_x = -6 - }, -/turf/simulated/floor/carpet/royalblack, -/area/crew_quarters/courtroom) "kwq" = ( /obj/effect/turf_decal/siding/white{ dir = 6 @@ -70492,8 +71020,7 @@ /obj/machinery/shower{ dir = 1; layer = 5; - pixel_y = -5; - on = 1 + pixel_y = -5 }, /obj/structure/curtain/open/shower, /obj/item/soap, @@ -70501,18 +71028,6 @@ icon_state = "freezerfloor" }, /area/medical/cmo) -"kwG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "red" - }, -/area/security/interrogation) "kwH" = ( /obj/structure/cable{ icon_state = "2-4" @@ -70622,20 +71137,6 @@ /obj/structure/grille, /turf/simulated/floor/plating/airless, /area/space) -"kxE" = ( -/obj/structure/window/reinforced{ - color = "red"; - dir = 8 - }, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/machinery/flasher/portable, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "kxF" = ( /obj/structure/table/reinforced, /obj/machinery/recharger{ @@ -70651,10 +71152,6 @@ /area/engineering/mechanic_workshop/hangar) "kxH" = ( /obj/machinery/light, -/obj/machinery/camera{ - c_tag = "Second Floor Central Ring South Hallway 2"; - dir = 1 - }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -70664,19 +71161,17 @@ /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/additional) "kxQ" = ( -/obj/machinery/photocopier, -/obj/machinery/alarm{ - pixel_y = 25 +/obj/structure/window/reinforced{ + dir = 1 }, -/obj/machinery/light{ - dir = 1; - in_use = 1 +/obj/structure/cable{ + icon_state = "4-8" }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "red" + dir = 9; + icon_state = "darkblue" }, -/area/security/reception) +/area/security/medbay) "kxR" = ( /obj/structure/table/wood, /obj/machinery/computer/library/public, @@ -70724,7 +71219,9 @@ /obj/structure/cable{ icon_state = "1-8" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "kyh" = ( /obj/structure/cable{ @@ -70774,6 +71271,20 @@ icon_state = "dark" }, /area/security/prisonershuttle) +"kyI" = ( +/obj/machinery/door_control{ + id = "xeno4"; + name = "Containment Control"; + pixel_x = 32; + req_access = list(55) + }, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/toxins/xenobiology) "kyJ" = ( /obj/structure/cable{ d1 = 4; @@ -70790,6 +71301,28 @@ icon_state = "white" }, /area/medical/ward) +"kyL" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/machinery/door/window{ + color = "red"; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "kyW" = ( /obj/structure/table/wood, /obj/structure/window/reinforced, @@ -70821,11 +71354,16 @@ dir = 5; network = list("SS13","Security") }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-4" }, /turf/simulated/floor/plasteel{ - dir = 8; + dir = 9; icon_state = "red" }, /area/security/reception) @@ -70842,6 +71380,17 @@ icon_state = "dark" }, /area/gateway) +"kzs" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno6"; + name = "Creature Cell #6" + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) "kzI" = ( /obj/item/shard{ icon_state = "medium"; @@ -70885,12 +71434,19 @@ }, /area/crew_quarters/captain) "kAc" = ( -/obj/machinery/door/window/brigdoor/security{ - name = "Brig Medical Bay"; +/obj/machinery/light_switch{ + pixel_x = 7; + pixel_y = 29 + }, +/obj/machinery/door_control{ + id = "SecMedPrivInside"; + name = "Brig Medbay Privacy Shutters Control"; + pixel_x = -5; + pixel_y = 28; req_access = list(63) }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/window/reinforced{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -70898,8 +71454,15 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/closet/crate/freezer, +/obj/item/tank/internals/emergency_oxygen/engi/empty, +/obj/item/tank/internals/emergency_oxygen/engi/empty, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/structure/cable{ + icon_state = "4-8" }, /turf/simulated/floor/plasteel{ dir = 1; @@ -70939,10 +71502,10 @@ /area/maintenance/fsmaint) "kAy" = ( /obj/effect/decal/warning_stripes/east, -/obj/machinery/flasher/portable, /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, +/obj/machinery/flasher/portable, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -71084,10 +71647,6 @@ /turf/simulated/floor/plasteel, /area/engineering/gravitygenerator) "kBz" = ( -/obj/machinery/alarm{ - dir = 4; - pixel_x = -24 - }, /obj/item/flag/sec, /turf/simulated/floor/plasteel{ dir = 1 @@ -71104,6 +71663,7 @@ pixel_x = 4; pixel_y = 4 }, +/obj/item/storage/box/lights/mixed, /turf/simulated/floor/plating, /area/maintenance/tourist) "kBH" = ( @@ -71147,6 +71707,15 @@ "kCc" = ( /turf/simulated/wall/r_wall, /area/medical/virology) +"kCf" = ( +/obj/machinery/conveyor{ + dir = 5; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/delivery) "kCj" = ( /obj/machinery/camera/emp_proof{ c_tag = "Singularity South-East"; @@ -71155,26 +71724,6 @@ }, /turf/simulated/floor/plating/airless, /area/engineering/engine) -"kCo" = ( -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/glass{ - id_tag = "magistrateoffice"; - name = "Magistrate's Office"; - req_access = list(74); - id = "tintmagistrateoffice"; - security_level = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/carpet/black, -/area/magistrateoffice) "kCp" = ( /turf/simulated/floor/plating, /area/maintenance/maintcentral) @@ -71213,6 +71762,12 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/security/securehallway) +"kCy" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkredcorners" + }, +/area/tcommsat/server) "kCC" = ( /obj/machinery/door/poddoor/shutters/preopen{ dir = 2; @@ -71229,17 +71784,6 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/security/evidence) -"kCH" = ( -/obj/structure/chair/sofa/left{ - dir = 4; - color = "#85130b" - }, -/obj/effect/turf_decal/siding/red{ - dir = 9 - }, -/obj/effect/landmark/start/civilian, -/turf/simulated/floor/carpet/black, -/area/crew_quarters/bar/atrium) "kCK" = ( /obj/structure/table/reinforced, /obj/item/storage/bag/bio, @@ -71326,35 +71870,23 @@ icon_state = "white" }, /area/medical/sleeper) -"kDA" = ( -/obj/effect/decal/warning_stripes/red, -/obj/item/radio/intercom{ - pixel_x = -28; - pixel_y = -8 - }, -/obj/structure/closet/hydrant{ - pixel_y = 32 +"kDD" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining{ + name = "Mining Deep Storage"; + req_access = list(31) }, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 9 +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Brig_lockdown"; + name = "Cargo Lockdown"; + opacity = 0 }, -/area/hallway/primary/fore) -"kDD" = ( -/obj/structure/ore_box, -/obj/effect/turf_decal/bot, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "brown" + icon_state = "brownfull" }, /area/quartermaster/miningstorage) -"kDG" = ( -/obj/machinery/newscaster{ - pixel_y = 0; - pixel_x = 32 - }, -/turf/simulated/floor/wood/dark, -/area/crew_quarters/bar/atrium) "kDL" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/grille/broken, @@ -71401,6 +71933,15 @@ icon_state = "arrival" }, /area/hallway/secondary/entry) +"kEd" = ( +/obj/structure/lattice, +/obj/machinery/camera{ + c_tag = "AI Satellite Exterior 11"; + dir = 8; + network = list("SS13","MiniSat") + }, +/turf/space/openspace, +/area/maintenance/ai) "kEg" = ( /obj/machinery/sleeper{ dir = 4; @@ -71512,6 +72053,24 @@ state = 7 }, /area/crew_quarters/bar) +"kFs" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 1; + id = "QMLoad2" + }, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2"; + layer = 2.494 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/delivery) "kFy" = ( /obj/structure/cable{ icon_state = "1-2" @@ -71538,13 +72097,16 @@ /turf/simulated/floor/wood, /area/crew_quarters/theatre) "kFL" = ( -/obj/structure/closet/crate, -/obj/machinery/alarm{ - pixel_y = 23 +/obj/structure/railing{ + dir = 8 }, -/obj/effect/turf_decal/bot, +/obj/structure/table, +/obj/item/kitchen/knife/combat/survival{ + pixel_x = 6 + }, +/obj/item/kitchen/knife/combat/survival, /turf/simulated/floor/plasteel{ - dir = 1; + dir = 9; icon_state = "brown" }, /area/quartermaster/miningstorage) @@ -71594,6 +72156,7 @@ c_tag = "Brig Cell 5"; dir = 6 }, +/obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -71742,6 +72305,19 @@ icon_state = "darkblue" }, /area/crew_quarters/fitness) +"kGU" = ( +/obj/structure/sign/directions/medical{ + dir = 1 + }, +/obj/structure/sign/directions/science{ + dir = 1; + pixel_y = 8 + }, +/obj/structure/sign/directions/evac{ + pixel_y = -8 + }, +/turf/simulated/wall, +/area/hallway/primary/central) "kGY" = ( /obj/machinery/light/small, /obj/effect/decal/cleanable/dirt, @@ -71817,19 +72393,6 @@ /obj/effect/decal/warning_stripes/southwest, /turf/simulated/floor/plasteel/airless, /area/toxins/test_area) -"kHS" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/highsecurity{ - name = "Secure Tech Storage"; - req_access = list(19,23); - check_one_access = 0; - security_level = 6 - }, -/turf/simulated/floor/plasteel, -/area/storage/tech) "kHT" = ( /obj/machinery/computer/brigcells, /obj/structure/cable{ @@ -71840,26 +72403,6 @@ icon_state = "darkbluealt" }, /area/security/warden) -"kHU" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/door/window/brigdoor{ - dir = 8; - name = "Creature Pen"; - req_access = list(47) - }, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #2"; - id_tag = "xeno2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/toxins/xenobiology) "kHV" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/oil, @@ -71930,21 +72473,6 @@ icon_state = "purple" }, /area/hallway/primary/central/ne) -"kIy" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/turretid/stun{ - control_area = "AI Upload Chamber"; - name = "AI Upload Turret Control"; - pixel_y = -24; - req_access = list(75); - pixel_x = 32 - }, -/turf/simulated/floor/plasteel/dark, -/area/turret_protected/ai_upload) "kIz" = ( /obj/structure/sign/poster/official/random{ pixel_y = 32 @@ -71990,20 +72518,6 @@ icon_state = "whiteblue" }, /area/medical/surgery/south) -"kIO" = ( -/obj/structure/table/wood, -/obj/item/clothing/mask/cigarette/rollie{ - pixel_y = 9 - }, -/obj/item/clothing/mask/cigarette/rollie{ - pixel_y = 3; - pixel_x = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 1 - }, -/area/maintenance/trading) "kIU" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -72015,7 +72529,8 @@ }, /obj/machinery/hologram/holopad, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "kJc" = ( @@ -72095,17 +72610,6 @@ /obj/structure/rack, /turf/simulated/floor/plating, /area/maintenance/asmaint4) -"kKa" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/table/wood/fancy/red, -/obj/item/candle{ - pixel_y = 4; - pixel_x = -9 - }, -/turf/simulated/floor/carpet/red, -/area/crew_quarters/theatre) "kKg" = ( /obj/structure/chair/office/light{ dir = 4 @@ -72264,12 +72768,13 @@ }, /area/hallway/primary/central/second/south) "kLA" = ( -/obj/structure/stairs{ - dir = 1 - }, /obj/structure/railing{ dir = 4 }, +/obj/structure/stairs{ + dir = 1; + layer = 2 + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -72287,7 +72792,9 @@ /obj/structure/sign/poster/official/random{ pixel_y = 32 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "kLQ" = ( /obj/structure/cable{ @@ -72361,23 +72868,6 @@ icon_state = "darkblue" }, /area/hallway/secondary/exit) -"kMk" = ( -/obj/machinery/door/window/brigdoor{ - dir = 2; - color = "red" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "rampbottom" - }, -/area/maintenance/gambling_den) "kMo" = ( /turf/simulated/floor/plasteel, /area/quartermaster/miningstorage) @@ -72394,18 +72884,22 @@ icon_state = "darkblue" }, /area/aisat/aihallway) -"kMA" = ( -/obj/structure/table, -/obj/item/hand_tele, -/obj/machinery/status_display{ - pixel_x = 32 +"kMv" = ( +/obj/machinery/firealarm{ + dir = 1; + name = "south fire alarm"; + pixel_x = 29; + pixel_y = -25 }, -/obj/item/radio/intercom{ - pixel_y = -26; - pixel_x = 26 +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/simulated/floor/plasteel/white, -/area/teleporter) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "purplecorner" + }, +/area/hallway/primary/fore) "kMN" = ( /obj/effect/landmark/event/lightsout, /obj/machinery/hologram/holopad, @@ -72512,6 +73006,9 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/security/permabrig) +"kNF" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/central/second/north) "kNH" = ( /obj/effect/decal/novastation{ icon_state = "NStation5" @@ -72521,8 +73018,30 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) +"kNL" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/door/window/brigdoor{ + dir = 8; + name = "Creature Pen"; + req_access = list(47) + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno3"; + name = "Creature Cell #3" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/toxins/xenobiology) "kNN" = ( /obj/effect/decal/warning_stripes/west, /obj/structure/reagent_dispensers/fueltank, @@ -72635,15 +73154,6 @@ /obj/item/cultivator, /turf/simulated/floor/grass, /area/maintenance/garden) -"kOP" = ( -/obj/machinery/conveyor{ - id = "QMLoad"; - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "brown" - }, -/area/quartermaster/delivery) "kOQ" = ( /obj/item/flag/nt, /turf/simulated/floor/wood/fancy/light, @@ -72671,7 +73181,7 @@ color = "#996633" }, /obj/item/reagent_containers/food/snacks/meatsteak, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "kPe" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction, @@ -72731,6 +73241,24 @@ icon_state = "bluecorner" }, /area/hallway/primary/fore) +"kPp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/security/lobby) "kPq" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=A37"; @@ -72756,11 +73284,7 @@ }, /area/hallway/primary/central/east) "kPs" = ( -/obj/structure/closet/emcloset, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light_construct, -/turf/simulated/floor/plasteel, +/turf/simulated/openspace, /area/maintenance/xenozoo) "kPw" = ( /obj/structure/cable{ @@ -72900,6 +73424,28 @@ /obj/effect/turf_decal/siding/wood, /turf/simulated/floor/carpet, /area/medical/psych) +"kQH" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/table/wood/fancy/red, +/obj/item/lighter/zippo/hos{ + pixel_x = -6; + pixel_y = 1 + }, +/obj/item/reagent_containers/food/drinks/mug/hos{ + pixel_x = 9; + pixel_y = 1 + }, +/obj/item/paper/safe_code{ + owner = "hos" + }, +/obj/item/spacepod_equipment/key{ + id = 100000; + pixel_y = 10 + }, +/turf/simulated/floor/wood, +/area/security/hos) "kQN" = ( /obj/machinery/computer/security/telescreen/test_chamber{ pixel_y = 32 @@ -72915,7 +73461,7 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -73007,6 +73553,17 @@ }, /turf/simulated/floor/carpet/green, /area/crew_quarters/mrchangs) +"kRz" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno7"; + name = "Creature Cell #7" + }, +/obj/effect/spawner/window/reinforced/plasma, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) "kRN" = ( /obj/structure/cable{ icon_state = "4-8" @@ -73069,6 +73626,17 @@ "kRZ" = ( /turf/simulated/wall/r_wall, /area/engineering/engine/monitor) +"kSh" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 1 + }, +/obj/effect/turf_decal/number/number_1{ + dir = 1; + pixel_y = -15 + }, +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel/dark, +/area/maintenance/starboardaux) "kSp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -73129,6 +73697,33 @@ }, /turf/simulated/floor/glass/reinforced, /area/engineering/mechanic_workshop/hangar) +"kSK" = ( +/obj/structure/disposalpipe/sortjunction{ + dir = 1; + icon_state = "pipe-j2s"; + name = "Captain's Office"; + sortType = 18 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/turf_decal{ + dir = 8; + icon_state = "golden_stripes" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) "kSL" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -73141,6 +73736,22 @@ }, /turf/simulated/floor/plating, /area/maintenance/starboard) +"kSO" = ( +/obj/structure/table/wood/fancy/blue, +/obj/item/lighter/zippo/hop, +/obj/item/paper/monitorkey{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/item/toy/figure/hop{ + pixel_x = -8; + pixel_y = 10 + }, +/turf/simulated/floor/wood/fancy/light, +/area/crew_quarters/heads/hop) "kTb" = ( /obj/structure/chair/office/dark, /obj/effect/landmark/start/virologist, @@ -73154,13 +73765,10 @@ }, /obj/machinery/hologram/holopad, /obj/effect/decal/warning_stripes/green/hollow, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, /turf/simulated/floor/plasteel{ icon_state = "white" }, -/area/medical/virology/lab) +/area/medical/virology) "kTd" = ( /obj/effect/spawner/window/reinforced, /obj/structure/sign/securearea{ @@ -73181,7 +73789,7 @@ /area/chapel/office) "kTl" = ( /obj/effect/decal/warning_stripes/yellow, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/plating, /area/maintenance/tourist) "kTo" = ( /obj/machinery/atmospherics/unary/portables_connector, @@ -73301,6 +73909,18 @@ icon_state = "white" }, /area/medical/research) +"kUb" = ( +/obj/machinery/door_control{ + id = "xeno2"; + name = "Containment Control"; + pixel_x = -32; + req_access = list(55) + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitehall" + }, +/area/toxins/xenobiology) "kUc" = ( /obj/structure/cable{ icon_state = "4-8" @@ -73315,13 +73935,13 @@ dir = 4; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "kUj" = ( /obj/machinery/camera{ c_tag = "NT Representative's Office 2"; dir = 6 }, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "kUn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -73334,9 +73954,6 @@ /turf/space/openspace, /area/space) "kUw" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 10; @@ -73349,6 +73966,42 @@ icon_state = "yellow" }, /area/engineering/break_room) +"kUC" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/machinery/door/window{ + color = "red"; + dir = 1; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/machinery/door/window{ + color = "red"; + dir = 2; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/structure/window/reinforced{ + color = "red"; + dir = 4 + }, +/obj/item/gun/projectile/automatic/pistol/enforcer/security{ + pixel_y = -3 + }, +/obj/item/gun/projectile/automatic/pistol/enforcer/security{ + pixel_x = 3 + }, +/obj/item/gun/projectile/automatic/pistol/enforcer/security{ + pixel_x = 6; + pixel_y = 3 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark" + }, +/area/security/securearmory) "kUD" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -73478,6 +74131,17 @@ /obj/effect/spawner/random_spawners/cobweb_right_frequent, /turf/simulated/floor/carpet/green, /area/maintenance/library) +"kVi" = ( +/obj/machinery/atmospherics/unary/cold_sink/freezer{ + current_temperature = 80; + dir = 4; + on = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkpurple" + }, +/area/toxins/server) "kVj" = ( /obj/structure/chair/stool, /obj/effect/decal/cleanable/dust, @@ -73503,7 +74167,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "kVB" = ( /obj/machinery/mech_bay_recharge_port{ @@ -73516,19 +74180,6 @@ }, /turf/simulated/floor/plating, /area/assembly/showroom) -"kVN" = ( -/obj/structure/table/wood, -/obj/item/folder/yellow, -/obj/item/folder/red{ - pixel_y = 2; - pixel_x = 2 - }, -/obj/item/folder/blue{ - pixel_y = 4; - pixel_x = 4 - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/magistrateoffice) "kVS" = ( /obj/structure/window/reinforced{ dir = 4 @@ -73536,6 +74187,12 @@ /obj/structure/lattice, /turf/space/openspace, /area/space) +"kVT" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central/west) "kVV" = ( /obj/structure/chair{ dir = 8 @@ -73569,6 +74226,27 @@ /obj/effect/decal/cleanable/dust, /turf/simulated/floor/carpet, /area/maintenance/library) +"kWh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/button/windowtint{ + dir = 8; + id = "psychprivate"; + name = "Door tint control"; + pixel_x = 23; + pixel_y = 25 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/door_control{ + id = "Psychoprivate"; + name = "Privacy shutters Control"; + pixel_x = 24; + pixel_y = 34; + req_access = list(64) + }, +/turf/simulated/floor/carpet, +/area/medical/psych) "kWi" = ( /obj/structure/cable{ icon_state = "4-8" @@ -73606,6 +74284,7 @@ }, /obj/item/rcs, /obj/structure/table/reinforced, +/obj/item/rcs, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -73759,7 +74438,9 @@ icon_state = "1-8" }, /obj/structure/cable{ - icon_state = "1-2" + d1 = 1; + d2 = 4; + icon_state = "1-4" }, /turf/simulated/floor/plasteel{ dir = 1; @@ -73772,6 +74453,15 @@ icon_state = "darkbluecornersalt" }, /area/hallway/primary/central/second/north) +"kXp" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/delivery) "kXq" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/machinery/atmospherics/pipe/manifold/visible{ @@ -73812,6 +74502,16 @@ /obj/item/bedsheet/orange, /turf/simulated/floor/wood, /area/crew_quarters/cabin3) +"kXv" = ( +/obj/machinery/door/airlock/security/glass{ + id_tag = "BrigRight"; + locked = 1; + name = "Brig Mechbay"; + req_access = list(63); + welded = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/secpost) "kXE" = ( /obj/machinery/light/small{ dir = 1 @@ -73883,18 +74583,9 @@ tag = "icon-vault (NORTHEAST)" }, /area/medical/morgue) -"kYo" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "red" - }, -/area/security/interrogation) "kYp" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 }, /turf/simulated/floor/plasteel{ dir = 1 @@ -74172,17 +74863,6 @@ icon_state = "brown" }, /area/quartermaster/miningstorage) -"laf" = ( -/obj/structure/table/reinforced, -/obj/structure/curtain/open{ - color = "#222222"; - anchored = 1 - }, -/obj/item/clothing/gloves/color/black, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/maintenance/trading) "lam" = ( /obj/effect/spawner/random_barrier/possibly_welded_airlock{ layer = 2.9 @@ -74397,19 +75077,6 @@ icon_state = "neutral" }, /area/hallway/primary/central/second/east) -"lbI" = ( -/obj/structure/curtain/open/shower/security{ - alpha = 255; - name = "backstage"; - anchored = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/crew_quarters/theatre) "lbJ" = ( /obj/structure/closet/walllocker/emerglocker{ pixel_y = 32 @@ -74440,14 +75107,6 @@ }, /turf/simulated/floor/carpet, /area/maintenance/casino) -"lbO" = ( -/obj/machinery/conveyor{ - id = "garbage"; - dir = 4 - }, -/obj/effect/decal/warning_stripes/north, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "lbQ" = ( /obj/machinery/suit_storage_unit/engine, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -74511,19 +75170,6 @@ }, /turf/simulated/floor/carpet/red, /area/lawoffice) -"lcj" = ( -/obj/structure/bed, -/obj/item/bedsheet/medical, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2"; - tag = "" - }, -/turf/simulated/floor/carpet/green, -/area/medical/virology) "lcn" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -74547,6 +75193,21 @@ icon_state = "freezerfloor" }, /area/medical/virology/lab) +"lcB" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/caution/stand_clear, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) "lcH" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/siding/wood{ @@ -74632,6 +75293,15 @@ }, /turf/simulated/floor/greengrid, /area/security/nuke_storage) +"ldG" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) "ldJ" = ( /obj/structure/barricade/security, /obj/effect/decal/cleanable/dirt, @@ -74657,23 +75327,23 @@ /turf/simulated/wall, /area/toxins/xenobiology) "ldS" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/turf/simulated/floor/plasteel{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/area/security/prison/cell_block/A) +"ldZ" = ( +/obj/machinery/power/apc{ + name = "south bump"; + pixel_y = -26 }, /obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 + icon_state = "0-4" }, -/turf/simulated/floor/wood, -/area/hallway/primary/central/west) +/turf/simulated/floor/greengrid, +/area/turret_protected/ai) "led" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -74752,6 +75422,29 @@ icon_state = "tranquillite" }, /area/crew_quarters/kitchen) +"leG" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/machinery/door/window{ + color = "red"; + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/clothing/gloves/combat/riot, +/obj/item/clothing/gloves/combat/riot, +/obj/item/clothing/gloves/combat/riot, +/obj/item/clothing/gloves/combat/riot, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "leJ" = ( /obj/machinery/requests_console{ department = "EVA"; @@ -74804,6 +75497,10 @@ dir = 8 }, /obj/machinery/vending/cigarette, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 24 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "brown" @@ -74888,6 +75585,15 @@ /obj/machinery/door/airlock/maintenance, /turf/simulated/floor/plating, /area/maintenance/fsmaint3) +"lfV" = ( +/obj/structure/sign/chemistry{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) "lgl" = ( /obj/structure/table, /obj/item/reagent_containers/food/condiment/saltshaker{ @@ -74964,6 +75670,17 @@ icon_state = "whitehall" }, /area/toxins/xenobiology) +"lgw" = ( +/obj/item/candle{ + pixel_x = -9; + pixel_y = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/table/wood/fancy/red, +/turf/simulated/floor/carpet/red, +/area/crew_quarters/theatre) "lgx" = ( /obj/structure/table/wood, /obj/item/storage/photo_album, @@ -75024,6 +75741,10 @@ icon_state = "bluefull" }, /area/hallway/primary/fore) +"lgM" = ( +/obj/effect/decal/cleanable/spiderling_remains, +/turf/simulated/floor/carpet/red, +/area/maintenance/backstage) "lgR" = ( /turf/simulated/floor/plasteel{ icon_state = "red" @@ -75034,6 +75755,30 @@ icon_state = "white" }, /area/medical/medbay2) +"lgV" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/hatch{ + name = "MiniSat Transit"; + req_access = list(19,32) + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/poddoor{ + id_tag = "transitlock"; + layer = 3; + name = "Transit AI Sattelite Blast Doors" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/engineering/aienter) "lgX" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/firecloset, @@ -75147,6 +75892,9 @@ }, /area/solar/starboard) "lhJ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "red" @@ -75304,6 +76052,20 @@ icon_state = "darkgreen" }, /area/crew_quarters/fitness) +"liW" = ( +/obj/machinery/firealarm{ + dir = 8; + name = "west fire alarm"; + pixel_x = -24 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) "ljh" = ( /obj/effect/spawner/lootdrop/maintenance{ lootcount = 2; @@ -75340,13 +76102,14 @@ }, /area/crew_quarters/kitchen) "ljB" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/railing/corner{ + dir = 8 }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whitepurple"; - tag = "icon-whitepurple (NORTH)" + icon_state = "purplefull" }, /area/toxins/launch) "ljG" = ( @@ -75405,7 +76168,8 @@ /area/crew_quarters/theatre) "lki" = ( /obj/structure/stairs{ - dir = 1 + dir = 1; + layer = 2 }, /turf/simulated/floor/plating, /area/maintenance/asmaint2) @@ -75663,6 +76427,18 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/gambling_den) +"lmi" = ( +/obj/machinery/camera{ + c_tag = "Research West Central Hallway"; + dir = 6; + network = list("Research","SS13") + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple"; + tag = "icon-whitepurple (NORTH)" + }, +/area/medical/research/nhallway) "lmm" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/event/blobstart, @@ -75762,26 +76538,24 @@ icon_state = "barber" }, /area/crew_quarters/locker) -"lnp" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 2; - name = "Privacy Shutters"; - id_tag = "NTRprivate" - }, -/obj/effect/spawner/window/reinforced/polarized{ - id = "ntrepprivate" - }, -/turf/simulated/floor/plating, -/area/ntrep) "lnu" = ( /turf/simulated/floor/plasteel{ dir = 8; icon_state = "greencorner" }, /area/hallway/secondary/exit) +"lnv" = ( +/obj/effect/decal/warning_stripes/arrow{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/yellow/partial{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "blue" + }, +/area/hallway/primary/central/north) "lnx" = ( /obj/structure/extinguisher_cabinet{ name = "east extinguisher cabinet"; @@ -75901,9 +76675,19 @@ }, /turf/simulated/floor/plating, /area/maintenance/fsmaint) +"loB" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 1; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/engine, +/area/engineering/controlroom) "loQ" = ( /obj/machinery/disposal, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "loR" = ( /obj/effect/decal/warning_stripes/yellow, @@ -76050,10 +76834,11 @@ id_tag = "ntstation"; locked = 1 }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/plating, /area/maintenance/tourist) "lpK" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood{ icon_state = "wood-broken3"; tag = "icon-wood-broken3" @@ -76219,33 +77004,16 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/maintenance/asmaint) -"lqX" = ( -/obj/structure/table/glass, -/obj/machinery/light, -/obj/item/reagent_containers/iv_bag, -/obj/item/reagent_containers/iv_bag{ - pixel_y = 2; - pixel_x = 2 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whiteblue" - }, -/area/medical/surgery/south) "lqY" = ( -/obj/structure/table/reinforced, -/obj/item/flashlight/lamp{ - layer = 4; - pixel_x = 7; - pixel_y = 12 - }, -/obj/item/radio/intercom/department/security{ - pixel_y = -4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/machinery/door/airlock/external{ + frequency = 1379; + id_tag = "vir_maint2_outer"; + locked = 1; + name = "West Maintenance External Access" }, -/area/security/interrogation) +/obj/effect/decal/warning_stripes/west, +/turf/simulated/floor/plating, +/area/maintenance/asmaint4) "lqZ" = ( /obj/effect/decal/warning_stripes/northeast, /turf/simulated/floor/plasteel, @@ -76530,6 +77298,21 @@ /obj/effect/decal/warning_stripes/northeast, /turf/simulated/floor/plasteel/airless, /area/toxins/test_area) +"ltK" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters{ + density = 0; + dir = 1; + icon_state = "open"; + id_tag = "brig_detprivacy"; + name = "Detective Privacy Shutters"; + opacity = 0 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/security/detectives_office) "ltL" = ( /obj/effect/landmark/start/trainee_engineer, /turf/simulated/floor/plasteel, @@ -76648,6 +77431,24 @@ icon_state = "red" }, /area/security/main) +"luW" = ( +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/dirt, +/obj/item/soap/nanotrasen, +/obj/item/shard{ + icon_state = "medium"; + pixel_x = 1; + pixel_y = -9 + }, +/obj/item/shard, +/obj/structure/curtain/open/shower/security{ + alpha = 255; + anchored = 1; + name = "backstage"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/backstage) "luY" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 @@ -76844,6 +77645,15 @@ /obj/structure/disposalpipe/trunk, /turf/simulated/floor/wood, /area/crew_quarters/arcade) +"lwL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/interrogation) "lxc" = ( /obj/structure/railing/corner{ dir = 4 @@ -76853,6 +77663,22 @@ icon_state = "neutral" }, /area/crew_quarters/fitness) +"lxh" = ( +/obj/machinery/door_control{ + id = "janitorprivatshutters"; + name = "Janitor Private Shutters Control"; + pixel_x = 26; + pixel_y = -26; + req_access = list(26) + }, +/obj/machinery/light_switch{ + dir = 1; + name = "south bump"; + pixel_x = 26; + pixel_y = -35 + }, +/turf/simulated/floor/carpet/purple, +/area/janitor) "lxj" = ( /obj/machinery/status_display{ layer = 4; @@ -76905,21 +77731,6 @@ icon_state = "red" }, /area/security/processing) -"lxw" = ( -/obj/machinery/disposal, -/obj/structure/sign/deathsposal{ - pixel_y = 0; - pixel_x = 32 - }, -/obj/effect/decal/warning_stripes/red, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "red" - }, -/area/security/main) "lxy" = ( /obj/structure/cable{ icon_state = "1-2" @@ -76985,23 +77796,18 @@ }, /turf/simulated/floor/glass/reinforced, /area/engineering/mechanic_workshop/hangar) -"lyd" = ( -/obj/machinery/atmospherics/trinary/filter/flipped{ - desc = "Отфильтровывает азот из трубы и отправляет их в камеру хранения"; - name = "Фильтр Азота (N2)"; - on = 1; - target_pressure = 4500; - filter_type = 2 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +"lyi" = ( +/obj/structure/window/reinforced, +/obj/item/flag/nt, +/obj/structure/sign/beautyplaque{ + desc = "Важное Уточнение! Рабочие пожелали оставаться анонимными, поэтому, обойдёмся их прозвищами. За помощь Главному Инженеру Новы в поисках и устранении неисправностей на станции НаноТрейзен. С благодарностью, Saad603. Слава НаноТрейзен!"; + name = "Благодарственное Письмо от Главного Инженера станции Нова"; + pixel_y = 32 }, /turf/simulated/floor/plasteel{ - icon_state = "yellowfull" + icon_state = "dark" }, -/area/maintenance/atmospherics) +/area/bridge) "lyl" = ( /obj/machinery/light/small{ dir = 4 @@ -77031,11 +77837,26 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whiteblue" }, /area/medical/paramedic) +"lyv" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whitepurple" + }, +/area/toxins/lab) "lyx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -77178,24 +77999,6 @@ icon_state = "cafeteria" }, /area/medical/research/restroom) -"lzK" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "Kitchen Dinner Windows"; - name = "Kitchen Shutters"; - dir = 2 - }, -/obj/machinery/door/window/westright{ - dir = 2; - name = "Kitchen"; - req_access = list(28) - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "dark" - }, -/area/crew_quarters/kitchen) "lzL" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -77286,24 +78089,6 @@ /obj/effect/spawner/random_spawners/oil_20, /turf/simulated/floor/plating, /area/maintenance/trading) -"lAf" = ( -/obj/machinery/door/window{ - dir = 2; - name = "Mass Driver"; - req_access = list(22) - }, -/obj/machinery/mass_driver{ - id_tag = "chapelgun"; - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/plating, -/area/chapel/main) "lAj" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -77377,25 +78162,6 @@ icon_state = "dark" }, /area/chapel/office) -"lBk" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/door/window/brigdoor{ - name = "Creature Pen"; - req_access = list(47) - }, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #5"; - id_tag = "xeno5" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/toxins/xenobiology) "lBr" = ( /obj/structure/lattice, /obj/structure/grille, @@ -77539,26 +78305,10 @@ icon_state = "neutralfull" }, /area/hallway/primary/central/nw) -"lCo" = ( -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/door/poddoor/shutters{ - density = 0; - icon_state = "open"; - id_tag = "rdprivacy"; - name = "Research Director Office Shutters"; - opacity = 0; - dir = 2 - }, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/toxins/rdoffice) "lCp" = ( +/obj/machinery/status_display{ + pixel_y = 32 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitegreen" @@ -77573,7 +78323,7 @@ dir = 9; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "lCA" = ( /turf/simulated/wall, /area/hallway/primary/port/south) @@ -77660,7 +78410,7 @@ dir = 8; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "lDe" = ( /obj/machinery/atmospherics/unary/outlet_injector/on{ dir = 1 @@ -77725,6 +78475,7 @@ /obj/machinery/atmospherics/pipe/simple/visible{ dir = 6 }, +/obj/effect/spawner/random_spawners/rodent, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -77755,10 +78506,17 @@ /turf/simulated/floor/plasteel, /area/engineering/engine) "lDX" = ( -/obj/structure/closet/bombcloset, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -26 + }, +/obj/structure/railing/corner, /turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "whitepurple" + icon_state = "purplefull" }, /area/toxins/launch) "lEk" = ( @@ -78009,15 +78767,6 @@ /obj/random/tool, /turf/simulated/floor/plating, /area/maintenance/perma) -"lFM" = ( -/obj/structure/lattice, -/obj/machinery/camera{ - c_tag = "AI Satellite Exterior 11"; - network = list("SS13","MiniSat"); - dir = 8 - }, -/turf/space/openspace, -/area/maintenance/ai) "lFQ" = ( /obj/structure/window/reinforced{ dir = 8 @@ -78059,7 +78808,8 @@ }, /obj/effect/turf_decal/caution/red, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "lGe" = ( @@ -78159,14 +78909,6 @@ /obj/structure/flora/ausbushes/reedbush, /turf/simulated/floor/grass, /area/hallway/secondary/exit) -"lGS" = ( -/obj/effect/spawner/window/reinforced, -/obj/structure/curtain/open{ - color = "purple"; - anchored = 1 - }, -/turf/simulated/floor/plating, -/area/janitor) "lGZ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -78221,18 +78963,16 @@ }, /area/maintenance/trading) "lHD" = ( -/obj/machinery/door/airlock/silver{ - name = "Bathroom" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" +/obj/structure/cable{ + icon_state = "1-8" }, +/turf/simulated/floor/carpet/green, /area/medical/virology) "lHL" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ @@ -78393,32 +79133,6 @@ icon_state = "dark" }, /area/turret_protected/aisat_interior) -"lJx" = ( -/obj/effect/decal/warning_stripes/red/hollow, -/obj/structure/window/reinforced{ - color = "red"; - dir = 1 - }, -/obj/structure/rack/gunrack, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/machinery/door/window{ - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/obj/item/gun/energy/laser, -/obj/item/gun/energy/laser{ - pixel_x = 3 - }, -/obj/item/gun/energy/laser{ - pixel_x = 6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "lJK" = ( /obj/structure/cable{ icon_state = "2-4" @@ -78442,7 +79156,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "lJU" = ( /obj/structure/window/reinforced{ dir = 8 @@ -78453,6 +79167,23 @@ icon_state = "whitehall" }, /area/medical/genetics) +"lJY" = ( +/obj/machinery/door/window/brigdoor{ + color = "red"; + dir = 2 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "rampbottom" + }, +/area/maintenance/gambling_den) "lJZ" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -78522,7 +79253,8 @@ /area/medical/chemistry) "lKB" = ( /obj/structure/stairs{ - dir = 1 + dir = 1; + layer = 2 }, /turf/simulated/floor/plasteel{ dir = 1 @@ -78578,19 +79310,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint3) -"lKV" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 4 - }, -/obj/effect/turf_decal/number/number_2{ - dir = 1; - pixel_y = -10; - pixel_x = -6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "purple" - }, -/area/hallway/secondary/entry/lounge) "lLb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal{ dir = 4 @@ -78605,6 +79324,13 @@ /obj/machinery/seed_extractor, /turf/simulated/floor/wood, /area/maintenance/garden) +"lLl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/security/medbay) "lLp" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/warning_stripes/southwest, @@ -78620,20 +79346,6 @@ icon_state = "dark" }, /area/engineering/mechanic_workshop/hangar) -"lLD" = ( -/obj/machinery/light/small, -/obj/machinery/camera{ - c_tag = "Brig Cells"; - network = list("SS13","Security"); - dir = 10 - }, -/obj/machinery/door_timer/cell_6{ - pixel_y = -32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "redcorner" - }, -/area/security/prison/cell_block/A) "lLG" = ( /obj/machinery/portable_atmospherics/canister, /turf/simulated/floor/plasteel{ @@ -78705,6 +79417,9 @@ dir = 4 }, /obj/structure/window/reinforced, +/obj/machinery/light{ + dir = 8 + }, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkblue" @@ -78802,7 +79517,7 @@ /obj/structure/closet/radiation, /obj/effect/decal/warning_stripes/southeast, /turf/simulated/floor/plasteel, -/area/engineering/engine) +/area/engineering/break_room) "lNh" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -78931,6 +79646,16 @@ icon_state = "navybluealt" }, /area/security/warden) +"lOj" = ( +/obj/structure/table/reinforced, +/obj/structure/curtain/open{ + anchored = 1; + color = "#222222" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/trading) "lOq" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ @@ -78962,16 +79687,12 @@ }, /area/medical/biostorage) "lOv" = ( -/obj/machinery/disposal, /obj/machinery/vending/wallmed{ pixel_x = -25 }, -/obj/effect/decal/warning_stripes/yellow, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 8; + icon_state = "green" }, /area/hydroponics) "lOz" = ( @@ -79110,27 +79831,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/brig) -"lPM" = ( -/obj/structure/table/wood, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/item/folder/yellow, -/obj/item/folder/blue{ - pixel_y = 2; - pixel_x = 2 - }, -/obj/item/folder/red{ - pixel_y = 4; - pixel_x = 4 - }, -/obj/effect/turf_decal{ - icon_state = "golden_stripes" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/bridge/meeting_room) "lPP" = ( /obj/machinery/ai_status_display, /turf/simulated/wall/r_wall, @@ -79140,10 +79840,33 @@ dir = 1; pixel_y = -24 }, +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, /turf/simulated/floor/plasteel{ icon_state = "whitegreen" }, /area/medical/virology/lab) +"lPU" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/lipstick/random, +/obj/item/lipstick/random{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/lipstick/random{ + pixel_y = 6 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/civilian/barber) "lPW" = ( /obj/structure/barricade/wooden, /obj/effect/decal/cleanable/dirt, @@ -79498,6 +80221,15 @@ }, /turf/simulated/floor/plating, /area/maintenance/starboard) +"lSD" = ( +/obj/machinery/alarm{ + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/primary/central/south) "lSL" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/effect/decal/warning_stripes/east, @@ -79997,9 +80729,9 @@ }, /area/maintenance/fsmaint3) "lWn" = ( -/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ - dir = 1 + dir = 1; + icon_state = "redcorner" }, /area/security/lobby) "lWo" = ( @@ -80053,16 +80785,6 @@ /obj/structure/closet/firecloset, /turf/simulated/floor/plating, /area/maintenance/fsmaint3) -"lWD" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ - desc = "Труба хранит в себе набор газов для смешивания"; - name = "Труба смешивания"; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/atmos) "lWE" = ( /obj/machinery/status_display{ pixel_y = -32 @@ -80089,6 +80811,7 @@ /area/maintenance/library) "lWJ" = ( /obj/structure/window/full/plasmareinforced, +/obj/structure/grille, /turf/simulated/floor/plating, /area/engineering/engine) "lWN" = ( @@ -80199,7 +80922,7 @@ }, /area/security/prisonlockers) "lXG" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 1 }, /obj/effect/decal/cleanable/dirt, @@ -80253,6 +80976,7 @@ }, /obj/effect/decal/cleanable/blood/drip, /obj/effect/decal/cleanable/dust, +/obj/effect/decal/cleanable/spiderling_remains, /turf/simulated/floor/plasteel, /area/maintenance/medroom) "lXP" = ( @@ -80272,13 +80996,24 @@ dir = 1 }, /area/maintenance/trading) +"lXY" = ( +/obj/effect/turf_decal/siding/white/end{ + color = "#444444"; + dir = 1 + }, +/turf/simulated/floor/glass{ + slowdown = -0.3 + }, +/area/hallway/primary/central) "lYj" = ( /obj/machinery/hologram/holopad, +/obj/effect/decal/warning_stripes/blue/hollow, /turf/simulated/floor/plasteel{ dir = 1 }, /area/security/range) "lYk" = ( +/obj/machinery/station_map/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "brown" @@ -80306,9 +81041,6 @@ /turf/simulated/floor/plasteel, /area/engineering/controlroom) "lYF" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, /turf/simulated/floor/plasteel{ icon_state = "red" }, @@ -80400,10 +81132,18 @@ /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "2-8" }, /obj/structure/cable{ - icon_state = "2-8" + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -80451,42 +81191,6 @@ /obj/machinery/vending/chinese, /turf/simulated/floor/wood, /area/crew_quarters/mrchangs) -"lZX" = ( -/obj/effect/landmark/start/ai, -/obj/machinery/door_control{ - id = "ailockdown"; - name = "AI Asteroid Lockdown"; - pixel_y = -27; - req_access = list(56) - }, -/obj/machinery/door_control{ - id = "ai1"; - name = "Turret Hallway Shutters Control"; - pixel_x = -5; - pixel_y = -37 - }, -/obj/machinery/door_control{ - id = "ai2"; - name = "Turret AI Satellite Secondary Antechamber"; - pixel_x = 5; - pixel_y = -37 - }, -/obj/item/radio/intercom/custom{ - pixel_x = -28; - pixel_y = -10 - }, -/obj/item/radio/intercom/private{ - pixel_x = 28; - pixel_y = -10 - }, -/obj/item/radio/intercom{ - pixel_y = 3; - pixel_x = -28 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/turret_protected/ai) "mac" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -80586,16 +81290,6 @@ /obj/structure/lattice/catwalk, /turf/space, /area/solar/port) -"mbd" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/fsmaint) "mbj" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/cable{ @@ -80655,6 +81349,9 @@ /obj/item/radio/intercom{ pixel_x = -28 }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 30 + }, /turf/simulated/floor/wood, /area/library) "mbz" = ( @@ -80735,17 +81432,6 @@ icon_state = "arrival" }, /area/hallway/secondary/entry) -"mcc" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #7"; - id_tag = "xeno7" - }, -/obj/effect/spawner/window/reinforced/plasma, -/turf/simulated/floor/plating, -/area/toxins/xenobiology) "mcd" = ( /obj/structure/cable{ icon_state = "1-2" @@ -80816,7 +81502,8 @@ dir = 1 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "mcp" = ( @@ -80885,20 +81572,6 @@ icon_state = "white" }, /area/toxins/mixing) -"mcF" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/firealarm{ - dir = 4; - layer = 3.25; - pixel_x = -26 - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "blue" - }, -/area/hydroponics) "mcM" = ( /obj/machinery/light{ dir = 1; @@ -81011,6 +81684,10 @@ pixel_x = -4; pixel_y = 4 }, +/obj/machinery/recharger{ + pixel_x = 1; + pixel_y = 3 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -81121,6 +81798,26 @@ icon_state = "neutral" }, /area/toxins/mixing) +"mdL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint6) +"mdM" = ( +/obj/structure/bed, +/obj/item/bedsheet/captain, +/obj/item/storage/secure/safe{ + pixel_x = 32 + }, +/obj/item/radio/intercom{ + pixel_x = 26; + pixel_y = -26 + }, +/turf/simulated/floor/carpet/royalblue, +/area/crew_quarters/captain/bedroom) "mdN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ @@ -81260,13 +81957,14 @@ }, /area/quartermaster/miningstorage) "meT" = ( -/obj/machinery/mineral/processing_unit{ - dir = 1 +/obj/structure/table, +/obj/item/flashlight/lantern{ + on = 1 }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" }, -/turf/simulated/floor/plating, /area/quartermaster/miningstorage) "meV" = ( /obj/machinery/door/airlock/maintenance{ @@ -81358,26 +82056,8 @@ icon_state = "neutralfull" }, /area/crew_quarters/serviceyard) -"mfw" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/snacks/grown/moonlight, -/obj/item/reagent_containers/food/snacks/grown/moonlight{ - pixel_y = 3; - pixel_x = -6 - }, -/obj/item/reagent_containers/food/snacks/grown/moonlight{ - pixel_y = 5; - pixel_x = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "cult" - }, -/area/chapel/office) "mfx" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -81568,9 +82248,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "brown" @@ -81620,6 +82298,23 @@ icon_state = "brown" }, /area/crew_quarters/chief) +"mgW" = ( +/obj/structure/noticeboard{ + pixel_y = 30 + }, +/obj/item/paper_bin{ + pixel_y = 6 + }, +/obj/structure/table/wood, +/obj/item/pen/fancy{ + pixel_y = 3 + }, +/obj/item/reagent_containers/food/drinks/mug/hop{ + pixel_x = 10; + pixel_y = -11 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/hop) "mhd" = ( /obj/structure/cable{ icon_state = "0-2" @@ -81666,7 +82361,7 @@ dir = 6; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "mhK" = ( /obj/structure/sink/kitchen{ pixel_y = 25 @@ -81691,6 +82386,14 @@ /obj/effect/turf_decal/siding/wood, /turf/simulated/floor/wood/fancy/oak, /area/bridge/meeting_room) +"mib" = ( +/obj/structure/closet/radiation, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whitepurple" + }, +/area/toxins/explab) "mii" = ( /turf/simulated/floor/wood{ icon_state = "wood-broken6"; @@ -81715,6 +82418,21 @@ }, /turf/simulated/floor/glass/reinforced, /area/quartermaster/office) +"mio" = ( +/obj/structure/table/socle, +/obj/item/storage/funeral_urn/random{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/machinery/firealarm{ + dir = 1; + name = "south fire alarm"; + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) "mir" = ( /obj/structure/cable{ icon_state = "1-2" @@ -81848,6 +82566,27 @@ /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/grass, /area/hallway/secondary/exit) +"mjh" = ( +/obj/structure/table/reinforced, +/obj/item/storage/firstaid/doctor, +/obj/item/storage/firstaid/fire{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + name = "west fire alarm"; + pixel_x = -24 + }, +/obj/machinery/camera{ + c_tag = "Medbay Exam Room North"; + dir = 5; + network = list("SS13","Medical") + }, +/turf/simulated/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/medical/sleeper) "mji" = ( /obj/machinery/light{ dir = 8 @@ -81878,7 +82617,7 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 + dir = 8 }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -82056,7 +82795,8 @@ "mkD" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig Customs"; - req_access = list(1) + req_access = list(1); + security_level = 1 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -82219,6 +82959,11 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/arcade) +"mlt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random_spawners/crate_spawner, +/turf/simulated/floor/plasteel, +/area/maintenance/apmaint) "mlz" = ( /obj/effect/decal/cleanable/dirt, /obj/item/radio/intercom{ @@ -82261,23 +83006,13 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, /turf/simulated/floor/plasteel{ dir = 1 }, /area/security/processing) -"mlK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/radio/intercom{ - pixel_y = -28; - pixel_x = 28 - }, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "escape" - }, -/area/hallway/secondary/exit/maint) "mlQ" = ( /obj/machinery/power/rad_collector{ anchored = 1 @@ -82380,18 +83115,16 @@ }, /area/quartermaster/office) "mmo" = ( -/obj/effect/decal/warning_stripes/east, -/obj/effect/turf_decal/number/number_2{ - dir = 1; - pixel_y = -18; - pixel_x = -6 +/obj/structure/railing{ + dir = 8 }, -/obj/effect/turf_decal/arrows{ +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/door/firedoor/border_only{ dir = 8 }, /turf/simulated/floor/plasteel{ dir = 8; - icon_state = "neutral" + icon_state = "whitepurple" }, /area/toxins/mixing) "mmr" = ( @@ -82440,11 +83173,14 @@ /obj/structure/disposalpipe/junction/reversed{ dir = 8 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "mmS" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -82492,25 +83228,13 @@ /turf/simulated/floor/wood, /area/library/game_zone) "mnl" = ( -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" - }, -/obj/effect/spawner/window/reinforced, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "Biohazard_medi"; - name = "Quarantine Lockdown"; - opacity = 0 +/obj/structure/sign/poster/official/random{ + pixel_y = -32 }, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id_tag = "Virology1"; - name = "Virology Shutters" +/turf/simulated/floor/plasteel{ + icon_state = "whitegreen" }, -/turf/simulated/floor/plating, -/area/medical/virology) +/area/medical/virology/lab) "mnp" = ( /turf/simulated/floor/plasteel{ dir = 9; @@ -82539,6 +83263,21 @@ icon_state = "hydrofloor" }, /area/crew_quarters/kitchen) +"mnE" = ( +/obj/structure/table/reinforced, +/obj/item/flashlight, +/obj/item/flashlight{ + pixel_y = 9 + }, +/obj/structure/window/reinforced{ + dir = 4; + layer = 2.9 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/toxins/lab) "mnF" = ( /obj/structure/sign/biohazard, /turf/simulated/wall/r_wall, @@ -82600,6 +83339,26 @@ tag = "icon-vault (NORTHEAST)" }, /area/maintenance/secpost) +"mom" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 8 + }, +/obj/effect/turf_decal/number/number_1{ + dir = 1; + pixel_x = 5; + pixel_y = -10 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark" + }, +/area/hallway/primary/command/east) "mov" = ( /obj/structure/table/wood, /obj/item/storage/secure/briefcase{ @@ -82673,6 +83432,16 @@ "mpo" = ( /turf/simulated/wall, /area/crew_quarters/cabin1) +"mpq" = ( +/obj/structure/table/wood, +/obj/machinery/keycard_auth{ + pixel_x = 6; + pixel_y = -1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/bridge) "mpu" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ @@ -82692,20 +83461,6 @@ }, /turf/simulated/floor/plasteel, /area/storage/office) -"mpC" = ( -/obj/machinery/door_control{ - id = "xeno4"; - name = "Containment Control"; - req_access = list(55); - pixel_x = 32 - }, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/warning_stripes/yellow, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "whitehall" - }, -/area/toxins/xenobiology) "mpD" = ( /obj/structure/window/reinforced{ dir = 4 @@ -82715,33 +83470,6 @@ }, /turf/space/openspace, /area/space) -"mpH" = ( -/obj/structure/disposalpipe/sortjunction{ - dir = 1; - name = "Captain's Office"; - sortType = 18; - icon_state = "pipe-j2s" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/turf_decal{ - dir = 8; - icon_state = "golden_stripes" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/bridge) "mpL" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -82819,6 +83547,14 @@ icon_state = "dark" }, /area/maintenance/fsmaint3) +"mqs" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/medical/virology) "mqD" = ( /obj/structure/closet/gmcloset, /obj/item/wrench, @@ -82853,6 +83589,24 @@ }, /turf/simulated/floor/plating, /area/maintenance/secpost) +"mqY" = ( +/obj/machinery/door/window{ + dir = 2; + name = "Mass Driver"; + req_access = list(22) + }, +/obj/machinery/mass_driver{ + dir = 1; + id_tag = "chapelgun" + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/chapel/massdriver) "mre" = ( /obj/machinery/camera{ c_tag = "Captain's Room"; @@ -82897,6 +83651,15 @@ /area/maintenance/fpmaint) "mry" = ( /obj/structure/closet/crate/engineering, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/glass{ + amount = 50 + }, /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/apmaint) @@ -83049,6 +83812,21 @@ icon_state = "whitegreen" }, /area/medical/virology/lab) +"mtq" = ( +/obj/machinery/camera{ + c_tag = "Brig Staff Room"; + dir = 8; + network = list("SS13","Security") + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 25 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/security/brigstaff) "mtv" = ( /mob/living/carbon/human/lesser/monkey/punpun{ icon_state = "punpun1" @@ -83077,15 +83855,6 @@ icon_state = "whiteblue" }, /area/medical/cmostore) -"mtD" = ( -/obj/structure/sign/chemistry{ - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay2) "mtI" = ( /obj/structure/cable{ icon_state = "4-8" @@ -83170,7 +83939,10 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "blue" + }, /area/hydroponics) "muB" = ( /obj/structure/window/reinforced{ @@ -83210,27 +83982,6 @@ /obj/structure/flora/ausbushes/palebush, /turf/simulated/floor/grass, /area/maintenance/fore2) -"mvb" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "Kitchen Dinner Windows"; - name = "Kitchen Shutters"; - dir = 2 - }, -/obj/machinery/door/window/westright{ - dir = 2; - name = "Kitchen"; - req_access = list(28) - }, -/obj/item/kitchen/utensil/fork{ - pixel_x = -2 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "dark" - }, -/area/crew_quarters/kitchen) "mvi" = ( /obj/structure/sign/poster/official/obey{ pixel_x = -32 @@ -83534,9 +84285,9 @@ /obj/structure/cable{ icon_state = "0-2" }, -/obj/machinery/power/apc{ +/obj/machinery/power/apc/worn_out{ + cell_type = 0; dir = 1; - name = "north bump"; pixel_y = 26 }, /turf/simulated/floor/plating, @@ -83569,25 +84320,6 @@ /obj/effect/spawner/random_spawners/rodent, /turf/simulated/floor/plating, /area/maintenance/starboard) -"mxI" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/item/radio/intercom{ - pixel_y = 24 - }, -/obj/machinery/light{ - dir = 1; - in_use = 1 - }, -/obj/machinery/camera{ - c_tag = "HoS Office North"; - network = list("SS13","Security"); - dir = 6 - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkred" - }, -/area/security/hos) "mxV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 @@ -83615,22 +84347,13 @@ /turf/simulated/floor/plating, /area/maintenance/fsmaint3) "mya" = ( -/obj/machinery/atmospherics/binary/valve, -/obj/item/wrench, -/obj/machinery/light/small{ - dir = 4; - pixel_y = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/structure/chair, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 }, -/turf/simulated/floor/plating, -/area/medical/virology/lab) +/turf/simulated/floor/plasteel, +/area/maintenance/xenozoo) "myd" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, @@ -83731,6 +84454,20 @@ }, /turf/simulated/floor/plasteel, /area/engineering/controlroom) +"myM" = ( +/obj/structure/sign/directions/science{ + dir = 1 + }, +/obj/structure/sign/directions/cargo{ + dir = 4; + pixel_y = 8 + }, +/obj/structure/sign/directions/engineering{ + dir = 1; + pixel_y = -8 + }, +/turf/simulated/wall, +/area/hallway/primary/central/second/north) "myO" = ( /obj/machinery/vending/wallmed{ name = "Emergency NanoMed"; @@ -83769,7 +84506,9 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "mze" = ( /obj/effect/decal/cleanable/dirt, @@ -83796,22 +84535,6 @@ icon_state = "neutralfull" }, /area/crew_quarters/fitness) -"mzx" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/alarm{ - pixel_x = 24; - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Supermatter East"; - dir = 8; - network = list("Engineering","SS13") - }, -/obj/machinery/power/port_gen/pacman, -/turf/simulated/floor/plasteel, -/area/engineering/controlroom) "mzG" = ( /obj/machinery/computer/general_air_control{ frequency = 1443; @@ -83906,16 +84629,6 @@ tag = "icon-vault (NORTHEAST)" }, /area/crew_quarters/theatre) -"mAG" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 1 - }, -/turf/simulated/floor/engine, -/area/engineering/controlroom) "mAK" = ( /obj/effect/decal/warning_stripes/north, /obj/machinery/atmospherics/unary/vent_scrubber{ @@ -83977,43 +84690,20 @@ icon_state = "cafeteria" }, /area/medical/research/restroom) -"mBv" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - color = "red"; +"mBB" = ( +/obj/machinery/light{ dir = 8 }, -/obj/machinery/door/window{ +/obj/effect/turf_decal/number/number_1{ dir = 1; - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/obj/machinery/door/window{ - dir = 2; - name = "Secure Armory"; - req_access = list(1); - color = "red" + pixel_x = -3; + pixel_y = -10 }, -/obj/item/gun/projectile/automatic/pistol/enforcer, -/obj/structure/window/reinforced{ - color = "red"; +/obj/effect/turf_decal/arrows/white{ dir = 4 }, -/obj/item/gun/projectile/automatic/pistol/enforcer{ - pixel_x = 2 - }, -/obj/item/gun/projectile/automatic/pistol/enforcer{ - pixel_x = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark" - }, -/area/security/securearmory) +/turf/simulated/floor/plasteel/dark, +/area/engineering/controlroom) "mBE" = ( /obj/structure/railing{ dir = 1 @@ -84025,19 +84715,6 @@ /obj/item/storage/fancy/candle_box/eternal, /turf/simulated/floor/carpet/red, /area/chapel/main) -"mBF" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/tile/purple, -/obj/structure/curtain/open{ - color = "#222222"; - anchored = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 5 - }, -/area/civilian/barber) "mBI" = ( /obj/structure/cable{ icon_state = "4-8" @@ -84055,6 +84732,19 @@ icon_state = "arrival" }, /area/hallway/secondary/entry) +"mBK" = ( +/obj/effect/turf_decal/siding/wood{ + do_not_delete_me = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/carpet, +/area/library) "mBN" = ( /obj/structure/chair/comfy/teal, /obj/machinery/newscaster{ @@ -84140,6 +84830,17 @@ icon_state = "darkpurple" }, /area/assembly/chargebay) +"mCN" = ( +/obj/structure/table/reinforced, +/obj/structure/curtain/open{ + anchored = 1; + color = "#222222" + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/trading) "mCP" = ( /obj/machinery/porta_turret{ dir = 4; @@ -84309,6 +85010,7 @@ "mDO" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/maintenance/xenozoo) "mDV" = ( @@ -84321,22 +85023,6 @@ /obj/structure/grille/broken, /turf/simulated/floor/plating, /area/maintenance/starboard) -"mDW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/disposalpipe/sortjunction/reversed{ - sortType = 23; - name = "Genetics" - }, -/turf/simulated/floor/plating, -/area/maintenance/asmaint) "mEe" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -84348,21 +85034,6 @@ icon_state = "neutral" }, /area/crew_quarters/fitness) -"mEh" = ( -/obj/structure/table/reinforced, -/obj/item/book/manual/security_space_law, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/recharger/wallcharger{ - pixel_y = 24; - pixel_x = 7 - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "red" - }, -/area/security/checkpoint/south) "mEl" = ( /obj/structure/table, /obj/machinery/computer/guestpass{ @@ -84399,6 +85070,7 @@ /obj/structure/barricade/wooden/crude{ layer = 4 }, +/obj/structure/cable, /turf/simulated/floor/plating, /area/maintenance/xenozoo) "mEB" = ( @@ -84406,6 +85078,15 @@ icon_state = "plant-22"; tag = "icon-plant-22" }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_y = 24 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -84515,6 +85196,18 @@ icon_state = "brown" }, /area/quartermaster/sorting) +"mFq" = ( +/obj/effect/landmark/event/xeno_spawn, +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/obj/effect/decal/warning_stripes/north, +/turf/simulated/floor/engine, +/area/toxins/explab) "mFv" = ( /obj/effect/decal/warning_stripes/northwestcorner, /turf/simulated/floor/plasteel/airless, @@ -84531,27 +85224,6 @@ icon_state = "neutralfull" }, /area/hallway/primary/central/se) -"mFA" = ( -/obj/structure/table/reinforced, -/obj/item/storage/firstaid/doctor, -/obj/item/storage/firstaid/fire{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/machinery/firealarm{ - dir = 8; - name = "west fire alarm"; - pixel_x = -24 - }, -/obj/machinery/camera{ - c_tag = "Medbay Exam Room North"; - network = list("SS13","Medical"); - dir = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whitebluefull" - }, -/area/medical/sleeper) "mFE" = ( /obj/structure/cable{ icon_state = "1-2" @@ -84602,12 +85274,12 @@ /obj/machinery/camera{ c_tag = "Brig Cell 2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, /obj/structure/chair/comfy/teal{ dir = 4 }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, /turf/simulated/floor/carpet/cyan, /area/security/prison/cell_block/A) "mGy" = ( @@ -84663,6 +85335,10 @@ "mGR" = ( /obj/structure/table/reinforced, /obj/effect/decal/cleanable/dirt, +/obj/machinery/kitchen_machine/microwave{ + pixel_x = -1; + pixel_y = 7 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_regular_floor = "yellowsiding"; @@ -84759,6 +85435,30 @@ }, /turf/simulated/floor/carpet/black, /area/maintenance/livingcomplex) +"mHB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "blue" + }, +/area/hallway/primary/fore) +"mHC" = ( +/obj/machinery/door_control{ + id = "xeno5"; + name = "Containment Control"; + pixel_x = 32; + req_access = list(55) + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/toxins/xenobiology) "mHD" = ( /obj/machinery/hydroponics/constructable, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -84769,18 +85469,18 @@ /area/hydroponics) "mHJ" = ( /obj/structure/disposaloutlet{ - dir = 1 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ dir = 8 }, +/obj/structure/window/reinforced, /obj/structure/window/reinforced{ dir = 4 }, /obj/structure/disposalpipe/trunk{ dir = 8 }, +/obj/structure/window/reinforced{ + dir = 1 + }, /turf/simulated/floor/plasteel, /area/quartermaster/sorting) "mHL" = ( @@ -84862,13 +85562,6 @@ dir = 1; pixel_y = 32 }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/apc{ - name = "south bump"; - pixel_y = -26 - }, /turf/simulated/floor/greengrid, /area/turret_protected/ai) "mIv" = ( @@ -84885,6 +85578,13 @@ icon_state = "dark" }, /area/engineering/mechanic_workshop/hangar) +"mIy" = ( +/obj/structure/closet/secure_closet/medical4, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitebluecorner" + }, +/area/medical/surgery/south) "mIB" = ( /obj/machinery/light/small, /obj/structure/closet/walllocker/emerglocker/north{ @@ -84932,21 +85632,6 @@ /obj/effect/landmark/tiles/damageturf, /turf/simulated/floor/plating, /area/maintenance/apmaint) -"mJi" = ( -/obj/structure/sign/directions/floor/alt{ - dir = 6; - pixel_x = -32 - }, -/obj/effect/turf_decal/number/number_1{ - dir = 1; - pixel_y = -10; - pixel_x = -3 - }, -/obj/effect/turf_decal/arrows/white{ - dir = 4 - }, -/turf/simulated/floor/plasteel/dark, -/area/engineering/controlroom) "mJo" = ( /obj/effect/turf_decal/siding/wideplating/light/corner, /obj/structure/flora/ausbushes/lavendergrass, @@ -85069,6 +85754,22 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/theatre) +"mJY" = ( +/obj/machinery/firealarm{ + dir = 8; + name = "west fire alarm"; + pixel_x = -24 + }, +/obj/machinery/camera{ + c_tag = "Medbay Genetics Office"; + dir = 4; + network = list("Medical","SS13") + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkpurple" + }, +/area/medical/genetics) "mKa" = ( /obj/machinery/atmospherics/pipe/simple/visible/green{ desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; @@ -85098,19 +85799,11 @@ }, /area/turret_protected/aisat) "mKo" = ( -/obj/structure/closet/l3closet/scientist, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/apc{ - dir = 8; - name = "west bump"; - pixel_x = -26 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "whitepurple" +/obj/structure/sign/directions/floor/alt{ + dir = 6; + pixel_x = -32 }, +/turf/simulated/openspace, /area/toxins/launch) "mKp" = ( /obj/machinery/door/airlock/maintenance, @@ -85231,7 +85924,9 @@ codes_txt = "patrol;next_patrol=C1"; location = "C11" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "mKW" = ( /obj/structure/grille, @@ -85377,6 +86072,9 @@ /obj/machinery/atmospherics/unary/portables_connector, /obj/machinery/portable_atmospherics/canister, /obj/effect/decal/warning_stripes/north, +/obj/machinery/status_display{ + pixel_y = 32 + }, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -85509,6 +86207,14 @@ }, /turf/simulated/floor/plating, /area/security/checkpoint/south) +"mMt" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) "mMv" = ( /obj/structure/table/reinforced, /obj/item/clothing/gloves/color/white, @@ -85552,6 +86258,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -85839,24 +86548,10 @@ }, /turf/simulated/floor/plasteel, /area/engineering/mechanic_workshop/expedition) -"mOe" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/item/storage/belt/medical, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/regular, -/obj/item/reagent_containers/hypospray/safety, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "whiteblue"; - tag = "icon-whiteblue (WEST)" - }, -/area/medical/biostorage) "mOm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/simulated/floor/plasteel{ - icon_state = "darkgrey" - }, +/turf/simulated/floor/plating, /area/maintenance/gambling_den) "mOA" = ( /obj/effect/decal/cleanable/dirt, @@ -85917,7 +86612,7 @@ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "mOR" = ( /obj/structure/cable{ icon_state = "1-2" @@ -85994,7 +86689,7 @@ /obj/item/twohanded/required/kirbyplants, /obj/machinery/firealarm{ dir = 4; - pixel_x = -28 + pixel_x = -25 }, /obj/machinery/light{ dir = 8 @@ -86003,7 +86698,7 @@ dir = 5; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "mPu" = ( /obj/effect/decal/warning_stripes/west, /turf/simulated/floor/plasteel, @@ -86101,6 +86796,9 @@ /obj/item/clothing/under/retro/medical, /obj/effect/decal/warning_stripes/north, /obj/machinery/light, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -86111,15 +86809,6 @@ }, /turf/simulated/wall, /area/crew_quarters/serviceyard) -"mQk" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "red" - }, -/area/security/interrogation) "mQy" = ( /turf/simulated/wall/rust, /area/maintenance/backstage) @@ -86188,16 +86877,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/casino) -"mRb" = ( -/obj/structure/curtain/open{ - color = "#222222"; - anchored = 1 - }, -/obj/structure/table/reinforced, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/maintenance/trading) "mRf" = ( /obj/machinery/slot_machine, /obj/effect/turf_decal/siding/wood{ @@ -86293,6 +86972,17 @@ icon_state = "neutralcorner" }, /area/maintenance/apmaint) +"mRY" = ( +/obj/machinery/door/window/brigdoor{ + color = "red"; + dir = 2; + name = "Execution Access"; + req_access = list(2) + }, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/atmospherics/unary/outlet_injector/on, +/turf/simulated/floor/engine, +/area/security/execution) "mSa" = ( /obj/machinery/light, /turf/simulated/floor/plasteel{ @@ -86392,28 +87082,6 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/captain) -"mSG" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 28 - }, -/obj/structure/table/reinforced, -/obj/item/storage/belt/utility, -/obj/item/storage/belt/utility, -/obj/item/wrench, -/obj/item/wrench, -/obj/item/clothing/glasses/welding, -/obj/item/clothing/glasses/welding, -/obj/machinery/camera{ - c_tag = "Research and Development East"; - dir = 9; - network = list("Research","SS13") - }, -/turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 4 - }, -/area/toxins/lab) "mSI" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable, @@ -86466,11 +87134,15 @@ /area/toxins/server) "mSP" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/decal/remains/mouse, /obj/item/radio/intercom{ name = "west station intercom (General)"; - pixel_x = -28 + pixel_x = -28; + pixel_y = 24 + }, +/obj/machinery/light/small{ + dir = 8 }, -/obj/item/folder, /turf/simulated/floor/plating, /area/maintenance/xenozoo) "mSR" = ( @@ -86496,21 +87168,6 @@ icon_state = "darkbluealt" }, /area/hallway/primary/command/west) -"mSU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/camera{ - c_tag = "Arrivals Lobby West Hallway"; - dir = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) "mSW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -86590,7 +87247,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "mTC" = ( /obj/structure/cable{ icon_state = "1-2" @@ -86616,6 +87273,21 @@ icon_state = "freezerfloor" }, /area/crew_quarters/kitchen) +"mTF" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/camera{ + c_tag = "Permabrig Hallway East"; + dir = 8; + network = list("Prison","SS13","Security") + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/permahallway) "mTI" = ( /obj/structure/table/reinforced, /obj/item/wrench, @@ -86628,28 +87300,6 @@ dir = 8 }, /area/crew_quarters/locker) -"mTQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom{ - name = "north station intercom (General)"; - pixel_y = 28; - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "cult" - }, -/area/maintenance/chapel) -"mTT" = ( -/obj/structure/table/reinforced, -/obj/structure/curtain/open{ - color = "#222222"; - anchored = 1 - }, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/maintenance/trading) "mTW" = ( /obj/structure/cable{ icon_state = "2-8" @@ -86735,6 +87385,19 @@ icon_state = "darkbluealt" }, /area/bridge/meeting_room) +"mUH" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 1; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkyellowfull" + }, +/area/engineering/controlroom) "mUI" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -86756,6 +87419,25 @@ icon_state = "bluecorner" }, /area/hallway/primary/central/nw) +"mUO" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/door/window/brigdoor{ + name = "Creature Pen"; + req_access = list(47) + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno5"; + name = "Creature Cell #5" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/toxins/xenobiology) "mUX" = ( /obj/machinery/alarm{ dir = 8; @@ -86775,11 +87457,15 @@ pixel_x = -1; pixel_y = 7 }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "whitegreen" }, -/area/medical/virology/lab) +/area/medical/virology) "mVb" = ( /obj/structure/window/reinforced{ dir = 8 @@ -86806,6 +87492,7 @@ /obj/machinery/light{ dir = 4 }, +/obj/effect/decal/cleanable/spiderling_remains, /turf/simulated/floor/plasteel{ icon_state = "darkgrey" }, @@ -86882,6 +87569,15 @@ /obj/effect/decal/cleanable/dust, /turf/simulated/floor/carpet/green, /area/maintenance/library) +"mVQ" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/obj/machinery/recycler, +/obj/effect/decal/warning_stripes/north, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "mVR" = ( /obj/machinery/vending/coffee, /obj/effect/decal/warning_stripes/yellow, @@ -87061,16 +87757,6 @@ icon_state = "escape" }, /area/bridge/checkpoint/south) -"mXe" = ( -/obj/structure/curtain/open/shower/security{ - alpha = 255; - icon_state = "closed"; - name = "backstage"; - opacity = 1; - anchored = 1 - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/crew_quarters/theatre) "mXm" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -87099,6 +87785,26 @@ }, /turf/simulated/floor/plasteel/dark, /area/maintenance/starboardaux) +"mXE" = ( +/obj/effect/decal/warning_stripes/west, +/obj/item/storage/box/handcuffs{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/structure/closet/crate/secure/weapon{ + name = "Brig storage crate"; + req_access = list(63) + }, +/obj/machinery/light, +/obj/item/storage/box/flashbangs, +/obj/item/storage/box/flashbangs{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/seceqstorage) "mXT" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb, @@ -87109,6 +87815,11 @@ dir = 4; pixel_x = 28 }, +/obj/machinery/camera{ + c_tag = "Research East Hallway"; + dir = 8; + network = list("Research","SS13") + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whitepurple" @@ -87134,37 +87845,6 @@ /obj/item/dice/d20, /turf/simulated/floor/plating, /area/maintenance/fpmaint) -"mYe" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/clothing/suit/armor/riot, -/obj/item/shield/riot, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/head/helmet/riot, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 1 - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 4 - }, -/obj/machinery/door/window{ - dir = 8; - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "mYi" = ( /obj/structure/sign/poster/official/random{ pixel_y = -32 @@ -87295,6 +87975,15 @@ /obj/effect/turf_decal/siding/white/end, /turf/simulated/floor/glass, /area/hallway/secondary/exit) +"mZp" = ( +/obj/machinery/door/window/eastleft{ + dir = 2; + name = "Forensic laboratory"; + req_access = list(3,4) + }, +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/wood, +/area/security/detectives_office) "mZq" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -87404,22 +88093,6 @@ }, /turf/simulated/floor/plasteel, /area/security/permabrig) -"mZZ" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/coffee{ - pixel_y = 13; - pixel_x = -5 - }, -/obj/item/reagent_containers/food/drinks/coffee{ - pixel_y = 1; - pixel_x = 7 - }, -/obj/effect/spawner/lootdrop/maintenance{ - pixel_y = -1; - pixel_x = -5 - }, -/turf/simulated/floor/plating, -/area/maintenance/brig) "naa" = ( /obj/effect/turf_decal/siding/red{ dir = 9 @@ -87476,6 +88149,16 @@ }, /turf/simulated/floor/plasteel/dark, /area/maintenance/starboardaux) +"nat" = ( +/obj/machinery/light_switch{ + pixel_x = -24; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/detectives_office) "nau" = ( /obj/structure/window/reinforced{ dir = 1; @@ -87488,6 +88171,16 @@ icon_state = "dark" }, /area/crew_quarters/fitness) +"nax" = ( +/obj/machinery/vending/wallmed{ + pixel_x = 28; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/permahallway) "nay" = ( /obj/machinery/firealarm{ dir = 4; @@ -87526,19 +88219,6 @@ }, /turf/simulated/floor/plasteel, /area/atmos) -"naN" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 8 - }, -/obj/effect/turf_decal/number/number_2{ - dir = 1; - pixel_y = -10; - pixel_x = 6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/hallway/secondary/entry/lounge) "naO" = ( /obj/machinery/door/airlock/tranquillite{ name = "Mime's Office"; @@ -87646,6 +88326,7 @@ scrub_N2O = 1; scrub_Toxins = 1 }, +/obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood{ icon_state = "wood-broken6"; tag = "icon-wood-broken6" @@ -87669,41 +88350,6 @@ dir = 1 }, /area/security/processing) -"nbu" = ( -/obj/item/ammo_box/magazine/enforcer/lethal{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/ammo_box/magazine/enforcer/lethal, -/obj/item/ammo_box/magazine/enforcer/lethal{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/ammo_box/magazine/enforcer/lethal{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 1 - }, -/obj/machinery/door/window{ - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "nbA" = ( /obj/machinery/light{ dir = 4 @@ -87725,6 +88371,25 @@ }, /turf/simulated/floor/glass/reinforced, /area/engineering/mechanic_workshop/hangar) +"nbF" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "Kitchen Dinner Windows"; + name = "Kitchen Shutters" + }, +/obj/machinery/door/window/westright{ + dir = 2; + name = "Kitchen"; + req_access = list(28) + }, +/obj/item/clothing/head/cakehat, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/crew_quarters/kitchen) "nbI" = ( /obj/effect/turf_decal/siding/red{ dir = 4 @@ -87749,18 +88414,6 @@ }, /turf/simulated/floor/carpet/red, /area/security/hos) -"nbK" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/toxins/test_chamber) "nbL" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 @@ -87783,14 +88436,6 @@ icon_state = "whiteblue" }, /area/medical/reception) -"nbN" = ( -/obj/machinery/camera{ - c_tag = "Supermatter Second Floor South"; - network = list("SS13","Engineering"); - dir = 1 - }, -/turf/simulated/floor/plasteel/dark, -/area/engineering/controlroom) "nbR" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 8 @@ -87803,6 +88448,14 @@ icon_state = "dark" }, /area/crew_quarters/fitness) +"ncd" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/sleeper) "ncg" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig Reception"; @@ -87910,6 +88563,18 @@ }, /turf/simulated/floor/plasteel/goonplaque, /area/chapel/main) +"nda" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/camera{ + c_tag = "Experimentation Lab"; + dir = 10; + network = list("Research","SS13") + }, +/turf/simulated/floor/engine, +/area/toxins/explab) "ndf" = ( /turf/simulated/floor/engine/n2, /area/atmos) @@ -87919,23 +88584,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/ai) -"ndo" = ( -/obj/machinery/power/apc{ - cell_type = 15000; - dir = 4; - name = "Cryo and Arrivals Super APC"; - pixel_x = 24 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/filingcabinet/chestdrawer, -/turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 4 - }, -/area/toxins/lab) "ndp" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -88058,7 +88706,8 @@ /obj/item/clothing/glasses/welding/superior, /obj/item/radio/intercom{ dir = 4; - pixel_x = 28 + pixel_x = 34; + pixel_y = 3 }, /turf/simulated/floor/carpet/purple, /area/toxins/rdoffice) @@ -88202,6 +88851,21 @@ icon_state = "white" }, /area/medical/medbay2) +"neZ" = ( +/obj/structure/sign/directions/cargo{ + dir = 4; + pixel_y = 8 + }, +/obj/structure/sign/directions/science{ + dir = 1; + pixel_y = -8 + }, +/obj/structure/sign/directions/engineering{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/wall, +/area/hallway/primary/starboard/south) "nff" = ( /obj/structure/cable{ icon_state = "1-2" @@ -88228,6 +88892,54 @@ /obj/structure/filingcabinet/security, /turf/simulated/floor/wood/fancy/cherry, /area/magistrateoffice) +"nfl" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/highsecurity{ + check_one_access = 0; + name = "Secure Tech Storage"; + req_access = list(19,23); + security_level = 6 + }, +/turf/simulated/floor/plasteel, +/area/storage/tech) +"nfo" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/brigdoor{ + armor = list("melee"=60,"bullet"=70,"laser"=70,"energy"=70,"bomb"=40,"bio"=100,"rad"=100,"fire"=70,"acid"=100); + color = "red"; + dir = 2; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/machinery/door/window/brigdoor{ + armor = list("melee"=60,"bullet"=70,"laser"=70,"energy"=70,"bomb"=40,"bio"=100,"rad"=100,"fire"=70,"acid"=100); + color = "red"; + dir = 1; + name = "Secure Armory"; + req_access = list(3) + }, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "ArmoryLock"; + name = "Armory Lockdown"; + opacity = 0 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters{ + dir = 2; + id_tag = "ArmorySec"; + layer = 5; + name = "Armory Security Shutters" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark" + }, +/area/security/securearmory) "nfr" = ( /obj/structure/cable{ icon_state = "2-4" @@ -88342,6 +89054,34 @@ }, /turf/simulated/floor/glass/reinforced, /area/quartermaster/office) +"nfT" = ( +/obj/structure/table/reinforced, +/obj/item/seeds/lime, +/obj/item/seeds/watermelon, +/obj/item/seeds/grape, +/obj/item/reagent_containers/food/snacks/grown/wheat, +/obj/item/reagent_containers/food/snacks/grown/watermelon, +/obj/item/reagent_containers/food/snacks/grown/banana, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/eastleft{ + dir = 1; + name = "Hydroponics Desk"; + req_access = list(35) + }, +/obj/item/reagent_containers/food/snacks/grown/apple, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "Hydroponics Shutters"; + name = "Hydroponics Shutters" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/hydroponics) "nfY" = ( /obj/structure/holosign/barrier, /obj/effect/decal/cleanable/blood/tracks{ @@ -88361,6 +89101,36 @@ }, /turf/simulated/floor/plasteel, /area/maintenance/apmaint) +"ngm" = ( +/obj/structure/table/wood, +/obj/machinery/door_control{ + id = "conferenceroombolts"; + name = "Conference Room Bolts Control"; + normaldoorcontrol = 1; + pixel_x = 4; + req_access = list(19); + specialfunctions = 4 + }, +/obj/machinery/button/windowtint{ + id = "conferenceroomwindows"; + pixel_x = -7 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/carpet/royalblack, +/area/bridge/meeting_room) "ngs" = ( /obj/structure/cable{ icon_state = "4-8" @@ -88409,14 +89179,6 @@ /obj/structure/grille, /turf/space/openspace, /area/space) -"ngP" = ( -/obj/item/cigbutt{ - pixel_y = 5; - pixel_x = -2 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/maintenance/asmaint) "ngT" = ( /obj/structure/railing, /obj/structure/table/wood, @@ -88536,9 +89298,6 @@ /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/heads) "nhD" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/cable{ icon_state = "1-4" }, @@ -88547,6 +89306,9 @@ /obj/structure/disposalpipe/junction{ dir = 8 }, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -88604,16 +89366,12 @@ }, /area/maintenance/trading) "nhZ" = ( -/obj/effect/turf_decal/arrows{ +/obj/structure/closet/l3closet/scientist, +/obj/structure/railing{ dir = 8 }, -/obj/effect/turf_decal/number/number_1{ - dir = 1; - pixel_y = -18; - pixel_x = -5 - }, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple" + icon_state = "purplefull" }, /area/toxins/launch) "nic" = ( @@ -88689,9 +89447,16 @@ }, /area/crew_quarters/chief) "nio" = ( +/obj/effect/turf_decal/number/number_1{ + dir = 1; + pixel_y = -15 + }, +/obj/effect/turf_decal/arrows/white{ + dir = 1 + }, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "browncorner" + dir = 1; + icon_state = "brown" }, /area/quartermaster/office) "nix" = ( @@ -88722,7 +89487,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "niY" = ( /obj/structure/cable{ icon_state = "1-2" @@ -88759,7 +89524,9 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "njf" = ( /obj/effect/decal/warning_stripes/northeast, @@ -88805,6 +89572,18 @@ icon_state = "whitehall" }, /area/toxins/xenobiology) +"njo" = ( +/obj/structure/table, +/obj/item/security_voucher, +/obj/item/security_voucher{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/security/hos) "njs" = ( /obj/machinery/hologram/holopad, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -88951,6 +89730,9 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 }, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/simulated/floor/plasteel{ icon_state = "whitebluefull" }, @@ -89174,8 +89956,8 @@ frequency = 1379; master_tag = "ex"; name = "interior access button"; - pixel_x = 21; - pixel_y = -21 + pixel_x = 25; + pixel_y = -25 }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 6 @@ -89333,6 +90115,20 @@ icon_state = "freezerfloor" }, /area/medical/virology/lab) +"nna" = ( +/obj/structure/curtain/open/shower/security{ + alpha = 255; + anchored = 1; + icon_state = "closed"; + name = "backstage"; + opacity = 1 + }, +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/snacks/grown/tomato, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/trading) "nnb" = ( /obj/machinery/door/poddoor/shutters{ density = 0; @@ -89550,6 +90346,26 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/medical/virology/lab) +"npd" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 8 + }, +/obj/effect/turf_decal/number/number_1{ + dir = 1; + pixel_x = 5; + pixel_y = -10 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "red" + }, +/area/security/processing) "npi" = ( /obj/effect/turf_decal/siding/purple, /turf/simulated/floor/wood/fancy/light{ @@ -89660,6 +90476,11 @@ /area/security/securehallway) "npW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel{ icon_state = "whitebluecorner" }, @@ -89809,6 +90630,16 @@ icon_state = "neutralfull" }, /area/atmos) +"nrC" = ( +/obj/structure/chair/sofa/right{ + color = "#85130b"; + dir = 4 + }, +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/backstage) "nrH" = ( /obj/machinery/flasher{ id = "permaflash2"; @@ -89849,15 +90680,6 @@ icon_state = "darkbluecorners" }, /area/aisat/aihallway) -"nrY" = ( -/obj/effect/spawner/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "Bar Hall"; - name = "Bar Privacy Shutters"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/crew_quarters/bar) "nsl" = ( /obj/structure/chair/comfy/black, /obj/effect/turf_decal/siding/wood{ @@ -89890,6 +90712,17 @@ icon_state = "whitepurple" }, /area/toxins/lab) +"nsH" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "packageExternal" + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark" + }, +/area/quartermaster/delivery) "nsJ" = ( /obj/machinery/light{ dir = 4 @@ -90140,17 +90973,12 @@ /turf/simulated/floor/glass, /area/hallway/secondary/exit) "nuJ" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/machinery/ai_status_display{ - pixel_x = -32 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" +/obj/structure/closet/l3closet/virology, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 5 }, -/area/medical/virology) +/turf/simulated/floor/plating, +/area/medical/virology/lab) "nuS" = ( /turf/simulated/floor/plasteel{ icon_state = "whitegreen" @@ -90200,6 +91028,21 @@ icon_state = "tranquillite" }, /area/crew_quarters/kitchen) +"nvt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/curtain/open/shower/security{ + alpha = 255; + anchored = 1; + name = "backstage" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood, +/area/maintenance/backstage) "nvy" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ desc = "Труба хранит в себе набор газов для смешивания"; @@ -90233,16 +91076,6 @@ }, /turf/simulated/floor/plasteel, /area/hallway/secondary/exit) -"nvF" = ( -/obj/machinery/washing_machine, -/obj/machinery/newscaster{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whitegreen" - }, -/area/medical/virology/lab) "nvL" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, @@ -90250,6 +91083,11 @@ amount = 20 }, /obj/machinery/light_construct, +/obj/item/stack/sheet/glass{ + amount = 20; + pixel_x = 2; + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 0; icon_state = "red" @@ -90278,6 +91116,7 @@ /obj/structure/cable{ icon_state = "0-4" }, +/obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "purple" @@ -90295,7 +91134,7 @@ dir = 9; icon_state = "darkred" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "nvU" = ( /obj/machinery/vending/wallmed{ pixel_x = 26; @@ -90386,6 +91225,22 @@ icon_state = "dark" }, /area/atmos) +"nwG" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/girder/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) "nwN" = ( /obj/structure/chair/sofa/corner{ dir = 4 @@ -90609,17 +91464,6 @@ /obj/effect/spawner/window/reinforced/plasma, /turf/simulated/floor/plating, /area/toxins/mixing) -"nyr" = ( -/obj/machinery/camera{ - c_tag = "Permabrig Hallway North"; - network = list("SS13","Security"); - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkred" - }, -/area/security/permahallway) "nyt" = ( /obj/structure/table, /obj/item/storage/box/tapes, @@ -90659,6 +91503,7 @@ c_tag = "Brig Cell 3"; dir = 6 }, +/obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -90676,7 +91521,7 @@ }, /area/medical/research) "nyO" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /obj/effect/landmark/start/civilian, @@ -90694,7 +91539,6 @@ }, /area/atmos) "nyU" = ( -/obj/structure/closet/wardrobe/xenos, /obj/machinery/light{ dir = 1; in_use = 1 @@ -90702,6 +91546,7 @@ /obj/structure/sign/poster/official/random{ pixel_y = 32 }, +/obj/structure/closet/wardrobe/pink, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutralcorner" @@ -90741,6 +91586,7 @@ dir = 6 }, /obj/effect/landmark/event/blobstart, +/obj/item/radio/beacon, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -90902,6 +91748,33 @@ icon_state = "dark" }, /area/hallway/primary/command/west) +"nAs" = ( +/obj/structure/table/wood, +/obj/item/folder/blue, +/obj/item/folder/blue{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/clothing/mask/cigarette/cigar/havana{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/mask/cigarette/cigar/havana, +/obj/item/flashlight/lamp/green{ + pixel_x = -3; + pixel_y = 13 + }, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/hop) "nAw" = ( /obj/structure/table/wood, /obj/machinery/door/window/westright{ @@ -91093,14 +91966,15 @@ }, /area/toxins/xenobiology) "nBo" = ( -/obj/structure/sign/redcross{ - pixel_x = -32 +/obj/effect/turf_decal/number/number_1{ + dir = 1 }, +/obj/effect/turf_decal/arrows/white, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "redcorner" + dir = 8; + icon_state = "red" }, -/area/security/prison/cell_block/A) +/area/hallway/primary/central/second/west) "nBq" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/drip{ @@ -91247,19 +92121,6 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/security/permabrig) -"nCp" = ( -/obj/effect/turf_decal/siding/wood{ - do_not_delete_me = 1 - }, -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 8 - }, -/turf/simulated/floor/carpet, -/area/library) "nCs" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -91373,20 +92234,6 @@ }, /turf/simulated/floor/plating, /area/hallway/secondary/exit/maint) -"nDd" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/machinery/vending/wallmed{ - pixel_y = 0; - pixel_x = -26 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "red" - }, -/area/security/main) "nDl" = ( /obj/structure/chair{ dir = 4 @@ -91442,25 +92289,26 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel, /area/assembly/showroom) -"nDJ" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/door/window/brigdoor/southright{ - req_access = list(17,75); - dir = 4 - }, -/obj/structure/fans/tiny, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/aisat/aihallway) "nDM" = ( /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkbluealt" }, /area/security/warden) +"nDR" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = -2; + pixel_y = 6 + }, +/obj/item/pen{ + pixel_y = 5 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/toxins/lab) "nDV" = ( /turf/simulated/floor/wood/fancy/light{ color = "orange" @@ -91685,6 +92533,15 @@ icon_state = "white" }, /area/toxins/explab) +"nFO" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engineering/break_room) "nFR" = ( /obj/structure/chair/sofa/right, /obj/machinery/light{ @@ -91843,6 +92700,20 @@ icon_state = "darkredfull" }, /area/turret_protected/ai) +"nHb" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dust, +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/carpet, +/area/maintenance/casino) "nHc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -91915,29 +92786,6 @@ tag = "icon-whitepurple (WEST)" }, /area/toxins/mixing) -"nHT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/machinery/door_control{ - id = "CMO Shutters"; - name = "CMO Privacy Shutters Control"; - pixel_x = -39; - pixel_y = 26 - }, -/obj/machinery/door_control{ - id = "Biohazard_medi"; - name = "Medbay Lockdown"; - pixel_x = -25; - pixel_y = 26 - }, -/obj/item/radio/intercom{ - name = "north station intercom (General)"; - pixel_y = 35; - pixel_x = -32 - }, -/turf/simulated/floor/carpet/blue, -/area/medical/cmo) "nHY" = ( /obj/machinery/light/small{ dir = 4; @@ -91999,6 +92847,7 @@ /turf/simulated/floor/plasteel, /area/storage/secure) "nIR" = ( +/obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood{ icon_state = "wood-broken"; tag = "icon-wood-broken" @@ -92209,26 +93058,6 @@ icon_state = "brown" }, /area/quartermaster/miningdock) -"nKs" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 8 - }, -/obj/effect/turf_decal/number/number_1{ - dir = 1; - pixel_y = -10; - pixel_x = 5 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark" - }, -/area/hallway/primary/command/east) "nKt" = ( /obj/structure/table/wood, /obj/item/storage/briefcase, @@ -92389,6 +93218,10 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "vault" @@ -92420,7 +93253,7 @@ scrub_Toxins = 1 }, /turf/simulated/floor/plasteel, -/area/engineering/engine) +/area/engineering/break_room) "nLM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -92483,18 +93316,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/fore2) -"nMi" = ( -/obj/effect/decal/warning_stripes/arrow{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/yellow/partial{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 9 - }, -/area/hallway/primary/central/north) "nMj" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -92541,27 +93362,6 @@ icon_state = "dark" }, /area/chapel/office) -"nMu" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/button/windowtint{ - dir = 8; - id = "psychprivate"; - pixel_x = 23; - pixel_y = 25; - name = "Door tint control" - }, -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/machinery/door_control{ - id = "Psychoprivate"; - name = "Privacy shutters Control"; - pixel_y = 34; - req_access = list(64); - pixel_x = 24 - }, -/turf/simulated/floor/carpet, -/area/medical/psych) "nMx" = ( /obj/effect/spawner/random_spawners/blood_20, /turf/simulated/floor/plating, @@ -92616,7 +93416,9 @@ /area/quartermaster/miningdock) "nMX" = ( /obj/effect/decal/warning_stripes/east, -/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/item/videocam, +/obj/item/videocam, +/obj/structure/closet/crate, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -92753,27 +93555,27 @@ /turf/simulated/wall/r_wall, /area/security/brigstaff) "nNK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "dark" }, /area/security/medbay) "nNM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ - icon_state = "1-4" + icon_state = "1-2" }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "dark" + dir = 1 }, -/area/security/medbay) +/area/security/processing) "nNT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ @@ -92867,14 +93669,6 @@ dir = 1 }, /area/security/prison/cell_block/A) -"nOM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/turf/simulated/floor/plasteel{ - dir = 1 - }, -/area/security/prison/cell_block/A) "nON" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -93015,6 +93809,15 @@ /obj/effect/spawner/random_spawners/cobweb_right_frequent, /turf/simulated/floor/plating, /area/maintenance/starboard) +"nPL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/tracks{ + dir = 8; + pixel_x = 9; + pixel_y = 10 + }, +/turf/simulated/floor/plating, +/area/maintenance/starboard) "nPN" = ( /obj/structure/chair/office/dark{ dir = 1 @@ -93091,6 +93894,24 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/toilet) +"nQi" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 1; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/massdriver) +"nQj" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay) "nQq" = ( /obj/effect/decal/warning_stripes/north, /turf/simulated/floor/plasteel{ @@ -93202,6 +94023,21 @@ /obj/machinery/light/small, /turf/simulated/floor/plating, /area/hallway/primary/command/west) +"nRx" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xenosecure"; + name = "Secure Creature Cell" + }, +/obj/effect/spawner/window/reinforced/plasma, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) "nRz" = ( /obj/effect/decal/cleanable/dirt, /mob/living/simple_animal/mouse/brown/Tom{ @@ -93260,24 +94096,6 @@ icon_state = "darkyellow" }, /area/engineering/mechanic_workshop/hangar) -"nSd" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/structure/table/reinforced, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival{ - pixel_y = -4; - pixel_x = 4 - }, -/obj/item/kitchen/knife/combat/survival{ - pixel_y = 4; - pixel_x = -4 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel, -/area/engineering/mechanic_workshop/expedition) "nSi" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -93295,6 +94113,20 @@ /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel, /area/storage/eva) +"nSu" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/southwest, +/obj/machinery/firealarm{ + pixel_x = 27; + pixel_y = -27 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutralcorner" + }, +/area/toxins/mixing) "nSx" = ( /obj/structure/closet/crate/medical, /obj/effect/spawner/lootdrop/maintenance, @@ -93349,7 +94181,7 @@ dir = 8 }, /turf/simulated/floor/plasteel, -/area/engineering/engine) +/area/engineering/break_room) "nSN" = ( /obj/machinery/light{ dir = 8 @@ -93383,6 +94215,22 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/tourist) +"nTf" = ( +/obj/structure/sign/directions/floor/alt{ + dir = 6; + pixel_x = -32 + }, +/obj/effect/turf_decal/number/number_1{ + dir = 1; + pixel_x = -3; + pixel_y = -10 + }, +/obj/effect/turf_decal/arrows/white{ + dir = 4 + }, +/obj/machinery/station_map/engineering/directional/north, +/turf/simulated/floor/plasteel/dark, +/area/engineering/controlroom) "nTl" = ( /obj/machinery/firealarm{ dir = 8; @@ -93411,6 +94259,11 @@ /obj/machinery/light/small{ dir = 4 }, +/obj/item/shard{ + icon_state = "medium"; + pixel_x = -7; + pixel_y = -10 + }, /turf/simulated/floor/plating, /area/maintenance/tourist) "nTA" = ( @@ -93493,6 +94346,13 @@ icon_state = "darkblue" }, /area/hallway/secondary/exit) +"nUf" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/security/lobby) "nUl" = ( /obj/effect/turf_decal/siding/yellow{ dir = 8 @@ -93563,24 +94423,6 @@ icon_state = "dark" }, /area/quartermaster/qm) -"nUB" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters{ - dir = 2; - id_tag = "kitchen_abandoned"; - name = "Abandoned Kitchen Shutters" - }, -/obj/item/reagent_containers/food/condiment/peppermill, -/obj/machinery/door/window{ - name = "Kitchen"; - req_access = list(28); - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "stage_bleft" - }, -/area/maintenance/cafeteria) "nUD" = ( /obj/machinery/alarm{ dir = 1; @@ -93629,45 +94471,6 @@ icon_state = "neutralfull" }, /area/atmos) -"nUR" = ( -/obj/structure/table/glass, -/obj/item/circuitboard/aicore{ - pixel_x = -2; - pixel_y = 4 - }, -/obj/item/aicard, -/obj/machinery/door_control{ - id = "rdofficedoor"; - name = "Office Door"; - normaldoorcontrol = 1; - pixel_x = -6; - pixel_y = 27; - req_access = list(30) - }, -/obj/machinery/door_control{ - id = "rdprivacy"; - name = "Privacy Shutters"; - pixel_x = -6; - pixel_y = 36 - }, -/obj/machinery/keycard_auth{ - pixel_y = 27; - pixel_x = 6 - }, -/obj/machinery/door_control{ - id = "Biohazard"; - name = "R&D Lockdown"; - pixel_x = 5; - pixel_y = 36; - req_access = list(30) - }, -/obj/item/paper/monitorkey, -/obj/item/paper/rnd_logs_key{ - pixel_x = 6; - pixel_y = 6 - }, -/turf/simulated/floor/glass/reinforced, -/area/toxins/rdoffice) "nVv" = ( /obj/structure/cable{ icon_state = "4-8" @@ -93703,18 +94506,62 @@ /turf/simulated/wall, /area/maintenance/fsmaint) "nVF" = ( -/obj/effect/decal/warning_stripes/west, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 +/obj/structure/sign/poster/official/safety_report{ + pixel_x = -32 }, -/turf/simulated/floor/plasteel, -/area/atmos) +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/hallway/primary/central/second/west) "nVI" = ( /obj/machinery/atmospherics/pipe/simple/insulated{ dir = 5 }, /turf/simulated/floor/plasteel, /area/toxins/mixing) +"nVR" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/table/wood, +/obj/item/folder/red{ + pixel_x = -7 + }, +/obj/item/folder/red{ + pixel_x = -7; + pixel_y = 3 + }, +/obj/item/folder/white{ + pixel_x = -4 + }, +/obj/item/folder/white{ + pixel_x = -4; + pixel_y = 3 + }, +/obj/item/folder/blue, +/obj/item/folder/blue{ + pixel_y = 3 + }, +/obj/item/folder{ + pixel_x = 3 + }, +/obj/item/folder{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/folder/yellow{ + pixel_x = 6 + }, +/obj/item/folder/yellow{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads) "nVS" = ( /obj/machinery/door/airlock/command{ name = "Blueshield's Bedroom"; @@ -93747,6 +94594,12 @@ }, /turf/space/openspace, /area/solar/starboard) +"nWc" = ( +/obj/structure/table/glass, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/surgery/south) "nWf" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ desc = "Труба хранит в себе набор газов для смешивания"; @@ -93854,6 +94707,10 @@ d2 = 2; icon_state = "0-2" }, +/obj/machinery/cell_charger{ + pixel_x = -1; + pixel_y = 2 + }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) "nWD" = ( @@ -93876,15 +94733,6 @@ icon_state = "yellow" }, /area/medical/chemistry) -"nWU" = ( -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "brown" - }, -/area/quartermaster/delivery) "nXb" = ( /obj/structure/cable{ icon_state = "1-2" @@ -93998,6 +94846,20 @@ }, /turf/simulated/floor/plating, /area/maintenance/fore) +"nXS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/ai_status_display{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "blue" + }, +/area/hallway/primary/fore) "nXU" = ( /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel{ @@ -94009,6 +94871,15 @@ /obj/effect/decal/warning_stripes/east, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/additional) +"nYC" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay) "nYE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -94041,6 +94912,32 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"nYO" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/door/airlock/command/glass{ + id = "ceprivacytint"; + name = "Chief Engineer"; + req_access = list(56); + security_level = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel, +/area/crew_quarters/chief) +"nYP" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/chapel/massdriver) "nYR" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -94067,16 +94964,6 @@ icon_state = "darkblue" }, /area/hallway/secondary/exit) -"nZf" = ( -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -28 - }, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) "nZu" = ( /obj/structure/cable{ icon_state = "2-4" @@ -94125,36 +95012,16 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, -/turf/simulated/floor/plasteel{ - icon_state = "browncorner" - }, +/turf/simulated/floor/plasteel, /area/quartermaster/miningstorage) "nZH" = ( /obj/structure/chair/sofa/corner{ color = "#85130b" }, -/obj/structure/curtain/open/shower/security{ - alpha = 255; - name = "backstage"; - anchored = 1; - pixel_y = 32 - }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood, /area/maintenance/backstage) -"nZN" = ( -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #4"; - id_tag = "xeno4" - }, -/obj/effect/spawner/window/reinforced, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/toxins/xenobiology) "nZO" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -94422,34 +95289,6 @@ icon_state = "dark" }, /area/bridge) -"obH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/fsmaint) -"obM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light{ - dir = 1; - in_use = 1 - }, -/obj/structure/extinguisher_cabinet{ - pixel_y = 28; - pixel_x = -26 - }, -/obj/machinery/alarm{ - pixel_y = 25 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/evidence) "obO" = ( /obj/structure/chair/office/dark{ dir = 4 @@ -94601,6 +95440,19 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/serviceyard) +"ocN" = ( +/obj/structure/chair/comfy/teal{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_x = -32; + pixel_y = -10 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medrest) "ocS" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 @@ -94700,7 +95552,8 @@ icon_state = "1-2" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "odx" = ( @@ -94733,9 +95586,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "brown" @@ -94819,7 +95669,11 @@ pixel_x = 28 }, /obj/structure/table/reinforced, -/obj/item/megaphone, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "red" @@ -94831,46 +95685,29 @@ icon_state = "whiteblue" }, /area/medical/surgery/south) -"oeu" = ( -/obj/structure/table/wood, -/obj/item/clothing/glasses/hud/hydroponic, -/obj/item/clothing/mask/cigarette/rollie, -/obj/item/storage/fancy/cigarettes{ - pixel_y = 8; - pixel_x = -11 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/simulated/floor/plasteel{ - dir = 1 - }, -/area/maintenance/trading) "oev" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/decal/warning_stripes/west, -/obj/structure/ladder, /obj/structure/sign/directions/floor/alt{ dir = 8; pixel_x = -32 }, +/obj/structure/railing{ + dir = 4 + }, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "neutral" + icon_state = "ramptop" }, /area/toxins/mixing) +"oey" = ( +/obj/machinery/door/window/brigdoor{ + color = "red"; + dir = 2; + name = "Security Reception"; + req_access = list(1) + }, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/security/range) "oeC" = ( /turf/simulated/floor/plasteel{ dir = 5; @@ -94884,6 +95721,18 @@ icon_state = "neutral" }, /area/crew_quarters/fitness) +"oeF" = ( +/obj/machinery/teleport/station, +/obj/machinery/camera/motion{ + c_tag = "Minisat Teleporter Room"; + dir = 4; + network = list("Minisat","SS13") + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/tcommsat/chamber) "oeI" = ( /obj/structure/table/reinforced, /obj/machinery/firealarm{ @@ -94954,25 +95803,6 @@ "ofz" = ( /turf/simulated/wall/r_wall, /area/toxins/rdoffice) -"ofC" = ( -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - frequency = 1379; - id_tag = "sw_maint2_pump" - }, -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - id_tag = "sw_maint2_airlock"; - tag_airpump = "sw_maint2_pump"; - tag_chamber_sensor = "sw_maint2_sensor"; - tag_exterior_door = "sw_maint2_outer"; - tag_interior_door = "sw_maint2_inner"; - pixel_x = 25 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plating, -/area/maintenance/starboard) "ofE" = ( /obj/structure/cable{ icon_state = "1-2" @@ -94984,26 +95814,19 @@ icon_state = "arrival" }, /area/hallway/secondary/entry) -"ofJ" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "RoboDesk"; - name = "Robotics Privacy Shutter"; - dir = 8 +"ofL" = ( +/obj/machinery/light{ + dir = 4 }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "Biohazard"; - name = "Quarantine Lockdown"; - opacity = 0 +/obj/machinery/conveyor{ + dir = 1; + id = "QMLoad2" }, -/obj/effect/spawner/window/reinforced, -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" }, -/turf/simulated/floor/plating, -/area/assembly/robotics) +/area/quartermaster/delivery) "ofY" = ( /obj/item/twohanded/required/kirbyplants, /obj/machinery/alarm{ @@ -95094,20 +95917,6 @@ "ogZ" = ( /turf/simulated/wall, /area/atmos) -"oha" = ( -/obj/effect/decal/warning_stripes/northeast, -/obj/machinery/chem_dispenser, -/obj/structure/reagent_dispensers/fueltank/chem{ - pixel_y = 34 - }, -/obj/machinery/door_control{ - id = "Chemistry2"; - name = "Chem Hallway Desk Shutters"; - pixel_y = 24; - pixel_x = -4 - }, -/turf/simulated/floor/engine, -/area/medical/chemistry) "ohi" = ( /obj/structure/cable{ icon_state = "0-2" @@ -95155,6 +95964,7 @@ /obj/machinery/light{ dir = 1 }, +/obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/carpet/red, /area/security/prison/cell_block/A) "ohx" = ( @@ -95172,6 +95982,10 @@ }, /area/turret_protected/aisat_interior/secondary) "ohy" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "red" @@ -95270,7 +96084,7 @@ dir = 4; pixel_x = 28 }, -/obj/structure/chair/office, +/obj/structure/chair, /obj/machinery/atmospherics/unary/vent_scrubber{ name = "standard air scrubber"; on = 1; @@ -95304,14 +96118,19 @@ /turf/simulated/floor/plating, /area/security/permabrig) "ojn" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /obj/structure/disposalpipe/segment{ - dir = 9 + dir = 4 }, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "red" + dir = 8; + icon_state = "whitegreen" }, -/area/security/interrogation) +/area/medical/virology/lab) "ojo" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ name = "standard air scrubber"; @@ -95360,7 +96179,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ - dir = 1 + icon_state = "red" }, /area/security/lobby) "ojE" = ( @@ -95386,6 +96205,21 @@ icon_state = "darkbluealt" }, /area/medical/morgue) +"ojP" = ( +/obj/item/radio/intercom{ + pixel_y = 24 + }, +/obj/machinery/camera{ + c_tag = "Brig Warden's Office"; + dir = 6; + network = list("SS13","Security") + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/security/warden) "ojQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -95489,6 +96323,21 @@ icon_state = "red" }, /area/security/warden) +"okA" = ( +/obj/machinery/disposal, +/obj/structure/sign/deathsposal{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/decal/warning_stripes/red, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "red" + }, +/area/security/main) "okD" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -95585,19 +96434,15 @@ /turf/simulated/floor/wood, /area/maintenance/banya) "olq" = ( -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/double, -/obj/machinery/light{ - dir = 1; - in_use = 1 +/obj/structure/sign/directions/floor/alt{ + dir = 8; + pixel_y = 32 }, -/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark" + dir = 4; + icon_state = "neutralcorner" }, -/area/quartermaster/storage) +/area/hallway/primary/starboard) "ols" = ( /obj/machinery/gateway{ dir = 9 @@ -95644,25 +96489,14 @@ icon_state = "grimy" }, /area/maintenance/detectives_office) -"olM" = ( +"olR" = ( +/obj/effect/decal/warning_stripes/yellow, /obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/airlock/medical/glass{ - name = "Morgue"; - req_access = list(5); - id = "Morgue" - }, /turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark"; - tag = "icon-vault (NORTHEAST)" + dir = 8; + icon_state = "blue" }, -/area/medical/morgue) +/area/hallway/primary/fore) "olS" = ( /obj/structure/extinguisher_cabinet{ name = "north extinguisher cabinet"; @@ -95712,9 +96546,14 @@ /obj/machinery/light{ dir = 4 }, +/obj/machinery/firealarm{ + dir = 4; + name = "east fire alarm"; + pixel_x = 24 + }, /turf/simulated/floor/plasteel{ dir = 4; - icon_state = "redcorner" + icon_state = "red" }, /area/security/prison/cell_block/A) "omm" = ( @@ -95762,12 +96601,10 @@ }, /area/toxins/xenobiology) "omG" = ( -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whitepurple"; - tag = "icon-whitepurple (EAST)" - }, -/area/toxins/launch) +/obj/effect/decal/cleanable/dust, +/obj/item/paper_bin, +/turf/simulated/floor/wood, +/area/maintenance/library) "omJ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -95781,6 +96618,26 @@ dir = 1 }, /area/hallway/primary/central/second/west) +"omR" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 8 + }, +/obj/effect/turf_decal/number/number_1{ + dir = 1; + pixel_x = 5; + pixel_y = -10 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "red" + }, +/area/security/processing) "omU" = ( /obj/machinery/firealarm{ dir = 4; @@ -95798,37 +96655,21 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/maintenance/apmaint) +"onh" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "SKPP" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/bridge/checkpoint/south) "onl" = ( /obj/effect/spawner/random_spawners/wall_rusted_30, /turf/simulated/wall, /area/maintenance/brig) -"onm" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/aisat/aihallway) -"onv" = ( -/obj/item/weldingtool, -/obj/item/weldingtool, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil, -/obj/structure/closet/secure_closet/medical_wall{ - req_access = list(3); - pixel_x = -32; - name = "Exile item closet" - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "red" - }, -/area/gateway) "onw" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/machinery/light/small, @@ -95846,27 +96687,18 @@ }, /area/hallway/primary/central/second/west) "onF" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/wood, -/area/hallway/primary/central/west) -"onK" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/light{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/sortjunction{ - name = "Engineering Junction"; - sortType = 4; - dir = 1 +/obj/structure/sign/directions/floor/alt{ + dir = 8; + pixel_x = -32 }, /turf/simulated/floor/plasteel{ - icon_state = "neutralfull" + dir = 8; + icon_state = "red" }, -/area/engineering/break_room) +/area/hallway/primary/central/west) "onM" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/effect/decal/cleanable/blood/oil, @@ -95960,11 +96792,13 @@ /area/hallway/secondary/entry/eastarrival) "ooP" = ( /obj/effect/decal/warning_stripes/yellow/hollow, -/obj/structure/reagent_dispensers/watertank/high, -/obj/item/reagent_containers/glass/bucket, /obj/structure/extinguisher_cabinet{ pixel_y = -32 }, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -95981,19 +96815,12 @@ }, /area/medical/chemistry) "ooX" = ( -/obj/item/radio/intercom{ - dir = 8; - name = "Station Intercom (General)"; - pixel_x = 28 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/light/small{ - dir = 4 +/obj/machinery/door/airlock/mining{ + name = "Mining Dock"; + req_access = list(48) }, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "brown" + icon_state = "brownfull" }, /area/quartermaster/miningstorage) "ooY" = ( @@ -96072,6 +96899,14 @@ }, /turf/simulated/floor/wood, /area/library) +"ops" = ( +/obj/machinery/recharge_station, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/reception) "opw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -96104,6 +96939,7 @@ /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, /obj/effect/spawner/random_spawners/cobweb_left_rare, +/obj/item/storage/box/lights/bulbs, /turf/simulated/floor/plating, /area/maintenance/tourist) "opR" = ( @@ -96135,8 +96971,19 @@ "oqp" = ( /turf/simulated/floor/plating, /area/maintenance/asmaint3) +"oqr" = ( +/obj/structure/curtain/open{ + anchored = 1; + color = "#222222" + }, +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/briefcase, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/trading) "oqt" = ( -/obj/effect/landmark/start/barber, /turf/simulated/floor/wood/oak, /area/civilian/barber) "oqu" = ( @@ -96351,7 +97198,7 @@ dir = 8; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "osl" = ( /obj/structure/table/reinforced, /obj/item/restraints/legcuffs/beartrap, @@ -96471,7 +97318,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "ote" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/machinery/power/port_gen/pacman, @@ -96488,6 +97335,44 @@ /obj/effect/spawner/random_spawners/cobweb_left_rare, /turf/simulated/floor/plating, /area/maintenance/asmaint) +"oti" = ( +/obj/machinery/door/window{ + dir = 2; + req_access = list(73) + }, +/obj/structure/table/wood{ + color = "#996633" + }, +/obj/machinery/light_switch{ + pixel_x = 38; + pixel_y = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/item/folder, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/folder/white{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/folder/red{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/folder/blue{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/folder/yellow{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/stamp/rep, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/carpet/royalblack, +/area/ntrep) "otm" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -96503,6 +97388,21 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/hallway/primary/central/second/north) +"otB" = ( +/obj/machinery/optable, +/obj/machinery/shower{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/machinery/defibrillator_mount/loaded{ + pixel_x = 32; + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/security/medbay) "otD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -96574,6 +97474,16 @@ }, /turf/simulated/floor/plating, /area/maintenance/fsmaint3) +"otP" = ( +/obj/machinery/alarm{ + dir = 4; + pixel_x = -24 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) "otR" = ( /obj/machinery/door/airlock/maintenance{ name = "Medbay Maintenance"; @@ -96586,7 +97496,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, -/area/medical/medrest) +/area/maintenance/asmaint) "otS" = ( /obj/structure/closet/secure_closet/engineering_electrical, /obj/effect/decal/warning_stripes/east, @@ -96699,24 +97609,6 @@ /obj/effect/spawner/random_spawners/blood_20, /turf/simulated/floor/plating, /area/maintenance/fpmaint) -"ouv" = ( -/obj/machinery/power/smes{ - charge = 5e+006 - }, -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2" - }, -/obj/structure/sign/electricshock{ - pixel_y = 0; - pixel_x = 32 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/west, -/turf/simulated/floor/plating, -/area/aisat/maintenance) "ouB" = ( /obj/machinery/door/airlock/public/glass{ id = "vipbar1"; @@ -96806,6 +97698,26 @@ /obj/machinery/light/small, /turf/simulated/floor/plasteel/freezer, /area/crew_quarters/heads/hop) +"ovb" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 4 + }, +/obj/effect/turf_decal/number/number_2{ + dir = 1; + pixel_x = -6; + pixel_y = -10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/hallway/secondary/entry/lounge) +"ovj" = ( +/obj/structure/table, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "red" + }, +/area/security/prison/cell_block/A) "ovn" = ( /obj/structure/table/reinforced, /obj/item/clipboard, @@ -96895,21 +97807,6 @@ icon_state = "neutralfull" }, /area/atmos/control) -"ovP" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "west bump"; - pixel_x = -26 - }, -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay2) "ovQ" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/eastright{ @@ -96951,9 +97848,15 @@ }, /area/medical/chemistry) "ovR" = ( -/obj/structure/table, -/obj/item/aiModule/protectStation, -/obj/item/aiModule/nanotrasen, +/obj/item/ai_module/protect_station{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/ai_module/nanotrasen{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/structure/table/glass, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -96963,6 +97866,9 @@ /obj/item/tank/internals/oxygen, /obj/item/radio, /obj/item/clothing/mask/breath, +/obj/structure/sign/poster/contraband/missing_gloves{ + pixel_y = -32 + }, /turf/simulated/floor/plating, /area/maintenance/apmaint) "ovY" = ( @@ -97208,6 +98114,28 @@ /obj/effect/decal/warning_stripes/north, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/commercial) +"oxJ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 4; + name = "Atmospherics Junction"; + sortType = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/break_room) "oxK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -97241,6 +98169,14 @@ icon_state = "yellow" }, /area/storage/primary) +"oyj" = ( +/obj/item/cigbutt{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) "oyB" = ( /obj/effect/decal/warning_stripes/west{ icon = 'icons/turf/floors.dmi'; @@ -97262,6 +98198,15 @@ icon_state = "asteroid" }, /area/hydroponics) +"oyF" = ( +/obj/machinery/door/window/eastright{ + dir = 2; + name = "Forensic laboratory"; + req_access = list(3,4) + }, +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/wood, +/area/security/detectives_office) "oyJ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -97658,16 +98603,6 @@ icon_state = "neutralfull" }, /area/hallway/primary/central/west) -"oBS" = ( -/obj/machinery/blackbox_recorder, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/camera/motion{ - c_tag = "Minisat AI Core South"; - network = list("Minisat","SS13"); - dir = 10 - }, -/turf/simulated/floor/redgrid, -/area/turret_protected/ai) "oBT" = ( /obj/machinery/light{ dir = 8 @@ -97813,10 +98748,10 @@ dir = 1; in_use = 1 }, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "oDB" = ( -/obj/item/reagent_containers/spray/pestspray, +/obj/structure/flora/ausbushes/sunnybush, /turf/simulated/floor/grass, /area/maintenance/garden) "oDL" = ( @@ -97946,32 +98881,6 @@ icon_state = "neutralfull" }, /area/atmos) -"oEu" = ( -/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - id_tag = "aisolw_airlock"; - tag_airpump = "aisolw_pump"; - tag_chamber_sensor = "aisolw_sensor"; - tag_exterior_door = "aisolw_outer"; - tag_interior_door = "aisolw_inner"; - pixel_y = 28 - }, -/obj/machinery/airlock_sensor{ - id_tag = "aisolw_sensor"; - pixel_y = -28 - }, -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - frequency = 1379; - id_tag = "aisolw_pump"; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/maintenance/starboardaux) "oEv" = ( /obj/effect/landmark/start/doctor, /turf/simulated/floor/plasteel{ @@ -97993,6 +98902,15 @@ icon_state = "neutralfull" }, /area/hallway/secondary/entry/lounge) +"oEP" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = -30 + }, +/turf/simulated/floor/wood, +/area/library) "oET" = ( /obj/effect/decal/warning_stripes/northeast, /turf/simulated/floor/plasteel{ @@ -98046,19 +98964,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/maintcentral) -"oFj" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "brown" - }, -/area/quartermaster/delivery) "oFm" = ( /obj/structure/cable{ icon_state = "4-8" @@ -98080,6 +98985,7 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/barricade/wooden, /turf/simulated/floor/plating, /area/maintenance/atmospherics) "oFD" = ( @@ -98098,9 +99004,11 @@ /turf/simulated/floor/plasteel, /area/crew_quarters/toilet) "oFH" = ( -/obj/item/pen, -/obj/structure/table, -/turf/simulated/floor/plating, +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/plasteel, /area/maintenance/xenozoo) "oFT" = ( /obj/structure/cable{ @@ -98506,6 +99414,24 @@ }, /turf/simulated/floor/carpet/royalblack, /area/bridge/meeting_room) +"oIS" = ( +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/sign/electricshock{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/west, +/turf/simulated/floor/plating, +/area/aisat/maintenance) "oIV" = ( /obj/machinery/light{ dir = 8 @@ -98934,31 +99860,6 @@ icon_state = "red" }, /area/security/processing) -"oMu" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/clothing/suit/armor/bulletproof, -/obj/machinery/door/window{ - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 1 - }, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/head/helmet/alt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "oMC" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, @@ -99017,7 +99918,9 @@ codes_txt = "patrol;next_patrol=C6"; location = "C5" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "oMX" = ( /obj/machinery/camera{ @@ -99063,16 +99966,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint2) -"oNn" = ( -/obj/machinery/conveyor/inverted{ - id = "QMLoad"; - dir = 9 - }, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "brown" - }, -/area/quartermaster/delivery) "oNt" = ( /turf/simulated/floor/plasteel{ icon_state = "darkyellow" @@ -99102,12 +99995,6 @@ icon_state = "hydrofloor" }, /area/maintenance/secpost) -"oNw" = ( -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay) "oNx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -99146,18 +100033,6 @@ icon_state = "bar" }, /area/security/permabrig) -"oNO" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/toxins/launch) "oNV" = ( /obj/effect/turf_decal/siding/purple{ dir = 9 @@ -99216,34 +100091,6 @@ }, /turf/simulated/floor/engine/insulated, /area/maintenance/apmaint) -"oOs" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -28 - }, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) -"oOA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/button/windowtint{ - id = "Interrogation"; - pixel_y = -24; - req_access = list(63); - pixel_x = 24 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkred" - }, -/area/security/interrogation) "oOF" = ( /obj/structure/sign/directions/security{ dir = 8 @@ -99257,17 +100104,6 @@ }, /turf/simulated/wall, /area/security/lobby) -"oOJ" = ( -/obj/machinery/camera{ - c_tag = "Research Central Hallway"; - network = list("Research","SS13"); - dir = 10 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - tag = "icon-whitepurple (WEST)" - }, -/area/medical/research) "oOM" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/girder, @@ -99306,14 +100142,12 @@ /area/medical/biostorage) "oPd" = ( /obj/effect/decal/warning_stripes/southeast, -/obj/machinery/chem_master{ - pixel_x = -1 - }, /obj/structure/cable{ d1 = 4; d2 = 8; icon_state = "4-8" }, +/obj/machinery/computer/pandemic, /turf/simulated/floor/plasteel, /area/medical/virology/lab) "oPf" = ( @@ -99330,7 +100164,8 @@ icon_state = "0-4" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "oPj" = ( @@ -99380,6 +100215,10 @@ icon_state = "darkred" }, /area/bridge) +"oPt" = ( +/obj/structure/flora/ausbushes/ywflowers/hell, +/turf/simulated/floor/grass, +/area/maintenance/garden) "oPu" = ( /obj/structure/chair/comfy/brown, /turf/simulated/floor/wood, @@ -99529,20 +100368,13 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/structure/disposalpipe/segment{ + dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/structure/disposalpipe/sortjunction/reversed{ - dir = 8; - name = "Brig Physician"; - sortType = 24 - }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -99624,9 +100456,10 @@ /obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, +/obj/machinery/vending/cart{ + pixel_x = -1; + pixel_y = 1 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" @@ -99653,6 +100486,15 @@ icon_state = "neutral" }, /area/bridge/checkpoint/south) +"oRJ" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) "oRO" = ( /obj/structure/chair/barber{ dir = 8 @@ -99708,34 +100550,11 @@ }, /area/blueshield) "oSq" = ( -/obj/structure/closet/crate/medical, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = -4; - pixel_y = 5 - }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = -11; - pixel_y = 5 - }, -/obj/item/storage/box/beakers{ - pixel_x = 8; - pixel_y = 2 - }, -/obj/item/storage/box/beakers{ - pixel_y = -1 - }, -/obj/item/storage/box/syringes{ - pixel_x = 10; - pixel_y = -3 - }, -/obj/item/storage/box/gloves{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 6 +/obj/machinery/chem_master{ + pixel_x = -1 }, -/turf/simulated/floor/plating, +/obj/effect/decal/warning_stripes/northeastcorner, +/turf/simulated/floor/plasteel, /area/medical/virology/lab) "oSw" = ( /obj/structure/railing{ @@ -99753,6 +100572,9 @@ /obj/machinery/light/small{ dir = 1 }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, /turf/simulated/floor/carpet, /area/library) "oSB" = ( @@ -99803,6 +100625,20 @@ icon_state = "green" }, /area/hallway/secondary/exit) +"oSK" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/window/reinforced, +/obj/structure/curtain/open/shower/security{ + alpha = 255; + anchored = 1; + icon_state = "closed"; + name = "backstage"; + opacity = 1 + }, +/turf/simulated/floor/plating, +/area/security/medbay) "oSM" = ( /obj/structure/cable{ icon_state = "1-8" @@ -100007,26 +100843,6 @@ }, /turf/simulated/floor/carpet/black, /area/chapel/main) -"oUd" = ( -/obj/machinery/door/window/brigdoor{ - dir = 1; - color = "red" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/decal/cleanable/blood/tracks, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plasteel{ - icon_state = "rampbottom"; - tag = "icon-stage_stairs" - }, -/area/maintenance/gambling_den) "oUg" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -100070,7 +100886,9 @@ /obj/structure/cable{ icon_state = "2-4" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "oUo" = ( /obj/machinery/door/airlock/external{ @@ -100083,44 +100901,6 @@ /obj/structure/fans/tiny, /turf/simulated/floor/plasteel/dark, /area/engineering/controlroom) -"oUq" = ( -/obj/structure/chair/comfy/red{ - dir = 4 - }, -/obj/effect/landmark/start/head_of_security, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door_control{ - desc = "A remote control-switch to lock down the prison wing's blast doors"; - id = "Prison Gate"; - name = "PermaBrig Lockdown"; - pixel_y = 20; - req_access = list(2); - pixel_x = 26 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/door_control{ - id = "HoSPriv"; - name = "HoS Office Privacy Shutters Control"; - pixel_y = -10; - req_access = list(58); - pixel_x = 26 - }, -/obj/machinery/door_control{ - id = "Brig_lockdown"; - name = "Brig Lockdown"; - pixel_x = 26; - pixel_y = 10; - req_access = list(58) - }, -/turf/simulated/floor/carpet/red, -/area/security/hos) "oUs" = ( /obj/effect/decal/warning_stripes/northwest, /obj/machinery/computer/rdconsole/core, @@ -100295,7 +101075,7 @@ /turf/simulated/floor/shuttle/plating, /area/shuttle/arrival/station) "oVW" = ( -/obj/structure/chair/office, +/obj/structure/chair, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "dark" @@ -100322,29 +101102,6 @@ icon_state = "darkbluecornersalt" }, /area/hallway/primary/command) -"oWw" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/ammo_box/shotgun/beanbag, -/obj/item/ammo_box/shotgun/beanbag{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/ammo_box/shotgun/tranquilizer{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/ammo_box/shotgun/tranquilizer{ - pixel_x = -6; - pixel_y = 6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "oWE" = ( /turf/simulated/floor/plasteel{ icon_state = "darkredcorners" @@ -100512,17 +101269,6 @@ icon_state = "red" }, /area/security/prisonershuttle) -"oXJ" = ( -/obj/machinery/conveyor{ - id = "packageExternal"; - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark" - }, -/area/quartermaster/delivery) "oXN" = ( /obj/machinery/mineral/equipment_vendor, /turf/simulated/floor/plasteel{ @@ -100641,6 +101387,24 @@ /obj/machinery/teleport/station, /turf/simulated/floor/plasteel/white, /area/teleporter) +"oYN" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "NTRprivate"; + name = "Privacy Shutters" + }, +/obj/effect/spawner/window/reinforced/polarized{ + id = "ntrepprivate" + }, +/turf/simulated/floor/plating, +/area/ntrep) "oYO" = ( /obj/structure/railing, /obj/effect/turf_decal/siding/wood{ @@ -100657,14 +101421,14 @@ /turf/simulated/floor/plating, /area/maintenance/casino) "oYP" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Warden's Office"; - req_access = list(3); - security_level = 1 - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Warden's Bedroom"; + req_access = list(3); + security_level = 1 + }, /turf/simulated/floor/plasteel{ icon_state = "redfull"; tag = "icon-redfull (NORTHWEST)" @@ -100755,38 +101519,31 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel, /area/storage/eva) -"oZq" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 8 - }, +"oZp" = ( +/obj/structure/railing/corner, /turf/simulated/floor/plating, -/area/maintenance/tourist) -"oZu" = ( -/obj/structure/flora/ausbushes/palebush, -/obj/structure/flora/ausbushes/brflowers, -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/window/reinforced{ - layer = 2.9; - color = "orange" +/area/maintenance/casino) +"oZs" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/structure/window/reinforced{ - dir = 4; - layer = 2.9; - color = "orange" +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Eng_lockdown"; + name = "Engineering Lockdown"; + opacity = 0 }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9; - color = "orange" +/obj/machinery/door/airlock/atmos{ + name = "Supermatter Chamber"; + req_access = list(24); + security_level = 1 }, -/turf/simulated/floor/grass, -/area/quartermaster/miningstorage) +/turf/simulated/floor/plasteel/dark, +/area/engineering/controlroom) "oZv" = ( /obj/machinery/door/airlock/external{ frequency = 1379; @@ -100835,6 +101592,17 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/arcade) +"oZN" = ( +/obj/structure/table/wood{ + color = "#996633" + }, +/obj/item/paper/ntrep{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/book/manual/sop_command, +/turf/simulated/floor/wood/dark, +/area/ntrep) "oZP" = ( /obj/structure/table, /obj/item/storage/box/gloves{ @@ -101027,7 +101795,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "pbd" = ( /obj/machinery/hologram/holopad, @@ -101074,19 +101844,35 @@ /obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood, /area/maintenance/livingcomplex) -"pbA" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "mining_internal" +"pbx" = ( +/obj/structure/rack, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -4; + pixel_y = 5 }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -1; + pixel_y = 2 }, -/turf/simulated/floor/plating, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = 2; + pixel_y = -1 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/engineering/hardsuitstorage) +"pbA" = ( +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/turf/simulated/floor/plasteel, /area/quartermaster/miningstorage) "pbD" = ( /obj/structure/stairs{ - dir = 4 + dir = 4; + layer = 2 }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -101173,22 +101959,6 @@ icon_state = "whiteblue" }, /area/medical/cryo) -"pch" = ( -/obj/structure/chair/sofa/corner{ - dir = 4; - color = "#85130b" - }, -/obj/structure/curtain/open/shower/security{ - alpha = 255; - name = "backstage"; - anchored = 1; - pixel_y = 32 - }, -/turf/simulated/floor/wood{ - icon_state = "wood-broken3"; - tag = "icon-wood-broken3" - }, -/area/maintenance/backstage) "pci" = ( /obj/effect/decal/cleanable/dust, /turf/simulated/floor/plasteel{ @@ -101302,9 +102072,7 @@ /area/atmos) "pdg" = ( /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whitepurple"; - tag = "icon-whitepurple (NORTH)" + icon_state = "purplefull" }, /area/toxins/launch) "pdF" = ( @@ -101376,17 +102144,27 @@ icon_state = "dark" }, /area/crew_quarters/sleep) -"pek" = ( -/obj/machinery/atmospherics/meter, -/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ - desc = "Труба хранит в себе набор газов для смешивания"; - name = "Труба смешивания"; - dir = 1 +"peg" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/item/clothing/suit/armor/laserproof, +/obj/item/gun/energy/ionrifle, +/obj/machinery/door/window{ + color = "red"; + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/structure/window/reinforced{ + color = "red" }, /turf/simulated/floor/plasteel{ - icon_state = "neutralfull" + icon_state = "dark" }, -/area/atmos) +/area/security/securearmory) "pep" = ( /turf/simulated/floor/plasteel{ icon_state = "redyellowfull" @@ -101423,6 +102201,8 @@ /obj/item/clothing/mask/muzzle, /obj/item/reagent_containers/hypospray/safety, /obj/item/reagent_containers/hypospray/safety, +/obj/item/clothing/glasses/sunglasses/blindfold/black, +/obj/item/storage/belt/medical/surgery/loaded, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "dark" @@ -101468,23 +102248,6 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/assembly/robotics) -"pfk" = ( -/obj/machinery/disposal, -/obj/effect/decal/warning_stripes/red, -/obj/machinery/door_control{ - id = "SecPilotPriv"; - name = "Pilot Privacy Shutters Control"; - req_access = list(3,71); - pixel_x = -24 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkred" - }, -/area/security/podbay) "pfm" = ( /turf/simulated/floor/plasteel{ icon_state = "red" @@ -101535,7 +102298,9 @@ }, /area/quartermaster/office) "pfw" = ( -/obj/machinery/computer/secure_data, +/obj/machinery/computer/security{ + network = list("SS13","Research Outpost","Mining Outpost") + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "red" @@ -101593,14 +102358,13 @@ /turf/simulated/floor/plating, /area/turret_protected/ai) "pfM" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkblue" + dir = 1; + icon_state = "red" }, -/area/security/medbay) +/area/hallway/primary/central/second/west) "pfN" = ( /obj/effect/decal/warning_stripes/southeastcorner, /obj/structure/disposalpipe/segment, @@ -101676,7 +102440,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "pgr" = ( @@ -101947,25 +102712,21 @@ icon_state = "whiteblue" }, /area/medical/medbay) +"phW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/station_map/directional/south, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/hallway/secondary/exit) "pia" = ( /obj/item/beach_ball/holoball, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/floor/plating, /area/security/permabrig) -"pib" = ( -/obj/machinery/door_control{ - id = "xeno1"; - name = "Containment Control"; - req_access = list(55); - pixel_x = -32 - }, -/obj/effect/decal/warning_stripes/yellow, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whitehall" - }, -/area/toxins/xenobiology) "pid" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -102098,8 +102859,21 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) +"piR" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/barricade/wooden/crude, +/obj/structure/curtain/open/shower/security{ + alpha = 255; + anchored = 1; + name = "backstage"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/backstage) "piU" = ( /obj/structure/sign/directions/engineering{ dir = 4; @@ -102409,7 +103183,9 @@ /obj/structure/cable{ icon_state = "1-4" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "pkT" = ( /obj/structure/table, @@ -102479,6 +103255,28 @@ }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"plq" = ( +/obj/structure/table/wood, +/obj/item/grenade/chem_grenade{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/grenade/chem_grenade{ + pixel_x = 7 + }, +/obj/item/grenade/chem_grenade, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/trading) "plr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -102526,7 +103324,10 @@ "plF" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green, -/obj/item/card/id/captains_spare, +/obj/item/storage/secure/briefcase/captian, +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_y = -32 + }, /turf/simulated/floor/carpet/royalblue, /area/crew_quarters/captain/bedroom) "plI" = ( @@ -102538,10 +103339,21 @@ pixel_y = 32 }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "brown" + dir = 1 }, /area/quartermaster/lobby) +"plK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno3"; + name = "Creature Cell #3" + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) "plN" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 @@ -102552,6 +103364,20 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel, /area/engineering/controlroom) +"plT" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xenosecure"; + name = "Secure Creature Cell" + }, +/obj/effect/spawner/window/reinforced/plasma, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) "pmc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -102576,6 +103402,18 @@ /obj/effect/decal/warning_stripes/north, /turf/simulated/floor/plasteel/airless, /area/toxins/test_area) +"pmm" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/security/lobby) "pmo" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small, @@ -102604,29 +103442,6 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/theatre) -"pmy" = ( -/obj/structure/closet/crate/freezer, -/obj/machinery/iv_drip, -/obj/effect/decal/warning_stripes/blue/hollow, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/nitrogen, -/obj/item/tank/internals/emergency_oxygen/plasma, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/blood/OMinus, -/obj/item/reagent_containers/iv_bag/blood/OMinus, -/obj/item/reagent_containers/iv_bag/blood/OPlus, -/obj/item/reagent_containers/iv_bag/blood/OPlus, -/obj/item/reagent_containers/iv_bag/blood/APlus, -/obj/item/reagent_containers/iv_bag/blood/BMinus, -/obj/item/reagent_containers/iv_bag/blood/BPlus, -/obj/item/reagent_containers/iv_bag/blood/AMinus, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whiteblue" - }, -/area/medical/cryo) "pmD" = ( /obj/effect/spawner/window/reinforced/polarized{ id = "conferenceroomwindows" @@ -102713,18 +103528,6 @@ /obj/effect/decal/cleanable/blood, /turf/simulated/floor/plating, /area/maintenance/medroom) -"pns" = ( -/obj/machinery/camera{ - c_tag = "Research West Hallway 1"; - network = list("Research","SS13"); - dir = 9 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whitepurple"; - tag = "icon-whitepurple (EAST)" - }, -/area/medical/research/nhallway) "pnu" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -102734,6 +103537,20 @@ icon_state = "darkblue" }, /area/blueshield) +"pnB" = ( +/obj/item/reagent_containers/glass/bucket, +/obj/item/reagent_containers/glass/bucket{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/structure/table, +/obj/structure/window/reinforced/polarized, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "blue" + }, +/area/security/permabrig) "pnD" = ( /obj/item/radio/intercom{ pixel_x = 28 @@ -102743,6 +103560,16 @@ icon_state = "neutral" }, /area/hallway/primary/central/second/east) +"pnE" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/security/hos) "pnF" = ( /obj/machinery/alarm{ pixel_y = 24 @@ -102964,27 +103791,22 @@ }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) -"ppH" = ( -/obj/structure/flora/ausbushes/brflowers, -/obj/structure/flora/ausbushes/sunnybush, -/obj/machinery/light, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9; - color = "orange" +"ppI" = ( +/obj/structure/chair{ + dir = 8 }, -/obj/structure/window/reinforced{ - dir = 4; - layer = 2.9; - color = "orange" +/obj/machinery/alarm{ + pixel_y = 24 }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9; - color = "orange" +/obj/item/radio/intercom{ + pixel_x = -32; + pixel_y = 24 }, -/turf/simulated/floor/grass, -/area/quartermaster/miningstorage) +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" + }, +/area/security/interrogation) "ppJ" = ( /obj/machinery/status_display{ pixel_y = 32 @@ -103062,6 +103884,26 @@ icon_state = "neutralfull" }, /area/hallway/spacebridge/comcar) +"pqc" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light_switch{ + name = "north light switch"; + pixel_x = 24; + pixel_y = 24 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) "pqk" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -103079,12 +103921,14 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -103185,6 +104029,20 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/medical/cmo) +"pqW" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 8 + }, +/obj/effect/turf_decal/number/number_2{ + dir = 1; + pixel_x = 6; + pixel_y = -10 + }, +/obj/machinery/station_map/directional/south, +/turf/simulated/floor/plasteel{ + icon_state = "blue" + }, +/area/hallway/secondary/entry/lounge) "pqZ" = ( /obj/effect/decal/warning_stripes/south, /obj/effect/decal/cleanable/dirt, @@ -103215,6 +104073,30 @@ /obj/machinery/atmospherics/pipe/simple/hidden/universal, /turf/simulated/floor/plasteel, /area/storage/eva) +"prp" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/machinery/camera{ + c_tag = "Xenobio Central-South"; + dir = 6; + network = list("Research","SS13"); + pixel_x = -1 + }, +/turf/simulated/floor/grass, +/area/toxins/xenobiology) +"prs" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "SKPP" + }, +/obj/structure/cable, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/bridge/checkpoint/south) "pry" = ( /obj/structure/grille/broken, /obj/effect/decal/cleanable/dirt, @@ -103232,6 +104114,13 @@ /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/plasteel, /area/engineering/controlroom) +"prN" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/hallway/primary/central/second/west) "prY" = ( /obj/effect/landmark/tiles/damageturf, /turf/simulated/floor/plating, @@ -103267,8 +104156,8 @@ /turf/simulated/floor/grass, /area/hallway/secondary/exit) "psl" = ( -/obj/structure/table, -/obj/item/aiModule/reset, +/obj/item/ai_module/reset, +/obj/structure/table/glass, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -103396,7 +104285,7 @@ /obj/effect/decal/warning_stripes/north, /obj/structure/fans/tiny, /turf/simulated/floor/plating, -/area/chapel/main) +/area/chapel/massdriver) "pty" = ( /obj/structure/bookcase{ name = "bookcase (Non-Fiction)" @@ -103441,10 +104330,16 @@ /turf/simulated/floor/plating, /area/security/hos) "ptP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/paper_bin, +/obj/machinery/door/airlock/external{ + frequency = 1379; + id_tag = "vir_maint2_inner"; + locked = 1; + name = "West Maintenance External Access"; + req_access = list(10,13) + }, +/obj/effect/decal/warning_stripes/west, /turf/simulated/floor/plating, -/area/maintenance/xenozoo) +/area/maintenance/asmaint4) "ptQ" = ( /obj/structure/extinguisher_cabinet{ name = "north extinguisher cabinet"; @@ -103526,7 +104421,9 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "puy" = ( /obj/effect/decal/cleanable/dirt, @@ -103551,6 +104448,42 @@ /obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood, /area/maintenance/fsmaint) +"puI" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/machinery/door/window{ + color = "red"; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/ammo_box/c9mm, +/obj/item/ammo_box/c9mm{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/magazine/enforcer/lethal{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/ammo_box/magazine/enforcer/lethal, +/obj/item/ammo_box/magazine/enforcer/lethal{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/magazine/enforcer/lethal{ + pixel_x = -6; + pixel_y = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "puK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -103592,24 +104525,17 @@ c_tag = "Briefing Room North"; network = list("SS13","Security") }, +/obj/machinery/station_map/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "red" }, /area/security/main) "pvk" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Central Ring Hallway West 1"; - dir = 4 - }, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "neutral" + icon_state = "red" }, -/area/hallway/primary/central/west) +/area/security/lobby) "pvn" = ( /obj/structure/bed, /obj/item/bedsheet/medical{ @@ -103705,7 +104631,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "pvI" = ( /obj/machinery/door/airlock/security/glass{ id_tag = "BrigLeft"; @@ -103737,6 +104663,19 @@ /obj/item/clothing/glasses/meson, /turf/simulated/floor/plasteel, /area/engineering/controlroom) +"pvP" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30 + }, +/obj/item/tank/internals/plasma, +/obj/machinery/camera{ + c_tag = "Engine Room East"; + dir = 8; + network = list("Engineering","SS13") + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "pvR" = ( /obj/machinery/ai_status_display{ pixel_x = -32 @@ -103766,6 +104705,30 @@ icon_state = "whitebluefull" }, /area/medical/sleeper) +"pvU" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + frequency = 1379; + id_tag = "ai_pump" + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + id_tag = "ai_airlock"; + pixel_x = 28; + pixel_y = -3; + tag_airpump = "ai_pump"; + tag_chamber_sensor = "ai_sensor"; + tag_exterior_door = "ai_outer"; + tag_interior_door = "ai_inner" + }, +/obj/machinery/airlock_sensor{ + id_tag = "ai_sensor"; + pixel_x = 28; + pixel_y = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/aisat/aihallway) "pvY" = ( /obj/machinery/light/small{ dir = 8 @@ -103802,10 +104765,13 @@ c_tag = "Cremator"; dir = 8 }, +/obj/machinery/light_switch{ + pixel_x = 26 + }, /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "pwp" = ( /obj/structure/chair/stool, /obj/effect/decal/cleanable/dust, @@ -103876,7 +104842,7 @@ dir = 8; icon_state = "whitegreen" }, -/area/medical/virology/lab) +/area/medical/virology) "pwZ" = ( /obj/structure/dispenser/oxygen, /obj/machinery/light{ @@ -103903,17 +104869,6 @@ }, /turf/simulated/floor/plasteel, /area/security/permabrig) -"pxf" = ( -/obj/machinery/light_switch{ - name = "north bump"; - pixel_y = -24; - pixel_x = 24 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - tag = "icon-whiteblue" - }, -/area/medical/medrest) "pxh" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -103931,6 +104886,22 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/glass/reinforced, /area/engineering/controlroom) +"pxp" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/camera{ + c_tag = "Research West Hallway 2"; + dir = 9; + network = list("Research","SS13") + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple"; + tag = "icon-whitepurple (EAST)" + }, +/area/medical/research/nhallway) "pxx" = ( /obj/structure/cable{ icon_state = "1-2" @@ -103954,7 +104925,7 @@ dir = 10; icon_state = "darkred" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "pxI" = ( /obj/structure/window/reinforced{ dir = 8 @@ -104016,9 +104987,20 @@ }, /area/hallway/primary/central/sw) "pyi" = ( -/obj/structure/stairs, +/obj/structure/stairs{ + layer = 2 + }, /turf/simulated/floor/plating, /area/maintenance/casino) +"pyk" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningstorage) "pyl" = ( /obj/machinery/door/airlock/maintenance{ name = "Kitchen Maintenance"; @@ -104042,7 +105024,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 + dir = 8 }, /turf/simulated/floor/plasteel, /area/atmos) @@ -104065,12 +105047,10 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, /obj/structure/cable{ icon_state = "2-8" }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel, /area/maintenance/xenozoo) "pyA" = ( @@ -104153,20 +105133,17 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "pyX" = ( -/obj/structure/cable{ - icon_state = "1-8" +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 }, /obj/structure/cable{ icon_state = "2-8" }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/structure/sign/redcross{ + pixel_y = 32 }, /turf/simulated/floor/plasteel{ dir = 1; @@ -104256,6 +105233,8 @@ }, /area/hallway/secondary/entry/additional) "pzD" = ( +/obj/machinery/telepad_cargo, +/obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurplecorner" @@ -104280,9 +105259,6 @@ /turf/simulated/floor/plating, /area/maintenance/apmaint) "pzK" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/turretid/stun{ control_area = "AI Satellite Antechamber"; name = "AI Antechamber Turret Control"; @@ -104301,7 +105277,7 @@ dir = 10; icon_state = "darkred" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "pzY" = ( /obj/effect/decal/warning_stripes/south, /obj/item/radio/intercom{ @@ -104494,6 +105470,9 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/atmosia_independence{ + pixel_x = 32 + }, /turf/simulated/floor/plasteel{ icon_state = "yellowfull" }, @@ -104529,6 +105508,17 @@ "pBl" = ( /turf/simulated/openspace, /area/hallway/primary/command/east) +"pBo" = ( +/obj/effect/turf_decal/siding/red, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/newscaster/security_unit{ + pixel_x = -32; + pixel_y = -30 + }, +/turf/simulated/floor/carpet/red, +/area/security/hos) "pBp" = ( /obj/effect/decal/cleanable/dust, /obj/structure/fence{ @@ -104596,13 +105586,17 @@ icon_state = "darkyellow" }, /area/bridge) +"pBJ" = ( +/obj/structure/sign/poster/contraband/random, +/turf/simulated/wall, +/area/maintenance/apmaint) "pBK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, /obj/structure/chair/comfy/red{ dir = 4 }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, /turf/simulated/floor/carpet/red, /area/security/prison/cell_block/A) "pBN" = ( @@ -104740,6 +105734,17 @@ }, /turf/simulated/floor/plating, /area/maintenance/livingcomplex) +"pCW" = ( +/obj/effect/decal/warning_stripes/west, +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_x = -26; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/gravitygenerator) "pCX" = ( /obj/machinery/computer/prisoner{ dir = 8 @@ -104829,7 +105834,9 @@ /area/security/hos) "pDK" = ( /obj/machinery/atmospherics/unary/vent_pump/on, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "pDN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -104950,19 +105957,6 @@ icon_state = "freezerfloor" }, /area/medical/cmo) -"pFo" = ( -/obj/structure/table/reinforced, -/obj/item/stack/sheet/mineral/plasma{ - amount = 30 - }, -/obj/item/tank/internals/plasma, -/obj/machinery/camera{ - c_tag = "Engine Room East"; - network = list("Engineering","SS13"); - dir = 8 - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "pFq" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -105043,6 +106037,10 @@ d2 = 2; icon_state = "0-2" }, +/obj/structure/sign/directions/floor/alt{ + dir = 6; + pixel_y = 32 + }, /turf/simulated/floor/plating, /area/maintenance/apmaint) "pFH" = ( @@ -105081,7 +106079,13 @@ }, /area/security/customs) "pFQ" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 2; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -105206,6 +106210,12 @@ icon_state = "neutralfull" }, /area/hallway/secondary/entry/commercial) +"pGo" = ( +/obj/structure/table/glass, +/obj/item/clipboard, +/obj/item/toy/figure/md, +/turf/simulated/floor/carpet/cyan, +/area/medical/medrest) "pGy" = ( /obj/machinery/light{ dir = 4 @@ -105219,7 +106229,8 @@ dir = 8 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "pGz" = ( @@ -105306,30 +106317,6 @@ /obj/machinery/atmospherics/meter, /turf/simulated/floor/plasteel, /area/atmos) -"pHo" = ( -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 1; - frequency = 1379; - id_tag = "station_ai_pump" - }, -/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - id_tag = "station_ai_airlock"; - req_access = list(10,13); - tag_airpump = "station_ai_pump"; - tag_chamber_sensor = "station_ai_sensor"; - tag_exterior_door = "station_ai_outer"; - tag_interior_door = "station_ai_inner"; - pixel_x = 57 - }, -/obj/machinery/airlock_sensor{ - id_tag = "station_ai_sensor"; - pixel_y = -10; - pixel_x = 57 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/engineering/aienter) "pHr" = ( /obj/machinery/computer/secure_data, /turf/simulated/floor/plasteel{ @@ -105338,13 +106325,13 @@ }, /area/bridge) "pHv" = ( -/obj/structure/chair/office{ - dir = 4 - }, /obj/structure/window/reinforced{ dir = 8 }, /obj/effect/landmark/start/civilian, +/obj/structure/chair{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_regular_floor = "yellowsiding"; @@ -105357,6 +106344,7 @@ pixel_y = -24 }, /obj/machinery/light, +/obj/machinery/computer/secure_data, /turf/simulated/floor/plasteel{ icon_state = "darkred" }, @@ -105428,6 +106416,13 @@ icon_state = "white" }, /area/medical/cmo) +"pIu" = ( +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/crew_quarters/serviceyard) "pIv" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -105483,7 +106478,8 @@ location = "C9" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "pIU" = ( @@ -105521,69 +106517,34 @@ "pJc" = ( /turf/simulated/wall, /area/engineering/mechanic_workshop) -"pJe" = ( -/obj/structure/sign/securearea, -/turf/simulated/wall/r_wall, -/area/storage/secure) -"pJk" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/machinery/door/window{ - dir = 1; - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/obj/machinery/door/window{ - dir = 2; - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/obj/item/gun/energy/dominator, -/obj/structure/window/reinforced{ - color = "red"; +"pJd" = ( +/obj/machinery/light{ dir = 8 }, -/obj/structure/window/reinforced{ - color = "red"; +/obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, -/obj/item/gun/energy/dominator{ - pixel_x = 2 - }, -/obj/item/gun/energy/dominator{ - pixel_x = 4 - }, /turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark" + dir = 8; + icon_state = "blue" }, -/area/security/securearmory) +/area/hallway/primary/fore) +"pJe" = ( +/obj/structure/sign/securearea, +/turf/simulated/wall/r_wall, +/area/storage/secure) "pJm" = ( /obj/structure/railing, /turf/simulated/floor/glass/reinforced, /area/quartermaster/office) -"pJG" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters{ - dir = 2; - id_tag = "kitchen_abandoned"; - name = "Abandoned Kitchen Shutters" - }, -/obj/item/reagent_containers/food/condiment/saltshaker, -/obj/machinery/door/window{ - name = "Kitchen"; - req_access = list(28); - dir = 1 - }, +"pJF" = ( +/obj/structure/closet/secure_closet/medical3, /turf/simulated/floor/plasteel{ - icon_state = "stage_bleft" + dir = 6; + icon_state = "whiteblue"; + tag = "icon-whiteblue (SOUTHEAST)" }, -/area/maintenance/cafeteria) +/area/medical/biostorage) "pJT" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel{ @@ -105622,6 +106583,21 @@ }, /turf/simulated/floor/carpet, /area/library) +"pKd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/glass, +/obj/item/reagent_containers/glass/bottle/ethanol{ + pixel_y = 6 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = 10 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = -6; + pixel_y = 12 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) "pKi" = ( /obj/effect/decal/warning_stripes/yellow, /obj/machinery/light_switch{ @@ -105661,21 +106637,6 @@ icon_state = "purple" }, /area/hallway/primary/central/ne) -"pKw" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/table/reinforced, -/obj/item/folder/red, -/obj/item/folder/red{ - pixel_y = 2; - pixel_x = 2 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkbluealt" - }, -/area/security/warden) "pKx" = ( /obj/structure/railing{ dir = 8 @@ -105850,7 +106811,7 @@ scrub_N2O = 1; scrub_Toxins = 1 }, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "pLX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -105957,12 +106918,6 @@ icon_state = "white" }, /area/toxins/mixing) -"pMN" = ( -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay2) "pMW" = ( /obj/structure/cable{ icon_state = "1-2" @@ -106028,7 +106983,7 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -106077,20 +107032,6 @@ icon_state = "tranquillite" }, /area/crew_quarters/kitchen) -"pNr" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/camera{ - c_tag = "Supermatter South"; - network = list("SS13","Engineering"); - dir = 1 - }, -/turf/simulated/floor/redgrid, -/area/engineering/controlroom) "pNs" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/universal{ @@ -106163,6 +107104,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/sign/poster/contraband/random{ + pixel_y = -32 + }, /turf/simulated/floor/plating, /area/maintenance/apmaint) "pNR" = ( @@ -106302,43 +107246,19 @@ /turf/simulated/floor/plasteel, /area/engineering/gravitygenerator) "pOS" = ( -/obj/structure/cable{ - icon_state = "1-2"; - tag = "" +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 1 }, -/obj/structure/disposalpipe/segment, +/obj/machinery/portable_atmospherics/canister/air, /turf/simulated/floor/plating, -/area/medical/virology/lab) +/area/maintenance/asmaint4) "pOZ" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/table/glass, -/obj/effect/decal/warning_stripes/blue/hollow, -/obj/machinery/door_control{ - id = "SecMedPrivOutside"; - name = "Brig Medbay Privacy Shutters Control"; - pixel_x = 8; - pixel_y = 28; - req_access = list(63) - }, -/obj/machinery/light_switch{ - pixel_x = null; - pixel_y = 22 - }, -/obj/machinery/door_control{ - id = "SecMedPrivInside"; - name = "Brig Medbay Privacy Shutters Control"; - pixel_x = -8; - pixel_y = 28; - req_access = list(63) - }, -/obj/item/storage/belt/medical, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "dark" + dir = 1 }, -/area/security/medbay) +/area/hallway/primary/central/west) "pPo" = ( /obj/effect/landmark/event/revenantspawn, /obj/machinery/computer/security/telescreen/entertainment{ @@ -106381,6 +107301,17 @@ icon_state = "darkblue" }, /area/security/medbay) +"pPS" = ( +/obj/machinery/door/poddoor{ + id_tag = "QMLoaddoor2"; + name = "supply dock loading door" + }, +/obj/machinery/conveyor{ + dir = 1; + id = "QMLoad2" + }, +/turf/simulated/floor/plating, +/area/quartermaster/delivery) "pPV" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -106410,24 +107341,6 @@ icon_state = "darkred" }, /area/security/permahallway) -"pPY" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 1 - }, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8; - layer = 2.494 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "brown" - }, -/area/quartermaster/delivery) "pQh" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -106513,7 +107426,7 @@ dir = 4; icon_state = "whitegreen" }, -/area/medical/virology/lab) +/area/medical/virology) "pQE" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -106613,6 +107526,16 @@ icon_state = "dark" }, /area/maintenance/trading) +"pRi" = ( +/obj/effect/decal/cleanable/dust, +/obj/machinery/vending/wallmed{ + layer = 3.3; + name = "Emergency NanoMed"; + pixel_x = -26; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/livingcomplex) "pRn" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -106676,6 +107599,19 @@ /obj/structure/disposalpipe/trunk, /turf/simulated/floor/plating, /area/quartermaster/sorting) +"pRD" = ( +/obj/effect/turf_decal/number/number_2{ + dir = 1; + pixel_y = -18 + }, +/obj/effect/turf_decal/arrows/white{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "redcorner" + }, +/area/hallway/primary/central/west) "pRH" = ( /obj/structure/table/glass, /obj/item/storage/fancy/donut_box, @@ -106715,23 +107651,12 @@ }, /area/engineering/hardsuitstorage) "pSb" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/tripple, +/obj/machinery/pipedispenser, /turf/simulated/floor/plating, -/area/maintenance/apmaint) +/area/maintenance/atmospherics) "pSd" = ( /turf/simulated/floor/plasteel, /area/storage/primary) -"pSe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light_construct{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "yellowcorner"; - dir = 8 - }, -/area/maintenance/apmaint) "pSo" = ( /turf/simulated/floor/plasteel{ icon_state = "darkred" @@ -106808,21 +107733,24 @@ }, /area/crew_quarters/serviceyard) "pTe" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, /obj/structure/cable{ d1 = 4; d2 = 8; icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/simulated/floor/plasteel{ icon_state = "white" }, -/area/medical/virology/lab) +/area/medical/virology) "pTg" = ( /obj/machinery/atmospherics/trinary/tvalve/digital/bypass, /turf/simulated/floor/plasteel, @@ -106880,38 +107808,6 @@ icon_state = "neutral" }, /area/hallway/primary/central/east) -"pTO" = ( -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 4 - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 8 - }, -/obj/machinery/door/window{ - dir = 1; - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/storage/box/flashbangs, -/obj/item/storage/box/flashbangs{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "pTP" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, @@ -107112,25 +108008,6 @@ dir = 1 }, /area/maintenance/fsmaint3) -"pVd" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, -/obj/item/reagent_containers/iv_bag/blood/diona, -/obj/item/reagent_containers/iv_bag/blood/grey, -/obj/item/reagent_containers/iv_bag/blood/kidan, -/obj/item/reagent_containers/iv_bag/blood/nian, -/obj/item/reagent_containers/iv_bag/blood/skrell, -/obj/item/reagent_containers/iv_bag/blood/tajaran, -/obj/item/reagent_containers/iv_bag/blood/unathi, -/obj/item/reagent_containers/iv_bag/blood/vulpkanin, -/obj/item/reagent_containers/iv_bag/blood/wryn, -/obj/effect/decal/warning_stripes/blue/hollow, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "whiteblue" - }, -/area/medical/cryo) "pVh" = ( /turf/simulated/floor/grass, /area/security/permabrig) @@ -107146,6 +108023,9 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/structure/cable{ + icon_state = "0-4" + }, /turf/simulated/floor/plating, /area/maintenance/starboard) "pVm" = ( @@ -107281,14 +108161,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) -"pVQ" = ( -/obj/structure/closet/radiation, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 9 - }, -/area/toxins/explab) "pVY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -107319,6 +108191,15 @@ /obj/machinery/light/small, /turf/simulated/floor/plating, /area/maintenance/brig) +"pWd" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/permahallway) "pWf" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -107394,6 +108275,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/simulated/floor/plasteel, /area/maintenance/xenozoo) "pWx" = ( @@ -107414,10 +108298,10 @@ /turf/simulated/floor/plating, /area/security/range) "pWy" = ( -/obj/effect/spawner/window/reinforced, /obj/structure/cable{ icon_state = "0-2" }, +/obj/effect/spawner/window/reinforced/plasma, /turf/simulated/floor/plating, /area/storage/tech) "pWE" = ( @@ -107427,6 +108311,14 @@ icon_state = "red" }, /area/hallway/primary/central/second/west) +"pWF" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/spiderling_remains, +/turf/simulated/floor/plating, +/area/maintenance/gambling_den) "pWK" = ( /turf/simulated/wall, /area/crew_quarters/fitness) @@ -107462,32 +108354,6 @@ dir = 1 }, /area/security/brig) -"pWX" = ( -/turf/simulated/floor/plasteel{ - icon_state = "rampbottom"; - tag = "icon-stage_stairs"; - dir = 4 - }, -/area/security/hos) -"pXa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/twohanded/required/kirbyplants{ - pixel_y = 12; - tag = "plant-dead" - }, -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "escape" - }, -/area/hallway/secondary/exit/maint) "pXf" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -107510,20 +108376,6 @@ /obj/machinery/vending/cart/free, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/heads) -"pXx" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/poddoor/preopen{ - name = "Secure Creature Cell"; - id_tag = "xenosecure" - }, -/obj/effect/spawner/window/reinforced/plasma, -/turf/simulated/floor/plating, -/area/toxins/xenobiology) "pXA" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ @@ -107601,6 +108453,13 @@ icon_state = "neutralfull" }, /area/bridge/checkpoint/north) +"pXU" = ( +/obj/machinery/station_map/directional/south, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/crew_quarters/locker) "pXY" = ( /turf/simulated/floor/wood/dark, /area/crew_quarters/bar) @@ -107646,7 +108505,7 @@ /turf/simulated/floor/carpet/royalblack, /area/bridge/meeting_room) "pYo" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /obj/structure/sign/poster/contraband/have_a_puff{ @@ -107712,6 +108571,28 @@ }, /turf/simulated/floor/plating, /area/maintenance/livingcomplex) +"pYH" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/machinery/door/window{ + color = "red"; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/clothing/shoes/jackboots/armored, +/obj/item/clothing/shoes/jackboots/armored, +/obj/item/clothing/shoes/jackboots/armored, +/obj/item/clothing/shoes/jackboots/armored, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "pYK" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -107759,17 +108640,6 @@ }, /turf/simulated/floor/carpet/royalblack, /area/magistrateoffice) -"pYO" = ( -/obj/structure/window/reinforced, -/obj/machinery/door/window/brigdoor/southright{ - req_access = list(17,75); - dir = 1 - }, -/obj/structure/fans/tiny, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/aisat/aihallway) "pYP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -107790,6 +108660,11 @@ "pYS" = ( /obj/structure/window/reinforced, /obj/item/flag/nt, +/obj/structure/sign/tajarplaque{ + desc = "Важное Уточнение! Рабочие пожелали оставаться анонимными, поэтому, обойдёмся их прозвищами. За помощь Главному Инженеру Новы в поисках и устранении неисправностей на станции НаноТрейзен. С благодарностью, Den10g. Слава НаноТрейзен!"; + name = "Благодарственное Письмо от Главного Инженера станции Нова"; + pixel_y = 32 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -107799,6 +108674,21 @@ icon_state = "neutralfull" }, /area/quartermaster/delivery) +"pYZ" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/snacks/grown/moonlight, +/obj/item/reagent_containers/food/snacks/grown/moonlight{ + pixel_x = -6; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/snacks/grown/moonlight{ + pixel_x = 5; + pixel_y = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cult" + }, +/area/chapel/morgue) "pZc" = ( /turf/simulated/floor/plasteel{ dir = 1 @@ -107992,12 +108882,12 @@ /obj/structure/table/wood{ color = "#996633" }, -/obj/machinery/photocopier/faxmachine/longrange{ - department = "NT Representative's Office" - }, /obj/item/radio/intercom{ pixel_x = 28 }, +/obj/machinery/photocopier/faxmachine/longrange{ + department = "NT Representative's Office" + }, /turf/simulated/floor/carpet/royalblack, /area/ntrep) "qaJ" = ( @@ -108006,6 +108896,7 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "redcorner" @@ -108055,14 +108946,9 @@ /turf/simulated/floor/grass, /area/crew_quarters/fitness) "qbi" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, +/obj/machinery/door/airlock/maintenance, /turf/simulated/floor/plating, -/area/medical/virology/lab) +/area/maintenance/asmaint4) "qbk" = ( /obj/structure/cable{ icon_state = "1-2" @@ -108115,18 +109001,6 @@ icon_state = "neutral" }, /area/hallway/secondary/exit) -"qbF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/curtain/open/shower/security{ - alpha = 255; - icon_state = "closed"; - name = "backstage"; - opacity = 1; - anchored = 1 - }, -/obj/effect/decal/cleanable/dust, -/turf/simulated/floor/plating, -/area/maintenance/backstage) "qbH" = ( /obj/structure/flora/ausbushes/ppflowers, /obj/structure/flora/ausbushes/ywflowers, @@ -108185,21 +109059,6 @@ icon_state = "white" }, /area/medical/biostorage) -"qbP" = ( -/obj/structure/table/glass, -/obj/item/clipboard, -/obj/item/toy/figure/virologist, -/obj/item/reagent_containers/food/drinks/coffee{ - pixel_y = 4; - pixel_x = 10 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "whitegreenfull" - }, -/area/medical/virology/lab) "qbU" = ( /turf/simulated/floor/mineral/plastitanium/red, /area/maintenance/chapel) @@ -108211,6 +109070,21 @@ icon_state = "floorgrime" }, /area/storage/office) +"qcf" = ( +/obj/structure/table/reinforced, +/obj/item/book/manual/security_space_law, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 7; + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "red" + }, +/area/security/checkpoint/south) "qci" = ( /turf/simulated/floor/plasteel{ icon_state = "whitepurple"; @@ -108266,11 +109140,6 @@ }, /area/security/range) "qcz" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/structure/cable{ icon_state = "1-4" }, @@ -108281,6 +109150,17 @@ codes_txt = "patrol;next_patrol=L8"; location = "L7" }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -108365,6 +109245,15 @@ icon_state = "dark" }, /area/turret_protected/ai) +"qdc" = ( +/obj/structure/chair/sofa/corp{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/reception) "qdm" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -108428,6 +109317,14 @@ }, /turf/simulated/floor/wood, /area/security/detectives_office) +"qdL" = ( +/obj/machinery/station_map/directional/east, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple"; + tag = "icon-whitepurple (EAST)" + }, +/area/medical/research/nhallway) "qel" = ( /turf/simulated/floor/wood, /area/library) @@ -108452,10 +109349,20 @@ name = "pod4 home dock"; width = 5 }, -/turf/space{ +/turf/space/openspace{ icon_state = "black" }, /area/space) +"qez" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + desc = "Труба содержит газ для обработки и после возвращает его обратно в трубу смешивания"; + dir = 9; + name = "Труба обработки" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/atmos) "qeA" = ( /obj/effect/decal/warning_stripes/south, /obj/machinery/atmospherics/unary/vent_scrubber{ @@ -108528,19 +109435,36 @@ icon_state = "tranquillite" }, /area/security/permabrig) -"qfb" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 4 +"qeU" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" }, -/obj/effect/turf_decal/number/number_2{ - dir = 1; - pixel_y = -10; - pixel_x = -6 +/area/security/hos) +"qeV" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/item/radio/intercom{ + name = "west station intercom (General)"; + pixel_x = -28 + }, +/turf/simulated/floor/plasteel/freezer, +/area/crew_quarters/toilet3) +"qff" = ( /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 8; + icon_state = "yellowcorner" }, -/area/security/permahallway) +/area/maintenance/apmaint) "qfj" = ( /obj/effect/decal/warning_stripes/yellow, /obj/effect/decal/warning_stripes/yellow, @@ -108677,26 +109601,15 @@ /area/security/permahallway) "qgf" = ( /obj/structure/table, -/obj/item/storage/box/syringes{ - pixel_y = 15 - }, -/obj/item/storage/box/syringes{ - pixel_y = 15; - pixel_x = 4 - }, -/obj/item/storage/fancy/vials{ - pixel_x = 3; - pixel_y = 4 - }, -/obj/item/storage/lockbox/vials{ - pixel_y = -1; - pixel_x = -2 +/obj/item/storage/box/donkpockets{ + pixel_x = 2; + pixel_y = 3 }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whitegreen" }, -/area/medical/virology/lab) +/area/medical/virology) "qgg" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable, @@ -108775,6 +109688,12 @@ }, /turf/simulated/floor/plasteel, /area/storage/eva) +"qgA" = ( +/obj/machinery/station_map/directional/south, +/turf/simulated/floor/plasteel{ + icon_state = "red" + }, +/area/security/lobby) "qgB" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/delivery/red, @@ -108999,6 +109918,22 @@ }, /turf/simulated/floor/plating, /area/maintenance/maintcentral) +"qio" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/camera{ + c_tag = "Supermatter East"; + dir = 8; + network = list("Engineering","SS13") + }, +/obj/machinery/power/port_gen/pacman, +/turf/simulated/floor/plasteel, +/area/engineering/controlroom) "qit" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -109121,6 +110056,24 @@ }, /turf/simulated/floor/carpet, /area/chapel/office) +"qjq" = ( +/obj/structure/dresser, +/obj/machinery/button/windowtint{ + id = "vir2"; + pixel_x = 24; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 32; + pixel_y = 24 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/carpet/green, +/area/medical/virology) "qjC" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ dir = 1; @@ -109132,20 +110085,6 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/medical/research/nhallway) -"qjD" = ( -/obj/effect/spawner/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "SKPP"; - dir = 8 - }, -/obj/structure/cable, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/plating, -/area/bridge/checkpoint/south) "qjM" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -109158,7 +110097,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "qjQ" = ( /turf/simulated/floor/plasteel{ icon_state = "whiteyellow" @@ -109178,6 +110117,21 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/glass/reinforced, /area/engineering/mechanic_workshop/hangar) +"qkh" = ( +/obj/machinery/shower{ + dir = 1; + layer = 5; + on = 1; + pixel_y = -5 + }, +/obj/structure/curtain/open/shower/security, +/obj/item/radio/intercom{ + pixel_x = 30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/hos) "qki" = ( /obj/item/radio/intercom{ dir = 1; @@ -109268,24 +110222,6 @@ icon_state = "dark" }, /area/aisat/aihallway) -"qlo" = ( -/obj/machinery/door/firedoor, -/obj/machinery/biogenerator, -/obj/machinery/door/window/eastleft{ - name = "Hydroponics Desk"; - req_access = list(35); - dir = 1 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "Hydroponics Shutters"; - name = "Hydroponics Shutters"; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 5 - }, -/area/hydroponics) "qlr" = ( /obj/machinery/hologram/holopad, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -109326,6 +110262,11 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, +/mob/living/simple_animal/hostile/killertomato{ + desc = "Прирученный ботаниками томат-убийца. Не подпускать к Сане."; + faction = list("plants","neutral","hostile"); + name = "Витамин" + }, /turf/simulated/floor/plasteel{ dir = 5 }, @@ -109404,12 +110345,6 @@ icon_state = "dark" }, /area/engineering/mechanic_workshop/hangar) -"qmd" = ( -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) "qmk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -109496,6 +110431,20 @@ }, /turf/simulated/floor/plasteel, /area/hallway/secondary/exit) +"qnf" = ( +/obj/structure/table/reinforced, +/obj/item/gun/energy/laser/practice, +/obj/machinery/door/window/brigdoor{ + color = "red"; + dir = 2; + name = "Security Reception"; + req_access = list(1) + }, +/turf/simulated/floor/plasteel{ + icon_state = "redfull"; + tag = "icon-redfull (NORTHWEST)" + }, +/area/security/range) "qng" = ( /obj/structure/table, /obj/item/crowbar, @@ -109557,21 +110506,6 @@ /obj/structure/flora/ausbushes/ywflowers, /turf/simulated/floor/grass, /area/toxins/xenobiology) -"qnB" = ( -/obj/structure/cable/yellow{ - d2 = 4; - icon_state = "0-4" - }, -/obj/effect/decal/warning_stripes/south, -/obj/machinery/power/apc{ - cell_type = 25000; - shock_proof = 1; - pixel_y = -26 - }, -/turf/simulated/floor/plasteel{ - icon_state = "yellow" - }, -/area/engineering/engine) "qnH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -109647,13 +110581,13 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/door/airlock/mining/glass{ - name = "Disposal Bay"; - req_access = list(31) - }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/door/airlock/mining{ + name = "Cargo Bay"; + req_access = list(31) + }, /turf/simulated/floor/plasteel, /area/quartermaster/sorting) "qod" = ( @@ -109734,19 +110668,6 @@ /obj/structure/grille, /turf/simulated/floor/plating, /area/toxins/mixing) -"qpm" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 4 - }, -/turf/simulated/floor/wood, -/area/library/game_zone) "qpp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -109833,6 +110754,32 @@ dir = 1 }, /area/security/prison/cell_block/A) +"qpW" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "SKPP" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/bridge/checkpoint/south) +"qpZ" = ( +/obj/structure/sign/security{ + pixel_x = -32 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/hallway/primary/central/second/west) "qqg" = ( /obj/machinery/door/airlock/hatch{ name = "Telecommunications Access"; @@ -109848,7 +110795,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "qqq" = ( /obj/structure/chair/comfy/teal{ dir = 8 @@ -109906,26 +110853,20 @@ icon_state = "yellowcorner" }, /area/hallway/primary/starboard) -"qrh" = ( -/obj/structure/window/reinforced{ +"qqZ" = ( +/obj/structure/sign/directions/evac{ dir = 1; - layer = 2.9 - }, -/obj/structure/table/reinforced, -/obj/item/storage/box/bodybags, -/obj/item/storage/box/masks{ - pixel_y = 2; - pixel_x = 2 + pixel_y = -8 }, -/obj/item/storage/box/gloves{ - pixel_x = 4; - pixel_y = 4 +/obj/structure/sign/directions/security{ + dir = 8 }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "blue" +/obj/structure/sign/directions/science{ + dir = 8; + pixel_y = 8 }, -/area/assembly/robotics) +/turf/simulated/wall, +/area/crew_quarters/serviceyard) "qrl" = ( /obj/machinery/computer/prisoner, /turf/simulated/floor/plasteel{ @@ -109942,7 +110883,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "qrs" = ( /obj/structure/cable{ icon_state = "2-4" @@ -109957,10 +110898,10 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random_spawners/blood_5, /turf/simulated/floor/plating, /area/maintenance/tourist) "qrC" = ( -/obj/item/twohanded/required/kirbyplants, /obj/machinery/firealarm{ dir = 1; pixel_y = 26 @@ -110076,19 +111017,19 @@ icon_state = "neutralfull" }, /area/hallway/secondary/entry/additional) -"qsm" = ( -/obj/structure/curtain/open/shower/security{ - alpha = 255; - icon_state = "closed"; - name = "backstage"; - opacity = 1; - anchored = 1 +"qso" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 }, -/obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 10; + icon_state = "vault" }, -/area/maintenance/trading) +/area/chapel/office) "qss" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 @@ -110194,15 +111135,6 @@ icon_state = "freezerfloor" }, /area/maintenance/cafeteria) -"qta" = ( -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_y = 5; - pixel_x = -6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dust, -/turf/simulated/floor/wood, -/area/maintenance/fsmaint) "qtd" = ( /obj/machinery/power/smes, /obj/structure/cable, @@ -110266,18 +111198,13 @@ icon_state = "darkgreenfull" }, /area/crew_quarters/fitness) -"qtz" = ( -/obj/machinery/atmospherics/binary/pump/on{ - desc = "Отправляет дыхательную смесь из трубы распространяться по станции через вентиляции"; - name = "Дыхательную смесь на станцию"; - target_pressure = 303.325; - dir = 1 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, +"qtx" = ( +/obj/machinery/station_map/directional/north, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 1; + icon_state = "arrival" }, -/area/atmos) +/area/hallway/secondary/entry) "qtA" = ( /obj/structure/table, /obj/item/radio/sec{ @@ -110405,21 +111332,6 @@ /obj/structure/chair/comfy/brown, /turf/simulated/floor/carpet, /area/crew_quarters/captain) -"qub" = ( -/obj/effect/spawner/window/reinforced, -/obj/machinery/door/poddoor/shutters{ - density = 0; - icon_state = "open"; - id_tag = "brig_detprivacy"; - name = "Detective Privacy Shutters"; - opacity = 0; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/simulated/floor/plating, -/area/security/detectives_office) "quh" = ( /obj/structure/cable{ icon_state = "1-2" @@ -110431,12 +111343,6 @@ icon_state = "yellow" }, /area/engineering/mechanic_workshop) -"quj" = ( -/turf/simulated/floor/plasteel{ - icon_state = "yellowcorner"; - dir = 8 - }, -/area/maintenance/apmaint) "quk" = ( /obj/effect/decal/warning_stripes/yellow/partial{ dir = 1 @@ -110481,6 +111387,20 @@ icon_state = "dark" }, /area/security/processing) +"quq" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "NTRprivate"; + name = "Privacy Shutters" + }, +/obj/effect/spawner/window/reinforced/polarized{ + id = "ntrepprivate" + }, +/turf/simulated/floor/plating, +/area/ntrep) "qur" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -110494,11 +111414,12 @@ }, /area/security/permabrig) "quw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 +/obj/structure/cable{ + icon_state = "4-8" }, /turf/simulated/floor/plasteel{ dir = 1 @@ -110547,6 +111468,9 @@ name = "Quarantine Lockdown"; opacity = 0 }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "whiteblue"; @@ -110588,19 +111512,6 @@ /obj/item/clothing/mask/breath, /turf/simulated/floor/plating, /area/maintenance/perma) -"qvx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/sofa/right{ - dir = 4 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "yellowcorner"; - dir = 8 - }, -/area/maintenance/apmaint) "qvy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -110709,15 +111620,12 @@ /turf/simulated/floor/plating, /area/medical/virology/lab) "qwg" = ( -/obj/machinery/firealarm{ - dir = 4; - name = "east fire alarm"; - pixel_x = 24 - }, -/turf/simulated/floor/plasteel{ - icon_state = "redcorner" +/obj/effect/turf_decal/siding/red{ + dir = 4 }, -/area/security/prison/cell_block/A) +/obj/effect/landmark/start/brig_physician, +/turf/simulated/floor/carpet/red, +/area/security/medbay) "qwi" = ( /obj/structure/cable{ icon_state = "1-2" @@ -110750,6 +111658,8 @@ /obj/machinery/light{ dir = 4 }, +/obj/machinery/telepad_cargo, +/obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "yellow" @@ -110790,9 +111700,22 @@ dir = 8 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) +"qwG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "qwI" = ( /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -110846,12 +111769,12 @@ /obj/item/rcd_ammo, /obj/item/clothing/glasses/meson, /obj/item/clothing/glasses/meson, -/obj/item/clothing/gloves/color/yellow/fake, -/obj/item/clothing/gloves/color/yellow/fake, /obj/machinery/light/small{ dir = 8 }, /obj/effect/decal/cleanable/dirt, +/obj/item/clothing/gloves/color/fyellow, +/obj/item/clothing/gloves/color/fyellow, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -110872,6 +111795,24 @@ icon_state = "yellowcorner" }, /area/engineering/engine/monitor) +"qxw" = ( +/obj/machinery/door/firedoor, +/obj/machinery/biogenerator, +/obj/machinery/door/window/eastleft{ + dir = 1; + name = "Hydroponics Desk"; + req_access = list(35) + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "Hydroponics Shutters"; + name = "Hydroponics Shutters" + }, +/turf/simulated/floor/plasteel{ + dir = 5 + }, +/area/hydroponics) "qxA" = ( /obj/machinery/vending/coffee/free, /turf/simulated/floor/plasteel{ @@ -110918,6 +111859,19 @@ /obj/effect/decal/warning_stripes/northeast, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/additional) +"qxP" = ( +/obj/effect/turf_decal/number/number_1{ + dir = 1; + pixel_y = -15 + }, +/obj/effect/turf_decal/arrows/white{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/quartermaster/office) "qxX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ @@ -110928,20 +111882,6 @@ }, /turf/simulated/floor/carpet/red, /area/security/prison/cell_block/A) -"qya" = ( -/obj/effect/turf_decal/siding/yellow, -/obj/structure/tribune{ - pixel_y = 0; - anchored = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/wood, -/area/crew_quarters/courtroom) "qyc" = ( /turf/simulated/floor/plasteel{ dir = 9; @@ -110971,7 +111911,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "qyn" = ( /obj/structure/chair/sofa/pew/right{ dir = 4 @@ -111045,6 +111985,16 @@ icon_state = "neutralcorner" }, /area/crew_quarters/locker) +"qyH" = ( +/obj/machinery/newscaster{ + pixel_x = -30; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/securehallway) "qyK" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable, @@ -111057,18 +112007,6 @@ }, /turf/simulated/floor/plating, /area/engineering/engine/monitor) -"qyP" = ( -/obj/machinery/shower{ - dir = 1; - layer = 5; - pixel_y = -5; - on = 1 - }, -/obj/structure/curtain/open/shower/security, -/turf/simulated/floor/plasteel{ - icon_state = "showroomfloor" - }, -/area/security/hos) "qyQ" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, @@ -111076,7 +112014,7 @@ icon_state = "1-4" }, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-8" }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -111120,16 +112058,6 @@ icon_state = "redcorner" }, /area/security/customs) -"qyW" = ( -/obj/machinery/newscaster{ - pixel_y = 0; - pixel_x = -30 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "red" - }, -/area/security/securehallway) "qzc" = ( /turf/simulated/wall/rust, /area/maintenance/tourist) @@ -111150,7 +112078,9 @@ /turf/simulated/floor/plating, /area/maintenance/apmaint) "qzm" = ( -/obj/structure/stairs, +/obj/structure/stairs{ + layer = 2 + }, /turf/simulated/floor/plasteel, /area/hallway/primary/fore) "qzn" = ( @@ -111173,26 +112103,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/starboard) -"qzA" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/door/window/brigdoor{ - dir = 8; - name = "Creature Pen"; - req_access = list(47) - }, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #3"; - id_tag = "xeno3" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/toxins/xenobiology) "qzM" = ( /obj/structure/cable{ icon_state = "1-2" @@ -111304,7 +112214,13 @@ req_access = list(73); security_level = 1 }, -/turf/simulated/floor/carpet/royalblack, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/simulated/floor/wood/dark, /area/ntrep) "qAG" = ( /obj/machinery/vending/snack, @@ -111318,6 +112234,16 @@ /obj/structure/closet/secure_closet/chaplain, /turf/simulated/floor/carpet, /area/chapel/office) +"qAM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/security/lobby) "qAN" = ( /obj/structure/cable{ d1 = 4; @@ -111360,7 +112286,8 @@ /obj/machinery/door/firedoor, /obj/effect/turf_decal/caution/red, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "qAY" = ( @@ -111376,7 +112303,9 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "qBf" = ( /obj/structure/window/reinforced{ @@ -111430,18 +112359,6 @@ }, /turf/simulated/floor/glass/reinforced, /area/engineering/mechanic_workshop/hangar) -"qBq" = ( -/obj/effect/decal/warning_stripes/yellow, -/obj/structure/closet/walllocker/emerglocker/north{ - pixel_y = 0; - pixel_x = -32 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "qBu" = ( /obj/structure/computerframe, /turf/simulated/floor/plating, @@ -111503,16 +112420,16 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /obj/machinery/light, /turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "whitepurple"; - tag = "icon-whitepurple (SOUTHEAST)" + icon_state = "purplefull" }, /area/toxins/launch) "qBQ" = ( /obj/effect/decal/warning_stripes/northwest, -/obj/machinery/vending/plasmaresearch, -/obj/machinery/firealarm{ - pixel_y = 26 +/obj/machinery/atmospherics/unary/cold_sink/freezer{ + dir = 2 + }, +/obj/structure/sign/fire{ + pixel_y = 32 }, /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" @@ -111544,29 +112461,21 @@ icon_state = "neutralfull" }, /area/crew_quarters/toilet4) -"qBU" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters{ - dir = 2; - id_tag = "kitchen_abandoned"; - name = "Abandoned Kitchen Shutters" - }, -/obj/machinery/door/window{ - name = "Kitchen"; - req_access = list(28); - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "stage_bleft" - }, -/area/maintenance/cafeteria) "qBV" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "vir_maint2_airlock"; + name = "interior access button"; + pixel_x = -24; + pixel_y = -24 }, -/turf/simulated/floor/plating/airless, -/area/space) +/obj/structure/sign/vacuum{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint4) "qBX" = ( /obj/structure/disposalpipe/junction/reversed{ dir = 4 @@ -111583,6 +112492,7 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/hologram/holopad, +/obj/effect/decal/warning_stripes/blue/hollow, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -111607,6 +112517,50 @@ }, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"qCj" = ( +/obj/structure/table, +/obj/item/reagent_containers/syringe/antiviral, +/obj/item/reagent_containers/syringe/charcoal, +/obj/item/reagent_containers/syringe/insulin, +/obj/item/reagent_containers/glass/bottle/morphine, +/obj/item/reagent_containers/glass/bottle/epinephrine, +/obj/item/reagent_containers/syringe, +/obj/item/stack/medical/bruise_pack/advanced{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/stack/medical/ointment/advanced{ + pixel_x = 6; + pixel_y = 8 + }, +/obj/item/reagent_containers/food/pill/patch/styptic{ + pixel_y = 6 + }, +/obj/item/reagent_containers/food/pill/patch/styptic{ + pixel_x = 2; + pixel_y = 8 + }, +/obj/item/reagent_containers/food/pill/patch/silver_sulf{ + pixel_x = -8; + pixel_y = 6 + }, +/obj/item/reagent_containers/food/pill/patch/silver_sulf{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/storage/pill_bottle/painkillers{ + pixel_x = -6; + pixel_y = -3 + }, +/obj/item/radio/intercom{ + pixel_x = -30 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/reception) "qCl" = ( /obj/machinery/door/airlock/maintenance{ name = "East Cargo Bay Maintenance"; @@ -111671,8 +112625,8 @@ dir = 1 }, /obj/machinery/door/firedoor, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" +/turf/simulated/floor/engine{ + slowdown = -0.3 }, /area/hallway/primary/central) "qCP" = ( @@ -111702,7 +112656,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkredcorners" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "qDk" = ( /obj/machinery/optable, /obj/machinery/shower{ @@ -111885,7 +112839,8 @@ dir = 8 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "qEE" = ( @@ -111901,17 +112856,6 @@ }, /turf/simulated/floor/plating, /area/storage/secure) -"qEH" = ( -/obj/machinery/door/airlock/glass{ - req_access = list(63); - name = "Break room" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/wood, -/area/crew_quarters/courtroom) "qEM" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, @@ -111966,6 +112910,13 @@ dir = 1 }, /area/hallway/primary/central/second/east) +"qFi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "qFu" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -111981,6 +112932,18 @@ }, /turf/simulated/floor/plating, /area/maintenance/fsmaint3) +"qFH" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "rampbottom" + }, +/area/quartermaster/sorting) "qFJ" = ( /obj/structure/table/reinforced, /obj/machinery/light{ @@ -112016,9 +112979,6 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, /turf/simulated/floor/carpet/cyan, /area/security/prison/cell_block/A) "qFV" = ( @@ -112038,15 +112998,6 @@ /obj/machinery/door/airlock/maintenance, /turf/simulated/floor/plating, /area/maintenance/tourist) -"qFY" = ( -/obj/effect/landmark/start/scientist, -/obj/structure/chair/office/light{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/toxins/mixing) "qGa" = ( /obj/effect/decal/warning_stripes/north, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -112173,6 +113124,17 @@ icon_state = "redfull" }, /area/security/processing) +"qHk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom{ + name = "north station intercom (General)"; + pixel_x = 32; + pixel_y = 28 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cult" + }, +/area/maintenance/chapel) "qHs" = ( /obj/structure/table_frame, /obj/effect/decal/cleanable/vomit, @@ -112203,6 +113165,10 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/hallway/primary/central/north) +"qHS" = ( +/obj/effect/spawner/random_spawners/fungus_30, +/turf/simulated/wall, +/area/maintenance/trading) "qHU" = ( /obj/structure/chair{ dir = 1 @@ -112316,7 +113282,7 @@ }, /area/security/range) "qIz" = ( -/obj/structure/chair/office, +/obj/structure/chair, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/serviceyard) "qIC" = ( @@ -112329,6 +113295,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "vault" @@ -112350,6 +113319,20 @@ }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"qIW" = ( +/obj/machinery/power/apc{ + name = "south bump"; + pixel_y = -26 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/security/warden) "qIY" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -112404,7 +113387,7 @@ pixel_y = -25 }, /turf/simulated/floor/plasteel{ - dir = 1 + icon_state = "red" }, /area/security/lobby) "qJQ" = ( @@ -112448,32 +113431,6 @@ color = "orange" }, /area/crew_quarters/captain/bedroom) -"qKn" = ( -/obj/effect/decal/warning_stripes/red/hollow, -/obj/structure/rack/gunrack, -/obj/item/gun/projectile/automatic/wt550, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 1 - }, -/obj/machinery/door/window{ - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/obj/item/gun/projectile/automatic/wt550{ - pixel_x = 3 - }, -/obj/item/gun/projectile/automatic/wt550{ - pixel_x = 6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "qKp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -112504,20 +113461,6 @@ icon_state = "darkbluefull" }, /area/aisat/aihallway) -"qKy" = ( -/obj/structure/sign/directions/science{ - dir = 1 - }, -/obj/structure/sign/directions/cargo{ - dir = 4; - pixel_y = 8 - }, -/obj/structure/sign/directions/engineering{ - pixel_y = -8; - dir = 1 - }, -/turf/simulated/wall, -/area/hallway/primary/central/second/north) "qKC" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ dir = 1; @@ -112539,11 +113482,11 @@ /turf/simulated/floor/wood, /area/quartermaster/qm) "qKH" = ( -/obj/structure/chair/office, /obj/effect/turf_decal/siding/wood{ dir = 8; do_not_delete_me = 1 }, +/obj/structure/chair/office, /turf/simulated/floor/wood/oak, /area/crew_quarters/courtroom) "qKI" = ( @@ -112596,11 +113539,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/structure/disposalpipe/junction{ - dir = 4 - }, /obj/machinery/hologram/holopad, /obj/effect/landmark/event/lightsout, +/obj/structure/disposalpipe/junction{ + dir = 4; + tag = "icon-pipe-j1 (EAST)" + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -112647,6 +113591,28 @@ /obj/structure/mecha_wreckage/durand, /turf/simulated/floor/mech_bay_recharge_floor, /area/maintenance/secpost) +"qLY" = ( +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno6"; + name = "Creature Cell #6" + }, +/obj/effect/spawner/window/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) +"qLZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkbluealt" + }, +/area/hallway/primary/command/west) "qMc" = ( /obj/machinery/door/airlock/public/glass, /obj/machinery/door/firedoor, @@ -112679,12 +113645,13 @@ /area/hallway/secondary/entry/commercial) "qMk" = ( /obj/machinery/door/airlock/external{ - name = "Escape Pod Airlock" + name = "Escape Pod Airlock"; + use_power = 0 }, /turf/simulated/floor/plating, /area/maintenance/casino) "qMq" = ( -/obj/structure/chair/office, +/obj/structure/chair, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, @@ -112697,6 +113664,13 @@ icon_state = "whitehall" }, /area/toxins/xenobiology) +"qMz" = ( +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purple" + }, +/area/hallway/primary/central/ne) "qMA" = ( /obj/structure/cable{ icon_state = "1-8" @@ -112738,36 +113712,6 @@ icon_state = "dark" }, /area/toxins/xenobiology) -"qMH" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 1 - }, -/obj/machinery/door/window{ - dir = 8; - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/obj/item/clothing/head/helmet/night, -/obj/item/clothing/head/helmet/night{ - pixel_y = -2 - }, -/obj/item/clothing/head/helmet/night{ - pixel_y = -4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "qMI" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -112916,9 +113860,10 @@ }, /area/quartermaster/miningstorage) "qNY" = ( -/obj/structure/girder/reinforced, -/turf/simulated/floor/plating, -/area/maintenance/maintcentral) +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/tcommsat/server) "qOc" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -113087,13 +114032,27 @@ }, /area/quartermaster/office) "qOG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1379; + id_tag = "vir_maint2_pump" + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + id_tag = "vir_maint2_airlock"; + pixel_y = 25; + tag_airpump = "vir_maint2_pump"; + tag_chamber_sensor = "vir_maint2_sensor"; + tag_exterior_door = "vir_maint2_outer"; + tag_interior_door = "vir_maint2_inner" + }, +/obj/machinery/airlock_sensor{ + id_tag = "vir_maint2_sensor"; + pixel_y = 33 + }, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/light/small{ + dir = 1 }, -/obj/effect/spawner/random_spawners/rodent, /turf/simulated/floor/plating, /area/maintenance/asmaint4) "qON" = ( @@ -113172,7 +114131,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "qPb" = ( @@ -113233,6 +114193,22 @@ icon_state = "darkred" }, /area/turret_protected/aisat) +"qPE" = ( +/obj/item/stack/packageWrap{ + pixel_x = -3; + pixel_y = -4 + }, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/hand_labeler, +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/quartermaster/office) "qPF" = ( /obj/structure/cable{ icon_state = "1-2" @@ -113382,7 +114358,7 @@ /obj/structure/railing{ dir = 9 }, -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 4 }, /obj/effect/landmark/start/cargo_technician, @@ -113412,10 +114388,25 @@ icon_state = "yellow" }, /area/engineering/engine) +"qQI" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/window/brigdoor/southright{ + dir = 4; + req_access = list(17,75) + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/aisat/aihallway) "qQJ" = ( +/obj/structure/table/reinforced, +/obj/item/flash, +/obj/machinery/cell_charger, /turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkred" + icon_state = "dark" }, /area/turret_protected/ai) "qQP" = ( @@ -113531,7 +114522,50 @@ dir = 8; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) +"qRJ" = ( +/obj/structure/window/reinforced{ + color = "red"; + dir = 8 + }, +/obj/machinery/door/window{ + color = "red"; + dir = 1; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/machinery/door/window{ + color = "red"; + dir = 2; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/structure/window/reinforced{ + color = "red"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/gun/energy/gun/advtaser{ + pixel_y = -3 + }, +/obj/item/gun/energy/gun/advtaser{ + pixel_x = 3 + }, +/obj/item/gun/energy/gun/advtaser{ + pixel_x = 6; + pixel_y = 3 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark" + }, +/area/security/securearmory) "qRN" = ( /obj/machinery/camera{ c_tag = "Library Games Room"; @@ -113605,28 +114639,6 @@ icon_state = "dark" }, /area/security/seceqstorage) -"qSk" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/door/airlock/command/glass{ - name = "Chief Engineer"; - req_access = list(56); - id = "ceprivacytint"; - security_level = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plasteel, -/area/crew_quarters/chief) "qSr" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/iv_bag/blood/OMinus, @@ -113646,7 +114658,7 @@ dir = 5; icon_state = "darkred" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "qSA" = ( /obj/machinery/door/airlock/maintenance{ req_access = list(12) @@ -113801,9 +114813,12 @@ }, /area/quartermaster/office) "qTF" = ( -/obj/structure/sign/nosmoking_2, -/turf/simulated/wall, -/area/library) +/obj/item/radio/intercom{ + dir = 1; + pixel_y = -28 + }, +/turf/simulated/floor/plasteel/freezer, +/area/crew_quarters/toilet2) "qTM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -113815,7 +114830,8 @@ icon_state = "4-8" }, /turf/simulated/floor/plasteel{ - icon_state = "white" + dir = 8; + icon_state = "whitepurple" }, /area/toxins/mixing) "qTR" = ( @@ -113888,6 +114904,11 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/plating, /area/maintenance/disposal) "qUp" = ( @@ -114007,6 +115028,19 @@ }, /turf/simulated/floor/carpet/royalblack, /area/crew_quarters/chief) +"qVF" = ( +/obj/structure/table/wood/fancy/royalblack, +/obj/item/clothing/under/fluff/soviet_casual_uniform, +/obj/item/clothing/under/fluff/soviet_casual_uniform{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark"; + tag = "icon-vault (NORTHEAST)" + }, +/area/crew_quarters/theatre) "qVL" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -114057,17 +115091,6 @@ icon_state = "stage_bleft" }, /area/maintenance/casino) -"qWk" = ( -/obj/structure/rack/gunrack{ - name = "shelf"; - desc = "A sturdy metal shelf to store a variety of items on." - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark" - }, -/area/quartermaster/storage) "qWm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -114158,7 +115181,7 @@ dir = 10; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "qWJ" = ( /obj/structure/table/reinforced, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -114204,6 +115227,23 @@ icon_state = "red" }, /area/security/main) +"qXp" = ( +/obj/machinery/atmospherics/trinary/filter/flipped{ + desc = "Отфильтровывает азот из трубы и отправляет их в камеру хранения"; + filter_type = 2; + name = "Фильтр Азота (N2)"; + on = 1; + target_pressure = 4500 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/maintenance/atmospherics) "qXw" = ( /obj/structure/window/reinforced{ dir = 4 @@ -114248,12 +115288,9 @@ }, /area/security/hos) "qYa" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "mining_internal" +/turf/simulated/floor/plasteel{ + icon_state = "browncorner" }, -/obj/structure/plasticflaps, -/turf/simulated/floor/plating, /area/quartermaster/miningstorage) "qYb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -114268,10 +115305,10 @@ /turf/simulated/floor/plasteel, /area/quartermaster/miningdock) "qYe" = ( -/obj/structure/chair/comfy/brown, -/obj/effect/landmark/start/civilian, -/turf/simulated/floor/wood, -/area/library) +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/hallway/primary/central/west) "qYf" = ( /obj/structure/cable{ icon_state = "1-2" @@ -114304,6 +115341,16 @@ icon_state = "tranquillite" }, /area/security/permabrig) +"qYk" = ( +/obj/structure/chair/sofa/right{ + color = "#85130b"; + dir = 8 + }, +/obj/effect/turf_decal/siding/red{ + dir = 5 + }, +/turf/simulated/floor/carpet/black, +/area/crew_quarters/bar/atrium) "qYq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -114360,6 +115407,10 @@ /obj/structure/chair{ dir = 4 }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -24 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "red" @@ -114405,7 +115456,9 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "qZb" = ( /obj/machinery/firealarm{ @@ -114464,12 +115517,22 @@ icon_state = "neutral" }, /area/bridge/checkpoint/south) +"qZp" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "SKPP" + }, +/obj/structure/cable, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/bridge/checkpoint/south) "qZt" = ( /obj/structure/window/reinforced{ dir = 8 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "qZw" = ( @@ -114582,16 +115645,12 @@ /turf/simulated/floor/wood, /area/crew_quarters/arcade) "rab" = ( -/obj/structure/table/reinforced, /obj/effect/decal/warning_stripes/yellow/hollow, -/obj/item/storage/toolbox/mechanical, /obj/machinery/light{ dir = 1; in_use = 1 }, -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 - }, +/obj/machinery/vending/plasmaresearch, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "whitepurple" @@ -114666,7 +115725,9 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "rbe" = ( /obj/effect/decal/warning_stripes/northeast, @@ -114694,6 +115755,25 @@ }, /turf/simulated/floor/plating, /area/maintenance/tourist) +"rbC" = ( +/obj/structure/curtain/open/shower/security{ + alpha = 255; + anchored = 1; + name = "backstage" + }, +/obj/structure/table/reinforced, +/obj/item/phone{ + attack_verb = list("bounced a check off","checked-out","tipped"); + desc = "Also known as a cash register, or, more commonly, \"robbery magnet\". It's old and rusty, clearly non-functional and decorative only."; + dir = 1; + icon = 'icons/obj/machines/pos.dmi'; + icon_state = "pos"; + name = "point of sale" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/trading) "rbE" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable, @@ -114734,7 +115814,7 @@ dir = 4 }, /turf/simulated/floor/plasteel, -/area/engineering/engine) +/area/engineering/break_room) "rcb" = ( /obj/structure/closet/boxinggloves, /turf/simulated/floor/plasteel, @@ -114882,38 +115962,6 @@ /obj/structure/closet/firecloset, /turf/simulated/floor/plating, /area/maintenance/tourist) -"rdX" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 1 - }, -/obj/machinery/door/window{ - dir = 8; - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/obj/item/storage/box/barrier, -/obj/item/grenade/barrier{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/item/grenade/barrier{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "red" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -115163,11 +116211,13 @@ /area/crew_quarters/serviceyard) "rfY" = ( /obj/effect/decal/warning_stripes/southeastcorner, -/obj/machinery/computer/pandemic, /obj/machinery/light{ dir = 1; in_use = 1 }, +/obj/machinery/chem_master{ + pixel_x = -1 + }, /turf/simulated/floor/plasteel, /area/medical/virology/lab) "rge" = ( @@ -115190,6 +116240,21 @@ icon_state = "neutral" }, /area/hallway/spacebridge/comcar) +"rgn" = ( +/obj/machinery/turretid/stun{ + control_area = "AI Satellite"; + name = "AI Antechamber Turret Control"; + pixel_y = -32; + req_access = list(75) + }, +/obj/machinery/light, +/obj/machinery/camera{ + c_tag = "AI Sattelit Hallway Main Acces South"; + dir = 10; + network = list("Engineering","SS13") + }, +/turf/simulated/floor/redgrid, +/area/aisat/aihallway) "rgs" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -115210,7 +116275,7 @@ /obj/effect/decal/warning_stripes/northwest, /obj/structure/closet/firecloset, /turf/simulated/floor/plasteel, -/area/engineering/engine) +/area/engineering/break_room) "rgA" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -115231,6 +116296,25 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"rgK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/button/windowtint{ + id = "Interrogation"; + pixel_x = 24; + pixel_y = -24; + req_access = list(63) + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/security/interrogation) "rgL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -115282,6 +116366,16 @@ /obj/machinery/light, /turf/simulated/floor/grass, /area/maintenance/garden) +"rhh" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) "rhi" = ( /obj/effect/decal/cleanable/dirt, /obj/item/folder/red, @@ -115318,6 +116412,18 @@ icon_state = "dark" }, /area/security/prisonlockers) +"rhB" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/snacks/fried_vox{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/cigbutt{ + pixel_x = 6; + pixel_y = 12 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) "rhE" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 @@ -115376,19 +116482,6 @@ icon_state = "neutralfull" }, /area/hallway/primary/fore) -"rhN" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 8 - }, -/obj/effect/turf_decal/number/number_2{ - dir = 1; - pixel_y = -10; - pixel_x = 6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "blue" - }, -/area/hallway/secondary/entry/lounge) "rhR" = ( /obj/structure/table, /obj/item/storage/toolbox/mechanical/old, @@ -115446,27 +116539,6 @@ /obj/effect/decal/ants, /turf/simulated/floor/plating, /area/security/permabrig) -"ris" = ( -/obj/machinery/door/airlock/medical{ - name = "Virology Bedroom"; - req_access = list(39) - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/carpet/green, -/area/medical/virology) "riu" = ( /obj/machinery/photocopier, /obj/machinery/camera{ @@ -115501,14 +116573,12 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, /obj/structure/cable{ icon_state = "1-8" }, /obj/item/radio/beacon, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel, /area/atmos) "riE" = ( @@ -115582,9 +116652,6 @@ }, /area/aisat/aihallway) "riR" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, @@ -115601,6 +116668,9 @@ /obj/effect/turf_decal/siding/white{ dir = 1 }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/simulated/floor/glass, /area/crew_quarters/locker) "riV" = ( @@ -115659,8 +116729,23 @@ icon_state = "darkbluealt" }, /area/hallway/primary/central/second/north) +"rjH" = ( +/obj/structure/table/wood/fancy/purple, +/obj/machinery/requests_console{ + department = "Janitorial"; + departmentType = 1; + name = "Janitor Requests Console"; + pixel_x = -32 + }, +/obj/item/storage/fancy/cigarettes/cigpack_random, +/obj/item/lighter/random{ + pixel_x = 4; + pixel_y = 3 + }, +/turf/simulated/floor/carpet/purple, +/area/janitor) "rjI" = ( -/obj/structure/chair/office, +/obj/structure/chair, /obj/item/radio/intercom{ dir = 8; pixel_y = 24 @@ -115717,6 +116802,22 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/arcade) +"rkg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/sortjunction/reversed{ + name = "Genetics"; + sortType = 23 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint) "rki" = ( /turf/simulated/floor/plasteel{ icon_state = "grimy" @@ -115776,7 +116877,6 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/carpet/red, /area/security/prison/cell_block/A) "rkW" = ( @@ -115789,7 +116889,8 @@ icon_state = "1-2" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "rkX" = ( @@ -115917,6 +117018,41 @@ icon_state = "tranquillite" }, /area/crew_quarters/kitchen) +"rlz" = ( +/obj/structure/closet/crate/medical, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -11; + pixel_y = 5 + }, +/obj/item/storage/box/beakers{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/item/storage/box/beakers{ + pixel_y = -1 + }, +/obj/item/storage/box/syringes{ + pixel_x = 10; + pixel_y = -3 + }, +/obj/item/storage/box/gloves{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plating, +/area/medical/virology/lab) "rlC" = ( /obj/effect/spawner/random_spawners/rodent, /turf/simulated/floor/plating, @@ -116182,12 +117318,10 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, /obj/structure/cable{ icon_state = "1-8" }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -116330,6 +117464,17 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/security/permabrig) +"rnU" = ( +/obj/structure/window/reinforced, +/obj/machinery/door/window/brigdoor/southright{ + dir = 1; + req_access = list(17,75) + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/aisat/aihallway) "rob" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -116487,8 +117632,23 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/plasteel{ + icon_state = "brownfull" + }, /area/quartermaster/miningstorage) +"rpc" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/wood, +/area/library/game_zone) "rpl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -116523,6 +117683,7 @@ on = 0; pixel_y = 8 }, +/obj/item/deck/cards, /turf/simulated/floor/carpet/royalblack, /area/maintenance/fsmaint2) "rpx" = ( @@ -116648,6 +117809,14 @@ icon_state = "blue" }, /area/hydroponics) +"rqD" = ( +/obj/machinery/conveyor/inverted{ + dir = 9; + id = "garbage" + }, +/obj/effect/decal/warning_stripes/northeastcorner, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "rqF" = ( /obj/structure/cult/archives, /obj/machinery/newscaster{ @@ -116763,6 +117932,19 @@ icon_state = "neutral" }, /area/hallway/spacebridge/somsec) +"rrP" = ( +/obj/machinery/door/window/southright{ + dir = 8; + name = "Toxins Launcher"; + req_access = list(7) + }, +/obj/machinery/door/window/southright{ + dir = 4; + name = "Toxins Launcher"; + req_access = list(7) + }, +/turf/simulated/floor/plating, +/area/toxins/launch) "rrU" = ( /turf/simulated/wall/r_wall, /area/toxins/launch) @@ -116792,19 +117974,6 @@ icon_state = "brown" }, /area/quartermaster/office) -"rsK" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - name = "Morgue"; - req_access = list(5); - id = "Morgue" - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark"; - tag = "icon-vault (NORTHEAST)" - }, -/area/medical/morgue) "rsL" = ( /obj/structure/window/reinforced{ dir = 8 @@ -116889,17 +118058,6 @@ icon_state = "neutralfull" }, /area/hallway/primary/fore) -"rtn" = ( -/obj/effect/spawner/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "SKPP"; - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/simulated/floor/plating, -/area/bridge/checkpoint/south) "rtz" = ( /obj/structure/dresser{ pixel_x = -3 @@ -116917,6 +118075,15 @@ }, /turf/simulated/openspace, /area/crew_quarters/serviceyard) +"rtD" = ( +/obj/structure/chair/sofa/pew/right{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "chapel" + }, +/area/chapel/main) "rtK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -116930,6 +118097,36 @@ /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/additional) +"rtR" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -26 + }, +/obj/structure/cable{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"rtY" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "QMLoad2" + }, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2"; + layer = 2.494 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/delivery) "rua" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 8 @@ -117002,7 +118199,7 @@ icon_state = "1-2" }, /turf/simulated/floor/plasteel{ - dir = 1 + icon_state = "red" }, /area/security/lobby) "ruz" = ( @@ -117019,11 +118216,42 @@ dir = 1 }, /area/security/interrogation) +"ruB" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/item/storage/box/teargas, +/obj/item/storage/box/teargas{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grenade/chem_grenade/teargas{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/item/grenade/chem_grenade/teargas{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/door/window{ + color = "red"; + name = "Secure Armory"; + req_access = list(1) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "ruF" = ( /obj/effect/decal/cleanable/dust, /obj/item/radio/intercom{ name = "north station intercom (General)"; - pixel_y = 28 + pixel_y = 24 }, /obj/machinery/light/small{ dir = 1 @@ -117067,29 +118295,6 @@ }, /turf/simulated/floor/plating, /area/security/permabrig) -"ruW" = ( -/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - id_tag = "n_tool_airlock"; - layer = 3.3; - pixel_y = 0; - req_access = list(13); - tag_airpump = "n_tool_pump"; - tag_chamber_sensor = "n_tool_sensor"; - tag_exterior_door = "n_tool_outer"; - tag_interior_door = "n_tool_inner"; - pixel_x = -25 - }, -/obj/machinery/airlock_sensor{ - id_tag = "n_tool_sensor"; - layer = 3.3; - pixel_y = 7; - pixel_x = -25 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/simulated/floor/plating, -/area/maintenance/maintcentral) "rvc" = ( /obj/structure/chair/comfy/teal{ dir = 4 @@ -117132,16 +118337,11 @@ }, /area/hallway/primary/central/ne) "rvo" = ( -/obj/effect/spawner/window/reinforced, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id_tag = "SecMedPrivOutside" +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" }, -/turf/simulated/floor/plating, -/area/security/medbay) +/area/security/prison/cell_block/A) "rvp" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -117168,6 +118368,19 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel, /area/engineering/controlroom) +"rvr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/radio/intercom{ + pixel_x = 28; + pixel_y = -28 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "escape" + }, +/area/hallway/secondary/exit/maint) "rvs" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate/secure/loot, @@ -117602,6 +118815,7 @@ pixel_x = 32 }, /obj/effect/decal/cleanable/dirt, +/obj/item/suppressor, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "darkredalt" @@ -117612,18 +118826,17 @@ /obj/effect/decal/cleanable/blood/tracks{ dir = 4 }, -/obj/structure/chair, /obj/structure/cable{ d1 = 1; d2 = 4; icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, /turf/simulated/floor/plating, /area/maintenance/xenozoo) "rxW" = ( @@ -117707,6 +118920,16 @@ icon_state = "neutralfull" }, /area/hallway/primary/central/east) +"ryC" = ( +/obj/item/radio/intercom{ + name = "west station intercom (General)"; + pixel_x = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/hallway/primary/central/nw) "ryD" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -117714,7 +118937,7 @@ }, /area/chapel/main) "ryG" = ( -/obj/structure/chair/office, +/obj/structure/chair, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/brig) @@ -118008,19 +119231,16 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/wall, /area/maintenance/electrical) -"rAQ" = ( -/obj/structure/table/wood, -/obj/item/lipstick, -/obj/item/lipstick/lime{ - pixel_y = 4 - }, -/obj/item/lipstick/black{ - pixel_y = -1; - pixel_x = -6 +"rAY" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 }, -/obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood, -/area/maintenance/backstage) +/area/library) "rBa" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/table/wood/fancy/red, @@ -118063,16 +119283,6 @@ }, /turf/simulated/floor/plasteel, /area/maintenance/apmaint) -"rBs" = ( -/obj/machinery/atmospherics/unary/portables_connector{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/southwest, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "neutralcorner" - }, -/area/toxins/mixing) "rBt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -118147,6 +119357,13 @@ /obj/machinery/suit_storage_unit/standard_unit, /turf/simulated/floor/wood, /area/quartermaster/qm) +"rBV" = ( +/obj/structure/closet/secure_closet/medical4, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/surgery/north) "rBY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -118204,17 +119421,13 @@ }, /area/atmos) "rCn" = ( -/obj/structure/railing{ - dir = 1 - }, /obj/structure/sign/cargo{ pixel_x = 32 }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel{ - dir = 5; + dir = 4; icon_state = "brown" }, /area/quartermaster/lobby) @@ -118267,6 +119480,21 @@ icon_state = "whitehall" }, /area/toxins/xenobiology) +"rCS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "blue" + }, +/area/hallway/primary/fore) "rCX" = ( /obj/effect/landmark/start/detective, /turf/simulated/floor/wood, @@ -118396,6 +119624,13 @@ icon_state = "yellowcorner" }, /area/hallway/primary/starboard) +"rDU" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkbluealt" + }, +/area/hallway/primary/command/east) "rDX" = ( /obj/structure/computerframe, /turf/simulated/floor/plasteel{ @@ -118486,15 +119721,14 @@ }, /area/quartermaster/office) "rEE" = ( -/obj/item/radio/intercom{ - name = "west station intercom (General)"; - pixel_x = -28 +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/punch_shit{ + pixel_y = -32 }, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "blue" + icon_state = "darkgrey" }, -/area/hallway/primary/central/nw) +/area/maintenance/gambling_den) "rEG" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -118676,20 +119910,23 @@ /area/maintenance/casino) "rFQ" = ( /obj/structure/table, -/obj/item/storage/box/pillbottles{ - pixel_x = 8; - pixel_y = 4 +/obj/item/storage/box/syringes{ + pixel_x = -6 + }, +/obj/machinery/light{ + dir = 1 }, /obj/item/storage/box/pillbottles{ pixel_x = 8 }, -/obj/item/storage/box/syringes{ - pixel_x = -6 - }, /obj/item/storage/box/syringes{ pixel_x = -6; pixel_y = 4 }, +/obj/item/storage/box/pillbottles{ + pixel_x = 8; + pixel_y = 4 + }, /obj/item/storage/box/autoinjectors{ pixel_x = -6; pixel_y = 8 @@ -118698,9 +119935,6 @@ pixel_x = 8; pixel_y = 8 }, -/obj/machinery/light{ - dir = 1 - }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whiteblue" @@ -118788,6 +120022,7 @@ c_tag = "Rec Room Second Floor South"; dir = 8 }, +/obj/machinery/station_map/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutral" @@ -118814,6 +120049,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, +/obj/item/stack/spacecash/c20, /turf/simulated/floor/carpet/green, /area/maintenance/casino) "rGy" = ( @@ -119029,17 +120265,19 @@ }, /area/crew_quarters/chief) "rIa" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 +/obj/machinery/light{ + dir = 4 }, -/obj/item/pen, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "red" +/obj/structure/chair/comfy/brown{ + dir = 8 }, -/area/security/reception) +/obj/machinery/firealarm{ + dir = 4; + name = "east fire alarm"; + pixel_x = 26 + }, +/turf/simulated/floor/wood, +/area/library) "rIc" = ( /obj/machinery/light{ dir = 1; @@ -119129,8 +120367,8 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" +/turf/simulated/floor/engine{ + slowdown = -0.3 }, /area/hallway/primary/central) "rJc" = ( @@ -119191,6 +120429,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/spiderling_remains, /turf/simulated/floor/plating, /area/maintenance/backstage) "rJB" = ( @@ -119209,18 +120448,10 @@ }, /area/hallway/primary/central/east) "rJG" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 2 - }, +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel{ - dir = 1; + dir = 8; icon_state = "red" }, /area/security/lobby) @@ -119292,8 +120523,7 @@ pixel_y = 32 }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "brown" + dir = 1 }, /area/quartermaster/lobby) "rKj" = ( @@ -119308,7 +120538,7 @@ /turf/simulated/floor/plasteel, /area/storage/eva) "rKn" = ( -/turf/space{ +/turf/space/openspace{ icon_state = "black" }, /area/quartermaster/miningdock) @@ -119397,12 +120627,15 @@ }, /area/chapel/office) "rLc" = ( -/obj/effect/decal/warning_stripes/northwest, -/obj/machinery/atmospherics/unary/cold_sink/freezer{ +/obj/structure/stairs{ + dir = 1; + layer = 2 + }, +/obj/structure/railing{ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "neutralcorner" + icon_state = "white" }, /area/toxins/mixing) "rLd" = ( @@ -119465,7 +120698,9 @@ /obj/structure/window/reinforced{ dir = 8 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "rLE" = ( /obj/structure/table/wood, @@ -119513,17 +120748,12 @@ }, /area/security/permabrig) "rLZ" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ +/obj/machinery/light{ dir = 4 }, -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/door/window/eastleft{ - name = "Mail"; - req_access = list(50); - dir = 1 +/obj/structure/sign/directions/floor/alt{ + dir = 8; + pixel_x = 28 }, /turf/simulated/floor/plasteel, /area/quartermaster/sorting) @@ -119535,10 +120765,8 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, -/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "greencorner" + dir = 5 }, /area/hydroponics) "rMb" = ( @@ -119549,38 +120777,35 @@ /area/crew_quarters/fitness) "rMe" = ( /obj/machinery/autolathe/security, -/obj/item/stack/sheet/metal{ - amount = 10 - }, -/obj/item/stack/sheet/glass{ - amount = 10 - }, /obj/item/radio/intercom{ pixel_y = 24 }, /obj/effect/decal/warning_stripes/red/hollow, +/obj/item/stack/sheet/metal{ + amount = 30 + }, +/obj/item/stack/sheet/glass{ + amount = 30 + }, /turf/simulated/floor/plasteel{ icon_state = "redfull"; tag = "icon-redfull (NORTHWEST)" }, /area/security/customs) "rMj" = ( -/obj/machinery/camera{ - c_tag = "Cargo Backroom"; - dir = 8 - }, -/obj/machinery/light{ +/obj/structure/railing{ dir = 4 }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "rampbottom" + }, /area/quartermaster/sorting) "rMo" = ( /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/carpet/cyan, /area/security/prison/cell_block/A) "rMp" = ( @@ -119881,6 +121106,17 @@ icon_state = "neutralfull" }, /area/hallway/primary/starboard) +"rOu" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno3"; + name = "Creature Cell #3" + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) "rOx" = ( /obj/structure/table/glass, /obj/item/storage/firstaid/regular, @@ -119947,31 +121183,6 @@ }, /turf/space, /area/solar/starboardaux) -"rOK" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/table/glass, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/item/reagent_containers/food/drinks/mug/sci{ - pixel_y = 10; - pixel_x = 3 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/research) "rOL" = ( /obj/structure/table/glass, /obj/item/folder/white, @@ -120032,7 +121243,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "rOU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -120237,6 +121448,15 @@ /turf/simulated/floor/carpet/royalblue, /area/blueshield) "rQj" = ( +/obj/structure/table, +/obj/item/stack/packageWrap{ + pixel_y = 15 + }, +/obj/item/hand_labeler{ + pixel_y = 11 + }, +/obj/item/paper_bin, +/obj/item/pen, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "brown" @@ -120358,6 +121578,21 @@ icon_state = "dark" }, /area/chapel/office) +"rRp" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/hallway/primary/central/second/east) "rRu" = ( /obj/structure/flora/ausbushes/brflowers, /obj/structure/flora/ausbushes/ywflowers, @@ -120637,6 +121872,28 @@ icon_state = "neutralfull" }, /area/assembly/robotics) +"rTC" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/door/window{ + color = "red"; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/item/clothing/head/helmet/alt, +/obj/item/clothing/head/helmet/alt, +/obj/item/clothing/head/helmet/alt, +/obj/item/clothing/head/helmet/alt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "rTD" = ( /obj/structure/sign/poster/official/work_for_a_future{ pixel_y = -32 @@ -120651,7 +121908,7 @@ /area/hallway/primary/central/south) "rTJ" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "1-8" }, /turf/simulated/floor/plasteel{ dir = 4; @@ -120805,16 +122062,6 @@ "rUH" = ( /turf/simulated/floor/redgrid, /area/aisat/aihallway) -"rUN" = ( -/obj/effect/decal/cleanable/dust, -/obj/machinery/vending/wallmed{ - layer = 3.3; - name = "Emergency NanoMed"; - pixel_y = 0; - pixel_x = -26 - }, -/turf/simulated/floor/plating, -/area/maintenance/livingcomplex) "rUP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -120833,6 +122080,13 @@ icon_state = "dark" }, /area/bridge/meeting_room) +"rUS" = ( +/obj/structure/closet/secure_closet/medical3, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/biostorage) "rUT" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/medical/glass{ @@ -120852,6 +122106,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -120874,19 +122131,10 @@ /obj/effect/landmark/ninja_teleport, /turf/simulated/floor/mineral/plastitanium/red, /area/maintenance/chapel) -"rVn" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/door/poddoor/preopen{ - name = "Secure Creature Cell"; - id_tag = "xenosecure" - }, -/obj/effect/spawner/window/reinforced/plasma, -/turf/simulated/floor/plating, -/area/toxins/xenobiology) "rVp" = ( -/obj/structure/stairs, +/obj/structure/stairs{ + layer = 2 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -120952,6 +122200,22 @@ icon_state = "darkblue" }, /area/medical/surgery/south) +"rWa" = ( +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/structure/closet/l3closet/security, +/obj/item/restraints/handcuffs/pinkcuffs, +/obj/effect/decal/warning_stripes/red, +/obj/machinery/door/window{ + color = "red"; + name = "Secure Armory"; + req_access = list(1) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "rWc" = ( /obj/machinery/firealarm{ dir = 4; @@ -121030,6 +122294,45 @@ /obj/effect/decal/cleanable/dust, /turf/simulated/floor/plating, /area/maintenance/fsmaint3) +"rWW" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/door_control{ + id = "vipbar1_bolt"; + name = "VIP 1 Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -6; + pixel_y = 26; + req_access = list(28); + specialfunctions = 4 + }, +/obj/machinery/door_control{ + id = "vipbar_bolt"; + name = "VIP 2 Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 6; + pixel_y = 26; + req_access = list(28); + specialfunctions = 4 + }, +/obj/machinery/door_control{ + id = "Bar"; + name = "Bar Privacy Shutters Control"; + pixel_x = 6; + pixel_y = 36; + req_access = list(28) + }, +/obj/machinery/door_control{ + id = "Bar Hall"; + name = "Bar Hall Privacy Shutters Control"; + pixel_x = -6; + pixel_y = 36; + req_access = list(28) + }, +/turf/simulated/floor/wood/dark, +/area/crew_quarters/bar) "rXa" = ( /obj/machinery/newscaster{ pixel_y = 32 @@ -121053,33 +122356,22 @@ /obj/structure/flora/ausbushes/fernybush, /turf/simulated/floor/grass, /area/hydroponics) -"rXn" = ( -/obj/structure/table/wood, -/obj/machinery/door_control{ - id = "conferenceroombolts"; - name = "Conference Room Bolts Control"; - normaldoorcontrol = 1; - req_access = list(19); - specialfunctions = 4; - pixel_x = -4 - }, -/obj/machinery/button/windowtint{ - id = "conferenceroomwindows"; - pixel_x = 7 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/carpet/royalblack, -/area/bridge/meeting_room) "rXr" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/blood_20, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"rXx" = ( +/obj/structure/table/wood, +/obj/machinery/fishtank/bowl, +/obj/item/fish_net, +/obj/item/fishfood{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/stack/wrapping_paper, +/turf/simulated/floor/wood, +/area/civilian/pet_store) "rXH" = ( /obj/structure/cable{ icon_state = "1-2" @@ -121155,25 +122447,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint) -"rYa" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "Kitchen Dinner Windows"; - name = "Kitchen Shutters"; - dir = 2 - }, -/obj/machinery/door/window/westright{ - dir = 2; - name = "Kitchen"; - req_access = list(28) - }, -/obj/item/clothing/head/cakehat, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "dark" - }, -/area/crew_quarters/kitchen) "rYb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -121263,50 +122536,6 @@ }, /turf/simulated/floor/plating, /area/security/securehallway) -"rYw" = ( -/obj/structure/table, -/obj/item/reagent_containers/syringe/antiviral, -/obj/item/reagent_containers/syringe/charcoal, -/obj/item/reagent_containers/syringe/insulin, -/obj/item/reagent_containers/glass/bottle/morphine, -/obj/item/reagent_containers/glass/bottle/epinephrine, -/obj/item/reagent_containers/syringe, -/obj/item/stack/medical/bruise_pack/advanced{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/stack/medical/ointment/advanced{ - pixel_x = 6; - pixel_y = 8 - }, -/obj/item/reagent_containers/food/pill/patch/styptic{ - pixel_y = 6 - }, -/obj/item/reagent_containers/food/pill/patch/styptic{ - pixel_x = 2; - pixel_y = 8 - }, -/obj/item/reagent_containers/food/pill/patch/silver_sulf{ - pixel_x = -8; - pixel_y = 6 - }, -/obj/item/reagent_containers/food/pill/patch/silver_sulf{ - pixel_x = -8; - pixel_y = 8 - }, -/obj/item/storage/pill_bottle/painkillers{ - pixel_x = -6; - pixel_y = -3 - }, -/obj/item/radio/intercom{ - pixel_x = -30 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/reception) "rYB" = ( /obj/structure/chair, /obj/machinery/firealarm{ @@ -121344,6 +122573,38 @@ /obj/machinery/light, /turf/simulated/floor/glass/reinforced, /area/quartermaster/office) +"rYJ" = ( +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/door/window{ + color = "red"; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/ammo_box/shotgun/stunslug, +/obj/item/ammo_box/shotgun/tranquilizer{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/ammo_box/shotgun/tranquilizer{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/ammo_box/shotgun/beanbag{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/shotgun/beanbag, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "rYM" = ( /obj/structure/table/reinforced, /obj/item/storage/belt/utility, @@ -121451,6 +122712,15 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint3) +"rZP" = ( +/obj/effect/spawner/lootdrop/maintenance/double, +/obj/machinery/conveyor{ + dir = 1; + id = "QMLoad2" + }, +/obj/structure/plasticflaps/mining, +/turf/simulated/floor/plating, +/area/quartermaster/delivery) "rZU" = ( /obj/structure/cable{ icon_state = "4-8" @@ -121469,7 +122739,7 @@ }, /area/medical/medbay) "rZY" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 4 }, /turf/simulated/floor/wood, @@ -121549,7 +122819,27 @@ }, /obj/item/storage/belt/utility, /turf/simulated/floor/redgrid, -/area/tcommsat/chamber) +/area/tcommsat/server) +"saP" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/camera{ + c_tag = "Minisat Maintenance Room"; + dir = 8; + network = list("Minisat","SS13") + }, +/obj/item/twohanded/required/kirbyplants, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 28; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/aisat/maintenance) "saQ" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -121563,13 +122853,6 @@ icon_state = "brown" }, /area/quartermaster/delivery) -"saW" = ( -/obj/effect/turf_decal/siding/white/end{ - dir = 4; - color = "#444444" - }, -/turf/simulated/floor/glass, -/area/hallway/primary/central) "saY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -121636,8 +122919,10 @@ }, /area/aisat/aihallway) "sbk" = ( -/turf/simulated/floor/carpet, -/area/library) +/obj/effect/decal/ants, +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plating, +/area/security/permabrig) "sbm" = ( /obj/machinery/status_display{ pixel_x = -32 @@ -121653,26 +122938,6 @@ "sbq" = ( /turf/simulated/wall, /area/hallway/secondary/entry) -"sbr" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/table/wood, -/obj/effect/spawner/lootdrop/officetoys, -/obj/item/flashlight/lamp/green{ - pixel_y = 13; - pixel_x = -3 - }, -/obj/machinery/door_control{ - id = "hopofficedoor"; - name = "Office Door"; - normaldoorcontrol = 1; - pixel_x = 6; - pixel_y = -2; - req_access = list(18) - }, -/turf/simulated/floor/carpet, -/area/crew_quarters/heads) "sbt" = ( /obj/structure/cable{ icon_state = "0-4" @@ -121821,7 +123086,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "scp" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -121834,6 +123099,24 @@ icon_state = "escape" }, /area/bridge/checkpoint/south) +"scq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/chapel/massdriver) "scs" = ( /obj/item/stack/cable_coil/random, /turf/simulated/floor/plating, @@ -121894,6 +123177,29 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/trading) +"scG" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/eastleft{ + dir = 1; + name = "Hydroponics Desk"; + req_access = list(35) + }, +/obj/item/clipboard, +/obj/item/toy/figure/botanist, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "Hydroponics Shutters"; + name = "Hydroponics Shutters" + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/hydroponics) "scH" = ( /obj/structure/cable{ icon_state = "1-2" @@ -121904,7 +123210,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ - icon_state = "purplefull" + icon_state = "white" }, /area/toxins/mixing) "scM" = ( @@ -121972,13 +123278,6 @@ icon_state = "dark" }, /area/hallway/primary/command/west) -"sdh" = ( -/obj/effect/turf_decal/siding/white/end{ - dir = 8; - color = "#444444" - }, -/turf/simulated/floor/glass, -/area/hallway/primary/central) "sdm" = ( /obj/structure/sign/biohazard, /turf/simulated/wall/r_wall, @@ -122091,6 +123390,17 @@ dir = 5 }, /area/hydroponics) +"sed" = ( +/obj/structure/curtain/open{ + anchored = 1; + color = "#222222" + }, +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/trading) "see" = ( /obj/structure/cable{ icon_state = "4-8" @@ -122201,14 +123511,6 @@ icon_state = "freezerfloor" }, /area/maintenance/medroom) -"seA" = ( -/obj/machinery/door/firedoor, -/obj/effect/decal/warning_stripes/yellow, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay2) "seC" = ( /obj/machinery/light{ dir = 4 @@ -122235,12 +123537,10 @@ /turf/space, /area/space) "seH" = ( -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/machinery/telepad_cargo, -/turf/simulated/floor/plasteel{ - dir = 1 - }, -/area/quartermaster/office) +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/spiderling_remains, +/turf/simulated/floor/plasteel, +/area/maintenance/apmaint) "seM" = ( /obj/effect/turf_decal/siding/wood/corner, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -122280,31 +123580,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/tourist) -"sfk" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/clothing/suit/armor/bulletproof, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 1 - }, -/obj/machinery/door/window{ - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/head/helmet/alt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "sfm" = ( /obj/machinery/camera{ c_tag = "Chemical Toxins Lab"; @@ -122494,22 +123769,17 @@ }, /area/hallway/primary/central/second/west) "sgK" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Virology Bedroom"; - req_access = list(39) - }, /obj/structure/cable{ + d1 = 1; + d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12,39) }, -/area/medical/virology) +/turf/simulated/floor/plating, +/area/medical/virology/lab) "sgU" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/watertank, @@ -122530,7 +123800,7 @@ c_tag = "Toxin Mixing"; network = list("Research","SS13") }, -/obj/machinery/status_display{ +/obj/structure/sign/nosmoking_2{ pixel_y = 32 }, /turf/simulated/floor/plasteel{ @@ -122596,6 +123866,19 @@ }, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/additional) +"shA" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/window/brigdoor/southright{ + dir = 8; + req_access = list(17,75) + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/aisat/aihallway) "shG" = ( /obj/effect/decal/cleanable/dirt, /obj/item/melee/baseball_bat, @@ -122613,7 +123896,9 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "shT" = ( /obj/effect/decal/warning_stripes/east, @@ -122627,7 +123912,7 @@ pixel_x = 28 }, /turf/simulated/floor/plasteel, -/area/engineering/engine) +/area/engineering/break_room) "shV" = ( /obj/structure/cable{ icon_state = "1-2" @@ -122655,16 +123940,6 @@ icon_state = "neutralfull" }, /area/crew_quarters/serviceyard) -"sih" = ( -/obj/machinery/vending/chinese, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medrest) "sil" = ( /obj/machinery/alarm{ dir = 4; @@ -122760,11 +124035,25 @@ dir = 1; pixel_y = 24 }, +/obj/item/rcs, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" }, /area/toxins/lab) +"sjx" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 1; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/turret_protected/aisat) "sjI" = ( /obj/structure/table/wood, /obj/machinery/recharger{ @@ -122811,7 +124100,10 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "greencorner" + }, /area/hydroponics) "sjZ" = ( /obj/structure/sign/comand{ @@ -122883,7 +124175,8 @@ }, /obj/effect/turf_decal/tile/blue, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "skC" = ( @@ -122932,29 +124225,12 @@ }, /turf/simulated/floor/plating, /area/security/hos) -"skL" = ( -/obj/machinery/atmospherics/unary/vent_pump{ - external_pressure_bound = 140; - external_pressure_bound_default = 140; - name = "server vent"; - on = 1; - pressure_checks = 0; - dir = 4 - }, -/turf/simulated/floor/bluegrid{ - icon_state = "gcircuit"; - name = "Mainframe Floor"; - nitrogen = 100; - oxygen = 0; - temperature = 80 - }, -/area/toxins/server) "skR" = ( /obj/structure/chair/comfy/red{ dir = 4 }, /obj/effect/landmark/start/nanotrasen_rep, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "skT" = ( /turf/simulated/floor/plasteel{ @@ -122984,9 +124260,6 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, /obj/effect/landmark/start/botanist, /turf/simulated/floor/plasteel{ icon_state = "blue" @@ -123066,7 +124339,7 @@ /obj/machinery/airlock_sensor{ id_tag = "solar_xeno_sensor"; layer = 3.3; - pixel_y = 36 + pixel_y = 33 }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 8; @@ -123120,6 +124393,16 @@ icon_state = "dark" }, /area/crew_quarters/chief) +"smA" = ( +/obj/machinery/computer/sm_monitor, +/obj/machinery/camera/autoname{ + c_tag = "Chief Engineer's Office"; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/chief) "smB" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -123127,11 +124410,12 @@ }, /area/engineering/mechanic_workshop) "smD" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 +/obj/structure/cable{ + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ - icon_state = "darkredfull" + icon_state = "darkredcorners" }, /area/turret_protected/ai) "smE" = ( @@ -123438,6 +124722,21 @@ }, /turf/simulated/floor/plating, /area/maintenance/fsmaint3) +"soN" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/obj/machinery/camera{ + c_tag = "Prison Solitary Confinement 2"; + dir = 9; + network = list("Prison","SS13") + }, +/turf/simulated/floor/plating, +/area/security/permabrig) "soO" = ( /obj/structure/railing{ dir = 8 @@ -123663,7 +124962,7 @@ /obj/structure/railing{ dir = 1 }, -/obj/structure/chair/office, +/obj/structure/chair, /obj/effect/landmark/start/doctor, /turf/simulated/floor/plasteel{ icon_state = "whitehall" @@ -123776,6 +125075,29 @@ icon_state = "darkyellowcorners" }, /area/quartermaster/miningdock) +"srz" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/machinery/door/window{ + color = "red"; + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "srB" = ( /obj/structure/cable{ icon_state = "4-8" @@ -123812,17 +125134,6 @@ "ssd" = ( /turf/simulated/wall/r_wall, /area/aisat/maintenance) -"ssi" = ( -/obj/machinery/atmospherics/binary/volume_pump/on{ - desc = "Возвращает газ после обработки в трубу смешивания"; - name = "Выход газа после обработки"; - dir = 1 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/atmos) "ssl" = ( /obj/structure/closet/firecloset, /turf/simulated/floor/plating, @@ -123837,7 +125148,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "ssw" = ( /obj/machinery/camera{ c_tag = "Gravity Generator Area"; @@ -123888,6 +125199,15 @@ tag = "icon-whitebluecorner" }, /area/maintenance/medroom) +"ssL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_regular_floor = "yellowsiding"; + icon_state = "tranquillite" + }, +/area/security/permabrig) "ssN" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -123920,7 +125240,8 @@ icon_state = "1-2" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "ssS" = ( @@ -123947,14 +125268,6 @@ icon_state = "neutralfull" }, /area/engineering/gravitygenerator) -"sta" = ( -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) "ste" = ( /obj/effect/decal/warning_stripes/northwest, /turf/simulated/floor/plasteel/airless, @@ -123990,7 +125303,9 @@ }, /area/atmos) "stA" = ( -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "stC" = ( /obj/structure/bed, @@ -124013,11 +125328,10 @@ }, /area/toxins/xenobiology) "stL" = ( -/obj/effect/turf_decal/loading_area, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "brown" +/obj/structure/sign/cargo{ + pixel_x = -32 }, +/turf/simulated/openspace, /area/quartermaster/miningstorage) "stR" = ( /obj/structure/disposalpipe/segment{ @@ -124087,10 +125401,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/mining/glass{ - name = "Disposal Bay"; - req_access = list(31) - }, /obj/machinery/door/poddoor{ density = 0; icon_state = "open"; @@ -124099,6 +125409,10 @@ opacity = 0 }, /obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining{ + name = "Cargo Bay"; + req_access = list(31) + }, /turf/simulated/floor/plasteel, /area/quartermaster/sorting) "sud" = ( @@ -124159,7 +125473,7 @@ /obj/machinery/embedded_controller/radio/airlock/airlock_controller{ id_tag = "solar_tool_airlock"; layer = 3.3; - pixel_y = 25; + pixel_y = 26; req_access = list(13); tag_airpump = "solar_tool_pump"; tag_chamber_sensor = "solar_tool_sensor"; @@ -124169,7 +125483,7 @@ /obj/machinery/airlock_sensor{ id_tag = "solar_tool_sensor"; layer = 3.3; - pixel_y = 32 + pixel_y = 33 }, /obj/effect/decal/warning_stripes/yellow, /obj/structure/cable{ @@ -124286,22 +125600,6 @@ icon_state = "redcorner" }, /area/security/securehallway) -"svo" = ( -/obj/structure/chair/comfy/teal{ - dir = 4 - }, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = -32 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/landmark/start/intern, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medrest) "svr" = ( /obj/effect/decal/cleanable/dirt, /obj/item/wrench, @@ -124439,6 +125737,16 @@ /obj/structure/flora/ausbushes/ywflowers/hell, /turf/simulated/floor/grass, /area/hydroponics) +"swm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredcorners" + }, +/area/turret_protected/ai) "swp" = ( /obj/machinery/door/airlock{ name = "Unisex Showers" @@ -124474,6 +125782,15 @@ icon_state = "dark" }, /area/turret_protected/ai) +"swN" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkred" + }, +/area/turret_protected/ai) "swP" = ( /obj/machinery/power/apc{ dir = 1; @@ -124606,27 +125923,24 @@ }, /turf/simulated/floor/plating, /area/maintenance/maintcentral) -"syb" = ( -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - desc = "Труба хранит в себе набор газов для смешивания"; - dir = 6; - name = "Труба смешивания" - }, -/obj/structure/table/reinforced, -/obj/item/storage/box/lights/mixed{ - pixel_y = 6; - pixel_x = 5 +"syf" = ( +/obj/structure/table, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 }, -/obj/item/storage/box/lights/mixed{ - pixel_y = 6; - pixel_x = 5 +/obj/item/organ/external/tail/unathi{ + pixel_x = 8; + pixel_y = 8 }, -/obj/item/grenade/chem_grenade/metalfoam, -/obj/item/grenade/chem_grenade/metalfoam, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" +/obj/item/organ/external/tail/tajaran{ + pixel_x = 6; + pixel_y = 6 }, -/area/atmos) +/obj/item/clothing/head/kitty, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/trading) "sys" = ( /obj/structure/railing{ dir = 6 @@ -124726,13 +126040,28 @@ icon_state = "red" }, /area/security/reception) +"syW" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/table/reinforced, +/obj/item/folder/red, +/obj/item/folder/red{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkbluealt" + }, +/area/security/warden) "szc" = ( /obj/machinery/light_switch{ dir = 4; pixel_x = -24 }, /turf/simulated/floor/plasteel{ - dir = 8; + dir = 10; icon_state = "darkred" }, /area/turret_protected/ai) @@ -124794,6 +126123,23 @@ }, /turf/simulated/floor/plating, /area/maintenance/tourist) +"szp" = ( +/obj/effect/turf_decal/siding/red{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Head of Security's Desk"; + departmentType = 5; + name = "Head of Security Requests Console"; + pixel_x = -32; + pixel_y = 30 + }, +/turf/simulated/floor/carpet/red, +/area/security/hos) "szq" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -124803,6 +126149,7 @@ /obj/machinery/light/small{ dir = 1 }, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/security/permahallway) "szv" = ( @@ -124941,17 +126288,6 @@ }, /turf/simulated/floor/plasteel/dark, /area/maintenance/starboardaux) -"sAu" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) "sAx" = ( /obj/machinery/atmospherics/unary/vent_pump{ dir = 4; @@ -124980,6 +126316,13 @@ /obj/item/pen, /turf/simulated/floor/carpet, /area/library) +"sAE" = ( +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/primary/central/south) "sAJ" = ( /obj/effect/decal/warning_stripes/east, /obj/structure/disposalpipe/segment, @@ -125063,7 +126406,7 @@ /turf/simulated/floor/redgrid, /area/engineering/engine) "sBd" = ( -/obj/structure/chair/office, +/obj/structure/chair, /obj/machinery/camera{ c_tag = "Rec Room North" }, @@ -125128,15 +126471,15 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, -/obj/item/radio/intercom{ - name = "south station intercom (General)"; - pixel_x = -28 +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "sBo" = ( /obj/effect/decal/warning_stripes/red/hollow, /obj/structure/chair{ @@ -125183,16 +126526,20 @@ }, /area/security/podbay) "sBQ" = ( -/obj/machinery/mineral/unloading_machine{ - dir = 1; - icon_state = "unloader-corner"; - input_dir = 1; - output_dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/camera{ + c_tag = "Mining Deep Storage"; dir = 9 }, -/turf/simulated/floor/plating, +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/box, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, /area/quartermaster/miningstorage) "sBR" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply, @@ -125404,6 +126751,10 @@ dir = 4 }, /obj/effect/decal/warning_stripes/east, +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_x = 25 + }, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/eastarrival) "sDU" = ( @@ -125416,6 +126767,23 @@ "sDV" = ( /turf/simulated/openspace, /area/engineering/mechanic_workshop/hangar) +"sDW" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/east, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/sign/fire{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/toxins/mixing) "sEb" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -125452,6 +126820,27 @@ }, /turf/simulated/floor/plasteel, /area/engineering/controlroom) +"sEF" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber{ + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/obj/item/radio/intercom{ + pixel_y = 24 + }, +/obj/structure/closet/walllocker/emerglocker/north{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "purplefull" + }, +/area/toxins/test_chamber) "sEH" = ( /obj/structure/table/glass, /obj/item/paper_bin{ @@ -125492,7 +126881,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "sEP" = ( /obj/machinery/atmospherics/unary/outlet_injector/on{ dir = 4; @@ -125516,6 +126905,31 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) +"sEW" = ( +/obj/structure/table, +/obj/item/storage/box/syringes{ + pixel_y = 9 + }, +/obj/item/storage/box/syringes{ + pixel_x = 4; + pixel_y = 11 + }, +/obj/item/storage/lockbox/vials{ + pixel_x = 1; + pixel_y = -3 + }, +/obj/item/storage/fancy/vials{ + pixel_x = 6; + pixel_y = -2 + }, +/obj/machinery/alarm{ + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitegreen" + }, +/area/medical/virology) "sEX" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -125577,6 +126991,21 @@ /obj/effect/spawner/random_spawners/rodent, /turf/simulated/floor/plating, /area/maintenance/engineering) +"sFD" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 4 + }, +/obj/effect/turf_decal/number/number_2{ + dir = 1; + pixel_x = -6; + pixel_y = -10 + }, +/obj/machinery/station_map/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/secondary/entry/lounge) "sFH" = ( /obj/structure/cable{ icon_state = "4-8" @@ -125611,6 +127040,7 @@ dir = 1; pixel_y = -24 }, +/obj/effect/decal/cleanable/spiderling_remains, /turf/simulated/floor/plasteel{ icon_state = "tranquillite" }, @@ -125625,19 +127055,10 @@ /turf/simulated/floor/plating, /area/maintenance/fsmaint3) "sGa" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, -/obj/structure/mirror{ - pixel_x = 26 - }, -/obj/structure/toilet{ - pixel_y = 19 - }, -/turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" - }, +/obj/structure/bed, +/obj/item/bedsheet/medical, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/carpet/green, /area/medical/virology) "sGd" = ( /obj/effect/decal/warning_stripes/south, @@ -125848,6 +127269,18 @@ }, /turf/simulated/floor/plating, /area/maintenance/casino) +"sHc" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Cargo maintenance access"; + req_access = list(12) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) "sHq" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/medical/glass{ @@ -125861,6 +127294,9 @@ name = "Quarantine Lockdown"; opacity = 0 }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "whiteblue"; @@ -125868,12 +127304,10 @@ }, /area/medical/medbay) "sHy" = ( -/obj/machinery/door/airlock/mining/glass{ - name = "Processing Area"; - req_access = list(48) - }, /obj/machinery/door/firedoor, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/plasteel{ + icon_state = "brownfull" + }, /area/quartermaster/miningstorage) "sHB" = ( /obj/machinery/disposal, @@ -125882,30 +127316,6 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/theatre) -"sHE" = ( -/obj/structure/table/wood/fancy/royalblack, -/obj/item/clothing/under/retro/engineering, -/obj/item/clothing/under/retro/medical{ - pixel_y = 4; - pixel_x = 4 - }, -/obj/item/clothing/under/retro/science{ - pixel_x = 6 - }, -/obj/item/clothing/under/retro/security{ - pixel_y = 4; - pixel_x = -7 - }, -/obj/item/clothing/under/solgov/civ, -/obj/structure/sign/poster/official/random{ - pixel_y = -32 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark"; - tag = "icon-vault (NORTHEAST)" - }, -/area/crew_quarters/theatre) "sHF" = ( /obj/machinery/firealarm{ dir = 1; @@ -126001,6 +127411,21 @@ /obj/effect/decal/warning_stripes/northwest, /turf/simulated/floor/plating, /area/maintenance/portsolar) +"sIr" = ( +/obj/effect/spawner/window/reinforced/polarized{ + id = "blueshieldofficewindows" + }, +/obj/machinery/door/poddoor/shutters{ + density = 0; + dir = 8; + icon_state = "open"; + id_tag = "blueshield"; + name = "Privacy Shutters"; + opacity = 0 + }, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/blueshield) "sIt" = ( /obj/machinery/door/airlock/security/glass{ id_tag = "BrigRight"; @@ -126199,16 +127624,6 @@ icon_state = "tranquillite" }, /area/mimeoffice) -"sJJ" = ( -/obj/machinery/camera{ - c_tag = "Second Floor Central Ring West Hallway 2"; - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "red" - }, -/area/hallway/primary/central/second/west) "sJK" = ( /obj/machinery/light_switch{ pixel_x = 24 @@ -126285,7 +127700,9 @@ /area/maintenance/casino) "sKl" = ( /obj/structure/window/reinforced, -/obj/item/twohanded/required/kirbyplants, +/obj/item/twohanded/required/kirbyplants{ + layer = 3.1 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -126494,7 +127911,7 @@ icon_state = "0-8" }, /turf/simulated/floor/plating, -/area/medical/virology/lab) +/area/medical/virology) "sMu" = ( /obj/machinery/camera{ c_tag = "Second Floor Central Lobby North" @@ -126529,6 +127946,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -126537,10 +127957,15 @@ /obj/structure/chair{ dir = 1 }, +/obj/machinery/firealarm{ + dir = 1; + name = "south fire alarm"; + pixel_y = -24 + }, /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "sMH" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -126552,12 +127977,15 @@ /turf/simulated/floor/plating, /area/security/permabrig) "sMR" = ( -/obj/machinery/atmospherics/unary/portables_connector{ - dir = 1 +/obj/structure/stairs{ + dir = 1; + layer = 2 + }, +/obj/structure/railing{ + dir = 4 }, -/obj/machinery/portable_atmospherics/canister/air, /turf/simulated/floor/plating, -/area/medical/virology/lab) +/area/maintenance/asmaint4) "sMX" = ( /obj/effect/decal/warning_stripes/north, /obj/machinery/camera{ @@ -126596,18 +128024,6 @@ /obj/effect/landmark/tiles/damageturf, /turf/simulated/floor/plating, /area/maintenance/apmaint) -"sNc" = ( -/obj/machinery/teleport/station, -/obj/machinery/camera/motion{ - c_tag = "Minisat Teleporter Room"; - network = list("Minisat","SS13"); - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkred" - }, -/area/tcommsat/chamber) "sNf" = ( /obj/machinery/conveyor{ dir = 4; @@ -126647,15 +128063,19 @@ d2 = 8; icon_state = "1-8" }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment{ - invisibility = 101 - }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, +/obj/structure/disposalpipe/junction/yjunction{ + dir = 8 + }, +/obj/machinery/hologram/holopad, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -126789,11 +128209,19 @@ }, /area/crew_quarters/fitness) "sOA" = ( -/obj/structure/table/glass, -/obj/item/flashlight/lamp{ - pixel_y = 12; - pixel_x = -4 +/obj/effect/turf_decal/siding/wood, +/obj/machinery/door/airlock/medical/glass{ + name = "Virology Bedroom"; + req_access = list(39) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, +/obj/machinery/door/firedoor, /turf/simulated/floor/carpet/green, /area/medical/virology) "sOF" = ( @@ -126845,6 +128273,20 @@ icon_state = "brownfull" }, /area/quartermaster/miningstorage) +"sOS" = ( +/obj/effect/turf_decal/siding/yellow, +/obj/structure/tribune{ + anchored = 1; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/crew_quarters/courtroom) "sPg" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -126927,6 +128369,16 @@ /obj/structure/lattice/catwalk, /turf/space, /area/solar/port) +"sPy" = ( +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/delivery) "sPD" = ( /obj/structure/cable{ icon_state = "1-8" @@ -126963,7 +128415,7 @@ /turf/simulated/floor/plating, /area/crew_quarters/sleep/secondary) "sQl" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 1 }, /obj/effect/decal/cleanable/dirt, @@ -126996,7 +128448,9 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "sQA" = ( /obj/effect/turf_decal/stripes/line, @@ -127089,9 +128543,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/cable{ icon_state = "1-8" }, @@ -127102,6 +128553,11 @@ /obj/effect/turf_decal/siding/white{ dir = 1 }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/glass, /area/crew_quarters/locker) "sRy" = ( @@ -127179,20 +128635,18 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "sSj" = ( -/obj/structure/table, -/obj/item/storage/box/donkpockets{ - pixel_x = 2; - pixel_y = 3 - }, -/obj/machinery/light{ - dir = 1; - in_use = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitegreen" }, -/area/medical/virology/lab) +/area/medical/virology) "sSp" = ( /obj/structure/cable{ icon_state = "0-4" @@ -127258,33 +128712,6 @@ icon_state = "caution" }, /area/crew_quarters/fitness) -"sSy" = ( -/obj/item/reagent_containers/food/snacks/meatball{ - icon = 'icons/obj/food/candy.dmi'; - icon_state = "candy"; - name = "MRE with meat" - }, -/obj/item/reagent_containers/food/snacks/meatball{ - icon = 'icons/obj/food/candy.dmi'; - icon_state = "candy"; - name = "MRE with meat" - }, -/obj/item/reagent_containers/food/snacks/candy/mre, -/obj/item/reagent_containers/food/snacks/candy/mre, -/obj/structure/closet/secure_closet/medical_wall{ - req_access = list(3); - pixel_x = -32; - name = "Exile item closet" - }, -/obj/machinery/camera{ - c_tag = "Gateway Exile"; - dir = 5 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "red" - }, -/area/gateway) "sSz" = ( /obj/machinery/light{ dir = 4 @@ -127446,18 +128873,6 @@ icon_state = "neutral" }, /area/hallway/primary/central/east) -"sTn" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutral" - }, -/area/hallway/primary/central/second/east) "sTs" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -127473,31 +128888,6 @@ /obj/structure/sign/nosmoking_2, /turf/simulated/wall/r_wall, /area/toxins/lab) -"sTC" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/structure/window/reinforced{ - color = "red"; - dir = 1 - }, -/obj/item/clothing/suit/armor/laserproof, -/obj/item/gun/energy/ionrifle, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/machinery/door/window{ - dir = 8; - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "sTG" = ( /mob/living/simple_animal/mouse/white{ desc = "Близкий друг психиатра. Не подпускать к Рантайму."; @@ -127591,6 +128981,11 @@ dir = 8; tag = "icon-shower (WEST)" }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -30; + pixel_y = -8 + }, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -127605,6 +129000,17 @@ }, /turf/simulated/floor/carpet/black, /area/crew_quarters/bar/atrium) +"sUE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint) "sUF" = ( /obj/effect/decal/cleanable/flour, /turf/simulated/floor/plasteel{ @@ -127685,6 +129091,25 @@ icon_state = "whiteyellow" }, /area/medical/chemistry) +"sVs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/flasher{ + pixel_x = 23; + pixel_y = 32 + }, +/obj/machinery/ai_slipper, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/tcommsat/chamber) "sVv" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -127692,19 +129117,6 @@ dir = 1 }, /area/quartermaster/lobby) -"sVw" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "neutral" - }, -/area/hallway/spacebridge/comcar) "sVx" = ( /obj/machinery/firealarm{ dir = 8; @@ -127872,17 +129284,6 @@ /obj/machinery/atmospherics/pipe/multiz, /turf/simulated/floor/plating, /area/maintenance/starboard) -"sWp" = ( -/obj/structure/table/glass, -/obj/item/storage/box/masks, -/obj/item/storage/box/gloves{ - pixel_x = 3; - pixel_y = 3 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue" - }, -/area/medical/surgery/south) "sWz" = ( /obj/structure/cable{ icon_state = "1-2" @@ -127963,11 +129364,6 @@ /obj/machinery/light{ dir = 4 }, -/obj/machinery/camera{ - c_tag = "Research West Hallway 2"; - network = list("Research","SS13"); - dir = 8 - }, /obj/structure/extinguisher_cabinet{ pixel_x = 26 }, @@ -128058,36 +129454,7 @@ dir = 4; icon_state = "darkred" }, -/area/tcommsat/chamber) -"sXx" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/storage/lockbox/mindshield, -/obj/item/storage/box/trackimp, -/obj/item/storage/box/chemimp{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 1 - }, -/obj/machinery/door/window{ - dir = 8; - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) +/area/tcommsat/server) "sXA" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -128151,16 +129518,6 @@ /obj/structure/lattice/catwalk, /turf/space, /area/space) -"sYc" = ( -/obj/structure/flora/ausbushes/leafybush, -/obj/machinery/camera{ - c_tag = "Xenobio Central-North"; - network = list("Research","SS13"); - pixel_x = -1; - dir = 1 - }, -/turf/simulated/floor/grass, -/area/toxins/xenobiology) "sYe" = ( /obj/machinery/shower{ pixel_y = 22 @@ -128256,15 +129613,6 @@ icon_state = "darkgreen" }, /area/crew_quarters/sleep/secondary) -"sZf" = ( -/obj/structure/chair/sofa/corp{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/reception) "sZi" = ( /obj/structure/railing{ dir = 1 @@ -128272,9 +129620,9 @@ /obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/structure/table, -/obj/item/stack/packageWrap, -/obj/item/hand_labeler, +/obj/machinery/computer/merch{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "brown" @@ -128325,21 +129673,15 @@ /obj/effect/decal/warning_stripes/north, /turf/simulated/floor/plasteel, /area/engineering/controlroom) -"sZQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/glass, -/obj/item/reagent_containers/glass/bottle/ethanol{ - pixel_y = 6 - }, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ - pixel_x = 10 - }, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ - pixel_y = 12; - pixel_x = -6 +"sZR" = ( +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -6; + pixel_y = 5 }, -/turf/simulated/floor/plating, -/area/maintenance/asmaint) +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood, +/area/maintenance/fsmaint) "sZU" = ( /obj/effect/turf_decal/siding/wideplating/dark, /turf/simulated/wall, @@ -128372,6 +129714,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -128458,25 +129803,6 @@ icon_state = "brown" }, /area/quartermaster/office) -"taF" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/table/wood, -/obj/item/folder/yellow, -/obj/item/folder/red{ - pixel_y = 2; - pixel_x = 2 - }, -/obj/item/folder/blue{ - pixel_y = 4; - pixel_x = 4 - }, -/turf/simulated/floor/wood/fancy/cherry, -/area/magistrateoffice) "taH" = ( /obj/structure/cable{ icon_state = "4-8" @@ -128525,10 +129851,10 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 + dir = 6 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 + dir = 5 }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -128628,16 +129954,19 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=R8"; location = "R7" }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -128656,6 +129985,41 @@ }, /turf/simulated/floor/plasteel/dark, /area/maintenance/starboardaux) +"tbx" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/machinery/door/window{ + color = "red"; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/storage/belt/bandolier, +/obj/item/storage/belt/bandolier, +/obj/item/ammo_box/shotgun{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/item/ammo_box/shotgun{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/item/ammo_box/shotgun/buck{ + pixel_y = 3 + }, +/obj/item/ammo_box/shotgun/buck{ + pixel_x = 3 + }, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + name = "Lethal Bullets"; + req_access = list(1) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "tbF" = ( /obj/effect/turf_decal/siding/wood{ dir = 8; @@ -128687,6 +130051,17 @@ icon_state = "dark" }, /area/chapel/office) +"tbO" = ( +/obj/machinery/camera{ + c_tag = "Research East Central Hallway"; + dir = 1; + network = list("Research","SS13") + }, +/turf/simulated/floor/plasteel{ + icon_state = "whitepurple"; + tag = "icon-whitepurple (WEST)" + }, +/area/medical/research) "tci" = ( /obj/structure/chair/wood{ dir = 8 @@ -128798,6 +130173,16 @@ }, /turf/simulated/floor/wood, /area/security/detectives_office) +"tcC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/clown{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/maintenance/backstage) "tcI" = ( /obj/machinery/door/airlock/security/glass{ name = "Armory"; @@ -128977,6 +130362,23 @@ }, /turf/simulated/floor/plasteel, /area/engineering/controlroom) +"tdH" = ( +/obj/structure/railing{ + dir = 6 + }, +/obj/item/twohanded/required/kirbyplants{ + pixel_x = -4; + pixel_y = 7 + }, +/obj/effect/turf_decal/siding/wideplating/light{ + dir = 6 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkgreenfull" + }, +/area/hallway/secondary/exit) "tdL" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -129098,38 +130500,6 @@ icon_state = "bluefull" }, /area/toxins/storage) -"tes" = ( -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/ammo_box/magazine/sp91rc{ - pixel_x = 8 - }, -/obj/item/ammo_box/magazine/sp91rc{ - pixel_x = 4 - }, -/obj/item/ammo_box/magazine/sp91rc, -/obj/item/ammo_box/magazine/sp91rc{ - pixel_x = -4 - }, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 1 - }, -/obj/machinery/door/window{ - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "tew" = ( /obj/machinery/firealarm{ dir = 8; @@ -129207,7 +130577,7 @@ }, /area/crew_quarters/fitness) "tfc" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 4 }, /obj/structure/sign/poster/contraband/tools{ @@ -129268,9 +130638,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -129281,6 +130648,11 @@ /obj/effect/turf_decal/siding/white{ dir = 1 }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/glass, /area/crew_quarters/locker) "tfx" = ( @@ -129430,23 +130802,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/livingcomplex) -"tgm" = ( -/obj/machinery/atmospherics/pipe/simple/visible/green{ - desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; - dir = 4; - name = "Труба фильтрации" - }, -/obj/item/twohanded/required/kirbyplants, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/machinery/camera{ - c_tag = "Atmospherics South"; - network = list("SS13","Engineering"); - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/atmos) "tgx" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/toolcloset, @@ -129506,10 +130861,26 @@ /turf/simulated/floor/glass/reinforced, /area/engineering/mechanic_workshop/hangar) "tgQ" = ( -/obj/effect/decal/warning_stripes/southwest, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + name = "east extinguisher cabinet"; + pixel_x = -25 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "neutralcorner" + dir = 9; + icon_state = "whitepurple"; + tag = "icon-whitepurple (NORTHWEST)" }, /area/toxins/mixing) "tgT" = ( @@ -129538,11 +130909,30 @@ }, /turf/simulated/floor/carpet, /area/library) -"thg" = ( -/obj/effect/spawner/window/reinforced, -/obj/structure/barricade/wooden/crude, -/turf/simulated/floor/plating, -/area/maintenance/backstage) +"thb" = ( +/obj/structure/plasticflaps, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Brig_lockdown"; + name = "Cargo Lockdown"; + opacity = 0 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "packageExternal" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark" + }, +/area/quartermaster/delivery) +"thc" = ( +/obj/effect/decal/cleanable/spiderling_remains, +/turf/simulated/floor/plasteel{ + icon_state = "tranquillite" + }, +/area/maintenance/trading) "thk" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -129603,11 +130993,47 @@ }, /turf/simulated/floor/plating, /area/maintenance/secpost) +"thD" = ( +/obj/machinery/door/airlock/security{ + id = "execution"; + name = "Execution Room"; + req_access = list(2) + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/security/execution) "thE" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/additional) +"thG" = ( +/obj/machinery/kitchen_machine/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/structure/table, +/obj/machinery/camera{ + c_tag = "Research Break Room"; + dir = 10; + network = list("Research","SS13") + }, +/turf/simulated/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/medical/research/restroom) "thK" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -129670,6 +131096,29 @@ icon_state = "red" }, /area/security/securehallway) +"tip" = ( +/obj/structure/table/wood, +/obj/item/folder/yellow, +/obj/item/folder/red{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/folder/blue{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/magistrateoffice) +"tiq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_containers/food/snacks/grown/tomato{ + pixel_x = -10; + pixel_y = -7 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/trading) "tiu" = ( /obj/machinery/computer/mech_bay_power_console{ dir = 4 @@ -129678,6 +131127,12 @@ /area/maintenance/secpost) "tiy" = ( /obj/effect/decal/warning_stripes/southeast, +/obj/machinery/firealarm{ + dir = 4; + name = "east fire alarm"; + pixel_x = 26; + pixel_y = 28 + }, /turf/simulated/floor/plasteel, /area/toxins/launch) "tiA" = ( @@ -129735,11 +131190,6 @@ tag = "icon-whitepurple (WEST)" }, /area/toxins/misc_lab) -"tiT" = ( -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/interrogation) "tiU" = ( /obj/effect/decal/warning_stripes/east, /obj/machinery/light{ @@ -129998,35 +131448,9 @@ icon_state = "darkpurple" }, /area/toxins/rdoffice) -"tkp" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 2; - name = "Privacy Shutters"; - id_tag = "NTRprivate" - }, -/obj/effect/spawner/window/reinforced/polarized{ - id = "ntrepprivate" - }, -/turf/simulated/floor/plating, -/area/ntrep) "tkq" = ( /turf/space, /area/space) -"tku" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "brown" - }, -/area/quartermaster/lobby) "tkE" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb2{ @@ -130072,17 +131496,22 @@ }, /area/hallway/primary/central/second/north) "tkW" = ( -/obj/effect/decal/warning_stripes/northeast, -/obj/machinery/atmospherics/unary/portables_connector{ - dir = 8 - }, /obj/item/radio/intercom{ dir = 1; pixel_y = 28 }, +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/mechanical, +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "neutralcorner" + dir = 9; + icon_state = "whitepurple"; + tag = "icon-whitepurple (NORTHWEST)" }, /area/toxins/mixing) "tld" = ( @@ -130171,7 +131600,7 @@ "tlF" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/double, +/obj/effect/spawner/lootdrop/maintenance, /obj/machinery/light/small, /turf/simulated/floor/plating, /area/maintenance/asmaint4) @@ -130208,12 +131637,6 @@ dir = 8; do_not_delete_me = 1 }, -/obj/structure/curtain/open/shower/security{ - alpha = 255; - name = "backstage"; - anchored = 1; - pixel_y = 32 - }, /obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood, /area/maintenance/backstage) @@ -130240,6 +131663,19 @@ /obj/structure/lattice, /turf/space, /area/space) +"tmy" = ( +/obj/structure/table/glass, +/obj/machinery/light, +/obj/item/reagent_containers/iv_bag, +/obj/item/reagent_containers/iv_bag{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/surgery/south) "tmH" = ( /obj/effect/spawner/random_spawners/cobweb_right_rare, /obj/machinery/washing_machine, @@ -130289,7 +131725,7 @@ "tns" = ( /obj/structure/sign/holy, /turf/simulated/wall, -/area/chapel/main) +/area/chapel/massdriver) "tnu" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -130361,7 +131797,6 @@ /obj/structure/chair/comfy/black{ dir = 4 }, -/obj/effect/landmark/start/barber, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "dark" @@ -130370,6 +131805,7 @@ "toQ" = ( /obj/structure/table/wood/poker, /obj/effect/decal/cleanable/dust, +/obj/item/stack/spacecash/c100, /turf/simulated/floor/carpet/green, /area/maintenance/casino) "toS" = ( @@ -130519,20 +131955,15 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel, /area/crew_quarters/toilet) -"tpZ" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/item/radio/intercom{ - name = "south station intercom (General)"; - pixel_y = -28 +"tqc" = ( +/obj/structure/sign/med{ + pixel_x = -32 }, -/obj/machinery/camera{ - c_tag = "Gravity Generator Area East"; - network = list("SS13","Engineering"); - dir = 4 +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "blue" }, -/turf/simulated/floor/plasteel, -/area/engineering/gravitygenerator) +/area/hallway/primary/fore) "tqe" = ( /obj/structure/window/reinforced{ dir = 8 @@ -130565,6 +131996,16 @@ /obj/machinery/suit_storage_unit/engine, /turf/simulated/floor/plating, /area/storage/secure) +"tqp" = ( +/obj/machinery/door/window/brigdoor/security{ + name = "Brig Medical Bay"; + req_access = list(63) + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/security/medbay) "tqr" = ( /obj/structure/table, /obj/item/storage/box/bodybags, @@ -130572,7 +132013,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "tqt" = ( /obj/structure/table/glass, /obj/item/paper_bin{ @@ -130707,15 +132148,6 @@ /obj/effect/landmark/start/shaft_miner, /turf/simulated/floor/plasteel, /area/quartermaster/miningdock) -"tro" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay) "trq" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance, @@ -130856,14 +132288,13 @@ }, /area/security/prison/cell_block/A) "tsd" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/table, +/obj/item/radio/intercom{ + pixel_y = -28 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment, +/obj/item/storage/fancy/donut_box, /turf/simulated/floor/plasteel{ - dir = 1 + icon_state = "red" }, /area/security/prison/cell_block/A) "tsf" = ( @@ -130915,6 +132346,11 @@ }, /obj/effect/decal/warning_stripes/yellow/hollow, /obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/food/condiment/tomatosauce, +/obj/item/reagent_containers/food/condiment/herbs, +/obj/item/reagent_containers/food/snacks/grown/tomato, +/obj/item/reagent_containers/food/snacks/grown/tomato, +/obj/item/reagent_containers/food/snacks/grown/tomato, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -130948,6 +132384,21 @@ icon_state = "neutral" }, /area/hallway/primary/central/second/east) +"tsI" = ( +/obj/machinery/suit_storage_unit/brigmed{ + req_access = list(5) + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/sign/poster/official/space_cops{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/security/medbay) "tsP" = ( /obj/structure/sink{ dir = 4; @@ -130966,12 +132417,10 @@ }, /area/crew_quarters/chief) "tsS" = ( -/obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "dark" + icon_state = "red" }, -/area/security/medbay) +/area/hallway/primary/central/west) "tsV" = ( /obj/structure/table/wood, /obj/machinery/computer/security/wooden_tv, @@ -131142,27 +132591,20 @@ tag = "icon-whitebluecorner" }, /area/maintenance/medroom) -"ttI" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 - }, -/obj/item/radio/intercom{ - pixel_y = 24 +"ttP" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 8 }, -/obj/structure/closet/walllocker/emerglocker/north{ - pixel_y = 0; - pixel_x = 32 +/obj/effect/turf_decal/number/number_2{ + dir = 1; + pixel_x = 6; + pixel_y = -10 }, /turf/simulated/floor/plasteel{ - icon_state = "purplefull" + dir = 1; + icon_state = "neutral" }, -/area/toxins/test_chamber) +/area/hallway/secondary/entry/lounge) "ttR" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -131184,20 +132626,6 @@ /obj/effect/spawner/lootdrop/maintenance/tripple, /turf/simulated/floor/plating, /area/maintenance/asmaint2) -"tua" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/decal/cleanable/dust, -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 4 - }, -/turf/simulated/floor/carpet, -/area/maintenance/casino) "tuc" = ( /obj/structure/chair/sofa/pew/left{ dir = 1 @@ -131244,6 +132672,16 @@ /obj/effect/decal/warning_stripes/southwest, /turf/simulated/floor/plating, /area/maintenance/auxsolarport) +"tut" = ( +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 28 + }, +/obj/structure/cable, +/turf/simulated/floor/wood/fancy/light{ + color = "orange" + }, +/area/crew_quarters/captain/bedroom) "tuy" = ( /obj/machinery/light/small, /obj/effect/decal/warning_stripes/southeast, @@ -131330,6 +132768,23 @@ /obj/effect/decal/warning_stripes/southeast, /turf/simulated/floor/plating/airless, /area/space) +"tvh" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/effect/decal/warning_stripes/west, +/obj/machinery/camera{ + c_tag = "Engine Room West"; + dir = 4; + network = list("Engineering","SS13") + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engineering/engine) "tvj" = ( /obj/structure/cable{ icon_state = "1-4" @@ -131484,6 +132939,20 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"tvY" = ( +/obj/effect/decal/warning_stripes/red, +/obj/item/radio/intercom{ + pixel_x = -28; + pixel_y = -8 + }, +/obj/structure/closet/hydrant{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "blue" + }, +/area/hallway/primary/fore) "twa" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -131567,7 +133036,49 @@ icon_state = "1-8" }, /turf/simulated/floor/plating, -/area/medical/virology/lab) +/area/medical/virology) +"twt" = ( +/obj/machinery/door/window/westleft{ + dir = 4; + name = "Robotics Desk"; + req_access = list(29) + }, +/obj/machinery/door/window/eastleft{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/item/desk_bell{ + anchored = 1; + pixel_x = -7; + pixel_y = 7 + }, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Biohazard"; + name = "Quarantine Lockdown"; + opacity = 0 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "RoboDesk"; + name = "Robotics Privacy Shutter" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/table/reinforced, +/obj/item/folder, +/turf/simulated/floor/plasteel, +/area/assembly/robotics) "twu" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/machinery/vending/assist, @@ -131646,14 +133157,14 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "twF" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/structure/disposalpipe/junction/reversed, @@ -131747,6 +133258,16 @@ icon_state = "dark" }, /area/chapel/office) +"txl" = ( +/obj/machinery/vending/chinese, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medrest) "txo" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -131784,44 +133305,14 @@ }, /turf/simulated/floor/plating, /area/engineering/engine) -"txA" = ( -/obj/structure/table/reinforced, -/obj/item/stamp/hos{ - pixel_y = 3; - pixel_x = -7 - }, -/obj/item/reagent_containers/food/drinks/bottle/whiskey{ - pixel_y = 3; - pixel_x = 3 - }, -/turf/simulated/floor/carpet/red, -/area/security/hos) "txE" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/asmaint2) -"txF" = ( -/obj/effect/decal/warning_stripes/west, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light_switch{ - pixel_y = 26; - pixel_x = -26 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/engineering/gravitygenerator) "txG" = ( /obj/structure/stairs{ - dir = 8 + dir = 8; + layer = 2 }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -131847,6 +133338,19 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"txT" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurplecorner" + }, +/area/toxins/misc_lab) "txU" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -131893,8 +133397,8 @@ /area/maintenance/fore) "typ" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/oil, /obj/effect/spawner/random_spawners/cobweb_left_rare, +/obj/machinery/vending/tool, /turf/simulated/floor/plating, /area/maintenance/electrical) "tyr" = ( @@ -131966,12 +133470,6 @@ /area/hallway/secondary/entry/additional) "tyK" = ( /obj/item/twohanded/required/kirbyplants, -/obj/structure/curtain/open/shower/security{ - alpha = 255; - name = "backstage"; - anchored = 1; - pixel_y = 32 - }, /turf/simulated/floor/carpet/red, /area/maintenance/backstage) "tyM" = ( @@ -132030,17 +133528,6 @@ dir = 1 }, /area/hallway/primary/central/second/east) -"tzg" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/structure/extinguisher_cabinet{ - pixel_y = 32; - pixel_x = -27 - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "whiteyellow" - }, -/area/medical/chemistry) "tzh" = ( /obj/machinery/light{ dir = 8 @@ -132103,6 +133590,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -132143,7 +133633,7 @@ dir = 6; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "tAm" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb2{ @@ -132174,6 +133664,33 @@ /obj/machinery/light, /turf/simulated/floor/plasteel/dark, /area/maintenance/starboardaux) +"tAB" = ( +/obj/structure/safe/floor, +/obj/item/seeds/wheat/meat, +/obj/item/gun/energy/floragun{ + ammo_type = list(/obj/item/ammo_casing/energy/flora/beta,/obj/item/ammo_casing/energy/flora/gamma); + can_charge = 1; + cell_type = /obj/item/stock_parts/cell/degraded; + current_skin = "oldflora"; + desc = "Старый ботанический инструмент, испускающий контролируемое излучение, вызывающее мутации в клетках растений, не имеет самозарядки. Чтобы перезарядить это оружие, используйте устройство для подзарядки оружия."; + description_info = "Это энергетическое оружие. Имеет 2 режима стрельбы: бета и гамма. Бета изменяет геном растений. Гамма ускоряет рост растений. Чтобы перезарядить это оружие, используйте устройство для подзарядки оружия."; + emagged = 1; + name = "old floral somatoray"; + selfcharge = 0 + }, +/turf/simulated/floor/grass, +/area/maintenance/garden) +"tAC" = ( +/obj/structure/table/reinforced, +/obj/structure/curtain/open{ + anchored = 1; + color = "#222222" + }, +/obj/item/clothing/gloves/color/black, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/trading) "tAI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 10 @@ -132192,33 +133709,23 @@ dir = 1 }, /area/hallway/secondary/exit) -"tAP" = ( -/obj/structure/toilet{ - pixel_y = 19 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/door_control{ - desiredstate = 1; - id = "toilet1"; - name = "Toilet Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4; - pixel_x = 25 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/structure/sign/poster/secret/lizard{ - pixel_x = -32 - }, -/turf/simulated/floor/plasteel/freezer, -/area/crew_quarters/toilet2) "tAV" = ( /obj/effect/decal/cleanable/blood/old, /turf/simulated/floor/plasteel{ dir = 1 }, /area/maintenance/trading) +"tAW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/maintenance/apmaint) "tBc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -132235,6 +133742,7 @@ icon_state = "1-2" }, /obj/structure/window/full/plasmareinforced, +/obj/structure/grille, /turf/simulated/floor/plating, /area/engineering/engine) "tBj" = ( @@ -132347,6 +133855,17 @@ }, /turf/space/openspace, /area/turret_protected/ai) +"tCd" = ( +/obj/structure/rack/gunrack{ + desc = "A sturdy metal shelf to store a variety of items on."; + name = "shelf" + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark" + }, +/area/quartermaster/storage) "tCe" = ( /obj/structure/table/wood, /obj/item/radio/intercom{ @@ -132608,24 +134127,6 @@ }, /turf/simulated/floor/engine/insulated/vacuum, /area/toxins/mixing) -"tEq" = ( -/obj/structure/table, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/organ/external/tail/unathi{ - pixel_y = 8; - pixel_x = 8 - }, -/obj/item/organ/external/tail/tajaran{ - pixel_y = 6; - pixel_x = 6 - }, -/obj/item/clothing/head/kitty, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/maintenance/trading) "tEr" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -132910,22 +134411,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ - icon_state = "white" + dir = 1; + icon_state = "whitepurple"; + tag = "icon-whitepurple (NORTH)" }, /area/toxins/mixing) -"tFY" = ( -/obj/structure/sign/vacuum{ - pixel_x = -32; - icon_state = "space1" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/maintenance/tourist) "tGa" = ( /obj/machinery/computer/security{ network = list("SS13","Research Outpost","Mining Outpost") @@ -132951,28 +134441,6 @@ /obj/machinery/light, /turf/simulated/openspace, /area/hallway/primary/central/sw) -"tGs" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, -/obj/item/reagent_containers/iv_bag/blood/diona, -/obj/item/reagent_containers/iv_bag/blood/grey, -/obj/item/reagent_containers/iv_bag/blood/kidan, -/obj/item/reagent_containers/iv_bag/blood/nian, -/obj/item/reagent_containers/iv_bag/blood/skrell, -/obj/item/reagent_containers/iv_bag/blood/tajaran, -/obj/item/reagent_containers/iv_bag/blood/unathi, -/obj/item/reagent_containers/iv_bag/blood/vulpkanin, -/obj/item/reagent_containers/iv_bag/blood/wryn, -/obj/effect/decal/warning_stripes/blue/hollow, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whiteblue" - }, -/area/medical/cryo) "tGt" = ( /obj/structure/cable{ icon_state = "1-2" @@ -133007,20 +134475,6 @@ /obj/effect/decal/cleanable/blood, /turf/simulated/floor/plasteel, /area/maintenance/medroom) -"tGB" = ( -/obj/structure/curtain/open/shower/security{ - alpha = 255; - name = "backstage"; - pixel_x = 32; - anchored = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/carpet, -/area/library) "tGG" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, @@ -133347,6 +134801,19 @@ icon_state = "darkred" }, /area/security/securearmory) +"tIY" = ( +/obj/structure/curtain/open/shower/security{ + alpha = 255; + anchored = 1; + icon_state = "closed"; + name = "backstage"; + opacity = 1 + }, +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/trading) "tJe" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ @@ -133394,21 +134861,12 @@ }, /area/security/warden) "tJq" = ( -/obj/machinery/mineral/mint{ - input_dir = 4 - }, +/obj/structure/disposalpipe/trunk/multiz/down, /turf/simulated/floor/plasteel{ - dir = 9; + dir = 4; icon_state = "brown" }, /area/quartermaster/miningstorage) -"tJs" = ( -/obj/machinery/computer/med_data, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medrest) "tJu" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -133489,16 +134947,12 @@ /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/commercial) "tJU" = ( -/obj/structure/chair/stool/bar{ - icon = 'icons/obj/lighting.dmi'; - icon_state = "lantern-on"; - light_color = "#FFBF00"; - light_range = 6; - name = "lantern" - }, /obj/structure/sign/poster/official/nanotrasen_logo{ pixel_y = 32 }, +/obj/item/flashlight/lantern{ + on = 1 + }, /turf/simulated/floor/grass, /area/hallway/primary/central/nw) "tJV" = ( @@ -133545,6 +134999,31 @@ icon_state = "redfull" }, /area/security/main) +"tKm" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/table/glass, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/item/reagent_containers/food/drinks/mug/sci{ + pixel_x = 3; + pixel_y = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research) "tKn" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -133617,13 +135096,20 @@ icon_state = "neutral" }, /area/hallway/primary/central/se) +"tLm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_containers/food/snacks/grown/tomato, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/trading) "tLn" = ( /obj/machinery/firealarm{ dir = 1; name = "south fire alarm"; pixel_y = 26 }, -/obj/structure/chair/office, +/obj/structure/chair, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "dark" @@ -133646,6 +135132,17 @@ /obj/structure/bedsheetbin, /turf/simulated/floor/plasteel/freezer, /area/crew_quarters/toilet2) +"tLz" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27; + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) "tLB" = ( /obj/structure/girder, /obj/structure/cable{ @@ -133655,6 +135152,15 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, /area/maintenance/starboard) +"tLF" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -28 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "blue" + }, +/area/hallway/primary/fore) "tLG" = ( /obj/machinery/vending/security, /obj/effect/decal/warning_stripes/red/hollow, @@ -133704,8 +135210,24 @@ /obj/machinery/newscaster{ pixel_y = 32 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) +"tLT" = ( +/obj/machinery/door/window/westleft{ + dir = 2; + name = "Disposal"; + req_access = list(50) + }, +/obj/effect/decal/warning_stripes/south, +/obj/structure/sign/poster/random{ + pixel_x = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/sorting) "tMg" = ( /turf/simulated/openspace, /area/hallway/primary/central/south) @@ -133768,14 +135290,6 @@ "tMN" = ( /turf/simulated/wall, /area/quartermaster/delivery) -"tMV" = ( -/obj/machinery/conveyor/inverted{ - id = "garbage"; - dir = 10 - }, -/obj/effect/decal/warning_stripes/northwestcorner, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "tMX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -133807,6 +135321,9 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, +/obj/structure/railing/corner{ + dir = 4 + }, /turf/simulated/floor/wood, /area/maintenance/casino) "tNj" = ( @@ -133907,7 +135424,7 @@ }, /obj/item/reagent_containers/food/drinks/bottle/vodka/badminka{ pixel_x = 5; - pixel_y = -3 + pixel_y = 4 }, /turf/simulated/floor/plasteel{ icon_state = "darkred" @@ -133916,6 +135433,17 @@ "tNK" = ( /turf/simulated/floor/engine, /area/engineering/controlroom) +"tNL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/plasteel, +/area/security/permabrig) "tNR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -133992,18 +135520,6 @@ }, /turf/simulated/floor/plasteel, /area/storage/secure) -"tOg" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 1 - }, -/area/security/lobby) "tOl" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/carpet/blue, @@ -134107,9 +135623,6 @@ /turf/simulated/wall/r_wall, /area/quartermaster/delivery) "tPu" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/cable{ icon_state = "1-4" }, @@ -134122,8 +135635,26 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/simulated/floor/carpet/purple, /area/janitor) +"tPv" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/obj/machinery/camera{ + c_tag = "Prison Solitary Confinement 1"; + dir = 5; + network = list("Prison","SS13") + }, +/turf/simulated/floor/plating, +/area/security/permabrig) "tPz" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -134318,7 +135849,8 @@ pixel_x = -24 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "tQM" = ( @@ -134521,26 +136053,6 @@ }, /turf/simulated/floor/wood, /area/maintenance/casino) -"tSh" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/door/window/brigdoor{ - dir = 2; - name = "Creature Pen"; - req_access = list(47) - }, -/obj/machinery/door/poddoor/preopen{ - name = "Secure Creature Cell"; - id_tag = "xenosecure" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/toxins/xenobiology) "tSn" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -134560,18 +136072,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/medroom) -"tSp" = ( -/obj/structure/table, -/obj/item/security_voucher, -/obj/item/security_voucher{ - pixel_y = 2; - pixel_x = 2 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "red" - }, -/area/security/hos) "tSu" = ( /obj/machinery/vending/wallmed{ name = "Emergency NanoMed"; @@ -134606,32 +136106,6 @@ icon_state = "blue" }, /area/maintenance/medroom) -"tSC" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #2"; - id_tag = "xeno2" - }, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/toxins/xenobiology) -"tSD" = ( -/obj/structure/window/reinforced{ - color = "red"; - dir = 4 - }, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/machinery/flasher/portable, -/obj/effect/decal/warning_stripes/red/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "tSF" = ( /obj/structure/cable{ icon_state = "1-2" @@ -134643,16 +136117,6 @@ icon_state = "neutral" }, /area/hallway/spacebridge/comcar) -"tSH" = ( -/obj/machinery/power/apc{ - pixel_x = 28; - dir = 4 - }, -/obj/structure/cable, -/turf/simulated/floor/wood/fancy/light{ - color = "orange" - }, -/area/crew_quarters/captain/bedroom) "tSM" = ( /obj/structure/chair{ dir = 1 @@ -134666,28 +136130,6 @@ }, /turf/simulated/floor/plasteel, /area/engineering/mechanic_workshop/expedition) -"tSQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/item/radio/intercom{ - pixel_x = -32; - pixel_y = -10 - }, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) "tSU" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -134750,17 +136192,14 @@ /turf/simulated/wall/r_wall, /area/engineering/controlroom) "tTq" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/stairs{ + dir = 1; + layer = 2 }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "dark" + icon_state = "neutralfull" }, -/area/security/medbay) +/area/hallway/primary/central/west) "tTs" = ( /obj/machinery/hydroponics/soil, /obj/item/seeds/tower, @@ -134809,13 +136248,6 @@ /area/maintenance/fore2) "tTL" = ( /obj/effect/decal/warning_stripes/east, -/obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 8; - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 - }, /obj/machinery/camera{ c_tag = "Atmospherics Access"; dir = 8; @@ -134840,7 +136272,7 @@ dir = 8 }, /obj/effect/decal/cleanable/dust, -/obj/machinery/computer/library/checkout, +/obj/machinery/computer/library, /turf/simulated/floor/wood, /area/security/permabrig) "tUc" = ( @@ -134863,6 +136295,14 @@ }, /turf/simulated/floor/glass, /area/hallway/primary/fore) +"tUf" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/paramedic) "tUi" = ( /obj/structure/cable{ icon_state = "1-2" @@ -134939,6 +136379,17 @@ icon_state = "darkbluealt" }, /area/hallway/primary/command/west) +"tUE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/item/toy/crayon/spraycan, +/obj/item/assembly/prox_sensor{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/storage/pill_bottle/random_drug_bottle, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint2) "tUO" = ( /obj/machinery/newscaster{ pixel_x = -32 @@ -134954,7 +136405,9 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "tVb" = ( /obj/effect/decal/cleanable/dirt, @@ -134988,8 +136441,8 @@ /obj/machinery/door/airlock/public/glass{ name = "Walkway" }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" +/turf/simulated/floor/engine{ + slowdown = -0.3 }, /area/hallway/primary/central) "tVh" = ( @@ -135056,6 +136509,14 @@ icon_state = "blue" }, /area/hydroponics) +"tVy" = ( +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "garbage" + }, +/obj/effect/decal/warning_stripes/northwestcorner, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "tVA" = ( /obj/effect/turf_decal/number/number_2{ dir = 1; @@ -135121,7 +136582,9 @@ icon_state = "4-8" }, /obj/machinery/light, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "tWb" = ( /obj/effect/decal/cleanable/dust, @@ -135134,6 +136597,17 @@ }, /turf/simulated/floor/plating, /area/maintenance/fsmaint3) +"tWg" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xenosecure"; + name = "Secure Creature Cell" + }, +/obj/effect/spawner/window/reinforced/plasma, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) "tWh" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters{ @@ -135149,23 +136623,7 @@ icon_state = "0-4" }, /turf/simulated/floor/plating, -/area/medical/virology/lab) -"tWl" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, -/mob/living/simple_animal/bot/secbot/beepsky{ - name = "Officer Commandsky"; - desc = "It's Officer Commandsky! Here to rule and command." - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark" - }, -/area/hallway/primary/command/west) +/area/medical/virology) "tWr" = ( /obj/structure/table, /obj/item/phone{ @@ -135301,7 +136759,8 @@ icon_state = "2-8" }, /turf/simulated/floor/plasteel{ - icon_state = "white" + dir = 6; + icon_state = "whitepurple" }, /area/toxins/mixing) "tXf" = ( @@ -135396,27 +136855,9 @@ "tXL" = ( /turf/simulated/wall/r_wall, /area/turret_protected/ai) -"tXO" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/door/window/brigdoor{ - name = "Creature Pen"; - req_access = list(47) - }, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #4"; - id_tag = "xeno4" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/toxins/xenobiology) "tXY" = ( /obj/structure/closet/emcloset, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating/airless, /area/toxins/test_area) "tYb" = ( @@ -135488,19 +136929,14 @@ }, /area/hallway/spacebridge/somsec) "tYA" = ( -/obj/effect/decal/warning_stripes/northeast, -/obj/structure/table/glass, -/obj/item/radio/intercom{ - pixel_y = -28 - }, -/obj/item/reagent_containers/dropper/precision, -/obj/item/reagent_containers/dropper/precision, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/dropper, -/obj/machinery/atmospherics/unary/vent_pump/on{ +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ dir = 4 }, -/turf/simulated/floor/plasteel, +/obj/effect/decal/warning_stripes/red, +/turf/simulated/floor/plasteel{ + icon_state = "whitegreenfull" + }, /area/medical/virology/lab) "tYB" = ( /obj/structure/railing{ @@ -135578,15 +137014,17 @@ /turf/simulated/floor/carpet, /area/maintenance/livingcomplex) "tYQ" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/simulated/floor/plasteel{ - icon_state = "white" + icon_state = "purplefull" }, /area/toxins/launch) "tYT" = ( @@ -135764,6 +137202,17 @@ /obj/structure/closet/emcloset, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) +"uaE" = ( +/obj/structure/sign/directions/cargo{ + dir = 4; + pixel_x = 32; + pixel_y = -8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/hallway/primary/fore) "uaG" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -135909,7 +137358,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "ubx" = ( /obj/machinery/newscaster{ pixel_y = -30 @@ -136083,10 +137532,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "brown" - }, +/turf/simulated/floor/plasteel, /area/quartermaster/miningstorage) "ucQ" = ( /obj/structure/table, @@ -136143,6 +137589,25 @@ }, /turf/simulated/floor/plating, /area/security/permabrig) +"udr" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "Biohazard_medi"; + name = "Quarantine Lockdown" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "Virology1"; + layer = 3.2; + name = "Virology Shutters" + }, +/obj/effect/spawner/window/reinforced/polarized{ + id = "vir2" + }, +/turf/simulated/floor/plating, +/area/medical/virology) "udt" = ( /obj/effect/landmark/tiles/damageturf, /obj/effect/spawner/random_spawners/blood_20, @@ -136165,7 +137630,8 @@ }, /obj/machinery/hologram/holopad, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "udF" = ( @@ -136306,6 +137772,24 @@ dir = 1 }, /area/security/range) +"ueP" = ( +/obj/structure/table/reinforced, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/item/paper/tcommskey, +/obj/item/paper/monitorkey{ + pixel_x = 3; + pixel_y = 2 + }, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/turf/simulated/floor/glass, +/area/crew_quarters/chief) "ueW" = ( /obj/machinery/computer/shuttle/mining, /turf/simulated/floor/plasteel, @@ -136327,7 +137811,7 @@ /obj/machinery/airlock_sensor{ id_tag = "port5_sensor"; pixel_x = 25; - pixel_y = 5 + pixel_y = 3 }, /turf/simulated/floor/plating, /area/maintenance/asmaint) @@ -136404,10 +137888,6 @@ /turf/simulated/floor/plasteel/dark, /area/maintenance/starboardaux) "ufB" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_y = -28 - }, /obj/structure/showcase{ density = 0; dir = 1; @@ -136416,11 +137896,19 @@ name = "Cyborg Statue" }, /obj/machinery/light, +/obj/machinery/power/apc{ + cell_type = 5000; + name = "south bump Important Area"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "darkred" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "ufI" = ( /obj/machinery/power/apc{ dir = 4; @@ -136559,10 +138047,24 @@ }, /area/security/lobby) "ugL" = ( -/obj/structure/disposalpipe/segment, /obj/effect/decal/warning_stripes/yellow, +/obj/structure/disposalpipe/segment, +/obj/structure/railing/corner, /turf/simulated/floor/plasteel, /area/quartermaster/sorting) +"ugQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Hangar access"; + req_access = list(18,48,70,71) + }, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) "ugS" = ( /obj/structure/window/reinforced{ dir = 4 @@ -136713,6 +138215,13 @@ }, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) +"uhM" = ( +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "blue" + }, +/area/hallway/primary/fore) "uhX" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, @@ -136779,26 +138288,31 @@ icon_state = "whiteblue" }, /area/medical/surgery/south) -"uiu" = ( -/obj/structure/table/glass, -/obj/machinery/newscaster{ - pixel_x = -32 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/item/reagent_containers/spray/cleaner/janitor, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "dark" - }, -/area/civilian/barber) "uiv" = ( /turf/simulated/floor/plasteel{ dir = 8; icon_state = "purple" }, /area/hallway/primary/central/ne) +"uiK" = ( +/obj/effect/decal/warning_stripes/west, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light_switch{ + pixel_x = -26; + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/gravitygenerator) "uiS" = ( /obj/machinery/access_button{ command = "cycle_interior"; @@ -136900,9 +138414,7 @@ }, /area/engineering/engine) "ujr" = ( -/obj/machinery/newscaster{ - pixel_y = 32 - }, +/obj/machinery/station_map/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "blue" @@ -136962,16 +138474,9 @@ /turf/simulated/floor/plasteel, /area/toxins/mixing) "ujT" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "mining_internal"; - name = "mining conveyor" - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "brown" - }, +/turf/simulated/floor/plasteel, /area/quartermaster/miningstorage) "ukb" = ( /obj/effect/decal/warning_stripes/south, @@ -137077,6 +138582,7 @@ /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /obj/machinery/hologram/holopad, /obj/effect/turf_decal/box, +/obj/item/radio/beacon, /turf/simulated/floor/plasteel{ icon_state = "whitebluefull" }, @@ -137189,6 +138695,13 @@ tag = "icon-redfull (NORTHWEST)" }, /area/security/seceqstorage) +"umj" = ( +/obj/machinery/station_map/directional/east, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/hallway/primary/fore) "ump" = ( /obj/structure/window/reinforced{ dir = 4 @@ -137200,6 +138713,39 @@ /obj/machinery/portable_atmospherics/canister/sleeping_agent, /turf/simulated/floor/plating, /area/security/permabrig) +"umr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random_spawners/crate_spawner, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/maintenance/trading) +"umz" = ( +/obj/machinery/driver_button{ + id_tag = "toxinsdriver"; + pixel_x = 26; + pixel_y = -24 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/structure/cable/multiz{ + color = "#dd1010" + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/camera{ + c_tag = "Research Outpost Temporary Storage"; + dir = 1; + network = list("Research Outpost") + }, +/obj/item/twohanded/required/kirbyplants, +/turf/simulated/floor/plasteel{ + icon_state = "purplefull" + }, +/area/toxins/launch) "umD" = ( /obj/structure/chair/office/dark, /obj/structure/cable{ @@ -137279,7 +138825,7 @@ req_access = list(63) }, /obj/structure/window/reinforced, -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 4 }, /turf/simulated/floor/carpet, @@ -137308,6 +138854,26 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/hallway/primary/central/east) +"uni" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/officetoys, +/obj/item/flashlight/lamp/green{ + pixel_x = -3; + pixel_y = 13 + }, +/obj/machinery/door_control{ + id = "hopofficedoor"; + name = "Office Door"; + normaldoorcontrol = 1; + pixel_x = 6; + pixel_y = -2; + req_access = list(18) + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads) "unl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -137463,6 +139029,33 @@ }, /turf/simulated/floor/plating, /area/mimeoffice) +"uoq" = ( +/obj/structure/table/glass, +/obj/item/book/manual/sop_medical, +/obj/item/book/manual/sop_command{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue"; + tag = "icon-whiteblue (NORTH)" + }, +/area/medical/cmo) +"uox" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "NTRprivate"; + name = "Privacy Shutters" + }, +/obj/effect/spawner/window/reinforced/polarized{ + id = "ntrepprivate" + }, +/turf/simulated/floor/plating, +/area/ntrep) "uoz" = ( /turf/simulated/wall/rust, /area/maintenance/apmaint) @@ -137474,6 +139067,47 @@ icon_state = "darkgreen" }, /area/crew_quarters/fitness) +"uoJ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/machinery/door_control{ + id = "CMO Shutters"; + name = "CMO Privacy Shutters Control"; + pixel_x = -39; + pixel_y = 26 + }, +/obj/machinery/door_control{ + id = "Biohazard_medi"; + name = "Medbay Lockdown"; + pixel_x = -25; + pixel_y = 26 + }, +/obj/item/radio/intercom{ + name = "north station intercom (General)"; + pixel_x = -32; + pixel_y = 35 + }, +/turf/simulated/floor/carpet/blue, +/area/medical/cmo) +"uoM" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "Kitchen Dinner Windows"; + name = "Kitchen Shutters" + }, +/obj/machinery/door/window/westright{ + dir = 2; + name = "Kitchen"; + req_access = list(28) + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/crew_quarters/kitchen) "uoR" = ( /obj/structure/lattice, /obj/structure/window/reinforced{ @@ -137621,9 +139255,6 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/cable{ - icon_state = "2-8" - }, /obj/effect/turf_decal/caution/stand_clear, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -137701,7 +139332,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "urd" = ( @@ -137848,24 +139480,6 @@ }, /turf/space/openspace, /area/space) -"usc" = ( -/obj/effect/spawner/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "SKPP"; - dir = 8 - }, -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/simulated/floor/plating, -/area/bridge/checkpoint/south) "usf" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -137891,6 +139505,7 @@ dir = 4; pixel_x = -24 }, +/obj/machinery/telepad_cargo, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "brown" @@ -137928,24 +139543,9 @@ }, /area/medical/ward) "usy" = ( -/obj/structure/chair/office, +/obj/structure/chair, /turf/simulated/floor/wood, /area/crew_quarters/serviceyard) -"usA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/curtain/open/shower/security{ - alpha = 255; - name = "backstage"; - anchored = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/decal/cleanable/dust, -/turf/simulated/floor/wood, -/area/maintenance/backstage) "usE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -138075,15 +139675,27 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "utz" = ( -/obj/machinery/door/airlock{ - id_tag = "toilet2"; - name = "Toilet" +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" }, -/turf/simulated/floor/plasteel/freezer, -/area/crew_quarters/toilet2) +/area/hallway/primary/central/west) +"utD" = ( +/obj/machinery/camera{ + c_tag = "Medbay Suit Storage"; + dir = 8; + network = list("Medical","SS13") + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/cmostore) "utG" = ( /obj/structure/railing/corner, /turf/simulated/floor/glass/reinforced, @@ -138092,22 +139704,6 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/maintenance/banya) -"utP" = ( -/obj/structure/chair/office, -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 8 - }, -/obj/structure/sign/poster/official/random{ - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 1 - }, -/area/crew_quarters/courtroom) "utV" = ( /obj/machinery/mecha_part_fabricator/spacepod, /obj/structure/cable{ @@ -138132,25 +139728,6 @@ /obj/structure/lattice, /turf/space/openspace, /area/space) -"uud" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/flasher{ - pixel_y = 32; - pixel_x = 23 - }, -/obj/machinery/ai_slipper, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/tcommsat/chamber) "uug" = ( /obj/machinery/power/apc{ dir = 8; @@ -138165,6 +139742,19 @@ icon_state = "whiteblue" }, /area/medical/paramedic) +"uuh" = ( +/obj/structure/sign/directions/evac{ + pixel_y = -8 + }, +/obj/structure/sign/directions/security{ + dir = 1; + pixel_y = 8 + }, +/obj/structure/sign/directions/medical{ + dir = 1 + }, +/turf/simulated/wall, +/area/hallway/primary/fore) "uui" = ( /obj/item/radio/intercom{ name = "south station intercom (General)"; @@ -138217,17 +139807,13 @@ }, /area/quartermaster/office) "uuC" = ( -/obj/machinery/suit_storage_unit/brigmed{ - req_access = list(5) - }, -/obj/machinery/light{ - dir = 4 +/obj/structure/disposalpipe/segment{ + dir = 10 }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "dark" + dir = 1 }, -/area/security/medbay) +/area/security/processing) "uuH" = ( /obj/structure/closet/secure_closet/ntrep, /turf/simulated/floor/carpet/royalblue, @@ -138311,6 +139897,10 @@ icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, +/obj/item/poster/random_contraband{ + pixel_x = 1; + pixel_y = 6 + }, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) "uvI" = ( @@ -138422,24 +140012,6 @@ }, /turf/simulated/floor/plating, /area/security/securehallway) -"uwv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) "uwE" = ( /obj/structure/railing{ dir = 8 @@ -138545,17 +140117,6 @@ }, /turf/simulated/floor/plating, /area/library) -"uxu" = ( -/obj/item/candle{ - pixel_y = 4; - pixel_x = -9 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/table/wood/fancy/red, -/turf/simulated/floor/carpet/red, -/area/crew_quarters/theatre) "uxy" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/universal, @@ -138597,10 +140158,12 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -138744,6 +140307,24 @@ icon_state = "neutralfull" }, /area/atmos) +"uyS" = ( +/obj/structure/table/reinforced, +/obj/item/flashlight/sectaclight{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/flashlight/sectaclight{ + pixel_y = 0 + }, +/obj/item/flashlight/sectaclight{ + pixel_x = 2; + pixel_y = -2 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark" + }, +/area/security/securearmory) "uyY" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -138763,6 +140344,7 @@ name = "Труба на фильтрацию" }, /obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/spiderling_remains, /turf/simulated/floor/plating, /area/maintenance/atmospherics) "uzb" = ( @@ -138823,7 +140405,7 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /obj/structure/disposalpipe/junction{ @@ -138841,9 +140423,7 @@ dir = 6 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plasteel{ - icon_state = "browncorner" - }, +/turf/simulated/floor/plasteel, /area/quartermaster/miningstorage) "uzt" = ( /obj/structure/table, @@ -138881,16 +140461,14 @@ /turf/simulated/floor/glass, /area/crew_quarters/bar/atrium) "uAc" = ( -/obj/effect/decal/warning_stripes/blue/hollow, -/obj/structure/bed/roller, -/obj/machinery/iv_drip, -/obj/machinery/light{ - dir = 8 - }, /obj/machinery/firealarm{ dir = 4; pixel_x = -28 }, +/obj/structure/sink{ + dir = 8; + pixel_x = -12 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "dark" @@ -139029,10 +140607,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/asmaint2) -"uBa" = ( -/obj/structure/grille, -/turf/simulated/floor/plating, -/area/maintenance/tourist) "uBh" = ( /obj/structure/bookcase, /turf/simulated/floor/wood, @@ -139109,7 +140683,7 @@ /turf/simulated/floor/glass/reinforced, /area/quartermaster/office) "uCd" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /obj/effect/decal/cleanable/dirt, @@ -139264,12 +140838,22 @@ }, /turf/simulated/floor/carpet, /area/maintenance/casino) +"uCM" = ( +/obj/machinery/camera{ + c_tag = "Research Central Hallway"; + dir = 10; + network = list("Research","SS13") + }, +/turf/simulated/floor/plasteel{ + icon_state = "whitepurple"; + tag = "icon-whitepurple (WEST)" + }, +/area/medical/research) "uCN" = ( -/obj/effect/turf_decal/loading_area{ +/obj/structure/chair{ dir = 8 }, /turf/simulated/floor/plasteel{ - dir = 6; icon_state = "brown" }, /area/quartermaster/miningstorage) @@ -139414,6 +140998,8 @@ }, /area/bridge/meeting_room) "uEd" = ( +/obj/machinery/telepad_cargo, +/obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whiteblue"; @@ -139426,23 +141012,6 @@ icon_state = "cafeteria" }, /area/medical/research/restroom) -"uEi" = ( -/obj/machinery/door/window/brigdoor/southleft{ - base_state = "rightsecure"; - dir = 1; - icon_state = "rightsecure"; - req_access = list(63); - color = "red" - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" - }, -/area/security/evidence) "uEm" = ( /obj/effect/decal/cleanable/blood/tracks{ dir = 8 @@ -139498,6 +141067,25 @@ }, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/heads/hop) +"uEJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/sortjunction/reversed{ + dir = 8; + name = "Research Junction"; + sortType = 12 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research/nhallway) "uEQ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -139548,7 +141136,7 @@ dir = 8 }, /obj/effect/spawner/random_spawners/blood_5, -/obj/structure/chair/stool/holostool, +/obj/structure/chair/stool, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) "uFu" = ( @@ -139557,6 +141145,34 @@ icon_state = "neutral" }, /area/hallway/primary/central/south) +"uFw" = ( +/obj/structure/table, +/obj/machinery/requests_console{ + department = "Tech Storage"; + name = "Tech Storage Requests Console"; + pixel_y = -32 + }, +/obj/item/circuitboard/smes{ + pixel_x = -4; + pixel_y = -4 + }, +/obj/item/circuitboard/powermonitor{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/circuitboard/stationalert, +/obj/item/circuitboard/atmos_alert{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/circuitboard/thermomachine{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "caution" + }, +/area/storage/tech) "uFB" = ( /obj/structure/railing, /turf/simulated/floor/plasteel{ @@ -139791,13 +141407,25 @@ }, /area/hallway/primary/central/second/north) "uHe" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "darkredfull" }, /area/turret_protected/ai) +"uHg" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 1; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "red" + }, +/area/hallway/primary/central/second/west) "uHl" = ( /obj/structure/cable{ icon_state = "4-8" @@ -139913,6 +141541,20 @@ /obj/effect/decal/warning_stripes/north, /turf/simulated/floor/engine, /area/toxins/explab) +"uIg" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/window/reinforced, +/obj/structure/curtain/open/shower/security{ + alpha = 255; + anchored = 1; + icon_state = "closed"; + name = "backstage"; + opacity = 1 + }, +/turf/simulated/floor/plating, +/area/security/medbay) "uIi" = ( /obj/structure/cable{ icon_state = "4-8" @@ -140251,7 +141893,15 @@ /turf/simulated/floor/wood, /area/library/game_zone) "uKE" = ( -/obj/structure/disposalpipe/trunk/multiz, +/obj/structure/stairs{ + layer = 2 + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, /turf/simulated/floor/plasteel, /area/quartermaster/sorting) "uKI" = ( @@ -140267,6 +141917,23 @@ }, /turf/simulated/floor/wood/fancy/oak, /area/bridge/meeting_room) +"uKP" = ( +/obj/structure/table, +/obj/item/storage/ashtray/glass{ + pixel_x = 6; + pixel_y = 7 + }, +/obj/item/clothing/mask/cigarette/syndicate{ + pixel_x = 5; + pixel_y = 7 + }, +/obj/item/lighter{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/maintenance/secpost) "uKX" = ( /obj/structure/cable{ icon_state = "1-2" @@ -140533,6 +142200,18 @@ icon_state = "neutralfull" }, /area/hallway/primary/fore) +"uNf" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/security/interrogation) "uNg" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -140673,7 +142352,9 @@ codes_txt = "patrol;next_patrol=C11"; location = "C10" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "uOv" = ( /obj/structure/disposalpipe/segment{ @@ -140724,6 +142405,14 @@ /obj/effect/landmark/start/roboticist, /turf/simulated/floor/plasteel, /area/assembly/robotics) +"uPb" = ( +/obj/effect/turf_decal/siding/white, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/effect/spawner/random_spawners/rodent, +/turf/simulated/floor/glass/reinforced, +/area/security/permabrig) "uPc" = ( /obj/structure/window/reinforced{ dir = 4 @@ -140904,44 +142593,17 @@ }, /turf/simulated/floor/wood/fancy/oak, /area/bridge/meeting_room) -"uQH" = ( -/obj/effect/spawner/window/reinforced/polarized{ - id = "blueshieldofficewindows" - }, -/obj/machinery/door/poddoor/shutters{ - density = 0; - icon_state = "open"; - id_tag = "blueshield"; - name = "Privacy Shutters"; - opacity = 0; - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-2" +"uQR" = ( +/obj/structure/curtain/open/shower/security{ + alpha = 255; + anchored = 1; + icon_state = "closed"; + name = "backstage"; + opacity = 1 }, +/obj/effect/decal/cleanable/dust, /turf/simulated/floor/plating, -/area/blueshield) -"uQX" = ( -/obj/machinery/vending/wallmed{ - name = "Emergency NanoMed"; - pixel_y = 0; - pixel_x = 28 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "red" - }, -/area/security/brigstaff) -"uQY" = ( -/obj/machinery/door_control{ - id = "xeno6"; - name = "Containment Control"; - req_access = list(55); - pixel_x = 32 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel, -/area/toxins/xenobiology) +/area/maintenance/backstage) "uRd" = ( /obj/structure/table/glass, /obj/item/folder/white, @@ -141007,7 +142669,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "uRw" = ( /obj/structure/table/glass, /obj/item/reagent_containers/food/drinks/coffee{ @@ -141016,18 +142678,6 @@ }, /turf/simulated/floor/glass/reinforced, /area/hallway/secondary/exit) -"uRx" = ( -/obj/machinery/light_construct{ - dir = 8 - }, -/obj/structure/chair/sofa/left{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "yellowcorner"; - dir = 8 - }, -/area/maintenance/apmaint) "uRy" = ( /obj/machinery/door_timer/cell_1{ dir = 1; @@ -141042,6 +142692,16 @@ icon_state = "redcorner" }, /area/security/prison/cell_block/A) +"uRz" = ( +/obj/structure/curtain/open{ + anchored = 1; + color = "#222222" + }, +/obj/structure/table/reinforced, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/trading) "uRC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -141148,9 +142808,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -141164,6 +142821,9 @@ /obj/effect/turf_decal/siding/white{ dir = 1 }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/simulated/floor/glass, /area/crew_quarters/locker) "uSo" = ( @@ -141234,6 +142894,15 @@ }, /turf/simulated/floor/glass/reinforced, /area/engineering/aienter) +"uSV" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad" + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/delivery) "uSX" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -141254,6 +142923,14 @@ icon_state = "rampbottom" }, /area/hallway/primary/central/second/north) +"uTh" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 8; + layer = 2 + }, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/plating, +/area/medical/virology/lab) "uTj" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /obj/machinery/camera{ @@ -141309,6 +142986,25 @@ icon_state = "darkred" }, /area/security/evidence) +"uTT" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/table/wood, +/obj/item/folder/yellow, +/obj/item/folder/red{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/folder/blue{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/magistrateoffice) "uUb" = ( /obj/machinery/vending/coffee, /obj/effect/decal/cleanable/dust, @@ -141385,7 +143081,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "uUM" = ( @@ -141452,7 +143149,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "uVn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -141521,46 +143218,6 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/toxins/explab) -"uVH" = ( -/obj/machinery/autolathe, -/obj/machinery/door/window/brigdoor{ - id = "Autolathe"; - name = "Autolathe Access"; - req_access = list(47); - dir = 8 - }, -/obj/item/stack/sheet/metal{ - amount = 10 - }, -/obj/item/stack/sheet/glass{ - amount = 10 - }, -/obj/machinery/door/firedoor, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/door/poddoor/shutters{ - density = 0; - dir = 8; - icon_state = "open"; - id_tag = "researchdesk1"; - name = "Research Desk Shutters"; - opacity = 0 - }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "Biohazard"; - name = "Quarantine Lockdown"; - opacity = 0 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/toxins/lab) "uVI" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, @@ -141647,6 +143304,28 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/heads/hop) +"uWk" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/structure/rack/gunrack, +/obj/machinery/door/window{ + color = "red"; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/gun/projectile/shotgun/riot{ + pixel_x = -6 + }, +/obj/item/gun/projectile/shotgun/riot{ + pixel_x = -3 + }, +/obj/item/gun/projectile/shotgun/riot, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "uWp" = ( /obj/structure/cable{ icon_state = "4-8" @@ -141691,7 +143370,6 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -141777,6 +143455,28 @@ icon_state = "whitebluefull" }, /area/medical/biostorage) +"uXj" = ( +/obj/structure/chair/sofa/corp/right{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/reception) +"uXp" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 4 + }, +/obj/effect/turf_decal/number/number_2{ + dir = 1; + pixel_x = -6; + pixel_y = -10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/lounge) "uXt" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, @@ -141905,7 +143605,8 @@ icon_state = "1-2" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "uYm" = ( @@ -141943,6 +143644,32 @@ dir = 1 }, /area/quartermaster/office) +"uYs" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/landmark/start/doctor, +/obj/machinery/door_control{ + desc = "A remote control switch for the medbay foyer."; + id = "MedbayFoyerPort"; + name = "Medbay Doors Control"; + normaldoorcontrol = 1; + pixel_x = 26; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/medical/reception) "uYu" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -142089,14 +143816,6 @@ icon_state = "darkred" }, /area/turret_protected/ai) -"uZg" = ( -/obj/machinery/door/window/eastleft{ - dir = 2; - req_access = list(3,4); - name = "Forensic laboratory" - }, -/turf/simulated/floor/wood, -/area/security/detectives_office) "uZh" = ( /obj/structure/sign/directions/evac{ pixel_y = -8 @@ -142169,7 +143888,7 @@ dir = 4 }, /obj/item/reagent_containers/food/drinks/shaker, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "uZF" = ( /obj/structure/disposalpipe/segment{ @@ -142273,13 +143992,11 @@ /area/engineering/mechanic_workshop/hangar) "vat" = ( /obj/structure/disposalpipe/segment, -/obj/item/radio/intercom{ - pixel_x = -28 - }, /obj/effect/turf_decal{ dir = 8; icon_state = "golden_stripes" }, +/obj/machinery/station_map/directional/west, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -142291,6 +144008,16 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/crew_quarters/toilet3) +"vaE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_construct{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/maintenance/apmaint) "vaF" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -142391,6 +144118,13 @@ icon_state = "arrival" }, /area/hallway/secondary/entry) +"vbw" = ( +/obj/machinery/station_map/engineering/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engineering/break_room) "vbx" = ( /obj/effect/decal/warning_stripes/northwest, /turf/simulated/floor/plasteel{ @@ -142445,7 +144179,9 @@ /obj/effect/turf_decal/siding/white/end{ color = "#444444" }, -/turf/simulated/floor/glass, +/turf/simulated/floor/glass{ + slowdown = -0.3 + }, /area/hallway/primary/central) "vbL" = ( /obj/machinery/door/airlock/bananium{ @@ -142715,6 +144451,16 @@ }, /turf/simulated/floor/engine, /area/engineering/supermatter) +"vdg" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark" + }, +/area/quartermaster/storage) "vdh" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -142740,6 +144486,17 @@ "vdo" = ( /turf/simulated/wall, /area/hallway/primary/command/east) +"vdp" = ( +/obj/machinery/light_switch{ + name = "north bump"; + pixel_x = 24; + pixel_y = -24 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue"; + tag = "icon-whiteblue" + }, +/area/medical/medrest) "vdq" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -142777,10 +144534,23 @@ pixel_y = 32 }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "brown" + dir = 1 }, /area/quartermaster/lobby) +"vdW" = ( +/obj/structure/sign/directions/cargo{ + dir = 4 + }, +/obj/structure/sign/directions/engineering{ + dir = 1; + pixel_y = -8 + }, +/obj/structure/sign/directions/medical{ + dir = 1; + pixel_y = 8 + }, +/turf/simulated/wall, +/area/crew_quarters/serviceyard) "vdY" = ( /obj/machinery/power/apc{ cell_type = 5000; @@ -142857,12 +144627,12 @@ "vep" = ( /obj/effect/decal/warning_stripes/blue/hollow, /obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, /obj/machinery/light{ dir = 8 }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "dark" @@ -142899,15 +144669,6 @@ icon_state = "darkbluealt" }, /area/hallway/primary/central/second/north) -"veK" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay2) "veL" = ( /obj/structure/kitchenspike, /obj/effect/decal/cleanable/dirt, @@ -142987,24 +144748,12 @@ /turf/simulated/floor/grass, /area/crew_quarters/serviceyard) "vfv" = ( -/obj/structure/toilet{ - pixel_y = 19 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/door_control{ - desiredstate = 1; - id = "toilet2"; - name = "Toilet Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4; - pixel_x = 25 +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + icon_state = "red" }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/effect/landmark/start/civilian, -/turf/simulated/floor/plasteel/freezer, -/area/crew_quarters/toilet2) +/area/hallway/primary/central/second/west) "vfx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -143183,15 +144932,6 @@ /obj/effect/decal/warning_stripes/southwestcorner, /turf/simulated/floor/plasteel/airless, /area/toxins/test_area) -"vhE" = ( -/obj/machinery/conveyor{ - id = "QMLoad"; - dir = 6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "brown" - }, -/area/quartermaster/delivery) "vhM" = ( /obj/structure/flora/junglebush/b, /turf/simulated/floor/grass, @@ -143500,8 +145240,7 @@ }, /area/medical/genetics) "vkn" = ( -/obj/machinery/telepad_cargo, -/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -143598,6 +145337,20 @@ dir = 1 }, /area/security/processing) +"vld" = ( +/obj/structure/table/wood, +/obj/item/clothing/mask/cigarette/rollie{ + pixel_y = 9 + }, +/obj/item/clothing/mask/cigarette/rollie{ + pixel_x = 9; + pixel_y = 3 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/maintenance/trading) "vli" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -143640,19 +145393,9 @@ "vls" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/cobweb_right_frequent, +/obj/machinery/slot_machine, /turf/simulated/floor/plating, /area/maintenance/tourist) -"vlt" = ( -/obj/structure/chair/sofa/right{ - dir = 8; - color = "#85130b" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/wood, -/area/maintenance/backstage) "vlu" = ( /obj/structure/grille/broken, /obj/effect/decal/cleanable/blood/tracks{ @@ -143700,12 +145443,16 @@ /obj/machinery/computer/guestpass{ pixel_y = 32 }, +/obj/structure/reagent_dispensers/watertank/high, +/obj/item/reagent_containers/glass/bucket, +/obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "green" }, /area/hydroponics) "vlM" = ( +/obj/structure/flora/ausbushes/lavendergrass, /obj/item/hatchet, /obj/effect/spawner/random_spawners/rodent, /turf/simulated/floor/grass, @@ -143720,6 +145467,16 @@ tag = "icon-whitepurple (WEST)" }, /area/medical/research/nhallway) +"vlR" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/carpet/royalblack, +/area/crew_quarters/courtroom) "vme" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -143727,27 +145484,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/fore) -"vmf" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/mob/living/simple_animal/bot/secbot/beepsky{ - name = "Officer Leftsky"; - desc = "It's Officer Leftsky! Powered by a potato and a shot of whiskey." - }, -/turf/simulated/floor/plasteel{ - dir = 1 - }, -/area/security/lobby) "vmg" = ( /obj/machinery/atmospherics/pipe/multiz, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -143799,6 +145535,19 @@ icon_state = "red" }, /area/security/range) +"vmM" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen, +/obj/item/lighter/zippo/ce{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/effect/turf_decal/siding/white{ + dir = 5 + }, +/turf/simulated/floor/glass, +/area/crew_quarters/chief) "vmX" = ( /obj/machinery/shower{ dir = 4; @@ -143844,10 +145593,10 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 + dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "white" + icon_state = "whitepurplecorner" }, /area/toxins/mixing) "vnn" = ( @@ -143937,9 +145686,16 @@ icon_state = "yellow" }, /area/engineering/engine) +"vnH" = ( +/obj/machinery/light_switch{ + pixel_x = -24 + }, +/turf/simulated/floor/carpet/black, +/area/chapel/main) "vnM" = ( /obj/structure/stairs{ - dir = 4 + dir = 4; + layer = 2 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -144009,19 +145765,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/apmaint) -"vot" = ( -/obj/structure/table/wood/fancy/royalblack, -/obj/item/clothing/under/fluff/soviet_casual_uniform, -/obj/item/clothing/under/fluff/soviet_casual_uniform{ - pixel_y = 4; - pixel_x = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark"; - tag = "icon-vault (NORTHEAST)" - }, -/area/crew_quarters/theatre) "vou" = ( /obj/machinery/light{ dir = 1; @@ -144156,9 +145899,6 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/structure/cable{ icon_state = "2-4" }, @@ -144168,6 +145908,11 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "red" @@ -144196,17 +145941,6 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hop) -"vqC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" - }, -/turf/simulated/floor/plasteel{ - icon_state = "yellowcorner"; - dir = 8 - }, -/area/maintenance/apmaint) "vqI" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -144242,6 +145976,8 @@ /obj/structure/closet/secure_closet/hos, /obj/effect/decal/warning_stripes/southeast, /obj/item/clothing/under/fluff/soviet_casual_uniform, +/obj/item/clothing/suit/armor/hos/alt, +/obj/item/clothing/head/beret/solgov/command/elite, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "dark" @@ -144317,7 +146053,7 @@ dir = 4; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "vsi" = ( /obj/structure/cable, /obj/machinery/power/apc{ @@ -144347,23 +146083,6 @@ icon_state = "podfloor_dark" }, /area/engineering/controlroom) -"vsz" = ( -/obj/effect/spawner/window/reinforced/polarized{ - id = "blueshieldofficewindows" - }, -/obj/machinery/door/poddoor/shutters{ - density = 0; - icon_state = "open"; - id_tag = "blueshield"; - name = "Privacy Shutters"; - opacity = 0; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/simulated/floor/plating, -/area/blueshield) "vsA" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -144380,7 +146099,8 @@ /area/maintenance/casino) "vsB" = ( /obj/structure/stairs{ - dir = 1 + dir = 1; + layer = 2 }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -144438,17 +146158,17 @@ /turf/simulated/floor/wood, /area/crew_quarters/courtroom) "vte" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/xeno, -/obj/structure/cable/multiz{ - color = "#dd1010" - }, -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" +/obj/structure/lattice/catwalk, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "vir_maint2_airlock"; + name = "exterior access button"; + pixel_x = 24; + pixel_y = 24 }, -/turf/simulated/floor/plating, -/area/maintenance/xenozoo) +/turf/space, +/area/space) "vtf" = ( /obj/structure/cable{ icon_state = "1-2" @@ -144493,10 +146213,13 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "vts" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -144513,22 +146236,45 @@ icon_state = "whiteblue" }, /area/medical/cmo) +"vtz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) "vtK" = ( /turf/simulated/floor/plasteel/grimy, /area/crew_quarters/bar) "vtN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/universal, -/obj/machinery/door/airlock/medical{ - name = "Virology"; - req_access = list(39) - }, /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/disposalpipe/segment{ - invisibility = 101 +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/camera{ + c_tag = "Virology"; + dir = 8; + network = list("Medical","SS13") + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" }, -/turf/simulated/floor/plating, /area/medical/virology/lab) "vtS" = ( /turf/simulated/wall, @@ -144587,6 +146333,19 @@ icon_state = "neutralfull" }, /area/crew_quarters/toilet4) +"vuA" = ( +/obj/structure/table/wood, +/obj/item/lipstick, +/obj/item/lipstick/lime{ + pixel_y = 4 + }, +/obj/item/lipstick/black{ + pixel_x = -6; + pixel_y = -1 + }, +/obj/effect/decal/cleanable/dust, +/turf/simulated/floor/wood, +/area/maintenance/backstage) "vuB" = ( /obj/structure/sign/directions/floor/alt{ dir = 8; @@ -144608,6 +146367,7 @@ /obj/machinery/light/small{ dir = 1 }, +/obj/effect/spawner/random_spawners/crate_spawner, /turf/simulated/floor/plating, /area/maintenance/xenozoo) "vuI" = ( @@ -144624,7 +146384,7 @@ dir = 5; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "vuR" = ( /obj/machinery/light{ dir = 1; @@ -144642,6 +146402,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/decal/cleanable/dirt, +/obj/item/caution, /turf/simulated/floor/plating, /area/maintenance/fsmaint) "vuU" = ( @@ -144699,6 +146460,13 @@ "vvd" = ( /turf/simulated/wall/r_wall, /area/security/medbay) +"vvg" = ( +/obj/machinery/station_map/directional/south, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/crew_quarters/serviceyard) "vvh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -144767,11 +146535,14 @@ }, /obj/machinery/airlock_sensor{ id_tag = "ex_sensor"; - pixel_y = -24 + pixel_y = 35 }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, +/obj/structure/sign/vacuum{ + pixel_y = -32 + }, /turf/simulated/floor/engine/insulated, /area/maintenance/apmaint) "vvH" = ( @@ -144860,19 +146631,6 @@ /obj/structure/flora/ausbushes/ywflowers/hell, /turf/simulated/floor/grass, /area/hallway/secondary/exit) -"vwz" = ( -/obj/machinery/atmospherics/unary/portables_connector{ - dir = 8 - }, -/obj/effect/decal/warning_stripes/east, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "neutral" - }, -/area/toxins/mixing) "vwC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -144883,8 +146641,10 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/disposalpipe/sortjunction/reversed{ + dir = 8; + name = "Brig Physician"; + sortType = 24 }, /turf/simulated/floor/plasteel{ dir = 4; @@ -144920,6 +146680,13 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint6) +"vwP" = ( +/obj/machinery/station_map/directional/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/hallway/primary/central/east) "vwU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -145050,6 +146817,27 @@ }, /turf/simulated/floor/wood/dark, /area/crew_quarters/bar/atrium) +"vxv" = ( +/obj/machinery/door/window{ + dir = 2; + req_access = list(20) + }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet, +/area/crew_quarters/captain/bedroom) +"vxC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno1"; + name = "Creature Cell #1" + }, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/toxins/xenobiology) "vxG" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -145112,12 +146900,6 @@ dir = 4; do_not_delete_me = 1 }, -/obj/structure/curtain/open/shower/security{ - alpha = 255; - name = "backstage"; - anchored = 1; - pixel_y = 32 - }, /obj/item/trash/raisins, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dust, @@ -145149,25 +146931,14 @@ /turf/simulated/floor/glass/reinforced, /area/quartermaster/qm) "vyk" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/machinery/power/apc{ - dir = 1; - pixel_y = 26 - }, -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2" +/obj/machinery/atmospherics/binary/valve{ + dir = 4 }, -/turf/simulated/floor/plasteel{ - icon_state = "white" +/obj/structure/sign/biohazard{ + pixel_y = 32 }, -/area/medical/virology) +/turf/simulated/floor/plating, +/area/medical/virology/lab) "vyp" = ( /obj/effect/turf_decal/box, /obj/machinery/hologram/holopad, @@ -145276,7 +147047,7 @@ /turf/simulated/floor/plating, /area/maintenance/fpmaint) "vzu" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 4 }, /turf/simulated/floor/wood/fancy/light, @@ -145297,6 +147068,24 @@ icon_state = "darkbluecornersalt" }, /area/crew_quarters/fitness) +"vzE" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "SKPP" + }, +/obj/structure/cable{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/bridge/checkpoint/south) "vzP" = ( /obj/structure/flora/ausbushes/ppflowers, /obj/structure/flora/ausbushes/ywflowers, @@ -145319,7 +147108,7 @@ icon_state = "4-8" }, /turf/simulated/floor/plasteel{ - icon_state = "red" + icon_state = "redcorner" }, /area/security/seceqstorage) "vzX" = ( @@ -145344,6 +147133,24 @@ icon_state = "dark" }, /area/turret_protected/ai_upload) +"vAh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "blue" + }, +/area/hallway/primary/fore) "vAi" = ( /obj/machinery/atmospherics/meter{ id = "dloop_atm_meter"; @@ -145358,6 +147165,11 @@ icon_state = "neutralfull" }, /area/atmos) +"vAn" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/ausbushes/fernybush, +/turf/simulated/floor/grass, +/area/maintenance/garden) "vAs" = ( /obj/machinery/status_display{ pixel_y = -32 @@ -145387,10 +147199,22 @@ /obj/item/stack/sheet/plasteel{ amount = 10 }, +/obj/item/lightreplacer, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/security/seceqstorage) +"vBa" = ( +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_x = 28; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "red" + }, +/area/security/brigstaff) "vBj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -145441,22 +147265,6 @@ dir = 1 }, /area/security/securehallway) -"vBG" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "red" - }, -/area/hallway/primary/central/second/west) "vBH" = ( /obj/structure/cable{ icon_state = "1-2" @@ -145493,9 +147301,6 @@ /obj/machinery/light{ dir = 8 }, -/obj/structure/sign/poster/official/obey{ - pixel_x = -32 - }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "red" @@ -145746,19 +147551,6 @@ icon_state = "green" }, /area/hallway/secondary/exit) -"vDT" = ( -/obj/structure/sign/directions/evac{ - pixel_y = -8 - }, -/obj/structure/sign/directions/cargo{ - dir = 4 - }, -/obj/structure/sign/directions/security{ - pixel_y = 8; - dir = 1 - }, -/turf/simulated/wall, -/area/hallway/primary/central) "vDU" = ( /obj/effect/turf_decal/siding/red{ dir = 10 @@ -145812,7 +147604,7 @@ dir = 4; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "vEi" = ( /obj/structure/grille/broken, /obj/machinery/light/small{ @@ -145820,6 +147612,20 @@ }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"vEk" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/westright{ + dir = 2; + name = "Mechanic's Desk"; + req_access = list(70) + }, +/obj/machinery/cell_charger{ + pixel_x = -1; + pixel_y = 2 + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel, +/area/engineering/mechanic_workshop) "vEv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -145962,6 +147768,27 @@ }, /turf/simulated/floor/plating, /area/maintenance/gambling_den) +"vFy" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/machinery/camera{ + c_tag = "Second Floor Departure Lounge center-south"; + dir = 8 + }, +/obj/effect/turf_decal/siding/wideplating/light{ + dir = 10 + }, +/obj/item/twohanded/required/kirbyplants{ + pixel_x = 2; + pixel_y = 7 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkgreenfull" + }, +/area/hallway/secondary/exit) "vFz" = ( /obj/structure/cable{ icon_state = "4-8" @@ -145991,7 +147818,9 @@ codes_txt = "patrol;next_patrol=C2"; location = "C1" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "vFJ" = ( /obj/structure/cable{ @@ -146021,14 +147850,10 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/simulated/floor/engine, -/area/hallway/primary/central) -"vFR" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/simulated/floor/engine{ + slowdown = -0.3 }, -/turf/simulated/floor/plasteel, -/area/quartermaster/sorting) +/area/hallway/primary/central) "vFV" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 6 @@ -146143,6 +147968,22 @@ icon_state = "cafeteria" }, /area/crew_quarters/kitchen) +"vGY" = ( +/obj/structure/table/wood, +/obj/item/clothing/mask/cigarette/cigar/cohiba{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/clothing/mask/cigarette/cigar/cohiba{ + pixel_x = -4; + pixel_y = 9 + }, +/obj/item/clothing/mask/cigarette/cigar/cohiba{ + pixel_x = 2; + pixel_y = 4 + }, +/turf/simulated/floor/carpet/royalblack, +/area/bridge/meeting_room) "vGZ" = ( /obj/structure/table, /obj/machinery/light/small{ @@ -146165,7 +148006,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkredfull" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "vHo" = ( /obj/machinery/power/supermatter_shard{ anchored = 1; @@ -146284,6 +148125,21 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"vIe" = ( +/obj/machinery/computer/security, +/obj/machinery/camera{ + c_tag = "Departure Lounge Security Checkpoint West"; + dir = 4; + network = list("SS13","Security") + }, +/obj/item/radio/intercom{ + pixel_x = -26 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/checkpoint/south) "vIj" = ( /obj/structure/filingcabinet/chestdrawer, /turf/simulated/floor/plasteel{ @@ -146331,20 +148187,37 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/mineral/plastitanium, /area/maintenance/chapel) +"vIz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/camera{ + c_tag = "Arrivals Lobby West Hallway"; + dir = 5 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "blue" + }, +/area/hallway/primary/fore) "vID" = ( /turf/simulated/floor/plating, /area/engineering/engine) -"vIG" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/item/storage/belt/medical, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/regular, -/obj/item/reagent_containers/hypospray/safety, +"vIN" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/obj/machinery/camera{ + c_tag = "Briefing Room South"; + dir = 1; + network = list("SS13","Security") + }, /turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "whiteblue" + icon_state = "red" }, -/area/medical/biostorage) +/area/security/main) "vIU" = ( /obj/structure/window/reinforced{ dir = 4 @@ -146503,7 +148376,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ - icon_state = "purplefull" + dir = 4; + icon_state = "whitepurple" }, /area/toxins/mixing) "vKe" = ( @@ -146626,6 +148500,15 @@ /obj/structure/flora/ausbushes/genericbush, /turf/simulated/floor/grass, /area/hallway/secondary/exit) +"vKC" = ( +/obj/effect/turf_decal/siding/white/end{ + color = "#444444"; + dir = 8 + }, +/turf/simulated/floor/glass{ + slowdown = -0.3 + }, +/area/hallway/primary/central) "vKG" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -146654,7 +148537,7 @@ /obj/effect/decal/cleanable/blood/tracks{ layer = 3 }, -/obj/structure/chair/office, +/obj/structure/chair, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 1 @@ -146737,6 +148620,17 @@ icon_state = "grimy" }, /area/chapel/office) +"vLJ" = ( +/obj/structure/sign/directions/security{ + dir = 8; + pixel_y = 8 + }, +/obj/structure/sign/directions/medical, +/obj/structure/sign/directions/evac{ + pixel_y = -8 + }, +/turf/simulated/wall, +/area/medical/morgue) "vLO" = ( /obj/structure/railing, /obj/structure/flora/ausbushes/leafybush, @@ -146879,15 +148773,23 @@ dir = 8 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "vMH" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/simulated/floor/wood, -/area/hallway/primary/central/west) +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/security/processing) "vMI" = ( /obj/structure/cable{ icon_state = "1-2" @@ -146898,29 +148800,14 @@ dir = 2 }, /turf/simulated/floor/plasteel{ - icon_state = "white" + dir = 4; + icon_state = "whitepurple" }, /area/toxins/mixing) "vML" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/maintenance/starboardsolar) -"vMX" = ( -/obj/machinery/door_control{ - id = "janitorprivatshutters"; - name = "Janitor Private Shutters Control"; - pixel_y = -26; - req_access = list(26); - pixel_x = 26 - }, -/obj/machinery/light_switch{ - dir = 1; - name = "south bump"; - pixel_y = -35; - pixel_x = 26 - }, -/turf/simulated/floor/carpet/purple, -/area/janitor) "vNc" = ( /turf/simulated/wall, /area/hallway/secondary/exit/maint) @@ -147013,7 +148900,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "vNO" = ( /obj/structure/window/reinforced{ dir = 1 @@ -147120,20 +149007,31 @@ /obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/floor/plating, /area/security/permabrig) -"vOj" = ( -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ +"vOh" = ( +/obj/structure/table/wood, +/obj/item/clothing/glasses/hud/hydroponic, +/obj/item/clothing/mask/cigarette/rollie, +/obj/item/storage/fancy/cigarettes{ + pixel_x = -11; + pixel_y = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/radio/intercom{ - pixel_y = 0; - pixel_x = 26 +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-4" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 1 }, -/area/security/seceqstorage) +/area/maintenance/trading) "vOk" = ( /obj/effect/spawner/random_spawners/rodent, /turf/simulated/floor/plating, @@ -147241,26 +149139,14 @@ }, /turf/simulated/floor/plasteel, /area/quartermaster/miningstorage) -"vOX" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "vault" - }, -/area/turret_protected/aisat) "vOY" = ( /obj/effect/turf_decal/tile/blue, /obj/structure/window/reinforced{ dir = 8 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "vPb" = ( @@ -147283,20 +149169,6 @@ icon_state = "darkbluecornersalt" }, /area/crew_quarters/fitness) -"vPj" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin{ - pixel_y = 6; - pixel_x = -2 - }, -/obj/item/pen{ - pixel_y = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 4 - }, -/area/toxins/lab) "vPp" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -147343,7 +149215,7 @@ }, /area/hallway/primary/fore) "vPZ" = ( -/obj/structure/chair/office, +/obj/structure/chair, /turf/simulated/floor/plasteel, /area/hallway/spacebridge/somsec) "vQc" = ( @@ -147354,16 +149226,8 @@ /area/hallway/primary/command/east) "vQd" = ( /obj/machinery/message_server, -/obj/machinery/power/apc{ - cell_type = 5000; - name = "south bump Important Area"; - pixel_y = -24 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, /turf/simulated/floor/redgrid, -/area/tcommsat/chamber) +/area/tcommsat/server) "vQh" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -147388,14 +149252,15 @@ }, /area/medical/medbay) "vQu" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/machinery/camera{ + c_tag = "Second Floor Central Ring West Hallway 2"; + dir = 5 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" }, -/turf/simulated/floor/wood, -/area/hallway/primary/central/west) +/area/hallway/primary/central/second/west) "vQE" = ( /turf/simulated/floor/plasteel{ dir = 5; @@ -147455,11 +149320,11 @@ }, /area/crew_quarters/fitness) "vRd" = ( -/obj/item/twohanded/required/kirbyplants, /obj/machinery/alarm{ dir = 1; pixel_y = -24 }, +/obj/structure/table, /turf/simulated/floor/plasteel{ icon_state = "redfull"; tag = "icon-redfull (NORTHWEST)" @@ -147511,6 +149376,63 @@ icon_state = "dark" }, /area/atmos) +"vRO" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/machinery/door/window{ + color = "red"; + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/ammo_box/magazine/wt550m9, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/item/ammo_box/magazine/wt550m9{ + pixel_x = 6; + pixel_y = -6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) +"vRR" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters{ + dir = 2; + id_tag = "kitchen_abandoned"; + name = "Abandoned Kitchen Shutters" + }, +/obj/machinery/door/window{ + dir = 1; + name = "Kitchen"; + req_access = list(28) + }, +/turf/simulated/floor/plasteel{ + icon_state = "stage_bleft" + }, +/area/maintenance/cafeteria) "vRX" = ( /obj/item/radio/intercom{ pixel_x = 26; @@ -147535,6 +149457,23 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/detectives_office) +"vSl" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/ears/earmuffs, +/obj/item/clothing/ears/earmuffs{ + pixel_y = 4 + }, +/obj/machinery/door/window/brigdoor{ + color = "red"; + dir = 2; + name = "Security Reception"; + req_access = list(1) + }, +/turf/simulated/floor/plasteel{ + icon_state = "redfull"; + tag = "icon-redfull (NORTHWEST)" + }, +/area/security/range) "vSm" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -147593,25 +149532,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/security/permabrig) -"vSS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/sortjunction/reversed{ - dir = 8; - sortType = 12; - name = "Research Junction" - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/research/nhallway) "vST" = ( /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/maintenance, @@ -147627,18 +149547,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/trading) -"vSU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/warning_stripes/west, -/obj/item/weldingtool/hugetank{ - pixel_y = -3; - pixel_x = 6 - }, -/turf/simulated/floor/plasteel{ - dir = 0; - icon_state = "red" - }, -/area/maintenance/secpost) "vSW" = ( /obj/structure/sign/securearea, /turf/simulated/wall/r_wall, @@ -147903,22 +149811,10 @@ location = "C3" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) -"vUN" = ( -/obj/structure/chair/comfy/teal{ - dir = 4 - }, -/obj/item/radio/intercom{ - pixel_x = -32; - pixel_y = -10 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medrest) "vUP" = ( /obj/structure/table/reinforced, /obj/item/clothing/glasses/meson/sunglasses, @@ -148004,49 +149900,6 @@ }, /turf/simulated/floor/plasteel, /area/security/permabrig) -"vVc" = ( -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = 4; - pixel_y = -4 - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/ammo_box/magazine/wt550m9, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/ammo_box/magazine/wt550m9{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 1 - }, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/machinery/door/window{ - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "vVd" = ( /obj/machinery/light{ dir = 1; @@ -148091,7 +149944,9 @@ /obj/structure/window/reinforced{ dir = 1 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "vVp" = ( /obj/structure/sign/directions/medical{ @@ -148111,6 +149966,40 @@ /obj/structure/flora/grass/jungle, /turf/simulated/floor/grass, /area/crew_quarters/fitness) +"vVw" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/button/windowtint{ + id = "ntrepprivate"; + name = "Door tint control"; + pixel_x = 24; + pixel_y = -24 + }, +/obj/machinery/door_control{ + id = "NTRprivate"; + name = "Privacy Shutters Control"; + pixel_x = 26; + pixel_y = -33; + req_access = list(73) + }, +/turf/simulated/floor/carpet/black, +/area/ntrep) +"vVy" = ( +/obj/structure/stairs{ + layer = 2 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/casino) "vVC" = ( /obj/effect/decal/warning_stripes/north, /turf/simulated/floor/plasteel{ @@ -148388,7 +150277,7 @@ /obj/machinery/airlock_sensor{ id_tag = "engineering_east_sensor"; pixel_x = -25; - pixel_y = 10 + pixel_y = 7 }, /turf/simulated/floor/plasteel{ dir = 6; @@ -148412,11 +150301,13 @@ /turf/simulated/floor/plating, /area/maintenance/apmaint) "vXK" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "red" + dir = 1 }, /area/hallway/primary/central/second/west) "vXR" = ( @@ -148464,6 +150355,9 @@ "vYf" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/blood_5, +/obj/machinery/light/small{ + dir = 4 + }, /turf/simulated/floor/carpet/royalblack, /area/maintenance/fsmaint2) "vYg" = ( @@ -148489,13 +150383,17 @@ /turf/simulated/floor/plating, /area/maintenance/xenozoo) "vYv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/requests_console{ department = "Cargo Bay"; departmentType = 2; name = "Cargo Requests Console"; pixel_x = -32 }, +/obj/machinery/camera{ + c_tag = "Cargo Delivery Office"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel, /area/quartermaster/sorting) "vYx" = ( @@ -148507,7 +150405,8 @@ }, /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "vYB" = ( @@ -148735,6 +150634,9 @@ "vZY" = ( /obj/machinery/cryopod/robot, /obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/computer/cryopod/robot{ + pixel_y = 28 + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "purple" @@ -148747,6 +150649,18 @@ icon_state = "dark" }, /area/security/medbay) +"wad" = ( +/obj/machinery/door/window/eastright{ + dir = 8; + name = "Mime Delivery"; + req_access = list(46) + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) "wam" = ( /obj/effect/decal/cleanable/blood, /obj/machinery/light/small{ @@ -148777,6 +150691,17 @@ icon_state = "neutralfull" }, /area/security/checkpoint/south) +"waw" = ( +/obj/structure/window/reinforced{ + color = "red"; + dir = 4 + }, +/obj/machinery/flasher/portable, +/obj/effect/decal/warning_stripes/red/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "way" = ( /obj/structure/weightmachine/weightlifter, /obj/machinery/light{ @@ -148858,6 +150783,18 @@ icon_state = "dark" }, /area/storage/eva) +"wbe" = ( +/obj/effect/decal/novastation{ + icon_state = "NStation4" + }, +/mob/living/simple_animal/bot/secbot/beepsky{ + desc = "It's Officer Uploadsky! Powered by a potato and a shot of whiskey."; + name = "Officer Uploadsky" + }, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, +/area/hallway/primary/central) "wbg" = ( /obj/structure/barricade/wooden, /obj/structure/cable{ @@ -149051,7 +150988,7 @@ }, /obj/machinery/tcomms/core/station, /turf/simulated/floor/redgrid, -/area/tcommsat/chamber) +/area/tcommsat/server) "wcH" = ( /turf/simulated/wall/r_wall, /area/medical/research/restroom) @@ -149089,10 +151026,7 @@ /turf/simulated/floor/carpet/green, /area/library/game_zone) "wdn" = ( -/obj/machinery/alarm{ - dir = 4; - pixel_x = -24 - }, +/obj/machinery/station_map/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "brown" @@ -149356,6 +151290,14 @@ icon_state = "neutralfull" }, /area/engineering/break_room) +"wfm" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/disposalpipe/segment, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) "wfo" = ( /obj/machinery/door/airlock/security{ name = "Evidence Storage"; @@ -149372,20 +151314,21 @@ icon_state = "dark" }, /area/security/evidence) -"wfJ" = ( -/obj/structure/railing{ - dir = 8 +"wfw" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 }, -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/cans/beer{ - pixel_x = -3 +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/zaza{ + pixel_x = 7; + pixel_y = 12 }, -/obj/item/reagent_containers/food/drinks/cans/beer{ - pixel_y = 10; - pixel_x = 5 +/obj/item/reagent_containers/food/drinks/mug/serv{ + pixel_x = -8; + pixel_y = 6 }, -/turf/simulated/floor/glass/reinforced, -/area/quartermaster/office) +/turf/simulated/floor/carpet/royalblack, +/area/quartermaster/qm) "wfK" = ( /obj/machinery/power/solar{ name = "South-East Solar Panel" @@ -149420,7 +151363,7 @@ }, /area/crew_quarters/kitchen) "wfW" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /turf/simulated/floor/plasteel{ @@ -149469,7 +151412,7 @@ dir = 4 }, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 6 }, /turf/simulated/floor/plasteel, /area/hydroponics) @@ -149494,17 +151437,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plating, /area/maintenance/apmaint) -"wgE" = ( -/obj/structure/table/wood/fancy/black, -/obj/item/candle{ - pixel_x = 2 - }, -/obj/item/toy/figure/wizard{ - pixel_y = 6; - pixel_x = 16 - }, -/turf/simulated/floor/carpet/green, -/area/library/game_zone) "wgG" = ( /obj/effect/spawner/window/reinforced/polarized{ id = "chem" @@ -149592,7 +151524,9 @@ /obj/machinery/light{ dir = 1 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "whx" = ( /obj/structure/cable{ @@ -149636,6 +151570,29 @@ /obj/structure/flora/ausbushes/reedbush, /turf/simulated/floor/grass, /area/hydroponics) +"whL" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/obj/effect/landmark/start/civilian, +/obj/item/radio/intercom{ + dir = 1; + pixel_y = 24 + }, +/turf/simulated/floor/wood, +/area/library) +"whQ" = ( +/obj/structure/table/reinforced, +/obj/item/gps, +/obj/item/gps{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkyellow" + }, +/area/engineering/mechanic_workshop/hangar) "wih" = ( /obj/item/stack/medical/bruise_pack, /obj/item/stack/medical/bruise_pack/advanced, @@ -149808,6 +151765,17 @@ icon_state = "neutralfull" }, /area/hallway/primary/fore) +"wjn" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2" + }, +/obj/machinery/camera{ + c_tag = "Cargo Wase Conveyor"; + dir = 10 + }, +/turf/simulated/floor/plating, +/area/quartermaster/sorting) "wjq" = ( /obj/effect/turf_decal/box/white/corners, /turf/simulated/floor/plasteel{ @@ -149842,7 +151810,7 @@ }, /area/security/warden) "wjG" = ( -/obj/structure/chair/office, +/obj/structure/chair, /obj/structure/sign/poster/contraband/ambrosia_vulgaris{ pixel_x = -32 }, @@ -150033,6 +152001,9 @@ name = "west fire alarm"; pixel_x = -24 }, +/obj/item/storage/toolbox/emergency, +/obj/item/crowbar, +/obj/item/wrench, /turf/simulated/floor/plasteel/white, /area/teleporter) "wkD" = ( @@ -150049,6 +152020,18 @@ /obj/machinery/vending/coffee, /turf/simulated/floor/wood/fancy/cherry, /area/lawoffice) +"wkG" = ( +/obj/machinery/door_control{ + id = "xeno7"; + name = "Containment Control"; + pixel_x = -32; + req_access = list(55) + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitehall" + }, +/area/toxins/xenobiology) "wkK" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ name = "standard air scrubber"; @@ -150081,6 +152064,36 @@ }, /turf/simulated/floor/wood/dark, /area/ntrep) +"wkO" = ( +/obj/structure/closet/crate/freezer, +/obj/machinery/iv_drip, +/obj/effect/decal/warning_stripes/blue/hollow, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/nitrogen, +/obj/item/tank/internals/emergency_oxygen/plasma, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/blood/OMinus, +/obj/item/reagent_containers/iv_bag/blood/OMinus, +/obj/item/reagent_containers/iv_bag/blood/OPlus, +/obj/item/reagent_containers/iv_bag/blood/OPlus, +/obj/item/reagent_containers/iv_bag/blood/APlus, +/obj/item/reagent_containers/iv_bag/blood/BMinus, +/obj/item/reagent_containers/iv_bag/blood/BPlus, +/obj/item/reagent_containers/iv_bag/blood/AMinus, +/obj/machinery/door/window/eastright{ + base_state = "left"; + dir = 8; + icon_state = "left"; + name = "Blood Bag Storage"; + req_access = list(5) + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/cryo) "wkQ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, @@ -150222,6 +152235,28 @@ icon_state = "whitebluefull" }, /area/medical/surgery/south) +"wlL" = ( +/obj/structure/table/glass, +/obj/item/storage/fancy/vials{ + pixel_x = -2; + pixel_y = 15 + }, +/obj/item/storage/box/masks{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/box/gloves, +/obj/machinery/door_control{ + id = "viroshutters"; + name = "Privacy Shutters Control"; + pixel_x = 26; + pixel_y = 6 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whitegreen" + }, +/area/medical/virology) "wlM" = ( /obj/effect/decal/warning_stripes/southwest, /turf/simulated/floor/plasteel, @@ -150271,6 +152306,14 @@ icon_state = "dark" }, /area/security/seceqstorage) +"wmn" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/chapel/massdriver) "wmp" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/remains/mouse, @@ -150389,6 +152432,15 @@ codes_txt = "patrol;next_patrol=R2"; location = "R1" }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -150425,22 +152477,6 @@ /obj/effect/decal/cleanable/blood/xeno, /turf/simulated/floor/plating, /area/maintenance/apmaint) -"wnp" = ( -/obj/structure/rack, -/obj/item/extinguisher/mini{ - pixel_y = 4; - pixel_x = -4 - }, -/obj/item/extinguisher/mini, -/obj/item/extinguisher/mini{ - pixel_x = 4; - pixel_y = -4 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/engineering/hardsuitstorage) "wnr" = ( /obj/structure/table, /obj/item/storage/photo_album, @@ -150450,14 +152486,6 @@ }, /turf/simulated/floor/wood, /area/security/permabrig) -"wnt" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/newscaster{ - pixel_y = 0; - pixel_x = -32 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/sorting) "wnu" = ( /obj/machinery/vending/snack, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -150515,17 +152543,6 @@ /obj/item/reagent_containers/glass/bucket, /turf/simulated/floor/grass, /area/maintenance/garden) -"wnM" = ( -/obj/machinery/door/poddoor{ - id_tag = "QMLoaddoor2"; - name = "supply dock loading door" - }, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 1 - }, -/turf/simulated/floor/plating, -/area/quartermaster/delivery) "wnP" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -150602,13 +152619,6 @@ icon_state = "neutralfull" }, /area/quartermaster/delivery) -"wot" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "redcorner" - }, -/area/security/prison/cell_block/A) "wox" = ( /obj/effect/decal/warning_stripes/northwest, /turf/simulated/floor/plasteel, @@ -150835,26 +152845,23 @@ "wqd" = ( /obj/machinery/vending/cola, /obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/alarm{ + pixel_y = 25 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "yellow" }, /area/engineering/break_room) "wqf" = ( -/obj/machinery/power/apc{ - cell_type = 5000; - dir = 4; - name = "east bump"; - pixel_x = 26 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" +/obj/machinery/alarm{ + pixel_y = 24 }, /turf/simulated/floor/plasteel{ - icon_state = "redcorner" + dir = 1; + icon_state = "red" }, -/area/security/prison/cell_block/A) +/area/hallway/primary/central/second/west) "wqh" = ( /obj/effect/decal/cleanable/dust, /obj/effect/spawner/random_spawners/rodent, @@ -150926,45 +152933,6 @@ icon_state = "white" }, /area/toxins/xenobiology) -"wqF" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/door_control{ - id = "vipbar1_bolt"; - name = "VIP 1 Door Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -6; - pixel_y = 26; - specialfunctions = 4; - req_access = list(28) - }, -/obj/machinery/door_control{ - id = "vipbar_bolt"; - name = "VIP 2 Door Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 6; - pixel_y = 26; - specialfunctions = 4; - req_access = list(28) - }, -/obj/machinery/door_control{ - id = "Bar"; - name = "Bar Privacy Shutters Control"; - pixel_y = 36; - req_access = list(28); - pixel_x = 6 - }, -/obj/machinery/door_control{ - id = "Bar Hall"; - name = "Bar Hall Privacy Shutters Control"; - pixel_x = -6; - pixel_y = 36; - req_access = list(28) - }, -/turf/simulated/floor/wood/dark, -/area/crew_quarters/bar) "wqI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -150975,7 +152943,9 @@ /obj/structure/cable{ icon_state = "2-8" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "wqN" = ( /obj/machinery/atmospherics/pipe/simple/visible{ @@ -151056,15 +153026,7 @@ }, /area/medical/research) "wqX" = ( -/obj/structure/ladder, -/obj/structure/sign/directions/floor/alt{ - dir = 6; - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "whitepurple" - }, +/turf/simulated/openspace, /area/toxins/launch) "wqY" = ( /obj/machinery/doppler_array{ @@ -151130,6 +153092,27 @@ dir = 1 }, /area/hallway/secondary/exit) +"wrF" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/structure/flora/ausbushes/sunnybush, +/obj/machinery/light, +/obj/structure/window/reinforced{ + color = "orange"; + dir = 1; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + color = "orange"; + dir = 4; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + color = "orange"; + dir = 8; + layer = 2.9 + }, +/turf/simulated/floor/grass, +/area/quartermaster/miningstorage) "wrH" = ( /obj/machinery/flasher_button{ id = "permaflash"; @@ -151162,9 +153145,6 @@ }, /area/atmos) "wrT" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/structure/disposalpipe/junction/reversed{ dir = 2 }, @@ -151177,22 +153157,13 @@ /obj/structure/cable{ icon_state = "1-4" }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, /area/crew_quarters/serviceyard) -"wsc" = ( -/obj/structure/curtain/open{ - color = "#222222"; - anchored = 1 - }, -/obj/structure/table/reinforced, -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/briefcase, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/maintenance/trading) "wse" = ( /obj/machinery/light{ dir = 4 @@ -151279,7 +153250,7 @@ name = "pod3 home dock"; width = 5 }, -/turf/space{ +/turf/space/openspace{ icon_state = "black" }, /area/space) @@ -151297,7 +153268,7 @@ icon_state = "2-4" }, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple" + icon_state = "purplefull" }, /area/toxins/launch) "wtc" = ( @@ -151307,9 +153278,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -151339,18 +153307,6 @@ /obj/machinery/atmospherics/unary/portables_connector, /turf/simulated/floor/plating, /area/maintenance/apmaint) -"wtn" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #3"; - id_tag = "xeno3" - }, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/toxins/xenobiology) "wtp" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -151365,48 +153321,6 @@ /obj/structure/lattice/catwalk, /turf/space, /area/space) -"wts" = ( -/obj/machinery/door/window/westleft{ - name = "Robotics Desk"; - req_access = list(29); - dir = 4 - }, -/obj/machinery/door/window/eastleft{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/obj/item/desk_bell{ - anchored = 1; - pixel_x = -7; - pixel_y = 7 - }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "Biohazard"; - name = "Quarantine Lockdown"; - opacity = 0 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "RoboDesk"; - name = "Robotics Privacy Shutter"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/table/reinforced, -/obj/item/folder, -/turf/simulated/floor/plasteel, -/area/assembly/robotics) "wtw" = ( /obj/machinery/vending/snack, /obj/machinery/camera{ @@ -151450,7 +153364,7 @@ network = list("Minisat","SS13") }, /turf/simulated/floor/redgrid, -/area/tcommsat/chamber) +/area/tcommsat/server) "wtT" = ( /obj/machinery/door/airlock/maintenance{ name = "Broom Closet" @@ -151469,6 +153383,17 @@ icon_state = "purple" }, /area/janitor) +"wuc" = ( +/obj/machinery/camera{ + c_tag = "Permabrig Hallway North"; + dir = 4; + network = list("SS13","Security") + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/permahallway) "wuh" = ( /turf/space{ icon_state = "black" @@ -151510,18 +153435,6 @@ icon_state = "red" }, /area/security/reception) -"wuB" = ( -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #6"; - id_tag = "xeno6" - }, -/obj/effect/spawner/window/reinforced, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/toxins/xenobiology) "wuC" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel, @@ -151627,7 +153540,7 @@ dir = 6; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "wvE" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ name = "standard air scrubber"; @@ -151738,7 +153651,9 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "wvZ" = ( /obj/effect/decal/warning_stripes/yellow/hollow, @@ -151783,6 +153698,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"wwk" = ( +/obj/structure/table/glass, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/surgery/north) "wwl" = ( /obj/machinery/computer/secure_data, /turf/simulated/floor/wood/fancy/light, @@ -151824,11 +153746,15 @@ }, /area/security/hos) "www" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/railing{ + dir = 8 }, +/obj/structure/closet/bombcloset, /turf/simulated/floor/plasteel{ - icon_state = "white" + icon_state = "purplefull" }, /area/toxins/launch) "wwy" = ( @@ -151872,32 +153798,6 @@ icon_state = "neutralfull" }, /area/atmos) -"wwG" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/landmark/start/doctor, -/obj/machinery/door_control{ - desc = "A remote control switch for the medbay foyer."; - id = "MedbayFoyerPort"; - name = "Medbay Doors Control"; - normaldoorcontrol = 1; - pixel_y = 0; - pixel_x = 26 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/medical/reception) "wwI" = ( /obj/effect/decal/ants, /obj/effect/decal/cleanable/dust, @@ -151936,7 +153836,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/port/south) "wxy" = ( @@ -151944,20 +153845,14 @@ /turf/simulated/wall/r_wall, /area/turret_protected/ai) "wxG" = ( -/obj/machinery/vending/wallmed{ - pixel_x = 26 - }, /obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 + icon_state = "2-4" }, -/turf/simulated/floor/plasteel{ - icon_state = "white" +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 10 }, -/area/medical/virology) +/turf/simulated/floor/plating, +/area/medical/virology/lab) "wxM" = ( /obj/machinery/door/airlock/public{ name = "Kitchen"; @@ -152002,6 +153897,19 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/medical/virology/lab) +"wyf" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/hallway/spacebridge/comcar) "wyl" = ( /obj/structure/chair/stool, /obj/effect/decal/warning_stripes/north, @@ -152161,7 +154069,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "wyV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -152370,25 +154280,6 @@ }, /turf/simulated/floor/plating, /area/security/permahallway) -"wBi" = ( -/obj/structure/curtain/open/shower/security{ - alpha = 255; - name = "backstage"; - anchored = 1 - }, -/obj/structure/table/reinforced, -/obj/item/phone{ - attack_verb = list("bounced a check off","checked-out","tipped"); - desc = "Also known as a cash register, or, more commonly, \"robbery magnet\". It's old and rusty, clearly non-functional and decorative only."; - dir = 1; - icon = 'icons/obj/machines/pos.dmi'; - icon_state = "pos"; - name = "point of sale" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/maintenance/trading) "wBm" = ( /obj/machinery/door/window/eastright{ name = "Forensic Laboratory"; @@ -152429,6 +154320,18 @@ icon_state = "darkbluealt" }, /area/hallway/primary/central/second/north) +"wBG" = ( +/obj/structure/closet/secure_closet, +/obj/item/storage/secure/briefcase, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 28 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "blue" + }, +/area/bridge/checkpoint/south) "wBI" = ( /obj/effect/decal/warning_stripes/yellow/partial{ dir = 1 @@ -152467,7 +154370,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "wBS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -152579,7 +154482,9 @@ /obj/structure/cable{ icon_state = "2-4" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "wCR" = ( /obj/item/twohanded/required/kirbyplants, @@ -152658,12 +154563,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/hologram/holopad, /obj/effect/landmark/event/lightsout, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "blue" + dir = 5 }, /area/hydroponics) "wDq" = ( @@ -152689,6 +154590,16 @@ icon_state = "dark" }, /area/aisat/maintenance) +"wDL" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/chapel/massdriver) "wDO" = ( /obj/structure/chair{ dir = 1 @@ -152696,7 +154607,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "wDT" = ( /obj/structure/cable{ d1 = 4; @@ -152826,7 +154737,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "wFn" = ( @@ -152855,15 +154767,6 @@ /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel, /area/hallway/primary/central/sw) -"wFx" = ( -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/alarm{ - pixel_y = -22; - dir = 1 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel, -/area/toxins/storage) "wFz" = ( /obj/machinery/light/small{ dir = 8 @@ -153040,9 +154943,14 @@ /turf/simulated/floor/wood, /area/crew_quarters/courtroom) "wHj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plasteel, -/area/quartermaster/miningstorage) +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/turret_protected/ai) "wHo" = ( /obj/structure/cable{ d2 = 8; @@ -153272,7 +155180,15 @@ /turf/simulated/floor/plasteel{ icon_state = "white" }, -/area/medical/virology/lab) +/area/medical/virology) +"wJM" = ( +/obj/effect/spawner/random_spawners/grille_50, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "wJR" = ( /obj/machinery/light/small{ dir = 4 @@ -153339,28 +155255,32 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/disposalpipe/sortjunction{ dir = 4; name = "Brig Equipment Storage"; sortType = 8 }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/simulated/floor/plasteel{ dir = 1 }, /area/security/main) -"wKz" = ( -/obj/machinery/light{ - dir = 1; - in_use = 1 +"wKA" = ( +/obj/machinery/door/airlock/vault{ + locked = 1; + name = "AI Upload"; + req_access = list(30) }, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 1 +/obj/structure/cable{ + icon_state = "1-2" }, -/area/hallway/primary/fore) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel/dark, +/area/turret_protected/ai_upload) "wKE" = ( /obj/machinery/door/airlock/command{ name = "NT Representative's Bedroom"; @@ -153546,6 +155466,11 @@ pixel_x = 24 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whiteblue" @@ -153605,17 +155530,13 @@ /turf/simulated/floor/carpet, /area/maintenance/casino) "wLT" = ( -/obj/machinery/door/airlock/medical{ - name = "Brig Physician's Quarters"; - req_access = list(5); - security_level = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 }, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "dark" @@ -153649,22 +155570,42 @@ icon_state = "1-2" }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "wMc" = ( /obj/structure/closet/wardrobe/virology_white, +/obj/item/storage/belt/medical, +/obj/machinery/newscaster{ + pixel_y = 32 + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "whitegreen" }, -/area/medical/virology/lab) +/area/medical/virology) "wMd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ icon_state = "caution" }, /area/crew_quarters/fitness) +"wMj" = ( +/obj/machinery/door/window/westleft{ + dir = 2; + name = "Cargo Desk"; + req_access = list(50) + }, +/obj/machinery/conveyor{ + dir = 8; + id = "packageExternal" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "dark" + }, +/area/quartermaster/delivery) "wMy" = ( /obj/machinery/light, /turf/simulated/floor/plasteel{ @@ -153721,7 +155662,7 @@ dir = 8; icon_state = "darkred" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "wNu" = ( /obj/machinery/light{ dir = 1; @@ -153740,26 +155681,6 @@ /obj/effect/spawner/random_spawners/wall_rusted_70, /turf/simulated/wall, /area/maintenance/fsmaint2) -"wNx" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/door/window/brigdoor{ - dir = 8; - name = "Creature Pen"; - req_access = list(47) - }, -/obj/machinery/door/poddoor/preopen{ - name = "Creature Cell #1"; - id_tag = "xeno1" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/toxins/xenobiology) "wND" = ( /obj/structure/table/reinforced, /obj/item/enginepicker{ @@ -153816,7 +155737,9 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "wNP" = ( /obj/structure/closet/emcloset, @@ -153831,26 +155754,34 @@ icon_state = "darkgreenfull" }, /area/hallway/secondary/exit) +"wNU" = ( +/obj/effect/spawner/window/reinforced/polarized{ + id = "blueshieldofficewindows" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/door/poddoor/shutters{ + density = 0; + dir = 8; + icon_state = "open"; + id_tag = "blueshield"; + name = "Privacy Shutters"; + opacity = 0 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/blueshield) "wNX" = ( /obj/structure/disposalpipe/segment, /obj/item/flag/grey, /turf/simulated/floor/plasteel, /area/storage/primary) -"wOa" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Prison Solitary Confinement 1"; - dir = 5; - network = list("Prison","SS13") - }, -/turf/simulated/floor/plating, -/area/security/permabrig) "wOb" = ( /obj/machinery/shower{ pixel_y = 22 @@ -153862,36 +155793,6 @@ icon_state = "freezerfloor" }, /area/security/permabrig) -"wOc" = ( -/obj/structure/table/wood, -/obj/machinery/door_control{ - id = "conferenceroombolts"; - name = "Conference Room Bolts Control"; - normaldoorcontrol = 1; - req_access = list(19); - specialfunctions = 4; - pixel_x = 4 - }, -/obj/machinery/button/windowtint{ - id = "conferenceroomwindows"; - pixel_x = -7 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/simulated/floor/carpet/royalblack, -/area/bridge/meeting_room) "wOk" = ( /obj/machinery/camera{ c_tag = "Research Test Chamber room"; @@ -153970,7 +155871,7 @@ dir = 8 }, /turf/simulated/floor/plating, -/area/chapel/main) +/area/chapel/massdriver) "wOT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -154098,7 +155999,12 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/item/twohanded/required/kirbyplants, +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/storage/belt/utility, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "purple" @@ -154188,6 +156094,26 @@ /obj/item/poster/syndicate_recruitment, /turf/simulated/floor/plating, /area/maintenance/secpost) +"wQf" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/door/window/brigdoor{ + dir = 8; + name = "Creature Pen"; + req_access = list(47) + }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "xeno7"; + name = "Creature Cell #7" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/toxins/xenobiology) "wQg" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -154195,6 +156121,16 @@ /obj/effect/decal/cleanable/dust, /turf/simulated/floor/carpet/green, /area/maintenance/casino) +"wQi" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/chapel/massdriver) "wQj" = ( /obj/machinery/door/airlock/maintenance{ req_access = list(22) @@ -154255,28 +156191,6 @@ }, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/additional) -"wRc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light_switch{ - name = "south light switch"; - pixel_y = -24; - pixel_x = -25 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/power/apc/worn_out{ - cell_type = 0; - dir = 8; - pixel_x = -26 - }, -/turf/simulated/floor/plasteel{ - icon_state = "stage_bleft" - }, -/area/maintenance/cafeteria) "wRf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -154331,17 +156245,15 @@ /turf/simulated/floor/plasteel, /area/atmos) "wRE" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" }, /turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "brown" + dir = 1 }, -/area/quartermaster/lobby) +/area/hallway/primary/central/second/east) "wRL" = ( /obj/effect/spawner/random_spawners/rodent, /obj/effect/decal/cleanable/dirt, @@ -154438,20 +156350,6 @@ icon_state = "red" }, /area/gateway) -"wSH" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/turf_decal/number/number_1{ - dir = 1; - pixel_y = -10; - pixel_x = -3 - }, -/obj/effect/turf_decal/arrows/white{ - dir = 4 - }, -/turf/simulated/floor/plasteel/dark, -/area/engineering/controlroom) "wSK" = ( /obj/machinery/light/small{ dir = 4 @@ -154525,30 +156423,6 @@ icon_state = "bcarpet05" }, /area/maintenance/fpmaint) -"wTi" = ( -/obj/machinery/door/window/northleft{ - dir = 4; - name = "Head of Personnel's Desk" - }, -/obj/machinery/door/window/brigdoor{ - base_state = "rightsecure"; - icon_state = "rightsecure"; - name = "Head of Personnel's Desk"; - req_access = list(57); - dir = 8 - }, -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/item/folder/blue, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "hopprivacy"; - name = "Head of Personal Privacy Shutters" - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark" - }, -/area/crew_quarters/heads) "wTj" = ( /obj/machinery/computer/med_data, /obj/structure/sign/nosmoking_2{ @@ -154621,19 +156495,6 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/civilian/pet_store) -"wTR" = ( -/obj/structure/table/glass, -/obj/item/book/manual/sop_medical, -/obj/item/book/manual/sop_command{ - pixel_y = 4; - pixel_x = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whiteblue"; - tag = "icon-whiteblue (NORTH)" - }, -/area/medical/cmo) "wTS" = ( /obj/machinery/light{ dir = 1; @@ -154686,11 +156547,13 @@ }, /area/medical/ward) "wUn" = ( -/obj/item/radio/intercom{ - pixel_y = -32 +/obj/effect/turf_decal/number/number_2{ + dir = 1; + pixel_y = -4 }, +/obj/effect/turf_decal/arrows/white, /turf/simulated/floor/plasteel{ - icon_state = "neutralcorner" + icon_state = "neutralfull" }, /area/hallway/primary/starboard) "wUw" = ( @@ -154742,7 +156605,7 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /obj/effect/decal/warning_stripes/east, /turf/simulated/floor/plasteel{ - icon_state = "neutralfull" + icon_state = "bluefull" }, /area/atmos) "wVm" = ( @@ -154833,21 +156696,6 @@ dir = 8 }, /area/crew_quarters/sleep) -"wVU" = ( -/obj/machinery/computer/security, -/obj/machinery/camera{ - c_tag = "Departure Lounge Security Checkpoint West"; - network = list("SS13","Security"); - dir = 4 - }, -/obj/item/radio/intercom{ - pixel_x = -26 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "red" - }, -/area/security/checkpoint/south) "wVV" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=A4"; @@ -154956,6 +156804,25 @@ }, /turf/simulated/floor/wood, /area/security/detectives_office) +"wWH" = ( +/obj/machinery/camera{ + c_tag = "Research Director's Office"; + dir = 1; + network = list("Research","SS13") + }, +/obj/item/clothing/glasses/welding/superior{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/structure/table/glass, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/spawner/lootdrop/officetoys, +/turf/simulated/floor/plasteel{ + icon_state = "darkpurple" + }, +/area/toxins/rdoffice) "wWS" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -154964,6 +156831,41 @@ icon_state = "whiteblue" }, /area/medical/reception) +"wWV" = ( +/obj/structure/curtain/open/shower/security{ + alpha = 255; + anchored = 1; + name = "backstage"; + pixel_x = 32 + }, +/obj/structure/disposalpipe/junction{ + dir = 2 + }, +/obj/item/radio/intercom{ + pixel_x = 28; + pixel_y = 28 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10; + initialize_directions = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/carpet, +/area/library) +"wWY" = ( +/obj/effect/turf_decal/siding/red{ + dir = 8 + }, +/obj/structure/chair/comfy/red{ + dir = 1 + }, +/turf/simulated/floor/carpet/red, +/area/security/medbay) "wWZ" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ desc = "Подаёт азот из атмосферки в систему охлаждения реактора, таким образом запитывая её хладагентом"; @@ -155013,7 +156915,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "wXl" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ name = "standard air scrubber"; @@ -155119,6 +157021,16 @@ }, /turf/simulated/floor/wood/dark, /area/crew_quarters/bar/atrium) +"wYb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/statue/bone/rib{ + anchored = 1; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cult" + }, +/area/maintenance/chapel) "wYj" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/wall_rusted_70, @@ -155169,21 +157081,6 @@ /obj/effect/decal/cleanable/dust, /turf/simulated/floor/plasteel, /area/maintenance/medroom) -"wYE" = ( -/obj/structure/sign/directions/cargo{ - dir = 4; - pixel_y = 8 - }, -/obj/structure/sign/directions/science{ - pixel_y = -8; - dir = 1 - }, -/obj/structure/sign/directions/engineering{ - dir = 4; - pixel_y = 0 - }, -/turf/simulated/wall, -/area/hallway/primary/starboard/south) "wYL" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -155269,7 +157166,9 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "wZp" = ( /obj/effect/turf_decal/stripes/gold, @@ -155321,7 +157220,9 @@ codes_txt = "patrol;next_patrol=C5"; location = "C4" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "wZK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -155366,9 +157267,6 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, @@ -155378,6 +157276,11 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -155499,7 +157402,7 @@ dir = 5; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "xaK" = ( /obj/machinery/alarm{ dir = 8; @@ -155570,6 +157473,19 @@ dir = 1 }, /area/security/processing) +"xbq" = ( +/obj/structure/sign/directions/evac{ + pixel_y = -8 + }, +/obj/structure/sign/directions/cargo{ + dir = 4 + }, +/obj/structure/sign/directions/security{ + dir = 8; + pixel_y = 8 + }, +/turf/simulated/wall, +/area/hallway/primary/central) "xbt" = ( /obj/effect/turf_decal{ dir = 8; @@ -155741,35 +157657,24 @@ /obj/effect/spawner/random_spawners/cobweb_left_frequent, /turf/simulated/floor/plating, /area/maintenance/apmaint) -"xdl" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +"xde" = ( +/obj/structure/table/glass, +/obj/machinery/newscaster{ + pixel_x = -32 }, /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/machinery/door/airlock/glass{ - id_tag = "magistrateoffice"; - name = "Magistrate's Office"; - req_access = list(74); - id = "tintmagistrateoffice"; - security_level = 1 - }, -/obj/structure/cable{ - icon_state = "1-4" +/obj/item/reagent_containers/spray/cleaner/janitor, +/obj/item/hair_dye_bottle{ + pixel_x = -6; + pixel_y = -10 }, -/obj/structure/cable{ - icon_state = "2-4" +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" }, -/turf/simulated/floor/carpet/black, -/area/magistrateoffice) +/area/civilian/barber) "xdt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -155823,6 +157728,32 @@ tag = "icon-whiteblue (EAST)" }, /area/maintenance/medroom) +"xdy" = ( +/obj/structure/table/wood, +/obj/item/flashlight/flare{ + pixel_y = -2 + }, +/obj/item/flashlight/flare{ + pixel_x = 2; + pixel_y = 8 + }, +/obj/item/flashlight/flare{ + pixel_y = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1 + }, +/area/maintenance/trading) "xdz" = ( /obj/structure/cable{ icon_state = "4-8" @@ -155896,6 +157827,12 @@ }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"xek" = ( +/obj/structure/sign/directions/floor/alt{ + dir = 6 + }, +/turf/simulated/wall, +/area/quartermaster/miningstorage) "xeu" = ( /turf/simulated/floor/plasteel{ icon_state = "darkred" @@ -155940,6 +157877,32 @@ icon_state = "dark" }, /area/security/warden) +"xeD" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, +/obj/item/reagent_containers/iv_bag/blood/diona, +/obj/item/reagent_containers/iv_bag/blood/grey, +/obj/item/reagent_containers/iv_bag/blood/kidan, +/obj/item/reagent_containers/iv_bag/blood/nian, +/obj/item/reagent_containers/iv_bag/blood/skrell, +/obj/item/reagent_containers/iv_bag/blood/tajaran, +/obj/item/reagent_containers/iv_bag/blood/unathi, +/obj/item/reagent_containers/iv_bag/blood/vulpkanin, +/obj/item/reagent_containers/iv_bag/blood/wryn, +/obj/effect/decal/warning_stripes/blue/hollow, +/obj/machinery/door/window/eastright{ + base_state = "left"; + dir = 8; + icon_state = "left"; + name = "Blood Bag Storage"; + req_access = list(5) + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/cryo) "xeS" = ( /obj/machinery/alarm{ dir = 4; @@ -155968,19 +157931,6 @@ icon_state = "darkpurple" }, /area/assembly/chargebay) -"xff" = ( -/obj/machinery/computer/operating{ - name = "Robotics Operating Computer" - }, -/obj/machinery/newscaster{ - pixel_y = 0; - pixel_x = 32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 6 - }, -/area/assembly/robotics) "xfh" = ( /obj/structure/noticeboard{ pixel_x = 32 @@ -156166,14 +158116,15 @@ security_level = 1 }, /turf/simulated/floor/plasteel{ - icon_state = "redcorner" + dir = 0; + icon_state = "red" }, /area/security/prison/cell_block/A) "xgS" = ( /obj/structure/railing/corner{ dir = 8 }, -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /turf/simulated/floor/glass/reinforced, @@ -156323,9 +158274,37 @@ }, /turf/simulated/floor/carpet/black, /area/chapel/main) +"xhR" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 8 + }, +/obj/effect/turf_decal/number/number_1{ + dir = 1; + pixel_x = 5; + pixel_y = -10 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/processing) "xhS" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/blood_5, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) "xhX" = ( @@ -156418,17 +158397,18 @@ "xiy" = ( /obj/machinery/camera{ c_tag = "Central Ring Hallway South 5"; - dir = 1 + dir = 2 }, /turf/simulated/floor/plasteel{ + dir = 1; icon_state = "neutral" }, /area/hallway/primary/central/sw) "xiz" = ( -/obj/machinery/computer/borgupload, /obj/item/radio/intercom/private{ pixel_y = -28 }, +/obj/machinery/computer/aiupload/cyborg, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -156566,7 +158546,9 @@ dir = 1; pixel_y = -28 }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "xjx" = ( /obj/structure/particle_accelerator/particle_emitter/center{ @@ -156652,6 +158634,20 @@ dir = 8 }, /area/crew_quarters/locker) +"xkf" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/cans/beer{ + pixel_x = -3 + }, +/obj/item/reagent_containers/food/drinks/cans/beer{ + pixel_x = 5; + pixel_y = 10 + }, +/turf/simulated/floor/glass/reinforced, +/area/quartermaster/office) "xkg" = ( /obj/structure/table, /obj/item/storage/belt/utility, @@ -156789,6 +158785,18 @@ icon_state = "arrival" }, /area/hallway/secondary/entry) +"xkT" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/test_chamber) "xkW" = ( /obj/structure/closet/secure_closet/medical2, /obj/effect/decal/warning_stripes/blue/hollow, @@ -156832,15 +158840,17 @@ icon_state = "darkpurple" }, /area/toxins/rdoffice) -"xlz" = ( -/obj/machinery/conveyor{ - id = "garbage"; - dir = 4 +"xlB" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "SKPP" }, -/obj/machinery/light/small, -/obj/effect/decal/warning_stripes/north, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, -/area/maintenance/disposal) +/area/bridge/checkpoint/south) "xlE" = ( /obj/machinery/atmospherics/pipe/simple/visible/green{ desc = "Труба проводящая газ по фильтрам, где он перемещается в камеры хранения"; @@ -156898,6 +158908,19 @@ icon_state = "darkgreen" }, /area/crew_quarters/sleep/secondary) +"xma" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/camera{ + c_tag = "Medbay Main Hall North"; + dir = 4; + network = list("Medical","SS13") + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) "xmb" = ( /obj/machinery/suit_storage_unit/cmo/sec_storage, /obj/machinery/firealarm{ @@ -156959,18 +158982,12 @@ icon_state = "freezerfloor" }, /area/maintenance/medroom) -"xmq" = ( -/obj/machinery/door/window{ - req_access = list(20); - dir = 2 - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/carpet, -/area/crew_quarters/captain/bedroom) "xmr" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/remains/human, +/obj/structure/railing/corner{ + dir = 8 + }, /turf/simulated/floor/plasteel, /area/maintenance/xenozoo) "xmw" = ( @@ -157000,12 +159017,6 @@ icon_state = "neutralfull" }, /area/crew_quarters/serviceyard) -"xmD" = ( -/obj/effect/decal/warning_stripes/northeastcorner, -/obj/machinery/computer/pandemic, -/obj/machinery/light, -/turf/simulated/floor/plasteel, -/area/medical/virology/lab) "xmH" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -157023,6 +159034,15 @@ icon_state = "dark" }, /area/bridge) +"xmW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/tracks{ + dir = 8; + pixel_x = -11; + pixel_y = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint4) "xmX" = ( /obj/machinery/photocopier, /turf/simulated/floor/plasteel{ @@ -157037,27 +159057,37 @@ /obj/effect/landmark/start/civilian, /turf/simulated/floor/wood, /area/crew_quarters/arcade) +"xnc" = ( +/obj/effect/decal/cleanable/dust, +/obj/effect/decal/cleanable/spiderling_remains, +/turf/simulated/floor/wood, +/area/maintenance/livingcomplex) "xnd" = ( -/obj/structure/table, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/ai_module/crewsimov, +/obj/item/ai_module/freeformcore, +/obj/item/ai_module/corp, +/obj/item/ai_module/paladin, +/obj/item/ai_module/robocop, +/obj/structure/table/glass, /obj/machinery/door/window{ base_state = "right"; + dir = 4; icon_state = "right"; name = "Core Modules"; req_access = list(20) }, -/obj/structure/window/reinforced, /obj/structure/window/reinforced{ - dir = 1 + dir = 2 }, -/obj/structure/window/reinforced{ - dir = 8 +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/obj/item/aiModule/crewsimov, -/obj/item/aiModule/freeformcore, -/obj/item/aiModule/corp, -/obj/item/aiModule/paladin, -/obj/item/aiModule/robocop, -/turf/simulated/floor/bluegrid, /area/turret_protected/ai_upload) "xnf" = ( /obj/machinery/ai_status_display, @@ -157105,6 +159135,9 @@ /obj/structure/disposalpipe/segment, /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, +/obj/structure/sign/poster/official/obey{ + pixel_x = -32 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "red" @@ -157130,17 +159163,15 @@ dir = 1 }, /area/maintenance/trading) -"xoh" = ( -/obj/machinery/atmospherics/unary/cold_sink/freezer{ - current_temperature = 80; - on = 1; - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkpurple" +"xoe" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" }, -/area/toxins/server) +/obj/machinery/light/small, +/obj/effect/decal/warning_stripes/north, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "xop" = ( /obj/structure/flora/tree/jungle/small, /turf/simulated/floor/grass, @@ -157196,6 +159227,9 @@ dir = 4; network = list("SS13","Security") }, +/obj/item/clothing/suit/armor/hos/alt{ + name = "Warden's armored trenchoat" + }, /turf/simulated/floor/carpet/red, /area/security/warden) "xoL" = ( @@ -157214,7 +159248,7 @@ name = "east station intercom (General)"; pixel_x = 28 }, -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 8 }, /turf/simulated/floor/plasteel{ @@ -157357,21 +159391,6 @@ dir = 1 }, /area/security/securehallway) -"xqr" = ( -/obj/machinery/alarm{ - dir = 8; - pixel_x = 24 - }, -/obj/machinery/camera{ - c_tag = "Permabrig Hallway East"; - network = list("Prison","SS13","Security"); - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkred" - }, -/area/security/permahallway) "xqt" = ( /obj/effect/turf_decal/siding/red{ dir = 6 @@ -157615,34 +159634,6 @@ /obj/effect/decal/warning_stripes/east, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/eastarrival) -"xrS" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/effect/decal/warning_stripes/red/hollow, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 1 - }, -/obj/machinery/door/window{ - dir = 8; - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/obj/item/storage/box/teargas, -/obj/item/storage/box/teargas{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "xrW" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -157650,11 +159641,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-2" - }, +/obj/structure/girder, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) "xrY" = ( @@ -157686,6 +159673,23 @@ /obj/effect/decal/cleanable/vomit, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"xso" = ( +/obj/machinery/disposal, +/obj/effect/decal/warning_stripes/red, +/obj/machinery/door_control{ + id = "SecPilotPriv"; + name = "Pilot Privacy Shutters Control"; + pixel_x = -24; + req_access = list(3,71) + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/podbay) "xss" = ( /obj/structure/cable{ d1 = 4; @@ -157737,20 +159741,6 @@ tag = "icon-whiteblue (NORTH)" }, /area/medical/medbay2) -"xsH" = ( -/obj/machinery/door/airlock/vault{ - locked = 1; - req_access = list(30); - name = "AI Upload" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plasteel/dark, -/area/turret_protected/ai_upload) "xsN" = ( /obj/structure/cable{ icon_state = "1-2" @@ -157832,6 +159822,16 @@ icon_state = "purplefull" }, /area/medical/research/nhallway) +"xtz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/remains/robot, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) "xtI" = ( /obj/structure/cable{ icon_state = "1-2" @@ -158002,7 +160002,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "xvb" = ( /obj/structure/cable{ @@ -158067,6 +160067,18 @@ icon_state = "cafeteria" }, /area/medical/research/restroom) +"xvD" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/structure/sign/directions/science{ + dir = 1; + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/primary/central/sw) "xvK" = ( /obj/machinery/computer/guestpass{ pixel_y = -32 @@ -158122,15 +160134,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/apmaint) -"xvY" = ( -/obj/structure/lattice, -/obj/machinery/camera{ - c_tag = "AI Satellite Exterior 12"; - network = list("SS13","MiniSat"); - dir = 8 - }, -/turf/space/openspace, -/area/maintenance/ai) "xvZ" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ @@ -158143,20 +160146,6 @@ /obj/item/shard, /turf/simulated/floor/plating, /area/maintenance/fpmaint) -"xwc" = ( -/obj/effect/spawner/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "SKPP"; - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/simulated/floor/plating, -/area/bridge/checkpoint/south) "xwe" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/rodent, @@ -158196,26 +160185,14 @@ icon_state = "darkred" }, /area/security/securearmory) -"xwA" = ( -/obj/effect/decal/warning_stripes/west, -/obj/item/storage/box/flashbangs{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/storage/box/flashbangs, -/obj/item/storage/box/handcuffs{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/structure/closet/crate/secure/weapon{ - req_access = list(63); - name = "Brig storage crate" +"xwv" = ( +/obj/machinery/newscaster{ + pixel_y = -32 }, -/obj/machinery/light, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "blue" }, -/area/security/seceqstorage) +/area/hallway/primary/central/north) "xwB" = ( /turf/simulated/floor/plasteel{ icon_state = "brown" @@ -158296,36 +160273,13 @@ }, /turf/simulated/floor/plating, /area/maintenance/fore) -"xxq" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 4 - }, -/obj/effect/turf_decal/number/number_1{ - dir = 1; - pixel_y = -10; - pixel_x = -5 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark" - }, -/area/hallway/primary/command/west) "xxs" = ( -/obj/effect/decal/warning_stripes/green, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment{ - invisibility = 101 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 + dir = 9 }, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -158366,6 +160320,26 @@ icon_state = "brown" }, /area/quartermaster/delivery) +"xxO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/fpmaint) "xxV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/closet/emcloset, @@ -158468,24 +160442,8 @@ /area/hallway/primary/central/second/north) "xyC" = ( /obj/effect/spawner/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id_tag = "BridgeLockdown"; - name = "Bridge Lockdown" - }, /turf/simulated/floor/plating, /area/crew_quarters/captain) -"xyG" = ( -/obj/machinery/door_control{ - id = "xeno2"; - name = "Containment Control"; - req_access = list(55); - pixel_x = -32 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whitehall" - }, -/area/toxins/xenobiology) "xyS" = ( /obj/machinery/light{ dir = 4 @@ -158508,7 +160466,19 @@ }, /obj/machinery/light, /obj/structure/table, -/obj/item/storage/firstaid/regular, +/obj/item/stack/sheet/metal{ + amount = 50; + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/rglass{ + amount = 50; + pixel_x = 2; + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -158699,11 +160669,6 @@ name = "Virology Requests Console"; pixel_x = -30 }, -/obj/machinery/camera{ - c_tag = "Virology"; - dir = 4; - network = list("Medical","SS13") - }, /turf/simulated/floor/plasteel, /area/medical/virology/lab) "xAc" = ( @@ -158820,14 +160785,21 @@ /turf/simulated/floor/plating, /area/maintenance/brig) "xBd" = ( -/obj/structure/closet/secure_closet/security, -/obj/item/clothing/mask/balaclava, -/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/sign/security{ + pixel_x = -32 + }, +/obj/effect/turf_decal/number/number_2{ + dir = 1; + pixel_y = -18 + }, +/obj/effect/turf_decal/arrows/white{ + dir = 1 + }, /turf/simulated/floor/plasteel{ - dir = 9; + dir = 8; icon_state = "red" }, -/area/security/reception) +/area/hallway/primary/central/west) "xBh" = ( /obj/structure/cable{ icon_state = "1-2" @@ -158890,24 +160862,6 @@ icon_state = "neutralcorner" }, /area/crew_quarters/fitness) -"xBx" = ( -/obj/structure/table/glass, -/obj/structure/sign/nosmoking_1{ - pixel_y = 32 - }, -/obj/machinery/light{ - dir = 1; - in_use = 1 - }, -/obj/item/reagent_containers/iv_bag, -/obj/item/reagent_containers/iv_bag{ - pixel_y = 2; - pixel_x = 2 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue" - }, -/area/medical/surgery/north) "xBz" = ( /obj/structure/table, /obj/item/clipboard, @@ -158942,8 +160896,9 @@ /area/toxins/mixing) "xBF" = ( /obj/structure/window/reinforced, -/obj/structure/statue/gold/hos{ - pixel_y = 7 +/obj/structure/statue/gold/unathi{ + desc = "Перед собою вы наблюдаете статую унати, которая держит в руках чертежи станции очень похожие на станцию Нова. Надпись на табличке - Один из двух главных инженеров союза Таяр и Унати, по прозвищу PiroMage, принимавших участие в разработке передовой научно-исследовательской станции НаноТрейзен - Nova."; + name = "К.А.З" }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -159011,6 +160966,13 @@ }, /turf/simulated/floor/wood, /area/medical/psych) +"xCv" = ( +/obj/machinery/computer/med_data, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medrest) "xCx" = ( /obj/machinery/kitchen_machine/oven, /turf/simulated/floor/plasteel{ @@ -159111,21 +161073,6 @@ }, /turf/simulated/floor/carpet/green, /area/security/detectives_office) -"xDz" = ( -/obj/structure/table/wood/fancy/purple, -/obj/machinery/requests_console{ - department = "Janitorial"; - departmentType = 1; - name = "Janitor Requests Console"; - pixel_x = -32 - }, -/obj/item/storage/fancy/cigarettes/cigpack_random, -/obj/item/lighter/random{ - pixel_y = 3; - pixel_x = 4 - }, -/turf/simulated/floor/carpet/purple, -/area/janitor) "xDC" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate, @@ -159272,7 +161219,7 @@ id_tag = "port4_sensor"; layer = 3.3; pixel_x = 25; - pixel_y = 5 + pixel_y = 7 }, /obj/machinery/light/small{ dir = 8 @@ -159394,6 +161341,33 @@ /obj/effect/landmark/start/civilian, /turf/simulated/floor/carpet/red, /area/crew_quarters/theatre) +"xFv" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/button/windowtint{ + id = "execution"; + pixel_x = -24; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = -24; + pixel_y = 34 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/security/execution) "xFC" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -159405,9 +161379,6 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable{ - icon_state = "1-4" - }, /obj/machinery/hologram/holopad, /obj/structure/cable{ icon_state = "4-8" @@ -159447,6 +161418,15 @@ /obj/effect/decal/ants, /turf/simulated/floor/plating, /area/security/permabrig) +"xFZ" = ( +/obj/machinery/conveyor{ + dir = 6; + id = "QMLoad" + }, +/turf/simulated/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/delivery) "xGl" = ( /obj/machinery/alarm{ pixel_y = 24 @@ -159490,11 +161470,13 @@ /turf/simulated/floor/plasteel, /area/engineering/controlroom) "xGC" = ( -/obj/machinery/light/small{ - dir = 8 +/obj/structure/barricade/wooden, +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics Maintenance"; + req_access = list(12,24) }, /turf/simulated/floor/plating, -/area/maintenance/apmaint) +/area/maintenance/atmospherics) "xGH" = ( /obj/machinery/camera{ c_tag = "Perma Library"; @@ -159549,14 +161531,14 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 }, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/hologram/holopad, /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=A32"; location = "A31" }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -159568,18 +161550,6 @@ "xHt" = ( /turf/simulated/wall/rust, /area/maintenance/fpmaint) -"xHC" = ( -/obj/machinery/atmospherics/pipe/simple/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/meter, -/obj/machinery/alarm{ - pixel_y = -23; - dir = 1 - }, -/obj/effect/decal/warning_stripes/south, -/turf/simulated/floor/plasteel, -/area/engineering/supermatter) "xHE" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -159779,26 +161749,6 @@ icon_state = "dark" }, /area/maintenance/trading) -"xIY" = ( -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 4; - frequency = 1379; - id_tag = "arrival_south_pump" - }, -/obj/machinery/airlock_sensor{ - id_tag = "arrival_south_sensor"; - pixel_y = 24 - }, -/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - id_tag = "arrival_south_airlock"; - tag_airpump = "arrival_south_pump"; - tag_chamber_sensor = "arrival_south_sensor"; - tag_exterior_door = "arrival_south_outer"; - tag_interior_door = "arrival_south_inner"; - pixel_y = -25 - }, -/turf/simulated/floor/plating, -/area/hallway/secondary/exit) "xJb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -159889,8 +161839,8 @@ frequency = 1379; layer = 3.3; master_tag = "port4"; - name = "exterior access button"; - pixel_x = 24; + name = "interior access button"; + pixel_x = 28; pixel_y = 28 }, /turf/simulated/floor/plasteel, @@ -159941,7 +161891,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "xJI" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/sortjunction{ @@ -160096,14 +162046,12 @@ /turf/simulated/floor/carpet, /area/library) "xKR" = ( -/obj/machinery/conveyor{ - dir = 10; - id = "mining_internal" - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 +/obj/machinery/mineral/mint{ + input_dir = 8; + output_dir = 1 }, -/turf/simulated/floor/plating, +/obj/effect/turf_decal/delivery, +/turf/simulated/floor/plasteel, /area/quartermaster/miningstorage) "xKT" = ( /obj/structure/bed, @@ -160187,6 +162135,18 @@ icon_state = "showroomfloor" }, /area/maintenance/casino) +"xLl" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 1; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/central/second/east) "xLm" = ( /obj/structure/table/reinforced, /obj/machinery/processor{ @@ -160308,13 +162268,13 @@ dir = 8; icon_state = "vault" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "xMp" = ( -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/firecloset, +/obj/structure/railing/corner{ + dir = 4 + }, /turf/simulated/floor/plating, -/area/maintenance/xenozoo) +/area/maintenance/asmaint4) "xMr" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/caution/red{ @@ -160335,8 +162295,8 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" +/turf/simulated/floor/engine{ + slowdown = -0.3 }, /area/hallway/primary/central) "xMu" = ( @@ -160351,10 +162311,55 @@ icon_state = "black" }, /area/space) +"xMx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light{ + dir = 1; + in_use = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -26; + pixel_y = 28 + }, +/obj/machinery/alarm{ + pixel_y = 25 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/evidence) "xMA" = ( /obj/effect/spawner/window/reinforced/plasma, /turf/simulated/floor/plating, /area/engineering/supermatter) +"xMC" = ( +/obj/structure/table/reinforced, +/obj/item/folder/yellow, +/obj/item/pen, +/obj/machinery/door/window{ + name = "Atmospherics Desk"; + req_access = list(24) + }, +/obj/machinery/door/window{ + dir = 8; + name = "Atmospherics Desk" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Eng_lockdown"; + name = "Engineering Lockdown"; + opacity = 0 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine/monitor) "xMF" = ( /obj/structure/grille, /obj/structure/window/plasmareinforced{ @@ -160377,6 +162382,7 @@ /obj/structure/cable/multiz{ color = "#dd1010" }, +/obj/machinery/station_map/directional/south, /turf/simulated/floor/plasteel{ icon_state = "darkbluealt" }, @@ -160450,10 +162456,12 @@ "xNB" = ( /obj/effect/decal/cleanable/dirt, /obj/item/extinguisher, +/obj/structure/cable/multiz{ + color = "#dd1010" + }, /obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" + d2 = 4; + icon_state = "0-4" }, /turf/simulated/floor/plasteel, /area/maintenance/xenozoo) @@ -160482,7 +162490,8 @@ }, /obj/effect/turf_decal/caution/red, /turf/simulated/floor/plasteel{ - icon_state = "dark" + icon_state = "dark"; + slowdown = -0.3 }, /area/hallway/primary/starboard/south) "xNV" = ( @@ -160522,12 +162531,35 @@ }, /area/engineering/engine/monitor) "xOe" = ( -/obj/structure/disposalpipe/segment, +/obj/structure/chair, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "brown" }, /area/quartermaster/miningstorage) +"xOh" = ( +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/rack/gunrack, +/obj/item/gun/energy/gun{ + pixel_x = -3 + }, +/obj/item/gun/energy/gun, +/obj/item/gun/energy/gun{ + pixel_x = 3 + }, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/machinery/door/window{ + color = "red"; + dir = 8; + name = "Secure Armory"; + req_access = list(1) + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "xOi" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/warning_stripes/red/hollow, @@ -160537,6 +162569,28 @@ icon_state = "darkred" }, /area/security/evidence) +"xOo" = ( +/obj/machinery/computer/general_air_control{ + name = "Tank Monitor"; + sensors = list("n2_sensor"="Nitrogen","o2_sensor"="Oxygen","co2_sensor"="Carbon Dioxide","tox_sensor"="Toxins","n2o_sensor"="Nitrous Oxide","mix_sensor"="Gas Mix Tank") + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1; + in_use = 1 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/radio/intercom{ + pixel_x = -28; + pixel_y = 23 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos/control) "xOw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/carpet/red, @@ -160690,6 +162744,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/item/radio/beacon, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -160722,6 +162777,17 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"xPU" = ( +/obj/machinery/conveyor_switch/oneway{ + dir = 8; + id = "packageExternal" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/delivery) "xPV" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate, @@ -160742,17 +162808,6 @@ icon_state = "freezerfloor" }, /area/crew_quarters/sleep/secondary) -"xQe" = ( -/obj/structure/closet/secure_closet/medical3, -/obj/item/storage/box/bodybags/biohazard, -/obj/item/clothing/suit/apron/surgical, -/obj/item/storage/box/bodybags, -/obj/item/storage/belt/medical/surgery/loaded, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "whitebluecorner" - }, -/area/medical/surgery/north) "xQi" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/effect/decal/cleanable/dirt, @@ -160814,10 +162869,14 @@ pixel_x = 24; pixel_y = 24 }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25 + }, /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "xQF" = ( /obj/effect/spawner/random_spawners/blood_20, /turf/simulated/floor/plasteel{ @@ -160842,6 +162901,9 @@ "xQI" = ( /obj/structure/bed, /obj/machinery/light, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -160908,6 +162970,18 @@ /obj/effect/turf_decal/siding/wood, /turf/simulated/floor/wood/dark, /area/ntrep) +"xRa" = ( +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/toxins/lab) "xRc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -161256,17 +163330,13 @@ /turf/simulated/floor/plating, /area/medical/cmo) "xTo" = ( -/obj/effect/turf_decal/siding/red{ - dir = 8 - }, -/obj/structure/chair/comfy/red{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "red" }, -/turf/simulated/floor/carpet/red, -/area/security/medbay) +/area/hallway/primary/central/west) "xTp" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -161277,16 +163347,6 @@ icon_state = "whitehall" }, /area/maintenance/fsmaint3) -"xTv" = ( -/obj/machinery/alarm{ - dir = 4; - pixel_x = -24 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medrest) "xTw" = ( /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" @@ -161342,35 +163402,6 @@ icon_state = "ramptop" }, /area/hallway/secondary/exit) -"xTO" = ( -/obj/effect/decal/warning_stripes/red/hollow, -/obj/item/gun/projectile/shotgun/riot, -/obj/item/gun/projectile/shotgun/riot{ - pixel_x = 7 - }, -/obj/item/gun/projectile/shotgun/riot{ - pixel_x = -7 - }, -/obj/structure/window/reinforced{ - color = "red"; - dir = 1 - }, -/obj/structure/window/reinforced{ - color = "red" - }, -/obj/structure/rack/gunrack, -/obj/machinery/door/window{ - name = "Secure Armory"; - req_access = list(1); - color = "red" - }, -/obj/item/gun/projectile/shotgun/riot{ - pixel_x = -9 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/securearmory) "xTQ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -161433,19 +163464,10 @@ /obj/effect/turf_decal/siding{ color = "#444444" }, -/turf/simulated/floor/glass, -/area/hallway/primary/central) -"xUh" = ( -/obj/machinery/camera{ - c_tag = "Brig Staff Room"; - network = list("SS13","Security"); - dir = 8 +/turf/simulated/floor/glass{ + slowdown = -0.3 }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "red" - }, -/area/security/brigstaff) +/area/hallway/primary/central) "xUj" = ( /obj/effect/landmark/start/engineer, /turf/simulated/floor/plasteel{ @@ -161454,8 +163476,12 @@ }, /area/engineering/engine) "xUn" = ( -/obj/machinery/light{ - dir = 4 +/obj/structure/table/wood, +/obj/item/flashlight/lamp/bananalamp{ + pixel_y = 6 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 }, /turf/simulated/floor/wood, /area/library) @@ -161549,6 +163575,7 @@ codes_txt = "patrol;next_patrol=A13"; location = "A12" }, +/obj/machinery/station_map/directional/east, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/commercial) "xUQ" = ( @@ -161598,6 +163625,9 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkred" @@ -161689,11 +163719,16 @@ dir = 1; in_use = 1 }, +/obj/machinery/firealarm{ + dir = 1; + name = "south fire alarm"; + pixel_y = 26 + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "xWd" = ( /obj/structure/window/reinforced{ dir = 8 @@ -161766,11 +163801,10 @@ /area/turret_protected/aisat) "xWy" = ( /obj/structure/table, -/obj/item/storage/fancy/donut_box, /obj/effect/decal/warning_stripes/red/hollow, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "redcorner" + dir = 5; + icon_state = "red" }, /area/security/prison/cell_block/A) "xWA" = ( @@ -161821,24 +163855,6 @@ /obj/machinery/light/small, /turf/simulated/floor/plating, /area/quartermaster/sorting) -"xWS" = ( -/obj/structure/table, -/obj/machinery/microscope{ - pixel_y = 6 - }, -/obj/machinery/camera{ - c_tag = "Detective's Lab"; - network = list("SS13","Security"); - dir = 1 - }, -/obj/item/reagent_containers/spray/cleaner/brig, -/obj/structure/sign/poster/official/random{ - pixel_y = -32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" - }, -/area/security/detectives_office) "xWU" = ( /obj/structure/cable{ icon_state = "1-8" @@ -161868,9 +163884,11 @@ "xWY" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, -/obj/item/stack/sheet/glass{ - amount = 20 +/obj/machinery/cell_charger{ + pixel_x = -1; + pixel_y = 2 }, +/obj/item/stock_parts/cell/high/plus, /turf/simulated/floor/plating, /area/maintenance/secpost) "xXb" = ( @@ -162066,6 +164084,9 @@ /obj/structure/cable{ icon_state = "2-8" }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -162129,6 +164150,32 @@ icon_state = "dark" }, /area/maintenance/trading) +"xZv" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/circuitboard/med_data{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/circuitboard/clonescanner, +/obj/item/circuitboard/scan_consolenew, +/obj/item/circuitboard/cryo_tube{ + pixel_x = 3 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -24 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "caution" + }, +/area/storage/tech) "xZx" = ( /obj/effect/landmark/event/lightsout, /turf/simulated/floor/plasteel{ @@ -162150,6 +164197,20 @@ /obj/effect/decal/cleanable/glass, /turf/simulated/floor/plating, /area/maintenance/fsmaint) +"xZG" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/vending/wallmed{ + pixel_x = -26; + pixel_y = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "red" + }, +/area/security/main) "xZI" = ( /obj/machinery/door/airlock/command{ id_tag = "captainofficedoor"; @@ -162247,6 +164308,21 @@ /obj/item/pen, /turf/simulated/floor/carpet, /area/chapel/office) +"yad" = ( +/obj/docking_port/stationary{ + area_type = /area/quartermaster/miningdock; + dir = 2; + dwidth = 3; + height = 5; + id = "mining_home"; + name = "mining shuttle bay"; + turf_type = /turf/simulated/floor/plating; + width = 7 + }, +/turf/space/openspace{ + icon_state = "black" + }, +/area/quartermaster/miningdock) "yah" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -162297,21 +164373,9 @@ pixel_y = 24 }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "brown" + dir = 1 }, /area/quartermaster/lobby) -"yau" = ( -/obj/machinery/door/window/brigdoor{ - dir = 2; - name = "Execution Access"; - req_access = list(2); - color = "red" - }, -/obj/effect/decal/warning_stripes/south, -/obj/machinery/atmospherics/unary/outlet_injector/on, -/turf/simulated/floor/engine, -/area/security/execution) "yaw" = ( /obj/structure/table/reinforced, /obj/item/radio/intercom/department/security{ @@ -162343,7 +164407,7 @@ /obj/machinery/airlock_sensor{ id_tag = "atmos_tank_sensor"; pixel_x = 57; - pixel_y = 8 + pixel_y = 7 }, /turf/simulated/floor/plasteel/dark, /area/engineering/controlroom) @@ -162355,18 +164419,6 @@ }, /turf/simulated/floor/plating, /area/bridge/checkpoint/south) -"yaG" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "red" - }, -/area/hallway/primary/central/second/west) "yaI" = ( /obj/structure/table/reinforced, /obj/machinery/light{ @@ -162381,21 +164433,6 @@ }, /turf/simulated/floor/plasteel, /area/toxins/xenobiology) -"yaM" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/door/poddoor/shutters{ - density = 0; - icon_state = "open"; - id_tag = "rdprivacy"; - name = "Research Director Office Shutters"; - opacity = 0; - dir = 2 - }, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/toxins/rdoffice) "yaO" = ( /obj/item/twohanded/required/kirbyplants, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -162403,6 +164440,17 @@ }, /turf/simulated/floor/wood, /area/medical/psych) +"yaP" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/cryo) "yaT" = ( /obj/machinery/light/small{ dir = 8 @@ -162563,6 +164611,27 @@ }, /turf/simulated/floor/plasteel/dark, /area/maintenance/starboardaux) +"ybI" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters{ + density = 0; + dir = 1; + icon_state = "open"; + id_tag = "brig_detprivacy"; + name = "Detective Privacy Shutters"; + opacity = 0 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/security/detectives_office) "ybX" = ( /obj/effect/decal/warning_stripes/west, /turf/simulated/floor/plating/airless, @@ -162727,6 +164796,15 @@ "ycY" = ( /turf/simulated/floor/glass/reinforced, /area/hallway/secondary/exit/maint) +"ydn" = ( +/obj/machinery/vending/wallmed{ + pixel_x = 25 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "purple" + }, +/area/hallway/primary/central/ne) "ydo" = ( /obj/structure/sign/fire, /turf/simulated/wall/r_wall, @@ -162831,11 +164909,11 @@ }, /obj/item/kitchen/utensil/spoon{ pixel_x = -3; - pixel_y = 18 + pixel_y = 5 }, /obj/item/kitchen/utensil/fork{ pixel_x = -4; - pixel_y = 18 + pixel_y = 5 }, /obj/item/bikehorn/rubberducky, /obj/machinery/light/small, @@ -163047,6 +165125,14 @@ icon_state = "stage_bleft" }, /area/maintenance/cafeteria) +"yeR" = ( +/obj/structure/chair/sofa/pew/left{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "chapel" + }, +/area/chapel/main) "yeT" = ( /obj/structure/cable{ icon_state = "1-2" @@ -163056,20 +165142,6 @@ /obj/effect/decal/cleanable/flour, /turf/simulated/floor/carpet/red, /area/maintenance/backstage) -"yeV" = ( -/obj/machinery/power/apc{ - name = "south bump"; - pixel_y = -26 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "rampbottom"; - tag = "icon-stage_stairs"; - dir = 4 - }, -/area/security/warden) "yeZ" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig Customs"; @@ -163188,6 +165260,18 @@ }, /turf/simulated/floor/glass, /area/hallway/secondary/exit) +"ygb" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/gravitygenerator) "ygc" = ( /obj/structure/cable{ icon_state = "2-8" @@ -163206,6 +165290,36 @@ dir = 1 }, /area/gateway) +"ygr" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis, +/obj/item/reagent_containers/iv_bag/blood/diona, +/obj/item/reagent_containers/iv_bag/blood/grey, +/obj/item/reagent_containers/iv_bag/blood/kidan, +/obj/item/reagent_containers/iv_bag/blood/nian, +/obj/item/reagent_containers/iv_bag/blood/skrell, +/obj/item/reagent_containers/iv_bag/blood/tajaran, +/obj/item/reagent_containers/iv_bag/blood/unathi, +/obj/item/reagent_containers/iv_bag/blood/vulpkanin, +/obj/item/reagent_containers/iv_bag/blood/wryn, +/obj/effect/decal/warning_stripes/blue/hollow, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/machinery/door/window/eastright{ + base_state = "left"; + dir = 8; + icon_state = "left"; + name = "Blood Bag Storage"; + req_access = list(5) + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/cryo) "ygx" = ( /obj/structure/railing{ dir = 8 @@ -163252,13 +165366,13 @@ }, /area/toxins/server) "ygG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, /obj/machinery/light/small{ dir = 8 }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkred" @@ -163273,7 +165387,7 @@ dir = 6; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "ygI" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -163486,7 +165600,7 @@ /turf/simulated/floor/plating, /area/maintenance/electrical) "yhM" = ( -/obj/structure/chair/office{ +/obj/structure/chair{ dir = 4 }, /obj/structure/sign/poster/contraband/grey_tide{ @@ -163518,6 +165632,7 @@ /obj/item/clothing/gloves/combat, /obj/item/clothing/mask/gas/syndicate, /obj/item/kitchen/knife/combat/survival, +/obj/item/suppressor, /turf/simulated/floor/plating, /area/maintenance/apmaint) "yip" = ( @@ -163590,6 +165705,10 @@ icon_state = "white" }, /area/medical/ward) +"yjj" = ( +/obj/structure/flora/ausbushes/reedbush, +/turf/simulated/floor/grass, +/area/maintenance/garden) "yjl" = ( /obj/structure/cable{ icon_state = "4-8" @@ -163683,6 +165802,15 @@ }, /turf/simulated/floor/glass/reinforced, /area/engineering/controlroom) +"yjY" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id_tag = "Bar Hall"; + name = "Bar Privacy Shutters" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/bar) "ykg" = ( /obj/structure/cable{ icon_state = "2-8" @@ -163738,7 +165866,9 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/simulated/floor/engine, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, /area/hallway/primary/central) "ykB" = ( /obj/machinery/recharge_station, @@ -163904,8 +166034,10 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -174346,7 +176478,7 @@ sUF qYi ilr qDt -iNO +ssL lhm tQA fUt @@ -174857,7 +176989,7 @@ eam uYD elg iNO -iNO +ssL vLe lFS cLT @@ -175622,7 +177754,7 @@ eIe tkq uYD aXR -eLS +pnB flw wSo hcc @@ -175634,7 +177766,7 @@ qyy uYD uYD jzz -xFS +sbk scx dhP gWy @@ -176149,7 +178281,7 @@ qGB bXJ lIQ aQw -ccz +bsK oPW uYD tkq @@ -176913,7 +179045,7 @@ ojd wnr tru mZX -kWt +uPb pkC cIw cmZ @@ -178458,7 +180590,7 @@ aTt dYO afA bfS -bfS +tNL siH vOg bfS @@ -179980,7 +182112,7 @@ tkq tkq tkq tkq -rSe +eIe eIe tkq eIe @@ -180231,51 +182363,251 @@ tkq tkq tkq tkq +lBr +lBr +lBr +eIe +lBr +lBr +lBr +eIe +ocY +ocY +ocY +ocY +ocY +ocY +ocY +ocY +ocY +uYD +tEE +uYD +uYD +rNB +aUQ +sDf +lzL +bvj +uYD +uYD +rUb +uYD +uYD +mnk +azN +ojM +qRN +vBs +tln +kso +sLj +eIe +eIe +rSe +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +eIe +eIe +bEs +eIe +eIe +tkq +eIe +tkq +tkq +mWu +eIe +eIe +eIe +bEs +eIe +eIe +eIe +mWu +eIe +tkq +tkq +eIe +tkq +rSe +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +"} +(65,1,1) = {" +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +tkq +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +wuh +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq +tkq tkq tkq tkq tkq tkq tkq -eIe -eIe -ocY -ocY -ocY -ocY -ocY -ocY -ocY -ocY -ocY -uYD -tEE -uYD -uYD -rNB -aUQ -sDf -lzL -bvj -uYD -uYD -rUb -uYD -uYD -mnk -azN -ojM -qRN -vBs -tln -kso -sLj -eIe -eIe -rSe -tkq -tkq -tkq tkq tkq tkq @@ -180290,218 +182622,18 @@ tkq tkq eIe eIe -bEs eIe +vte eIe tkq eIe -tkq -tkq -mWu -eIe -eIe -eIe -bEs -eIe -eIe -eIe -mWu -eIe -tkq -tkq -eIe -tkq -rSe -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -"} -(65,1,1) = {" -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -tkq -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -tkq -lBr eIe ocY iBD vuB cuf szQ -nyr +wuc jPi lXQ ocY @@ -180521,7 +182653,7 @@ fMT uYD fQv evv -qpm +rpc vny vny qQZ @@ -180745,16 +182877,16 @@ tkq tkq tkq tkq -tkq -tkq -tkq -tkq -tkq -tkq +lBr eIe -tkq +dFQ +lqY +dFQ +dFQ +dFQ +dFQ ocY -mWj +pWd eCk fAb wlg @@ -180779,7 +182911,7 @@ uYD lCU jFZ oUX -wgE +aqb wdl rUw iBi @@ -180995,25 +183127,25 @@ eIe lBr lBr lBr -eIe -lBr -lBr -lBr -eIe -lBr lBr +iuf +tkq +iuf lBr lBr eIe lBr tkq -tkq -lBr -eIe +dFQ +qOG +pOS +dFQ +gAb +cKa ocY -kbT -qfb -hPi +ktH +hlC +cSt gug pQB qgc @@ -181252,21 +183384,21 @@ tkq eIe eIe tkq -tkq eIe -tkq -tkq -eIe -tkq +iuf +ezI +iuf eIe tkq eIe tkq eIe -eIe -lBr -lBr -tkq +dFQ +ptP +dFQ +dFQ +xmW +jnG ocY eLr mwG @@ -181285,7 +183417,7 @@ pZV geJ sOF uYD -wOa +tPv aGs uRU uYD @@ -181512,18 +183644,18 @@ tSU qwc bxz fbg -oPv -bxz -bxz -bxz bxz +fjf +oPv bxz -gAb +dFQ +dFQ +dFQ qBV -eIe -tkq -eIe -tkq +hMh +qbi +xmW +jqb ocY vnM vnM @@ -181543,7 +183675,7 @@ ndN xBC tPC nZT -gtM +jAr dVb uYD nlD @@ -181763,21 +183895,21 @@ avS kbH npa rOL -qbP +azp bxz rfY oPd xzW bkx -xmD -bxz +aUa +frL oSq -aok -jcp bxz -dFQ -how -dFQ +jcp +dgD +hMh +hMh +lmz cOv cOv cOv @@ -181788,16 +183920,16 @@ cOv cOv mWj uVE -hde +bro sIx gug idL gug -xqr +mTF cYF pQB qgc -izH +ijc uYD uYD uYD @@ -182025,22 +184157,22 @@ bCd vNi stX hov -stX +ojn tYA -bxz +stX jMH -qbi -pOS +bxz +jcp dgD -jqb -hlh -dtq +hMh +hMh +eSe cOv rhA rhA jNx ieY -eeb +bbP fWi irZ mWj @@ -182057,7 +184189,7 @@ hAl xBC tPC sZC -aKK +hMv dVb uYD jdd @@ -182286,11 +184418,11 @@ sNz xxs vtN bwt -mya -sMR bxz -suX -rDZ +sMR +hKO +xMp +hMh tlF cOv edT @@ -182310,10 +184442,10 @@ owx kuj ocY pPW -cSM +nax yhR uYD -kmi +soN dEF itt uYD @@ -182546,8 +184678,8 @@ sGG sGG sGG sGG -lmz -rDZ +how +hMh suX cOv rhA @@ -182803,8 +184935,8 @@ rGy pFf kwv sGG -hMh -qOG +bSF +oCY hMh cOv vgO @@ -183037,18 +185169,18 @@ tkq tkq rSe eIe -kCc -kCc -mnl -kCc -kCc +bxz +bxz +bxz +bxz +bxz eAo suh dNs fIM fxa vHH -nuS +mnl bxz sMg wEJ @@ -183061,7 +185193,7 @@ dAZ gjh sGG hMh -rDZ +lmz hMh cOv rhA @@ -183093,9 +185225,9 @@ jOC sAA wiu xKF -clx +wWV sXW -tGB +bcj ets dxv lfp @@ -183104,9 +185236,9 @@ lfp lfp ltm lfp -tFY +keR lfp -esR +ggG lfp lfp lfp @@ -183294,11 +185426,11 @@ tkq tkq tkq eIe -kCc +bxz gBh bAV nuJ -frL +bxz lCp fIM fIM @@ -183374,7 +185506,7 @@ dHa kkN oZe jRT -oZq +jXQ dYC cuR eIe @@ -183551,7 +185683,7 @@ rSe eIe lBr eIe -kCc +bxz vyk aek wxG @@ -183808,21 +185940,21 @@ eIe tkq tkq eIe +bxz +fKM +uTh +rlz kCc kCc -ris -kCc -kCc -bxz -aFN +mqs wJK -bxz -mnF +kCc +gLO lXM bxz sGG uYZ -nHT +uoJ gkT eXC kTF @@ -183889,7 +186021,7 @@ bKi aYM qYW lHU -ttn +dCH bYW tkq eIe @@ -184066,15 +186198,15 @@ eIe eIe eIe kCc -fjf -gLO -sOA +kCc +kCc +kCc kCc mVa qgf pwW ego -bxz +kCc rnr uhE sGG @@ -184113,7 +186245,7 @@ hKl jOC irs son -pSU +oEP jOC oak pPo @@ -184128,7 +186260,7 @@ jOC nQu hMe xMh -hMn +wYb eqC jgE eqC @@ -184322,13 +186454,13 @@ eIe tkq tkq eIe -fKM -lcj +kCc +jsO gxv fhc -kCc +sOA sSj -fIM +vtz pTe dXw tWh @@ -184336,7 +186468,7 @@ aND rqw sGG oEa -eLJ +jEM uRd sEH qlS @@ -184579,12 +186711,12 @@ eIe tkq tkq eIe -kCc -kCc +udr +qjq lHD +dUj kCc -kCc -nvF +sEW izO kTb fbv @@ -184599,7 +186731,7 @@ lBw xRR wlS goi -wTR +uoq geH sGG dBD @@ -184643,7 +186775,7 @@ nQu ttn jUw seV -mTQ +qHk eqC jgE eiY @@ -184844,7 +186976,7 @@ kCc wMc pQC bup -fgq +wlL sMl fas lcw @@ -184864,7 +186996,7 @@ mMG npW wLs lyr -lVP +tUf hmk vtS kOs @@ -184884,7 +187016,7 @@ wkB jOC lDx lDx -lDx +qel cTb tho tgX @@ -184892,7 +187024,7 @@ nwQ bCH bvg sBR -lDx +qel lDx lDx jOC @@ -185098,11 +187230,11 @@ kCc kCc kCc kCc -bxz -bxz -bxz -bxz -bxz +kCc +kCc +kCc +kCc +kCc eiG pGR sGG @@ -185125,7 +187257,7 @@ eSE vtS vtS jey -nMu +kWh gsv rDa qrJ @@ -185140,17 +187272,17 @@ jmb sbP jOC oSy -sbk -dyL +ipA +qel geO dGr iSL mOV -nCp +mBK ggK mmg +qel gGp -sbk hLp jOC pzp @@ -185347,16 +187479,16 @@ awu jVh ucR oUh -sZQ +pKd jhA xYq eLa rvc -svo -vUN -xTv -tJs -sih +hla +ocN +daC +xCv +txl mDf xYq vqN @@ -185388,7 +187520,7 @@ lUB eLc eLc eLc -tAP +ddW oKm jmb ktX @@ -185398,15 +187530,15 @@ blG jOC lDx lDx -lDx -aRT +qel +rAY wwd wCj pJV sSS xCQ hOQ -lDx +qel lDx lDx jOC @@ -185420,7 +187552,7 @@ psM ttn ttn seX -ttn +hmj ttn sgU ulX @@ -185610,7 +187742,7 @@ xYq qGf bHf aWy -ugu +pGo fDG fDG fDG @@ -185653,9 +187785,9 @@ qZX hKl hKl jOC -oSy -sbk -dyL +jOC +jOC +jOC qel qel ejf @@ -185663,8 +187795,8 @@ aAA dyL qel qel +qel gGp -sbk hLp jOC nTa @@ -185816,7 +187948,7 @@ tkq tkq tkq tkq -tkq +igl tWQ xEB iZn @@ -185826,7 +187958,7 @@ pMY lrf hkd lNx -pGm +ldG oax kbL vXb @@ -185902,25 +188034,25 @@ eJI xpR eev eLc -vfv -utz +bmL +pBR jmb brS -jmb -pBR -hDd +qTF +hKl +tTq +xBd +onF +dLR jOC -lDx -lDx -lDx -qel +whL qel wMQ qog oVN qel qel -lDx +qel lDx lDx jOC @@ -185936,7 +188068,7 @@ ttn ttn jgD nQu -ttn +hmj ulX tgE nAO @@ -186109,7 +188241,7 @@ tkq tkq eIe eIe -tkq +eIe eIe ucR quA @@ -186128,7 +188260,7 @@ uMx fdu guT fDG -pxf +vdp gGm rZV ppc @@ -186163,20 +188295,20 @@ hKl hKl xGJ nMq -jmb -hKl +sbP hKl +tTq +dhv +qYe +tsS jOC -qel -qel -qel xUn -cOi +qel tcq fYU qel qel -cKt +qel qel qel qel @@ -186199,7 +188331,7 @@ trI tgE olp kxZ -eHZ +dkU aLW kAF vjn @@ -186365,7 +188497,7 @@ tkq tkq tkq eIe -tkq +eIe ucR gxN ucR @@ -186385,7 +188517,7 @@ fDG fDG fdW fDG -hGF +gDb xYq xYq xYq @@ -186416,24 +188548,24 @@ gOS lWt yaO eLc -hVx -dhv +ucN +wtT raK brS nUw -wtT -ucN -jOC +hKl +tTq +pRD qYe itL -pSU -jOC -gnD -hoT -dxl -svv -gnD jOC +rIa +qel +tcq +fYU +qel +qel +cKt oPu wUB pSU @@ -186445,7 +188577,7 @@ ijx qNF muz lOv -mcF +cWg kub lYy gOM @@ -186629,7 +188761,7 @@ nkZ dho ppg dqp -mDW +rkg ppg ppg ppg @@ -186680,17 +188812,17 @@ pMp hKl hKl hKl +xTo +pOZ +jXF +jOC jOC gnD +hoT +dxl +svv gnD -gnD -qTF -onF -vQu -ldS -vMH -onF -qTF +jOC gnD gnD gnD @@ -186877,7 +189009,7 @@ rOn ucR cUZ rVG -hWy +rhB pjC rAe ucR @@ -186922,7 +189054,7 @@ kKA clX wpX rij -rEE +rxW rxW rxW aTR @@ -186937,11 +189069,11 @@ pYK gNr iFh fhv +kVT +qYe +utz dAF -svF -dAF -dAF -pvk +cLB dAF lxp lRf @@ -186951,7 +189083,7 @@ cLB dAF pAQ pAQ -pAQ +gIP aPz aFM gOM @@ -186971,7 +189103,7 @@ ttn ttn eki tTP -ttn +hFd ttn psM ckW @@ -187134,7 +189266,7 @@ wRf ucR rAe cHb -ngP +oyj rAe cHb vxM @@ -187398,7 +189530,7 @@ ucR dRA qZi qeq -buq +mJY iqF jCW rox @@ -187437,7 +189569,7 @@ clX cpV pYy ePZ -ePZ +ryC ePZ ePZ ePZ @@ -187452,7 +189584,7 @@ qUs twQ xQk dJD -dJD +hVx dJD dJD mZm @@ -187694,7 +189826,7 @@ rDn uWp jwA kNb -jEL +kNb jEL jEL jEL @@ -187707,7 +189839,7 @@ lGx tVf tVf xMr -vDT +xbq bAh bAh bAh @@ -187980,7 +190112,7 @@ tkq thy gQA wmY -sfN +ifd gOM qnW blF @@ -188188,13 +190320,13 @@ fXb eqE aot lzM -gmG -oNw -oNw -tro -oNw -oNw -oNw +yaP +nQj +nQj +nYC +nQj +nQj +nQj aJd kom eNr @@ -188219,7 +190351,7 @@ tkq tkq eCm vVn -sdh +vKC qYZ uPH tkq @@ -188495,7 +190627,7 @@ crZ xFC wmY sfN -cvb +nfT vff avQ bkn @@ -188733,7 +190865,7 @@ tkq tkq nrs vVn -saW +dMA qYZ uPH tkq @@ -188752,7 +190884,7 @@ crZ iWt oGj ocT -kqs +cuI bvO kTT aPL @@ -188781,9 +190913,9 @@ ttn nwo wsu udY -xQs -qOO -pyi +oZp +dfe +vVy wsu kEy uCK @@ -188951,9 +191083,9 @@ rMF omU ezE hqS -pVd -pmy -tGs +xeD +wkO +ygr ciZ sSv vgK @@ -189009,7 +191141,7 @@ crZ xFC wmY sfN -jvQ +scG vff gYh eQM @@ -189039,7 +191171,7 @@ jNq wsu lbN fZj -pcS +wsu wsu wsu nqt @@ -189247,7 +191379,7 @@ tkq tkq eCm vVn -sdh +vKC qYZ uPH tkq @@ -189265,8 +191397,8 @@ tkq thy aFf wmY -xiy -qlo +sfN +qxw bvO gYh uaP @@ -189465,7 +191597,7 @@ rRF nhz arD bTd -mFA +mjh fFA lgZ pwF @@ -189484,14 +191616,14 @@ lSO bjI wWE uEd -mOe -dgR -vIG +bpK +eSd +rUS wtk buZ ujr nMR -fZf +xwv iZj tkq tkq @@ -189520,7 +191652,7 @@ tkq tkq tkq thy -xFC +xiy wmY sfN hdy @@ -189716,7 +191848,7 @@ wly uLo oSS pIU -xBx +gDh nDB iPH nLt @@ -189736,7 +191868,7 @@ aiA qaL jRW rSa -lqX +tmy aJs aEV bWy @@ -189761,7 +191893,7 @@ tkq tkq nrs vVn -saW +dMA qYZ uPH tkq @@ -189977,7 +192109,7 @@ fSk tvu elZ dKi -erx +wwk bTd sRf vYj @@ -190228,7 +192360,7 @@ fyy lJU hjG eEw -gzU +dFE pIU qhE gCD @@ -190275,7 +192407,7 @@ tkq tkq eCm vVn -sdh +vKC qYZ uPH tkq @@ -190503,7 +192635,7 @@ rcC gHH fXp bzf -sWp +nWc otJ iOp rVZ @@ -190574,7 +192706,7 @@ tiA sKc fDY fYt -nJe +gjt xKy rKs jCO @@ -190789,7 +192921,7 @@ tkq tkq nrs vVn -saW +dMA qYZ uPH tkq @@ -190815,13 +192947,13 @@ noU tXa pDE tYT -rYa +nbF iya iya iya qJv bUX -aJe +bUX uyq leV fDY @@ -190852,7 +192984,7 @@ xQs hUD pcS tkq -eIe +lBr tkq tkq tkq @@ -191001,7 +193133,7 @@ qZi aBA sWb pIU -xQe +rBV tJx tFf tiK @@ -191021,14 +193153,14 @@ djf wkV uxE mOL -ggp +mIy lSO oZP bPC tDc qOc -jqf -jyA +jlt +pJF hjZ buZ qJE @@ -191072,10 +193204,10 @@ rOY jiV pDE tYT -mvb +gvp pZY uWa -bUX +uWa vci fDY fDY @@ -191087,11 +193219,11 @@ pyl fDY fDY fDY -nQu +gAS ttn bYW ksd -ttn +oAy evi evi wsu @@ -191109,7 +193241,7 @@ jOw eGy wsu eIe -lBr +eIe tkq tkq tkq @@ -191267,7 +193399,7 @@ pIU ktw ktw hiA -mUb +ncd gPo mUb hiA @@ -191303,7 +193435,7 @@ tkq tkq eCm vVn -sdh +vKC qYZ uPH tkq @@ -191329,7 +193461,7 @@ rOY yfE pNp tYT -lzK +uoM iya iXn xCx @@ -191519,32 +193651,32 @@ oZk bvi dhG tKc -aPa -veK -pMN -pMN -hfq +otP +gYk +cJa +cJa +xma lgU tqM lgU -seA -pMN -pMN -jIw -ovP -cPi -aPa -pMN -mtD +mMt +cJa +cJa +liW +rtR +hoj +otP +cJa +lfV iLD -tzg +tLz dOB uhZ rSH gmI qpx oJp -nMi +lnv fit nMR fZf @@ -191586,10 +193718,10 @@ rOY jAM pDE tYT -lzK +uoM pZY kWE -fTg +xCx wcX fDY fZp @@ -191604,8 +193736,8 @@ nJe cXx nJe eDP -nJe -nJe +cvl +fhS xTj oVL nJe @@ -191623,7 +193755,7 @@ ttn bYW eIe eIe -eIe +lBr tkq tkq tkq @@ -191766,15 +193898,15 @@ ucR cHb xvk ucR -arV -naN -rhN +ttP +hMJ +pqW aBA nyc irp fQB uRp -olM +eTJ kJe sTs xcc @@ -191817,7 +193949,7 @@ tkq tkq nrs vVn -saW +dMA qYZ uPH tkq @@ -191843,7 +193975,7 @@ rOY pDE pDE tYT -edg +auF iya dpS ftT @@ -191860,9 +193992,9 @@ qzc bYW kbA ttn -psM ttn -eXZ +ttn +ttn ttn pUn ttn @@ -191879,8 +194011,8 @@ fXy eXZ bYW eIe -lBr tkq +lBr tkq tkq tkq @@ -192090,7 +194222,7 @@ jCS jCS jCS wdB -tel +xvD rKy pDd nMQ @@ -192117,7 +194249,7 @@ bYW lgX kbA ttn -uBa +psM ttn jNq ttn @@ -192136,8 +194268,8 @@ fXy ttn bYW eIe -lBr -tkq +eIe +eIe tkq tkq tkq @@ -192331,7 +194463,7 @@ tkq tkq eCm vVn -sdh +vKC elG cax skw @@ -192375,7 +194507,7 @@ cSJ kbA ttn ttn -ttn +efz ttn ttn jhB @@ -192652,8 +194784,8 @@ bYW bYW eIe lBr +lBr eIe -rSe lBr lBr eIe @@ -192674,7 +194806,7 @@ tkq tkq tkq lBr -eIe +lBr tkq tkq eIe @@ -192804,13 +194936,13 @@ kTR caB dhG syB -rYw -hYl +qCj +ops hQi hJC wqt edQ -wwG +uYs aFO wqt stU @@ -192845,7 +194977,7 @@ tkq tkq nrs vVn -saW +dMA elG cax dZL @@ -192888,8 +195020,8 @@ uhA oja eyq fHU -xDz -lGS +rjH +jSA jUU hyu biV @@ -193059,7 +195191,7 @@ oZX nTE bTO irp -rsK +gjv mTY dYq mKs @@ -193167,14 +195299,14 @@ bYW tkq eIe tkq -xwc -usc -jnD +qpW +vzE +qZp bKY bKY -rtn -usc -qjD +onh +vzE +prs eIe eIe tkq @@ -193336,7 +195468,7 @@ dFH tLu uZu oJp -oha +cPx rdT bod uTt @@ -193359,7 +195491,7 @@ tkq tkq eCm vVn -sdh +vKC qYZ uPH tkq @@ -193401,9 +195533,9 @@ iBe uhA jER gWv -vMX +lxh dJA -lGS +jSA joM bOm xZW @@ -193411,7 +195543,7 @@ pOw uhA lnQ jwc -mBF +fKo rJL lEx lEx @@ -193424,14 +195556,14 @@ bYW bYW bYW bKY -avV +xlB oXu gsn -eut +eUi qks nEb rcB -avV +xlB bKY eIe rSe @@ -193441,10 +195573,10 @@ rSe rSe rSe rSe -tkq +eIe rSe rSe -tkq +eIe eIe rGI rGI @@ -193554,7 +195686,7 @@ qhK qhK qhK gRG -ndp +qtx jpO rOV rOV @@ -193588,7 +195720,7 @@ cbN fOx wxW uJD -jiH +utD xMd sjK dbW @@ -193668,11 +195800,11 @@ dbe uhA ipR toF -bLw +lPU gcQ lEx wqi -uiu +xde ulL lEx nwo @@ -193832,8 +195964,8 @@ kTR wzO aBA fmn -sZf -fMP +qdc +uXj hQi eAa ntn @@ -193850,8 +195982,8 @@ wxW wxW wxW qKJ -eYo -eER +uhM +chg wBI oJp oJp @@ -193889,7 +196021,7 @@ tkq tkq tkq dTS -hOz +lSD fDj iBU aHe @@ -193911,7 +196043,7 @@ trv tFs gTu wuT -trv +pIu qax trv eIG @@ -194101,16 +196233,16 @@ mja sqJ fVg gVf -kDA -uwv -sAu -chV -mSU -sAu +tvY +vAh +mHB +nXS +vIz +mHB kPn xfx bTu -tSQ +jFK pdZ lgI qzm @@ -194130,7 +196262,7 @@ tkq tkq nrs vVn -saW +dMA qYZ uPH tkq @@ -194174,7 +196306,7 @@ xBh eoY rwD gdl -abj +iez con uso vxi @@ -194196,13 +196328,13 @@ eXZ cSJ bKY gfp -aze +btC xzB blU ePu rpD vED -fAs +wBG bKY oMS uCV @@ -194358,7 +196490,7 @@ bjJ lff nbM gVf -ePt +abK nFr oVG rlb @@ -194596,7 +196728,7 @@ rOV imz btx oWI -fOY +vLJ aBA aBA aBA @@ -194615,7 +196747,7 @@ iXU oqA oqA gVf -wKz +jbb iGA vFj lAQ @@ -194627,7 +196759,7 @@ fMb wjl wEg jVn -dOF +uuh dDV gHV bDC @@ -194641,7 +196773,7 @@ bje vze vze vze -jna +kGU bje utv bYP @@ -194853,25 +196985,25 @@ qVL gxA btx aIv -iGz -nZf -qmd -qmd -oOs -fjY -qmd -jkY -iaY -qmd -qmd -qmd -qmd -iGL -qmd -qmd -qmd -qmd -eFC +qdt +edl +aEX +aEX +tLF +pJd +aEX +cVn +tqc +aEX +aEX +aEX +aEX +rCS +aEX +aEX +aEX +aEX +aEn dLG rhL uNc @@ -194883,9 +197015,9 @@ oVG oVG wjl qKO -qmd -qmd -sta +aEX +aEX +olR fit riI miN @@ -194996,7 +197128,7 @@ gOD rEb vLY rAv -sLX +phW jfI eIe rSe @@ -195148,21 +197280,21 @@ wKJ pBN jsf gUz -hEB +lXY iWK vbI tUS -hEB +lXY iWK vbI sQz jPA dkM -bVx +wbe wCI -xsH -kIy -xsH +wKA +dUA +wKA tOn gHG tWr @@ -195377,7 +197509,7 @@ yjx yjx vPS fnb -vPS +umj dcU tQT cQX @@ -195398,7 +197530,7 @@ cbA ffP tQT vPS -khZ +uaE iuF ruM aQt @@ -195471,8 +197603,8 @@ rmx mQB fuX fuX -fuX -fuX +fCh +cCT dKf fuX gWk @@ -195639,8 +197771,8 @@ aDk ueB ffi ffi -byN -wts +aoB +twt ffi ffi cdm @@ -195655,7 +197787,7 @@ fMb iGA aNT jVn -bDL +hQa cKH bPD bDC @@ -195723,7 +197855,7 @@ thX aoY aAZ umU -eDF +djp gEF gEF gEF @@ -195851,7 +197983,7 @@ tkq iuf iuf qNk -fXI +whQ fRm goI cpj @@ -195886,13 +198018,13 @@ asj gHF fEX vZY -duV +gBJ lNn lNn wZh crA fEX -ofJ +fvu jLc ffi wsD @@ -195945,7 +198077,7 @@ tkq tkq tkq dTS -hOz +sAE tlq iBU aHe @@ -195980,7 +198112,7 @@ bLN vYP czK jQz -vzu +hic gEF hvj obo @@ -196165,7 +198297,7 @@ gvY xYo sYf gKr -giK +kMv xQB tVA jRk @@ -196186,7 +198318,7 @@ tkq tkq nrs vVn -sdh +vKC rbb uPH tkq @@ -196237,7 +198369,7 @@ qIz lPi hDy jQz -lPi +hic gEF pRW pRW @@ -196459,7 +198591,7 @@ tkq tkq tkq dTS -hOz +lSD tlq xTw hhx @@ -196678,7 +198810,7 @@ aio jPw jlb wqw -uVH +dPl hQo jlb rzi @@ -196736,8 +198868,8 @@ eCG uEA kVb kVb -nrY -nrY +yjY +yjY kVb kVb bry @@ -196957,7 +199089,7 @@ tkq tkq nrs vVn -saW +dMA rbb uPH tkq @@ -196977,8 +199109,8 @@ hxB dOe gZS xkX -kCH -eBd +boG +eFT lku xkX vgl @@ -197181,9 +199313,9 @@ geA iAJ cVP sXF -qrh +jaG sGh -xff +iGV gUh vDD kVf @@ -197402,7 +199534,7 @@ bDM oNt jQM mjd -fpZ +ite efT dwJ edX @@ -197471,7 +199603,7 @@ tkq tkq nrs vVn -sdh +vKC shM qAV qZt @@ -197491,7 +199623,7 @@ hOz tlq uwq xkX -gRO +qYk ebu wqn xkX @@ -197665,13 +199797,13 @@ efT hWZ efT ldc -jhT +vEk ndp gXW tdW bTG cFP -cFP +xtz jtE cjb txE @@ -197704,7 +199836,7 @@ dNY jxb boD ydX -hBk +lyv pzD uIi eZu @@ -197985,7 +200117,7 @@ tkq tkq nrs vVn -saW +dMA shM qAV vMF @@ -198172,7 +200304,7 @@ tkq tkq eIe tkq -vjO +pAn pAn pAn pAn @@ -198199,15 +200331,15 @@ hIY giO gSU ozY -aTF +pxp sWV oBy -oBy +qdL btg oBy -dPO +fcX oBy -pns +fxP oBy aLf oBy @@ -198215,11 +200347,11 @@ oBy hXz eHQ enC -vSS +uEJ mGy ydX anz -boY +mnE vix eZu eZu @@ -198257,7 +200389,7 @@ xkF tmr tmr tmr -wYE +neZ uph xRq dIv @@ -198433,7 +200565,7 @@ eIe pAn pLA rYM -nSd +aBw exO hzD pAn @@ -198448,9 +200580,9 @@ lZW qje cVl csx -krP -dfW -lKV +sFD +uXp +ovb csx ozy aSh @@ -198471,7 +200603,7 @@ nRL ier ier ier -lVq +lmi fTD cGX jlb @@ -198499,7 +200631,7 @@ tkq tkq nrs vVn -sdh +vKC rbb uPH tkq @@ -198696,7 +200828,7 @@ tDO pAn xBm jpO -qje +ggm gBD vzc gxC @@ -198791,7 +200923,7 @@ rYj gft hRu kVb -wqF +rWW nLl luG lPz @@ -198991,10 +201123,10 @@ vlN jlb gyN hio -ndo -fpU -mSG -vPj +fWw +xRa +ktY +nDR jUW jlb iYi @@ -199013,7 +201145,7 @@ tkq tkq nrs vVn -saW +dMA rbb uPH tkq @@ -199053,7 +201185,7 @@ ubj ecL itn kVb -eQD +hEz cJE klM mpo @@ -199291,7 +201423,7 @@ pAO kyj uEA cAk -kDG +dGX eZY jxK ddj @@ -199503,7 +201635,7 @@ lVq qsR idC vQU -pVQ +mib bhW xSA rmr @@ -199527,7 +201659,7 @@ tkq tkq nrs vVn -sdh +vKC rbb uPH tkq @@ -200041,7 +202173,7 @@ tkq tkq nrs vVn -saW +dMA rbb uPH tkq @@ -200538,7 +202670,7 @@ erv ycP uHN kan -fYQ +nda uku rkt bWc @@ -200555,7 +202687,7 @@ tkq tkq nrs vVn -sdh +vKC rbb uPH tkq @@ -200793,7 +202925,7 @@ nXp gjB fFW auW -jcg +mFq anM seD uku @@ -201069,7 +203201,7 @@ tkq tkq nrs vVn -saW +dMA rbb uPH tkq @@ -201098,7 +203230,7 @@ bua mFo mDJ gGW -sNf +wjn bua xHX aDI @@ -201120,7 +203252,7 @@ pvC vhN xiM lKe -gDr +pXU bNw bNw bNw @@ -201350,9 +203482,9 @@ bVB eNp xJw vYv -wnt +bKr aGG -vFR +tgA dZM vrH xWQ @@ -201373,7 +203505,7 @@ ktE mkG eAS emr -aKQ +bDB vhN vVd lKe @@ -201583,7 +203715,7 @@ tkq tkq nrs vVn -sdh +vKC rbb uPH tkq @@ -201608,8 +203740,8 @@ icB yep mYl rNI -yep tgA +dlr okL fgH sNf @@ -201770,10 +203902,10 @@ tkq tkq tkq tkq +tkq eIe eIe tkq -tkq eIe tkq eIe @@ -201802,7 +203934,7 @@ qpO apP gBP weC -dCX +txT qpO nOy wgG @@ -201814,7 +203946,7 @@ fIB pke nZY dpV -oOJ +uCM wcH xfL jzv @@ -201864,12 +203996,12 @@ abP tDt yep ugL -mYl -yep -yep +wfm +iZx +edZ iKJ -bua -qQx +tLT +sNf bua jFG aDI @@ -202030,7 +204162,7 @@ tkq tkq tkq lBr -tkq +eIe eIe tkq tkq @@ -202066,7 +204198,7 @@ eCU dEM jMP dPi -rOK +tKm cey nyL dKs @@ -202097,7 +204229,7 @@ tkq tkq nrs vVn -saW +dMA rbb uPH tkq @@ -202119,26 +204251,26 @@ hqk aKR bEk pSy -hbx -hbx rZk -okL +hbx +qFH uKE -cRf -iZx -sNf +bua +cVH +bua +qQx bua aDI aDI lTH vYf oGs -kbY exm -xhS +gKU +aDI lTH heh -gTr +jFG vhN uIF kLT @@ -202304,10 +204436,10 @@ gle xlP eAA kQN -nbK +xkT fdU wkR -ttI +sEF wPR oxn iMw @@ -202334,7 +204466,7 @@ xvu ipt wTL lzE -dQd +thG wcH uMm tZC @@ -202375,24 +204507,24 @@ tJl tLk bua iek -eby -okL +pqc +rLZ iWG rMj jDV -rLZ +bua mHJ bua hRc bua aDI jFG -hyb -gEI -aDI -exm -jFG -gKU +wNw +cJE +lTH +bDT +lTH +wNw cJE iwG aDI @@ -202600,7 +204732,7 @@ xOP rfk vuh wfZ -pKC +wfZ pKC pKC pKC @@ -202642,18 +204774,18 @@ bua bua nMS bua -gka +dQa +aDI +aDI +jFG aDI -wNw -cJE -lTH -bDT -lTH -wNw -cJE -heh aDI aDI +gka +jFG +heh +anF +gEI pWK eCz qno @@ -202676,7 +204808,7 @@ rDK rDK seP fkd -obH +sUE rDK seu tdm @@ -202856,16 +204988,16 @@ obz hgS oQW xZx +qMz sVx uiv uiv uiv -uiv aFk -uiv fyE uiv uiv +uiv thK dJK dJK @@ -202883,7 +205015,7 @@ gkC gkC gkC ofu -gkC +vwP fEk eBs oSR @@ -202899,13 +205031,13 @@ anF jFG xJI rjZ -rjZ +xhS mne xrW rjZ rjZ mne -rjZ +gTr mne rjZ jfs @@ -203119,8 +205251,8 @@ jmX jmX jmX qPF -jmX dOx +fve jmX jmX eJP @@ -203155,18 +205287,18 @@ mRy vpp iTw gGw -jFG -aDI -aDI -aDI -jFG -aDI -aDI -dQa -aDI -jcD -kuC -aDI +cJE +cJE +myJ +cJE +hhW +hhW +hhW +cJE +myJ +cJE +cJE +tUE ior pWK hdj @@ -203209,7 +205341,7 @@ rDK dRr aoA ddi -rDK +dvO aoA ddi hmw @@ -203354,7 +205486,7 @@ ldn adj xls ofz -yed +eII uRC lfG wcH @@ -203376,8 +205508,8 @@ kIw kIw nSH wkv -kIw pKv +ydn kIw rvm rcj @@ -203413,15 +205545,15 @@ nvM isK cJE cJE -cJE -myJ -cJE -hhW -hhW -hhW -cJE -myJ -cJE +eIe +eIe +eIe +eIe +eIe +eIe +eIe +eIe +eIe pWK pWK pWK @@ -203446,17 +205578,17 @@ hFU ccx xbu nVC -iWC +aVr lkz xNV vky cUA gKY -bQv +rqD sLN dGG woa -guH +iwp mtX ixt iZd @@ -203610,7 +205742,7 @@ nEs bOj okN jlw -yaM +sbt yed lyx xhz @@ -203654,7 +205786,7 @@ vaY dgU cbh tMN -gSO +thb jaz rNY jaz @@ -203709,10 +205841,10 @@ fsy vky cqU rDH -lbO +cbM vky wul -qta +sZR qmD bqn ixt @@ -203725,7 +205857,7 @@ iTG ygZ pQm gxS -mbd +rhh nVC uIV bcU @@ -203866,8 +205998,8 @@ kXU pGe qTz jjP -cQt -lCo +wWH +gCm yed uRC lfG @@ -203893,15 +206025,15 @@ xex ojT bBt beJ -gYL +xZv vBS wOy aAg -vSm +olq bib -hGX -uAS -xQi +wUn +bIO +cbh bJk xQi ipK @@ -203909,12 +206041,12 @@ tQV fHf fYb dlb -qWk +tCd tMN -oXJ +nsH osP iBG -bpt +xPU saR lYk jaD @@ -203924,7 +206056,7 @@ cEO saR usi xxN -oNn +jTY jaz eIe tkq @@ -203966,7 +206098,7 @@ qUf cjf cMl jll -xlz +xoe sLN gNy wwI @@ -204124,7 +206256,7 @@ fhW rnb hwe tdz -cRz +xOI yed tHV hkh @@ -204147,28 +206279,28 @@ tkq pWy gpJ kaJ -kHS +nfl qbk uES tgN wmc -jDY +uFw aAg vSm bib -hGX -jsN -fYb -fYb +wUn +bIO +cbh +aWH fYb fYb fYb fYb fYb vQP -qWk +tCd tMN -acU +wMj lqH xcg xcg @@ -204181,7 +206313,7 @@ xcg xcg xcg xcg -kOP +uSV jaz eIe eIe @@ -204217,13 +206349,13 @@ mMy lON dvj pWK -jll -jll +qwG +qFi jqO jll iIW rDH -iEQ +mVQ sLN mLw rGC @@ -204242,8 +206374,8 @@ fqj oRm nVC wmL -pXa -mlK +elC +rvr hXn vNc eIe @@ -204370,13 +206502,13 @@ nUv aSk bpz unc -wFx +asl ofz beR iMT sUs ofz -nUR +eNo gKJ rRc iWV @@ -204393,7 +206525,7 @@ tZC tZC tZC uLZ -dzV +mdL tZC ddO tZC @@ -204414,18 +206546,18 @@ aAg qgK bib wUn +bIO cbh -ulh -ulh +xQi tll xQi xQi fHf fYb dlb -qWk +tCd tMN -acU +wMj lqH tyF mMZ @@ -204438,7 +206570,7 @@ hnW wmq pYX xcg -kOP +uSV jaz tMN jaz @@ -204480,7 +206612,7 @@ vky jBq rOO kkn -lbO +cbM vky nVC wSa @@ -204641,7 +206773,7 @@ cPC ofz qcE lyx -lfG +tbO dcq dcq dcq @@ -204673,7 +206805,7 @@ bib hTM cbh cbh -olq +xQi xQi onM kBO @@ -204695,7 +206827,7 @@ tyF uWR xcg jVl -vhE +xFZ nCw tLj mDi @@ -204737,7 +206869,7 @@ vky oYk hVY hVY -tMV +tVy vky eIe eIe @@ -205142,7 +207274,7 @@ mmo iIT pML mfA -qFY +koY qwU nAT ncG @@ -205659,7 +207791,7 @@ qwU him cGL gNQ -rBs +nSu nyq syA mUe @@ -205671,21 +207803,21 @@ cSs gMX bFt dcq -kii -qzA -wtn +rOu +kNL +plK eHd -grz -kHU -tSC +jSU +frK +eDo eHd -iHv -wNx -jRz +gXm +dmP +vxC eHd -mcc -knh -hYz +kRz +wQf +jeg dcq rmQ tAI @@ -205704,7 +207836,7 @@ cbh sbO eaG xQi -ulh +vdg uZS xAQ jVA @@ -205723,10 +207855,10 @@ tyF uWR xcg pYX -nWU -cKy -wnM -aRp +kCf +rZP +pPS +bwD wuh wuh wuh @@ -205980,7 +208112,7 @@ dsM edy xcg rmi -gmA +kXp jaz tMN jaz @@ -206017,7 +208149,7 @@ xXx pWK pWK eIe -tkq +eIe tkq tkq tkq @@ -206166,7 +208298,7 @@ oOM wWd xMj qBQ -lEo +ggd lEo lEo cbB @@ -206185,19 +208317,19 @@ ufV oHv iKF vEx -hys +fNu hEf rCN srn -xyG +kUb hEf wGG aqz -pib +iOS hEf rCN srn -kiS +wkG uJW afM aUs @@ -206237,7 +208369,7 @@ fFZ fFZ fFZ xcg -gmA +kXp jaz eIe eIe @@ -206458,7 +208590,7 @@ vak mce dzu qBG -rVn +tWg dcq ozp gjD @@ -206488,13 +208620,13 @@ aJJ hAV hAV cWL -bDG -pPY -bDG -bDG -bDG -oFj -htU +rtY +kFs +rtY +rtY +rtY +ofL +sPy jaz eIe rSe @@ -206507,7 +208639,7 @@ wuh wuh rSe rSe -tkq +eIe rSe eIe xXx @@ -206527,8 +208659,8 @@ aSY rMb xXx eIe -tkq -tkq +eIe +eIe rSe rSe rSe @@ -206691,7 +208823,7 @@ tEp pjk enE yew -xoh +kVi mcQ cis eST @@ -206715,7 +208847,7 @@ omB kvi dzu fkP -pXx +plT ozp ozp xAn @@ -206938,7 +209070,7 @@ cBv xMj eti cYK -vwz +sDW bMr uZr lfb @@ -206962,9 +209094,9 @@ hqR hcn qnu hQI -sYc +dYx ldO -gYb +prp vye mUD vLO @@ -206972,7 +209104,7 @@ qMw gWM afM vdz -tSh +gxM ozp ozp xAn @@ -207203,9 +209335,9 @@ hpj hpj hpj pjk -skL +kgH nZv -skL +kgH mcQ cis eST @@ -207229,7 +209361,7 @@ qNg kvi dzu qYK -gPz +nRx wla xSm gjD @@ -207486,7 +209618,7 @@ vak tSc dzu rkC -fAF +arR dcq ozp gjD @@ -207536,7 +209668,7 @@ eIe eIe tkq tkq -tkq +eIe eIe pWK pWK @@ -207727,15 +209859,15 @@ uGR gWo fvO gpn -uQY +hUS gVU gmE soH -fzE +mHC gVU iQt rDl -mpC +kyI gVU gmE njm @@ -208241,17 +210373,17 @@ nEQ bJd cQx dcq -dFK -khy -wuB +kzs +gon +qLY eHd -fPC -lBk -jXw +dVg +mUO +aqZ eHd -fjt -tXO -nZN +hgf +khS +bmv dcq mXT oxG @@ -208316,7 +210448,7 @@ eIe tkq tRM aEB -dni +rXx sYy hVS tRM @@ -208525,7 +210657,7 @@ wEQ dVE iIz bib -rDT +bKo fsD eIe eIe @@ -209545,7 +211677,7 @@ uAg uAg uAg uAg -cdu +efe uAg njK uAg @@ -209559,9 +211691,9 @@ syE dDr wwJ iKa -ssi +grl dmC -hTW +qez tHm oqO naM @@ -209597,7 +211729,7 @@ osb laS eIe eIe -tkq +eIe tkq tkq tkq @@ -209800,7 +211932,7 @@ qNj kRZ kRZ jcV -fNY +xMC qyK kRZ cAJ @@ -209809,7 +211941,7 @@ mJB lOa ilF jeG -dAc +csp xZb lOa syE @@ -209832,8 +211964,8 @@ kEL aoK gjY sdm -fES -fES +iVg +iVg vSW hSX iEO @@ -210321,7 +212453,7 @@ qDQ idn qeA lOa -ewY +xOo mkm gNn fxd @@ -210332,7 +212464,7 @@ aTf tzm uAO juN -syb +jAP qEh miV nWf @@ -210350,7 +212482,7 @@ rFx gyE cgL ahk -iUO +mUH udo gsG wpY @@ -210368,7 +212500,7 @@ kBa pyF lWk eIe -tkq +eIe tkq tkq tkq @@ -210559,7 +212691,7 @@ yiU yiU jeD jpg -dhn +tvh lPX fYh sqa @@ -210811,7 +212943,7 @@ dMB oIf yiU hUR -qBq +eUS ajn yiU xJf @@ -211068,7 +213200,7 @@ xHU btr sSb rIT -hor +guq rIT jFa hsy @@ -211100,7 +213232,7 @@ frf bmR fpl eFI -pek +hxR lcZ gIM vbB @@ -211131,7 +213263,7 @@ tkH tkH vWZ nfA -pNr +fwV eEd tNK lZw @@ -211345,8 +213477,8 @@ glz vKy dQc kRZ -dle -gvG +vbw +oxJ cYL txc dOi @@ -211355,10 +213487,10 @@ buU fMU alt uJm -qtz +aOl vAi isI -lWD +iKa fLn nvy wbD @@ -211615,7 +213747,7 @@ syE gOK vbA otZ -lWD +iKa tCN ibg ujl @@ -211629,7 +213761,7 @@ aUS uYm mkM pfD -tgm +aZR sdm cht tuy @@ -211893,7 +214025,7 @@ kGv laS gCI hau -xHC +ggo vWZ tWV ghT @@ -211904,7 +214036,7 @@ vWZ ckl kOV sKp -mAG +loB lZw uhJ laS @@ -212106,9 +214238,9 @@ hjv xjC ujn yiU -efd +lto fjp -efd +lto ulx fxL ugC @@ -212625,19 +214757,19 @@ hep iNH qhi jJh -onK +dJR rww qfV -aeE +ead jhG wfl pyG rfy kXM drY -lsl +fxY smY -nVF +lsl iuZ cMD kfW @@ -212887,7 +215019,7 @@ hOY bBd drw bBd -eTw +hYw fEz hOU nPq @@ -213132,7 +215264,7 @@ lHQ nBj hjv xjC -qnB +bOp yiU yiU yiU @@ -213176,7 +215308,7 @@ syE aWu lkJ gFe -hGp +eNY bal tJK olG @@ -213439,7 +215571,7 @@ igK wWZ uhh lsq -mzx +qio tzn pvN kXa @@ -213678,7 +215810,7 @@ vNH eIe pum eIe -kvO +bVX bbp fND qtT @@ -214174,7 +216306,7 @@ rTL rTL pcv mcd -qSk +nYO drn iKk gkO @@ -214691,10 +216823,10 @@ dnj dnj aFX gHb -bgA +ueP hRh dPu -chK +aIz dnj eIe syE @@ -214937,8 +217069,8 @@ ibo cxn hRb hRb -ulx -jKe +ibo +nFO fti kcL gVE @@ -214951,7 +217083,7 @@ nTK dkF gEO pdb -hAk +smA dnj eIe syE @@ -215194,7 +217326,7 @@ bUe lLp hRb eOZ -ulx +ibo qiC rnu gjV @@ -215205,7 +217337,7 @@ kPM klG gxq mgP -gXC +vmM vUP pdb kdL @@ -215451,7 +217583,7 @@ xav uXa qEE vkH -ulx +ibo jKe rwA kcL @@ -215703,12 +217835,12 @@ uVO uVO fYn eTU -pFo +pvP ibo pLe dZk vkH -ulx +ibo kmZ rwA ifZ @@ -216999,7 +219131,7 @@ njN bYE rqW bij -pHo +anU nCu gGs iuf @@ -218013,7 +220145,7 @@ aww llm mkk izT -eLY +pbx mAn rwR ibo @@ -218023,7 +220155,7 @@ ibo ibo ibo wRr -bfF +lgV wRr wRr eIe @@ -218269,7 +220401,7 @@ tkq aww lbQ mkk -wnp +fft lVL cQi sVy @@ -220617,7 +222749,7 @@ eIe lTi cSq lTi -oEu +fWC lTi mNh lTi @@ -222673,7 +224805,7 @@ eIe lTi qPz lTi -hei +anQ lTi dfK lTi @@ -238850,15 +240982,15 @@ bkc bkc bkc sLA -bkc +uJG wTd sLA wTd sLA -bkc +uJG sLA sLA -bkc +uJG bkc bkc bkc @@ -239108,18 +241240,18 @@ bkc sLA sLA uJG +bkc uJG +bkc uJG uJG -uJG -uJG -uJG +bkc uJG uJG ngN ngN -bkc -bkc +uJG +uJG bkc bkc bkc @@ -239357,13 +241489,13 @@ bkc bkc sLA sLA -bkc +uJG sLA sLA sLA uJG uJG -uJG +bkc uJG jKG iXN @@ -239373,7 +241505,7 @@ ptL oLX jKG uJG -uJG +bkc uJG uJG ngN @@ -239614,9 +241746,9 @@ bkc bkc sLA uJG +bkc uJG -uJG -uJG +bkc uJG uJG jKG @@ -239869,7 +242001,7 @@ bkc bkc bkc bkc -bkc +uJG uJG jKG iAa @@ -239880,18 +242012,18 @@ jKG dif ddF qXJ -hzT +szp coM -oUq +iln bgG -gRo +pBo bpg pit jqG jKG uJG uJG -bkc +uJG bkc bkc bkc @@ -240127,7 +242259,7 @@ bkc bkc bkc sLA -uJG +bkc jKG naa vDU @@ -240140,7 +242272,7 @@ dpN bbt qKS iVu -txA +gvo dtG xeu gVv @@ -240382,7 +242514,7 @@ bkc ngN ngN ngN -bkc +uJG sLA uJG jKG @@ -240404,7 +242536,7 @@ fuE uCv jKG fvL -bkc +uJG ngN bkc bkc @@ -240639,17 +242771,17 @@ bkc ngN uJG uJG -uJG +bkc uJG uJG jKG jLG -hCw -ijH -aGm +jCT +bKv +kQH jKG -mxI -pWX +ieZ +pnE fbq uCw eap @@ -240657,11 +242789,11 @@ qZU ldb uCw iWY -pWX -aJw +qeU +bjL jKG fvL -uJG +bkc uJG bkc bkc @@ -240894,7 +243026,7 @@ bkc bkc bkc ngN -uJG +bkc nNF nNF nNF @@ -240907,9 +243039,9 @@ jKG jKG nNv rTJ -rTJ -rTJ -rTJ +dgS +dgS +dgS xFD dgS dgS @@ -240918,7 +243050,7 @@ dgS mll jKG fvL -bkc +uJG ngN bkc bkc @@ -241149,8 +243281,8 @@ bkc bkc ngN ngN -bkc -bkc +uJG +uJG uJG nNF txs @@ -241160,22 +243292,22 @@ kBz jKG oXh nbA -qyP +qkh jKG kWL oNC gQu -pWX +qeU uCF osu lMx -pWX +qeU aKo jpI kZm jKG fvL -uJG +bkc ngN bkc bkc @@ -241407,7 +243539,7 @@ bkc ngN uJG uJG -uJG +bkc uJG nNF tfW @@ -241661,7 +243793,7 @@ bkc bkc bkc bkc -bkc +uJG uJG nNF nNF @@ -241679,7 +243811,7 @@ jKG dvA rmK gSj -tSp +njo tKn yls tKn @@ -241689,7 +243821,7 @@ kmU qtJ jKG uJG -uJG +bkc bkc uJG bkc @@ -241919,7 +244051,7 @@ bkc bkc bkc ngN -uJG +bkc nNF wZC xId @@ -242442,8 +244574,8 @@ rmq elk sqP nZO -xUh -uQX +mtq +vBa nZO uZF ouh @@ -242688,7 +244820,7 @@ bkc bkc bkc bkc -bkc +uJG uJG xoL xoL @@ -242946,14 +245078,14 @@ bkc bkc bkc ngN -uJG +bkc xoL ajW xoL -xTO -nbu -vVc -tes +uWk +tbx +rYJ +puI gxr gXd hho @@ -242977,7 +245109,7 @@ aSp vAP kNN mWg -xwA +mXE xAy kSp hcX @@ -243212,7 +245344,7 @@ fsx fsx fsx nJm -aNx +qRJ sGd hlM wLU @@ -243228,7 +245360,7 @@ uLp jYF jYF jYF -ibB +vIN xAy xAy xAy @@ -243238,7 +245370,7 @@ xAy xAy qcq dOE -jca +qnf daW aGH jsA @@ -243460,16 +245592,16 @@ bkc bkc bkc ngN -uJG +bkc xoL ajW xoL -jhf -oWw -iPd -sXx +jXD +vRO +cJF +aQi bhh -mBv +kUC vxl eGS hlo @@ -243495,7 +245627,7 @@ iPI xAy kSp hcX -jca +qnf iXw daW kGI @@ -243716,7 +245848,7 @@ bkc bkc bkc bkc -bkc +uJG uJG xoL ajW @@ -243726,7 +245858,7 @@ tEr tEr tEr bhh -pJk +aLV uSy mpu etG @@ -243752,7 +245884,7 @@ nUJ vTV rzL hcX -ezi +vSl hcX hcX ebe @@ -243974,16 +246106,16 @@ bkc bkc bkc ngN -uJG +bkc xoL ajW xoL -lJx -ejJ -qKn -jnj +rWa +hED +fBc +ruB bhh -fZC +dmz cam ogm brr @@ -244009,13 +246141,13 @@ lRV xAy qIv lYj -ktN +oey hcX hcX ueH jsA uJG -bkc +uJG bkc bkc bkc @@ -244230,7 +246362,7 @@ bkc bkc bkc bkc -bkc +uJG uJG xoL ajW @@ -244245,7 +246377,7 @@ bLc kOd abG mwU -ioK +nfo bCc jwt lZC @@ -244256,7 +246388,7 @@ uto cER lZC xaK -lxw +okA xAy xAy xAy @@ -244266,7 +246398,7 @@ xAy xAy jxu hcX -ezi +vSl hcX hcX ebe @@ -244488,18 +246620,18 @@ bkc bkc bkc ngN -uJG +bkc xoL ajW xoL -sTC -qMH -rdX -xrS +gIa +peg +xOh +jbE bhh oVO gHq -kxE +dZn xoL xoL xoL @@ -244521,9 +246653,9 @@ iNp voX tyM xAy -koT +aPg hcX -jca +qnf uDU bQE bCY @@ -244754,9 +246886,9 @@ tEr tEr tEr bhh -jfO +uyS gHq -dmu +gFm xoL wzT qup @@ -244780,7 +246912,7 @@ wmg xAy xSJ xmw -jca +qnf bQE gtJ jsA @@ -245001,19 +247133,19 @@ bkc bkc bkc bkc -bkc uJG +bkc xoL ajW xoL -oMu -sfk -sfk -sfk +rTC +kyL +pYH +eRO bhh fvn gHq -hmj +gFm xoL uck eJG @@ -245024,7 +247156,7 @@ qlc uAm bvt urJ -nDd +xZG brD xAy wNu @@ -245032,7 +247164,7 @@ vbS gKt xmI dWi -mct +jmY aDA xAy vmF @@ -245270,7 +247402,7 @@ fsx xws ftt nfx -tSD +waw xoL pBv tzy @@ -245290,7 +247422,7 @@ cTX egQ ldl gEV -jmY +mct xbz cIK jHI @@ -245515,19 +247647,19 @@ bkc bkc bkc bkc -bkc +uJG uJG xoL ajW xoL -gEx -mYe -mYe -mYe +srz +bqK +ehh +leG qtN tIW jad -pTO +fjV xoL bDa tWv @@ -245766,9 +247898,9 @@ bkc bkc bkc bkc +bkc sLA sLA -uJG sLA sLA uJG @@ -245798,7 +247930,7 @@ pEC qlc qlc xAy -vOj +bfo lXC eMi rcX @@ -246023,13 +248155,13 @@ bkc bkc bkc bkc -sLA -uJG -uJG +bkc uJG uJG +bkc uJG uJG +bkc uJG uJG jHy @@ -246046,7 +248178,7 @@ jHy jQD eyn rIe -jiw +fZW jop uRK oQu @@ -246280,9 +248412,9 @@ bkc bkc bkc bkc +bkc +ngN uJG -uJG -rzS rzS rzS rzS @@ -246321,13 +248453,13 @@ xAy xAy xAy uJG -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf jEv -wuh -wuh +bXf +bXf uJG uJG cYe @@ -246531,19 +248663,19 @@ uJG ngN ngN ngN -uJG -ngN -ngN ngN uJG +bkc +uJG ngN ngN uJG +ngN +bkc rzS gHR wFz czo -czo ygG kUw jHy @@ -246551,11 +248683,11 @@ jHy jHy jHy jHy -ciN +ojP lOg qOT tlD -yeV +qIW jHy uZW tka @@ -246578,23 +248710,23 @@ qEX pjI asI uJG -wuh -wuh -wuh -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf +bXf +bXf +bXf uJG -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf +bXf +bXf +bXf +bXf +bXf uJG uJG uJG @@ -246788,21 +248920,21 @@ bkc uJG uJG bkc -bkc +uJG uJG bkc -bkc +uJG uJG bkc uJG bkc +uJG rzS sDU -lqY +hlh dQY -tiT alP -kcV +lwL rzS wrz wrz @@ -246828,30 +248960,30 @@ pao pTl dCj asI -obM +xMx xUJ -uEi +ifM tcn vmD aGc uJG -wuh -wuh -wuh -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf +bXf +bXf +bXf uJG -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf +bXf +bXf +bXf +bXf +bXf uJG fvL fvL @@ -247051,13 +249183,13 @@ mPK mPK mPK mPK +bSt mPK mPK rzS oar keF vIl -ezI dpQ kcV rzS @@ -247092,23 +249224,23 @@ xrE uTI asI uJG -wuh -wuh -wuh -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf +bXf +bXf +bXf uJG -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf +bXf +bXf +bXf +bXf +bXf uJG fvL kdb @@ -247309,20 +249441,20 @@ bSt mDO mSP ama -xMp +kPs +kPs rzS noH aMO aMO -eSe -oOA +rgK cOS rzS -ihW -fWP -fRi +omR +xhR +npd jaw -pKw +syW kHT tJo gXg @@ -247340,7 +249472,7 @@ arB arB arB rFn -ehS +fuj wfo cEz gGv @@ -247349,23 +249481,23 @@ vvJ hGB asI uJG -wuh -wuh -wuh -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf +bXf +bXf +bXf uJG -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf +bXf +bXf +bXf +bXf +bXf fvL fvL fvL @@ -247564,27 +249696,27 @@ gnI wut bSt jWz -vte -ptP +vYm +pof +kPs kPs rzS fNN fYS fMe -rzS dNd rzS rzS fkD pTl dCj -sVG +jHy dRE eNC xey viK fJx -sVG +jHy fKV tka kWp @@ -247606,23 +249738,23 @@ oZD xOi asI uJG -wuh -wuh -wuh -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf +bXf +bXf +bXf uJG -wuh -wuh -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf +bXf +bXf evW -wuh -wuh +bXf +bXf fvL kdb kdb @@ -247820,16 +249952,16 @@ kGq aFJ iyK bSt -vYm +jOz xNB -amE -dYK +jjR +kPs +kPs rzS -bSF +aok hMq yaw -mQk -kwG +akw ohy bFy uZW @@ -247858,7 +249990,7 @@ eYq asI cuQ pUt -uEi +ifM tcn vmD kCC @@ -248081,11 +250213,11 @@ pMx mfx xmr oFH +etN rzS -jOz +ppI kVV aLJ -jjR jmO lYF mlg @@ -248337,12 +250469,12 @@ hKj xTe pyy rxN +mya hnU rzS ohi ruz rEd -jnG uxF kch aCQ @@ -248353,12 +250485,12 @@ wZD pQL pQL mNo -arB -arB -arB -arB +vMH +pQL +pQL +pQL enR -laB +nNM gDv qaJ mlJ @@ -248594,12 +250726,12 @@ pfP bqo xqa dbx +dYK obP rzS wAY -ojn +uNf exG -kYo hwt gSZ wHo @@ -248610,7 +250742,7 @@ xJJ cZI xJJ vwC -xJJ +enP xAc xJJ xJJ @@ -248618,7 +250750,7 @@ xJJ eVq hVc pTl -pTl +meh uHl pTl uMr @@ -248634,7 +250766,7 @@ mdb igY tNs kya -qyW +qyH kya gFc kya @@ -248651,7 +250783,7 @@ gFc kya gcO gZR -pfk +xso nXh mrA fkw @@ -248852,7 +250984,7 @@ pfP mPK btV pfP -rzS +mPK rzS rzS rzS @@ -248873,9 +251005,9 @@ gmn bGl yal dlD -uZW -pTl +jaZ pTl +meh aor txH txH @@ -248914,7 +251046,7 @@ nxU sZA sef uJG -bkc +uJG bkc bkc bkc @@ -249132,7 +251264,7 @@ fbQ dlD opi pTl -pTl +uuC tah pTl pTl @@ -249419,7 +251551,7 @@ wyY tYb jwO wyY -doq +thD wyY wSY qtA @@ -249676,7 +251808,7 @@ bWZ rTk diG yhn -agi +xFv tRN wSY uFZ @@ -249869,7 +252001,7 @@ yev khC lRC vpN -lFD +pWF jtj dcL jtj @@ -250147,18 +252279,18 @@ xWH cCL dlD trZ -cXR +xzQ kYp lRi -wot +vTl gcH -hqo -lRi -nOM bmP +lRi +kYp +xzQ rAz dlD -gIB +otB pPC uvt wtc @@ -250424,7 +252556,7 @@ bLy ned ned kXl -nNM +uvt dTg dLI uJf @@ -250444,7 +252576,7 @@ kzM vIU wyY jFj -yau +mRY cTG wgd rqM @@ -250676,12 +252808,12 @@ iif sOq uKm iGe +lLl xkW iCq reV -iCq -hTF -tTq +kxQ +iGt dTg kAM dyG @@ -250904,7 +253036,7 @@ lUo rJp sJt lRC -rCY +kct yev yev yev @@ -250925,20 +253057,20 @@ vTl vZU hqo lRi -nOM -cDr +kYp +fpy tNj dlD pvc qVi flR dRn +uvt peM eSY aow -pfM +jRZ aow -anR dTg rUr vdY @@ -251153,13 +253285,13 @@ sac ddB nOW cwm -oUd +gOq abk mNq dmM oDn hNG -kMk +lJY oXp mOm nOC @@ -251180,22 +253312,22 @@ onQ dlD bpy vZU -lLD +eCo +dlD +dlD dlD -pkl -kBk -onQ dlD dlD vvd -pOZ +vvd +vvd kAc +tqp iRC vvd -ipA -cGc -fpy -aag +vvd +vvd +vvd aag aag aag @@ -251235,9 +253367,9 @@ bkc bkc bkc bkc -wuh -wuh -wuh +bXf +bXf +bXf bkc bkc bkc @@ -251392,7 +253524,7 @@ ngN uJG gto rhR -pve +iOm mBW dLa jEj @@ -251418,7 +253550,7 @@ xlU shG sJt qgm -lRC +rEE yev aKx dLa @@ -251432,28 +253564,28 @@ eeg pve dlD aeF -kco -kco -kco +dsN +dsN +dsN jIi vZU kco -jIi -jIi -jIi -jIi -jIi +dsN +ovj +dlD +hpC +qpZ nBo -rvo -tsS -dRn -ara +dQT vvd +anR +uvt +ara +oSK wSZ -xTo +wWY tHG aag -xBd cAA kzk lhJ @@ -251491,11 +253623,11 @@ bkc bkc bkc bkc -wuh -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf +bXf bkc bkc bkc @@ -251692,25 +253824,25 @@ dsf xzQ xzQ xzQ -xzQ +guO oQK +ldS +xzQ tsd -tsd -tsd -tsd +dlD bvn -tsd -tsd +fnc +gYr dQT -enP +vvd pyX nNK wLT jKN fky +qwg xAm aag -kxQ cbk aGO ylQ @@ -251732,12 +253864,12 @@ hpH lbW dQI ryG -mZZ +iFb sQl wSY dEc xZR -bMf +bhj dPp wSY uJG @@ -251748,11 +253880,11 @@ ngN ngN ngN bkc -wuh -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf +bXf bkc bkc bkc @@ -251946,34 +254078,34 @@ xkH wIv dlD xWy -vTl +rvo kgG omk vTl idP -hqo +cOi eqG jkm -qwg +dlD wqf -hqo +fnc jlI -dlT +dQT +vvd aBV ich sGQ -vvd +uIg fwA -uuC +tsI wac aag -rIa sbZ kfv tIf oer wuy -tIf +dIS ctV uRS reI @@ -252005,11 +254137,11 @@ uJG uJG uJG bkc -wuh -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf +bXf bkc bkc bkc @@ -252209,12 +254341,13 @@ dlD cjK loc xgP -aYk -dlD -dlD -dlD dlD +aYk dlD +pfM +prN +vfv +vvd vvd vvd vvd @@ -252223,7 +254356,6 @@ vvd vvd vvd vvd -aag dov xQG taj @@ -252262,11 +254394,11 @@ kmy cRI cRI bkc -wuh -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf +bXf bkc bkc bkc @@ -252409,7 +254541,7 @@ bkc bkc fvL hKA -ruW +jYb hKA cgA jiG @@ -252465,19 +254597,19 @@ nEP vBO kdp dgg +cGc +eMY mvk -vBG -mvk -mvk -mvk -sJJ -mvk +vQu +boI +fnc +fnc mvk oHk -mvk mSB -vBG mvk +eMY +nVF mvk mvk wbN @@ -252485,14 +254617,14 @@ uGl mvk jaa mvk -vXK -arE -arE -arE +mvk +mvk +mvk +mvk rJG lWn fJq -cqZ +pvk fBg fBg fBg @@ -252520,17 +254652,17 @@ pEe cRI cRI wsu -wuh +bXf qev -wuh +bXf wsu bkc uJG uJG -wTd -wTd +sLA +sLA uJG -wTd +sLA uJG sLA sLA @@ -252741,22 +254873,22 @@ iyd rXH iyd qcz -fnc -lpF -arE -arE -arE -lFo -ivW -ugJ -ivW +vXK +vXK +vXK +jNE +vXK +pmm +qAM +kPp +qJP fBg qQY iwb ylO vNR nNm -evm +nat tFB fBg bXo @@ -252935,7 +255067,7 @@ nxY ozQ uuH gdP -eAf +eGQ ozQ kUj xva @@ -252968,8 +255100,8 @@ sCs eNt bfp wIv -frh -uol +ivf +xxO dLa myO xoV @@ -252978,7 +255110,7 @@ cGn rWc ber ber -ber +gCv lnx xKW ber @@ -252999,22 +255131,22 @@ cGn qGE aop fnc -lpF -arE -arE -arE -lFo +fnc +fnc +fnc +fnc +nUf ivW ugJ -ivW -qub +pvk +hEo uMk gtN dzK vcf -hJE +oyF hFn -xWS +aTO fBg pcM gLa @@ -253197,7 +255329,7 @@ rhp oDo uZv kOZ -tkp +uox sST cNh tDr @@ -253257,19 +255389,19 @@ mHk aop mrC gAz -ejy -arE -tGl +iuS +iuS +iuS jFd wTS oGz -ivW -csh +pvk +ybI xDx uHJ bNu vcf -uZg +mZp hDr jur fBg @@ -253454,15 +255586,15 @@ jIr kVz jdH feK -klz +oYN qIY -tWl +aZx mKB phJ ouY phJ -hdT -alz +mgW +nAs vqy dDu wwl @@ -253476,7 +255608,7 @@ dDu cCL uRm aAz -dvq +ekJ dvq dvq xtI @@ -253519,9 +255651,9 @@ arE arE lFo ivW -vmf -ivW -aFr +jQJ +pvk +ltK jeV fpz jfa @@ -253704,14 +255836,14 @@ kUH pxM vzy ozQ -jHe +oZN lVZ wdp ozQ pLK -jOe +vVw loQ -lnp +quq qIY tHo eCc @@ -253733,7 +255865,7 @@ dDu jKZ pve pve -frh +wJM pve fJX bNO @@ -253777,7 +255909,7 @@ arE lFo gEz umf -tOg +ajH fBg kIz weh @@ -253805,7 +255937,7 @@ uXt eOs wsu wsu -pcS +wsu iEi mJw wsu @@ -253819,7 +255951,7 @@ wsu uJG ngN uJG -wTd +sLA bkc bkc bkc @@ -254291,7 +256423,7 @@ arE jFd uDc ugJ -ivW +pvk fBg rOC rCX @@ -254333,7 +256465,7 @@ wsu wsu uJG uJG -wTd +sLA bkc bkc bkc @@ -254495,8 +256627,8 @@ dDu dDu ivz nKD -sbr -bWP +uni +nVR aye riK iUX @@ -254548,7 +256680,7 @@ arE lFo ivW ugJ -ivW +pvk fBg ryM lgx @@ -254735,7 +256867,7 @@ ozQ jBm riE wpq -boT +oti dlp xhh vuV @@ -254745,7 +256877,7 @@ ezN qcT phJ kLQ -fAf +kSO qZS yfV dDu @@ -255007,7 +257139,7 @@ rmV xVs dDu dDu -wTi +jej tOT dDu hXZ @@ -255040,8 +257172,8 @@ rJX rJX rJX svl -kCo -xdl +ccq +bvs vxs rJX rJX @@ -255062,7 +257194,7 @@ arE lFo ivW ugJ -ivW +qgA bXo aeK xyr @@ -255087,7 +257219,7 @@ nBD aLY eFj cnn -vSU +bun wsu ezs mXW @@ -255511,7 +257643,7 @@ lQO pYg ozQ ozQ -jHf +qLZ gdL gUm phJ @@ -255551,7 +257683,7 @@ bkc bkc bkc pQk -kVN +tip dyF gUA ewa @@ -255576,7 +257708,7 @@ arE lFo ivW pUd -ivW +pvk bXo apH fvM @@ -255614,7 +257746,7 @@ iuA iuA iuA aBk -aBm +afd wsu uJG sLA @@ -255808,7 +257940,7 @@ bkc bkc bkc nih -taF +uTT nPz pQV egl @@ -255849,10 +257981,10 @@ gNR cgk vpa gin -gqZ +uKP uhX wre -enZ +kXv xQF beA iIS @@ -256090,7 +258222,7 @@ arE lFo ivW ugJ -ivW +pvk bXo mCQ kJp @@ -256314,7 +258446,7 @@ sGJ aKV onC qsD -yaG +uHg gFt bkc bkc @@ -256531,9 +258663,9 @@ kCp sKa hKA jIs -xxq -xxq -xxq +dDj +dDj +dDj oYv oYv hlg @@ -256604,7 +258736,7 @@ arE lFo ivW ugJ -ivW +pvk baL baL baL @@ -256625,7 +258757,7 @@ eAN pAv eAN nkw -esF +qeV sUe eAN aAV @@ -256891,7 +259023,7 @@ wsu wsu wsu vKt -tua +nHb yfN xlR ahf @@ -257118,7 +259250,7 @@ arE lFo ivW ugJ -ivW +pvk lWG mgf aPP @@ -257310,7 +259442,7 @@ eTx kwc xCN taU -kMA +fSu ntF oYv eBx @@ -257365,7 +259497,7 @@ tqz tuW tuW tuW -mHk +jFO aop kxH gAz @@ -257375,7 +259507,7 @@ tGl jFd rIc ugJ -ivW +pvk lWG deS fCq @@ -257393,7 +259525,7 @@ ieI eAN vay wdN -bcx +eVH nKR wDq qpp @@ -257638,9 +259770,9 @@ myk myk hcx iCP -qya +sOS jQQ -kwl +bTc doL baL baL @@ -257827,7 +259959,7 @@ lbB hCH hHJ brM -pYS +lyi ihk fGh boP @@ -257889,14 +260021,14 @@ tMg lFo ivW ugJ -ivW +pvk odS ybD qKH trA oej xaW -fRt +vlR xJh gwO baL @@ -258121,14 +260253,14 @@ siR bJq hjC hjC -koQ +gwn rrE hjC hjC hjC hjC iql -koQ +gwn oXQ hjC hjC @@ -258146,7 +260278,7 @@ tMg lFo ivW ugJ -ivW +pvk odS mgf aPP @@ -258156,7 +260288,7 @@ cEc cJS vJa nUl -qEH +cIn lcM dpw wEz @@ -258403,7 +260535,7 @@ tMg jFd oZE ugJ -ivW +pvk wGw deS gaj @@ -258589,7 +260721,7 @@ nxY brM rLE gLW -xmq +vxv wAv wAv mxa @@ -258644,7 +260776,7 @@ fvL bkc bkc bkc -bkc +fvL bkc bkc bkc @@ -258660,7 +260792,7 @@ tMg lFo ivW ugJ -ivW +pvk baL baL baL @@ -258850,9 +260982,9 @@ aec lRd mre kYV -tSH +tut lbB -aEK +mdM pgG brM pYS @@ -258917,10 +261049,10 @@ tMg lFo ivW kds -ivW +cqZ gjd sOJ -hTz +kle sOJ sOJ tzX @@ -258928,7 +261060,7 @@ sOJ jma fPt baL -utP +fDJ nnY iLd baL @@ -258965,7 +261097,7 @@ dgs hQS wsr dgs -xIY +coC dgs fvL fvL @@ -259191,7 +261323,7 @@ baL baL aJc aJc -aJc +hhB aJc mJT vyJ @@ -259355,7 +261487,7 @@ fvL fvL hKA kCp -jZN +nwG kCp uMw ppW @@ -259398,7 +261530,7 @@ cOE kBQ itq jJo -imT +bGq ots bkc rXX @@ -259458,7 +261590,7 @@ iQi jKE jHN kJu -ijI +wad uop dJv cZV @@ -259661,7 +261793,7 @@ bkc eGq gHC uxC -dKT +fde eGq bkc bkc @@ -259743,10 +261875,10 @@ jfI jfI jfI jKs -mEh +qcf bzD pCX -wVU +vIe kdy rOR fCD @@ -259935,7 +262067,7 @@ jdY huc iHr gJw -kLy +gvD jRJ nll nto @@ -259978,12 +262110,12 @@ lPj cZV mze hfp -pSe -quj +vaE +qff mze -vqC -uRx -qvx +tAW +jSp +kjz nBL dgs bbc @@ -260174,8 +262306,8 @@ cOE bkc eGq psQ -txF -dDz +uiK +pCW uZo iVt kGl @@ -260208,7 +262340,7 @@ uiV isz isz isz -hoR +qqZ hOA vGp jGJ @@ -260225,11 +262357,11 @@ ogo beU dpR bqS -mXe +cJU xBK rhE pXp -sHE +aOR aJc hVn eip @@ -260240,9 +262372,9 @@ luw xrd qhv bXE -bAQ +hTG bXE -cWN +cMZ fJN wiM wrE @@ -260373,7 +262505,7 @@ ijg ijg ijg dTc -fro +ugQ oFh nxY nxY @@ -260382,7 +262514,7 @@ kCp kGY hKA nxY -qNY +kCp hJs uMw daU @@ -260400,7 +262532,7 @@ toS obB nFa lmC -iFv +mpq cBG xvb mvl @@ -260420,7 +262552,7 @@ fwq kue bzN bzN -gLP +aZp bzN bzN bzN @@ -260482,23 +262614,23 @@ ogo xFj xBK uyj -fEJ +dFI xBK qWm xBK -vot +qVF aJc mze imS lPj fyh nxD -bIu +hVn fyh fMX mze hgq -fyh +bIu dgs brJ xsB @@ -260637,7 +262769,7 @@ quo cAf vdh qid -fro +ugQ mNj vdh gDH @@ -260646,9 +262778,9 @@ oas nJb tcr ilG -rXn +aGR wiP -wOc +ngm uCA tNy lRN @@ -260684,7 +262816,7 @@ epy epy ltz xMZ -ots +kNF kdb eGq oAW @@ -260739,7 +262871,7 @@ nmH uqE nZa qAz -lbI +eRr nZa sTV lUQ @@ -260889,7 +263021,7 @@ sDV rGc gRG nXc -fZz +jYQ rHO hGs hGs @@ -260903,7 +263035,7 @@ gEH uMw wvS ihC -aHT +vGY pYh fEa bsk @@ -260946,7 +263078,7 @@ fvL eGq ssw jhC -kjf +ygb myH aWo sPo @@ -260954,7 +263086,7 @@ jdL htP gnX htP -kff +eDt gJw cuD rmH @@ -260996,7 +263128,7 @@ ogo kuK xBK qzW -fEJ +dFI xBK qWm xBK @@ -261236,7 +263368,7 @@ uiV isz isz isz -cYZ +vdW hOA axQ jGJ @@ -261253,7 +263385,7 @@ ogo aCi nQL aEo -mXe +cJU xBK xhm ifN @@ -261266,7 +263398,7 @@ jSu vGw bIK uza -lyd +qXp eYU cDJ mNa @@ -261286,7 +263418,7 @@ fCg jSX gef eNj -bfs +tdH mJo vJs vBm @@ -261422,7 +263554,7 @@ fRP tVk oBG mia -lPM +dft pmD ihk wRT @@ -261496,7 +263628,7 @@ wHT mHW gdl axQ -qki +vvg aJc gVY gVY @@ -261717,7 +263849,7 @@ bkc eGq uAi euM -tpZ +doo eGq bkc bkc @@ -261760,9 +263892,9 @@ gVY gVY wda gnL -uxu +lgw gnL -kKa +fqb ogo ogo ogo @@ -261965,7 +264097,7 @@ cOE cOE cOE cOE -qKy +myM bDh kZj aCd @@ -261999,9 +264131,9 @@ tMg tMg tMg hug -ifd +ukK khN -juQ +ukK wwZ azk sOJ @@ -262033,7 +264165,7 @@ xMH mze cZV mNa -mNa +pSb fqA mNa mNa @@ -262289,14 +264421,14 @@ xKT eKz sBh qYz -sBh -pSb -mze -sBh +mNa +qDy +xGC +mNa jNK bzv jBe -ijm +mlt sBh bkc bkc @@ -262314,7 +264446,7 @@ dgs mym gef szF -cQv +vFy hQU omx pqP @@ -262453,7 +264585,7 @@ woE mmc wsA qCF -pYS +fps ihk fGh qEA @@ -262525,7 +264657,7 @@ cTV trv bGv pvu -fmX +sHc uaG hga uaG @@ -262546,9 +264678,9 @@ ipS eKz jsl soQ -xGC mze -hVn +mze +mze sBh wAN xrL @@ -262756,7 +264888,7 @@ fvL bkc bkc bkc -bkc +fvL bkc bkc bkc @@ -262769,7 +264901,7 @@ jKC tMg tMg tMg -tku +gec ukK ngs gmY @@ -262809,7 +264941,7 @@ fYa aSx fKh ijm -ijm +seH hVn aKO bkc @@ -263036,8 +265168,8 @@ pkr hEv hwj drC -sSy -onv +aHt +eIJ rhK hwj bap @@ -263261,14 +265393,14 @@ oMX aNI rgj rgj -sVw +wyf oSX rgj rgj rgj rgj hxF -sVw +wyf cZP rgj rgj @@ -263283,7 +265415,7 @@ jKC tMg tMg tMg -wRE +gec ukK ngs cWq @@ -263322,7 +265454,7 @@ mze aVW sBh jsj -fAX +ebl mjS fee sBh @@ -263481,10 +265613,10 @@ lpY snI skE qCF -pYS +iVi ihk kjR -mpH +kSK tbl biB icw @@ -263797,7 +265929,7 @@ jKC sJR sJR sJR -tku +gec ukK ngs gmY @@ -264311,7 +266443,7 @@ jKC sJR sJR sJR -wRE +gec ukK inq wqk @@ -264755,9 +266887,9 @@ kCp ijW gQy vdo -nKs -nKs -nKs +mom +mom +mom qCF qCF qCF @@ -264825,7 +266957,7 @@ jKC sJR sJR sJR -tku +gec ukK eHI gmY @@ -265116,7 +267248,7 @@ eMm hfz uxP lTd -pAZ +ctD dHw jLH trW @@ -265339,7 +267471,7 @@ jKC sJR sJR sJR -wRE +gec ukK eHI gmY @@ -265791,17 +267923,17 @@ pTU pTU pTU pTU -jtl +rDU eeN cUU lcY -uQH -cPm -dBk +cuX +wNU +sIr lcY -uQH +cuX tjg -dBk +sIr lcY hAa hAa @@ -265853,7 +267985,7 @@ jKC sJR sJR sJR -tku +gec ukK ioI hAJ @@ -265875,7 +268007,7 @@ jFL baa cCD foY -qWo +fZu hlb jhW bGG @@ -266046,7 +268178,7 @@ klY oSY phm bci -nOX +cpg pTU gTm sGT @@ -266105,7 +268237,7 @@ bkc dPJ ajv xqA -rCd +emp uMt vXd sJR @@ -266134,7 +268266,7 @@ nlt eJB qWo nzv -qWo +kjI eYr iik mze @@ -266308,7 +268440,7 @@ pTU ffJ eeN cUU -vsz +dPz uYi oRV kRj @@ -266367,21 +268499,21 @@ jKC sJR sJR sJR -wRE +gec ukK buw gmY qVz mdW xwB -ppH +wrF ipf -oZu +adn ewV xwB -ppH +wrF ipf -oZu +adn btO kMo oXN @@ -266390,7 +268522,7 @@ qHX fSw lLh cgD -qWo +dxq oOi qeC blB @@ -266565,7 +268697,7 @@ pTU jtl eeN cUU -kvG +gPq fgN axC xhr @@ -266646,8 +268778,8 @@ jFL cYx hmS wsH -qWo -qWo +oPt +tAB qWo oDB bGG @@ -266822,7 +268954,7 @@ pTU lmE eeN cUU -izL +cIF jQb oRV kRj @@ -266881,7 +269013,7 @@ jKC sJR sJR sJR -tku +gec ukK buw gmY @@ -267145,9 +269277,9 @@ gmY aTC kuR cMB -cMB +tJq ihO -cMB +etQ mgn etQ etQ @@ -267160,10 +269292,10 @@ hfp mze mze dUM +vAn qWo qWo -qWo -qWo +bWi bGG nBL eQH @@ -267395,14 +269527,14 @@ jKC sJR sJR sJR -wRE +gec ukK xYI grf jFL +xek jFL jWR -jWR jFL jWR hJq @@ -267426,7 +269558,7 @@ rwK fDO dHw tQW -pAZ +ctD eaz lHs iXR @@ -267622,7 +269754,7 @@ ydD pTU juP dTd -sTn +xLl dPJ bkc bkc @@ -267657,14 +269789,14 @@ rQO quw tnW jFL -tJq +bGQ stL iAN fLX -xOe -odQ otm +odQ otm +xOe iOW jFL fLM @@ -267674,9 +269806,9 @@ xia mze mze bGG +yjj qWo -qWo -qWo +jVi jhW qQn bnw @@ -267868,7 +270000,7 @@ phm phm phm kIn -hTo +nPL phm jrk phm @@ -267909,19 +270041,19 @@ jKC sJR sJR sJR -tku +gec ukK -eZN +awh uui jFL bGQ -kMo +bGQ +pyk kMo wXl -wHj sLZ nZz -cMB +kMo uCN jWR kSA @@ -267943,7 +270075,7 @@ uxP pnr nhT aLP -iHj +imj sNu uxP uxP @@ -268134,7 +270266,7 @@ pTU nOX iiT pTU -ajv +ano wbv ith uMt @@ -268163,24 +270295,24 @@ ajv xqA cvg uMt -vXd -sJR -dGn +rRp +rRp +rRp hXg rKb wmX -gmY +awK jFL kFL +bRc +fBr kMo kMo +aKJ kMo kMo -aKJ xwB -jFL -qYa -jWR +ooX fLM qJA jFL @@ -268419,24 +270551,24 @@ aaj slZ xqA fEy -jKC -sJR -sJR -sJR -wRE -ukK +fEy +fEy +fEy +fEy +sVv ukK +juQ gmY -jFL +aTC bRX egz uzo -ooX +ujT ujT ucP -qNX -jWR -pbA +kMo +qYa +jqW jWR lva iYb @@ -268622,12 +270754,12 @@ pTU pTU pTU pTU -thg +piR nZH -jKU +nrC hqa -knb -dTN +eTN +ehE lcY lcY lcY @@ -268675,26 +270807,26 @@ dHG cdB dHG tbm -fEy -jKC -sJR -sJR -sJR -gec -ukK -ukK +wRE +wRE +wRE +wRE +wRE +ebq +itY +gND gmY -jFL kDD +ewV kMo duz -jFL -jWR -dcD -jWR -jWR +kMo +kMo +kMo +qYa +qNX pbA -jWR +jFL mIg sTM jFL @@ -268711,14 +270843,14 @@ sBh sBh qkA sBh -sBh +pBJ sBh sBh sBh dQn uoz sBh -sBh +pBJ sBh uoz sBh @@ -268879,7 +271011,7 @@ vck uxy yaz phm -thg +piR vya lon mjT @@ -268890,7 +271022,7 @@ kOF atT eXp eUx -rAQ +vuA eXp eyX otD @@ -268910,7 +271042,7 @@ vJt pnD mZq vrB -iks +ddH fEy qFd vrB @@ -268923,7 +271055,7 @@ jeP fEy ayW dAU -iks +ddH aBZ dMD dMD @@ -268933,20 +271065,20 @@ rDj dMD dMD dMD -jFO -sJR -sJR -sJR +dMD +dMD +iUC +dMD rCn xfV xfV cwu -jFL +aTC rSc jFR hzd sBQ -gMD +jvf meT gMD gmd @@ -269136,7 +271268,7 @@ sWn jMy oLv phm -thg +piR tyK mki rhH @@ -269145,7 +271277,7 @@ lSj cxT iZN eaL -hRC +uQR qyT rJy wEE @@ -269402,7 +271534,7 @@ xXb abh gLD bow -usA +nvt wPG nMY eXp @@ -269436,11 +271568,11 @@ cUD rwI rwI rwI -aWH -eEq +rwI +qxP pfs eEq -eEq +cDR rQj fFn gHy @@ -269650,16 +271782,16 @@ nCM drz bQU upm -eYK +luW gTN xgf -mjT +lgM gIS efu cFH gnU dzH -qbF +exh fUw jAC bcM @@ -269693,8 +271825,8 @@ rNE rwI rwI rwI -bIO -cSB +rwI +nio aQz cqJ cSB @@ -269907,7 +272039,7 @@ cHB phm qMI pni -thg +piR tlS bjp mjT @@ -269950,7 +272082,7 @@ cUD rwI rwI rwI -cDR +rwI nio emS sCT @@ -270164,11 +272296,11 @@ rrU rrU qMI oIl -thg -pch +piR +agW ehK fKP -vlt +fZP kng eXp eXp @@ -270448,16 +272580,16 @@ gab bkr urL iJr +vnH jrc jrc -jrc -ryD +rtD hfj xOw bqm aPU htm -qpG +yeR jrc eIO cUD @@ -270478,7 +272610,7 @@ rUy nEJ gfP qQt -wfJ +xkf ifS gfP nfP @@ -270687,7 +272819,7 @@ bTE eXp ggb jVu -aQG +tcC qwv fWk eXp @@ -270752,7 +272884,7 @@ kbZ hbK rDM sQA -aQe +yad rKn rKn rKn @@ -270965,13 +273097,13 @@ xxH xxH wdF jrc -ryD -qpG +rtD +yeR iUn qOC iUn -ryD -qpG +rtD +yeR jrc eIO cUD @@ -271187,8 +273319,8 @@ lvl vIX ekc pdg -oNO -jYW +ioM +umz rrU qMI nOX @@ -271443,8 +273575,8 @@ bkc rrU oHb tiy -dfe -omG +pdg +pdg qBM rrU qMI @@ -271473,8 +273605,8 @@ nOX phm xxH mEB -rki -xSM +irY +ezg txh xxH eIO @@ -271701,7 +273833,7 @@ rrU rrU exZ jMb -jgl +rrP bXX rrU qMI @@ -271973,7 +274105,7 @@ gvT qzr xxH ufu -ghS +qso jvb uLl bto @@ -272012,7 +274144,7 @@ mmn sCT sCT cSB -hVU +qPE hUe bFK xAp @@ -272240,9 +274372,9 @@ fIT ccA fIT lZs -nMr +dnh qBx -nMr +dYX nMr ojQ vLI @@ -272266,7 +274398,7 @@ wBY bQg klB mmn -seH +cqJ cqJ cSB cSB @@ -272499,7 +274631,7 @@ nyx qIC nyx xxH -pyM +mio txh rki jYz @@ -272742,21 +274874,21 @@ lIq lIq nOX mHg -xxH -xxH -xxH +kqy +kqy +kqy qrm wXi -xxH -xxH -xxH -eVD -eVD +kqy +kqy +kqy +ijt +ijt uRu hSx -eVD -eVD -eVD +ijt +ijt +ijt spd rRE bKU @@ -272797,7 +274929,7 @@ hXX tCO jWC emV -hCi +bzt tYd rBQ emV @@ -272999,21 +275131,21 @@ sSR nTo pni kql -xxH +kqy uVm cHN sEN jHq cpb tqr -xxH +kqy huY mPn cJT mmJ vuI avO -eVD +ijt aUU kTg jGm @@ -273212,7 +275344,7 @@ tHM tHM lqg elc -iGd +hxM iGd eRL vcL @@ -273240,7 +275372,7 @@ qum qum ttj geQ -ofC +cmf lgE crF jlx @@ -273256,35 +275388,35 @@ pcL nOX nOX mHg -xxH +kqy grU sEN sEN jHq sEN -mfw -xxH +pYZ +kqy iJP -eIO +bDb ddg vtp -eIO +bDb mhJ -eVD +ijt qjp hQY mQF -rki +oRJ xxH eVD eVD +bmb eVD eVD eVD eVD eVD -eVD -eVD +bmb eVD eVD eVD @@ -273305,7 +275437,7 @@ bQg emV mLv fUI -ctn +wfw wVx inI dXv @@ -273513,7 +275645,7 @@ pTU pTU nOX jSZ -xxH +kqy aCP sEN jjV @@ -273525,9 +275657,9 @@ eSU eSU eSU eHF -eIO +bDb mhJ -eVD +ijt xZX fvc rwJ @@ -273770,21 +275902,21 @@ cRi gvT mDV xTQ -xxH +kqy grU sEN sEN iWr sEN qym -xxH +kqy cjM ubt ssu -hxi -eIO -mhJ -eVD +scq +dAX +wQi +ijt qAL ikK kKi @@ -274027,21 +276159,21 @@ phm phm pcL nOX -xxH +kqy lJL xQE pwo -hjr +fkE pvE wBP -xxH +kqy qjN niE caz hxi -eIO +bDb ygH -eVD +ijt xxH xxH xxH @@ -274284,21 +276416,21 @@ fgX fgX pTU pTU -xxH -xxH -xxH -xxH -xxH -xxH -xxH -xxH -eVD -eVD -eVD +kqy +kqy +kqy +kqy +kqy +kqy +kqy +kqy +ijt +ijt +ijt hxi -eIO +bDb tAj -eVD +ijt tUm gdY kIp @@ -274544,7 +276676,7 @@ uJG uJG uJG uJG -eVD +ijt lCs osk qRE @@ -274554,8 +276686,8 @@ qWI tns twE bDb -mhJ -eVD +wDL +ijt nJa llW yel @@ -274573,14 +276705,14 @@ tfc pMA rgA wjG -kIO +vld rGb uMz uUw uUw uUw gzW -rgA +umr uUw fVa hZY @@ -274801,18 +276933,18 @@ cYe cYe cYe cYe -kjl +nYP xaI vsd jFs atN wDO -sMB -eVD +wmn +ijt mOQ -eIO +bDb ihh -eVD +ijt wWg ntw nim @@ -274830,7 +276962,7 @@ qng uVI hCu soa -oeu +vOh lXG qEQ wnY @@ -274854,8 +276986,8 @@ cHE wPe rul laS -mJi -wSH +nTf +mBB kIc rLr kYa @@ -275061,15 +277193,15 @@ bkc ptw wOR wOR -lAf +mqY mTA ist fzB rOT dWV -eIO +nQi mhJ -eVD +ijt mxu ubd spv @@ -275093,7 +277225,7 @@ slB aSt mlY kvn -tEq +syf chb uUw bTe @@ -275315,18 +277447,18 @@ cYe cYe cYe cYe -kjl +nYP bqr cee lDc idI cvV sMB -eVD +ijt xVY -eIO +bDb mhJ -eVD +ijt lXW lra kIp @@ -275572,18 +277704,18 @@ bkc uJG bkc bkc -eVD +ijt eKy fDT kUd vEe ixi wvB -eVD +ijt idr xJG gDB -eVD +ijt ddN rvs uUw @@ -275829,18 +277961,18 @@ fvL fvL fvL fvL -eVD -eVD -eVD -eVD -eVD -eVD -eVD -eVD -eVD -eVD -eVD -eVD +ijt +ijt +ijt +ijt +ijt +ijt +ijt +ijt +ijt +ijt +ijt +ijt uUw uUw uUw @@ -276358,15 +278490,15 @@ wqh bio mIf uUw -mRb -mRb -mRb +uRz +uRz +uRz uUw ggF uUw -mRb -wsc -gph +uRz +oqr +sed uUw dvK uUw @@ -276616,7 +278748,7 @@ bio wXI pci dvK -dvK +dUZ pci dvK uNw @@ -276667,7 +278799,7 @@ nLv nLv iZC ibU -nbN +aci eZG kma laS @@ -276867,7 +278999,7 @@ xBD sld hBP bio -pNb +bjD eVl jkv bIC @@ -276879,14 +279011,14 @@ xkK tJJ pci pLd -vuF +thc dvK pci dvK uUw uUw iJl -cpN +xdy ekt uUw nUL @@ -276918,7 +279050,7 @@ mIb tBq tff czJ -cdd +fPV nLv nCj nLv @@ -277129,9 +279261,9 @@ iup bio sld uUw +qHS uUw -uUw -uUw +dTH pci tpe dTH @@ -277143,7 +279275,7 @@ ucy gCx uUw jdJ -ewT +plq dLk uUw nUL @@ -277387,8 +279519,8 @@ bio wXI aYZ xij -uYI -qsm +tLm +nna dvK tpe uUw @@ -277645,7 +279777,7 @@ sld tNu uYI nxI -wBi +rbC dvK fii uUw @@ -277895,15 +280027,15 @@ sld bio cwK mBe -pNb +omG vNX rMz sld nvm -uYI -uYI -qsm -vuF +tLm +tiq +tIY +eQx tpe uUw fPn @@ -278152,7 +280284,7 @@ pgs lWI jOs sld -pNb +fXx oqc ueD sld @@ -278163,7 +280295,7 @@ uUw fRz sFK uUw -uUw +dTH weL uUw uUw @@ -278193,7 +280325,7 @@ knv lnL bcR suw -bTg +aHL ovK gbe pCz @@ -278210,7 +280342,7 @@ uwH bEC uwH vhj -bbC +cSZ cCI fvL kdb @@ -278415,7 +280547,7 @@ bio wXI hfk uYI -uYI +tLm xZm dvK tpe @@ -278451,7 +280583,7 @@ bgI lqh phF lNX -byI +oZs azS emc bRP @@ -278926,7 +281058,7 @@ tdn jmQ iqW fVo -pbq +xnc flP gzl uUw @@ -278935,7 +281067,7 @@ dvK tpe vuF pci -pci +hZu vuF lMA uUw @@ -279448,15 +281580,15 @@ xxA uUw ggF uUw -mTT -irg -ikv +mCN +lOj +dns uUw xZm uUw -irg -laf -irg +lOj +tAC +lOj uUw jIK dbs @@ -279720,17 +281852,17 @@ eiJ cwe bkc fvL -kdb -kdb -kdb fvL -kdb -kdb -kdb fvL -kdb -kdb -kdb +fvL +fvL +fvL +fvL +fvL +fvL +fvL +fvL +fvL fvL uJG ngN @@ -279977,17 +282109,17 @@ esC cwe bkc fvL -kdb -kdb -kdb fvL -kdb -kdb -kdb fvL -kdb -kdb -kdb +fvL +fvL +fvL +fvL +fvL +fvL +fvL +fvL +fvL fvL uJG ngN @@ -280204,7 +282336,7 @@ bqA vxX isF vxX -rUN +pRi vxX gqy uet @@ -280234,17 +282366,17 @@ qzU cwe bkc fvL -kdb -kdb -kdb fvL -kdb -kdb -kdb fvL -kdb -kdb -kdb +fvL +fvL +fvL +fvL +fvL +fvL +fvL +fvL +fvL fvL uJG uJG @@ -281253,8 +283385,8 @@ vTB vTB vTB iAw -izA -izA +eFF +eFF iAw fsE jCI @@ -282264,7 +284396,7 @@ heE uHr rbS oxb -wRc +ffn uSx nAx iYs @@ -282523,7 +284655,7 @@ dNe lZl sFk iBI -qBU +vRR rul rul cdr @@ -282780,7 +284912,7 @@ bOZ vEU yeP pfp -pJG +cGS rul hDn rul @@ -283294,7 +285426,7 @@ wjQ jED aHo sIF -nUB +azI lmJ oJl xBS @@ -283810,9 +285942,9 @@ heE heE heE vTB -wuh +bXf wta -wuh +bXf vTB bkc fvL @@ -284066,11 +286198,11 @@ qGV dYv veL heE -wuh -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf +bXf bkc fvL kdb @@ -284323,11 +286455,11 @@ vLu aTK qsW heE -wuh -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf +bXf bkc fvL kdb @@ -284580,11 +286712,11 @@ uOA dmy veL heE -wuh -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf +bXf bkc fvL kdb @@ -284651,7 +286783,7 @@ bVc bVc bVc bVc -nDJ +qQI bVc bVc bVc @@ -284681,6 +286813,7 @@ kUq vNO wSw sLA +ngN uJG sLA sLA @@ -284727,7 +286860,6 @@ bkc bkc bkc bkc -bkc "} (216,1,2) = {" bkc @@ -284837,11 +286969,11 @@ heE heE heE heE -wuh -wuh -wuh -wuh -wuh +bXf +bXf +bXf +bXf +bXf bkc fvL kdb @@ -284939,6 +287071,7 @@ vNO mpD vet vet +vet kVS uJG sLA @@ -284984,7 +287117,6 @@ bkc bkc bkc bkc -bkc "} (217,1,2) = {" bkc @@ -285095,9 +287227,9 @@ uJG bkc uJG bkc -wuh -wuh -wuh +bXf +bXf +bXf bkc fvL fvL @@ -285185,7 +287317,7 @@ uJG tXL tXL tXL -uJG +tXL uJG uJG uJG @@ -285193,6 +287325,7 @@ uJG uJG kUq bHU +mcT bVc bVc bVc @@ -285241,7 +287374,6 @@ bkc bkc bkc bkc -bkc "} (218,1,2) = {" bkc @@ -285406,12 +287538,12 @@ oEd hPs hPs iec -sNc +oeF mLI hPs hPs uJG -xvY +aSQ uJG uJG uJG @@ -285420,7 +287552,7 @@ uJG uJG uJG uJG -lFM +kEd uJG bkc bkc @@ -285445,12 +287577,13 @@ tXL tXL tXL tXL +tXL aAp bkc bkc -bkc vKV eTm +eTm vKV fUm tVj @@ -285498,7 +287631,6 @@ bkc bkc bkc bkc -bkc "} (219,1,2) = {" bkc @@ -285697,6 +287829,7 @@ tXL tXL tXL tXL +tXL weZ tXL tXL @@ -285755,7 +287888,6 @@ bkc bkc bkc bkc -bkc "} (220,1,2) = {" bkc @@ -285951,6 +288083,7 @@ alj alj tXL azJ +cgz bAf tXL lpw @@ -285967,7 +288100,7 @@ bkc bkc uJG bkc -pYO +rnU mYD ngN ngN @@ -286012,7 +288145,6 @@ bkc bkc bkc bkc -bkc "} (221,1,2) = {" bkc @@ -286177,7 +288309,7 @@ hPs hPs eXD bUT -uud +sVs aFC qzQ hPs @@ -286209,6 +288341,7 @@ nFp tXL fQg uuN +uuN uZd uuN uuN @@ -286269,7 +288402,6 @@ bkc bkc bkc bkc -bkc "} (222,1,2) = {" bkc @@ -286439,13 +288571,13 @@ iqK iqK iqK iqK -hPs -hPs -hPs -hPs -hPs -hPs -hPs +hBC +hBC +hBC +hBC +hBC +hBC +hBC mRg mRg mRg @@ -286471,9 +288603,10 @@ nHa mwk swI uHe -cgz dBr -qQJ +uuN +wHj +tXL tXL tXL tXL @@ -286526,7 +288659,6 @@ bkc bkc bkc bkc -bkc "} (223,1,2) = {" bkc @@ -286696,13 +288828,13 @@ nUo blK wCX qBf -hPs -hPs +hBC +hBC kdv wMZ saL -hPs -hPs +hBC +hBC uht uht vEb @@ -286730,6 +288862,7 @@ eYy dxb eYy eYy +swm alh pQj tXL @@ -286783,7 +288916,6 @@ bkc bkc bkc bkc -bkc "} (224,1,2) = {" bkc @@ -286929,7 +289061,7 @@ irM ylG irM irM -raq +kSh xhu ufU wIl @@ -286949,17 +289081,17 @@ hmo lhf fqk pIf -vOX +sjx bJz lhf hNL -hPs +hBC eoO nvR -dqM +qNY pxG vQd -hPs +hBC lrh mfy bTQ @@ -286983,6 +289115,7 @@ swI dlQ kqz gDw +bBs xYH nMc inj @@ -287040,7 +289173,6 @@ bkc bkc bkc bkc -bkc "} (225,1,2) = {" bkc @@ -287200,7 +289332,7 @@ bGi iEU cTF jjQ -dhH +rgn iqK xWx mKl @@ -287210,13 +289342,13 @@ jWS mKl mKl rlg -hPs +hBC gjA -dbP +kCy bNE -uYu +gkR pzK -hPs +hBC lvm lvm grM @@ -287240,6 +289372,7 @@ swI faA tNm iGZ +aRS tNm tNm soF @@ -287297,7 +289430,6 @@ bkc bkc bkc bkc -bkc "} (226,1,2) = {" bkc @@ -287497,12 +289629,13 @@ cux bzx tNm gYE -lZX +fTL +eVR tNm gSd pfL sps -oBS +euc vpJ vpJ wxy @@ -287554,7 +289687,6 @@ bkc bkc bkc bkc -bkc "} (227,1,2) = {" bkc @@ -287713,7 +289845,7 @@ jQf jQf dVa qja -onm +bcE sox iqK doh @@ -287724,13 +289856,13 @@ jWS mKl mKl gBH -hPs +hBC qSz cdo eOV qDg ufB -hPs +hBC uTE uTE mVF @@ -287754,6 +289886,7 @@ swI mvU tNm mIu +ldZ tNm tNm pVK @@ -287811,7 +289944,6 @@ bkc bkc bkc bkc -bkc "} (228,1,2) = {" bkc @@ -287953,7 +290085,7 @@ lTi wVo fCU oIt -hcF +cnG gre grS acN @@ -287966,7 +290098,7 @@ sLA cYe hUq smg -gmR +pvU oRB hYf qlj @@ -287981,13 +290113,13 @@ nrj oWE rzI cxX -hPs +hBC cpJ -eKM -dqM +gTU +qNY gfK wcF -hPs +hBC nBI vwV aPT @@ -288011,6 +290143,7 @@ swI suK kqz uqh +lcB xYH nMc qcV @@ -288068,7 +290201,6 @@ bkc bkc bkc bkc -bkc "} (229,1,2) = {" bkc @@ -288238,13 +290370,13 @@ cBD iJU wCX gke -hPs -hPs +hBC +hBC hQp sXu wtP -hPs -hPs +hBC +hBC uht uht hgi @@ -288272,6 +290404,7 @@ oHL jJM eYy eYy +smD gKX erC tXL @@ -288325,7 +290458,6 @@ bkc bkc bkc bkc -bkc "} (230,1,2) = {" bkc @@ -288495,13 +290627,13 @@ iqK iqK iqK iqK -hPs -hPs -hPs -hPs -hPs -hPs -hPs +hBC +hBC +hBC +hBC +hBC +hBC +hBC mRg mRg mRg @@ -288527,9 +290659,10 @@ nHa joi swI ajO -smD xoA -bvE +vuk +swN +tXL tXL tXL tXL @@ -288582,7 +290715,6 @@ bkc bkc bkc bkc -bkc "} (231,1,2) = {" bkc @@ -288779,13 +290911,14 @@ pFH tXL pRz vuk -kUX vuk +kUX vuk vuk vuk -bAf bvE +bAf +bAU tXL tXL tXL @@ -288839,7 +290972,6 @@ bkc bkc bkc bkc -bkc "} (232,1,2) = {" bkc @@ -289035,6 +291167,7 @@ alj alj tXL dJk +edG bAf tXL fgT @@ -289051,7 +291184,7 @@ bkc bkc uJG bkc -pYO +rnU mYD ngN ngN @@ -289096,7 +291229,6 @@ bkc bkc bkc bkc -bkc "} (233,1,2) = {" bkc @@ -289295,6 +291427,7 @@ tXL tXL tXL tXL +tXL apj tXL tXL @@ -289353,7 +291486,6 @@ bkc bkc bkc bkc -bkc "} (234,1,2) = {" bkc @@ -289520,7 +291652,7 @@ vxn lJK dlj rXR -exH +saP ssd uJG qpJ @@ -289557,12 +291689,13 @@ tXL tXL tXL tXL +tXL tCb bkc bkc -bkc kVS vet +vet kVS uCS tVj @@ -289572,7 +291705,6 @@ bkc bkc bkc bkc -bkc xJy bkc bkc @@ -289775,7 +291907,7 @@ bkc ssd ssd wfa -ouv +oIS qtP ssd ssd @@ -289811,7 +291943,7 @@ uJG tXL tXL tXL -uJG +tXL uJG uJG uJG @@ -289822,6 +291954,7 @@ fsj bVc bVc bVc +bVc sSY mYD uJG @@ -289867,7 +292000,6 @@ bkc bkc bkc bkc -bkc "} (236,1,2) = {" bkc @@ -290079,6 +292211,7 @@ tVj urV vKV eTm +eTm vKV uJG sLA @@ -290124,7 +292257,6 @@ bkc bkc bkc bkc -bkc "} (237,1,2) = {" bkc @@ -290305,7 +292437,7 @@ mcT mcT mcT mcT -hpi +shA mcT mcT mcT @@ -290335,6 +292467,7 @@ kUq tVj wSw sLA +ngN uJG sLA sLA @@ -290381,7 +292514,6 @@ bkc bkc bkc bkc -bkc "} (238,1,2) = {" bkc diff --git a/_maps/map_files/shuttles/admin_admin.dmm b/_maps/map_files/shuttles/admin_admin.dmm index 69eead89e69f..4705a3b27af8 100644 --- a/_maps/map_files/shuttles/admin_admin.dmm +++ b/_maps/map_files/shuttles/admin_admin.dmm @@ -302,7 +302,9 @@ name = "administration shuttle"; roundstart_move = "admin_away"; timid = 1; - width = 18 + width = 18; + port_direction = 2; + preferred_direction = 8 }, /obj/machinery/door/airlock/external{ frequency = 1331; diff --git a/_maps/map_files/shuttles/admin_alien.dmm b/_maps/map_files/shuttles/admin_alien.dmm index 82746b1582c1..9e9dd7294f42 100644 --- a/_maps/map_files/shuttles/admin_alien.dmm +++ b/_maps/map_files/shuttles/admin_alien.dmm @@ -551,7 +551,9 @@ id = "admin"; name = "administration shuttle"; roundstart_move = "admin_away"; - width = 18 + width = 18; + port_direction = 2; + preferred_direction = 8 }, /obj/machinery/door/airlock/external{ frequency = 1331; diff --git a/_maps/map_files/shuttles/admin_armory.dmm b/_maps/map_files/shuttles/admin_armory.dmm index 8bd1d8dd154e..ba389eb175d9 100644 --- a/_maps/map_files/shuttles/admin_armory.dmm +++ b/_maps/map_files/shuttles/admin_armory.dmm @@ -386,7 +386,9 @@ name = "NRV Sparta"; roundstart_move = "admin_away"; timid = 1; - width = 18 + width = 18; + port_direction = 2; + preferred_direction = 8 }, /turf/simulated/floor/shuttle{ icon = 'icons/turf/floors.dmi'; diff --git a/_maps/map_files/shuttles/admin_club.dmm b/_maps/map_files/shuttles/admin_club.dmm index 44af234de908..39c541c3447a 100644 --- a/_maps/map_files/shuttles/admin_club.dmm +++ b/_maps/map_files/shuttles/admin_club.dmm @@ -695,7 +695,9 @@ name = "administration shuttle"; roundstart_move = "admin_away"; timid = 1; - width = 18 + width = 18; + port_direction = 2; + preferred_direction = 8 }, /obj/machinery/door/airlock/external{ frequency = 1331; diff --git a/_maps/map_files/shuttles/admin_hospital.dmm b/_maps/map_files/shuttles/admin_hospital.dmm index 87258fc2e5bc..8bcd211bd483 100644 --- a/_maps/map_files/shuttles/admin_hospital.dmm +++ b/_maps/map_files/shuttles/admin_hospital.dmm @@ -720,7 +720,9 @@ name = "NHV Asclepius"; roundstart_move = "admin_away"; timid = 1; - width = 18 + width = 18; + port_direction = 2; + preferred_direction = 8 }, /obj/machinery/door/airlock/external{ frequency = 1331; diff --git a/_maps/map_files/shuttles/admin_interview.dmm b/_maps/map_files/shuttles/admin_interview.dmm index 636b40deeffd..378e6fb48fc4 100644 --- a/_maps/map_files/shuttles/admin_interview.dmm +++ b/_maps/map_files/shuttles/admin_interview.dmm @@ -764,7 +764,9 @@ name = "administration shuttle"; roundstart_move = "admin_away"; timid = 1; - width = 18 + width = 18; + port_direction = 2; + preferred_direction = 8 }, /obj/machinery/door/airlock/external{ frequency = 1331; diff --git a/_maps/map_files/shuttles/cargo_base.dmm b/_maps/map_files/shuttles/cargo_base.dmm index ec5a950183e3..11aef1a701a9 100644 --- a/_maps/map_files/shuttles/cargo_base.dmm +++ b/_maps/map_files/shuttles/cargo_base.dmm @@ -60,7 +60,8 @@ req_access = list(31) }, /obj/docking_port/mobile/supply{ - timid = 1 + timid = 1; + port_direction = 4 }, /turf/simulated/floor/shuttle, /area/shuttle/supply) diff --git a/_maps/map_files/shuttles/emergency_bar.dmm b/_maps/map_files/shuttles/emergency_bar.dmm index 41c3251a2326..9956cb41b581 100644 --- a/_maps/map_files/shuttles/emergency_bar.dmm +++ b/_maps/map_files/shuttles/emergency_bar.dmm @@ -286,7 +286,8 @@ height = 13; name = "The Emergency Escape Bar"; timid = 1; - width = 24 + width = 24; + port_direction = 8 }, /obj/machinery/door/airlock/shuttle{ aiControlDisabled = 1; diff --git a/_maps/map_files/shuttles/emergency_clown.dmm b/_maps/map_files/shuttles/emergency_clown.dmm index e26948b9c1a6..e17eb241c6c6 100644 --- a/_maps/map_files/shuttles/emergency_clown.dmm +++ b/_maps/map_files/shuttles/emergency_clown.dmm @@ -181,7 +181,8 @@ height = 13; name = "Snappop(tm)!"; timid = 1; - width = 24 + width = 24; + port_direction = 8 }, /obj/machinery/door/airlock/shuttle{ aiControlDisabled = 1; diff --git a/_maps/map_files/shuttles/emergency_cramped.dmm b/_maps/map_files/shuttles/emergency_cramped.dmm index 36a2ef668a17..14110c42fe6b 100644 --- a/_maps/map_files/shuttles/emergency_cramped.dmm +++ b/_maps/map_files/shuttles/emergency_cramped.dmm @@ -80,7 +80,8 @@ }, /obj/docking_port/mobile/emergency{ name = "Secure Transport Vessel 5"; - timid = 1 + timid = 1; + port_direction = 8 }, /turf/simulated/floor/shuttle{ icon = 'icons/turf/floors.dmi'; diff --git a/_maps/map_files/shuttles/emergency_cyb.dmm b/_maps/map_files/shuttles/emergency_cyb.dmm index f5cc5d8ceb36..0b381ff8faf7 100644 --- a/_maps/map_files/shuttles/emergency_cyb.dmm +++ b/_maps/map_files/shuttles/emergency_cyb.dmm @@ -485,7 +485,8 @@ dwidth = 11; height = 18; timid = 1; - width = 29 + width = 29; + port_direction = 8 }, /turf/simulated/floor/plasteel, /area/shuttle/escape) diff --git a/_maps/map_files/shuttles/emergency_dept.dmm b/_maps/map_files/shuttles/emergency_dept.dmm index 3e42cfa6e953..49e07237764c 100644 --- a/_maps/map_files/shuttles/emergency_dept.dmm +++ b/_maps/map_files/shuttles/emergency_dept.dmm @@ -513,7 +513,8 @@ dwidth = 11; height = 18; timid = 1; - width = 29 + width = 29; + port_direction = 8 }, /turf/simulated/floor/plasteel, /area/shuttle/escape) diff --git a/_maps/map_files/shuttles/emergency_meta.dmm b/_maps/map_files/shuttles/emergency_meta.dmm index 9b686e5ec794..076e8e57ac3c 100644 --- a/_maps/map_files/shuttles/emergency_meta.dmm +++ b/_maps/map_files/shuttles/emergency_meta.dmm @@ -836,7 +836,9 @@ height = 14; name = "Meta emergency shuttle"; timid = 1; - width = 25 + width = 25; + port_direction = 8; + preferred_direction = 4 }, /obj/machinery/door/airlock/shuttle{ id_tag = "s_docking_airlock"; diff --git a/_maps/map_files/shuttles/emergency_mil.dmm b/_maps/map_files/shuttles/emergency_mil.dmm index 16b5c37634a5..128bf9b82ff7 100644 --- a/_maps/map_files/shuttles/emergency_mil.dmm +++ b/_maps/map_files/shuttles/emergency_mil.dmm @@ -389,7 +389,8 @@ dwidth = 11; height = 13; timid = 1; - width = 24 + width = 24; + port_direction = 8 }, /obj/machinery/door/airlock/shuttle{ aiControlDisabled = 1; diff --git a/_maps/map_files/shuttles/emergency_narnar.dmm b/_maps/map_files/shuttles/emergency_narnar.dmm index 8ccb23347572..754f8b6dc71a 100644 --- a/_maps/map_files/shuttles/emergency_narnar.dmm +++ b/_maps/map_files/shuttles/emergency_narnar.dmm @@ -199,7 +199,8 @@ height = 13; name = "Shuttle 667"; timid = 1; - width = 24 + width = 24; + port_direction = 8 }, /obj/machinery/door/airlock/cult/friendly, /turf/simulated/floor/engine/cult, diff --git a/_maps/map_files/shuttles/emergency_old.dmm b/_maps/map_files/shuttles/emergency_old.dmm index 16a8c69e1971..f4eddc3f1c52 100644 --- a/_maps/map_files/shuttles/emergency_old.dmm +++ b/_maps/map_files/shuttles/emergency_old.dmm @@ -32,7 +32,8 @@ dwidth = 11; height = 13; timid = 1; - width = 24 + width = 24; + port_direction = 8 }, /obj/machinery/door/airlock/shuttle{ aiControlDisabled = 1; diff --git a/_maps/map_files/shuttles/ferry_SMgen.dmm b/_maps/map_files/shuttles/ferry_SMgen.dmm index 1dd08b46cbe3..9230195ae249 100644 --- a/_maps/map_files/shuttles/ferry_SMgen.dmm +++ b/_maps/map_files/shuttles/ferry_SMgen.dmm @@ -93,7 +93,8 @@ name = "ferry shuttle"; roundstart_move = "ferry_away"; timid = 1; - width = 5 + width = 5; + preferred_direction = 4 }, /obj/structure/fans/tiny, /obj/machinery/door/airlock/shuttle{ diff --git a/_maps/map_files/shuttles/ferry_base.dmm b/_maps/map_files/shuttles/ferry_base.dmm index 3539323eb643..2d48bfee719f 100644 --- a/_maps/map_files/shuttles/ferry_base.dmm +++ b/_maps/map_files/shuttles/ferry_base.dmm @@ -80,7 +80,8 @@ id = "ferry"; name = "ferry shuttle"; roundstart_move = "ferry_away"; - width = 5 + width = 5; + preferred_direction = 4 }, /turf/simulated/floor/shuttle, /area/shuttle/transport) diff --git a/_maps/map_files/shuttles/ferry_cargo.dmm b/_maps/map_files/shuttles/ferry_cargo.dmm index ef174ea9ec83..33193520c356 100644 --- a/_maps/map_files/shuttles/ferry_cargo.dmm +++ b/_maps/map_files/shuttles/ferry_cargo.dmm @@ -69,7 +69,8 @@ name = "ferry shuttle"; roundstart_move = "ferry_away"; timid = 1; - width = 5 + width = 5; + preferred_direction = 4 }, /obj/structure/fans/tiny, /turf/simulated/floor/shuttle, diff --git a/_maps/map_files/shuttles/ferry_chem.dmm b/_maps/map_files/shuttles/ferry_chem.dmm index 7c5bc9d6b737..5a2d29dda084 100644 --- a/_maps/map_files/shuttles/ferry_chem.dmm +++ b/_maps/map_files/shuttles/ferry_chem.dmm @@ -83,7 +83,8 @@ name = "ferry shuttle"; roundstart_move = "ferry_away"; timid = 1; - width = 5 + width = 5; + preferred_direction = 4 }, /obj/structure/fans/tiny, /turf/simulated/floor/shuttle, diff --git a/_maps/map_files/shuttles/ferry_clown.dmm b/_maps/map_files/shuttles/ferry_clown.dmm index 5216eb4bbb50..79fb01110895 100644 --- a/_maps/map_files/shuttles/ferry_clown.dmm +++ b/_maps/map_files/shuttles/ferry_clown.dmm @@ -99,7 +99,8 @@ name = "ferry shuttle"; roundstart_move = "ferry_away"; timid = 1; - width = 5 + width = 5; + preferred_direction = 4 }, /obj/structure/fans/tiny, /obj/machinery/door/airlock/bananium/glass{ diff --git a/_maps/map_files/shuttles/ferry_cult.dmm b/_maps/map_files/shuttles/ferry_cult.dmm index 094cacde69ac..9c9d8e7c624f 100644 --- a/_maps/map_files/shuttles/ferry_cult.dmm +++ b/_maps/map_files/shuttles/ferry_cult.dmm @@ -97,7 +97,8 @@ name = "ferry shuttle"; roundstart_move = "ferry_away"; timid = 1; - width = 5 + width = 5; + preferred_direction = 4 }, /turf/simulated/floor/engine/cult, /area/shuttle/transport) diff --git a/_maps/map_files/shuttles/ferry_deepdarkdungeon.dmm b/_maps/map_files/shuttles/ferry_deepdarkdungeon.dmm index 1194537a946a..63fd0a5eb3be 100644 --- a/_maps/map_files/shuttles/ferry_deepdarkdungeon.dmm +++ b/_maps/map_files/shuttles/ferry_deepdarkdungeon.dmm @@ -50,7 +50,8 @@ name = "ferry shuttle"; roundstart_move = "ferry_away"; timid = 1; - width = 5 + width = 5; + preferred_direction = 4 }, /obj/structure/fans/tiny, /obj/machinery/door/airlock/hatch{ diff --git a/_maps/map_files/shuttles/ferry_doomsday.dmm b/_maps/map_files/shuttles/ferry_doomsday.dmm index 4e910c53ff62..265517293afd 100644 --- a/_maps/map_files/shuttles/ferry_doomsday.dmm +++ b/_maps/map_files/shuttles/ferry_doomsday.dmm @@ -70,7 +70,8 @@ name = "ferry shuttle"; roundstart_move = "ferry_away"; timid = 1; - width = 5 + width = 5; + preferred_direction = 4 }, /obj/structure/fans/tiny, /obj/machinery/door/airlock/shuttle{ diff --git a/_maps/map_files/shuttles/ferry_meat.dmm b/_maps/map_files/shuttles/ferry_meat.dmm index aca9a9bee305..c9679ea6c2d5 100644 --- a/_maps/map_files/shuttles/ferry_meat.dmm +++ b/_maps/map_files/shuttles/ferry_meat.dmm @@ -125,7 +125,8 @@ name = "ferry shuttle"; roundstart_move = "ferry_away"; timid = 1; - width = 5 + width = 5; + preferred_direction = 4 }, /turf/simulated/floor/shuttle, /area/shuttle/transport) diff --git a/_maps/map_files/shuttles/ferry_medical.dmm b/_maps/map_files/shuttles/ferry_medical.dmm index 4ae45f281dc7..2874b7f20f99 100644 --- a/_maps/map_files/shuttles/ferry_medical.dmm +++ b/_maps/map_files/shuttles/ferry_medical.dmm @@ -75,7 +75,8 @@ name = "ferry shuttle"; roundstart_move = "ferry_away"; timid = 1; - width = 5 + width = 5; + preferred_direction = 4 }, /obj/structure/fans/tiny, /obj/machinery/door/airlock/shuttle{ diff --git a/_maps/map_files/shuttles/ferry_meteorshelp.dmm b/_maps/map_files/shuttles/ferry_meteorshelp.dmm index 69ed833962ed..e7d1734ada92 100644 --- a/_maps/map_files/shuttles/ferry_meteorshelp.dmm +++ b/_maps/map_files/shuttles/ferry_meteorshelp.dmm @@ -23,7 +23,8 @@ name = "ferry shuttle"; roundstart_move = "ferry_away"; timid = 1; - width = 5 + width = 5; + preferred_direction = 4 }, /obj/structure/fans/tiny, /obj/machinery/door/airlock/shuttle{ diff --git a/_maps/map_files/shuttles/ferry_mime.dmm b/_maps/map_files/shuttles/ferry_mime.dmm index 768d2afbfe75..aee1beb5e252 100644 --- a/_maps/map_files/shuttles/ferry_mime.dmm +++ b/_maps/map_files/shuttles/ferry_mime.dmm @@ -50,7 +50,8 @@ name = "ferry shuttle"; roundstart_move = "ferry_away"; timid = 1; - width = 5 + width = 5; + preferred_direction = 4 }, /obj/structure/fans/tiny, /obj/machinery/door/airlock/tranquillite{ diff --git a/_maps/map_files/shuttles/ferry_prisoner.dmm b/_maps/map_files/shuttles/ferry_prisoner.dmm index 1df393b50da9..aa785fe5592d 100644 --- a/_maps/map_files/shuttles/ferry_prisoner.dmm +++ b/_maps/map_files/shuttles/ferry_prisoner.dmm @@ -15,7 +15,8 @@ name = "ferry shuttle"; roundstart_move = "ferry_away"; timid = 1; - width = 5 + width = 5; + preferred_direction = 4 }, /obj/structure/fans/tiny, /obj/machinery/door/airlock/shuttle{ diff --git a/_maps/map_files/shuttles/ferry_slave.dmm b/_maps/map_files/shuttles/ferry_slave.dmm index 30d91567d8b7..d5b47d09ba38 100644 --- a/_maps/map_files/shuttles/ferry_slave.dmm +++ b/_maps/map_files/shuttles/ferry_slave.dmm @@ -155,7 +155,8 @@ name = "ferry shuttle"; roundstart_move = "ferry_away"; timid = 1; - width = 5 + width = 5; + preferred_direction = 4 }, /obj/structure/fans/tiny, /turf/simulated/floor/shuttle, diff --git a/_maps/map_files/shuttles/ferry_theatrehelp.dmm b/_maps/map_files/shuttles/ferry_theatrehelp.dmm index c55b1a399979..9690851fb4f9 100644 --- a/_maps/map_files/shuttles/ferry_theatrehelp.dmm +++ b/_maps/map_files/shuttles/ferry_theatrehelp.dmm @@ -57,7 +57,8 @@ name = "ferry shuttle"; roundstart_move = "ferry_away"; timid = 1; - width = 5 + width = 5; + preferred_direction = 4 }, /obj/structure/fans/tiny, /obj/machinery/door/airlock/shuttle{ diff --git a/_maps/map_files/shuttles/ferry_ussp.dmm b/_maps/map_files/shuttles/ferry_ussp.dmm index 88315f76b2b1..b37422a4f48c 100644 --- a/_maps/map_files/shuttles/ferry_ussp.dmm +++ b/_maps/map_files/shuttles/ferry_ussp.dmm @@ -15,7 +15,8 @@ name = "ferry shuttle"; roundstart_move = "ferry_away"; timid = 1; - width = 5 + width = 5; + preferred_direction = 4 }, /obj/structure/fans/tiny, /obj/machinery/door/airlock/shuttle{ diff --git a/_maps/map_files/shuttles/ferry_vip.dmm b/_maps/map_files/shuttles/ferry_vip.dmm index eedc1b6bbfaf..b3a2a8c7a1b9 100644 --- a/_maps/map_files/shuttles/ferry_vip.dmm +++ b/_maps/map_files/shuttles/ferry_vip.dmm @@ -158,7 +158,8 @@ name = "ferry shuttle"; roundstart_move = "ferry_away"; timid = 1; - width = 5 + width = 5; + preferred_direction = 4 }, /obj/structure/fans/tiny, /obj/machinery/door/airlock/shuttle{ diff --git a/_maps/map_files/shuttles/ferry_zoo.dmm b/_maps/map_files/shuttles/ferry_zoo.dmm index 736c225ce9e5..898d9d54eb25 100644 --- a/_maps/map_files/shuttles/ferry_zoo.dmm +++ b/_maps/map_files/shuttles/ferry_zoo.dmm @@ -126,7 +126,8 @@ name = "ferry shuttle"; roundstart_move = "ferry_away"; timid = 1; - width = 5 + width = 5; + preferred_direction = 4 }, /obj/structure/fans/tiny, /turf/simulated/floor/noslip{ diff --git a/_maps/map_files/templates/piratbase.dmm b/_maps/map_files/templates/piratbase.dmm index b2937e83da79..881a8228388a 100644 --- a/_maps/map_files/templates/piratbase.dmm +++ b/_maps/map_files/templates/piratbase.dmm @@ -705,7 +705,8 @@ name = "Pirate Corvette"; rebuildable = 1; width = 17; - dwidth = 8 + dwidth = 8; + port_direction = 4 }, /obj/docking_port/stationary{ dir = 8; diff --git a/code/__DEFINES/MC.dm b/code/__DEFINES/MC.dm index 397ab30cc3a5..504bcb60d223 100644 --- a/code/__DEFINES/MC.dm +++ b/code/__DEFINES/MC.dm @@ -98,6 +98,14 @@ /datum/controller/subsystem/processing/##X/fire() {..() /*just so it shows up on the profiler*/} \ /datum/controller/subsystem/processing/##X +#define FLUID_SUBSYSTEM_DEF(X) GLOBAL_REAL(SS##X, /datum/controller/subsystem/fluids/##X);\ +/datum/controller/subsystem/fluids/##X/New(){\ + NEW_SS_GLOBAL(SS##X);\ + PreInit();\ +}\ +/datum/controller/subsystem/fluids/##X/fire() {..() /*just so it shows up on the profiler*/} \ +/datum/controller/subsystem/fluids/##X + #define TIMER_SUBSYSTEM_DEF(X) GLOBAL_REAL(SS##X, /datum/controller/subsystem/timer/##X);\ /datum/controller/subsystem/timer/##X/New(){\ NEW_SS_GLOBAL(SS##X);\ diff --git a/code/__DEFINES/_globals.dm b/code/__DEFINES/_globals.dm index 5eff5ebbc576..57f2abb3d415 100644 --- a/code/__DEFINES/_globals.dm +++ b/code/__DEFINES/_globals.dm @@ -31,6 +31,8 @@ #define GLOBAL_LIST_INIT_TYPED(X, Typepath, InitValue) GLOBAL_RAW(/list##Typepath/X); GLOBAL_MANAGED(X, InitValue) +#define GLOBAL_LIST_EMPTY_TYPED(X, Typepath) GLOBAL_LIST_INIT_TYPED(X, Typepath, list()) + #define GLOBAL_DATUM_INIT(X, Typepath, InitValue) GLOBAL_RAW(Typepath/##X); GLOBAL_MANAGED(X, InitValue) #define GLOBAL_VAR(X) GLOBAL_RAW(/##X); GLOBAL_UNMANAGED(X) diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 943ed85de7f6..0b0e1dc9410a 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -69,3 +69,6 @@ #define ADMIN_VERBOSEJMP(src) "[src ? "[AREACOORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" #define ADMIN_SHOWDETAILS(mask, content) "[mask]" + +#define BAN_HOURS * 60 +#define BAN_DAYS BAN_HOURS * 24 diff --git a/code/__DEFINES/ai.dm b/code/__DEFINES/ai.dm new file mode 100644 index 000000000000..579d0689913b --- /dev/null +++ b/code/__DEFINES/ai.dm @@ -0,0 +1,34 @@ +#define GET_AI_BEHAVIOR(behavior_type) SSai_controllers.ai_behaviors[behavior_type] +#define HAS_AI_CONTROLLER_TYPE(thing, type) istype(thing?.ai_controller, type) + +#define AI_STATUS_ON 1 +#define AI_STATUS_OFF 2 + + +///Monkey checks +#define SHOULD_RESIST(source) (source.on_fire || source.buckled || HAS_TRAIT(source, TRAIT_RESTRAINED) || (source.pulledby && source.pulledby.grab_state > GRAB_PASSIVE)) + +///Max pathing attempts before auto-fail +#define MAX_PATHING_ATTEMPTS 30 + +///Flags for ai_behavior new() +#define AI_CONTROLLER_INCOMPATIBLE (1<<0) + +///Does this task require movement from the AI before it can be performed? +#define AI_BEHAVIOR_REQUIRE_MOVEMENT (1<<0) +///Does this task let you perform the action while you move closer? (Things like moving and shooting) +#define AI_BEHAVIOR_MOVE_AND_PERFORM (1<<1) + + +///Monkey AI controller blackboard keys + +#define BB_MONKEY_AGRESSIVE "BB_monkey_agressive" +#define BB_MONKEY_BEST_FORCE_FOUND "BB_monkey_bestforcefound" +#define BB_MONKEY_ENEMIES "BB_monkey_enemies" +#define BB_MONKEY_BLACKLISTITEMS "BB_monkey_blacklistitems" +#define BB_MONKEY_PICKUPTARGET "BB_monkey_pickuptarget" +#define BB_MONKEY_PICKPOCKETING "BB_monkey_pickpocketing" +#define BB_MONKEY_CURRENT_ATTACK_TARGET "BB_monkey_current_attack_target" +#define BB_MONKEY_TARGET_DISPOSAL "BB_monkey_target_disposal" +#define BB_MONKEY_DISPOSING "BB_monkey_disposing" +#define BB_MONKEY_RECRUIT_COOLDOWN "BB_monkey_recruit_cooldown" diff --git a/code/__DEFINES/alerts.dm b/code/__DEFINES/alerts.dm index ff1b29e883e9..473b539206f6 100644 --- a/code/__DEFINES/alerts.dm +++ b/code/__DEFINES/alerts.dm @@ -26,7 +26,14 @@ #define ALERT_EMBEDDED "embedded" #define ALERT_NUTRITION "nutrition" #define ALERT_DIRECTION_LOCK "direction_lock" +#define ALERT_UNPOSSESS_OBJECT "unpossess_object" /** Silicon related */ #define ALERT_LOCKED "locked" +/** Mech related */ +// SCS-3 Cage +#define CAGE_STAGE_ZERO "stage_zero" +#define CAGE_STAGE_ONE "stage_one" +#define CAGE_STAGE_TWO "stage_two" +#define CAGE_STAGE_THREE "stage_three" diff --git a/code/__DEFINES/beam.dm b/code/__DEFINES/beam.dm new file mode 100644 index 000000000000..12d58b70c9aa --- /dev/null +++ b/code/__DEFINES/beam.dm @@ -0,0 +1,12 @@ +/// Called before beam is redrawn +#define COMSIG_BEAM_BEFORE_DRAW "beam_before_draw" + #define BEAM_CANCEL_DRAW (1 << 0) + +/// Sent to a beam when an atom enters any turf the beam covers: (obj/effect/ebeam/hit_beam, atom/movable/entered) +#define COMSIG_BEAM_ENTERED "beam_entered" + +/// Sent to a beam when an atom exits any turf the beam covers: (obj/effect/ebeam/hit_beam, atom/movable/exited) +#define COMSIG_BEAM_EXITED "beam_exited" + +/// Sent to a beam when any turf the beam covers changes: (list/datum/callback/post_change_callbacks) +#define COMSIG_BEAM_TURFS_CHANGED "beam_turfs_changed" diff --git a/code/__DEFINES/blob.dm b/code/__DEFINES/blob.dm index 27f64f17f0a7..b9e70680e5f1 100644 --- a/code/__DEFINES/blob.dm +++ b/code/__DEFINES/blob.dm @@ -13,6 +13,7 @@ #define THIRD_STAGE_COEF 0.75 #define FIRST_STAGE_THRESHOLD 300 #define SECOND_STAGE_THRESHOLD 400 +#define THIRD_STAGE_DELTA_THRESHOLD 250 #define BLOB_STAGE_NONE -1 #define BLOB_STAGE_ZERO 0 #define BLOB_STAGE_FIRST 1 @@ -48,9 +49,144 @@ #define FIRST_STAGE_WARN span_userdanger("Вы чувствуете усталость и раздутость.") #define SECOND_STAGE_WARN span_userdanger("Вы чувствуете, что вот-вот лопнете.") -#define isblobbernaut(M) istype((M), /mob/living/simple_animal/hostile/blob/blobbernaut) + +#define TOTAL_BLOB_MASS SSticker?.mode?.legit_blobs?.len +#define NEEDED_BLOB_MASS SSticker?.mode?.blob_win_count //Few global vars to track the blob GLOBAL_LIST_EMPTY(blobs) GLOBAL_LIST_EMPTY(blob_cores) GLOBAL_LIST_EMPTY(blob_nodes) + +// Overmind defines + +#define OVERMIND_MAX_POINTS_DEFAULT 100 // Max point storage +#define OVERMIND_STARTING_POINTS 60 // Points granted upon start +#define OVERMIND_STARTING_REROLLS 1 // Free strain rerolls at the start +#define OVERMIND_MAX_CAMERA_STRAY "3x3" // How far the overmind camera is allowed to stray from blob tiles. 3x3 is 1 tile away, 5x5 2 tiles etc + + +// Generic blob defines + +#define BLOB_BASE_POINT_RATE 2 // Base amount of points per process() +#define BLOB_EXPAND_COST 4 // Price to expand onto a new tile +#define BLOB_ZOMBIFICATION_COST 5 +#define BLOB_ATTACK_REFUND 2 // Points 'refunded' when the expand attempt actually attacks something instead +#define BLOB_BRUTE_RESIST 0.5 // Brute damage taken gets multiplied by this value +#define BLOB_FIRE_RESIST 1 // Burn damage taken gets multiplied by this value +#define BLOB_EXPAND_CHANCE_MULTIPLIER 1 // Increase this value to make blobs naturally expand faster +#define BLOB_REINFORCE_CHANCE 2.5 // The seconds_per_tick chance for cores/nodes to reinforce their surroundings +#define BLOB_REAGENT_ATK_VOL 25 // Amount of strain-reagents that get injected when the blob attacks: main source of blob damage +#define BLOB_REAGENT_SPORE_VOL 10 +#define BLOB_BONUS_POINTS 60 +#define BLOB_REAGENTS_METABOLISM 1 + + +// Structure properties + +#define BLOB_CORE_MAX_HP 400 +#define BLOB_CORE_HP_REGEN 2 // Bases health regeneration rate every process(), can be added on by strains +#define BLOB_CORE_CLAIM_RANGE 12 // Range in which blob tiles are 'claimed' (converted from dead to alive, rarely useful) +#define BLOB_CORE_PULSE_RANGE 4 // The radius up to which the core activates structures, and up to which structures can be built +#define BLOB_CORE_EXPAND_RANGE 3 // Radius of automatic expansion +#define BLOB_CORE_STRONG_REINFORCE_RANGE 1 // The radius of tiles surrounding the core that get upgraded +#define BLOB_CORE_REFLECTOR_REINFORCE_RANGE 0 +#define BLOB_CORE_FIRE_RESIST 2 +#define BLOB_CORE_POINT_RATE 2 + +#define BLOB_NODE_MAX_HP 200 +#define BLOB_NODE_HP_REGEN 3 +#define BLOB_NODE_MIN_DISTANCE 5 // Minimum distance between nodes +#define BLOB_NODE_CLAIM_RANGE 10 +#define BLOB_NODE_PULSE_RANGE 3 // The radius up to which the core activates structures, and up to which structures can be built +#define BLOB_NODE_EXPAND_RANGE 2 // Radius of automatic expansion +#define BLOB_NODE_STRONG_REINFORCE_RANGE 0 // The radius of tiles surrounding the node that get upgraded +#define BLOB_NODE_REFLECTOR_REINFORCE_RANGE 0 + +#define BLOB_FACTORY_MAX_HP 200 +#define BLOB_FACTORY_HP_REGEN 1 +#define BLOB_FACTORY_MIN_DISTANCE 7 // Minimum distance between factories +#define BLOB_FACTORY_MAX_SPORES 3 + +#define BLOB_RESOURCE_MAX_HP 60 +#define BLOB_RESOURCE_HP_REGEN 15 +#define BLOB_RESOURCE_MIN_DISTANCE 4 // Minimum distance between resource blobs +#define BLOB_RESOURCE_GATHER_DELAY (4 SECONDS) // Gather points when pulsed outside this interval +#define BLOB_RESOURCE_GATHER_ADDED_DELAY (0.25 SECONDS) // Every additional resource blob adds this amount to the gather delay +#define BLOB_RESOURCE_POINT_RATE 1 + +#define BLOB_REGULAR_MAX_HP 25 +#define BLOB_REGULAR_HP_INIT 21 // The starting HP of a normal blob tile +#define BLOB_REGULAR_HP_REGEN 1 // Health regenerated when pulsed by a node/core + +#define BLOB_STRONG_MAX_HP 150 +#define BLOB_STRONG_HP_REGEN 2 +#define BLOB_STRONG_BRUTE_RESIST 0.25 // Brute damage taken gets multiplied by this value + +#define BLOB_CAP_NUKE_MAX_HP 100 +#define BLOB_CAP_NUKE_HP_REGEN 1 + +#define BLOB_REFLECTOR_MAX_HP 150 +#define BLOB_REFLECTOR_HP_REGEN 2 + +#define BLOB_STORAGE_MAX_HP 30 +#define BLOB_STORAGE_MAX_POINTS_BONUS 50 +#define BLOB_STORAGE_MIN_DISTANCE 3 +#define BLOB_STORAGE_FIRE_RESIST 2 + + +// Structure purchasing + +#define BLOB_UPGRADE_STRONG_COST 15 // Upgrade and build costs here +#define BLOB_UPGRADE_REFLECTOR_COST 15 +#define BLOB_STRUCTURE_RESOURCE_COST 40 +#define BLOB_STRUCTURE_STORAGE_COST 40 +#define BLOB_STRUCTURE_FACTORY_COST 60 +#define BLOB_STRUCTURE_NODE_COST 50 +#define BLOB_CORE_SPLIT_COST 100 + +#define BLOB_REFUND_STRONG_COST 4 // Points refunded when destroying the structure +#define BLOB_REFUND_REFLECTOR_COST 4 +#define BLOB_REFUND_RESOURCE_COST 15 +#define BLOB_REFUND_FACTORY_COST 25 +#define BLOB_REFUND_NODE_COST 25 +#define BLOB_REFUND_STORAGE_COST 12 +#define BLOB_REFUND_CORE_COST -1 +#define BLOB_REFUND_CAP_NUKE_COST 0 + +// Blob power properties + +#define BLOB_POWER_RELOCATE_COST 80 // Resource cost to move your core to a different node +#define BLOB_POWER_REROLL_COST 40 // Strain reroll +#define BLOB_POWER_REROLL_FREE_TIME (4 MINUTES) // Gain a free strain reroll every x minutes +#define BLOB_POWER_REROLL_CHOICES 6 // Possibilities to choose from; keep in mind increasing this might fuck with the radial menu + + +// Mob defines + +#define BLOBMOB_HEALING_MULTIPLIER 0.0125 // Multiplies by -maxHealth and heals the blob by this amount every blob_act +#define BLOBMOB_SPORE_HEALTH 30 // Base spore health +#define BLOBMOB_SPORE_SPAWN_COOLDOWN (8 SECONDS) +#define BLOBMOB_SPORE_DMG_LOWER 3 +#define BLOBMOB_SPORE_DMG_UPPER 7 +#define BLOBMOB_SPORE_OBJ_DMG 20 +#define BLOBMOB_SPORE_SPEED_MOD -1 +#define BLOBMOB_ZOMBIE_HEALTH 70 // Base spore health +#define BLOBMOB_ZOMBIE_DMG_LOWER 10 +#define BLOBMOB_ZOMBIE_DMG_UPPER 15 +#define BLOBMOB_ZOMBIE_OBJ_DMG 20 +#define BLOBMOB_ZOMBIE_SPEED_MOD -0.3 +#define BLOBMOB_BLOBBERNAUT_RESOURCE_COST 40 // Purchase price for making a blobbernaut +#define BLOBMOB_BLOBBERNAUT_HEALTH 200 // Base blobbernaut health +#define BLOBMOB_BLOBBERNAUT_DMG_SOLO_LOWER 20 // Damage without active overmind (core dead or xenobio mob) +#define BLOBMOB_BLOBBERNAUT_DMG_SOLO_UPPER 20 +#define BLOBMOB_BLOBBERNAUT_DMG_LOWER 4 // Damage dealt with active overmind (most damage comes from strain chems) +#define BLOBMOB_BLOBBERNAUT_DMG_UPPER 4 +#define BLOBMOB_BLOBBERNAUT_REAGENT_ATK_VOL 20 // Amounts of strain reagents applied on attack -- basically the main damage stat +#define BLOBMOB_BLOBBERNAUT_DMG_OBJ 60 // Damage dealth to objects/machines +#define BLOBMOB_BLOBBERNAUT_HEALING_CORE 0.05 // Percentage multiplier HP restored on Life() when within 2 tiles of the blob core +#define BLOBMOB_BLOBBERNAUT_HEALING_NODE 0.025 // Same, but for a nearby node +#define BLOBMOB_BLOBBERNAUT_HEALING_TILE 0.0125 // Same, but for a nearby blob tile +#define BLOBMOB_BLOBBERNAUT_HEALTH_DECAY 0.0125 // Percentage multiplier HP lost when not near blob tiles or without factory + +#define BLOB_ACT_PROTECTION_TIME 2 SECONDS diff --git a/code/__DEFINES/borer.dm b/code/__DEFINES/borer.dm index ee65cffd26c1..cb61176fe588 100644 --- a/code/__DEFINES/borer.dm +++ b/code/__DEFINES/borer.dm @@ -1,10 +1,10 @@ #define REPRODUCTIONS_TO_MATURE 3 #define REPRODUCTIONS_TO_ADULT 6 #define REPRODUCTIONS_TO_ELDER 10 -#define HEAD_FOCUS_COST 9 -#define TORSO_FOCUS_COST 15 -#define HANDS_FOCUS_COST 5 -#define LEGS_FOCUS_COST 10 +#define HEAD_FOCUS_COST 4.5 +#define TORSO_FOCUS_COST 7.5 +#define HANDS_FOCUS_COST 2.5 +#define LEGS_FOCUS_COST 5 #define SCALING_MAX_CHEM 355 #define SCALING_CHEM_GAIN 15 #define BORER_RANK_YOUNG /datum/borer_rank/young diff --git a/code/__DEFINES/callbacks.dm b/code/__DEFINES/callbacks.dm index 8b828a6d0177..c045329364ed 100644 --- a/code/__DEFINES/callbacks.dm +++ b/code/__DEFINES/callbacks.dm @@ -1,7 +1,23 @@ #define GLOBAL_PROC "some_magic_bullshit" #define CALLBACK new /datum/callback -#define INVOKE_ASYNC ImmediateInvokeAsync + +///Per the DM reference, spawn(-1) will execute the spawned code immediately until a block is met. +#define MAKE_SPAWN_ACT_LIKE_WAITFOR -1 +///Create a codeblock that will not block the callstack if a block is met. +#define ASYNC spawn(MAKE_SPAWN_ACT_LIKE_WAITFOR) + +#define INVOKE_ASYNC(proc_owner, proc_path, proc_arguments...) \ + if ((proc_owner) == GLOBAL_PROC) { \ + ASYNC { \ + call(proc_path)(##proc_arguments); \ + }; \ + } \ + else { \ + ASYNC { \ + call(0 || proc_owner, proc_path)(##proc_arguments); \ + }; \ + } /// like CALLBACK but specifically for verb callbacks #define VERB_CALLBACK new /datum/callback/verb_callback diff --git a/code/__DEFINES/cargo.dm b/code/__DEFINES/cargo.dm new file mode 100644 index 000000000000..d8aa74db8fa1 --- /dev/null +++ b/code/__DEFINES/cargo.dm @@ -0,0 +1,37 @@ +#define STYLE_STANDARD 1 +#define STYLE_BLUESPACE 2 +#define STYLE_CENTCOM 3 +#define STYLE_SYNDICATE 4 +#define STYLE_BLUE 5 +#define STYLE_CULT 6 +#define STYLE_MISSILE 7 +#define STYLE_RED_MISSILE 8 +#define STYLE_BOX 9 +#define STYLE_HONK 10 +#define STYLE_FRUIT 11 +#define STYLE_INVISIBLE 12 +#define STYLE_GONDOLA 13 + +#define POD_ICON_STATE 1 +#define POD_NAME 2 +#define POD_DESC 3 + +#define POD_SHAPE_NORMAL 1 +#define POD_SHAPE_OTHER 2 + +#define RUBBLE_NONE 1 +#define RUBBLE_NORMAL 2 +#define RUBBLE_WIDE 3 +#define RUBBLE_THIN 4 + +#define POD_TRANSIT "1" +#define POD_FALLING "2" +#define POD_OPENING "3" +#define POD_LEAVING "4" + +#define MOB_OPTION "Mobs" +#define UNANCHORED_OPTION "Unanchored" +#define ANCHORED_OPTION "Anchored" +#define MECHA_OPTION "Mecha" + +#define SUPPLYPOD_X_OFFSET -16 diff --git a/code/__DEFINES/chat.dm b/code/__DEFINES/chat.dm index 44bcdcd2a19d..8a0e4b37bf35 100644 --- a/code/__DEFINES/chat.dm +++ b/code/__DEFINES/chat.dm @@ -20,6 +20,7 @@ #define MESSAGE_TYPE_COMBAT "combat" #define MESSAGE_TYPE_ADMINCHAT "adminchat" #define MESSAGE_TYPE_MENTORCHAT "mentorchat" +#define MESSAGE_TYPE_DEVCHAT "devchat" #define MESSAGE_TYPE_EVENTCHAT "eventchat" #define MESSAGE_TYPE_ADMINLOG "adminlog" #define MESSAGE_TYPE_ATTACKLOG "attacklog" diff --git a/code/__DEFINES/click.dm b/code/__DEFINES/click.dm new file mode 100644 index 000000000000..5900dd54210c --- /dev/null +++ b/code/__DEFINES/click.dm @@ -0,0 +1,8 @@ +/// Action has succeeded, preventing further alt click interaction +#define CLICK_ACTION_SUCCESS (1<<0) +/// Action failed, preventing further alt click interaction +#define CLICK_ACTION_BLOCKING (1<<1) +/// Either return state +#define CLICK_ACTION_ANY (CLICK_ACTION_SUCCESS | CLICK_ACTION_BLOCKING) + +/// Use NONE for continue interaction diff --git a/code/__DEFINES/clothing.dm b/code/__DEFINES/clothing.dm index be7b1620a6e4..fb4955166bed 100644 --- a/code/__DEFINES/clothing.dm +++ b/code/__DEFINES/clothing.dm @@ -110,6 +110,10 @@ #define TAIL (1<<12) #define WING (1<<13) +//defines for the index of hands +#define LEFT_HANDS 1 +#define RIGHT_HANDS 2 + // bitflags for the percentual amount of protection a piece of clothing which covers the body part offers. // Used with human/proc/get_heat_protection() and human/proc/get_cold_protection() // The values here should add up to 1. diff --git a/code/__DEFINES/contracts.dm b/code/__DEFINES/contracts.dm index 26351cfbac27..b333b7691087 100644 --- a/code/__DEFINES/contracts.dm +++ b/code/__DEFINES/contracts.dm @@ -19,40 +19,3 @@ #define CONTRACT_FOOD "Food" #define CONTRACT_SPACE "Space Gear" #define CONTRACT_CALAMITY "Calamity" - -#define BANE_SALT "salt" -#define BANE_LIGHT "light" -#define BANE_IRON "iron" -#define BANE_WHITECLOTHES "whiteclothes" -#define BANE_SILVER "silver" -#define BANE_HARVEST "harvest" -#define BANE_TOOLBOX "toolbox" - -#define OBLIGATION_FOOD "food" -#define OBLIGATION_FIDDLE "fiddle" -#define OBLIGATION_DANCEOFF "danceoff" -#define OBLIGATION_GREET "greet" -#define OBLIGATION_PRESENCEKNOWN "presenceknown" -#define OBLIGATION_SAYNAME "sayname" -#define OBLIGATION_ANNOUNCEKILL "announcekill" -#define OBLIGATION_ANSWERTONAME "answername" - -#define BAN_HURTWOMAN "hurtwoman" -#define BAN_HURTMAN "hurtman" -#define BAN_CHAPEL "chapel" -#define BAN_HURTPRIEST "hurtpriest" -#define BAN_AVOIDWATER "avoidwater" -#define BAN_STRIKEUNCONCIOUS "strikeunconcious" -#define BAN_HURTLIZARD "hurtlizard" -#define BAN_HURTANIMAL "hurtanimal" - -#define BANISH_WATER "water" -#define BANISH_COFFIN "coffin" -#define BANISH_FORMALDYHIDE "embalm" -#define BANISH_RUNES "runes" -#define BANISH_CANDLES "candles" -#define BANISH_DESTRUCTION "destruction" -#define BANISH_FUNERAL_GARB "funeral" - -#define LORE 1 -#define LAW 2 diff --git a/code/__DEFINES/crafting.dm b/code/__DEFINES/crafting.dm index 33c80e970cff..06c71b37cf5b 100644 --- a/code/__DEFINES/crafting.dm +++ b/code/__DEFINES/crafting.dm @@ -6,6 +6,9 @@ #define CAT_ROBOT "Robots" #define CAT_MISC "Misc" #define CAT_PRIMAL "Tribal" +#define CAT_ARMOR "Tribal Armor" +#define CAT_WEAPONS "Tribal Weaponry" +#define CAT_MISC2 "Tribal Misc" #define CAT_DECORATIONS "Decorations" #define CAT_DECORATION "Decorations" #define CAT_HOLIDAY "Holiday" @@ -32,5 +35,6 @@ #define RECIPE_OVEN "Oven" #define RECIPE_GRILL "Grill" #define RECIPE_CANDY "Candy" +#define RECIPE_TRIBAL_OVEN "tribal_oven" #define RECIPE_FAIL null diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 1dcafee2bf0b..58e269906088 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -26,6 +26,13 @@ /// cable was placed or joined somewhere : (turf) #define COMSIG_GLOB_CABLE_UPDATED "!cable_updated" +#define COMSIG_GLOB_WEB_STORM_ENDED "!web_storm_ended" +#define COMSIG_GLOB_EMPRESS_EGG_DESTROYED "!empress_egg_destroyed" +#define COMSIG_GLOB_EMPRESS_EGG_BURST "!empress_egg_burst" +#define COMSIG_GLOB_IFECTION_CREATED "!infection_created" +#define COMSIG_GLOB_IFECTION_REMOVED "!infection_removed" +#define COMSIG_GLOB_XENO_STORM_ENDED "!xeno_storm_ended" + /// signals from globally accessible objects ///from SSsun when the sun changes position : (azimuth) @@ -139,6 +146,8 @@ #define COMSIG_ATOM_BULLET_ACT "atom_bullet_act" ///from base of atom/blob_act(): (/obj/structure/blob) #define COMSIG_ATOM_BLOB_ACT "atom_blob_act" + /// if returned, forces nothing to happen when the atom is attacked by a blob + #define COMPONENT_CANCEL_BLOB_ACT (1<<0) ///from base of atom/acid_act(): (acidpwr, acid_volume) #define COMSIG_ATOM_ACID_ACT "atom_acid_act" ///from base of atom/emag_act(): (/mob/user) @@ -211,6 +220,8 @@ #define COMSIG_ATOM_HITBY "atom_hitby" /// Called when an atom is sharpened or dulled. #define COMSIG_ATOM_UPDATE_SHARPNESS "atom_update_sharpness" +/// generally called before temporary non-parallel animate()s on the atom (animation_duration) +#define COMSIG_ATOM_TEMPORARY_ANIMATION_START "atom_temp_animate_start" // Attack signals. These should share the returned flags, to standardize the attack chain. // The chain currently works like: @@ -260,7 +271,7 @@ #define COMPONENT_ALLOW_EXAMINATE (1<<0) //Allows the user to examinate regardless of client.eye. ///from base of atom/CtrlClickOn(): (/mob) #define COMSIG_CLICK_CTRL "ctrl_click" -///from base of atom/AltClick(): (/mob) +///from base of atom/base_click_alt(): (/mob) #define COMSIG_CLICK_ALT "alt_click" ///from base of atom/CtrlShiftClick(/mob) #define COMSIG_CLICK_CTRL_SHIFT "ctrl_shift_click" @@ -387,6 +398,8 @@ #define COMSIG_MOB_LOGIN "mob_login" ///from base of /mob/Logout(): () #define COMSIG_MOB_LOGOUT "mob_logout" +///from base of /mob/mind_initialize +#define COMSIG_MOB_MIND_INITIALIZED "mob_mind_inited" ///from base of mob/death(): (gibbed) #define COMSIG_MOB_DEATH "mob_death" ///from base of mob/ghostize(): (mob/dead/observer/ghost) @@ -429,6 +442,8 @@ #define COMSIG_MOB_ITEM_ATTACK "mob_item_attack" #define COMPONENT_ITEM_NO_ATTACK (1<<0) +#define COMSIG_GLOVES_DOUBLE_HANDS_TOUCH "gloves_double_hands_touch" + ///from base of /mob/living/proc/get_incoming_damage_modifier(): (list/damage_mods, damage, damagetype, def_zone, sharp, used_weapon) #define COMSIG_MOB_APPLY_DAMAGE_MODIFIERS "mob_apply_damage_modifiers" ///from base of /mob/living/proc/get_blocking_resistance(): (list/damage_resistances, damage, damagetype, def_zone, sharp, used_weapon) @@ -446,12 +461,16 @@ #define COMSIG_MOB_ITEM_ATTACK_QDELETED "mob_item_attack_qdeleted" ///from base of mob/RangedAttack(): (atom/A, params) #define COMSIG_MOB_ATTACK_RANGED "mob_attack_ranged" +///from base of mob/RangedAttack(): (atom/A, params) after being range attacked +#define COMSIG_MOB_ATTACKED_RANGED "mob_attack_ranged" ///from base of /mob/throw_item(): (atom/target) #define COMSIG_MOB_THROW "mob_throw" ///called when a user is getting new weapon and we want to remove previous weapon to clear hands #define COMSIG_MOB_WEAPON_APPEARS "mob_weapon_appears" -///from base of /mob/verb/examinate(): (atom/target) -#define COMSIG_MOB_EXAMINATE "mob_examinate" +/// from base of /mob/verb/examinate(): (atom/target) +#define COMSIG_MOB_VERB_EXAMINATE "mob_examinate" +/// from base of /mob/proc/run_examinate(): (atom/target, list/result) +#define COMSIG_MOB_RUN_EXAMINATE "mob_run_examinate" ///from base of /mob/update_sight(): () #define COMSIG_MOB_UPDATE_SIGHT "mob_update_sight" ////from /mob/living/say(): () @@ -468,6 +487,9 @@ ////from mob/living/adjust_fire_stacks() #define COMSIG_MOB_ADJUST_FIRE "mob_adjust_fire" +////from mob/living/adjust_wet_stacks() +#define COMSIG_MOB_ADJUST_WET "mob_adjust_wet" + ///from base of /mob/living/toggle_move_intent(): (old_move_intent) #define COMSIG_MOB_MOVE_INTENT_TOGGLE "mob_move_intent_toggle" #define COMPONENT_BLOCK_INTENT_TOGGLE (1<<0) @@ -506,6 +528,12 @@ /// Performed after the hands are swapped. #define COMSIG_MOB_SWAP_HANDS "mob_swap_hands" +#define COMSIG_MOB_AUTOMUTE_CHECK "automute_check" + #define WAIVE_AUTOMUTE_CHECK (1<<0) + +/// from mob/get_status_tab_items(): (list/items) +#define COMSIG_MOB_GET_STATUS_TAB_ITEMS "mob_get_status_tab_items" + ///From base of mob/update_movespeed():area #define COMSIG_MOB_MOVESPEED_UPDATED "mob_update_movespeed" @@ -518,6 +546,8 @@ #define COMSIG_CLIENT_SET_EYE "client_set_eye" // from /client/proc/change_view() : (new_size) #define COMSIG_VIEW_SET "view_set" +/// from /mob/proc/change_mob_type() : () +#define COMSIG_MOB_CHANGED_TYPE "mob_changed_type" // /mob/living signals @@ -525,6 +555,8 @@ #define COMSIG_LIVING_RESIST "living_resist" ///from base of mob/living/IgniteMob() (/mob/living) #define COMSIG_LIVING_IGNITED "living_ignite" +///from base of mob/living/WetMob() (/mob/living) +#define COMSIG_LIVING_WET "living_weted" ///from base of mob/living/ExtinguishMob() (/mob/living) #define COMSIG_LIVING_EXTINGUISHED "living_extinguished" ///from base of mob/living/electrocute_act(): (shock_damage, source, siemens_coeff, flags) @@ -535,6 +567,9 @@ #define COMSIG_LIVING_SHOCK_PREVENTED "living_shock_prevented" ///sent by stuff like stunbatons and tasers: () #define COMSIG_LIVING_MINOR_SHOCK "living_minor_shock" +/// Source: /mob/living/proc/flash_eyes(intensity, override_blindness_check, affect_silicon, visual, type) +#define COMSIG_LIVING_EARLY_FLASH_EYES "living_flash_eyes" + #define STOP_FLASHING_EYES (1<<0) ///from base of mob/living/revive() (full_heal, admin_revive) #define COMSIG_LIVING_REVIVE "living_revive" ///from base of /mob/living/regenerate_limbs(): (noheal, excluded_limbs) @@ -557,11 +592,15 @@ #define COMSIG_BORG_SAFE_DECONSTRUCT "borg_safe_decon" ///sent from living mobs every tick of fire #define COMSIG_LIVING_FIRE_TICK "living_fire_tick" +///sent from living mobs every tick of wet +#define COMSIG_LIVING_WET_TICK "living_wet_tick" //sent from living mobs when they are ahealed #define COMSIG_LIVING_AHEAL "living_aheal" ///From living/Life(). (deltatime, times_fired) #define COMSIG_LIVING_LIFE "living_life" ///from base of mob/living/death(): (gibbed) +#define COMSIG_LIVING_EARLY_DEATH "living_early_death" +///from base of mob/living/death(): (gibbed) #define COMSIG_LIVING_DEATH "living_death" //sent from mobs when they exit their body as a ghost #define COMSIG_LIVING_GHOSTIZED "ghostized" @@ -577,6 +616,14 @@ #define COMSIG_LIVING_RESTING "living_resting" ///from base of mob/update_transform() #define COMSIG_LIVING_POST_UPDATE_TRANSFORM "living_post_update_transform" +/// Source: /mob/living/proc/apply_status_effect(datum/status_effect/new_instance) +#define COMSIG_LIVING_GAINED_STATUS_EFFECT "living_gained_status_effect" +/// Source: /mob/living/proc/remove_status_effect(datum/status_effect/existing_effect) +#define COMSIG_LIVING_EARLY_LOST_STATUS_EFFECT "living_early_lost_status_effect" // Called before qdel +/// From mob/living/try_speak(): (message) +#define COMSIG_MOB_TRY_SPEECH "living_vocal_speech" + /// Return if the mob cannot speak. + #define COMPONENT_CANNOT_SPEAK (1<<0) ///called on /living when someone starts pulling (atom/movable/pulled, state, force) #define COMSIG_LIVING_START_PULL "living_start_pull" @@ -591,6 +638,8 @@ /// Called from /mob/living/PushAM -- Called when this mob is about to push a movable, but before it moves /// (aotm/movable/being_pushed) #define COMSIG_LIVING_PUSHING_MOVABLE "living_pushing_movable" +///from base of /mob/living/examine(): (mob/user, list/.) +#define COMSIG_LIVING_EXAMINE "living_examine" ///from base of mob/living/Stun() (amount, ignore_canstun) #define COMSIG_LIVING_STATUS_STUN "living_stun" @@ -616,11 +665,28 @@ #define COMSIG_LIVING_CAN_TRACK "mob_cantrack" #define COMPONENT_CANT_TRACK (1<<0) +/// Source: /mob/living/AdjustBlood(amount) +#define COMSIG_LIVING_BLOOD_ADJUST "living_blood_adjust" + #define COMPONENT_PREVENT_BLOODLOSS (1<<0) +/// Source: /mob/living/AdjustBlood(amount) +#define COMSIG_LIVING_BLOOD_ADJUSTED "living_blood_adjusted" +/// Source: /mob/living/setBlood(amount) +#define COMSIG_LIVING_EARLY_SET_BLOOD "living_early_set_blood" +/// Source: /mob/living/setBlood(amount) +#define COMSIG_LIVING_SET_BLOOD "living_set_blood" + +///From post-can inject check of syringe after attack (mob/user) +#define COMSIG_LIVING_TRY_SYRINGE "living_try_syringe" + /// From /mob/add_language() (language_name) #define COMSIG_MOB_LANGUAGE_ADD "mob_language_add" /// From /mob/remove_language() (language_name) #define COMSIG_MOB_LANGUAGE_REMOVE "mob_language_remove" +/// Source: /mob/living/say (message, verb, ignore_speech_problems, ignore_atmospherics, ignore_languages, datum/multilingual_say_piece) +#define COMSIG_LIVING_EARLY_SAY "living_early_say" + #define COMPONENT_PREVENT_SPEAKING (1<<0) + /// From base of /client/Move(): (new_loc, direction) #define COMSIG_MOB_CLIENT_PRE_MOVE "mob_client_pre_move" /// Should always match COMPONENT_MOVABLE_BLOCK_PRE_MOVE as these are interchangeable and used to block movement. @@ -632,6 +698,11 @@ /// From base of /client/Move(): (direction, old_dir) #define COMSIG_MOB_CLIENT_MOVED "mob_client_moved" +/// From base of /client/Move(), invoked when a non-living mob is attempting to move: (list/move_args) +#define COMSIG_MOB_CLIENT_PRE_NON_LIVING_MOVE "mob_client_pre_non_living_move" + /// Cancels the move attempt + #define COMSIG_MOB_CLIENT_BLOCK_PRE_NON_LIVING_MOVE COMPONENT_MOVABLE_BLOCK_PRE_MOVE + /// From base of /client/Move(): (list/move_args) #define COMSIG_MOB_CLIENT_PRE_LIVING_MOVE "mob_client_pre_living_move" /// Should we stop the current living movement attempt @@ -640,6 +711,9 @@ /// from base of /client/proc/handle_popup_close() : (window_id) #define COMSIG_POPUP_CLEARED "popup_cleared" +/// Source: /mob/living/UnarmedAttack (atom/atom, proximity_flag) +#define COMSIG_LIVING_UNARMED_ATTACK "living_unarmed_attack" + // /mob/living/carbon signals ///from base of mob/living/carbon/soundbang_act(): (list(intensity)) @@ -676,16 +750,25 @@ #define COMSIG_CARBON_APPLY_OVERLAY "carbon_apply_overlay" ///Called from remove_overlay(cache_index, overlay) #define COMSIG_CARBON_REMOVE_OVERLAY "carbon_remove_overlay" - +#define COMSIG_CARBON_UPDATING_HEALTH_HUD "carbon_health_hud_update" +#define COMSIG_HUMAN_UPDATING_HEALTH_HUD "human_health_hud_update" + /// Return if you override the carbon's or human's health hud with something else + #define COMPONENT_OVERRIDE_HEALTH_HUD (1<<0) // /mob/living/simple_animal signals ///from /mob/living/attack_animal(): (mob/living/simple_animal/M) #define COMSIG_SIMPLE_ANIMAL_ATTACKEDBY "simple_animal_attackedby" #define COMPONENT_SIMPLE_ANIMAL_NO_ATTACK (1<<0) +///Called when someone attempts to cuff a carbon +#define COMSIG_CARBON_CUFF_ATTEMPTED "carbon_attempt_cuff" + // /mob/living/simple_animal/hostile signals #define COMSIG_HOSTILE_ATTACKINGTARGET "hostile_attackingtarget" #define COMPONENT_HOSTILE_NO_ATTACK (1<<0) +///after attackingtarget has happened, source is the attacker and target is the attacked, extra argument for if the attackingtarget was successful +#define COMSIG_HOSTILE_POST_ATTACKINGTARGET "hostile_post_attackingtarget" + /// Called when a /mob/living/simple_animal/hostile fines a new target: (atom/source, give_target) #define COMSIG_HOSTILE_FOUND_TARGET "comsig_hostile_found_target" @@ -711,6 +794,10 @@ #define COMSIG_OBJ_POSSESSED "obj_possessed" ///from base of /proc/release(): (mob/user) #define COMSIG_OBJ_RELEASED "obj_released" +///from [/obj/structure/sink/attack_hand] +#define COMSIG_SINK_ACT "sink_act" + /// returns on succes of species special sink_act() + #define COMSIG_SINK_ACT_SUCCESS (1<<0) // /obj/machinery signals @@ -776,6 +863,9 @@ #define COMSIG_MINE_TRIGGERED "minegoboom" ///from [/obj/item/organ/internal/remove]: #define COMSIG_ORGAN_REMOVED "organ_removed" +///from [/obj/item/organ/internal/cyberimp/mouth/translator/check_lang] +#define COMSIG_LANG_PRE_ACT "check_language" + #define COMSIG_LANG_SECURED (1<<0) /// Defib-specific signals @@ -908,12 +998,15 @@ #define COMSIG_HUMAN_REGENERATE_ICONS "human_regenerate_icons" ///From /mob/living/carbon/human/proc/set_species(): (datum/species/old_species) #define COMSIG_HUMAN_SPECIES_CHANGED "human_species_changed" - +/// Source: /mob/living/carbon/human/handle_environment(datum/gas_mixture/environment) +#define COMSIG_HUMAN_EARLY_HANDLE_ENVIRONMENT "human_early_handle_environment" ///from /mob/living/carbon/human/proc/check_shields(): (atom/hit_by, damage, attack_text, attack_type, armour_penetration, damage_type) #define COMSIG_HUMAN_CHECK_SHIELDS "human_check_shields" #define SHIELD_BLOCK (1<<0) +#define COMSIG_HUMAN_DESTROYED "human_destroyed" + // /datum/species signals ///from datum/species/on_species_gain(): (datum/species/new_species, datum/species/old_species) #define COMSIG_SPECIES_GAIN "species_gain" @@ -947,6 +1040,11 @@ ///from base of obj/item/reagent_containers/food/snacks/attack(): (mob/living/eater, mob/feeder) #define COMSIG_FOOD_EATEN "food_eaten" +/// Reagents +/// Source: /datum/reagents/proc/add_reagent (datum/reagents, reagent_id, amount, data, reagtemp, no_react, chem_temp) +#define COMSIG_EARLY_REAGENT_ADDED "reagent_early_added" + #define COMPONENT_PREVENT_ADD_REAGENT (1<<0) + //Gibs ///from base of /obj/effect/decal/cleanable/blood/gibs/streak(): (list/directions, list/diseases) @@ -1131,6 +1229,9 @@ ///from base of [/datum/element/light_eater/proc/devour]: (atom/eaten_light) #define COMSIG_LIGHT_EATER_DEVOUR "light_eater_devour" +/// datum/element/reagent_attack +/// Source: /datum/element/reagent_attack/proc/inject (datum/element/reagent_attack, mob/living/carbon/target, reagent_id, reagent_amount, target_zone) +#define COMSIG_REAGENT_INJECTED "reagent_inject" // /datum/element/movetype_handler signals /// Called when the floating anim has to be temporarily stopped and restarted later: (timer) @@ -1199,3 +1300,29 @@ #define COMSIG_BORER_ENTERED_HOST "borer_on_enter" // when borer entered host #define COMSIG_BORER_LEFT_HOST "borer_on_leave" // when borer left host +///from /datum/spawners_menu/ui_act(): (mob/user) +#define COMSIG_IS_GHOST_CONTROLABLE "is_ghost_controllable" + /// Return this to signal that the mob can be controlled by ghosts + #define COMPONENT_GHOST_CONTROLABLE (1<<0) + +/// Source: /proc/random_hair_style (mob/living/carbon/human/human, valid_hairstyles, robohead) +#define COMSIG_RANDOM_HAIR_STYLE "random_hair_style" +// Terror Spiders Signals +/// Defilers ore queen sybtypes now can lay empress egg +#define COMSIG_SPIDER_CAN_LAY "spider_can_lay" + +/// Human eaten by prince +#define COMSIG_HUMAN_EATEN "human_eaten" + +/// Terror spider died +#define COMSIG_TERROR_SPIDER_DIED "terror_spider_died" + +#define COMSIG_EMPRESS_EGG_LAYED "empress_egg_layed" + +#define COMSIG_ALIEN_EVOLVE "alien_evolve" + +/// Source: /datum/component/ritual_object/proc/pre_ritual_check (status_bitflag, mob/living/carbon/human, list/invokers, list/used_things) +#define COMSIG_RITUAL_ENDED "ritual_ended" + +/// Source: /datum/component/object_possession/proc/on_move (mob/mob, new_loc, direct) +#define COMSIG_POSSESSED_MOVEMENT "possessed_movement" diff --git a/code/__DEFINES/dcs/signals_blob.dm b/code/__DEFINES/dcs/signals_blob.dm new file mode 100644 index 000000000000..3fd9a3ec6087 --- /dev/null +++ b/code/__DEFINES/dcs/signals_blob.dm @@ -0,0 +1,9 @@ +/// Signal sent when a blob overmind picked a new strain (/mob/camera/blob/overmind, /datum/blobstrain/new_strain) +#define COMSIG_BLOB_SELECTED_STRAIN "blob_selected_strain" +/// Signal sent by a blob spore when it creates a zombie (/mob/living/basic/blob_minion/spore/spore, //mob/living/basic/blob_minion/zombie/zombie) +#define COMSIG_BLOB_ZOMBIFIED "blob_zombified" + +/// Signal sent by a blob when it try expand +#define COMSIG_TRY_CONSUME_TURF "try_consume_turf" + /// Component blocks consuming + #define COMPONENT_CANT_CONSUME (1<<0) diff --git a/code/__DEFINES/dcs/signals_lazy_templates.dm b/code/__DEFINES/dcs/signals_lazy_templates.dm new file mode 100644 index 000000000000..556ad6c886fc --- /dev/null +++ b/code/__DEFINES/dcs/signals_lazy_templates.dm @@ -0,0 +1,2 @@ +/// Fired on the lazy template datum when the template is finished loading. (list/loaded_atoms) +#define COMSIG_LAZY_TEMPLATE_LOADED "lazy_template_loaded" diff --git a/code/__DEFINES/dcs/signals_object.dm b/code/__DEFINES/dcs/signals_object.dm index ce5845f447c0..c9fb785b7424 100644 --- a/code/__DEFINES/dcs/signals_object.dm +++ b/code/__DEFINES/dcs/signals_object.dm @@ -16,7 +16,22 @@ /// Return to prevent the default behavior (attack_selfing) from ocurring. #define COMPONENT_ITEM_ACTION_SLOT_INVALID (1<<0) -/// from base of /obj/item/slimepotion/speed/interact_with_atom(): (obj/target, /obj/src, mob/user) #define COMSIG_SPEED_POTION_APPLIED "speed_potion" #define SPEED_POTION_STOP (1<<0) +///from base of [/obj/proc/update_integrity]: (old_value, new_value) +#define COMSIG_OBJ_INTEGRITY_CHANGED "obj_integrity_changed" + + +///sent to targets during the process_hit proc of projectiles +#define COMSIG_FIRE_CASING "fire_casing" + +///called in /obj/item/grenade/proc/prime(): (user) +#define COMSIG_GRENADE_DETONATE "grenade_prime" + +///from [/obj/structure/closet/supplypod/proc/preOpen]: +#define COMSIG_SUPPLYPOD_LANDED "supplypodgoboom" + + +/// from /datum/surgery_step/proc/initiate() : (&time) +#define COMSIG_SURGERY_STEP_INIT "surgery_step_init" diff --git a/code/__DEFINES/dcs/signals_silicon.dm b/code/__DEFINES/dcs/signals_silicon.dm new file mode 100644 index 000000000000..34c557659eb3 --- /dev/null +++ b/code/__DEFINES/dcs/signals_silicon.dm @@ -0,0 +1,2 @@ +///from base of /mob/camera/aiEye/setLoc: (/turf/destination) +#define COMSIG_AI_EYE_MOVED "ai_eye_moved" diff --git a/code/__DEFINES/dcs/signals_turf.dm b/code/__DEFINES/dcs/signals_turf.dm new file mode 100644 index 000000000000..185183713cad --- /dev/null +++ b/code/__DEFINES/dcs/signals_turf.dm @@ -0,0 +1,2 @@ +///from base of /datum/turf_reservation/proc/Release: (datum/turf_reservation/reservation) +#define COMSIG_TURF_RESERVATION_RELEASED "turf_reservation_released" diff --git a/code/__DEFINES/devil.dm b/code/__DEFINES/devil.dm new file mode 100644 index 000000000000..f58afda46b9f --- /dev/null +++ b/code/__DEFINES/devil.dm @@ -0,0 +1,87 @@ +GLOBAL_LIST_INIT(whiteness, list( + /obj/item/clothing/under/color/white = 2, + /obj/item/clothing/under/rank/bartender = 1, + /obj/item/clothing/under/rank/chef = 1, + /obj/item/clothing/under/rank/chief_engineer = 1, + /obj/item/clothing/under/rank/scientist = 1, + /obj/item/clothing/under/rank/chemist = 1, + /obj/item/clothing/under/rank/chief_medical_officer = 1, + /obj/item/clothing/under/rank/geneticist = 1, + /obj/item/clothing/under/rank/virologist = 1, + /obj/item/clothing/under/rank/nursesuit = 1, + /obj/item/clothing/under/rank/medical = 1, + /obj/item/clothing/under/rank/psych = 1, + /obj/item/clothing/under/rank/orderly = 1, + /obj/item/clothing/under/rank/security/brigphys = 1, + /obj/item/clothing/under/rank/internalaffairs = 1, + /obj/item/clothing/under/rank/ntrep = 1, + /obj/item/clothing/under/det = 1, + /obj/item/clothing/under/wedding/bride_white = 1, + /obj/item/clothing/under/mafia/white = 1, + /obj/item/clothing/under/noble_clothes = 1, + /obj/item/clothing/under/sl_suit = 1, + /obj/item/clothing/under/burial = 1 +)) + +#define ENRAGED_THRESHOLD 4 +#define BLOOD_THRESHOLD 7 +#define TRUE_THRESHOLD 10 + +#define BASIC_DEVIL_REGEN_THRESHOLD 10 SECONDS +#define ENRAGED_DEVIL_REGEN_THRESHOLD 10 SECONDS +#define BLOOD_LIZARD_REGEN_THRESHOLD 5 SECONDS +#define TRUE_DEVIL_REGEN_THRESHOLD 3 SECONDS + +#define BASIC_DEVIL_REGEN_AMOUNT 20 +#define ENRAGED_DEVIL_REGEN_AMOUNT 40 +#define BLOOD_LIZARD_REGEN_AMOUNT 60 +#define TRUE_DEVIL_REGEN_AMOUNT 80 + +#define BASIC_DEVIL_RANK /datum/devil_rank/basic_devil +#define ENRAGED_DEVIL_RANK /datum/devil_rank/enraged_devil +#define BLOOD_LIZARD_RANK /datum/devil_rank/blood_lizard +#define TRUE_DEVIL_RANK /datum/devil_rank/true_devil + +#define BANE_SALT "salt" +#define BANE_LIGHT "light" +#define BANE_IRON "iron" +#define BANE_WHITECLOTHES "whiteclothes" +#define BANE_SILVER "silver" +#define BANE_HARVEST "harvest" +#define BANE_TOOLBOX "toolbox" + +#define OBLIGATION_FOOD "food" +#define OBLIGATION_FIDDLE "fiddle" +#define OBLIGATION_DANCEOFF "danceoff" +#define OBLIGATION_GREET "greet" +#define OBLIGATION_PRESENCEKNOWN "presenceknown" +#define OBLIGATION_SAYNAME "sayname" +#define OBLIGATION_ANNOUNCEKILL "announcekill" +#define OBLIGATION_ANSWERTONAME "answername" + +#define BAN_HURTWOMAN "hurtwoman" +#define BAN_HURTMAN "hurtman" +#define BAN_CHAPEL "chapel" +#define BAN_HURTPRIEST "hurtpriest" +#define BAN_AVOIDWATER "avoidwater" +#define BAN_STRIKEUNCONCIOUS "strikeunconcious" +#define BAN_HURTLIZARD "hurtlizard" +#define BAN_HURTANIMAL "hurtanimal" + +#define BANISH_WATER "water" +#define BANISH_COFFIN "coffin" +#define BANISH_FORMALDYHIDE "embalm" +#define BANISH_RUNES "runes" +#define BANISH_CANDLES "candles" +#define BANISH_DESTRUCTION "destruction" +#define BANISH_FUNERAL_GARB "funeral" + +#define BANE_TOOLBOX_DAMAGE_MODIFIER 2.5 +#define BANE_HARVEST_DAMAGE_MULTIPLIER 2 + +GLOBAL_LIST_EMPTY(allDevils) +//These are also used in the codex gigas, so let's declare them globally. +GLOBAL_LIST_INIT(devil_pre_title, list("Dark ", "Hellish ", "Fallen ", "Fiery ", "Sinful ", "Blood ", "Fluffy ")) +GLOBAL_LIST_INIT(devil_title, list("Lord ", "Prelate ", "Count ", "Viscount ", "Vizier ", "Elder ", "Adept ")) +GLOBAL_LIST_INIT(devil_syllable, list("hal", "ve", "odr", "neit", "ci", "quon", "mya", "folth", "wren", "geyr", "hil", "niet", "twou", "phi", "coa")) +GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", ", the Lord of all things", ", Jr.")) diff --git a/code/__DEFINES/ert.dm b/code/__DEFINES/ert.dm new file mode 100644 index 000000000000..8587e08d0ba4 --- /dev/null +++ b/code/__DEFINES/ert.dm @@ -0,0 +1,7 @@ +#define ERT_ROLE_COMMANDER "Командир" +#define ERT_ROLE_SECURITY "Боец" +#define ERT_ROLE_MEDIC "Медик" +#define ERT_ROLE_ENGINEER "Инженер" +#define ERT_ROLE_JANITOR "Уборщик" +#define ERT_ROLE_PARANORMAL "Паранормал" +#define ERT_ROLE_CYBORG "Борг" diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index b224f0706f62..15c7842c2c74 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -37,6 +37,10 @@ /// Update the atom's icon #define UPDATE_ICON (UPDATE_ICON_STATE|UPDATE_OVERLAYS) +/// If the thing can reflect light (lasers/energy) +#define RICOCHET_SHINY (1<<0) +/// If the thing can reflect matter (bullets/bomb shrapnel) +#define RICOCHET_HARD (1<<1) //Reagent flags #define REAGENT_NOREACT 1 @@ -122,10 +126,31 @@ #define DF_VAR_EDITED (1<<1) #define DF_ISPROCESSING (1<<2) -//turf-only flags -#define NOJAUNT 1 -#define NO_LAVA_GEN 2 //Blocks lava rivers being generated on the turf -#define NO_RUINS 4 +//TURF FLAGS +/// If a turf cant be jaunted through. +#define NOJAUNT (1<<0) +/// If a turf is an usused reservation turf awaiting assignment +#define UNUSED_RESERVATION_TURF (1<<1) +/// If a turf is a reserved turf +#define RESERVATION_TURF (1<<2) +/// Blocks lava rivers being generated on the turf. +#define NO_LAVA_GEN (1<<3) +/// Blocks ruins spawning on the turf. +#define NO_RUINS (1<<4) + +//AREA FLAGS +/// If false, loading multiple maps with this area type will create multiple instances. +#define UNIQUE_AREA (1<<0) +/// If mining tunnel generation is allowed in this area +#define CAVES_ALLOWED (1<<1) +/// If flora are allowed to spawn in this area randomly through tunnel generation +#define FLORA_ALLOWED (1<<2) +/// If mobs can be spawned by natural random generation +#define MOB_SPAWN_ALLOWED (1<<3) +/// If megafauna can be spawned by natural random generation +#define MEGAFAUNA_SPAWN_ALLOWED (1<<4) +/// If blobs can spawn there and if it counts towards their score. +#define BLOBS_ALLOWED (1<<5) //ORGAN TYPE FLAGS #define AFFECT_ROBOTIC_ORGAN 1 @@ -186,17 +211,6 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define MOBILITY_FLAGS_REST_CAPABLE_DEFAULT (MOBILITY_MOVE|MOBILITY_STAND|MOBILITY_PICKUP|MOBILITY_USE|MOBILITY_UI|MOBILITY_STORAGE|MOBILITY_PULL|MOBILITY_REST|MOBILITY_LIEDOWN) -//MINING AREA FLAGS -/// If mining tunnel generation is allowed in this area -#define CAVES_ALLOWED (1<<1) -/// If flora are allowed to spawn in this area randomly through tunnel generation -#define FLORA_ALLOWED (1<<2) -/// If mobs can be spawned by natural random generation -#define MOB_SPAWN_ALLOWED (1<<3) -/// If megafauna can be spawned by natural random generation -#define MEGAFAUNA_SPAWN_ALLOWED (1<<4) - - // timed_action_flags parameter for [/proc/do_after()] /// Can do the action even if mob moves location. #define DA_IGNORE_USER_LOC_CHANGE (1<<0) @@ -223,9 +237,4 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define DEFAULT_DOAFTER_IGNORE (DA_IGNORE_LYING|DA_IGNORE_RESTRAINED) -//Incapacitated ignore flags for [/proc/incapacitated()] -/// If the incapacitated will ignore a mob in restraints -#define INC_IGNORE_RESTRAINED (1<<0) -/// If the incapacitated will ignore a mob being agressively grabbed -#define INC_IGNORE_GRABBED (1<<1) diff --git a/code/__DEFINES/gamemode.dm b/code/__DEFINES/gamemode.dm index 2f2f64db4f57..fde88572da50 100644 --- a/code/__DEFINES/gamemode.dm +++ b/code/__DEFINES/gamemode.dm @@ -24,49 +24,61 @@ #define GAMEMODE_IS_REVOLUTION (SSticker && istype(SSticker.mode, /datum/game_mode/revolution)) #define GAMEMODE_IS_WIZARD (SSticker && istype(SSticker.mode, /datum/game_mode/wizard)) #define GAMEMODE_IS_RAGIN_MAGES (SSticker && istype(SSticker.mode, /datum/game_mode/wizard/raginmages)) +#define GAMEMODE_IS_METEOR (SSticker && istype(SSticker.mode, /datum/game_mode/meteor)) -//special roles +// special roles // Distinct from the ROLE_X defines because some antags have multiple special roles but only one ban type -#define SPECIAL_ROLE_ABDUCTOR_AGENT "Abductor Agent" -#define SPECIAL_ROLE_ABDUCTOR_SCIENTIST "Abductor Scientist" -#define SPECIAL_ROLE_BLOB "Blob" -#define SPECIAL_ROLE_BLOB_OVERMIND "Blob Overmind" -#define SPECIAL_ROLE_BORER "Borer" -#define SPECIAL_ROLE_CARP "Space Carp" -#define SPECIAL_ROLE_CHANGELING "Changeling" -#define SPECIAL_ROLE_CULTIST "Cultist" -#define SPECIAL_ROLE_CLOCKER "Clockwork cultist" -#define SPECIAL_ROLE_DEATHSQUAD "Death Commando" -#define SPECIAL_ROLE_ERT "Response Team" -#define SPECIAL_ROLE_FREE_GOLEM "Free Golem" -#define SPECIAL_ROLE_GOLEM "Golem" -#define SPECIAL_ROLE_HEAD_REV "Head Revolutionary" -#define SPECIAL_ROLE_HEADSLUG "HeadSlug" -#define SPECIAL_ROLE_HONKSQUAD "Honksquad" -#define SPECIAL_ROLE_REV "Revolutionary" -#define SPECIAL_ROLE_MORPH "Morph" -#define SPECIAL_ROLE_MULTIVERSE "Multiverse Traveller" -#define SPECIAL_ROLE_NUKEOPS "Syndicate" -#define SPECIAL_ROLE_PYROCLASTIC_SLIME "Pyroclastic Anomaly Slime" -#define SPECIAL_ROLE_RAIDER "Vox Raider" -#define SPECIAL_ROLE_REVENANT "Revenant" -#define SPECIAL_ROLE_SHADOWLING "Shadowling" -#define SPECIAL_ROLE_SHADOWLING_THRALL "Shadowling Thrall" -#define SPECIAL_ROLE_DEMON "Demon" -#define SPECIAL_ROLE_SUPER "Super" -#define SPECIAL_ROLE_SYNDICATE_DEATHSQUAD "Syndicate Commando" -#define SPECIAL_ROLE_TRAITOR "Traitor" -#define SPECIAL_ROLE_VAMPIRE "Vampire" -#define SPECIAL_ROLE_VAMPIRE_THRALL "Vampire Thrall" -#define SPECIAL_ROLE_WIZARD "Wizard" -#define SPECIAL_ROLE_WIZARD_APPRENTICE "Wizard Apprentice" -#define SPECIAL_ROLE_XENOMORPH "Xenomorph" -#define SPECIAL_ROLE_XENOMORPH_QUEEN "Xenomorph Queen" -#define SPECIAL_ROLE_XENOMORPH_HUNTER "Xenomorph Hunter" -#define SPECIAL_ROLE_XENOMORPH_DRONE "Xenomorph Drone" -#define SPECIAL_ROLE_XENOMORPH_SENTINEL "Xenomorph Sentinel" -#define SPECIAL_ROLE_XENOMORPH_LARVA "Xenomorph Larva" -#define SPECIAL_ROLE_SPACE_NINJA "Space Ninja" -#define SPECIAL_ROLE_THIEF "Thief" -#define SPECIAL_ROLE_SPACE_DRAGON "Space Dragon" -#define SPECIAL_ROLE_EVENTMISC "Event Role" +#define SPECIAL_ROLE_ABDUCTOR_AGENT "Abductor Agent" +#define SPECIAL_ROLE_ABDUCTOR_SCIENTIST "Abductor Scientist" +#define SPECIAL_ROLE_BLOB "Blob" +#define SPECIAL_ROLE_BLOB_OVERMIND "Blob Overmind" +#define SPECIAL_ROLE_BLOB_MINION "Blob Minion" +#define SPECIAL_ROLE_BORER "Borer" +#define SPECIAL_ROLE_CARP "Space Carp" +#define SPECIAL_ROLE_CHANGELING "Changeling" +#define SPECIAL_ROLE_CULTIST "Cultist" +#define SPECIAL_ROLE_CLOCKER "Clockwork cultist" +#define SPECIAL_ROLE_DEATHSQUAD "Death Commando" +#define SPECIAL_ROLE_ERT "Response Team" +#define SPECIAL_ROLE_FREE_GOLEM "Free Golem" +#define SPECIAL_ROLE_GOLEM "Golem" +#define SPECIAL_ROLE_HEAD_REV "Head Revolutionary" +#define SPECIAL_ROLE_HEADSLUG "HeadSlug" +#define SPECIAL_ROLE_HONKSQUAD "Honksquad" +#define SPECIAL_ROLE_REV "Revolutionary" +#define SPECIAL_ROLE_MORPH "Morph" +#define SPECIAL_ROLE_MULTIVERSE "Multiverse Traveller" +#define SPECIAL_ROLE_NUKEOPS "Syndicate" +#define SPECIAL_ROLE_PYROCLASTIC_SLIME "Pyroclastic Anomaly Slime" +#define SPECIAL_ROLE_RAIDER "Vox Raider" +#define SPECIAL_ROLE_REVENANT "Revenant" +#define SPECIAL_ROLE_SHADOWLING "Shadowling" +#define SPECIAL_ROLE_SHADOWLING_THRALL "Shadowling Thrall" +#define SPECIAL_ROLE_DEMON "Demon" +#define SPECIAL_ROLE_SUPER "Super" +#define SPECIAL_ROLE_SYNDICATE_DEATHSQUAD "Syndicate Commando" +#define SPECIAL_ROLE_TRAITOR "Traitor" +#define SPECIAL_ROLE_VAMPIRE "Vampire" +#define SPECIAL_ROLE_VAMPIRE_THRALL "Vampire Thrall" +#define SPECIAL_ROLE_WIZARD "Wizard" +#define SPECIAL_ROLE_WIZARD_APPRENTICE "Wizard Apprentice" +#define SPECIAL_ROLE_XENOMORPH "Xenomorph" +#define SPECIAL_ROLE_XENOMORPH_QUEEN "Xenomorph Queen" +#define SPECIAL_ROLE_XENOMORPH_HUNTER "Xenomorph Hunter" +#define SPECIAL_ROLE_XENOMORPH_DRONE "Xenomorph Drone" +#define SPECIAL_ROLE_XENOMORPH_SENTINEL "Xenomorph Sentinel" +#define SPECIAL_ROLE_XENOMORPH_LARVA "Xenomorph Larva" +#define SPECIAL_ROLE_TERROR_SPIDER "Terror Spider" +#define SPECIAL_ROLE_TERROR_QUEEN "Terror Queen" +#define SPECIAL_ROLE_TERROR_PRINCE "Terror Prince" +#define SPECIAL_ROLE_TERROR_PRINCESS "Terror Princess" +#define SPECIAL_ROLE_TERROR_DEFILER "Terror Defiler" +#define SPECIAL_ROLE_TERROR_EMPRESS "Terror Empress" +#define SPECIAL_ROLE_TERROR_DESTROYER "Terror Destroyer" +#define SPECIAL_ROLE_SPACE_NINJA "Space Ninja" +#define SPECIAL_ROLE_THIEF "Thief" +#define SPECIAL_ROLE_SPACE_DRAGON "Space Dragon" +#define SPECIAL_ROLE_EVENTMISC "Event Role" +#define SPECIAL_ROLE_MALFAI "Malfunctioning AI" +#define SPECIAL_ROLE_SINTOUCHED "Sintouched" +#define SPECIAL_ROLE_DEVIL_PAWN "Devil's pawn" diff --git a/code/__DEFINES/generators.dm b/code/__DEFINES/generators.dm new file mode 100644 index 000000000000..3ad34d39f2ce --- /dev/null +++ b/code/__DEFINES/generators.dm @@ -0,0 +1,12 @@ +//generator types +#define GEN_NUM "num" +#define GEN_VECTOR "vector" +#define GEN_BOX "box" +#define GEN_CIRCLE "circle" +#define GEN_SPHERE "sphere" + +///particle editor var modifiers +#define P_DATA_GENERATOR "generator" +#define P_DATA_ICON_ADD "icon_add" +#define P_DATA_ICON_REMOVE "icon_remove" +#define P_DATA_ICON_WEIGHT "icon_edit" diff --git a/code/__DEFINES/genetics.dm b/code/__DEFINES/genetics.dm index 84bbaf40e6ee..5bd97e6aabe9 100644 --- a/code/__DEFINES/genetics.dm +++ b/code/__DEFINES/genetics.dm @@ -25,7 +25,8 @@ #define DISABILITY_FLAG_TEA_ADDICT (1<<13) #define DISABILITY_FLAG_ALCOHOLE_ADDICT (1<<14) #define DISABILITY_FLAG_NICOTINE_ADDICT (1<<15) -#define DISABILITY_FLAG_PARAPLEGIA (1<<16) +#define DISABILITY_FLAG_PARAPLEGIA (1<<16) +#define DISABILITY_FLAG_APHASIA (1<<17) //Nutrition levels for humans. No idea where else to put it diff --git a/code/__DEFINES/holomaps.dm b/code/__DEFINES/holomaps.dm new file mode 100644 index 000000000000..ff0a8fee5cc8 --- /dev/null +++ b/code/__DEFINES/holomaps.dm @@ -0,0 +1,44 @@ +// Constants and standard colors for the holomap + +/// Icon file to start with when drawing holomaps (to get a 480x480 canvas). +#define HOLOMAP_ICON 'icons/misc/480x480.dmi' +/// Pixel width & height of the holomap icon. Used for auto-centering etc. +#define HOLOMAP_ICON_SIZE 480 +#define ui_holomap "CENTER-7,CENTER-7" // Screen location of the holomap "hud" + +#define HOLOMAP_EXTRA_STATIONMAP "stationmapformatted" +#define HOLOMAP_EXTRA_STATIONMAPAREAS "stationareas" +#define HOLOMAP_EXTRA_STATIONMAPSMALL "stationmapsmall" + +// Holomap colors +#define HOLOMAP_OBSTACLE "#FFFFFFDD" // Color of walls and barriers +#define HOLOMAP_SOFT_OBSTACLE "#ffffff54" // Color of weak, climbable, or see-through barriers that aren't fulltile windows. +#define HOLOMAP_PATH "#66666699" // Color of floors +#define HOLOMAP_ROCK "#66666644" // Color of mineral walls +#define HOLOMAP_HOLOFIER "#0096bb" // Whole map is multiplied by this to give it a green holoish look + +#define HOLOMAP_AREACOLOR_SHIELD_1 rgb(0, 119, 255, 64) +#define HOLOMAP_AREACOLOR_SHIELD_2 rgb(0, 255, 255, 64) + +#define HOLOMAP_AREACOLOR_COMMAND "#3434d499" +#define HOLOMAP_AREACOLOR_SECURITY "#AE121299" +#define HOLOMAP_AREACOLOR_MEDICAL "#447bc299" +#define HOLOMAP_AREACOLOR_SCIENCE "#A154A699" +#define HOLOMAP_AREACOLOR_ENGINEERING "#F1C23199" +#define HOLOMAP_AREACOLOR_CARGO "#e06f0099" +#define HOLOMAP_AREACOLOR_HALLWAYS "#b9b9b999" +#define HOLOMAP_AREACOLOR_MAINTENANCE "#5e5e5e99" +#define HOLOMAP_AREACOLOR_ARRIVALS "#6464ff99" +#define HOLOMAP_AREACOLOR_ESCAPE "#ff585899" +#define HOLOMAP_AREACOLOR_DORMS "#bfff8399" +#define HOLOMAP_AREACOLOR_SERVICE "#3ab33699" +#define HOLOMAP_AREACOLOR_HANGAR "#2681a599" +//#define HOLOMAP_AREACOLOR_MUNITION "#CC889999" + +#define HOLOMAP_LEGEND_X 64 +#define HOLOMAP_LEGEND_Y 96 + +#define HOLOMAP_LEGEND_WIDTH 64 + +#define HOLOMAP_CENTER_X round((HOLOMAP_ICON_SIZE - world.maxx) / 2) +#define HOLOMAP_CENTER_Y round((HOLOMAP_ICON_SIZE - world.maxy) / 2) diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm index 8a69bac57f75..7ee61dccdfb0 100644 --- a/code/__DEFINES/hud.dm +++ b/code/__DEFINES/hud.dm @@ -97,3 +97,6 @@ #define PLANE_GROUP_MAIN "main" /// A secondary group, used when a client views a generic window #define PLANE_GROUP_POPUP_WINDOW(screen) "popup-[screen.UID()]" + +//Blobbernauts +#define ui_blobbernaut_overmind_health "EAST-1:28,CENTER+0:19" diff --git a/code/__DEFINES/icon_smoothing.dm b/code/__DEFINES/icon_smoothing.dm index 404e38e8039f..1aad276d335f 100644 --- a/code/__DEFINES/icon_smoothing.dm +++ b/code/__DEFINES/icon_smoothing.dm @@ -29,17 +29,6 @@ #define SMOOTH_DIAGONAL (1 << 12) //if atom should smooth diagonally, this should be present in 'smooth' var -DEFINE_BITFIELD(smoothing_flags, list( - "SMOOTH_CORNERS" = SMOOTH_CORNERS, - "SMOOTH_BITMASK" = SMOOTH_BITMASK, - "SMOOTH_DIAGONAL_CORNERS" = SMOOTH_DIAGONAL_CORNERS, - "SMOOTH_BORDER" = SMOOTH_BORDER, - "SMOOTH_QUEUED" = SMOOTH_QUEUED, - "SMOOTH_OBJ" = SMOOTH_OBJ, - "SMOOTH_BORDER_OBJECT" = SMOOTH_BORDER_OBJECT, - "SMOOTH_BROKEN_TURF" = SMOOTH_BROKEN_TURF, - "SMOOTH_BURNT_TURF" = SMOOTH_BURNT_TURF, -)) /// Components of a smoothing junction /// Redefinitions of the diagonal directions so they can be stored in one var without conflicts @@ -52,17 +41,6 @@ DEFINE_BITFIELD(smoothing_flags, list( #define SOUTHWEST_JUNCTION (1<<6) #define NORTHWEST_JUNCTION (1<<7) -DEFINE_BITFIELD(smoothing_junction, list( - "NORTH_JUNCTION" = NORTH_JUNCTION, - "SOUTH_JUNCTION" = SOUTH_JUNCTION, - "EAST_JUNCTION" = EAST_JUNCTION, - "WEST_JUNCTION" = WEST_JUNCTION, - "NORTHEAST_JUNCTION" = NORTHEAST_JUNCTION, - "SOUTHEAST_JUNCTION" = SOUTHEAST_JUNCTION, - "SOUTHWEST_JUNCTION" = SOUTHWEST_JUNCTION, - "NORTHWEST_JUNCTION" = NORTHWEST_JUNCTION, -)) - /*smoothing macros*/ #define QUEUE_SMOOTH(thing_to_queue) if(thing_to_queue.smooth & (SMOOTH_CORNERS|SMOOTH_BITMASK)) {SSicon_smooth.add_to_queue(thing_to_queue)} diff --git a/code/__DEFINES/insurance.dm b/code/__DEFINES/insurance.dm new file mode 100644 index 000000000000..615e644caf82 --- /dev/null +++ b/code/__DEFINES/insurance.dm @@ -0,0 +1,33 @@ +#define INSURANCE_NONE 0 +#define INSURANCE_BUDGETARY 1000 +#define INSURANCE_STANDART 3000 +#define INSURANCE_EXTENDED 6000 +#define INSURANCE_DELUXE 10000 +#define INSURANCE_NT_SPECIAL 100000 // CC roles don't have accounts, but if they do, they will have this insurance. + +#define INSURANCE_NONE_COST 0 +#define INSURANCE_BUDGETARY_COST 0 +#define INSURANCE_STANDART_COST 500 +#define INSURANCE_DELUXE_COST 2000 + +#define INSURANCE_TYPE_NONE "None" +#define INSURANCE_TYPE_BUDGETARY "Bugetary" +#define INSURANCE_TYPE_STANDART "Standart" +#define INSURANCE_TYPE_EXTENDED "Extended" +#define INSURANCE_TYPE_DELUXE "Deluxe" +#define INSURANCE_TYPE_NT_SPECIAL "NT Special" + +#define REQ_INSURANCE_BRUT 1.5 +#define REQ_INSURANCE_BURN 1.5 +#define REQ_INSURANCE_OXY 0.5 +#define REQ_INSURANCE_TOX 0.5 +#define REQ_INSURANCE_ORGAN 1 +#define REQ_INSURANCE_RAD 1 +#define REQ_INSURANCE_CLONE 2 +#define REQ_INSURANCE_BLOOD 2 // 1% of max blood +#define REQ_INSURANCE_INTBLEED 150 +#define REQ_INSURANCE_BONE 150 +#define REQ_INSURANCE_LOST_ORGAN 300 +#define REQ_INSURANCE_LOST_LIMB 300 +#define REQ_INSURANCE_CRIT 250 +#define REQ_INSURANCE_DEATH 500 diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 65a3903b03fa..881adc4a4747 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -1,3 +1,9 @@ +// simple is_type and similar inline helpers +#define in_range(source, user) (get_dist(source, user) <= 1 && (get_step(source, 0)?:z) == (get_step(user, 0)?:z)) + +/// Within given range, but not counting z-levels +#define IN_GIVEN_RANGE(source, other, given_range) (get_dist(source, other) <= given_range && (get_step(source, 0)?:z) == (get_step(other, 0)?:z)) + // Atoms #define isatom(A) (isloc(A)) @@ -56,6 +62,12 @@ #define isstorage(A) (istype(A, /obj/item/storage)) +#define isgrenade(A) (istype(A, /obj/item/grenade)) + +#define issupplypod(A) (istype(A, /obj/structure/closet/supplypod)) + +#define isammocasing(A) (istype(A, /obj/item/ammo_casing)) + #define ismachinery(A) (istype(A, /obj/machinery)) #define isapc(A) (istype(A, /obj/machinery/power/apc)) @@ -70,7 +82,7 @@ #define isvehicle(A) (istype(A, /obj/vehicle)) -#define isprojectile(A) (istype(A, /obj/item/projectile)) +#define isprojectile(A) (istype(A, /obj/projectile)) #define isgun(A) (istype(A, /obj/item/gun)) @@ -82,6 +94,10 @@ #define isclothing(A) (istype(A, /obj/item/clothing)) +#define is_internal_organ(A) istype(A, /obj/item/organ/internal) + +#define is_organ(A) istype((A), /obj/item/organ) + GLOBAL_LIST_INIT(pointed_types, typecacheof(list( /obj/item/pen, /obj/item/screwdriver, @@ -133,6 +149,8 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list( #define ischasm(A) (istype(A, /turf/simulated/floor/chasm)) +#define issingularity(atom) (istype(atom, /obj/singularity)) + //Structures #define isstructure(A) (istype(A, /obj/structure)) diff --git a/code/__DEFINES/job.dm b/code/__DEFINES/job.dm index ce3fa0602647..6687e3eac356 100644 --- a/code/__DEFINES/job.dm +++ b/code/__DEFINES/job.dm @@ -60,7 +60,6 @@ #define JOB_FLAG_REPRESENTATIVE (1<<0) #define JOB_FLAG_BLUESHIELD (1<<1) -#define JOB_FLAG_BARBER (1<<3) #define JOB_FLAG_MECHANIC (1<<4) #define JOB_FLAG_BRIGDOC (1<<5) #define JOB_FLAG_JUDGE (1<<6) @@ -120,7 +119,6 @@ #define JOB_TITLE_MIME "Mime" #define JOB_TITLE_JANITOR "Janitor" #define JOB_TITLE_LIBRARIAN "Librarian" -#define JOB_TITLE_BARBER "Barber" #define JOB_TITLE_EXPLORER "Explorer" #define JOB_TITLE_SYNDICATE "Syndicate Officer" diff --git a/code/__DEFINES/language.dm b/code/__DEFINES/language.dm index 2e5f93aa4f25..9825f934dadf 100644 --- a/code/__DEFINES/language.dm +++ b/code/__DEFINES/language.dm @@ -1,44 +1,44 @@ // Language keys. -#define LANGUAGE_NONE "None" -#define LANGUAGE_NOISE "Noise" -#define LANGUAGE_UNATHI "Sinta'unathi" -#define LANGUAGE_TAJARAN "Siik'tajr" -#define LANGUAGE_VULPKANIN "Canilunzt" -#define LANGUAGE_SKRELL "Skrellian" -#define LANGUAGE_VOX "Vox-pidgin" -#define LANGUAGE_DIONA "Rootspeak" -#define LANGUAGE_TRINARY "Trinary" -#define LANGUAGE_KIDAN "Chittin" -#define LANGUAGE_SLIME "Bubblish" -#define LANGUAGE_GREY "Psionic Communication" -#define LANGUAGE_DRASK "Orluum" -#define LANGUAGE_MOTH "Tkachi" -#define LANGUAGE_GALACTIC_COMMON "Galactic Common" -#define LANGUAGE_SOL_COMMON "Sol Common" -#define LANGUAGE_TRADER "Tradeband" -#define LANGUAGE_GUTTER "Gutter" -#define LANGUAGE_CLOWN "Clownish" -#define LANGUAGE_NEO_RUSSIAN "Neo-Russkiya" -#define LANGUAGE_WRYN "Wryn Hivemind" -#define LANGUAGE_XENOS "Xenomorph" -#define LANGUAGE_HIVE_XENOS "Xenomorph Hivemind" -#define LANGUAGE_HIVE_TERRORSPIDER "Spider Hivemind" -#define LANGUAGE_HIVE_CHANGELING "Changeling Hivemind" -#define LANGUAGE_HIVE_EVENTLING "Infiltrated Changeling Hivemind" -#define LANGUAGE_HIVE_SHADOWLING "Shadowling Hivemind" -#define LANGUAGE_HIVE_ABDUCTOR "Abductor Mindlink" -#define LANGUAGE_HIVE_GOLEM "Golem Mindlink" -#define LANGUAGE_HIVE_BORER "Cortical Link" -#define LANGUAGE_BINARY "Robot Talk" -#define LANGUAGE_DRONE_BINARY "Drone Talk" -#define LANGUAGE_DRONE "Drone" -#define LANGUAGE_HIVE_SWARMER "Swarmer" -#define LANGUAGE_MONKEY_HUMAN "Chimpanzee" -#define LANGUAGE_MONKEY_SKRELL "Neara" -#define LANGUAGE_MONKEY_UNATHI "Stok" -#define LANGUAGE_MONKEY_TAJARAN "Farwa" -#define LANGUAGE_MONKEY_VULPKANIN "Wolpin" -#define LANGUAGE_ANGEL "Angel Singing" +#define LANGUAGE_NONE "Нет" +#define LANGUAGE_NOISE "Шум" +#define LANGUAGE_UNATHI "Синта'Унати" +#define LANGUAGE_TAJARAN "Сик'таир" +#define LANGUAGE_VULPKANIN "Канилунц" +#define LANGUAGE_SKRELL "Скреллианский" +#define LANGUAGE_VOX "Вокс-пиджин" +#define LANGUAGE_DIONA "Песнь корней" +#define LANGUAGE_TRINARY "Троичный" +#define LANGUAGE_KIDAN "Хитин" +#define LANGUAGE_SLIME "Пузырчатый" +#define LANGUAGE_GREY "Псисвязь" +#define LANGUAGE_DRASK "Орлуум" +#define LANGUAGE_MOTH "Ткачий язык" +#define LANGUAGE_GALACTIC_COMMON "Общегалактический" +#define LANGUAGE_SOL_COMMON "Общесолнечный" +#define LANGUAGE_TRADER "Торговый" +#define LANGUAGE_GUTTER "Гангстерский" +#define LANGUAGE_CLOWN "Клоунский" +#define LANGUAGE_NEO_RUSSIAN "Нео-русский" +#define LANGUAGE_WRYN "Разум улья Вринов" +#define LANGUAGE_XENOS "Ксеноморфский" +#define LANGUAGE_HIVE_XENOS "Разум улья Ксеноморфов" +#define LANGUAGE_HIVE_TERRORSPIDER "Разум улья Пауков Ужаса" +#define LANGUAGE_HIVE_CHANGELING "Разум улья генокрадов" +#define LANGUAGE_HIVE_EVENTLING "Инфильтрованный коллективный разум Генокрадов" +#define LANGUAGE_HIVE_SHADOWLING "Коллективный разум Тенеморфов" +#define LANGUAGE_HIVE_ABDUCTOR "Псисвязь Абдукторов" +#define LANGUAGE_HIVE_GOLEM "Псисвязь Големов" +#define LANGUAGE_HIVE_BORER "Кортикальная связь" +#define LANGUAGE_BINARY "Бинарный канал" +#define LANGUAGE_DRONE_BINARY "Канал Дронов" +#define LANGUAGE_DRONE "Дрон" +#define LANGUAGE_HIVE_SWARMER "Связь Роевиков" +#define LANGUAGE_MONKEY_HUMAN "Шимпанзиный" +#define LANGUAGE_MONKEY_SKRELL "Неарский" +#define LANGUAGE_MONKEY_UNATHI "Стокский" +#define LANGUAGE_MONKEY_TAJARAN "Фарвный" +#define LANGUAGE_MONKEY_VULPKANIN "Вульпинский" +#define LANGUAGE_ANGEL "Ангельское пение" // Language flags. diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 56b86f0524bc..d915e3b9cf39 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -117,6 +117,15 @@ #define PLANE_CRITICAL_FUCKO_PARALLAX (PLANE_CRITICAL_DISPLAY|PLANE_CRITICAL_NO_EMPTY_RELAY) +//---------- Plane Master offsetting_flags ------------- +// Describes how different plane masters behave regarding being offset +/// This plane master will not be offset itself, existing only once with an offset of 0 +/// Mostly used for planes that really don't need to be duplicated, like the hud planes +#define BLOCKS_PLANE_OFFSETTING (1<<0) +/// This plane master will have its relays offset to match the highest rendering plane that matches the target +/// Required for making things like the blind fullscreen not render over runechat +#define OFFSET_RELAYS_MATCH_HIGHEST (1<<1) + /// A value of /datum/preference/numeric/multiz_performance that disables the option #define MULTIZ_PERFORMANCE_DISABLE -1 /// We expect at most 3 layers of multiz diff --git a/code/__DEFINES/lighting.dm b/code/__DEFINES/lighting.dm index ab01afc8fd64..eb59543fdb04 100644 --- a/code/__DEFINES/lighting.dm +++ b/code/__DEFINES/lighting.dm @@ -87,6 +87,17 @@ #define LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE 128 //For lighting alpha, small amounts lead to big changes. even at 128 its hard to figure out what is dark and what is light, at 64 you almost can't even tell. #define LIGHTING_PLANE_ALPHA_INVISIBLE 0 +#define standartize_alpha(__alpha) (__alpha / LIGHTING_PLANE_ALPHA_VISIBLE) + +#define ALPHA_SOURCE_DEFAULT "default" +#define ALPHA_SOURCE_CHAMELEON "chameleon_gene" +#define ALPHA_SOURCE_SHADOW_CLOAK "shadow_cloak_gene" +#define ALPHA_SOURCE_VAMPIRE "vampire" +#define ALPHA_SOURCE_SHADOW_THRALL "shadowling_thrall" +#define ALPHA_SOURCE_SHADOWLING "shadowling" +#define ALPHA_SOURCE_NINJA "ninja" +#define ALPHA_SOURCE_CLOCKROBE "clockrobe" + //code assumes higher numbers override lower numbers. #define LIGHTING_NO_UPDATE 0 diff --git a/code/__DEFINES/machines.dm b/code/__DEFINES/machines.dm index 381b6b2e6f8a..8e66d212f376 100644 --- a/code/__DEFINES/machines.dm +++ b/code/__DEFINES/machines.dm @@ -96,6 +96,9 @@ #define LOGIN_TYPE_ROBOT 3 #define LOGIN_TYPE_ADMIN 4 +#define NUKE_STATUS_INTACT 0 +#define NUKE_CORE_MISSING 1 +#define NUKE_MISSING 2 // Bitflags for a machine's preferences on when it should start processing. For use with machinery's `processing_flags` var. /// Indicates the machine will automatically start processing right after it's `Initialize()` is ran. @@ -103,3 +106,4 @@ /// Machines with this flag will not start processing when it's spawned. Use this if you want to manually control when a machine starts processing. #define START_PROCESSING_MANUALLY (1<<1) +#define ORE_REDEMPTION "Плавильная печь" diff --git a/code/__DEFINES/math.dm b/code/__DEFINES/math.dm index f1322a4b7d3f..95a7f556d9c6 100644 --- a/code/__DEFINES/math.dm +++ b/code/__DEFINES/math.dm @@ -34,6 +34,9 @@ // Similar to clamp but the bottom rolls around to the top and vice versa. min is inclusive, max is exclusive #define WRAP(val, min, max) clamp(( min == max ? min : (val) - (round(((val) - (min))/((max) - (min))) * ((max) - (min))) ),min,max) +/// Increments a value and wraps it if it exceeds some value. Can be used to circularly iterate through a list through `idx = WRAP_UP(idx, length_of_list)`. +#define WRAP_UP(val, max) (((val) % (max)) + 1) + // Real modulus that handles decimals #define MODULUS(x, y) ( (x) - FLOOR(x, y)) @@ -119,3 +122,6 @@ /// Like SPT_PROB_RATE but easier to use, simply put `if(SPT_PROB(10, 5))` #define SPT_PROB(prob_per_second_percent, seconds_per_tick) (prob(100*SPT_PROB_RATE((prob_per_second_percent)/100, (seconds_per_tick)))) // ) + +/// The number of cells in a taxicab circle (rasterized diamond) of radius X. +#define DIAMOND_AREA(X) (1 + 2*(X)*((X)+1)) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 0bf66ff143d5..ecb13b91854e 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -98,41 +98,6 @@ #define STAGE_FIVE 9 #define STAGE_SIX 11 //From supermatter shard -#define in_range(source, user) (get_dist(source, user) <= 1) - -#define RANGE_TURFS(RADIUS, CENTER) \ - RECT_TURFS(RADIUS, RADIUS, CENTER) - -#define RECT_TURFS(H_RADIUS, V_RADIUS, CENTER) \ - block( \ - max(CENTER.x - (H_RADIUS), 1), max(CENTER.y - (V_RADIUS), 1), CENTER.z, \ - min(CENTER.x + (H_RADIUS), world.maxx), min(CENTER.y + (V_RADIUS), world.maxy), CENTER.z \ - ) - -/// Returns the turfs on the edge of a square with CENTER in the middle and with the given RADIUS. If used near the edge of the map, will still work fine. -// order of the additions: top edge + bottom edge + left edge + right edge -#define RANGE_EDGE_TURFS(RADIUS, CENTER)\ - (CENTER.y + RADIUS < world.maxy ? block(max(CENTER.x - RADIUS, 1), min(CENTER.y + RADIUS, world.maxy), CENTER.z, min(CENTER.x + RADIUS, world.maxx), min(CENTER.y + RADIUS, world.maxy), CENTER.z) : list()) +\ - (CENTER.y - RADIUS > 1 ? block(max(CENTER.x - RADIUS, 1), max(CENTER.y - RADIUS, 1), CENTER.z, min(CENTER.x + RADIUS, world.maxx), max(CENTER.y - RADIUS, 1), CENTER.z) : list()) +\ - (CENTER.x - RADIUS > 1 ? block(max(CENTER.x - RADIUS, 1), min(CENTER.y + RADIUS - 1, world.maxy), CENTER.z, max(CENTER.x - RADIUS, 1), max(CENTER.y - RADIUS + 1, 1), CENTER.z) : list()) +\ - (CENTER.x + RADIUS < world.maxx ? block(min(CENTER.x + RADIUS, world.maxx), min(CENTER.y + RADIUS - 1, world.maxy), CENTER.z, min(CENTER.x + RADIUS, world.maxx), max(CENTER.y - RADIUS + 1, 1), CENTER.z) : list()) - -/// Returns a list of turfs in the rectangle specified by BOTTOM LEFT corner and height/width, checks for being outside the world border for you -#define CORNER_BLOCK(corner, width, height) CORNER_BLOCK_OFFSET(corner, width, height, 0, 0) - -/// Returns a list of turfs similar to CORNER_BLOCK but with offsets -#define CORNER_BLOCK_OFFSET(corner, width, height, offset_x, offset_y) ((block(locate(corner.x + offset_x, corner.y + offset_y, corner.z), locate(min(corner.x + (width - 1) + offset_x, world.maxx), min(corner.y + (height - 1) + offset_y, world.maxy), corner.z)))) - -/// Returns an outline (neighboring turfs) of the given block -#define CORNER_OUTLINE(corner, width, height) ( \ - CORNER_BLOCK_OFFSET(corner, width + 2, 1, -1, -1) + \ - CORNER_BLOCK_OFFSET(corner, width + 2, 1, -1, height) + \ - CORNER_BLOCK_OFFSET(corner, 1, height, -1, 0) + \ - CORNER_BLOCK_OFFSET(corner, 1, height, width, 0)) - -/// Returns a list of around us -#define TURF_NEIGHBORS(turf) (CORNER_BLOCK_OFFSET(turf, 3, 3, -1, -1) - turf) - #define FOR_DVIEW(type, range, center, invis_flags) \ GLOB.dview_mob.loc = center; \ GLOB.dview_mob.set_invis_see(invis_flags); \ @@ -396,7 +361,7 @@ #define EXPLOSION_BLOCK_PROC -1 // The SQL version required by this version of the code -#define SQL_VERSION 33 +#define SQL_VERSION 34 // Vending machine stuff #define CAT_NORMAL 1 @@ -523,3 +488,32 @@ /// Disposal: How frequently disposals can make sounds, to prevent huge sound stacking #define DISPOSAL_SOUND_COOLDOWN (0.1 SECONDS) +/// Mech Subtypes +#define MECH_TYPE_NONE (1<<0) +#define MECH_TYPE_RIPLEY (1<<1) +#define MECH_TYPE_CLARKE (1<<2) +#define MECH_TYPE_ODYSSEUS (1<<3) +#define MECH_TYPE_GYGAX (1<<4) +#define MECH_TYPE_DURAND (1<<5) +#define MECH_TYPE_PHAZON (1<<6) +#define MECH_TYPE_HONKER (1<<7) +#define MECH_TYPE_RETICENCE (1<<8) +#define MECH_TYPE_LOCKER (1<<9) +#define MECH_TYPE_MARAUDER (1<<10) +#define MECH_TYPE_SIDEWINTER (1<<11) +#define MECH_TYPE_OLD_DURAND (1<<12) +#define MECH_TYPE_DARK_GYGAX (1<<13) + +/// Lavaland types +#define LAVALAND_TYPE_LAVA (1<<0) +#define LAVALAND_TYPE_PLASMA (1<<1) +#define LAVALAND_TYPE_CHASM (1<<2) + +// Deadchat control defines + +/// Will execute a single command after the cooldown based on player votes. +#define DEADCHAT_DEMOCRACY_MODE (1<<0) +/// Allows each player to do a single command every cooldown. +#define DEADCHAT_ANARCHY_MODE (1<<1) +/// Mutes the democracy mode messages send to orbiters at the end of each cycle. Useful for when the cooldown is so low it'd get spammy. +#define MUTE_DEADCHAT_DEMOCRACY_MESSAGES (1<<2) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 234865da160b..7ca285d4bd11 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -17,9 +17,6 @@ #define TOXIN_TO_INTERNAL_DAMAGE_MULTIPLIER 2 // coefficient wich defines ratio of toxin into internal organs damage transfer -#define AGE_MIN 17 //youngest a character can be -#define AGE_MAX 85 //oldest a character can be - #define LEFT 1 #define RIGHT 2 @@ -64,6 +61,8 @@ ////////REAGENT STUFF//////// // How many units of reagent are consumed per tick, by default. #define REAGENTS_METABOLISM 0.4 +#define REAGENTS_EFFECT_MULTIPLIER (REAGENTS_METABOLISM / 0.4) // By defining the effect multiplier this way, it'll exactly adjust all effects according to how they originally were with the 0.4 metabolism +#define REM REAGENTS_EFFECT_MULTIPLIER //! Shorthand for the above define for ease of use in equations and the like // Factor of how fast mob nutrition decreases #define HUNGER_FACTOR 0.1 @@ -128,6 +127,12 @@ #define SLIME_FRIENDSHIP_STAY 3 //Min friendship to order it to stay #define SLIME_FRIENDSHIP_ATTACK 8 //Min friendship to order it to attack +//Spiders ai states +#define SPINNING_WEB 1 +#define LAYING_EGGS 2 +#define MOVING_TO_TARGET 3 +#define SPINNING_COCOON 4 + //Hostile simple animals //If you add a new status, be sure to add a list for it to the simple_animals global in _globalvars/lists/mobs.dm #define AI_ON 1 @@ -210,6 +215,9 @@ #define isskeleton(A) (is_species(A, /datum/species/skeleton)) #define ishumanbasic(A) (is_species(A, /datum/species/human)) #define isunathi(A) (is_species(A, /datum/species/unathi)) +#define isashwalker(A) (is_species(A, /datum/species/unathi/ashwalker)) +#define isashwalkershaman(A) (is_species(A, /datum/species/unathi/ashwalker/shaman)) +#define isdraconid(A) (is_species(A, /datum/species/unathi/draconid)) #define istajaran(A) (is_species(A, /datum/species/tajaran)) #define isvulpkanin(A) (is_species(A, /datum/species/vulpkanin)) #define isskrell(A) (is_species(A, /datum/species/skrell)) @@ -319,6 +327,9 @@ #define isAIEye(A) (istype((A), /mob/camera/aiEye)) #define isovermind(A) (istype((A), /mob/camera/blob)) +#define isminion(A) (istype((A), /mob/living/simple_animal/hostile/blob_minion)) +#define isblobbernaut(M) istype((M), /mob/living/simple_animal/hostile/blob_minion/blobbernaut) + #define isSpirit(A) (istype((A), /mob/spirit)) #define ismask(A) (istype((A), /mob/spirit/mask)) @@ -332,6 +343,8 @@ #define is_admin(user) (check_rights(R_ADMIN, 0, (user)) != 0) +#define is_developer(user) (check_rights(R_VIEWRUNTIMES, FALSE, user) + #define SLEEP_CHECK_DEATH(A, X) \ sleep(X); \ if(QDELETED(A)) return; \ @@ -442,6 +455,7 @@ /// Makes the weaken into a knockdown #define SHOCK_KNOCKDOWN (1<<7) + /// Vomit defines #define VOMIT_NUTRITION_LOSS 10 #define VOMIT_STUN_TIME (8 SECONDS) @@ -456,3 +470,38 @@ /// For babylon fever disease. #define DISEASE_MOB_LANGUAGE_PROCESSED (1<<0) + +/// Eyes examine time mod +#define EXAMINE_INSTANT 0 // 0 seconds + +//Incapacitated ignore flags for [/proc/incapacitated()]. +// They also used at interaction_flags_c var. +/// If the incapacitated will ignore a mob in restraints +#define INC_IGNORE_RESTRAINED (1<<0) +/// If the incapacitated will ignore a mob being agressively grabbed +#define INC_IGNORE_GRABBED (1<<1) + +/// If reading is required to perform action (can't read a book if you are illiterate) +#define NEED_LITERACY (1<<0) +/// If incapacitated doesn't needed to be checked. +#define BYPASS_INCAPACITATED (1<<1) +/// If other mobs (monkeys, aliens, etc) can perform action (can't use computers if you are a monkey) +#define NEED_DEXTERITY (1<<2) +/// If hands are required to perform action (can't use objects that require hands if you are a cyborg) +#define NEED_HANDS (1<<3) +/// If telekinesis is forbidden to perform action from a distance (ex. canisters are blacklisted from telekinesis manipulation) +#define FORBID_TELEKINESIS_REACH (1<<4) +/// If silicons are allowed to perform action from a distance (silicons can operate airlocks from far away) +#define ALLOW_SILICON_REACH (1<<5) +/// If resting on the floor is allowed to perform action (pAIs can play music while resting) +#define ALLOW_RESTING (1<<6) +/// If this is accessible to creatures with ventcrawl capabilities +#define NEED_VENTCRAWL (1<<7) +/// Skips adjacency checks +#define BYPASS_ADJACENCY (1<<8) +/// Skips recursive loc checks +#define NOT_INSIDE_TARGET (1<<9) +/// Checks for base adjacency, but silences the error +#define SILENT_ADJACENCY (1<<10) +/// Allows pAIs to perform an action +#define ALLOW_PAI (1<<11) diff --git a/code/__DEFINES/monkeys.dm b/code/__DEFINES/monkeys.dm new file mode 100644 index 000000000000..f8ca9c37f25f --- /dev/null +++ b/code/__DEFINES/monkeys.dm @@ -0,0 +1,42 @@ +//Monkey defines, placed here so they can be read by other things! + +/// below this health value the monkey starts to flee from enemies +#define MONKEY_FLEE_HEALTH 50 +/// how close an enemy must be to trigger aggression +#define MONKEY_ENEMY_VISION 9 +/// how close an enemy must be before it triggers flee +#define MONKEY_FLEE_VISION 4 +/// How long does it take the item to be taken from a mobs hand +#define MONKEY_ITEM_SNATCH_DELAY 25 +/// Probability monkey will aggro when cuffed +#define MONKEY_CUFF_RETALIATION_PROB 20 +/// Probability monkey will aggro when syringed +#define MONKEY_SYRINGE_RETALIATION_PROB 20 + +// Probability per Life tick that the monkey will: + +/// probability that monkey resist out of restraints +#define MONKEY_RESIST_PROB 50 +/// probability that monkey aggro against the mob pulling it +#define MONKEY_PULL_AGGRO_PROB 5 +/// probability that monkey will get into mischief, i.e. finding/stealing items +#define MONKEY_SHENANIGAN_PROB 20 +/// probability that monkey will disarm an armed attacker +#define MONKEY_ATTACK_DISARM_PROB 50 +/// probability that monkey will get recruited when friend is attacked +#define MONKEY_RECRUIT_PROB 25 + +/// probability for the monkey to aggro when attacked with harm intent +#define MONKEY_RETALIATE_HARM_PROB 95 +/// probability for the monkey to aggro when attacked with disarm intent +#define MONKEY_RETALIATE_DISARM_PROB 20 + +/// amount of aggro to add to an enemy when they attack user +#define MONKEY_HATRED_AMOUNT 4 +/// amount of aggro to add to an enemy when a monkey is recruited +#define MONKEY_RECRUIT_HATED_AMOUNT 2 +/// probability of reducing aggro by one when the monkey attacks +#define MONKEY_HATRED_REDUCTION_PROB 20 + +///Monkey recruit cooldown +#define MONKEY_RECRUIT_COOLDOWN 1 MINUTES diff --git a/code/__DEFINES/multiz.dm b/code/__DEFINES/multiz.dm index 9d167495fa88..370eaa8ba459 100644 --- a/code/__DEFINES/multiz.dm +++ b/code/__DEFINES/multiz.dm @@ -1,4 +1,8 @@ /// Attempt to get the turf below the provided one according to Z traits -#define GET_TURF_BELOW(turf) ((!(turf) || !length(SSmapping.multiz_levels) || !SSmapping.multiz_levels[(turf).z][Z_LEVEL_DOWN]) ? null : get_step((turf), DOWN)) +#define GET_TURF_BELOW(turf) ( \ + (turf.turf_flags & RESERVATION_TURF) ? SSmapping.get_reservation_from_turf(turf)?.get_turf_below(turf) : \ + (!(turf) || !length(SSmapping.multiz_levels) || !SSmapping.multiz_levels[(turf).z][Z_LEVEL_DOWN]) ? null : get_step((turf), DOWN)) /// Attempt to get the turf above the provided one according to Z traits -#define GET_TURF_ABOVE(turf) ((!(turf) || !length(SSmapping.multiz_levels) || !SSmapping.multiz_levels[(turf).z][Z_LEVEL_UP]) ? null : get_step((turf), UP)) +#define GET_TURF_ABOVE(turf) ( \ + (turf.turf_flags & RESERVATION_TURF) ? SSmapping.get_reservation_from_turf(turf)?.get_turf_above(turf) : \ + (!(turf) || !length(SSmapping.multiz_levels) || !SSmapping.multiz_levels[(turf).z][Z_LEVEL_UP]) ? null : get_step((turf), UP)) diff --git a/code/__DEFINES/newcaster.dm b/code/__DEFINES/newcaster.dm new file mode 100644 index 000000000000..618df1c6ebc2 --- /dev/null +++ b/code/__DEFINES/newcaster.dm @@ -0,0 +1,30 @@ +// Globals +/// The feed network singleton. Contains all channels (which contain all stories). +GLOBAL_DATUM_INIT(news_network, /datum/feed_network, new) +/// Global list that contains all existing newscasters in the world. +GLOBAL_LIST_EMPTY(allNewscasters) + +// Screen indexes +/// Headlines screen index. +#define NEWSCASTER_HEADLINES 0 +/// Available Jobs screen index. +#define NEWSCASTER_JOBS 1 +/// View Channel screen index. +#define NEWSCASTER_CHANNEL 2 + +// Channels and main editors names +/// Station Announcements - every big text like "nuke ops incoming" +#define NEWS_CHANNEL_STATION "Публичные станционные оповещения" + #define EDITOR_STATION "Автоматический листинг оповещений" +/// Nyx Daily - everyday-ish news about NT +#define NEWS_CHANNEL_NYX "Никс Дейли" + #define EDITOR_NYX "Министерство Информации Центрального Командования" +/// Gibson Gazette - everyhour-ish news about clickbait-worthy topics +#define NEWS_CHANNEL_GIB "Газета Гибсона" + #define EDITOR_GIB "Редактор Майк Хаммерс" + +// Censor flags +/// Censor author name. +#define CENSOR_AUTHOR (1 << 0) +/// Censor story title, body and image. +#define CENSOR_STORY (1 << 1) diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm index dd64f3f88afd..5e2e651c8ce7 100644 --- a/code/__DEFINES/obj_flags.dm +++ b/code/__DEFINES/obj_flags.dm @@ -16,6 +16,8 @@ #define NODECONSTRUCT (1<<5) /// Objects will ignore item attacks #define IGNORE_HITS (1<<6) +/// Objects will ignore blob_act +#define IGNORE_BLOB_ACT (1<<7) // Flags for the item_flags var on /obj/item @@ -73,3 +75,6 @@ /// Checks for finger coverage, prevents damage from nettles #define FINGERS_COVERED (1<<6) +/// Flags for the pod_flags var on /obj/structure/closet/supplypod +#define FIRST_SOUNDS (1<<0) // If it shouldn't play sounds the first time it lands, used for reverse mode + diff --git a/code/__DEFINES/organ_defines.dm b/code/__DEFINES/organ_defines.dm index 34e97a90c743..6ff85f2db7b4 100644 --- a/code/__DEFINES/organ_defines.dm +++ b/code/__DEFINES/organ_defines.dm @@ -33,6 +33,7 @@ #define INTERNAL_ORGAN_EYE_SHIELD_DEVICE "eye_shield" #define INTERNAL_ORGAN_EYE_LING "eye_ling" #define INTERNAL_ORGAN_BREATHING_TUBE "breathing_tube" +#define INTERNAL_ORGAN_SPEECH_TRANSLATOR "voice_translator" #define INTERNAL_ORGAN_STOMACH "stomach" #define INTERNAL_ORGAN_HEART_DRIVE "heartdrive" #define INTERNAL_ORGAN_BRAIN_ANTIDROP "brain_antidrop" @@ -59,3 +60,6 @@ /// used for species that can see without eyes #define NO_VISION_ORGAN "no_vision_organ" +/// Species organs +#define DRASK_LUNGS_COOLING_START_TEMP 280 +#define DRASK_LUNGS_COOLING_STOP_TEMP 400 diff --git a/code/__DEFINES/particles.dm b/code/__DEFINES/particles.dm new file mode 100644 index 000000000000..5657566a63bb --- /dev/null +++ b/code/__DEFINES/particles.dm @@ -0,0 +1,5 @@ +// /obj/effect/abstract/particle_holder/var/particle_flags +// Flags that effect how a particle holder displays something + +/// If we're inside something inside a mob, display off that mob too +#define PARTICLE_ATTACH_MOB (1<<0) diff --git a/code/__DEFINES/polls.dm b/code/__DEFINES/polls.dm new file mode 100644 index 000000000000..e2484052b9b8 --- /dev/null +++ b/code/__DEFINES/polls.dm @@ -0,0 +1,25 @@ + +//unmagic-strings for types of polls, used by SQL don't change these +#define POLLTYPE_OPTION "Single Option" +#define POLLTYPE_TEXT "Text Reply" +#define POLLTYPE_RATING "Rating" +#define POLLTYPE_MULTI "Multiple Choice" + +#define POLL_SECOND "SECOND" +#define POLL_MINUTE "MINUTE" +#define POLL_HOUR "HOUR" +#define POLL_DAY "DAY" +#define POLL_WEEK "WEEK" +#define POLL_MONTH "MONTH" +#define POLL_YEAR "YEAR" + +///The message sent when you sign up to a poll. +#define POLL_RESPONSE_SIGNUP "signup" +///The message sent when you've already signed up for a poll and are trying to sign up again. +#define POLL_RESPONSE_ALREADY_SIGNED "already_signed" +///The message sent when you are not signed up for a poll. +#define POLL_RESPONSE_NOT_SIGNED "not_signed" +///The message sent when you are too late to unregister from a poll. +#define POLL_RESPONSE_TOO_LATE_TO_UNREGISTER "failed_unregister" +///The message sent when you successfully unregister from a poll. +#define POLL_RESPONSE_UNREGISTERED "unregistered" diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 01a0dbd5f88d..104ec4df6ba3 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -58,15 +58,18 @@ #define PREFTOGGLE_2_MC_TAB (1<<11) // 2048 #define PREFTOGGLE_2_DISABLE_TGUI_INPUT (1<<12) // 4096 #define PREFTOGGLE_2_PARALLAX_MULTIZ (1<<13) // 8192 -#define PREFTOGGLE_2_DISABLE_VOTE_POPUPS (1<<14) // 16384 -#define PREFTOGGLE_2_SWAP_INPUT_BUTTONS (1<<15) // 32768 -#define PREFTOGGLE_2_LARGE_INPUT_BUTTONS (1<<16) // 65536 -#define PREFTOGGLE_2_BIG_STRIP_MENU (1<<17) // 131072 -#define PREFTOGGLE_2_ENABLE_TGUI_SAY_LIGHT_MODE (1<<18) // 262144 -#define PREFTOGGLE_2_PIXELATED_MENU (1<<19) // 524288 -#define PREFTOGGLE_2_DESC_TIPS (1<<20) // 1048576 - -#define TOGGLES_2_TOTAL 2097151 // If you add or remove a preference toggle above, make sure you update this define with the total value of the toggles combined. +#define PREFTOGGLE_2_DISABLE_VOTE_POPUPS (1<<14) // 16384 +#define PREFTOGGLE_2_SWAP_INPUT_BUTTONS (1<<15) // 32768 +#define PREFTOGGLE_2_LARGE_INPUT_BUTTONS (1<<16) // 65536 +#define PREFTOGGLE_2_BIG_STRIP_MENU (1<<17) // 131072 +#define PREFTOGGLE_2_ENABLE_TGUI_SAY_LIGHT_MODE (1<<18) // 262144 +#define PREFTOGGLE_2_PIXELATED_MENU (1<<19) // 524288 +#define PREFTOGGLE_2_DESC_TIPS (1<<20) // 1048576 +#define PREFTOGGLE_2_GIB_WITHOUT_OBJECTIVE (1<<21) // 2097152 +#define PREFTOGGLE_2_SPLIT_ADMIN_TABS (1<<22) // 4194304 +#define PREFTOGGLE_2_OFF_PROJECTILE_MESSAGES (1<<23) // 8388608 + +#define TOGGLES_2_TOTAL 16777215 // If you add or remove a preference toggle above, make sure you update this define with the total value of the toggles combined. #define TOGGLES_2_DEFAULT (PREFTOGGLE_2_FANCYUI|PREFTOGGLE_2_ITEMATTACK|PREFTOGGLE_2_WINDOWFLASHING|PREFTOGGLE_2_RUNECHAT|PREFTOGGLE_2_DEATHMESSAGE|PREFTOGGLE_2_SEE_ITEM_OUTLINES|PREFTOGGLE_2_PARALLAX_MULTIZ|PREFTOGGLE_2_SWAP_INPUT_BUTTONS|PREFTOGGLE_2_LARGE_INPUT_BUTTONS|PREFTOGGLE_2_DESC_TIPS) @@ -124,6 +127,16 @@ #define EXP_DEPT_TYPE_LIST list(EXP_TYPE_SERVICE, EXP_TYPE_MEDICAL, EXP_TYPE_ENGINEERING, EXP_TYPE_SCIENCE, EXP_TYPE_SECURITY, EXP_TYPE_COMMAND, EXP_TYPE_SILICON, EXP_TYPE_SPECIAL) + +/// Tags for 'age needed for this job' list. +#define SPECIES_AGE_MIN "Min" +#define SPECIES_AGE_MAX "Max" +#define JOB_MIN_AGE_HIGH_ED "Higher Education" +#define JOB_MIN_AGE_COMMAND "Command" + +#define AGE_SHEET list(SPECIES_AGE_MIN = 18, SPECIES_AGE_MAX = 85, JOB_MIN_AGE_HIGH_ED = 30, JOB_MIN_AGE_COMMAND = 30) + + // Defines just for parallax because its levels make storing it in the regular prefs a pain in the ass // These dont need to be bitflags because there isnt going to be more than one at a time of these active // But its gonna piss off my OCD if it isnt bitflags, so deal with it, -affected diff --git a/code/__DEFINES/qdel.dm b/code/__DEFINES/qdel.dm index 70885216021f..d19c23bf64aa 100644 --- a/code/__DEFINES/qdel.dm +++ b/code/__DEFINES/qdel.dm @@ -40,6 +40,18 @@ #define QDEL_ITEM_ADMINS_WARNED (1<<0) //! Set when admins are told about lag causing qdels in this type. #define QDEL_ITEM_SUSPENDED_FOR_LAG (1<<1) //! Set when a type can no longer be hard deleted on failure because of lag it causes while this happens. +// This is a bit hacky, we do it to avoid people relying on a return value for the macro +// If you need that you should use QDEL_IN_STOPPABLE instead +#define QDEL_IN(item, time) ; \ + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), (time) > GC_FILTER_QUEUE ? WEAKREF(item) : item), time); +#define QDEL_IN_STOPPABLE(item, time) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), (time) > GC_FILTER_QUEUE ? WEAKREF(item) : item), time, TIMER_STOPPABLE) +#define QDEL_IN_CLIENT_TIME(item, time) addtimer(CALLBACK(GLOBAL_PROC, /proc/qdel, item), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME) +#define QDEL_NULL(item) if(item) { qdel(item); item = null } +#define QDEL_LIST(L) if(L) { for(var/___I in L) qdel(___I); if(L) { L.Cut() }; } +#define QDEL_LIST_IN(L, time) addtimer(CALLBACK(GLOBAL_PROC, /proc/______qdel_list_wrapper, L), time, TIMER_STOPPABLE) +#define QDEL_LIST_ASSOC(L) if(L) { for(var/___I in L) { qdel(L[___I]); qdel(___I); } L.Cut(); } +#define QDEL_LIST_ASSOC_VAL(L) if(L) { for(var/___I in L) qdel(L[___I]); L.Cut(); } + #define GC_QUEUED_FOR_QUEUING -1 #define GC_CURRENTLY_BEING_QDELETED -2 diff --git a/code/__DEFINES/request_consoles.dm b/code/__DEFINES/request_consoles.dm new file mode 100644 index 000000000000..806eabf4e555 --- /dev/null +++ b/code/__DEFINES/request_consoles.dm @@ -0,0 +1,91 @@ +// Request Console Department Types +#define RC_ASSIST 1 // Request Assistance +#define RC_SUPPLY 2 // Request Supplies +#define RC_INFO 4 // Relay Info + +// Request Console Screens +#define RCS_MAINMENU 0 // Main menu +#define RCS_RQSUPPLY 1 // Request supplies +#define RCS_RQASSIST 2 // Request assistance +#define RCS_SENDINFO 3 // Relay information +#define RCS_SENTPASS 4 // Message sent successfully +#define RCS_SENTFAIL 5 // Message sent unsuccessfully +#define RCS_VIEWMSGS 6 // View messages +#define RCS_MESSAUTH 7 // Authentication before sending +#define RCS_ANNOUNCE 8 // Send announcement +#define RCS_SHIPPING 9 // Print Shipping Labels/Packages +#define RCS_SHIP_LOG 10 // View Shipping Label Log + +// Radio list +#define ENGI_ROLES list(RC_ATMOSPHERICS, RC_MECHANIC, RC_ENGINEERING, RC_CHIEF_ENGINEER_DESK, RC_TECH_STORAGE, RC_TELECOMS_ADMIN) +#define SEC_ROLES list(RC_WARDEN, RC_SECURITY, RC_DETECTIVE, RC_LABOR_CAMP, RC_BRIG_MEDBAY, RC_HEAD_OF_SECURITY_DESK) +#define MISC_ROLES list(RC_BAR, RC_CHAPEL, RC_KITCHEN, RC_HYDROPONICS, RC_JANITORIAL) +#define MED_ROLES list(RC_VIROLOGY, RC_MEDBAY, RC_MORGUE, RC_CHEMISTRY, RC_CHIEF_MEDICAL_OFFICER_DESK) +#define COM_ROLES list(RC_BLUESHIELD, RC_NT_REPRESENTATIVE, RC_HEAD_OF_PERSONNEL_DESK, RC_CAPTAIN_DESK, RC_BRIDGE) +#define SCI_ROLES list(RC_ROBOTICS, RC_SCIENCE, RC_RESEARCH, RC_GENETICS, RC_XENOBIOLOGY, RC_RESEARCH_DIRECTOR_DESK) + +// Request Console Departments + +//Civilian +#define RC_PRIMARY_TOOL_STORAGE "Primary Tool Storage" +#define RC_LOCKER_ROOM "Locker Room" +#define RC_ARRIVAL_SHUTTLE "Arrival Shuttle" +#define RC_CREW_QUARTERS "Crew Quarters" + +// Medical +#define RC_MEDBAY "Medbay" +#define RC_VIROLOGY "Virology" +#define RC_MORGUE "Morgue" +#define RC_CHEMISTRY "Chemistry" + +// RND +#define RC_ROBOTICS "Robotics" +#define RC_SCIENCE "Science" +#define RC_RESEARCH "Research" +#define RC_XENOBIOLOGY "Xenobiology" +#define RC_GENETICS "Genetics" + +// Engineering +#define RC_ENGINEERING "Engineering" +#define RC_TECH_STORAGE "Tech storage" +#define RC_MECHANIC "Mechanic" +#define RC_ATMOSPHERICS "Atmospherics" + +// Security +#define RC_SECURITY "Security" +#define RC_DETECTIVE "Detective" +#define RC_WARDEN "Warden" +#define RC_LABOR_CAMP "Labor Camp" + +// Cargo +#define RC_CARGO_BAY "Cargo Bay" + +// Service +#define RC_BAR "Bar" +#define RC_HYDROPONICS "Hydroponics" +#define RC_JANITORIAL "Janitorial" +#define RC_KITCHEN "Kitchen" +#define RC_CHAPEL "Chapel" + +// Comand +#define RC_RESEARCH_DIRECTOR_DESK "Research Director's Desk" +#define RC_HEAD_OF_PERSONNEL_DESK "Head of Personnel's Desk" +#define RC_CHIEF_ENGINEER_DESK "Chief Engineer's Desk" +#define RC_CHIEF_MEDICAL_OFFICER_DESK "Chief Medical Officer's Desk" +#define RC_QUARTERMASTER_DESK "Quartermaster's Desk" +#define RC_HEAD_OF_SECURITY_DESK "Head of Security's Desk" +#define RC_CAPTAIN_DESK "Captain's Desk" +#define RC_AI "AI" +#define RC_BRIDGE "Bridge" +#define RC_EVA "EVA" + +// Central Command Dependent +#define RC_BLUESHIELD "Blueshield" +#define RC_INTERNAL_AFFAIRS_OFFICE "Internal Affairs Office" +#define RC_NT_REPRESENTATIVE "NT Representative" +#define RC_CENTRAL_COMMAND "Central Command" + +// NOT USED IN MAPS +#define RC_BRIG_MEDBAY "Brig Medbay" +#define RC_TELECOMS_ADMIN "Telecoms Admin" + diff --git a/code/__DEFINES/rituals.dm b/code/__DEFINES/rituals.dm new file mode 100644 index 000000000000..c94d11d86f77 --- /dev/null +++ b/code/__DEFINES/rituals.dm @@ -0,0 +1,21 @@ +/// Used in ritual variables +#define DEFAULT_RITUAL_RANGE_FIND 2 +#define DEFAULT_RITUAL_COOLDOWN (100 SECONDS) +#define DEFAULT_RITUAL_DISASTER_PROB 10 +#define DEFAULT_RITUAL_FAIL_PROB 10 + +/// Stages of ritual. Used in ritual custom effects on every stage of ritual. +#define RITUAL_STARTED (1<<0) +#define RITUAL_ENDED (1<<1) +#define RITUAL_FAILED (1<<2) + +/// Tells, that ritual accomplished successfully +#define RITUAL_SUCCESSFUL (1<<0) + +/// Invocation checks, should not be used in extra checks. +#define RITUAL_FAILED_INVALID_SPECIES (1<<1) +#define RITUAL_FAILED_MISSED_INVOKER_REQUIREMENTS (1<<2) +#define RITUAL_FAILED_MISSED_REQUIREMENTS (1<<3) +#define RITUAL_FAILED_ON_PROCEED (1<<4) +#define RITUAL_FAILED_INVALID_SPECIAL_ROLE (1<<5) + diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index 0285fecd7bf9..a0429a5cb97c 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -66,7 +66,7 @@ GLOBAL_LIST_INIT(special_roles, list( ROLE_CULTIST = /datum/game_mode/cult, // Cultist ROLE_CLOCKER = /datum/game_mode/clockwork, // Clockwork Cultist ROLE_DEMON, // Demons (Slaughter/Laughter/Shadow) - ROLE_DEVIL = /datum/game_mode/devil/devil_agents, // Devil + ROLE_DEVIL, // Devil ROLE_GSPIDER, // Giant spider ROLE_GUARDIAN, // Guardian ROLE_ELITE, // Lavaland Elite diff --git a/code/__DEFINES/ru_lang_rules.dm b/code/__DEFINES/ru_lang_rules.dm new file mode 100644 index 000000000000..9a1d29464553 --- /dev/null +++ b/code/__DEFINES/ru_lang_rules.dm @@ -0,0 +1,7 @@ +// Падежи русского языка +#define NOMINATIVE 1 // Именительный: кто это? Клоун и ассистуха +#define GENITIVE 2 // Родительный: откусить кусок от кого? От клоуна и ассистухи +#define DATIVE 3 // Дательный: дать полный доступ кому? Клоуну и ассистухе +#define ACCUSATIVE 4 // Винительный: обвинить кого? Клоуна и ассистуху +#define INSTRUMENTAL 5 // Творительный: возить по полу кем? Клоуном и ассистухой +#define PREPOSITIONAL 6 // Предложный: прохладная история о ком? О клоуне и об ассистухе diff --git a/code/__DEFINES/shuttles.dm b/code/__DEFINES/shuttles.dm new file mode 100644 index 000000000000..9fe6a94d9ceb --- /dev/null +++ b/code/__DEFINES/shuttles.dm @@ -0,0 +1,51 @@ +// these define the time taken for the shuttle to get to SS13 +// and the time before it leaves again +#define SHUTTLE_CALLTIME 6000 //10 minutes = 6000 deciseconds - time taken for emergency shuttle to reach the station when called (in deciseconds) +#define SHUTTLE_DOCKTIME 1800 //3 minutes = 1800 deciseconds - time taken for emergency shuttle to leave again once it has docked (in deciseconds) +#define SHUTTLE_ESCAPETIME 1200 //2 minutes = 1200 deciseconds - time taken for emergency shuttle to reach a safe distance after leaving station (in deciseconds) + +//shuttle mode defines +/// Shuttles "ingites" checking for transit zone +#define SHUTTLE_IGNITING "igniting" +/// Idle status +#define SHUTTLE_IDLE "idle" +/// Shuttle in "recall" state. +#define SHUTTLE_RECALL "recall" +/// Shuttle called and is flying to station +#define SHUTTLE_CALL "call" +/// Shuttle docked +#define SHUTTLE_DOCKED "docked" +/// Special state caused by external forces (doomsday device example) +#define SHUTTLE_STRANDED "stranded" +/// Escaped and is returning to CentCom +#define SHUTTLE_ESCAPE "escape" +/// Docked back to CentCom +#define SHUTTLE_ENDGAME "endgame: game over" +/// Shuttle is recharging +#define SHUTTLE_RECHARGING "recharging" + +#define EMERGENCY_IDLE_OR_RECALLED (SSshuttle.emergency && ((SSshuttle.emergency.mode == SHUTTLE_IDLE) || (SSshuttle.emergency.mode == SHUTTLE_RECALL))) +#define EMERGENCY_ESCAPED_OR_ENDGAMED (SSshuttle.emergency && ((SSshuttle.emergency.mode == SHUTTLE_ESCAPE) || (SSshuttle.emergency.mode == SHUTTLE_ENDGAME))) +#define EMERGENCY_AT_LEAST_DOCKED (SSshuttle.emergency && SSshuttle.emergency.mode != SHUTTLE_IDLE && SSshuttle.emergency.mode != SHUTTLE_RECALL && SSshuttle.emergency.mode != SHUTTLE_CALL) +#define EMERGENCY_PAST_POINT_OF_NO_RETURN ((SSshuttle.emergency && SSshuttle.emergency.mode == SHUTTLE_CALL && !SSshuttle.canRecall()) || EMERGENCY_AT_LEAST_DOCKED) + +#define SHUTTLE_CONSOLE_RECHARGING "recharging" + +// Shuttle return values +#define SHUTTLE_CAN_DOCK "can_dock" +#define SHUTTLE_NOT_A_DOCKING_PORT "not_a_docking_port" +#define SHUTTLE_DWIDTH_TOO_LARGE "docking_width_too_large" +#define SHUTTLE_WIDTH_TOO_LARGE "width_too_large" +#define SHUTTLE_DHEIGHT_TOO_LARGE "docking_height_too_large" +#define SHUTTLE_HEIGHT_TOO_LARGE "height_too_large" +#define SHUTTLE_ALREADY_DOCKED "we_are_already_docked" +#define SHUTTLE_SOMEONE_ELSE_DOCKED "someone_else_docked" + +// Ripples, effects that signal a shuttle's arrival +#define SHUTTLE_RIPPLE_TIME 100 +#define SHUTTLE_RIPPLE_FADEIN 50 + +#define TRANSIT_REQUEST 1 +#define TRANSIT_READY 2 + +#define SHUTTLE_TRANSIT_BORDER 16 diff --git a/code/__DEFINES/span.dm b/code/__DEFINES/span.dm index 5c13748e1412..fd03da81a284 100644 --- a/code/__DEFINES/span.dm +++ b/code/__DEFINES/span.dm @@ -16,8 +16,10 @@ //#define span_alertsyndie(str) ("" + str + "") //#define span_alertwarning(str) ("" + str + "") #define span_alien(str) ("" + str + "") +#define span_all_admin_ping(str) ("" + str + "") #define span_announce(str) ("" + str + "") #define span_big(str) ("" + str + "") +#define span_blob(str) ("" + str + "") //#define span_bigicon(str) ("" + str + "") //#define span_binarysay(str) ("" + str + "") //#define span_blue(str) ("" + str + "") @@ -48,6 +50,7 @@ //#define span_drone(str) ("" + str + "") #define span_engradio(str) ("" + str + "") //#define span_extremelybig(str) ("" + str + "") +#define span_game_emote(str) ("" + str + "") #define span_ghostalert(str) ("" + str + "") #define span_green(str) ("" + str + "") #define span_greenannounce(str) ("" + str + "") diff --git a/code/__DEFINES/speech_channels.dm b/code/__DEFINES/speech_channels.dm index 19ef7483f7e0..37454c741780 100644 --- a/code/__DEFINES/speech_channels.dm +++ b/code/__DEFINES/speech_channels.dm @@ -8,3 +8,4 @@ #define MENTOR_CHANNEL "Mentor" #define ADMIN_CHANNEL "Admin" #define DSAY_CHANNEL "Dsay" +#define DEV_CHANNEL "Dev" diff --git a/code/__DEFINES/stat.dm b/code/__DEFINES/stat.dm index ef24654d9ad6..bc88c845735e 100644 --- a/code/__DEFINES/stat.dm +++ b/code/__DEFINES/stat.dm @@ -10,43 +10,6 @@ #define MAINT (1<<3) // under maintaince #define EMPED (1<<4) // temporary broken by EMP pulse -/* - Shuttles -*/ - -// these define the time taken for the shuttle to get to SS13 -// and the time before it leaves again -#define SHUTTLE_CALLTIME 6000 //10 minutes = 6000 deciseconds - time taken for emergency shuttle to reach the station when called (in deciseconds) -#define SHUTTLE_DOCKTIME 1800 //3 minutes = 1800 deciseconds - time taken for emergency shuttle to leave again once it has docked (in deciseconds) -#define SHUTTLE_ESCAPETIME 1200 //2 minutes = 1200 deciseconds - time taken for emergency shuttle to reach a safe distance after leaving station (in deciseconds) - -//shuttle mode defines -#define SHUTTLE_IGNITING 0 -#define SHUTTLE_IDLE 1 -#define SHUTTLE_RECALL 2 -#define SHUTTLE_CALL 3 -#define SHUTTLE_DOCKED 4 -#define SHUTTLE_STRANDED 5 -#define SHUTTLE_ESCAPE 6 -#define SHUTTLE_ENDGAME 7 -#define SHUTTLE_RECHARGING 8 - -#define SHUTTLE_CONSOLE_RECHARGING "recharging" - -// Shuttle return values -#define SHUTTLE_CAN_DOCK "can_dock" -#define SHUTTLE_NOT_A_DOCKING_PORT "not_a_docking_port" -#define SHUTTLE_DWIDTH_TOO_LARGE "docking_width_too_large" -#define SHUTTLE_WIDTH_TOO_LARGE "width_too_large" -#define SHUTTLE_DHEIGHT_TOO_LARGE "docking_height_too_large" -#define SHUTTLE_HEIGHT_TOO_LARGE "height_too_large" -#define SHUTTLE_ALREADY_DOCKED "we_are_already_docked" -#define SHUTTLE_SOMEONE_ELSE_DOCKED "someone_else_docked" - -// Ripples, effects that signal a shuttle's arrival -#define SHUTTLE_RIPPLE_TIME 100 -#define SHUTTLE_RIPPLE_FADEIN 50 - /* Logic */ diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index 29e33ed92658..159ca8bf5287 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -30,6 +30,16 @@ #define STATUS_EFFECT_REGENERATIVE_CORE /datum/status_effect/regenerative_core +#define STATUS_EFFECT_LAVALAND_NO_PAIN /datum/status_effect/lavaland_no_pain + +#define STATUS_EFFECT_LAVALAND_ETERNAL_BLEEDING_FIX /datum/status_effect/lavaland_eternal_bleeding_fix + +#define STATUS_EFFECT_LAVALAND_NIGHT_VISION /datum/status_effect/lavaland_night_vision + +#define STATUS_EFFECT_LAVALAND_BLOOD_REGEN /datum/status_effect/lavaland_blood_regen + +#define STATUS_EFFECT_DRASK_COMA /datum/status_effect/drask_coma + #define STATUS_EFFECT_TERROR_REGEN /datum/status_effect/terror/regeneration //over time healing, 125 HP within 25~ seconds #define STATUS_EFFECT_TERROR_FOOD_REGEN /datum/status_effect/terror/food_regen //over time healing for mobs to gain full HP within 25~ seconds @@ -94,6 +104,8 @@ #define STATUS_EFFECT_CRUSHERMARK /datum/status_effect/crusher_mark //if struck with a proto-kinetic crusher, takes a ton of damage +#define STATUS_EFFECT_FANG_EXHAUSTION /datum/status_effect/fang_exhaust // called by poison fang (crusher trophy) + #define STATUS_EFFECT_SAWBLEED /datum/status_effect/saw_bleed //if the bleed builds up enough, takes a ton of damage #define STATUS_EFFECT_BLOODLETTING /datum/status_effect/saw_bleed/bloodletting //nerfed version @@ -186,3 +198,11 @@ #define STATUS_EFFECT_STARING /datum/status_effect/staring //Used in ../human/examine() proc #define STATUS_EFFECT_RECENTLY_SUCCUMBED /datum/status_effect/recently_succumbed + +#define STATUS_EFFECT_FORCED_RUMBLE /datum/status_effect/forced_rumble + +#define STATUS_EFFECT_FORCED_SNEEZE /datum/status_effect/forced_sneeze + +#define STATUS_EFFECT_LAVALAND_VISION /datum/status_effect/lavaland_vision + +#define STATUS_EFFECT_TEMPERATURE_STABILIZE /datum/status_effect/temperature_stabilize diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 5cb1e4ae1381..bbb8b2e19470 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -67,20 +67,24 @@ // Subsystems shutdown in the reverse of the order they initialize in // The numbers just define the ordering, they are meaningless otherwise. #define INIT_ORDER_TITLE 100 // This **MUST** load first or people will se blank lobby screens -#define INIT_ORDER_SPEECH_CONTROLLER 19 -#define INIT_ORDER_GARBAGE 18 -#define INIT_ORDER_DBCORE 17 -#define INIT_ORDER_BLACKBOX 16 -#define INIT_ORDER_CLEANUP 15 -#define INIT_ORDER_INPUT 14 -#define INIT_ORDER_SOUNDS 13 -#define INIT_ORDER_INSTRUMENTS 12 -#define INIT_ORDER_EVENTS 11 -#define INIT_ORDER_HOLIDAY 10 -#define INIT_ORDER_JOBS 9 -#define INIT_ORDER_TICKER 8 -#define INIT_ORDER_MAPPING 7 -#define INIT_ORDER_EARLY_ASSETS 6 +#define INIT_ORDER_SPEECH_CONTROLLER 95 +#define INIT_ORDER_GARBAGE 92 +#define INIT_ORDER_DBCORE 91 +#define INIT_ORDER_BLACKBOX 56 +#define INIT_ORDER_CLEANUP 55 +#define INIT_ORDER_INPUT 50 +#define INIT_ORDER_SOUNDS 44 +#define INIT_ORDER_INSTRUMENTS 43 +#define INIT_ORDER_EVENTS 42 +#define INIT_ORDER_HOLIDAY 41 +#define INIT_ORDER_JOBS 40 +#define INIT_ORDER_AI_MOVEMENT 36 //We need the movement setup +#define INIT_ORDER_AI_CONTROLLERS 35 //So the controller can get the ref +#define INIT_ORDER_TICKER 30 +#define INIT_ORDER_MAPPING 20 +#define INIT_ORDER_HOLOMAP 8 // after map loads, but before atoms init +#define INIT_ORDER_EARLY_ASSETS 7 +#define INIT_ORDER_FLUIDS 6 // Needs to be above atoms, as some atoms may want to start fluids/gases on init #define INIT_ORDER_ATOMS 5 #define INIT_ORDER_MACHINES 4 #define INIT_ORDER_IDLENPCS 3 @@ -89,7 +93,6 @@ #define INIT_ORDER_DEFAULT 0 #define INIT_ORDER_AIR -1 #define INIT_ORDER_SUN -2 -#define INIT_ORDER_MINIMAP -3 #define INIT_ORDER_ASSETS -4 #define INIT_ORDER_ICON_SMOOTHING -5 #define INIT_ORDER_OVERLAY -6 @@ -102,6 +105,7 @@ #define INIT_ORDER_NIGHTSHIFT -24 #define INIT_ORDER_GAME_EVENTS -26 #define INIT_ORDER_PATH -50 +#define INIT_ORDER_EXPLOSIONS -69 #define INIT_ORDER_PERSISTENCE -95 #define INIT_ORDER_STATPANELS -98 #define INIT_ORDER_DEMO -99 // To avoid a bunch of changes related to initialization being written, do this last @@ -120,6 +124,7 @@ #define FIRE_PRIORITY_WET_FLOORS 20 #define FIRE_PRIORITY_AIR 20 #define FIRE_PRIORITY_NPC 20 +#define FIRE_PRIORITY_NPC_MOVEMENT 21 #define FIRE_PRIORITY_PATHFINDING 23 #define FIRE_PRIORITY_PROCESS 25 #define FIRE_PRIORITY_THROWING 25 @@ -130,6 +135,7 @@ #define FIRE_PRIORITY_BURNING 40 #define FIRE_PRIORITY_DEFAULT 50 #define FIRE_PRIORITY_PARALLAX 65 +#define FIRE_PRIORITY_FLUIDS 80 #define FIRE_PRIORITY_MOBS 100 #define FIRE_PRIORITY_ASSETS 105 #define FIRE_PRIORITY_TGUI 110 @@ -138,6 +144,7 @@ #define FIRE_PRIORITY_CHAT 400 #define FIRE_PRIORITY_RUNECHAT 410 // I hate how high the fire priority on this is -aa #define FIRE_PRIORITY_OVERLAYS 500 +#define FIRE_PRIORITY_EXPLOSIONS 666 #define FIRE_PRIORITY_TIMER 700 #define FIRE_PRIORITY_SPEECH_CONTROLLER 900 #define FIRE_PRIORITY_DELAYED_VERBS 950 diff --git a/code/__DEFINES/terror_spiders.dm b/code/__DEFINES/terror_spiders.dm new file mode 100644 index 000000000000..f77a392a72fb --- /dev/null +++ b/code/__DEFINES/terror_spiders.dm @@ -0,0 +1,52 @@ +#define TS_DAMAGE_SIMPLE 0 +#define TS_DAMAGE_POISON 1 +#define TS_DAMAGE_BRUTE 2 + +//TIER 1 +#define TS_DESC_KNIGHT "Рыцарь - ШТУРМ" +#define TS_DESC_LURKER "Наблюдатель - ЗАСАДЫ" +#define TS_DESC_HEALER "Лекарь - ЛЕЧЕНИЕ" +#define TS_DESC_REAPER "Жнец - БОЙ" +#define TS_DESC_BUILDER "Дрон - СТРОИТЕЛЬСТВО" +//TIER 2 +#define TS_DESC_WIDOW "Вдова - ОТРАВЛЕНИЕ" +#define TS_DESC_GUARDIAN "Защитник - ОБОРОНА" +#define TS_DESC_DESTROYER "Разрушитель - САБОТАЖ" +//TIER 3 +#define TS_DESC_PRINCE "Принц - КРОВАВАЯ БАНЯ" +#define TS_DESC_PRINCESS "Принцесса - РАЗМНОЖЕНИЕ" +#define TS_DESC_MOTHER "Мать - ПОДДЕРЖКА" +#define TS_DESC_DEFILER "Осквернитель - ЗАРАЖЕНИЕ" +//TIER 4 +#define TS_DESC_QUEEN "Королева - ЛИДЕР" + +#define TS_TIER_1 1 +#define TS_TIER_2 2 +#define TS_TIER_3 3 +#define TS_TIER_4 4 +#define TS_TIER_5 5 + +#define TERROR_QUEEN "Королева Ужаса" +#define TERROR_PRINCE "Принц Ужаса" +#define TERROR_PRINCESS "Принцесса Ужаса" +#define TERROR_DEFILER "Осквернитель Ужаса" +#define TERROR_OTHER "Пауки Ужаса" +#define SPAWN_TERROR_TYPES list(TERROR_QUEEN, TERROR_PRINCE, TERROR_PRINCESS, TERROR_DEFILER) + +#define TERROR_STAGE_START 0 +#define TERROR_STAGE_PROTECT_EGG 1 +#define TERROR_STAGE_STORM 2 +#define TERROR_STAGE_END 3 +#define TERROR_STAGE_POST_END 4 + +#define TERROR_VOTE_LEN 30 SECONDS + +#define TERROR_VOTE_TICKS 30 + +#define INFECTIONS_ANNOUNCE_TRIGGER 0.1 + +#define SPIDERS_ANNOUNCE_TRIGGER 0.1 + +#define TIME_TO_ANNOUNCE 10 SECONDS + +#define EMPRESS_EGG_TARGET_COUNT round(2 + num_station_players() / 5) diff --git a/code/__DEFINES/tools.dm b/code/__DEFINES/tools.dm index 4e9b6571a4ed..1cb58f9f41a2 100644 --- a/code/__DEFINES/tools.dm +++ b/code/__DEFINES/tools.dm @@ -5,6 +5,7 @@ #define TOOL_WIRECUTTER "wirecutter" #define TOOL_WRENCH "wrench" #define TOOL_WELDER "welder" +#define TOOL_ANALYZER "analyzer" // Surgery tools #define TOOL_RETRACTOR "retractor" diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index dd97e33fda08..711d2fb2db61 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -26,6 +26,11 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_CHASM_STOPPER "chasm_stopper" /// `do_teleport` will not allow this atom to teleport #define TRAIT_NO_TELEPORT "no-teleport" + +/// This atom is a secluded location, which is counted as out of bounds. +/// Anything that enters this atom's contents should react if it wants to stay in bounds. +#define TRAIT_SECLUDED_LOCATION "secluded_loc" + #define TRAIT_SILENT_FOOTSTEPS "silent_footsteps" //turf traits @@ -39,10 +44,13 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_CHASM_STOPPED "chasm_stopped" ///Lava will be safe to cross while it has this trait. #define TRAIT_LAVA_STOPPED "lava_stopped" +/// If a trait is considered as having "coverage" by a meteor shield. +#define TRAIT_COVERED_BY_METEOR_SHIELD "covered_by_meteor_shield" //mob traits #define TRAIT_GODMODE "godmode" #define TRAIT_PACIFISM "pacifism" +#define TRAIT_NO_DEATH "nodeath" #define TRAIT_WATERBREATH "waterbreathing" #define TRAIT_BLOODCRAWL "bloodcrawl" #define TRAIT_BLOODCRAWL_EAT "bloodcrawl_eat" @@ -55,10 +63,13 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_FAKEDEATH "fakedeath" //Makes the owner appear as dead to most forms of medical examination #define TRAIT_XENO_HOST "xeno_host" //Tracks whether we're gonna be a baby alien's mummy. #define TRAIT_LEGION_TUMOUR "legion_tumour" //used in huds for special icon +#define TRAIT_NO_SPELLS "no_spells" // Used to prevent cast or use any spells /// Are we immune to shocks? #define TRAIT_SHOCKIMMUNE "shock_immunity" /// Are we immune to specifically tesla / SM shocks? #define TRAIT_TESLA_SHOCKIMMUNE "tesla_shock_immunity" +/// Are we immune to wet effect +#define TRAIT_WET_IMMUNITY "wet_immunity" /// We place people into a fireman carry quicker than standard #define TRAIT_QUICK_CARRY "quick-carry" @@ -84,6 +95,10 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_HUSK "husk" #define TRAIT_SKELETON "skeleton" #define TRAIT_NO_CLONE "no_clone" +/// Isn't attacked harmfully by blob structures +#define TRAIT_BLOB_ALLY "blob_ally" +/// Objects with this trait are deleted if they fall into chasms, rather than entering abstract storage +#define TRAIT_CHASM_DESTROYED "chasm_destroyed" /// "Magic" trait that blocks the mob from moving or interacting with anything. Used for transient stuff like mob transformations or incorporality in special cases. /// Will block movement, `Life()` (!!!), and other stuff based on the mob. @@ -176,6 +191,10 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_ADVANCED_SURGICAL "advanced_surgical" /// This trait makes it so that an item literally cannot be removed at all, or at least that's how it should be. Only deleted. #define TRAIT_NODROP "nodrop" +/// Applied with attachment to the cyberimplant when it is inserted in mob with TRAIT_ADVANCED_CYBERIMPLANTS +#define TRAIT_CYBERIMP_IMPROVED "cyberimp_improved" + +#define TRAIT_SHRAPNEL "shrapnel" ///Movement type traits for movables. See elements/movetype_handler.dm @@ -267,3 +286,16 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_SPECIES_LIMBS "only_species_limbs" /// Phohibits using the "Book Of Babel" #define TRAIT_NO_BABEL "cannot_use_babel" +/// Improves the function of some cyberimps for the Grey species +/// Rename and split into several if you want to make a different functionality to another species/etc +#define TRAIT_ADVANCED_CYBERIMPLANTS "advanced_cyberimplants" +/// Any movement of non-item objects or mobs expends stamina (10 run, 5 walk) +#define TRAIT_WEAK_PULLING "weak_pulling" +/// Makes species acid proof(not it's items), affects: acetic, sulfiric, fluorosulfuric acids +#define TRAIT_ACID_PROTECTED "acid_protected" +/// Species with no vocal cords can't speak without translator +#define TRAIT_NO_VOCAL_CORDS "no_vocal_cords" + +#define TRAIT_BLOB_ZOMBIFIED "blob_zombified" + +#define TRAIT_BEING_OFFERED "offered" diff --git a/code/__DEFINES/traits/sources.dm b/code/__DEFINES/traits/sources.dm index 92565ab13546..69b831e0405c 100644 --- a/code/__DEFINES/traits/sources.dm +++ b/code/__DEFINES/traits/sources.dm @@ -110,6 +110,9 @@ #define STAMINA_TRAIT "stamina" +/// source trait for /obj/item/mecha_parts/mecha_equipment/cage +#define MECH_SUPRESSED_TRAIT "mech_supress" + /// trait associated to resting #define RESTING_TRAIT "resting" /// trait associated to a stat value or range of @@ -153,7 +156,13 @@ /// inherited from riding vehicles #define VEHICLE_TRAIT "vehicle" -// blob trait sourses +/// blob trait sourses #define BLOB_INFECTED_TRAIT "blob_infected" #define VENDOR_FLATTENING_TRAIT "vendor_flattening" + +#define WET_TRAIT "wet" + +#define BLOB_ZOMBIE_TRAIT "blob_zombie_trait" + +#define ADMIN_OFFER_TRAIT "admin_offer" diff --git a/code/__DEFINES/turfs.dm b/code/__DEFINES/turfs.dm index 99c907bbf84d..8b7916113e4a 100644 --- a/code/__DEFINES/turfs.dm +++ b/code/__DEFINES/turfs.dm @@ -16,8 +16,81 @@ /// Used only by /turf/openspace. Show and grants access to what's under. #define TURF_FULLTRANSPARENT 2 +#define CHANGETURF_IGNORE_AIR (1<<0) // This flag prevents changeturf from gathering air from nearby turfs to fill the new turf with an approximation of local air +#define CHANGETURF_KEEP_CABLING (1<<1) // This flags prevents from cables being removed. Used in maploader only + #define IS_OPAQUE_TURF(turf) (turf.directional_opacity == ALL_CARDINALS) +//supposedly the fastest way to do this according to https://gist.github.com/Giacom/be635398926bb463b42a +///Returns a list of turf in a square +#define RANGE_TURFS(RADIUS, CENTER) \ + RECT_TURFS(RADIUS, RADIUS, CENTER) + +#define RECT_TURFS(H_RADIUS, V_RADIUS, CENTER) \ + block( \ + (CENTER).x - (H_RADIUS), (CENTER).y - (V_RADIUS), (CENTER).z, \ + (CENTER).x + (H_RADIUS), (CENTER).y + (V_RADIUS), (CENTER).z \ + ) + +#define RANGE_TURFS_MULTIZ(RADIUS, CENTER, Z_MIN, Z_MAX) \ + RECT_TURFS_MULTIZ(RADIUS, RADIUS, Z_MIN, Z_MAX, CENTER) + +#define RECT_TURFS_MULTIZ(H_RADIUS, V_RADIUS, Z_MIN, Z_MAX, CENTER) \ + block( \ + (CENTER).x - (H_RADIUS), (CENTER).y - (V_RADIUS), (Z_MIN), \ + (CENTER).x + (H_RADIUS), (CENTER).y + (V_RADIUS), (Z_MAX) \ + ) + +/// Returns the turfs on the edge of a square with CENTER in the middle and with the given RADIUS. If used near the edge of the map, will still work fine. +// order of the additions: top edge + bottom edge + left edge + right edge +#define RANGE_EDGE_TURFS(RADIUS, CENTER) \ + (CENTER.y + RADIUS < world.maxy ? block( \ + (CENTER).x - (RADIUS), (CENTER).y + (RADIUS), (CENTER).z, \ + (CENTER).x + (RADIUS), (CENTER).y + (RADIUS), (CENTER).z \ + ) : list()) + \ + (CENTER.y - RADIUS > 1 ? block( \ + (CENTER).x - (RADIUS), (CENTER).y - (RADIUS), (CENTER).z, \ + (CENTER).x + (RADIUS), (CENTER).y - (RADIUS), (CENTER).z \ + ) : list()) + \ + (CENTER.x - RADIUS > 1 ? block( \ + (CENTER).x - (RADIUS), (CENTER).y + (RADIUS) - 1, (CENTER).z, \ + (CENTER).x - (RADIUS), (CENTER).y - (RADIUS) + 1, (CENTER).z \ + ) : list()) + \ + (CENTER.x + RADIUS < world.maxx ? block( \ + (CENTER).x + (RADIUS), (CENTER).y + (RADIUS) - 1, (CENTER).z, \ + (CENTER).x + (RADIUS), (CENTER).y - (RADIUS) + 1, (CENTER).z \ + ) : list()) + + +/// Returns a list of turfs in the rectangle specified by BOTTOM LEFT corner and height/width, checks for being outside the world border for you +#define CORNER_BLOCK(corner, width, height) CORNER_BLOCK_OFFSET(corner, width, height, 0, 0) + +/// Returns a list of turfs similar to CORNER_BLOCK but with offsets +#define CORNER_BLOCK_OFFSET(corner, width, height, offset_x, offset_y) \ + (block( \ + corner.x + offset_x, corner.y + offset_y, corner.z, \ + corner.x + (width - 1) + offset_x, corner.y + (height - 1) + offset_y, corner.z \ + )) + + +/// Returns an outline (neighboring turfs) of the given block +#define CORNER_OUTLINE(corner, width, height) ( \ + CORNER_BLOCK_OFFSET(corner, width + 2, 1, -1, -1) + \ + CORNER_BLOCK_OFFSET(corner, width + 2, 1, -1, height) + \ + CORNER_BLOCK_OFFSET(corner, 1, height, -1, 0) + \ + CORNER_BLOCK_OFFSET(corner, 1, height, width, 0)) + +/// Returns a list of around us +#define TURF_NEIGHBORS(turf) (CORNER_BLOCK_OFFSET(turf, 3, 3, -1, -1) - turf) + +/// Returns all turfs in a zlevel +#define Z_TURFS(ZLEVEL) block(1, 1, ZLEVEL, world.maxx, world.maxy, ZLEVEL) + +///Returns all currently loaded turfs +#define ALL_TURFS(...) block(1, 1, 1, world.maxx, world.maxy, world.maxz) + +#define TURF_FROM_COORDS_LIST(List) (locate(List[1], List[2], List[3])) + /// Maximum amount of time, (in deciseconds) a tile can be wet for. #define MAXIMUM_WET_TIME (5 MINUTES) @@ -32,3 +105,5 @@ #define TURF_WET_ICE (1<<2) /// Turf has lube on the floor and mobs will slip #define TURF_WET_LUBE (1<<3) + +#define TURF_WET_ALL (~0) diff --git a/code/__DEFINES/vampire_defines.dm b/code/__DEFINES/vampire_defines.dm index a0663014e6f0..90123400739c 100644 --- a/code/__DEFINES/vampire_defines.dm +++ b/code/__DEFINES/vampire_defines.dm @@ -16,3 +16,5 @@ #define NEW_NULLIFICATION 1 //nulifiaction like the new vampires #define OLD_NULLIFICATION 2 //nulifiaction like the goon vampires + +#define REQ_BLOOD_FOR_SUBCLASS_ACT 400 // total blood required for a special subclass action diff --git a/code/__DEFINES/vv.dm b/code/__DEFINES/vv.dm index cd44f85a5f53..bd793cf400e5 100644 --- a/code/__DEFINES/vv.dm +++ b/code/__DEFINES/vv.dm @@ -19,6 +19,7 @@ #define VV_NULL "NULL" #define VV_RESTORE_DEFAULT "Restore to Default" #define VV_MARKED_DATUM "Marked Datum" +#define VV_BITFIELD "Bitfield" #define VV_REGEX "Regex" // Flags for debug_variable() that do little things to what we end up rendering diff --git a/code/__DEFINES/xenomorphs.dm b/code/__DEFINES/xenomorphs.dm new file mode 100644 index 000000000000..8670a24fcc3b --- /dev/null +++ b/code/__DEFINES/xenomorphs.dm @@ -0,0 +1,19 @@ +#define EMPRESS_EVOLVE_TARGET_COUNT round(2 + num_station_players() / 6) + +#define EVOLVE_ANNOUNCE_TRIGGER 0.1 + +#define TO_EMPRESS_EVOLVE_TIME 250 SECONDS + +#define TO_EMPRESS_EVOLVE_COST 750 + +#define LARVA_TYPE /mob/living/carbon/alien/larva + +#define QUEEN_TYPE /mob/living/carbon/alien/humanoid/queen + +#define EMPRESS_TYPE /mob/living/carbon/alien/humanoid/empress + +#define XENO_STAGE_START 0 +#define XENO_STAGE_PROTECT_COCON 1 +#define XENO_STAGE_STORM 2 +#define XENO_STAGE_END 3 +#define XENO_STAGE_POST_END 4 diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index d9f5946d34e0..a560358e26b4 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -116,6 +116,26 @@ return "[output][and_text][input[index]]" +/proc/russian_list(var/list/input, nothing_text = "ничего", and_text = " и ", comma_text = ", ", final_comma_text = "" ) + var/total = input.len + if(!total) + return "[nothing_text]" + else if(total == 1) + return "[input[1]]" + else if(total == 2) + return "[input[1]][and_text][input[2]]" + else + var/output = "" + var/index = 1 + while(index < total) + if(index == total - 1) + comma_text = final_comma_text + + output += "[input[index]][comma_text]" + index++ + + return "[output][and_text][input[index]]" + //Returns list element or null. Should prevent "index out of bounds" error. /proc/listgetindex(var/list/list,index) if(istype(list) && list.len) @@ -215,9 +235,7 @@ //Removes any null entries from the list /proc/listclearnulls(list/list) - if(istype(list)) - while(null in list) - list -= null + list?.RemoveAll(null) return /* @@ -880,6 +898,8 @@ proc/dd_sortedObjectList(list/incoming) ///Returns the list if it's actually a valid list, otherwise will initialize it #define SANITIZE_LIST(L) ( islist(L) ? L : list() ) +///Qdel every item in the list before setting the list to null +#define QDEL_LAZYLIST(L) for(var/I in L) qdel(I); L = null; ///Adds to the item K the value V, if the list is null it will initialize it #define LAZYADDASSOC(L, K, V) if(!L) { L = list(); } L[K] += V; ///This is used to add onto lazy assoc list when the value you're adding is a /list/. This one has extra safety over lazyaddassoc because the value could be null (and thus cant be used to += objects) @@ -1180,3 +1200,24 @@ proc/dd_sortedObjectList(list/incoming) used_key_list[input_key] = 1 return input_key + + +/** + * Checks to make sure that the lists have the exact same contents, ignores the order of the contents. + */ +/proc/lists_equal_unordered(list/list_one, list/list_two) + // This ensures that both lists contain the same elements by checking if the difference between them is empty in both directions. + return !length(list_one ^ list_two) + + +/proc/print_single_line(list/L) + . = "list(" + for(var/I in 1 to L.len) + var/key = L[I] + . += "[key]" + var/val = L[key] + if(!isnull(val)) + . += " => [val]" + if(I < L.len) + . += ", " + . += ")" diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm index 41433156e43d..0f2817cd544b 100644 --- a/code/__HELPERS/_logging.dm +++ b/code/__HELPERS/_logging.dm @@ -109,6 +109,10 @@ GLOBAL_PROTECT(log_end) if(CONFIG_GET(flag/log_adminchat)) WRITE_LOG(GLOB.world_game_log, "ADMINPRIVATE: [speaker.simple_info_line()]: [html_decode(text)][GLOB.log_end]") +/proc/log_ping_all_admins(text, mob/speaker) + if(CONFIG_GET(flag/log_adminchat)) + WRITE_LOG(GLOB.world_game_log, "ALL ADMIN PING: [speaker.simple_info_line()]: [html_decode(text)][GLOB.log_end]") + /proc/log_qdel(text) WRITE_LOG(GLOB.world_qdel_log, "QDEL: [text][GLOB.log_end]") @@ -120,6 +124,10 @@ GLOBAL_PROTECT(log_end) if(CONFIG_GET(flag/log_say)) WRITE_LOG(GLOB.world_game_log, "DEADCHAT: [speaker.simple_info_line()]: [html_decode(text)][GLOB.log_end]") +/proc/log_devsay(text, mob/speaker) + if(CONFIG_GET(flag/log_adminchat)) + WRITE_LOG(GLOB.world_game_log, "DEVSAY: [speaker.simple_info_line()]: [html_decode(text)][GLOB.log_end]") + /proc/log_ghostemote(text, mob/speaker) if(CONFIG_GET(flag/log_emote)) WRITE_LOG(GLOB.world_game_log, "DEADEMOTE: [speaker.simple_info_line()]: [html_decode(text)][GLOB.log_end]") @@ -268,14 +276,17 @@ GLOBAL_PROTECT(log_end) var/list/targets = target for(var/t in targets) add_attack_logs(user, t, what_done, custom_level) + return var/user_str - if(ismecha(user?.loc) || isspacepod(user?.loc)) + if((user?.loc) && (ismecha(user?.loc) || isspacepod(user?.loc))) var/obj/vehicle = user.loc user_str = key_name_log(user) + COORD(vehicle) + else user_str = key_name_log(user) + COORD(user) + var/target_str var/target_info if(isatom(target)) @@ -396,3 +407,16 @@ GLOBAL_PROTECT(log_end) else user.mob.create_log(OOC_LOG, text) log_ooc(text, user) + +/proc/loc_name(atom/A) + if(!istype(A)) + return "(INVALID LOCATION)" + + var/turf/T = A + if(!istype(T)) + T = get_turf(A) + + if(istype(T)) + return "([AREACOORD(T)])" + else if(A.loc) + return "(UNKNOWN (?, ?, ?))" diff --git a/code/__HELPERS/antag_menu_helpers.dm b/code/__HELPERS/antag_menu_helpers.dm new file mode 100644 index 000000000000..5e55598829c2 --- /dev/null +++ b/code/__HELPERS/antag_menu_helpers.dm @@ -0,0 +1,60 @@ +/proc/prepare_antag_data(datum/mind/antag_mind, list/cached_data, antag_name, list/antagonist_cache) + var/uid = antag_mind.UID() + var/list/temp_list = (uid in antagonist_cache)? antagonist_cache[uid] : list() + temp_list["antag_mind_uid"] = uid + if(isnull(temp_list["antag_names"])) + temp_list["antag_names"] = list() + temp_list["antag_names"] |= antag_name + temp_list["name"] = "" + temp_list["status"] = "Нет тела" + temp_list["name"] = antag_mind.name + temp_list["body_destroyed"] = TRUE + if(!QDELETED(antag_mind.current)) + temp_list["body_destroyed"] = FALSE + temp_list["status"] = "" + if(antag_mind.current.stat == DEAD) + temp_list["status"] = "(МЁРТВ)" + else if(!antag_mind.current.client) + temp_list["status"] = "(КРС)" + if(istype(get_area(antag_mind.current), /area/security/permabrig)) + temp_list["status"] += "(ПЕРМА)" + // temp_list["ckey"] = antag_mind.current.client?.ckey + temp_list["ckey"] = ckey(antag_mind.key) + temp_list["is_hijacker"] = istype((locate(/datum/objective/hijack) in antag_mind.get_all_objectives()), /datum/objective/hijack) + cached_data["antagonists"][uid] = temp_list + +/proc/prepare_antag_list(list/antags, list/cached_data, antag_name, list/antagonist_cache) + for(var/antag in antags) + prepare_antag_data(antag, cached_data, antag_name, antagonist_cache) + + +/proc/prepare_nodatum_antags(list/cached_data, list/antagonist_cache) + var/datum/game_mode/mode = SSticker.mode + prepare_antag_list(mode.clockwork_cult, cached_data, "Культист Ратвара", antagonist_cache) + prepare_antag_list(mode.cult, cached_data, "Культист [SSticker.cultdat.entity_name]", antagonist_cache) + prepare_antag_list(mode.abductors, cached_data, "Абдуктор", antagonist_cache) + prepare_antag_list(mode.abductees, cached_data, "Жертва абдукторов", antagonist_cache) + prepare_antag_list(mode.head_revolutionaries, cached_data, "Глава революции", antagonist_cache) + prepare_antag_list(mode.revolutionaries, cached_data, "Революционер", antagonist_cache) + prepare_antag_list(mode.wizards, cached_data, "Маг", antagonist_cache) + prepare_antag_list(mode.apprentices, cached_data, "Ученик мага", antagonist_cache) + prepare_antag_list(mode.space_ninjas, cached_data, "Клан Паука", antagonist_cache) + prepare_antag_list(mode.syndicates, cached_data, "Ядерный оперативник", antagonist_cache) + prepare_antag_list(mode.shadows, cached_data, "Тень", antagonist_cache) + prepare_antag_list(mode.shadowling_thralls, cached_data, "Раб теней", antagonist_cache) + prepare_antag_list(mode.raiders, cached_data, "Вокс рейдер", antagonist_cache) + prepare_antag_list(mode.superheroes, cached_data, "Супергерой", antagonist_cache) + prepare_antag_list(mode.supervillains, cached_data, "Суперзлодей", antagonist_cache) + prepare_antag_list(mode.greyshirts, cached_data, "Грейтайд", antagonist_cache) + prepare_antag_list(mode.demons, cached_data, "Демон", antagonist_cache) + prepare_antag_list(mode.eventmiscs, cached_data, "Ивентроль", antagonist_cache) + prepare_antag_list(mode.traders, cached_data, "Торговец", antagonist_cache) + prepare_antag_list(mode.morphs, cached_data, "Морф", antagonist_cache) + prepare_antag_list(mode.swarmers, cached_data, "Свармер", antagonist_cache) + prepare_antag_list(mode.guardians, cached_data, "Голопаразит", antagonist_cache) + prepare_antag_list(mode.revenants, cached_data, "Ревенант", antagonist_cache) + prepare_antag_list(mode.headslugs, cached_data, "Личинка генокрада", antagonist_cache) + prepare_antag_list(mode.deathsquad, cached_data, "Боец Отряда Смерти", antagonist_cache) + prepare_antag_list(mode.honksquad, cached_data, "Член Хонксквада", antagonist_cache) + prepare_antag_list(mode.sst, cached_data, "Боец SST", antagonist_cache) + prepare_antag_list(mode.sit, cached_data, "Агент SIT", antagonist_cache) diff --git a/code/__HELPERS/areas.dm b/code/__HELPERS/areas.dm index cee8eb95a4cc..d84c596ee59e 100644 --- a/code/__HELPERS/areas.dm +++ b/code/__HELPERS/areas.dm @@ -109,6 +109,8 @@ var/area/affected_areas = list() for(var/turf/the_turf as anything in turfs) var/area/old_area = the_turf.loc + old_area.turfs_to_uncontain += the_turf + newA.contained_turfs += the_turf //keep rack of all areas affected by turf changes affected_areas[old_area.name] = old_area @@ -140,6 +142,14 @@ return TRUE +/proc/require_area_resort() + GLOB.sortedAreas = null + +/// Returns a sorted version of GLOB.areas, by name +/proc/get_sorted_areas() + if(!GLOB.sortedAreas) + GLOB.sortedAreas = sortTim(GLOB.areas.Copy(), /proc/cmp_name_asc) + return GLOB.sortedAreas #undef BLUEPRINTS_MAX_ROOM_SIZE diff --git a/code/__HELPERS/atoms.dm b/code/__HELPERS/atoms.dm index e801df08a6e4..a5c34d5dc705 100644 --- a/code/__HELPERS/atoms.dm +++ b/code/__HELPERS/atoms.dm @@ -132,3 +132,14 @@ return FALSE return (mover.pass_flags & passflag) + +///Returns a list of all locations (except the area) the movable is within. +/proc/get_nested_locs(atom/movable/atom_on_location, include_turf = FALSE) + . = list() + var/atom/location = atom_on_location.loc + var/turf/our_turf = get_turf(atom_on_location) + while(location && location != our_turf) + . += location + location = location.loc + if(our_turf && include_turf) //At this point, only the turf is left, provided it exists. + . += our_turf diff --git a/code/__HELPERS/bitflags.dm b/code/__HELPERS/bitflags.dm new file mode 100644 index 000000000000..ac34a84987e5 --- /dev/null +++ b/code/__HELPERS/bitflags.dm @@ -0,0 +1,7 @@ +#define HASBIT(CONTAINER, FLAG) ((CONTAINER) & (FLAG)) + +#define SETBIT(CONTAINER, FLAG) ((CONTAINER) |= (FLAG)) + +#define CLEARBIT(CONTAINER, FLAG) ((CONTAINER) &= ~(FLAG)) + +#define TOGGLEBIT(CONTAINER, FLAG) ((CONTAINER) ^= (FLAG)) diff --git a/code/__HELPERS/chat.dm b/code/__HELPERS/chat.dm new file mode 100644 index 000000000000..75c2274cb6d4 --- /dev/null +++ b/code/__HELPERS/chat.dm @@ -0,0 +1,19 @@ +#define FOLLOW_LINK(alice, bob) "(F)" + +/// Sends a message to all dead and observing players, if a source is provided a follow link will be attached. +/proc/send_to_observers(message, atom/source) + var/list/all_observers = GLOB.dead_player_list + GLOB.current_observers_list + for(var/mob/observer as anything in all_observers) + if(isnull(source)) + to_chat(observer, "[message]") + continue + var/link = FOLLOW_LINK(observer, source) + to_chat(observer, "[link] [message]") + +/// Sends a message to everyone within the list, as well as all observers. +/proc/relay_to_list_and_observers(message, list/mob_list, source) + for(var/mob/creature as anything in mob_list) + to_chat(creature, message) + send_to_observers(message, source) + +#undef FOLLOW_LINK diff --git a/code/__HELPERS/data_struct/priority_queue.dm b/code/__HELPERS/data_struct/priority_queue.dm new file mode 100644 index 000000000000..f2a0808fb044 --- /dev/null +++ b/code/__HELPERS/data_struct/priority_queue.dm @@ -0,0 +1,69 @@ +/priority_queue + var/list/priority_node/heap = list() + +/priority_node + var/item + var/priority + +/priority_node/New(item, priority) + . = ..() + src.item = item + src.priority = priority + +/priority_queue/proc/enqueue(value, priority) + heap += list(new /priority_node(value, priority)) + bubble_up(heap.len) + +/priority_queue/proc/dequeue() + if (heap.len == 0) + return null + + var/priority_node/top = heap[1] + var/bottom = heap[heap.len] + var/item = top.item + heap -= bottom + if(!heap.len) + qdel(top) + return item + heap[1] = bottom + bubble_down(1) + qdel(top) + return item + +/priority_queue/proc/peek() + if (heap.len == 0) + return null + return heap[1].item + +/priority_queue/proc/is_empty() + return heap.len == 0 + +/priority_queue/proc/bubble_up(index) + while(index > 1) + var/parent = round(index / 2) + + if (heap[parent].priority < heap[index].priority) + break + + swap(index, parent) + index = parent + + +/priority_queue/proc/bubble_down(index) + while(index * 2 <= heap.len) + var/child = index * 2 + + if (child + 1 <= heap.len && heap[child + 1].priority < heap[child].priority) + child++ + + if (heap[index].priority < heap[child].priority) + break + + swap(index, child) + index = child + + +/priority_queue/proc/swap(a, b) + var/list/temp = heap[a] + heap[a] = heap[b] + heap[b] = temp diff --git a/code/__HELPERS/data_struct/queue.dm b/code/__HELPERS/data_struct/queue.dm new file mode 100644 index 000000000000..11f03adf0ff5 --- /dev/null +++ b/code/__HELPERS/data_struct/queue.dm @@ -0,0 +1,73 @@ +/* +* Double linked list node +*/ +/node + var/value + var/prev + var/next + +/* +* Defining a queue based on a double linked list +*/ +/queue + /// Link to the beginning of the list + var/node/head + /// Link to end of list + var/node/tail + /// Number of elements in queue + var/count = 0 + +/* +* Adding an element to the end of the queue +*/ +/queue/proc/enqueue(value) + var/node/new_node = new + new_node.value = value + + if (!tail) + head = new_node + tail = new_node + else + tail.next = new_node + new_node.prev = tail + tail = new_node + count++ +/* + * Retrieving an element from the head of the queue + */ +/queue/proc/dequeue() + if (!head) + return null + + var/value = head.value + var/node/old_head = head + + head = head.next + if (head) + head.prev = null + else + tail = null + old_head.value = null + old_head.next = null + qdel(old_head) + count-- + return value +/* +* Returns an element from the beginning of the queue without removing it +*/ +/queue/proc/peek() + if (!head) + return null + return head.value + +/* +* Checking if the queue is empty +*/ +/queue/proc/is_empty() + return count == 0 + +/* +* Returns the number of elements in the queue +*/ +/queue/proc/size() + return count diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 7b385a83d3d9..5ad76b20a3c9 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -382,14 +382,37 @@ add_to.images += image_to_show addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(remove_image_from_clients), image_to_show, show_to), duration, TIMER_CLIENT_TIME) -/// Flicks an overlay to anyone who can view this atom -/atom/proc/flick_overlay_view(image_to_show, duration) - var/list/viewing = list() - for(var/mob/viewer as anything in viewers(src)) - if(viewer.client) - viewing += viewer.client - flick_overlay(image_to_show, viewing, duration) +/** + * Helper atom that copies an appearance and exists for a period +*/ +/atom/movable/flick_visual + +/// Takes the passed in MA/icon_state, mirrors it onto ourselves, and displays that in world for duration seconds +/// Returns the displayed object, you can animate it and all, but you don't own it, we'll delete it after the duration +/atom/proc/flick_overlay_view(mutable_appearance/display, duration) + if(!display) + return null + var/mutable_appearance/passed_appearance = \ + istext(display) \ + ? mutable_appearance(icon, display, layer) \ + : display + + // If you don't give it a layer, we assume you want it to layer on top of this atom + // Because this is vis_contents, we need to set the layer manually (you can just set it as you want on return if this is a problem) + if(passed_appearance.layer == FLOAT_LAYER) + passed_appearance.layer = layer + 0.1 + // This is faster then pooling. I promise + var/atom/movable/flick_visual/visual = new() + visual.appearance = passed_appearance + // I hate /area + var/atom/movable/lies_to_children = src + lies_to_children.vis_contents += visual + QDEL_IN_CLIENT_TIME(visual, duration) + return visual + +/area/flick_overlay_view(mutable_appearance/display, duration) + return /proc/get_active_player_count() // Get active players who are playing in the round diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index f8907ab36674..e02c3b4689df 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -25,6 +25,7 @@ init_subtypes(/datum/surgery_step, GLOB.surgery_steps) init_subtypes(/obj/item/slimepotion, GLOB.slime_potions) + init_subtypes(/datum/preference_info, GLOB.preferences_info) // Different bodies __init_body_accessory(/datum/body_accessory/body) // Different tails @@ -78,35 +79,48 @@ GLOB.pai_software_by_key[P.id] = P // Setup loadout gear - for(var/geartype in subtypesof(/datum/gear)) - var/datum/gear/G = geartype + for(var/datum/gear/gear as anything in subtypesof(/datum/gear)) - var/use_name = initial(G.display_name) - var/use_category = initial(G.sort_category) + if(gear == gear.path) + continue - if(G == initial(G.subtype_path)) + if(gear == gear.subtype_path) continue - if(!use_name) - error("Loadout - Missing display name: [G]") + if(!gear.index_name) + stack_trace("Loadout - Missing index name: [gear]") continue - if(!initial(G.cost)) - error("Loadout - Missing cost: [G]") + if(!gear.cost) + stack_trace("Loadout - Missing cost: [gear]") continue - if(!initial(G.path)) - error("Loadout - Missing path definition: [G]") + if(!gear.path) + stack_trace("Loadout - Missing path definition: [gear]") continue - - if(!GLOB.loadout_categories[use_category]) - GLOB.loadout_categories[use_category] = new /datum/loadout_category(use_category) - var/datum/loadout_category/LC = GLOB.loadout_categories[use_category] - GLOB.gear_datums[use_name] = new geartype - LC.gear[use_name] = GLOB.gear_datums[use_name] - - GLOB.loadout_categories = sortAssoc(GLOB.loadout_categories) - for(var/loadout_category in GLOB.loadout_categories) - var/datum/loadout_category/LC = GLOB.loadout_categories[loadout_category] - LC.gear = sortAssoc(LC.gear) + gear = new gear + var/obj/gear_item = gear.path + var/list/tweaks = list() + for(var/datum/gear_tweak/tweak as anything in gear.gear_tweaks) + tweaks[tweak.type] += list(list( + "name" = tweak.display_type, + "icon" = tweak.fa_icon, + "tooltip" = tweak.info, + )) + + GLOB.gear_tgui_info[gear.sort_category] += list( + "[gear]" = list( + "name" = gear.get_display_name() , + "index_name" = gear.index_name, + "desc" = gear.description, + "icon" = gear_item.icon, + "icon_state" = gear_item.icon_state, + "cost" = gear.cost, + "gear_tier" = gear.donator_tier, + "allowed_roles" = gear.allowed_roles, + "tweaks" = tweaks, + ) + ) + + GLOB.gear_datums[gear.index_name] = gear // Setup a list of robolimbs @@ -313,6 +327,7 @@ prize_list["Miscellaneous"] = list( EQUIPMENT("Absinthe", /obj/item/reagent_containers/food/drinks/bottle/absinthe/premium, 500), EQUIPMENT("Alien Toy", /obj/item/clothing/mask/facehugger/toy, 300), + EQUIPMENT("Richard & Co cigarettes", /obj/item/storage/fancy/cigarettes/cigpack_richard, 400), EQUIPMENT("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 300), EQUIPMENT("GAR Meson Scanners", /obj/item/clothing/glasses/meson/gar, 800), EQUIPMENT("GPS upgrade", /obj/item/gpsupgrade, 1500), @@ -342,6 +357,7 @@ EQUIPMENT("Absinthe", /obj/item/reagent_containers/food/drinks/bottle/absinthe/premium, 250), EQUIPMENT("Cigarettes", /obj/item/storage/fancy/cigarettes, 100), EQUIPMENT("Medical Marijuana", /obj/item/storage/fancy/cigarettes/cigpack_med, 250), + EQUIPMENT("Richard & Co cigarettes", /obj/item/storage/fancy/cigarettes/cigpack_richard, 400), EQUIPMENT("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 150), EQUIPMENT("Box of matches", /obj/item/storage/box/matches, 50), EQUIPMENT("Cheeseburger", /obj/item/reagent_containers/food/snacks/cheeseburger, 150), diff --git a/code/__HELPERS/icon_smoothing.dm b/code/__HELPERS/icon_smoothing.dm index 7d02649e2d59..8add087388bf 100644 --- a/code/__HELPERS/icon_smoothing.dm +++ b/code/__HELPERS/icon_smoothing.dm @@ -346,13 +346,13 @@ GLOBAL_LIST_INIT(adjacent_direction_lookup, generate_adjacent_directions()) var/turned_adjacency = REVERSE_DIR(junction_dir) var/turf/neighbor_turf = get_step(src, turned_adjacency & (NORTH|SOUTH)) var/mutable_appearance/underlay_appearance = mutable_appearance(layer = TURF_LAYER, offset_spokesman = src, plane = FLOOR_PLANE) - if(!neighbor_turf.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency)) + if(!neighbor_turf?.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency)) neighbor_turf = get_step(src, turned_adjacency & (EAST|WEST)) - if(!neighbor_turf.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency)) + if(!neighbor_turf?.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency)) neighbor_turf = get_step(src, turned_adjacency) - if(!neighbor_turf.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency)) + if(!neighbor_turf?.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency)) if(!get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency)) //if all else fails, ask our own turf underlay_appearance.icon = DEFAULT_UNDERLAY_ICON underlay_appearance.icon_state = DEFAULT_UNDERLAY_ICON_STATE diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index 6d54bc934d9f..cef74ac868ca 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -646,204 +646,179 @@ The _flatIcons list is a cache for generated icon files. */ // Creates a single icon from a given /atom or /image. Only the first argument is required. -/proc/getFlatIcon(image/A, defdir, deficon, defstate, defblend, start = TRUE, no_anim = FALSE) - //Define... defines. - var/static/icon/flat_template = icon('icons/effects/effects.dmi', "nothing") - - #define BLANK icon(flat_template) - #define SET_SELF(SETVAR) do { \ - var/icon/SELF_ICON=icon(icon(curicon, curstate, base_icon_dir),"",SOUTH,no_anim?1:null); \ - if(A.alpha<255) { \ - SELF_ICON.Blend(rgb(255,255,255,A.alpha),ICON_MULTIPLY);\ - } \ - if(A.color) { \ - if(islist(A.color)){ \ - SELF_ICON.MapColors(arglist(A.color))} \ - else{ \ - SELF_ICON.Blend(A.color,ICON_MULTIPLY)} \ - } \ - ##SETVAR=SELF_ICON;\ - } while (0) - #define INDEX_X_LOW 1 - #define INDEX_X_HIGH 2 - #define INDEX_Y_LOW 3 - #define INDEX_Y_HIGH 4 - - #define flatX1 flat_size[INDEX_X_LOW] - #define flatX2 flat_size[INDEX_X_HIGH] - #define flatY1 flat_size[INDEX_Y_LOW] - #define flatY2 flat_size[INDEX_Y_HIGH] - #define addX1 add_size[INDEX_X_LOW] - #define addX2 add_size[INDEX_X_HIGH] - #define addY1 add_size[INDEX_Y_LOW] - #define addY2 add_size[INDEX_Y_HIGH] - - if(!A || A.alpha <= 0) - return BLANK - - var/noIcon = FALSE +/proc/getFlatIcon(image/appearance, defdir, deficon, defstate, defblend, start = TRUE, no_anim = TRUE) + // Loop through the underlays, then overlays, sorting them into the layers list + #define PROCESS_OVERLAYS_OR_UNDERLAYS(flat, process, base_layer) \ + for (var/i in 1 to process.len) { \ + var/image/current = process[i]; \ + if (!current) { \ + continue; \ + } \ + if (current.plane != FLOAT_PLANE && current.plane != appearance.plane) { \ + continue; \ + } \ + var/current_layer = current.layer; \ + if (current_layer < 0) { \ + if (current_layer <= -1000) { \ + return flat; \ + } \ + current_layer = base_layer + appearance.layer + current_layer / 1000; \ + } \ + for (var/index_to_compare_to in 1 to layers.len) { \ + var/compare_to = layers[index_to_compare_to]; \ + if (current_layer < layers[compare_to]) { \ + layers.Insert(index_to_compare_to, current); \ + break; \ + } \ + } \ + layers[current] = current_layer; \ + } + + var/static/icon/flat_template = icon('icons/blanks/32x32.dmi', "nothing") + + if(!appearance || appearance.alpha <= 0) + return icon(flat_template) + if(start) if(!defdir) - defdir = A.dir + defdir = appearance.dir if(!deficon) - deficon = A.icon + deficon = appearance.icon if(!defstate) - defstate = A.icon_state + defstate = appearance.icon_state if(!defblend) - defblend = A.blend_mode + defblend = appearance.blend_mode + + var/curicon = appearance.icon || deficon + var/curstate = appearance.icon_state || defstate + var/curdir = (!appearance.dir || appearance.dir == SOUTH) ? defdir : appearance.dir - var/curicon = A.icon || deficon - var/curstate = A.icon_state || defstate + var/render_icon = curicon - if(!((noIcon = (!curicon)))) + if (render_icon) var/curstates = icon_states(curicon) if(!(curstate in curstates)) - if("" in curstates) + if ("" in curstates) curstate = "" else - noIcon = TRUE // Do not render this object. + render_icon = FALSE - var/curdir - var/base_icon_dir //We'll use this to get the icon state to display if not null BUT NOT pass it to overlays as the dir we have - - //These should use the parent's direction (most likely) - if(!A.dir || A.dir == SOUTH) - curdir = defdir - else - curdir = A.dir + var/base_icon_dir //We'll use this to get the icon state to display if not null BUT NOT pass it to overlays as the dir we have //Try to remove/optimize this section ASAP, CPU hog. //Determines if there's directionals. - if(!noIcon && curdir != SOUTH) - var/exist = FALSE - var/static/list/checkdirs = list(NORTH, EAST, WEST) - for(var/i in checkdirs) //Not using GLOB for a reason. - if(length(icon_states(icon(curicon, curstate, i)))) - exist = TRUE - break - if(!exist) + if(render_icon && curdir != SOUTH) + if ( + !length(icon_states(icon(curicon, curstate, NORTH))) \ + && !length(icon_states(icon(curicon, curstate, EAST))) \ + && !length(icon_states(icon(curicon, curstate, WEST))) \ + ) base_icon_dir = SOUTH - // if(!base_icon_dir) base_icon_dir = curdir - ASSERT(!BLEND_DEFAULT) //I might just be stupid but lets make sure this define is 0. + var/curblend = appearance.blend_mode || defblend - var/curblend = A.blend_mode || defblend - - if(A.overlays.len || A.underlays.len) - var/icon/flat = BLANK + if(appearance.overlays.len || appearance.underlays.len) + var/icon/flat = icon(flat_template) // Layers will be a sorted list of icons/overlays, based on the order in which they are displayed var/list/layers = list() var/image/copy // Add the atom's icon itself, without pixel_x/y offsets. - if(!noIcon) - copy = image(icon=curicon, icon_state=curstate, layer=A.layer, dir=base_icon_dir) - copy.color = A.color - copy.alpha = A.alpha + if(render_icon) + copy = image(icon=curicon, icon_state=curstate, layer=appearance.layer, dir=base_icon_dir) + copy.color = appearance.color + copy.alpha = appearance.alpha copy.blend_mode = curblend - layers[copy] = A.layer - - // Loop through the underlays, then overlays, sorting them into the layers list - for(var/process_set in 0 to 1) - var/list/process = process_set? A.overlays : A.underlays - for(var/i in 1 to process.len) - var/image/current = process[i] - if(!current) - continue - if(current.plane != FLOAT_PLANE && current.plane != A.plane) - continue - var/current_layer = current.layer - if(current_layer < 0) - if(current_layer <= -1000) - return flat - current_layer = process_set + A.layer + current_layer / 1000 - - for(var/p in 1 to layers.len) - var/image/cmp = layers[p] - if(current_layer < layers[cmp]) - layers.Insert(p, current) - break - layers[current] = current_layer + layers[copy] = appearance.layer + + PROCESS_OVERLAYS_OR_UNDERLAYS(flat, appearance.underlays, 0) + PROCESS_OVERLAYS_OR_UNDERLAYS(flat, appearance.overlays, 1) var/icon/add // Icon of overlay being added - // Current dimensions of flattened icon - var/list/flat_size = list(1, flat.Width(), 1, flat.Height()) - // Dimensions of overlay being added - var/list/add_size[4] + var/flatX1 = 1 + var/flatX2 = flat.Width() + var/flatY1 = 1 + var/flatY2 = flat.Height() - for(var/V in layers) - var/image/I = V - if(I.alpha == 0) + var/addX1 = 0 + var/addX2 = 0 + var/addY1 = 0 + var/addY2 = 0 + + for(var/image/layer_image as anything in layers) + if(layer_image.alpha == 0) continue - if(I == copy) // 'I' is an /image based on the object being flattened. + if(layer_image == copy) // 'layer_image' is an /image based on the object being flattened. curblend = BLEND_OVERLAY - add = icon(I.icon, I.icon_state, base_icon_dir) + add = icon(layer_image.icon, layer_image.icon_state, base_icon_dir) else // 'I' is an appearance object. - add = getFlatIcon(image(I), curdir, curicon, curstate, curblend, FALSE, no_anim) + add = getFlatIcon(image(layer_image), curdir, curicon, curstate, curblend, FALSE, no_anim) if(!add) continue + // Find the new dimensions of the flat icon to fit the added overlay - add_size = list( - min(flatX1, I.pixel_x+1), - max(flatX2, I.pixel_x+add.Width()), - min(flatY1, I.pixel_y+1), - max(flatY2, I.pixel_y+add.Height()) + addX1 = min(flatX1, layer_image.pixel_x + 1) + addX2 = max(flatX2, layer_image.pixel_x + add.Width()) + addY1 = min(flatY1, layer_image.pixel_y + 1) + addY2 = max(flatY2, layer_image.pixel_y + add.Height()) + + if ( + addX1 != flatX1 \ + && addX2 != flatX2 \ + && addY1 != flatY1 \ + && addY2 != flatY2 \ ) - - if(flat_size ~! add_size) // Resize the flattened icon so the new icon fits flat.Crop( - addX1 - flatX1 + 1, - addY1 - flatY1 + 1, - addX2 - flatX1 + 1, - addY2 - flatY1 + 1 + addX1 - flatX1 + 1, + addY1 - flatY1 + 1, + addX2 - flatX1 + 1, + addY2 - flatY1 + 1 ) - flat_size = add_size.Copy() + + flatX1 = addX1 + flatX2 = addY1 + flatY1 = addX2 + flatY2 = addY2 // Blend the overlay into the flattened icon - flat.Blend(add, blendMode2iconMode(curblend), I.pixel_x + 2 - flatX1, I.pixel_y + 2 - flatY1) + flat.Blend(add, blendMode2iconMode(curblend), layer_image.pixel_x + 2 - flatX1, layer_image.pixel_y + 2 - flatY1) - if(A.color) - if(islist(A.color)) - flat.MapColors(arglist(A.color)) + if(appearance.color) + if(islist(appearance.color)) + flat.MapColors(arglist(appearance.color)) else - flat.Blend(A.color, ICON_MULTIPLY) + flat.Blend(appearance.color, ICON_MULTIPLY) - if(A.alpha < 255) - flat.Blend(rgb(255, 255, 255, A.alpha), ICON_MULTIPLY) + if(appearance.alpha < 255) + flat.Blend(rgb(255, 255, 255, appearance.alpha), ICON_MULTIPLY) if(no_anim) //Clean up repeated frames var/icon/cleaned = new /icon() cleaned.Insert(flat, "", SOUTH, 1, 0) - . = cleaned + return cleaned else - . = icon(flat, "", SOUTH) - else //There's no overlays. - if(!noIcon) - SET_SELF(.) - - //Clear defines - #undef flatX1 - #undef flatX2 - #undef flatY1 - #undef flatY2 - #undef addX1 - #undef addX2 - #undef addY1 - #undef addY2 - - #undef INDEX_X_LOW - #undef INDEX_X_HIGH - #undef INDEX_Y_LOW - #undef INDEX_Y_HIGH - - #undef BLANK - #undef SET_SELF + return icon(flat, "", SOUTH) + else if (render_icon) // There's no overlays. + var/icon/final_icon = icon(icon(curicon, curstate, base_icon_dir), "", SOUTH, no_anim ? TRUE : null) + + if (appearance.alpha < 255) + final_icon.Blend(rgb(255,255,255, appearance.alpha), ICON_MULTIPLY) + + if (appearance.color) + if (islist(appearance.color)) + final_icon.MapColors(arglist(appearance.color)) + else + final_icon.Blend(appearance.color, ICON_MULTIPLY) + + return final_icon + + #undef PROCESS_OVERLAYS_OR_UNDERLAYS /proc/getIconMask(atom/A)//By yours truly. Creates a dynamic mask for a mob/whatever. /N var/icon/alpha_mask = new(A.icon,A.icon_state)//So we want the default icon and icon state of A. @@ -1191,6 +1166,8 @@ GLOBAL_LIST_EMPTY(bicon_cache) * * moving - whether or not to use a moving state for the given icon * * sourceonly - if TRUE, only generate the asset and send back the asset url, instead of tags that display the icon to players * * extra_classes - string of extra css classes to use when returning the icon string + * + * You may also call is icon2html */ /proc/icon2asset(atom/thing, client/target, icon_state, dir = SOUTH, frame = 1, moving = FALSE, sourceonly = FALSE, extra_classes = null) if(!thing) diff --git a/code/__HELPERS/level_check.dm b/code/__HELPERS/level_check.dm deleted file mode 100644 index 2e8ad669f79a..000000000000 --- a/code/__HELPERS/level_check.dm +++ /dev/null @@ -1,20 +0,0 @@ -/proc/is_on_level_name(atom/A,name) - var/datum/space_level/S = GLOB.space_manager.get_zlev_by_name(name) - return A.z == S.zpos - -// For expansion later -/proc/atoms_share_level(atom/A, atom/B) - return A && B && A.z == B.z - -/** - * Checks if source_loc and checking_loc is both on the station, or on the same z level. - * This is because the station's several levels aren't considered the same z, so multi-z stations need this special case. - * returns TRUE if connection is valid, FALSE otherwise. - */ -/proc/is_valid_z_level(turf/source_loc, turf/checking_loc) - // if we're both on "station", regardless of multi-z, we'll pass by. - if(is_station_level(source_loc.z) && is_station_level(checking_loc.z)) - return TRUE - if(source_loc.z == checking_loc.z) - return TRUE - return FALSE diff --git a/code/__HELPERS/level_traits.dm b/code/__HELPERS/level_traits.dm index ae935df35c78..7b6a047d397a 100644 --- a/code/__HELPERS/level_traits.dm +++ b/code/__HELPERS/level_traits.dm @@ -1,5 +1,5 @@ /proc/is_level_reachable(z) - return check_level_trait(z, REACHABLE) + return check_level_trait(z, REACHABLE) /proc/is_station_level(z) return check_level_trait(z, STATION_LEVEL) @@ -13,6 +13,9 @@ /proc/is_admin_level(z) return check_level_trait(z, ADMIN_LEVEL) +/proc/is_reserved_level(z) + return check_level_trait(z, RESERVED_LEVEL) + /proc/is_away_level(z) return check_level_trait(z, AWAY_LEVEL) @@ -83,3 +86,11 @@ GLOBAL_LIST_INIT(default_map_traits, MAP_TRANSITION_CONFIG) if(SL.linkage == CROSSLINKED && !is_taipan(SL.zpos)) znums |= SL.zpos return znums + +/// Checks if both atoms are in same z or in connected z-levels. +/proc/are_zs_connected(atom/A, atom/B) + A = get_turf(A) + B = get_turf(B) + if(A.z == B.z) + return TRUE + return (B.z in SSmapping.get_connected_levels(A)) diff --git a/code/__HELPERS/maths.dm b/code/__HELPERS/maths.dm index 2346fe90c946..bfe4dcb5ab9d 100644 --- a/code/__HELPERS/maths.dm +++ b/code/__HELPERS/maths.dm @@ -250,3 +250,15 @@ return "centuple" else //It gets too tedious to use latin prefixes from here. return "[number]-tuple" + +/// Angle between two arbitrary points and horizontal line same as [/proc/get_angle] +/proc/get_angle_raw(start_x, start_y, start_pixel_x, start_pixel_y, end_x, end_y, end_pixel_x, end_pixel_y) + var/dy = (32 * end_y + end_pixel_y) - (32 * start_y + start_pixel_y) + var/dx = (32 * end_x + end_pixel_x) - (32 * start_x + start_pixel_x) + if(!dy) + return (dx >= 0) ? 90 : 270 + . = arctan(dx/dy) + if(dy < 0) + . += 180 + else if(dx < 0) + . += 360 diff --git a/code/__HELPERS/matrices.dm b/code/__HELPERS/matrices.dm index 414a16636ec2..c03999e1e822 100644 --- a/code/__HELPERS/matrices.dm +++ b/code/__HELPERS/matrices.dm @@ -1,3 +1,39 @@ +/// Datum which stores information about a matrix decomposed with decompose(). +/datum/decompose_matrix + ///? + var/scale_x = 1 + ///? + var/scale_y = 1 + ///? + var/rotation = 0 + ///? + var/shift_x = 0 + ///? + var/shift_y = 0 + +/// Decomposes a matrix into scale, shift and rotation. +/// +/// If other operations were applied on the matrix, such as shearing, the result +/// will not be precise. +/// +/// Negative scales are now supported. =) +/matrix/proc/decompose() + var/datum/decompose_matrix/decompose_matrix = new + . = decompose_matrix + var/flip_sign = (a*e - b*d < 0)? -1 : 1 // Det < 0 => only 1 axis is flipped - start doing some sign flipping + // If both axis are flipped, nothing bad happens and Det >= 0, it just treats it like a 180° rotation + // If only 1 axis is flipped, we need to flip one direction - in this case X, so we flip a, b and the x scaling + decompose_matrix.scale_x = sqrt(a * a + d * d) * flip_sign + decompose_matrix.scale_y = sqrt(b * b + e * e) + decompose_matrix.shift_x = c + decompose_matrix.shift_y = f + if(!decompose_matrix.scale_x || !decompose_matrix.scale_y) + return + // If only translated, scaled and rotated, a/xs == e/ys and -d/xs == b/xy + var/cossine = (a/decompose_matrix.scale_x + e/decompose_matrix.scale_y) / 2 + var/sine = (b/decompose_matrix.scale_y - d/decompose_matrix.scale_x) / 2 * flip_sign + decompose_matrix.rotation = arctan(cossine, sine) * flip_sign + /matrix/proc/TurnTo(old_angle, new_angle) . = new_angle - old_angle Turn(.) //BYOND handles cases such as -270, 360, 540 etc. DOES NOT HANDLE 180 TURNS WELL, THEY TWEEN AND LOOK LIKE SHIT @@ -28,6 +64,14 @@ //doesn't have an object argument because this is "Stacking" with the animate call above //3 billion% intentional +/** + * Shear the transform on either or both axes. + * * x - X axis shearing + * * y - Y axis shearing + */ +/matrix/proc/Shear(x, y) + return Multiply(matrix(1, x, 0, y, 1, 0)) + //Dumps the matrix data in format a-f /matrix/proc/tolist() . = list() diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 5409069747af..53f1b6fa5747 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -46,41 +46,33 @@ return pick(valid_picks) -/proc/random_hair_style(gender, species = SPECIES_HUMAN, datum/robolimb/robohead, mob/living/carbon/human/H) +/proc/random_hair_style( + gender, + datum/species/species, + datum/robolimb/robohead = GLOB.all_robolimbs["Morpheus Cyberkinetics"], + mob/living/carbon/human/human + ) var/h_style = "Bald" var/list/valid_hairstyles = list() - if(species == SPECIES_WRYN) // wryns antennaes now bound to hivenode, no need to change them - if(H) - var/obj/item/organ/external/head/head_organ = H.get_organ(BODY_ZONE_HEAD) - if(head_organ?.h_style) - return head_organ.h_style - else - return "Antennae" - for(var/hairstyle in GLOB.hair_styles_public_list) - var/datum/sprite_accessory/S = GLOB.hair_styles_public_list[hairstyle] + var/datum/sprite_accessory/style = GLOB.hair_styles_public_list[hairstyle] - if(hairstyle == "Bald") //Just in case. - valid_hairstyles += hairstyle + if(!LAZYIN(style.species_allowed, species.name)) continue - if(gender == S.unsuitable_gender) + + if(gender == style.unsuitable_gender) continue - if(species == SPECIES_MACNINEPERSON) //If the user is a species who can have a robotic head... - if(!robohead) - robohead = GLOB.all_robolimbs["Morpheus Cyberkinetics"] - if((species in S.species_allowed) && robohead.is_monitor && ((S.models_allowed && (robohead.company in S.models_allowed)) || !S.models_allowed)) //If this is a hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list. - valid_hairstyles += hairstyle //Give them their hairstyles if they do. - else - if(!robohead.is_monitor && (SPECIES_HUMAN in S.species_allowed)) /*If the hairstyle is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it. - But if the user has a robotic humanoid head and the hairstyle can fit humans, let them use it as a wig. */ - valid_hairstyles += hairstyle - else //If the user is not a species who can have robotic heads, use the default handling. - if(species in S.species_allowed) //If the user's head is of a species the hairstyle allows, add it to the list. - valid_hairstyles += hairstyle - if(valid_hairstyles.len) - h_style = pick(valid_hairstyles) + if(!species.is_allowed_hair_style(human, robohead, style)) + continue + + LAZYADD(valid_hairstyles, hairstyle) + + if(human) + SEND_SIGNAL(human, COMSIG_RANDOM_HAIR_STYLE, valid_hairstyles, robohead) + + h_style = safepick(valid_hairstyles) return h_style @@ -142,6 +134,8 @@ continue if(!(species in S.species_allowed)) // If the user's head is not of a species the marking style allows, skip it. Otherwise, add it to the list. continue + if(!S.pickable) //If our markings are unpickable in normal ways, skip it + continue if(location == "tail") if(!body_accessory) if(S.tails_allowed) @@ -668,4 +662,3 @@ out_ckey = "(Disconnected)" return out_ckey - diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm index 5797e36f5cea..3ec883325e6f 100644 --- a/code/__HELPERS/names.dm +++ b/code/__HELPERS/names.dm @@ -17,7 +17,13 @@ GLOBAL_VAR(church_name) GLOBAL_VAR(command_name) /proc/command_name() - return SSmapping.map_datum.dock_name + return GLOB.command_name? GLOB.command_name : SSmapping.map_datum.dock_name + +/proc/change_command_name(name) + + GLOB.command_name = name + + return name GLOBAL_VAR(religion_name) /proc/religion_name() @@ -34,8 +40,19 @@ GLOBAL_VAR(religion_name) /proc/system_name() return SSmapping.map_datum.starsys_name +GLOBAL_VAR(station_name) /proc/station_name() - return SSmapping.map_datum.station_name + return GLOB.station_name? GLOB.station_name : SSmapping.map_datum.station_name + +/proc/change_station_name(designation) + GLOB.station_name = designation + update_world_name() + +/proc/update_world_name() + if(config && CONFIG_GET(string/servername)) + world.name = "[CONFIG_GET(string/servername)] — [station_name()]" + else + world.name = station_name() /proc/new_station_name() var/random = rand(1,5) diff --git a/code/__HELPERS/paths/path.dm b/code/__HELPERS/paths/path.dm index e01bea57f7cc..5d2b3c8db025 100644 --- a/code/__HELPERS/paths/path.dm +++ b/code/__HELPERS/paths/path.dm @@ -4,7 +4,7 @@ * It will yield until a path is returned, using magic * * Arguments: - * * caller: The movable atom that's trying to find the path + * * requester: The movable atom that's trying to find the path * * end: What we're trying to path to. It doesn't matter if this is a turf or some other atom, we're gonna just path to the turf it's on anyway * * max_distance: The maximum number of steps we can take in a given path to search (default: 30, 0 = infinite) * * mintargetdistance: Minimum distance to the target before path returns, could be used to get near a target, but not right to it - for an AI mob with a gun, for example. @@ -14,17 +14,19 @@ * * skip_first: Whether or not to delete the first item in the path. This would be done because the first item is the starting tile, which can break movement for some creatures. * * diagonal_handling: defines how we handle diagonal moves. see __DEFINES/path.dm */ -/proc/get_path_to(atom/movable/caller, atom/end, max_distance = 30, mintargetdist, access=list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE, diagonal_handling = DIAGONAL_REMOVE_CLUNKY) +/proc/get_path_to(atom/movable/requester, atom/end, max_distance = 30, mintargetdist, access=list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE, diagonal_handling = DIAGONAL_REMOVE_CLUNKY) var/list/hand_around = list() // We're guarenteed that list will be the first list in pathfinding_finished's argset because of how callback handles the arguments list var/datum/callback/await = list(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(pathfinding_finished), hand_around)) - if(!SSpathfinder.pathfind(caller, end, max_distance, mintargetdist, access, simulated_only, exclude, skip_first, diagonal_handling, await)) + if(!SSpathfinder.pathfind(requester, end, max_distance, mintargetdist, access, simulated_only, exclude, skip_first, diagonal_handling, await)) return list() UNTIL(length(hand_around)) var/list/return_val = hand_around[1] - if(!islist(return_val) || (QDELETED(caller) || QDELETED(end))) // It's trash, just hand back empty to make it easy + + if(!islist(return_val) || (QDELETED(requester) || QDELETED(end))) // It's trash, just hand back empty to make it easy return list() + return return_val @@ -38,7 +40,7 @@ * It will yield until a path is returned, using magic * * Arguments: - * * caller: The movable atom that's trying to find the path + * * requester: The movable atom that's trying to find the path * * end: What we're trying to path to. It doesn't matter if this is a turf or some other atom, we're gonna just path to the turf it's on anyway * * max_distance: The maximum number of steps we can take in a given path to search (default: 30, 0 = infinite) * * mintargetdistance: Minimum distance to the target before path returns, could be used to get near a target, but not right to it - for an AI mob with a gun, for example. @@ -48,30 +50,32 @@ * * exclude: If we want to avoid a specific turf, like if we're a mulebot who already got blocked by some turf * * skip_first: Whether or not to delete the first item in the path. This would be done because the first item is the starting tile, which can break movement for some creatures. */ -/proc/get_swarm_path_to(atom/movable/caller, atom/end, max_distance = 30, mintargetdist, age = MAP_REUSE_INSTANT, access = list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE) +/proc/get_swarm_path_to(atom/movable/requester, atom/end, max_distance = 30, mintargetdist, age = MAP_REUSE_INSTANT, access = list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE) var/list/hand_around = list() // We're guarenteed that list will be the first list in pathfinding_finished's argset because of how callback handles the arguments list var/datum/callback/await = list(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(pathfinding_finished), hand_around)) - if(!SSpathfinder.swarmed_pathfind(caller, end, max_distance, mintargetdist, age, access, simulated_only, exclude, skip_first, await)) + if(!SSpathfinder.swarmed_pathfind(requester, end, max_distance, mintargetdist, age, access, simulated_only, exclude, skip_first, await)) return list() UNTIL(length(hand_around)) var/list/return_val = hand_around[1] - if(!islist(return_val) || (QDELETED(caller) || QDELETED(end))) // It's trash, just hand back empty to make it easy + + if(!islist(return_val) || (QDELETED(requester) || QDELETED(end))) // It's trash, just hand back empty to make it easy return list() + return return_val -/proc/get_sssp(atom/movable/caller, max_distance = 30, access = list(), simulated_only = TRUE, turf/exclude) +/proc/get_sssp(atom/movable/requester, max_distance = 30, access = list(), simulated_only = TRUE, turf/exclude) var/list/hand_around = list() // We're guarenteed that list will be the first list in pathfinding_finished's argset because of how callback handles the arguments list var/datum/callback/await = list(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(pathfinding_finished), hand_around)) - if(!SSpathfinder.build_map(caller, get_turf(caller), max_distance, access, simulated_only, exclude, await)) + if(!SSpathfinder.build_map(requester, get_turf(requester), max_distance, access, simulated_only, exclude, await)) return null UNTIL(length(hand_around)) var/datum/path_map/return_val = hand_around[1] - if(!istype(return_val, /datum/path_map) || (QDELETED(caller))) // It's trash, just hand back null to make it easy + if(!istype(return_val, /datum/path_map) || (QDELETED(requester))) // It's trash, just hand back null to make it easy return null return return_val @@ -215,7 +219,7 @@ /** - * For seeing if we can actually move between 2 given turfs while accounting for our access and the caller's pass_flags + * For seeing if we can actually move between 2 given turfs while accounting for our access and the requester's pass_flags * * Assumes destinantion turf is non-dense - check and shortcircuit in code invoking this proc to avoid overhead. * Makes some other assumptions, such as assuming that unless declared, non dense objects will not block movement. @@ -278,8 +282,8 @@ * Passed into CanAStarPass to provide context for a pathing attempt * * Also used to check if using a cached path_map is safe - * There are some vars here that are unused. They exist to cover cases where caller_ref is used - * They're the properties of caller_ref used in those cases. + * There are some vars here that are unused. They exist to cover cases where requester_ref is used + * They're the properties of requester_ref used in those cases. * It's kinda annoying, but there's some proc chains we can't convert to this datum */ /datum/can_pass_info @@ -323,10 +327,10 @@ /// Pass information for the object we are pulling, if any var/datum/can_pass_info/pulling_info = null - /// Weakref to the caller used to generate this info + /// Weakref to the requester used to generate this info /// Should not use this almost ever, it's for context and to allow for proc chains that /// Require a movable - var/datum/weakref/caller_ref = null + var/datum/weakref/requester_ref = null /datum/can_pass_info/New(atom/movable/construct_from, list/access, no_id = FALSE, call_depth = 0) @@ -340,26 +344,31 @@ if(isnull(construct_from)) return - src.caller_ref = WEAKREF(construct_from) + src.requester_ref = WEAKREF(construct_from) src.pass_flags = construct_from.pass_flags src.movement_type = construct_from.movement_type src.thrown = !!construct_from.throwing src.anchored = construct_from.anchored src.has_gravity = construct_from.has_gravity() + if(ismob(construct_from)) var/mob/mob_construct = construct_from src.faction = mob_construct.faction?.Copy() src.incapacitated = mob_construct.incapacitated() + if(mob_construct.buckled) src.buckled_info = new(mob_construct.buckled, access, no_id, call_depth + 1) + if(isobserver(construct_from)) src.is_observer = TRUE + if(isliving(construct_from)) var/mob/living/living_construct = construct_from src.is_living = TRUE src.can_ventcrawl = is_ventcrawler(construct_from) src.mob_size = living_construct.mob_size src.incorporeal_move = living_construct.incorporeal_move + src.is_bot = isbot(construct_from) if(construct_from.pulling) @@ -375,8 +384,8 @@ GLOBAL_LIST_INIT(can_pass_info_vars, GLOBAL_PROC_REF(can_pass_check_vars)) var/datum/isaac = new() var/list/altar = assoc_to_keys(lamb.vars - isaac.vars) // Don't compare against calling atom, it's not relevant here - altar -= "caller_ref" - ASSERT("caller_ref" in lamb.vars) + altar -= "requester_ref" + ASSERT("requester_ref" in lamb.vars) // We will bespoke handle pulling_info altar -= "pulling_info" ASSERT("pulling_info" in lamb.vars) @@ -387,10 +396,13 @@ GLOBAL_LIST_INIT(can_pass_info_vars, GLOBAL_PROC_REF(can_pass_check_vars)) for(var/comparable_var in GLOB.can_pass_info_vars) if(!(vars[comparable_var] ~= check_against.vars[comparable_var])) return FALSE + if(!pulling_info != !check_against.pulling_info) return FALSE + if(pulling_info && !pulling_info.compare_against(check_against.pulling_info)) return FALSE + return TRUE diff --git a/code/__HELPERS/paths/sssp.dm b/code/__HELPERS/paths/sssp.dm index 38772f1620e5..5e650216ca96 100644 --- a/code/__HELPERS/paths/sssp.dm +++ b/code/__HELPERS/paths/sssp.dm @@ -213,8 +213,8 @@ var/working_index -/datum/pathfind/sssp/proc/setup(atom/movable/caller, list/access, turf/center, max_distance, simulated_only, turf/avoid, list/datum/callback/on_finish) - src.pass_info = new(caller, access) +/datum/pathfind/sssp/proc/setup(atom/movable/requester, list/access, turf/center, max_distance, simulated_only, turf/avoid, list/datum/callback/on_finish) + src.pass_info = new(requester, access) src.start = center src.max_distance = max_distance src.simulated_only = simulated_only diff --git a/code/__HELPERS/qdel.dm b/code/__HELPERS/qdel.dm index fe542aeb3d23..df66726a9978 100644 --- a/code/__HELPERS/qdel.dm +++ b/code/__HELPERS/qdel.dm @@ -1,11 +1,3 @@ -#define QDEL_IN(item, time) addtimer(CALLBACK(GLOBAL_PROC, /proc/qdel, item), time, TIMER_STOPPABLE) -#define QDEL_IN_CLIENT_TIME(item, time) addtimer(CALLBACK(GLOBAL_PROC, /proc/qdel, item), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME) -#define QDEL_NULL(item) if(item) { qdel(item); item = null } -#define QDEL_LIST(L) if(L) { for(var/___I in L) qdel(___I); if(L) { L.Cut() }; } -#define QDEL_LIST_IN(L, time) addtimer(CALLBACK(GLOBAL_PROC, /proc/______qdel_list_wrapper, L), time, TIMER_STOPPABLE) -#define QDEL_LIST_ASSOC(L) if(L) { for(var/___I in L) { qdel(L[___I]); qdel(___I); } L.Cut(); } -#define QDEL_LIST_ASSOC_VAL(L) if(L) { for(var/___I in L) qdel(L[___I]); L.Cut(); } - /proc/______qdel_list_wrapper(list/L) //the underscores are to encourage people not to use this directly. QDEL_LIST(L) diff --git a/code/__HELPERS/sorts/__main.dm b/code/__HELPERS/sorts/__main.dm index b5368330d59b..601e9925c44a 100644 --- a/code/__HELPERS/sorts/__main.dm +++ b/code/__HELPERS/sorts/__main.dm @@ -101,7 +101,9 @@ start the index of the first element in the range that is not already known to b if(start <= lo) start = lo + 1 - for(,start < hi, ++start) + var/list/L = src.L + + for(start in start to hi - 1) var/pivot = fetchElement(L,start) //set left and right to the index where pivot belongs @@ -140,6 +142,7 @@ reverse a descending sequence without violating stability. if(runHi >= hi) return 1 + var/list/L = src.L var/last = fetchElement(L, lo) var/current = fetchElement(L, runHi++) @@ -259,6 +262,7 @@ reverse a descending sequence without violating stability. /datum/sortInstance/proc/gallopLeft(key, base, len, hint) //ASSERT(len > 0 && hint >= 0 && hint < len) + var/list/L = src.L var/lastOffset = 0 var/offset = 1 if(call(cmp)(key, fetchElement(L,base + hint)) > 0) @@ -318,6 +322,7 @@ reverse a descending sequence without violating stability. /datum/sortInstance/proc/gallopRight(key, base, len, hint) //ASSERT(len > 0 && hint >= 0 && hint < len) + var/list/L = src.L var/offset = 1 var/lastOffset = 0 if(call(cmp)(key, fetchElement(L, base + hint)) < 0) //key <= L[base+hint] @@ -366,6 +371,7 @@ reverse a descending sequence without violating stability. /datum/sortInstance/proc/mergeLo(base1, len1, base2, len2) //ASSERT(len1 > 0 && len2 > 0 && base1 + len1 == base2) + var/list/L = src.L var/cursor1 = base1 var/cursor2 = base2 @@ -468,6 +474,7 @@ reverse a descending sequence without violating stability. /datum/sortInstance/proc/mergeHi(base1, len1, base2, len2) //ASSERT(len1 > 0 && len2 > 0 && base1 + len1 == base2) + var/list/L = src.L var/cursor1 = base1 + len1 - 1 //start at end of sublists var/cursor2 = base2 + len2 - 1 @@ -610,6 +617,7 @@ reverse a descending sequence without violating stability. return L /datum/sortInstance/proc/mergeAt2(i) + var/list/L = src.L var/cursor1 = runBases[i] var/cursor2 = runBases[i + 1] diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 2369f9c8f643..1232028760fd 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -307,9 +307,12 @@ return "" -//Returns a string with reserved characters and spaces before the first word and after the last word removed. -/proc/trim(text) - return trim_reduced(text) +/// Returns a string with reserved characters and spaces before the first word and after the last word removed. +/proc/trim(text, max_length) + if(max_length) + text = copytext_char(text, 1, max_length) + + return trimtext(text) || "" /// Returns a string that does not exceed max_length characters in size /proc/trim_length(text, max_length) @@ -495,6 +498,9 @@ text = replacetext(text, "\[/i\]", "") text = replacetext(text, "\[u\]", "") text = replacetext(text, "\[/u\]", "") + if(check_rights(R_EVENT)) + text = replacetext(text, "\[signfont\]", "") + text = replacetext(text, "\[/signfont\]", "") if(sign) text = replacetext(text, "\[sign\]", "[user ? user.real_name : "Anonymous"]") if(fields) @@ -803,21 +809,3 @@ if(ofthree == 0) return "[num]" return "[num / (10 ** (ofthree * 3))][GLOB.si_suffixes[round(length(GLOB.si_suffixes) / 2) + ofthree + 1]]" - -//Returns a string with reserved characters and spaces after the first and last letters removed -//Like trim(), but very slightly faster. worth it for niche usecases -/proc/trim_reduced(text) - var/starting_coord = 1 - var/text_len = length(text) - for (var/i in 1 to text_len) - if (text2ascii(text, i) > 32) - starting_coord = i - break - - for (var/i = text_len, i >= starting_coord, i--) - if (text2ascii(text, i) > 32) - return copytext(text, starting_coord, i + 1) - - if(starting_coord > 1) - return copytext(text, starting_coord) - return "" diff --git a/code/__HELPERS/turfs.dm b/code/__HELPERS/turfs.dm new file mode 100644 index 000000000000..fa0f9639d4aa --- /dev/null +++ b/code/__HELPERS/turfs.dm @@ -0,0 +1,27 @@ +///Returns a random turf on the station +/proc/get_random_station_turf() + var/list/turfs = get_area_turfs(pick(SSmapping.existing_station_areas)) + if (length(turfs)) + return pick(turfs) + +///Returns a random turf on the station, excludes dense turfs (like walls) and areas that have valid_territory set to FALSE +/proc/get_safe_random_station_turf(list/areas_to_pick_from = SSmapping.existing_station_areas) + for (var/i in 1 to 5) + var/list/turf_list = get_area_turfs(pick(areas_to_pick_from)) + var/turf/target + while (turf_list.len && !target) + var/I = rand(1, turf_list.len) + var/turf/checked_turf = turf_list[I] + var/area/turf_area = get_area(checked_turf) + if(!checked_turf.density && (turf_area.valid_territory) && !isgroundlessturf(checked_turf)) + var/clear = TRUE + for(var/obj/checked_object in checked_turf) + if(checked_object.density) + clear = FALSE + break + if(clear) + target = checked_turf + if (!target) + turf_list.Cut(I, I + 1) + if (target) + return target diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 631b480129c7..97cf69f29897 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -511,8 +511,8 @@ Returns 1 if the chain up to the area contains the given typepath ///Step-towards method of determining whether one atom can see another. Similar to viewers() ///note: this is a line of sight algorithm, view() does not do any sort of raycasting and cannot be emulated by it accurately -/proc/can_see(atom/source, atom/target, length = 5) // I couldnt be arsed to do actual raycasting :I This is horribly inaccurate. - var/turf/current_turf = get_turf(source) +/atom/proc/can_see(atom/target, length = 5) // I couldnt be arsed to do actual raycasting :I This is horribly inaccurate. + var/turf/current_turf = get_turf(src) var/turf/target_turf = get_turf(target) if(!current_turf || !target_turf) // nullspace return FALSE @@ -531,45 +531,58 @@ Returns 1 if the chain up to the area contains the given typepath steps++ return TRUE - -//Returns: all the areas in the world -/proc/return_areas() - var/list/area/areas = list() - for(var/area/A in world) - areas += A - return areas - -//Returns: all the areas in the world, sorted. -/proc/return_sorted_areas() - return sortAtom(return_areas()) - //Takes: Area type as text string or as typepath OR an instance of the area. //Returns: A list of all areas of that type in the world. -/proc/get_areas(var/areatype) - if(!areatype) return null - if(istext(areatype)) areatype = text2path(areatype) +/proc/get_areas(areatype, subtypes=TRUE) + if(!areatype) + return null + if(istext(areatype)) + areatype = text2path(areatype) if(isarea(areatype)) var/area/areatemp = areatype areatype = areatemp.type - var/list/areas = new/list() - for(var/area/N in world) - if(istype(N, areatype)) areas += N + var/list/areas = list() + if(subtypes) + var/list/cache = typecacheof(areatype) + for(var/area/area_to_check as anything in GLOB.areas) + if(cache[area_to_check.type]) + areas += area_to_check + else + for(var/area/area_to_check as anything in GLOB.areas) + if(area_to_check.type == areatype) + areas += area_to_check return areas //Takes: Area type as text string or as typepath OR an instance of the area. //Returns: A list of all turfs in areas of that type of that type in the world. -/proc/get_area_turfs(var/areatype) - if(!areatype) return null - if(istext(areatype)) areatype = text2path(areatype) +/proc/get_area_turfs(areatype, subtypes=TRUE) + if(!areatype) + return null + if(istext(areatype)) + areatype = text2path(areatype) if(isarea(areatype)) var/area/areatemp = areatype areatype = areatemp.type - var/list/turfs = new/list() - for(var/area/N in world) - if(N.type == areatype) - for(var/turf/T in N) turfs += T + // Pull out the areas + var/list/areas_to_pull = list() + if(subtypes) + var/list/cache = typecacheof(areatype) + for(var/area/area_to_check as anything in GLOB.areas) + if(!cache[area_to_check.type]) + continue + areas_to_pull += area_to_check + else + for(var/area/area_to_check as anything in GLOB.areas) + if(area_to_check.type != areatype) + continue + areas_to_pull += area_to_check + + // Now their turfs + var/list/turfs = list() + for(var/area/pull_from as anything in areas_to_pull) + turfs += pull_from.get_contained_turfs() return turfs //Takes: Area type as text string or as typepath OR an instance of the area. @@ -582,7 +595,7 @@ Returns 1 if the chain up to the area contains the given typepath areatype = areatemp.type var/list/atoms = new/list() - for(var/area/N in world) + for(var/area/N as anything in GLOB.areas) if(istype(N, areatype)) for(var/atom/A in N) atoms += A @@ -593,145 +606,6 @@ Returns 1 if the chain up to the area contains the given typepath var/y_pos = null var/z_pos = null -/area/proc/move_contents_to(var/area/A, var/turftoleave=null, var/direction = null) - //Takes: Area. Optional: turf type to leave behind. - //Returns: Nothing. - //Notes: Attempts to move the contents of one area to another area. - // Movement based on lower left corner. Tiles that do not fit - // into the new area will not be moved. - - if(!A || !src) return 0 - - var/list/turfs_src = get_area_turfs(src.type) - var/list/turfs_trg = get_area_turfs(A.type) - - var/src_min_x = 0 - var/src_min_y = 0 - for(var/turf/T in turfs_src) - if(T.x < src_min_x || !src_min_x) src_min_x = T.x - if(T.y < src_min_y || !src_min_y) src_min_y = T.y - - var/trg_min_x = 0 - var/trg_min_y = 0 - for(var/turf/T in turfs_trg) - if(T.x < trg_min_x || !trg_min_x) trg_min_x = T.x - if(T.y < trg_min_y || !trg_min_y) trg_min_y = T.y - - var/list/refined_src = new/list() - for(var/turf/T in turfs_src) - refined_src += T - refined_src[T] = new/datum/coords - var/datum/coords/C = refined_src[T] - C.x_pos = (T.x - src_min_x) - C.y_pos = (T.y - src_min_y) - - var/list/refined_trg = new/list() - for(var/turf/T in turfs_trg) - refined_trg += T - refined_trg[T] = new/datum/coords - var/datum/coords/C = refined_trg[T] - C.x_pos = (T.x - trg_min_x) - C.y_pos = (T.y - trg_min_y) - - var/list/fromupdate = new/list() - var/list/toupdate = new/list() - - moving: - for(var/turf/T in refined_src) - var/datum/coords/C_src = refined_src[T] - for(var/turf/B in refined_trg) - var/datum/coords/C_trg = refined_trg[B] - if(C_src.x_pos == C_trg.x_pos && C_src.y_pos == C_trg.y_pos) - - var/old_dir1 = T.dir - var/old_icon_state1 = T.icon_state - var/old_icon1 = T.icon - - var/turf/X = B.ChangeTurf(T.type) - X.dir = old_dir1 - X.icon_state = old_icon_state1 - X.icon = old_icon1 //Shuttle floors are in shuttle.dmi while the defaults are floors.dmi - - // Give the new turf our air, if simulated - if(issimulatedturf(X) && issimulatedturf(T)) - var/turf/simulated/sim = X - sim.copy_air_with_tile(T) - - - /* Quick visual fix for some weird shuttle corner artefacts when on transit space tiles */ - if(direction && findtext(X.icon_state, "swall_s")) - - // Spawn a new shuttle corner object - var/obj/corner = new() - corner.loc = X - corner.set_density(TRUE) - corner.set_anchored(TRUE) - corner.icon = X.icon - corner.icon_state = replacetext(X.icon_state, "_s", "_f") - corner.tag = "delete me" - corner.name = "wall" - - // Find a new turf to take on the property of - var/turf/nextturf = get_step(corner, direction) - if(!nextturf || !isspaceturf(nextturf)) - nextturf = get_step(corner, turn(direction, 180)) - - - // Take on the icon of a neighboring scrolling space icon - X.icon = nextturf.icon - X.icon_state = nextturf.icon_state - - - for(var/obj/O in T) - - // Reset the shuttle corners - if(O.tag == "delete me") - X.icon = 'icons/turf/shuttle/shuttle.dmi' - X.icon_state = replacetext(O.icon_state, "_f", "_s") // revert the turf to the old icon_state - X.name = "wall" - qdel(O) // prevents multiple shuttle corners from stacking - continue - if(!isobj(O)) continue - O.loc.Exited(O) - O.setLoc(X, TRUE) - O.loc.Entered(O) - for(var/mob/M in T) - if(!M.move_on_shuttle) - continue - M.loc = X - -// var/area/AR = X.loc - -// if(AR.lighting_use_dynamic) //TODO: rewrite this code so it's not messed by lighting ~Carn -// X.opacity = !X.opacity -// X.set_opacity(!X.opacity) - - toupdate += X - - if(turftoleave) - fromupdate += T.ChangeTurf(turftoleave) - else - T.ChangeTurf(T.baseturf) - - refined_src -= T - refined_trg -= B - continue moving - - if(toupdate.len) - for(var/turf/simulated/T1 in toupdate) - SSair.remove_from_active(T1) - T1.CalculateAdjacentTurfs() - SSair.add_to_active(T1,1) - - if(fromupdate.len) - for(var/turf/simulated/T2 in fromupdate) - SSair.remove_from_active(T2) - T2.CalculateAdjacentTurfs() - SSair.add_to_active(T2,1) - - - - /proc/DuplicateObject(obj/original, perfectcopy = FALSE , sameloc = FALSE, atom/newloc = null) if(!original) return null @@ -759,6 +633,7 @@ Returns 1 if the chain up to the area contains the given typepath O.update_icon() return O +// Я хочу чтобы этот прок умер /area/proc/copy_contents_to(area/A , platingRequired = FALSE, perfect_copy = TRUE) //Takes: Area. Optional: If it should copy to areas that don't have plating //Returns: Nothing. @@ -889,35 +764,35 @@ Returns 1 if the chain up to the area contains the given typepath /proc/parse_zone(zone) switch(zone) if(BODY_ZONE_HEAD) - return "head" + return "голова" if(BODY_ZONE_CHEST) - return "chest" + return "грудь" if(BODY_ZONE_L_ARM) - return "left arm" + return "левая рука" if(BODY_ZONE_R_ARM) - return "right arm" + return "правая рука" if(BODY_ZONE_L_LEG) - return "left leg" + return "левая нога" if(BODY_ZONE_R_LEG) - return "right leg" + return "правая нога" if(BODY_ZONE_TAIL) - return "tail" + return "хвост" if(BODY_ZONE_WING) - return "wings" + return "крылья" if(BODY_ZONE_PRECISE_EYES) - return "eyes" + return "глаза" if(BODY_ZONE_PRECISE_MOUTH) - return "mouth" + return "рот" if(BODY_ZONE_PRECISE_GROIN) - return "groin" + return "живот" if(BODY_ZONE_PRECISE_L_HAND) - return "left hand" + return "левая ладонь" if(BODY_ZONE_PRECISE_R_HAND) - return "right hand" + return "правая ладонь" if(BODY_ZONE_PRECISE_L_FOOT) - return "left foot" + return "левая ступня" if(BODY_ZONE_PRECISE_R_FOOT) - return "right foot" + return "правая ступня" else stack_trace("Wrong zone input.") @@ -1005,55 +880,6 @@ GLOBAL_LIST_INIT(can_embed_types, typecacheof(list( if(is_type_in_typecache(W, GLOB.can_embed_types)) return 1 -/proc/is_hot(obj/item/W) - if(W.tool_behaviour == TOOL_WELDER) - if(W.tool_enabled) - return 2500 - else - return 0 - if(istype(W, /obj/item/lighter)) - var/obj/item/lighter/O = W - if(O.lit) - return 1500 - else - return 0 - if(istype(W, /obj/item/match)) - var/obj/item/match/O = W - if(O.lit == 1) - return 1000 - else - return 0 - if(istype(W, /obj/item/clothing/mask/cigarette)) - var/obj/item/clothing/mask/cigarette/O = W - if(O.lit) - return 1000 - else - return 0 - if(istype(W, /obj/item/candle)) - var/obj/item/candle/O = W - if(O.lit) - return 1000 - else - return 0 - if(istype(W, /obj/item/flashlight/flare)) - var/obj/item/flashlight/flare/O = W - if(O.on) - return 1000 - else - return 0 - if(istype(W, /obj/item/gun/energy/plasmacutter)) - return 3800 - if(istype(W, /obj/item/melee/energy)) - var/obj/item/melee/energy/O = W - if(O.active) - return 3500 - else - return 0 - if(isigniter(W)) - return 20000 - else - return 0 - //Whether or not the given item counts as sharp in terms of dealing damage /proc/is_sharp(obj/O) if(!O) @@ -1416,6 +1242,8 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) stop_orbit() orbiting = A + LAZYOR(A.orbiters, src) + SEND_SIGNAL(orbiting, COMSIG_ATOM_ORBIT_BEGIN, src) if(ismob(A)) var/mob/M = A M.ghost_orbiting += 1 @@ -1453,18 +1281,17 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) sleep(0.6) if(orbiting == A) //make sure we haven't started orbiting something else. - if(ismob(orbiting)) - var/mob/M = orbiting - M.ghost_orbiting -= 1 - orbiting = null - transform = cached_transform - SpinAnimation(0, 0, parallel = FALSE) + stop_orbit() /atom/movable/proc/stop_orbit() if(ismob(orbiting)) var/mob/M = orbiting M.ghost_orbiting -= 1 + + SEND_SIGNAL(orbiting, COMSIG_ATOM_ORBIT_STOP, src) + + LAZYREMOVE(orbiting.orbiters, src) orbiting = null transform = cached_transform SpinAnimation(0, 0, parallel = FALSE) @@ -1581,6 +1408,29 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) if(areas) . |= T.loc +/proc/urange_multiz(dist=0, atom/center=usr, orange=0, areas=0) + if(!dist) + if(!orange) + return list(center) + else + return list() + var/list/stations_z = levels_by_trait(STATION_LEVEL) + var/min_z = max(center.z - dist, stations_z[1]) + var/max_z = min(center.z + dist, stations_z[length(stations_z)]) + var/list/turfs = RANGE_TURFS_MULTIZ(dist, center, min_z, max_z) + if(orange) + turfs -= get_turf(center) + . = list() + for(var/V in turfs) + var/turf/T = V + . += T + . += T.contents + if(areas) + . |= T.loc + +/proc/is_there_multiz() + return SSmapping?.map_datum?.traits?.len > 1 + /proc/screen_loc2turf(scr_loc, turf/origin) var/tX = splittext(scr_loc, ",") @@ -1611,7 +1461,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) /proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types()) if(value == FALSE) //nothing should be calling us with a number, so this is safe - value = input("Enter type to find (blank for all, cancel to cancel)", "Search for type") as null|text + value = tgui_input_text(usr, "Enter type to find (blank for all, cancel to cancel)", "Search for type", encode = FALSE) if(isnull(value)) return value = trim(value) @@ -1625,7 +1475,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) if(matches.len == 1) chosen = matches[1] else - chosen = input("Select a type", "Pick Type", matches[1]) as null|anything in matches + chosen = tgui_input_list(usr, "Select a type", "Pick Type", matches, matches[1]) if(!chosen) return chosen = matches[chosen] @@ -1670,7 +1520,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) /obj/item/organ/internal = "INT_ORG", /obj/item/organ = "ORGAN", /obj/item/pda = "PDA", - /obj/item/projectile = "PROJ", + /obj/projectile = "PROJ", /obj/item/radio/headset = "HEADSET", /obj/item/reagent_containers/glass/beaker = "BEAKER", /obj/item/reagent_containers/glass/bottle = "BOTTLE", @@ -2005,31 +1855,31 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) /proc/get_channel_name(channel) switch(channel) if(CHANNEL_GENERAL) - return "General Sounds" + return "Основные звуки" if(CHANNEL_LOBBYMUSIC) - return "Lobby Music" + return "Музыка в лобби" if(CHANNEL_ADMIN) - return "Admin MIDIs" + return "Админские MIDI" if(CHANNEL_VOX) - return "AI Announcements" + return "Оповещения ИИ" if(CHANNEL_JUKEBOX) - return "Dance Machines" + return "Танцевальные машины" if(CHANNEL_HEARTBEAT) - return "Heartbeat" + return "Сердцебиение" if(CHANNEL_BUZZ) - return "White Noise" + return "Белый шум" if(CHANNEL_AMBIENCE) - return "Ambience" + return "Эмбиент" if(CHANNEL_TTS_LOCAL) - return "TTS Local" + return "TTS рядом" if(CHANNEL_TTS_RADIO) - return "TTS Radio" + return "TTS в радиосвязи" if(CHANNEL_RADIO_NOISE) - return "Radio Noise" + return "Звуки радиосвязи" if(CHANNEL_INTERACTION_SOUNDS) - return "Item Interaction Sounds" + return "Звуки взаимодействия с предметами" if(CHANNEL_BOSS_MUSIC) - return "Boss Music" + return "Музыка боссов" /proc/get_compass_dir(atom/start, atom/end) //get_dir() only considers an object to be north/south/east/west if there is zero deviation. This uses rounding instead. // Ported from CM-SS13 if(!start || !end) diff --git a/code/__HELPERS/view.dm b/code/__HELPERS/view.dm new file mode 100644 index 000000000000..d591985fccbe --- /dev/null +++ b/code/__HELPERS/view.dm @@ -0,0 +1,3 @@ +#define DEFAULT_SIGHT_DISTANCE 7 +/// Basic check to see if the src object can see the target object. +#define CAN_I_SEE(target) ((src in viewers(DEFAULT_SIGHT_DISTANCE, target)) || in_range(target, src)) diff --git a/code/_compile_options.dm b/code/_compile_options.dm index cf918216e8db..1fd02439b1f0 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -13,6 +13,8 @@ ///Used to find the sources of harddels, quite laggy, don't be surpised if it freezes your client for a good while //#define REFERENCE_TRACKING +//#define REFERENCE_TRACKING_DEBUG + #ifdef REFERENCE_TRACKING #warn Reference tracking is enabled ///Run a lookup on things hard deleting by default. diff --git a/code/_globalvars/_regexes.dm b/code/_globalvars/_regexes.dm index 7c2a73a45486..a9ad1b03e55f 100644 --- a/code/_globalvars/_regexes.dm +++ b/code/_globalvars/_regexes.dm @@ -1,3 +1,4 @@ GLOBAL_DATUM_INIT(is_http_protocol, /regex, regex("^https?://")) GLOBAL_DATUM_INIT(filename_forbidden_chars, /regex, regex(@{""|[\\\n\t/?%*:|<>]|\.\."}, "g")) +GLOBAL_DATUM_INIT(is_color, /regex, regex("^#\[0-9a-fA-F]{6}$")) GLOBAL_PROTECT(filename_forbidden_chars) diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm deleted file mode 100644 index 965ce2e5456f..000000000000 --- a/code/_globalvars/bitfields.dm +++ /dev/null @@ -1,23 +0,0 @@ -GLOBAL_LIST_INIT(bitfields, generate_bitfields()) - -/// Specifies a bitfield for smarter debugging -/datum/bitfield - /// The variable name that contains the bitfield - var/variable - - /// An associative list of the readable flag and its true value - var/list/flags - -/// Turns /datum/bitfield subtypes into a list for use in debugging -/proc/generate_bitfields() - var/list/bitfields = list() - for (var/_bitfield in subtypesof(/datum/bitfield)) - var/datum/bitfield/bitfield = new _bitfield - bitfields[bitfield.variable] = bitfield.flags - return bitfields - -DEFINE_BITFIELD(datum_flags, list( - "DF_ISPROCESSING" = DF_ISPROCESSING, - "DF_VAR_EDITED" = DF_VAR_EDITED, - "DF_USE_TAG" = DF_USE_TAG, -)) diff --git a/code/_globalvars/bitfields/admin.dm b/code/_globalvars/bitfields/admin.dm new file mode 100644 index 000000000000..d83298621f68 --- /dev/null +++ b/code/_globalvars/bitfields/admin.dm @@ -0,0 +1,30 @@ +DEFINE_BITFIELD(mute_category, list( + "MUTE_IC" = MUTE_IC, + "MUTE_OOC" = MUTE_OOC, + "MUTE_PRAY" = MUTE_PRAY, + "MUTE_ADMINHELP" = MUTE_ADMINHELP, + "MUTE_DEADCHAT" = MUTE_DEADCHAT, + "MUTE_TTS" = MUTE_TTS, + "MUTE_EMOTE" = MUTE_EMOTE, +)) + +DEFINE_BITFIELD(rights, list( + "R_BUILDMODE" = R_BUILDMODE, + "R_ADMIN" = R_ADMIN, + "R_BAN" = R_BAN, + "R_EVENT" = R_EVENT, + "R_SERVER" = R_SERVER, + "R_DEBUG" = R_DEBUG, + "R_POSSESS" = R_POSSESS, + "R_PERMISSIONS" = R_PERMISSIONS, + "R_STEALTH" = R_STEALTH, + "R_REJUVINATE" = R_REJUVINATE, + "R_VAREDIT" = R_VAREDIT, + "R_SOUNDS" = R_SOUNDS, + "R_SPAWN" = R_SPAWN, + "R_MOD" = R_MOD, + "R_MENTOR" = R_MENTOR, + "R_PROCCALL" = R_PROCCALL, + "R_VIEWRUNTIMES" = R_VIEWRUNTIMES, +)) + diff --git a/code/_globalvars/bitfields/bitfields.dm b/code/_globalvars/bitfields/bitfields.dm new file mode 100644 index 000000000000..7f74cc4d50a9 --- /dev/null +++ b/code/_globalvars/bitfields/bitfields.dm @@ -0,0 +1,56 @@ +GLOBAL_LIST_INIT(bitfields, generate_bitfields()) + +/// Specifies a bitfield for smarter debugging +/datum/bitfield + /// The variable name that contains the bitfield + var/variable + + /// An associative list of the readable flag and its true value + var/list/flags + + + +/datum/bitfield/can_vv_delete() + return FALSE + +/datum/bitfield/vv_edit_var(var_name, var_value) + return FALSE // no. + +/// Turns /datum/bitfield subtypes into a list for use in debugging +/proc/generate_bitfields() + var/list/bitfields = list() + for (var/_bitfield in subtypesof(/datum/bitfield)) + var/datum/bitfield/bitfield = new _bitfield + bitfields[bitfield.variable] = bitfield.flags + return bitfields + + +/proc/translate_bitfield(variable_type, variable_name, variable_value) + if(variable_type != VV_BITFIELD) + return variable_value + + var/list/flags = list() + for(var/flag in GLOB.bitfields[variable_name]) + if(variable_value & GLOB.bitfields[variable_name][flag]) + flags += flag + if(length(flags)) + return jointext(flags, ", ") + return "NONE" + +/proc/input_bitfield(mob/user, bitfield, current_value) + if(!user || !(bitfield in GLOB.bitfields)) + return + var/list/currently_checked = list() + for(var/name in GLOB.bitfields[bitfield]) + currently_checked[name] = (current_value & GLOB.bitfields[bitfield][name]) + + var/list/result = tgui_input_checkbox_list(user, "Редактирование битовой маски для [bitfield].", "Битовая маска", currently_checked) + if(isnull(result) || !islist(result)) + return + + var/new_result = 0 + for(var/name in GLOB.bitfields[bitfield]) + if(result[name]) + new_result |= GLOB.bitfields[bitfield][name] + return new_result + diff --git a/code/_globalvars/bitfields/declarations.dm b/code/_globalvars/bitfields/declarations.dm new file mode 100644 index 000000000000..d2af5eb18c20 --- /dev/null +++ b/code/_globalvars/bitfields/declarations.dm @@ -0,0 +1,121 @@ +DEFINE_BITFIELD(appearance_flags, list( + "LONG_GLIDE" = LONG_GLIDE, + "RESET_COLOR" = RESET_COLOR, + "RESET_ALPHA" = RESET_ALPHA, + "RESET_TRANSFORM" = RESET_TRANSFORM, + "NO_CLIENT_COLOR" = NO_CLIENT_COLOR, + "KEEP_TOGETHER" = KEEP_TOGETHER, + "KEEP_APART" = KEEP_APART, + "PLANE_MASTER" = PLANE_MASTER, + "TILE_BOUND" = TILE_BOUND, + "PIXEL_SCALE" = PIXEL_SCALE, + "PASS_MOUSE" = PASS_MOUSE, + "TILE_MOVER" = TILE_MOVER, +)) + +DEFINE_BITFIELD(vis_flags, list( + "VIS_HIDE" = VIS_HIDE, + "VIS_INHERIT_DIR" = VIS_INHERIT_DIR, + "VIS_INHERIT_ICON" = VIS_INHERIT_ICON, + "VIS_INHERIT_ICON_STATE" = VIS_INHERIT_ICON_STATE, + "VIS_INHERIT_ID" = VIS_INHERIT_ID, + "VIS_INHERIT_LAYER" = VIS_INHERIT_LAYER, + "VIS_INHERIT_PLANE" = VIS_INHERIT_PLANE, + "VIS_UNDERLAY" = VIS_UNDERLAY, +)) + +DEFINE_BITFIELD(datum_flags, list( + "DF_ISPROCESSING" = DF_ISPROCESSING, + "DF_VAR_EDITED" = DF_VAR_EDITED, + "DF_USE_TAG" = DF_USE_TAG, +)) + +DEFINE_BITFIELD(pass_flags, list( + "PASSTABLE" = PASSTABLE, + "PASSGLASS" = PASSGLASS, + "PASSGRILLE" = PASSGRILLE, + "PASSBLOB" = PASSBLOB, + "PASSMOB" = PASSMOB, + "LETPASSTHROW" = LETPASSTHROW, + "PASSMACHINE" = PASSMACHINE, + "PASSSTRUCTURE" = PASSSTRUCTURE, + "PASSFLAPS" = PASSFLAPS, + "PASSFENCE" = PASSFENCE, + "PASSDOOR" = PASSDOOR, + "PASSVEHICLE" = PASSVEHICLE, + "PASSITEM" = PASSITEM, + "LETPASSCLICKS" = LETPASSCLICKS, +)) + +DEFINE_BITFIELD(pass_flags_self, list( + "PASSTABLE" = PASSTABLE, + "PASSGLASS" = PASSGLASS, + "PASSGRILLE" = PASSGRILLE, + "PASSBLOB" = PASSBLOB, + "PASSMOB" = PASSMOB, + "LETPASSTHROW" = LETPASSTHROW, + "PASSMACHINE" = PASSMACHINE, + "PASSSTRUCTURE" = PASSSTRUCTURE, + "PASSFLAPS" = PASSFLAPS, + "PASSFENCE" = PASSFENCE, + "PASSDOOR" = PASSDOOR, + "PASSVEHICLE" = PASSVEHICLE, + "PASSITEM" = PASSITEM, + "LETPASSCLICKS" = LETPASSCLICKS, +)) + + +DEFINE_BITFIELD(gas_type, list( + "LINDA_SPAWN_HEAT" = LINDA_SPAWN_HEAT, + "LINDA_SPAWN_20C" = LINDA_SPAWN_20C, + "LINDA_SPAWN_TOXINS" = LINDA_SPAWN_TOXINS, + "LINDA_SPAWN_OXYGEN" = LINDA_SPAWN_OXYGEN, + "LINDA_SPAWN_CO2" = LINDA_SPAWN_CO2, + "LINDA_SPAWN_NITROGEN" = LINDA_SPAWN_NITROGEN, + "LINDA_SPAWN_N2O" = LINDA_SPAWN_N2O, + "LINDA_SPAWN_AGENT_B" = LINDA_SPAWN_AGENT_B, + "LINDA_SPAWN_AIR" = LINDA_SPAWN_AIR, +)) + +DEFINE_BITFIELD(spawn_contents, list( + "LINDA_SPAWN_HEAT" = LINDA_SPAWN_HEAT, + "LINDA_SPAWN_20C" = LINDA_SPAWN_20C, + "LINDA_SPAWN_TOXINS" = LINDA_SPAWN_TOXINS, + "LINDA_SPAWN_OXYGEN" = LINDA_SPAWN_OXYGEN, + "LINDA_SPAWN_CO2" = LINDA_SPAWN_CO2, + "LINDA_SPAWN_NITROGEN" = LINDA_SPAWN_NITROGEN, + "LINDA_SPAWN_N2O" = LINDA_SPAWN_N2O, + "LINDA_SPAWN_AGENT_B" = LINDA_SPAWN_AGENT_B, + "LINDA_SPAWN_AIR" = LINDA_SPAWN_AIR, +)) + +DEFINE_BITFIELD(qdel_flags, list( + "QDEL_ITEM_ADMINS_WARNED" = QDEL_ITEM_ADMINS_WARNED, + "QDEL_ITEM_SUSPENDED_FOR_LAG" = QDEL_ITEM_SUSPENDED_FOR_LAG, +)) + +DEFINE_BITFIELD(movement_type, list( + "GROUND" = GROUND, + "FLYING" = FLYING, + "VENTCRAWLING" = VENTCRAWLING, + "FLOATING" = FLOATING, + "PHASING" = PHASING, + "UPSIDE_DOWN" = UPSIDE_DOWN, +)) + +DEFINE_BITFIELD(area_flags, list( + "UNIQUE_AREA" = UNIQUE_AREA, + "BLOBS_ALLOWED" = BLOBS_ALLOWED, + "CAVES_ALLOWED" = CAVES_ALLOWED, + "FLORA_ALLOWED" = FLORA_ALLOWED, + "MEGAFAUNA_SPAWN_ALLOWED" = MEGAFAUNA_SPAWN_ALLOWED, + "MOB_SPAWN_ALLOWED" = MOB_SPAWN_ALLOWED, +)) + +DEFINE_BITFIELD(turf_flags, list( + "NOJAUNT" = NOJAUNT, + "UNUSED_RESERVATION_TURF" = UNUSED_RESERVATION_TURF, + "RESERVATION_TURF" = RESERVATION_TURF, + "NO_LAVA_GEN" = NO_LAVA_GEN, + "NO_RUINS" = NO_RUINS, +)) diff --git a/code/_globalvars/bitfields/food.dm b/code/_globalvars/bitfields/food.dm new file mode 100644 index 000000000000..83e98c086276 --- /dev/null +++ b/code/_globalvars/bitfields/food.dm @@ -0,0 +1,62 @@ +DEFINE_BITFIELD(disliked_food, list( + "MEAT" = MEAT, + "VEGETABLES" = VEGETABLES, + "RAW" = RAW, + "JUNKFOOD" = JUNKFOOD, + "GRAIN" = GRAIN, + "FRUIT" = FRUIT, + "DAIRY" = DAIRY, + "FRIED" = FRIED, + "ALCOHOL" = ALCOHOL, + "SUGAR" = SUGAR, + "EGG" = EGG, + "GROSS" = GROSS, + "TOXIC" = TOXIC, +)) +DEFINE_BITFIELD(liked_food, list( + "MEAT" = MEAT, + "VEGETABLES" = VEGETABLES, + "RAW" = RAW, + "JUNKFOOD" = JUNKFOOD, + "GRAIN" = GRAIN, + "FRUIT" = FRUIT, + "DAIRY" = DAIRY, + "FRIED" = FRIED, + "ALCOHOL" = ALCOHOL, + "SUGAR" = SUGAR, + "EGG" = EGG, + "GROSS" = GROSS, + "TOXIC" = TOXIC, +)) + +DEFINE_BITFIELD(toxic_food, list( + "MEAT" = MEAT, + "VEGETABLES" = VEGETABLES, + "RAW" = RAW, + "JUNKFOOD" = JUNKFOOD, + "GRAIN" = GRAIN, + "FRUIT" = FRUIT, + "DAIRY" = DAIRY, + "FRIED" = FRIED, + "ALCOHOL" = ALCOHOL, + "SUGAR" = SUGAR, + "EGG" = EGG, + "GROSS" = GROSS, + "TOXIC" = TOXIC, +)) + +DEFINE_BITFIELD(foodtype, list( + "MEAT" = MEAT, + "VEGETABLES" = VEGETABLES, + "RAW" = RAW, + "JUNKFOOD" = JUNKFOOD, + "GRAIN" = GRAIN, + "FRUIT" = FRUIT, + "DAIRY" = DAIRY, + "FRIED" = FRIED, + "ALCOHOL" = ALCOHOL, + "SUGAR" = SUGAR, + "EGG" = EGG, + "GROSS" = GROSS, + "TOXIC" = TOXIC, +)) diff --git a/code/_globalvars/bitfields/icon_smoothing.dm b/code/_globalvars/bitfields/icon_smoothing.dm new file mode 100644 index 000000000000..e08f2ffd7fa4 --- /dev/null +++ b/code/_globalvars/bitfields/icon_smoothing.dm @@ -0,0 +1,27 @@ +DEFINE_BITFIELD(smoothing_flags, list( + "SMOOTH_CORNERS" = SMOOTH_CORNERS, + "SMOOTH_BITMASK" = SMOOTH_BITMASK, + "SMOOTH_DIAGONAL_CORNERS" = SMOOTH_DIAGONAL_CORNERS, + "SMOOTH_BORDER" = SMOOTH_BORDER, + "SMOOTH_QUEUED" = SMOOTH_QUEUED, + "SMOOTH_OBJ" = SMOOTH_OBJ, + "SMOOTH_BORDER_OBJECT" = SMOOTH_BORDER_OBJECT, + "SMOOTH_BROKEN_TURF" = SMOOTH_BROKEN_TURF, + "SMOOTH_BURNT_TURF" = SMOOTH_BURNT_TURF, + "SMOOTH_FALSE" = SMOOTH_FALSE, + "SMOOTH_TRUE" = SMOOTH_TRUE, + "SMOOTH_MORE" = SMOOTH_MORE, + "SMOOTH_DIAGONAL" = SMOOTH_DIAGONAL, +)) + + +DEFINE_BITFIELD(smoothing_junction, list( + "NORTH_JUNCTION" = NORTH_JUNCTION, + "SOUTH_JUNCTION" = SOUTH_JUNCTION, + "EAST_JUNCTION" = EAST_JUNCTION, + "WEST_JUNCTION" = WEST_JUNCTION, + "NORTHEAST_JUNCTION" = NORTHEAST_JUNCTION, + "SOUTHEAST_JUNCTION" = SOUTHEAST_JUNCTION, + "SOUTHWEST_JUNCTION" = SOUTHWEST_JUNCTION, + "NORTHWEST_JUNCTION" = NORTHWEST_JUNCTION, +)) diff --git a/code/_globalvars/bitfields/jobs.dm b/code/_globalvars/bitfields/jobs.dm new file mode 100644 index 000000000000..f72b29e0c830 --- /dev/null +++ b/code/_globalvars/bitfields/jobs.dm @@ -0,0 +1,6 @@ +DEFINE_BITFIELD(department_flag, list( + "JOBCAT_ENGSEC" = JOBCAT_ENGSEC, + "JOBCAT_MEDSCI" = JOBCAT_MEDSCI, + "JOBCAT_SUPPORT" = JOBCAT_SUPPORT, + "JOBCAT_KARMA" = JOBCAT_KARMA, +)) diff --git a/code/_globalvars/bitfields/mecha.dm b/code/_globalvars/bitfields/mecha.dm new file mode 100644 index 000000000000..ae38c84f53d1 --- /dev/null +++ b/code/_globalvars/bitfields/mecha.dm @@ -0,0 +1,14 @@ +DEFINE_BITFIELD(mech_type, list( + "MECH_TYPE_NONE" = MECH_TYPE_NONE, + "MECH_TYPE_RIPLEY" = MECH_TYPE_RIPLEY, + "MECH_TYPE_CLARKE" = MECH_TYPE_CLARKE, + "MECH_TYPE_ODYSSEUS" = MECH_TYPE_ODYSSEUS, + "MECH_TYPE_GYGAX" = MECH_TYPE_GYGAX, + "MECH_TYPE_DURAND" = MECH_TYPE_DURAND, + "MECH_TYPE_PHAZON" = MECH_TYPE_PHAZON, + "MECH_TYPE_HONKER" = MECH_TYPE_HONKER, + "MECH_TYPE_RETICENCE" = MECH_TYPE_RETICENCE, + "MECH_TYPE_LOCKER" = MECH_TYPE_LOCKER, + "MECH_TYPE_MARAUDER" = MECH_TYPE_MARAUDER, + "MECH_TYPE_SIDEWINTER" = MECH_TYPE_SIDEWINTER, +)) diff --git a/code/_globalvars/bitfields/mobs.dm b/code/_globalvars/bitfields/mobs.dm new file mode 100644 index 000000000000..f59ac9dca7a7 --- /dev/null +++ b/code/_globalvars/bitfields/mobs.dm @@ -0,0 +1,67 @@ +DEFINE_BITFIELD(appearance_changes, list( + "APPEARANCE_UPDATE_DNA" = APPEARANCE_UPDATE_DNA, + "APPEARANCE_RACE" = APPEARANCE_RACE, + "APPEARANCE_GENDER" = APPEARANCE_GENDER, + "APPEARANCE_SKIN" = APPEARANCE_SKIN, + "APPEARANCE_HAIR" = APPEARANCE_HAIR, + "APPEARANCE_HAIR_COLOR" = APPEARANCE_HAIR_COLOR, + "APPEARANCE_SECONDARY_HAIR_COLOR" = APPEARANCE_SECONDARY_HAIR_COLOR, + "APPEARANCE_FACIAL_HAIR" = APPEARANCE_FACIAL_HAIR, + "APPEARANCE_FACIAL_HAIR_COLOR" = APPEARANCE_FACIAL_HAIR_COLOR, + "APPEARANCE_SECONDARY_FACIAL_HAIR_COLOR" = APPEARANCE_SECONDARY_FACIAL_HAIR_COLOR, + "APPEARANCE_EYE_COLOR" = APPEARANCE_EYE_COLOR, + "APPEARANCE_HEAD_ACCESSORY" = APPEARANCE_HEAD_ACCESSORY, + "APPEARANCE_MARKINGS" = APPEARANCE_MARKINGS, + "APPEARANCE_BODY_ACCESSORY" = APPEARANCE_BODY_ACCESSORY, + "APPEARANCE_ALT_HEAD" = APPEARANCE_ALT_HEAD, +)) +DEFINE_BITFIELD(bodyflags, list( + "HAS_HEAD_ACCESSORY" = HAS_HEAD_ACCESSORY, + "HAS_TAIL" = HAS_SKIN_TONE, + "TAIL_OVERLAPPED" = APPEARANCE_GENDER, + "HAS_SKIN_TONE" = HAS_SKIN_TONE, + "HAS_ICON_SKIN_TONE" = HAS_ICON_SKIN_TONE, + "HAS_SKIN_COLOR" = HAS_SKIN_COLOR, + "HAS_HEAD_MARKINGS" = HAS_HEAD_MARKINGS, + "HAS_BODY_MARKINGS" = HAS_BODY_MARKINGS, + "HAS_TAIL_MARKINGS" = HAS_TAIL_MARKINGS, + "TAIL_WAGGING" = TAIL_WAGGING, + "NO_EYES" = NO_EYES, + "HAS_ALT_HEADS" = HAS_ALT_HEADS, + "HAS_BODYACC_COLOR" = HAS_BODYACC_COLOR, + "BALD" = BALD, + "ALL_RPARTS" = ALL_RPARTS, +)) + +DEFINE_BITFIELD(mobility_flags, list( + "MOBILITY_MOVE" = MOBILITY_MOVE, + "MOBILITY_STAND" = MOBILITY_STAND, + "MOBILITY_PICKUP" = MOBILITY_PICKUP, + "MOBILITY_USE" = MOBILITY_USE, + "MOBILITY_UI" = MOBILITY_UI, + "MOBILITY_STORAGE" = MOBILITY_STORAGE, + "MOBILITY_PULL" = MOBILITY_PULL, + "MOBILITY_REST" = MOBILITY_REST, + "MOBILITY_LIEDOWN" = MOBILITY_LIEDOWN, +)) + +DEFINE_BITFIELD(status_flags, list( + "CANSTUN" = CANSTUN, + "CANWEAKEN" = CANWEAKEN, + "CANSTAMCRIT" = CANSTAMCRIT, + "CANKNOCKDOWN" = CANKNOCKDOWN, + "CANPARALYSE" = CANPARALYSE, + "CANPUSH" = CANPUSH, + "PASSEMOTES" = PASSEMOTES, + "IGNORESLOWDOWN" = IGNORESLOWDOWN, + "IGNORE_SPEED_CHANGES" = IGNORE_SPEED_CHANGES, +)) + +DEFINE_BITFIELD(bot_type, list( + "SEC_BOT" = SEC_BOT, + "MULE_BOT" = MULE_BOT, + "FLOOR_BOT" = FLOOR_BOT, + "CLEAN_BOT" = CLEAN_BOT, + "MED_BOT" = MED_BOT, + "HONK_BOT" = HONK_BOT, +)) diff --git a/code/_globalvars/bitfields/objs.dm b/code/_globalvars/bitfields/objs.dm new file mode 100644 index 000000000000..14358c32514f --- /dev/null +++ b/code/_globalvars/bitfields/objs.dm @@ -0,0 +1,32 @@ +DEFINE_BITFIELD(resistance_flags, list( + "LAVA_PROOF" = LAVA_PROOF, + "FIRE_PROOF" = FIRE_PROOF, + "FLAMMABLE" = FLAMMABLE, + "ON_FIRE" = ON_FIRE, + "UNACIDABLE" = UNACIDABLE, + "ACID_PROOF" = ACID_PROOF, + "INDESTRUCTIBLE" = INDESTRUCTIBLE, + "FREEZE_PROOF" = FREEZE_PROOF, + "NO_MALF_EFFECT" = NO_MALF_EFFECT, + "NO_MOUSTACHING" = NO_MOUSTACHING, +)) + +DEFINE_BITFIELD(immunity_resistance_flags, list( + "LAVA_PROOF" = LAVA_PROOF, + "FIRE_PROOF" = FIRE_PROOF, + "FLAMMABLE" = FLAMMABLE, + "ON_FIRE" = ON_FIRE, + "UNACIDABLE" = UNACIDABLE, + "ACID_PROOF" = ACID_PROOF, + "INDESTRUCTIBLE" = INDESTRUCTIBLE, + "FREEZE_PROOF" = FREEZE_PROOF, + "NO_MALF_EFFECT" = NO_MALF_EFFECT, + "NO_MOUSTACHING" = NO_MOUSTACHING, +)) + +DEFINE_BITFIELD(initialize_dirs, list( + "DISP_DIR_LEFT" = DISP_DIR_LEFT, + "DISP_DIR_RIGHT" = DISP_DIR_RIGHT, + "DISP_DIR_FLIP" = DISP_DIR_FLIP, + "DISP_DIR_NONE" = DISP_DIR_NONE, +)) diff --git a/code/_globalvars/bitfields/sight.dm b/code/_globalvars/bitfields/sight.dm new file mode 100644 index 000000000000..e3d3b8272dfc --- /dev/null +++ b/code/_globalvars/bitfields/sight.dm @@ -0,0 +1,31 @@ + +DEFINE_BITFIELD(examine_extensions, list( + "EXAMINE_HUD_NONE" = EXAMINE_HUD_NONE, + "EXAMINE_HUD_SECURITY_READ" = EXAMINE_HUD_SECURITY_READ, + "EXAMINE_HUD_SECURITY_WRITE" = EXAMINE_HUD_SECURITY_WRITE, + "EXAMINE_HUD_MEDICAL" = EXAMINE_HUD_MEDICAL, + "EXAMINE_HUD_SKILLS" = EXAMINE_HUD_SKILLS, + "EXAMINE_HUD_BOTANY" = EXAMINE_HUD_BOTANY, + "EXAMINE_HUD_SCIENCE" = EXAMINE_HUD_SCIENCE, +)) + +DEFINE_BITFIELD(sight, list( + "BLIND" = BLIND, + "SEE_MOBS" = SEE_MOBS, + "SEE_OBJS" = SEE_OBJS, + "SEE_TURFS" = SEE_TURFS, + "SEE_SELF" = SEE_SELF, + "SEE_INFRA" = SEE_INFRA, + "SEE_PIXELS" = SEE_PIXELS, + "SEE_THRU" = SEE_THRU, + "SEE_BLACKNESS" = SEE_BLACKNESS, +)) +DEFINE_BITFIELD(visor_vars_to_toggle, list( + "VISOR_FLASHPROTECT" = VISOR_FLASHPROTECT, + "VISOR_TINT" = VISOR_TINT, + "VISOR_VISIONFLAGS" = VISOR_VISIONFLAGS, + "VISOR_DARKNESSVIEW" = VISOR_DARKNESSVIEW, + "VISOR_INVISVIEW" = VISOR_INVISVIEW, + "VISOR_HUDTYPE" = VISOR_HUDTYPE, + "VISOR_EXAM_EXTENTIONS" = VISOR_EXAM_EXTENTIONS, +)) diff --git a/code/_globalvars/game_modes.dm b/code/_globalvars/game_modes.dm index ee0ce7e0a3ed..2cb910595bdc 100644 --- a/code/_globalvars/game_modes.dm +++ b/code/_globalvars/game_modes.dm @@ -28,3 +28,4 @@ GLOBAL_LIST(antag_paradise_weights) /// Weights for all special antags in ANTAG-PARADISE gamemode. GLOBAL_LIST(antag_paradise_special_weights) +GLOBAL_VAR_INIT(gamma_ship_location, 1) // 0 = station , 1 = space diff --git a/code/_globalvars/genetics.dm b/code/_globalvars/genetics.dm index d3d4a4aaad6b..b4099db0e82b 100644 --- a/code/_globalvars/genetics.dm +++ b/code/_globalvars/genetics.dm @@ -46,6 +46,7 @@ GLOBAL_VAR_INIT(weakblock, 0) GLOBAL_VAR_INIT(hornsblock, 0) GLOBAL_VAR_INIT(comicblock, 0) GLOBAL_VAR_INIT(paraplegiablock, 0) +GLOBAL_VAR_INIT(aphasiablock, 0) // Powers GLOBAL_VAR_INIT(soberblock, 0) @@ -74,5 +75,4 @@ GLOBAL_LIST_EMPTY(global_mutations) GLOBAL_VAR_INIT(fakeblock1, 0) GLOBAL_VAR_INIT(fakeblock2, 0) GLOBAL_VAR_INIT(fakeblock3, 0) -GLOBAL_VAR_INIT(fakeblock4, 0) diff --git a/code/_globalvars/lists/holomaps.dm b/code/_globalvars/lists/holomaps.dm new file mode 100644 index 000000000000..80f2cad3b777 --- /dev/null +++ b/code/_globalvars/lists/holomaps.dm @@ -0,0 +1,21 @@ +/// A list of fire alarms on the station, separated by Z. Used cause there are a lot of fire alarms on any given station Z. +GLOBAL_LIST_EMPTY(station_fire_alarms) + +GLOBAL_LIST_EMPTY(holomap_default_legend) + +/// Used in generating area preview icons. +GLOBAL_LIST_INIT(holomap_color_to_name, list( + HOLOMAP_AREACOLOR_COMMAND = "Командование", + HOLOMAP_AREACOLOR_SECURITY = "Безопасность", + HOLOMAP_AREACOLOR_MEDICAL = "Медицина", + HOLOMAP_AREACOLOR_SCIENCE = "Исследование", + HOLOMAP_AREACOLOR_ENGINEERING = "Инженерия", + HOLOMAP_AREACOLOR_CARGO = "Снабжение", + HOLOMAP_AREACOLOR_HALLWAYS = "Коридоры", + HOLOMAP_AREACOLOR_MAINTENANCE = "Тех. тоннели", + HOLOMAP_AREACOLOR_ARRIVALS = "Прибытие", + HOLOMAP_AREACOLOR_ESCAPE = "Отбытие", + HOLOMAP_AREACOLOR_DORMS = "Дормиторий", + HOLOMAP_AREACOLOR_SERVICE = "Сервис", + HOLOMAP_AREACOLOR_HANGAR = "Ангар", +)) diff --git a/code/_globalvars/lists/misc.dm b/code/_globalvars/lists/misc.dm index e618c431cec7..a84156e30f25 100644 --- a/code/_globalvars/lists/misc.dm +++ b/code/_globalvars/lists/misc.dm @@ -49,6 +49,10 @@ GLOBAL_LIST_INIT(restricted_camera_networks, list( GLOBAL_LIST_INIT(ruin_landmarks, list()) +/// List of all the maps that have been cached for /proc/load_map +GLOBAL_LIST_EMPTY(cached_maps) + + GLOBAL_LIST_INIT(round_end_sounds, list( 'sound/AI/newroundsexy.ogg' = 2.3 SECONDS, 'sound/misc/apcdestroyed.ogg' = 3 SECONDS, @@ -62,11 +66,12 @@ GLOBAL_LIST_INIT(cooking_recipe_types, list( RECIPE_MICROWAVE = /datum/recipe/microwave, RECIPE_OVEN = /datum/recipe/oven, RECIPE_GRILL = /datum/recipe/grill, - RECIPE_CANDY = /datum/recipe/candy + RECIPE_CANDY = /datum/recipe/candy, + RECIPE_TRIBAL_OVEN = /datum/recipe/tribal_oven )) -GLOBAL_LIST_INIT(cooking_recipes, list(RECIPE_MICROWAVE = list(), RECIPE_OVEN = list(), RECIPE_GRILL = list(), RECIPE_CANDY = list())) -GLOBAL_LIST_INIT(cooking_ingredients, list(RECIPE_MICROWAVE = list(), RECIPE_OVEN = list(), RECIPE_GRILL = list(), RECIPE_CANDY = list())) -GLOBAL_LIST_INIT(cooking_reagents, list(RECIPE_MICROWAVE = list(), RECIPE_OVEN = list(), RECIPE_GRILL = list(), RECIPE_CANDY = list())) +GLOBAL_LIST_INIT(cooking_recipes, list(RECIPE_MICROWAVE = list(), RECIPE_OVEN = list(), RECIPE_GRILL = list(), RECIPE_CANDY = list(), RECIPE_TRIBAL_OVEN = list())) +GLOBAL_LIST_INIT(cooking_ingredients, list(RECIPE_MICROWAVE = list(), RECIPE_OVEN = list(), RECIPE_GRILL = list(), RECIPE_CANDY = list(), RECIPE_TRIBAL_OVEN = list())) +GLOBAL_LIST_INIT(cooking_reagents, list(RECIPE_MICROWAVE = list(), RECIPE_OVEN = list(), RECIPE_GRILL = list(), RECIPE_CANDY = list(), RECIPE_TRIBAL_OVEN = list())) #define EGG_LAYING_MESSAGES list("lays an egg.", "squats down and croons.", "begins making a huge racket.", "begins clucking raucously.") diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index 86139603b368..fa5261126a9a 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -6,7 +6,8 @@ GLOBAL_LIST_EMPTY(all_superheroes) GLOBAL_LIST_EMPTY(clients) //list of all clients GLOBAL_LIST_EMPTY(admins) //list of all clients whom are admins -GLOBAL_LIST_EMPTY(deadmins) //list of all clients who have used the de-admin verb. +GLOBAL_LIST_EMPTY(de_admins) //list of all admins who have used the de-admin verb. +GLOBAL_LIST_EMPTY(de_mentors) //list of all mentors who have used the de-admin verb. GLOBAL_LIST_EMPTY(directory) //list of all ckeys with associated client GLOBAL_LIST_EMPTY(stealthminID) //reference list with IDs that store ckeys, for stealthmins @@ -24,8 +25,16 @@ GLOBAL_LIST_EMPTY(human_list) //all instances of /mob/living/carbon/human and GLOBAL_LIST_EMPTY(spirits) //List of all the spirits, including Masks GLOBAL_LIST_EMPTY(alive_mob_list) //List of all alive mobs, including clientless. Excludes /mob/new_player GLOBAL_LIST_EMPTY(dead_mob_list) //List of all dead mobs, including clientless. Excludes /mob/new_player +/// All alive mobs with clients. +GLOBAL_LIST_EMPTY(alive_player_list) +/// All dead mobs with clients. Does not include observers. +GLOBAL_LIST_EMPTY(dead_player_list) +/// All observers with clients that joined as observers. +GLOBAL_LIST_EMPTY(current_observers_list) GLOBAL_LIST_EMPTY(respawnable_list) //List of all mobs, dead or in mindless creatures that still be respawned. GLOBAL_LIST_EMPTY(non_respawnable_keys) //List of ckeys that are excluded from respawning for remainder of round. +/// All living mobs which can hear blob telepathy +GLOBAL_LIST_EMPTY(blob_telepathy_mobs) /// One for each AI_* status define, List of all simple animals, including clientless GLOBAL_LIST_INIT(simple_animals, list(list(), list(), list(), list())) GLOBAL_LIST_EMPTY(bots_list) //List of all bots(beepsky, medibots,etc) @@ -49,3 +58,8 @@ GLOBAL_LIST_EMPTY(mining_vendor_items) GLOBAL_LIST_EMPTY(mob_config_movespeed_type_lookup) +GLOBAL_LIST_INIT(dangerous_turfs, typecacheof(list( + /turf/simulated/floor/lava, + /turf/simulated/floor/chasm, + /turf/space, + /turf/space/openspace))) diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 3d120ec892e8..5bd64461b0f8 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -18,12 +18,11 @@ GLOBAL_LIST_INIT(celltimers_list, list()) // list of all cell timers GLOBAL_LIST_INIT(cell_logs, list()) GLOBAL_LIST_INIT(navigation_computers, list()) -GLOBAL_LIST_INIT(all_areas, list()) -GLOBAL_LIST_INIT(all_unique_areas, list()) // List of all unique areas. AKA areas with there_can_be_many = FALSE GLOBAL_LIST_INIT(machines, list()) GLOBAL_LIST_INIT(syndiepads, list()) //list of all syndiepads GLOBAL_LIST_INIT(syndie_cargo_consoles, list()) //list of all syndie cargo consoles GLOBAL_LIST_INIT(rcd_list, list()) //list of Rapid Construction Devices. +GLOBAL_LIST_EMPTY(supplypod_loading_bays) GLOBAL_LIST_INIT(apcs, list()) GLOBAL_LIST_INIT(air_alarms, list()) @@ -49,7 +48,7 @@ GLOBAL_LIST_INIT(poi_list, list()) //list of points of interest for observe/ GLOBAL_LIST_INIT(active_jammers, list()) // List of active radio jammers GLOBAL_LIST_EMPTY(ladders) GLOBAL_LIST_EMPTY(mirrors) //list of all mirrors and mirror shields. -GLOBAL_LIST_EMPTY(anvils) //for use in founding world anvil +GLOBAL_LIST_EMPTY(lavaland_points_of_interest) //for use in founding world anvil and other stuff GLOBAL_LIST_INIT(active_diseases, list()) //List of Active disease in all mobs; purely for quick referencing. @@ -66,3 +65,4 @@ GLOBAL_LIST_EMPTY(wire_color_directory) // This is an associative list with the GLOBAL_LIST_EMPTY(wire_name_directory) GLOBAL_LIST_EMPTY(visual_portals) +GLOBAL_LIST_EMPTY(pod_styles_by_type) diff --git a/code/_globalvars/mapping.dm b/code/_globalvars/mapping.dm index 243c072bfde4..b85cce5badf1 100644 --- a/code/_globalvars/mapping.dm +++ b/code/_globalvars/mapping.dm @@ -1,8 +1,3 @@ -#define Z_NORTH 1 -#define Z_EAST 2 -#define Z_SOUTH 3 -#define Z_WEST 4 - GLOBAL_LIST_INIT(cardinal, list(NORTH, SOUTH, EAST, WEST)) GLOBAL_LIST_INIT(diagonals, list(NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)) GLOBAL_LIST_INIT(alldirs, list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)) @@ -28,6 +23,15 @@ GLOBAL_LIST(global_map) // This is the array of zlevels | list(list(1,5),list(4, //3 - AI satellite //5 - empty space +/// Just a list of all the area objects in the game +/// Note, areas can have duplicate types +GLOBAL_LIST_EMPTY(areas) +/// Used by jump-to-area etc. Updated by area/updateName() +/// If this is null, it needs to be recalculated. Use get_sorted_areas() as a getter please +GLOBAL_LIST_EMPTY(sortedAreas) +/// An association from typepath to area instance. Only includes areas with `unique` set. +GLOBAL_LIST_EMPTY_TYPED(areas_by_type, /area) + GLOBAL_LIST_EMPTY(wizardstart) GLOBAL_LIST_EMPTY(newplayer_start) GLOBAL_LIST_EMPTY(latejoin) diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index 2c72c497585b..789369bd5e45 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -61,5 +61,18 @@ GLOBAL_VAR(genname) //Nanotrasen officer name for fax send via fax panel, random GLOBAL_VAR_INIT(pacifism_after_gt, FALSE) +GLOBAL_VAR_INIT(full_lockdown, FALSE) + GLOBAL_VAR_INIT(communications_blackout, FALSE) +///All currently running polls held as datums +GLOBAL_LIST_EMPTY(polls) +GLOBAL_PROTECT(polls) +///Active polls +GLOBAL_LIST_EMPTY(active_polls) +GLOBAL_PROTECT(active_polls) + + +///All poll option datums of running polls +GLOBAL_LIST_EMPTY(poll_options) +GLOBAL_PROTECT(poll_options) diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index 722993ef1852..163c57f10f0f 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -27,20 +27,26 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_NO_IMMOBILIZE" = TRAIT_NO_IMMOBILIZE, "TRAIT_NO_TELEPORT" = TRAIT_NO_TELEPORT, "TRAIT_RADSTORM_IMMUNE" = TRAIT_RADSTORM_IMMUNE, + "TRAIT_SECLUDED_LOCATION" = TRAIT_SECLUDED_LOCATION, "TRAIT_SILENT_FOOTSTEPS" = TRAIT_SILENT_FOOTSTEPS, "TRAIT_SOLARFLARE_IMMUNE" = TRAIT_SOLARFLARE_IMMUNE, "TRAIT_SNOWSTORM_IMMUNE" = TRAIT_SNOWSTORM_IMMUNE, "TRAIT_WEATHER_IMMUNE" = TRAIT_WEATHER_IMMUNE, ), /mob = list( + "TRAIT_ACID_PROTECTED" = TRAIT_ACID_PROTECTED, "TRAIT_AI_UNTRACKABLE" = TRAIT_AI_UNTRACKABLE, "TRAIT_BADASS" = TRAIT_BADASS, + "TRAIT_BEING_OFFERED" = TRAIT_BEING_OFFERED, "TRAIT_BLIND" = TRAIT_BLIND, + "TRAIT_BLOB_ALLY" = TRAIT_BLOB_ALLY, "TRAIT_BLOODCRAWL" = TRAIT_BLOODCRAWL, "TRAIT_BLOODCRAWL_EAT" = TRAIT_BLOODCRAWL_EAT, "TRAIT_CAN_STRIP" = TRAIT_CAN_STRIP, "TRAIT_CANT_RIDE" = TRAIT_CANT_RIDE, + "TRAIT_CHASM_DESTROYED" = TRAIT_CHASM_DESTROYED, "TRAIT_CHUNKYFINGERS" = TRAIT_CHUNKYFINGERS, + "TRAIT_NO_GUNS" = TRAIT_NO_GUNS, "TRAIT_COLORBLIND" = TRAIT_COLORBLIND, "TRAIT_COMIC" = TRAIT_COMIC, "TRAIT_CLUMSY" = TRAIT_CLUMSY, @@ -86,6 +92,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_NEARSIGHTED" = TRAIT_NEARSIGHTED, "TRAIT_NEGATES_GRAVITY" = TRAIT_NEGATES_GRAVITY, "TRAIT_NO_BIOCHIPS" = TRAIT_NO_BIOCHIPS, + "TRAIT_NO_DEATH" = TRAIT_NO_DEATH, "TRAIT_NO_BLOOD" = TRAIT_NO_BLOOD, "TRAIT_NO_BLOOD_RESTORE" = TRAIT_NO_BLOOD_RESTORE, "TRAIT_NO_BREATH" = TRAIT_NO_BREATH, @@ -109,7 +116,9 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_NO_SLIP_SLIDE" = TRAIT_NO_SLIP_SLIDE, "TRAIT_NO_SLIP_WATER" = TRAIT_NO_SLIP_WATER, "TRAIT_NO_SPECIES_EXAMINE" = TRAIT_NO_SPECIES_EXAMINE, + "TRAIT_NO_SPELLS" = TRAIT_NO_SPELLS, "TRAIT_NO_TRANSFORM" = TRAIT_NO_TRANSFORM, + "TRAIT_NO_VOCAL_CORDS" = TRAIT_NO_VOCAL_CORDS, "TRAIT_OBESITY" = TRAIT_OBESITY, "TRAIT_OPEN_MIND" = TRAIT_OPEN_MIND, "TRAIT_PACIFISM" = TRAIT_PACIFISM, @@ -141,6 +150,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_VENTCRAWLER_NUDE" = TRAIT_VENTCRAWLER_NUDE, "TRAIT_VIRUSIMMUNE" = TRAIT_VIRUSIMMUNE, "TRAIT_WATERBREATH" = TRAIT_WATERBREATH, + "TRAIT_WEAK_PULLING" = TRAIT_WEAK_PULLING, "TRAIT_WINGDINGS" = TRAIT_WINGDINGS, "TRAIT_XENO_HOST" = TRAIT_XENO_HOST, "TRAIT_XRAY" = TRAIT_XRAY, diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index b4e0a05b6f65..b4838f4f9542 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -75,7 +75,7 @@ ShiftClickOn(A) return if(modifiers["alt"]) // alt and alt-gr (rightalt) - AltClickOn(A) + ai_base_click_alt(A) return if(modifiers["ctrl"]) CtrlClickOn(A) @@ -126,8 +126,6 @@ A.AIShiftClick(src) /mob/living/silicon/ai/CtrlClickOn(atom/A) A.AICtrlClick(src) -/mob/living/silicon/ai/AltClickOn(atom/A) - A.AIAltClick(src) /mob/living/silicon/ai/MiddleClickOn(atom/A) A.AIMiddleClick(src) /mob/living/silicon/ai/MiddleShiftClickOn(atom/A) @@ -151,8 +149,26 @@ /atom/proc/AICtrlClick(mob/living/silicon/user) return -/atom/proc/AIAltClick(atom/A) - AltClick(A) +/// Reimplementation of base_click_alt for AI +/mob/living/silicon/ai/proc/ai_base_click_alt(atom/target) + // If for some reason we can't alt click + if(SEND_SIGNAL(src, COMSIG_MOB_ALTCLICKON, target) & COMSIG_MOB_CANCEL_CLICKON) + return + + if(!isturf(target) && can_perform_action(target, (target.interaction_flags_click | SILENT_ADJACENCY))) + // Signal intercept + if(SEND_SIGNAL(target, COMSIG_CLICK_ALT, src) & CLICK_ACTION_ANY) + return + + // AI alt click interaction succeeds + if(target.ai_click_alt(src) & CLICK_ACTION_ANY) + return + + client.loot_panel.open(get_turf(target)) + +/atom/proc/ai_click_alt(mob/living/silicon/ai/user) + return + /atom/proc/AIMiddleClick(mob/living/user) return @@ -179,7 +195,7 @@ enabled = !enabled updateTurrets() -/obj/machinery/turretid/AIAltClick() //toggles lethal on turrets +/obj/machinery/turretid/ai_click_alt(mob/living/silicon/ai/user) //toggles lethal on turrets if(lethal_is_configurable) lethal = !lethal updateTurrets() @@ -201,7 +217,7 @@ return toggle_bolt(user) -/obj/machinery/door/airlock/AIAltClick(mob/living/silicon/user) // Electrifies doors. +/obj/machinery/door/airlock/ai_click_alt(mob/living/silicon/ai/user) // Electrifies doors. if(!ai_control_check(user)) return if(wires.is_cut(WIRE_ELECTRIFY)) @@ -222,5 +238,5 @@ /obj/machinery/ai_slipper/AICtrlClick(mob/living/silicon/ai/user) //Turns liquid dispenser on or off ToggleOn() -/obj/machinery/ai_slipper/AIAltClick() //Dispenses liquid if on +/obj/machinery/ai_slipper/ai_click_alt(mob/living/silicon/ai/user) //Dispenses liquid if on Activate() diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 05573f539c59..f11fa46fa341 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -44,7 +44,7 @@ Note that this proc can be overridden, and is in the case of screen objects. */ /atom/Click(location,control,params) - usr.ClickOn(src, params) + usr.ClickOn(src, params, location) /atom/DblClick(location,control,params) usr.DblClickOn(src,params) @@ -210,7 +210,7 @@ return FALSE // Default behavior: ignore double clicks, consider them normal clicks instead -/mob/proc/DblClickOn(var/atom/A, var/params) +/mob/proc/DblClickOn(atom/A, params) return /* @@ -223,10 +223,14 @@ proximity_flag is not currently passed to attack_hand, and is instead used in human click code to allow glove touches only at melee range. */ -/mob/proc/UnarmedAttack(atom/A, proximity_flag) - if(ismob(A)) +/mob/proc/UnarmedAttack(atom/atom, proximity_flag) + if(ismob(atom)) changeNext_move(CLICK_CD_MELEE) + return OnUnarmedAttack(atom, proximity_flag) + +/mob/proc/OnUnarmedAttack(atom/atom, proximity_flag) + return /* Ranged unarmed attack: @@ -239,20 +243,23 @@ /mob/proc/RangedAttack(atom/A, params) if(SEND_SIGNAL(src, COMSIG_MOB_ATTACK_RANGED, A, params) & COMPONENT_CANCEL_ATTACK_CHAIN) return TRUE + + if(SEND_SIGNAL(A, COMSIG_MOB_ATTACKED_RANGED, src, params) & COMPONENT_CANCEL_ATTACK_CHAIN) + return TRUE /* Restrained ClickOn Used when you are handcuffed and click things. Not currently used by anything but could easily be. */ -/mob/proc/RestrainedClickOn(var/atom/A) +/mob/proc/RestrainedClickOn(atom/A) return /* Middle click Only used for swapping hands */ -/mob/proc/MiddleClickOn(var/atom/A) +/mob/proc/MiddleClickOn(atom/A) pointed(A) return @@ -306,10 +313,10 @@ For most mobs, examine. This is overridden in ai.dm */ -/mob/proc/ShiftClickOn(var/atom/A) +/mob/proc/ShiftClickOn(atom/A) A.ShiftClick(src) return -/atom/proc/ShiftClick(var/mob/user) +/atom/proc/ShiftClick(mob/user) if(user.client && get_turf(user.client.eye) == get_turf(user)) user.examinate(src) return @@ -318,7 +325,7 @@ Ctrl click For most objects, pull */ -/mob/proc/CtrlClickOn(var/atom/A) +/mob/proc/CtrlClickOn(atom/A) A.CtrlClick(src) return @@ -342,53 +349,28 @@ return ..() - -/* - Alt click - Unused except for AI -*/ -/mob/proc/AltClickOn(var/atom/A) - A.AltClick(src) - return - -// See click_override.dm -/mob/living/AltClickOn(atom/A) - if(middleClickOverride) - middleClickOverride.onClick(A, src) - else - ..() - -/// Use this instead of [/mob/proc/AltClickOn] where you only want turf content listing without additional atom alt-click interaction -/atom/proc/AltClickNoInteract(mob/user, atom/A) - var/turf/T = get_turf(A) - if(T && user.TurfAdjacent(T)) - user.set_listed_turf(T) - -/atom/proc/AltClick(mob/user) - var/turf/T = get_turf(src) - if(T && (isturf(loc) || isturf(src)) && user.TurfAdjacent(T) && !HAS_TRAIT(user, TRAIT_MOVE_VENTCRAWLING)) - user.set_listed_turf(T) +// Alt Click is in `click_alt.dm` now! I stole it -/mob/proc/TurfAdjacent(var/turf/T) +/mob/proc/TurfAdjacent(turf/T) return T.Adjacent(src) /* Control+Shift/Alt+Shift click Unused except for AI */ -/mob/proc/CtrlShiftClickOn(var/atom/A) +/mob/proc/CtrlShiftClickOn(atom/A) A.CtrlShiftClick(src) return -/atom/proc/CtrlShiftClick(var/mob/user) +/atom/proc/CtrlShiftClick(mob/user) return -/mob/proc/AltShiftClickOn(var/atom/A) +/mob/proc/AltShiftClickOn(atom/A) A.AltShiftClick(src) return -/atom/proc/AltShiftClick(var/mob/user) +/atom/proc/AltShiftClick(mob/user) return @@ -406,7 +388,7 @@ var/turf/T = get_turf(src) var/turf/U = get_turf(A) - var/obj/item/projectile/beam/LE = new /obj/item/projectile/beam(loc) + var/obj/projectile/beam/LE = new /obj/projectile/beam(loc) LE.icon = 'icons/effects/genetics.dmi' LE.icon_state = "eyelasers" playsound(usr.loc, 'sound/weapons/taser2.ogg', 75, 1) diff --git a/code/_onclick/click_alt.dm b/code/_onclick/click_alt.dm new file mode 100644 index 000000000000..cb3e2d0b326e --- /dev/null +++ b/code/_onclick/click_alt.dm @@ -0,0 +1,88 @@ +///Main proc for primary alt click +/mob/proc/AltClickOn(atom/target) + base_click_alt(target) + +/** + * ### Base proc for alt click interaction. Returns if the click was intercepted & handled + * + * If you wish to add custom `click_alt` behavior for a single type, use that proc. + */ +/mob/proc/base_click_alt(atom/target) + SHOULD_NOT_OVERRIDE(TRUE) + + // Check if they've hooked in to prevent src from alt clicking anything + if(SEND_SIGNAL(src, COMSIG_MOB_ALTCLICKON, target) & COMSIG_MOB_CANCEL_CLICKON) + return TRUE + + // Ghosties just see loot + if(isobserver(src)) + client.loot_panel.open(get_turf(target)) + return + + // If it has a signal handler that returns a click action, done. + if(SEND_SIGNAL(target, COMSIG_CLICK_ALT, src) & CLICK_ACTION_ANY) + return TRUE + + // If it has a custom click_alt that returns success/block, done. + if(can_perform_action(target, (target.interaction_flags_click | SILENT_ADJACENCY))) + return target.click_alt(src) & CLICK_ACTION_ANY + + // No alt clicking to view turf from beneath + if(HAS_TRAIT(src, TRAIT_MOVE_VENTCRAWLING)) + return + + client.loot_panel.open(get_turf(target)) + + return FALSE + +/mob/living/base_click_alt(atom/target) + SHOULD_NOT_OVERRIDE(TRUE) + + if(..()) + return + if(!CAN_I_SEE(target) || (!has_vision() && !IN_GIVEN_RANGE(src, target, 1))) + return + + // No alt clicking to view turf from beneath + if(HAS_TRAIT(src, TRAIT_MOVE_VENTCRAWLING)) + return + + /// No loot panel if it's on our person + if(isobj(target) && (target in get_all_gear())) + to_chat(src, span_warning("You can't search for this item, it's already in your inventory! Take it off first.")) + return + + client.loot_panel.open(get_turf(target)) + return TRUE + + +/** + * ## Custom alt click interaction + * Override this to change default alt click behavior. Return `CLICK_ACTION_SUCCESS`, `CLICK_ACTION_BLOCKING` or `NONE`. + * + * ### Guard clauses + * Consider adding `interaction_flags_click` before adding unique guard clauses. + * + * ### Return flags + * Forgetting your return will cause the default alt click behavior to occur thereafter. + * + * The difference between NONE and BLOCKING can get hazy, but I like to keep NONE limited to guard clauses and "never" cases. + * + * A good usage for BLOCKING over NONE is when it's situational for the item and there's some feedback indicating this. + * + * ### Examples: + * User is a ghost, alt clicks on item with special disk eject: NONE + * + * Machine broken, no feedback: NONE + * + * Alt click a pipe to max output but its already max: BLOCKING + * + * Alt click a gun that normally works, but is out of ammo: BLOCKING + * + * User unauthorized, machine beeps: BLOCKING + * + * @param {mob} user - The person doing the alt clicking. + */ +/atom/proc/click_alt(mob/user) + SHOULD_CALL_PARENT(FALSE) + return NONE diff --git a/code/_onclick/cogscarab.dm b/code/_onclick/cogscarab.dm index c0dce81fd3d5..397a9aac6bee 100644 --- a/code/_onclick/cogscarab.dm +++ b/code/_onclick/cogscarab.dm @@ -93,7 +93,7 @@ return /mob/living/silicon/robot/cogscarab/AltClickOn(atom/A) - A.AltClick(src) + base_click_alt(A) return /mob/living/silicon/robot/cogscarab/CtrlShiftClickOn(atom/A) diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index 15b1ca626de0..b92c40a68d38 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -37,7 +37,7 @@ ShiftClickOn(A) return if(modifiers["alt"]) // alt and alt-gr (rightalt) - AltClickOn(A) + A.borg_click_alt(src) return if(modifiers["ctrl"]) CtrlClickOn(A) @@ -117,8 +117,6 @@ A.BorgShiftClick(src) /mob/living/silicon/robot/CtrlClickOn(atom/A) A.BorgCtrlClick(src) -/mob/living/silicon/robot/AltClickOn(atom/A) - A.BorgAltClick(src) /mob/living/silicon/robot/CtrlShiftClickOn(atom/A) A.BorgCtrlShiftClick(src) /mob/living/silicon/robot/AltShiftClickOn(atom/A) @@ -133,8 +131,8 @@ /atom/proc/BorgCtrlClick(mob/living/silicon/robot/user) //forward to human click if not overriden CtrlClick(user) -/atom/proc/BorgAltClick(mob/living/silicon/robot/user) - AltClick(user) +/atom/proc/borg_click_alt(mob/living/silicon/robot/user) + user.base_click_alt(src) return /atom/proc/BorgCtrlShiftClick(mob/user) // Examines @@ -154,8 +152,8 @@ /obj/machinery/door/airlock/BorgCtrlClick(mob/living/silicon/robot/user) // Bolts doors. Forwards to AI code. AICtrlClick(user) -/obj/machinery/door/airlock/BorgAltClick(mob/living/silicon/robot/user) // Eletrifies doors. Forwards to AI code. - AIAltClick(user) +/obj/machinery/door/airlock/borg_click_alt(mob/living/silicon/robot/user) // Eletrifies doors. Forwards to AI code. + ai_click_alt(user) /obj/machinery/door/airlock/BorgAltShiftClick(mob/living/silicon/robot/user) // Enables emergency override on doors! Forwards to AI code. AIAltShiftClick(user) @@ -172,7 +170,7 @@ /obj/machinery/ai_slipper/BorgCtrlClick(mob/living/silicon/robot/user) //Turns liquid dispenser on or off ToggleOn() -/obj/machinery/ai_slipper/BorgAltClick(mob/living/silicon/robot/user) //Dispenses liquid if on +/obj/machinery/ai_slipper/borg_click_alt(mob/living/silicon/robot/user) //Dispenses liquid if on Activate() @@ -181,8 +179,8 @@ /obj/machinery/turretid/BorgCtrlClick(mob/living/silicon/robot/user) //turret control on/off. Forwards to AI code. AICtrlClick(user) -/obj/machinery/turretid/BorgAltClick(mob/living/silicon/robot/user) //turret lethal on/off. Forwards to AI code. - AIAltClick(user) +/obj/machinery/turretid/borg_click_alt(mob/living/silicon/robot/user) //turret lethal on/off. Forwards to AI code. + ai_click_alt(user) /* As with AI, these are not used in click code, @@ -192,10 +190,8 @@ clicks, you can do so here, but you will have to change attack_robot() above to the proper function */ -/mob/living/silicon/robot/UnarmedAttack(atom/A) - if(!can_unarmed_attack()) - return - A.attack_robot(src) +/mob/living/silicon/robot/OnUnarmedAttack(atom/atom) + return atom.attack_robot(src) /mob/living/silicon/robot/RangedAttack(atom/A, params) A.attack_robot(src) diff --git a/code/_onclick/hud/action_button.dm b/code/_onclick/hud/action_button.dm index 87478352c519..7e112e7ad2b6 100644 --- a/code/_onclick/hud/action_button.dm +++ b/code/_onclick/hud/action_button.dm @@ -52,7 +52,7 @@ to_chat(usr, span_notice("Action button \"[name]\" [locked ? "" : "un"]locked.")) return TRUE if(modifiers["alt"]) - AltClick(usr) + usr.base_click_alt(src) return TRUE if(modifiers["middle"]) linked_action.Trigger(left_click = FALSE) @@ -83,9 +83,10 @@ to_chat(user, span_info("Your active keybinding on [src] has been cleared.")) -/atom/movable/screen/movable/action_button/AltClick(mob/user) - . = linked_action.AltTrigger() +/atom/movable/screen/movable/action_button/click_alt(mob/user) + linked_action.AltTrigger() linked_action.UpdateButtonIcon() + return CLICK_ACTION_SUCCESS /atom/movable/screen/movable/action_button/proc/clean_up_keybinds(mob/owner) if(linked_keybind) @@ -121,7 +122,7 @@ usr.changeNext_click(1) var/list/modifiers = params2list(params) if(modifiers["alt"]) - AltClick(usr) + usr.base_click_alt(src) return TRUE usr.hud_used.action_buttons_hidden = !usr.hud_used.action_buttons_hidden @@ -135,7 +136,7 @@ usr.update_action_buttons() -/atom/movable/screen/movable/action_button/hide_toggle/AltClick(mob/user) +/atom/movable/screen/movable/action_button/hide_toggle/click_alt(mob/user) for(var/datum/action/action as anything in user.actions) var/atom/movable/screen/movable/action_button/our_button = action.button our_button.moved = FALSE @@ -143,6 +144,7 @@ moved = FALSE user.update_action_buttons(reload_screen = TRUE) to_chat(user, span_notice("Action button positions have been reset.")) + return CLICK_ACTION_SUCCESS /atom/movable/screen/movable/action_button/hide_toggle/proc/InitialiseIcon(mob/living/user) @@ -153,11 +155,13 @@ icon = initial(icon) icon_state = "bg_default" if(user.client) // Apply the client's UI style - icon = ui_style2icon(user.client.prefs.UI_style) + icon = ui_style2icon(user.client.prefs?.UI_style) icon_state = "template" + if(user.client) - alpha = user.client.prefs.UI_style_alpha - color = user.client.prefs.UI_style_color + alpha = user.client.prefs?.UI_style_alpha + color = user.client.prefs?.UI_style_color + update_icon(UPDATE_OVERLAYS) diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm index aeb47d7f9530..b97d312700d7 100644 --- a/code/_onclick/hud/ai.dm +++ b/code/_onclick/hud/ai.dm @@ -158,9 +158,6 @@ var/mob/living/silicon/ai/AI = usr AI.move_down() -/mob/living/silicon/ai/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/ai(src) /datum/hud/ai/New(mob/owner) ..() diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 4a0132a6645c..a6a8a11acf20 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -563,6 +563,43 @@ so as to remain in compliance with the most up-to-date laws." desc = "Maintenance protocols are currently in effect, most actions disabled." icon_state = "locked" +/atom/movable/screen/alert/empty_alert + name = "" + desc = "" + +// MECH MODULES + +// cage module +/atom/movable/screen/alert/mech_cage + name = "Ты не должен это видеть" + desc = "Ну и это тоже" + icon = 'icons/obj/mecha/mecha_cage.dmi' + var/stage_define + +/atom/movable/screen/alert/mech_cage/zero + name = "Нулевой этап" + desc = "Модуль не работает." + icon_state = "stage_0" + stage_define = CAGE_STAGE_ZERO + +/atom/movable/screen/alert/mech_cage/one + name = "Первый этап" + desc = "Модуль работает в режиме удержания." + icon_state = "stage_1" + stage_define = CAGE_STAGE_ONE + +/atom/movable/screen/alert/mech_cage/two + name = "Второй этап" + desc = "Модуль работает в режиме удержания цели в наручниках." + icon_state = "stage_2" + stage_define = CAGE_STAGE_TWO + +/atom/movable/screen/alert/mech_cage/three + name = "Третий этап" + desc = "Модуль работает в режиме заключения." + icon_state = "stage_3" + stage_define = CAGE_STAGE_THREE + //GUARDIANS /atom/movable/screen/alert/cancharge name = "Charge Ready" @@ -835,14 +872,18 @@ so as to remain in compliance with the most up-to-date laws." /atom/movable/screen/alert/Click(location, control, params) if(!usr || !usr.client) - return + return FALSE + var/paramslist = params2list(params) if(paramslist["shift"]) // screen objects don't do the normal Click() stuff so we'll cheat to_chat(usr, "[name] - [desc]") - return + return FALSE + if(master) return usr.client.Click(master, location, control, params) + return TRUE + /atom/movable/screen/alert/Destroy() severity = 0 master = null @@ -862,3 +903,16 @@ so as to remain in compliance with the most up-to-date laws." if(!istype(usr)) return living_owner.do_succumb(TRUE) + +/atom/movable/screen/alert/unpossess_object + name = "Unpossess" + desc = "Этот объект под вашим контролем. Нажмите сюда для прекращения контроля." + icon_state = "buckled" + +/atom/movable/screen/alert/unpossess_object/Click(location, control, params) + . = ..() + + if(!.) + return + + qdel(usr.GetComponent(/datum/component/object_possession)) diff --git a/code/_onclick/hud/alien.dm b/code/_onclick/hud/alien.dm index 9c05d0a72d54..cc9b1def284d 100644 --- a/code/_onclick/hud/alien.dm +++ b/code/_onclick/hud/alien.dm @@ -26,10 +26,6 @@ screen_loc = ui_alienplasmadisplay -/mob/living/carbon/alien/humanoid/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/alien(src) - /datum/hud/alien/New(mob/living/carbon/alien/humanoid/owner) ..() diff --git a/code/_onclick/hud/alien_larva.dm b/code/_onclick/hud/alien_larva.dm index 3be0fd9487d2..229b290f268c 100644 --- a/code/_onclick/hud/alien_larva.dm +++ b/code/_onclick/hud/alien_larva.dm @@ -1,7 +1,3 @@ -/mob/living/carbon/alien/larva/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/larva(src) - /datum/hud/larva/New(mob/owner) ..() diff --git a/code/_onclick/hud/blob_overmind.dm b/code/_onclick/hud/blob_overmind.dm index 91bd2e9e4dbb..7cd2290c6832 100644 --- a/code/_onclick/hud/blob_overmind.dm +++ b/code/_onclick/hud/blob_overmind.dm @@ -1,9 +1,5 @@ -/mob/camera/blob/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/blob_overmind(src) - /atom/movable/screen/blob - icon = 'icons/mob/blob.dmi' + icon = 'icons/hud/blob.dmi' /atom/movable/screen/blob/MouseEntered(location,control,params) openToolTip(usr,src,params,title = name,content = desc, theme = "blob") @@ -13,7 +9,7 @@ /atom/movable/screen/blob/BlobHelp icon_state = "ui_help" - name = "Blob Help" + name = "Помощь" desc = "Помощь по игре за блоба!" /atom/movable/screen/blob/BlobHelp/Click() @@ -23,7 +19,7 @@ /atom/movable/screen/blob/JumpToNode icon_state = "ui_tonode" - name = "Jump to Node" + name = "К узлу" desc = "Перемещает вашу камеру к выбранному узлу." /atom/movable/screen/blob/JumpToNode/Click() @@ -33,7 +29,7 @@ /atom/movable/screen/blob/JumpToCore icon_state = "ui_tocore" - name = "Jump to Core" + name = "К ядру" desc = "Перемещает вашу камеру к вашему ядру." /atom/movable/screen/blob/JumpToCore/MouseEntered(location,control,params) @@ -49,8 +45,13 @@ /atom/movable/screen/blob/Blobbernaut icon_state = "ui_blobbernaut" - name = "Produce Blobbernaut (60)" - desc = "Производит сильного и умного блоббернаута из фабрики за 60 ресурсов.
Фабрика будет уничтожена в процессе." + name = "Создать блобернаута (ERROR)" + desc = "Создает сильного и умного блоббернаута из фабрики за ERROR ресурсов.
Фабрика станет хрупкой и не сможет производить споры." + +/atom/movable/screen/blob/Blobbernaut/Initialize(mapload, datum/hud/hud_owner) + . = ..() + name = "Создать блобернаута ([BLOBMOB_BLOBBERNAUT_RESOURCE_COST])" + desc = "Создает сильного и умного блоббернаута из фабрики за [BLOBMOB_BLOBBERNAUT_RESOURCE_COST] ресурсов.
Фабрика станет хрупкой и не сможет производить споры." /atom/movable/screen/blob/Blobbernaut/Click() if(isovermind(usr)) @@ -59,64 +60,93 @@ /atom/movable/screen/blob/StorageBlob icon_state = "ui_storage" - name = "Produce Storage Blob (40)" - desc = "Производит хранилище за 40 ресурсов.
Хранилища увеличат ваш максимальный лимит ресурсов на 50." + name = "Создать хранилище (ERROR)" + desc = "Создает хранилище за ERROR ресурсов.
Хранилища увеличивают ваш максимальный лимит ресурсов на ERROR." + +/atom/movable/screen/blob/StorageBlob/Initialize(mapload, datum/hud/hud_owner) + . = ..() + name = "Создать хранилище ([BLOB_STRUCTURE_STORAGE_COST])" + desc = "Создает хранилище за [BLOB_STRUCTURE_STORAGE_COST] ресурсов.
Хранилища увеличивают ваш максимальный лимит ресурсов на [BLOB_STORAGE_MAX_POINTS_BONUS]." /atom/movable/screen/blob/StorageBlob/Click() if(isovermind(usr)) var/mob/camera/blob/B = usr - B.create_storage() + B.create_special(BLOB_STRUCTURE_STORAGE_COST, /obj/structure/blob/storage, BLOB_STORAGE_MIN_DISTANCE, TRUE) /atom/movable/screen/blob/ResourceBlob icon_state = "ui_resource" - name = "Produce Resource Blob (40)" - desc = "Производит ресурсную плитку за 40 ресурсов.
Ресурсные плитки будут приносить вам ресурсы каждые несколько секунд." + name = "Создать ресурсную плитку (ERROR)" + desc = "Создает ресурсную плитку за ERROR ресурсов.
Ресурсные плитки будут приносить вам ресурсы каждые несколько секунд." + +/atom/movable/screen/blob/ResourceBlob/Initialize(mapload, datum/hud/hud_owner) + . = ..() + name = "Создать ресурсную плитку ([BLOB_STRUCTURE_RESOURCE_COST])" + desc = "Создает ресурсную плитку за [BLOB_STRUCTURE_RESOURCE_COST] ресурсов.
Ресурсные плитки будут приносить вам ресурсы каждые несколько секунд." /atom/movable/screen/blob/ResourceBlob/Click() if(isovermind(usr)) var/mob/camera/blob/B = usr - B.create_resource() + B.create_special(BLOB_STRUCTURE_RESOURCE_COST, /obj/structure/blob/special/resource, BLOB_RESOURCE_MIN_DISTANCE, TRUE) /atom/movable/screen/blob/NodeBlob icon_state = "ui_node" - name = "Produce Node Blob (60)" - desc = "Производит узел за 60 ресурсов.
Узлы будут расширяться и активировать ближайшие ресурсные плитки и фабрики." + name = "Создать узел (ERROR)" + desc = "Создает узел за ERROR ресурсов.
Узлы будут расширяться и активировать ближайшие ресурсные плитки и фабрики." + +/atom/movable/screen/blob/NodeBlob/Initialize(mapload, datum/hud/hud_owner) + . = ..() + name = "Создать узел ([BLOB_STRUCTURE_NODE_COST])" + desc = "Создает узел за [BLOB_STRUCTURE_NODE_COST] ресурсов.
Узлы будут расширяться и активировать ближайшие ресурсные плитки и фабрики." /atom/movable/screen/blob/NodeBlob/Click() if(isovermind(usr)) var/mob/camera/blob/B = usr - B.create_node() + B.create_special(BLOB_STRUCTURE_NODE_COST, /obj/structure/blob/special/node, BLOB_NODE_MIN_DISTANCE, FALSE) /atom/movable/screen/blob/FactoryBlob icon_state = "ui_factory" - name = "Produce Factory Blob (60)" - desc = "Производит фабрику за 60 ресурсов.
Фабрики будут производить споры каждые несколько секунд." + name = "Создать фабрику (ERROR)" + desc = "Производит фабрику за ERROR ресурсов.
Фабрики будут производить споры каждые несколько секунд." + + +/atom/movable/screen/blob/FactoryBlob/Initialize(mapload, datum/hud/hud_owner) + . = ..() + name = "Создать фабрику ([BLOB_STRUCTURE_FACTORY_COST])" + desc = "Создает фабрику за [BLOB_STRUCTURE_FACTORY_COST] ресурсов.
Фабрики будут производить споры каждые несколько секунд." /atom/movable/screen/blob/FactoryBlob/Click() if(isovermind(usr)) var/mob/camera/blob/B = usr - B.create_factory() + B.create_special(BLOB_STRUCTURE_FACTORY_COST, /obj/structure/blob/special/factory, BLOB_FACTORY_MIN_DISTANCE, TRUE) + -/atom/movable/screen/blob/ReadaptChemical +/atom/movable/screen/blob/ReadaptStrain icon_state = "ui_chemswap" - name = "Readapt Chemical (50)" - desc = "Случайно изменяет ваш химикат за 50 ресурсов." + name = "Реадаптация штамма" + desc = "Позволяет вам выбрать новый штамм из случайных вариантов за Error ресурсов." -/atom/movable/screen/blob/ReadaptChemical/MouseEntered(location,control,params) +/atom/movable/screen/blob/ReadaptStrain/MouseEntered(location,control,params) if(hud && hud.mymob && isovermind(hud.mymob)) - name = initial(name) - desc = initial(desc) + var/mob/camera/blob/B = hud.mymob + var/cost = (B.free_strain_rerolls)? "FREE" : BLOB_POWER_REROLL_COST + name = "[initial(name)] ([cost])" + desc = "Позволяет вам выбрать новый штамм из [BLOB_POWER_REROLL_CHOICES] случайных вариантов за [cost] ресурсов." ..() -/atom/movable/screen/blob/ReadaptChemical/Click() +/atom/movable/screen/blob/ReadaptStrain/Click() if(isovermind(usr)) var/mob/camera/blob/B = usr - B.chemical_reroll() + B.strain_reroll() /atom/movable/screen/blob/RelocateCore icon_state = "ui_swap" - name = "Relocate Core (80)" - desc = "Меняет местами узел и ваше ядро за 80 ресурсов." + name = "Переместить ядро (ERROR)" + desc = "Меняет местами узел и ваше ядро за ERROR ресурсов." + +/atom/movable/screen/blob/RelocateCore/Initialize(mapload, datum/hud/hud_owner) + . = ..() + name = "Переместить ядро ([BLOB_POWER_RELOCATE_COST])" + desc = "Меняет местами узел и ваше ядро за [BLOB_POWER_RELOCATE_COST] ресурсов." /atom/movable/screen/blob/RelocateCore/Click() if(isovermind(usr)) @@ -125,9 +155,13 @@ /atom/movable/screen/blob/Split icon_state = "ui_split" - name = "Split consciousness (100)" + name = "Разделить сознание (ERROR)" desc = "Создаёт ещё одного блоба на выбранном узле. Может быть использовано 1 раз.
Потомки не могут использовать это умение." +/atom/movable/screen/blob/Split/Initialize(mapload, datum/hud/hud_owner) + . = ..() + name = "Разделить сознание ([BLOB_CORE_SPLIT_COST])" + /atom/movable/screen/blob/Split/Click() if(isovermind(usr)) var/mob/camera/blob/B = usr @@ -146,10 +180,7 @@ SET_PLANE_EXPLICIT(blobpwrdisplay, ABOVE_HUD_PLANE, mymob) static_inventory += blobpwrdisplay - blobhealthdisplay = new /atom/movable/screen(null, src) - blobhealthdisplay.name = "blob health" - blobhealthdisplay.icon_state = "block" - blobhealthdisplay.screen_loc = ui_internal + blobhealthdisplay = new /atom/movable/screen/healths/blob(null, src) static_inventory += blobhealthdisplay using = new /atom/movable/screen/blob/BlobHelp(null, src) @@ -184,7 +215,7 @@ using.screen_loc = using.screen_loc = ui_lhand static_inventory += using - using = new /atom/movable/screen/blob/ReadaptChemical(null, src) + using = new /atom/movable/screen/blob/ReadaptStrain(null, src) using.screen_loc = ui_storage1 static_inventory += using diff --git a/code/_onclick/hud/blobbernaut.dm b/code/_onclick/hud/blobbernaut.dm new file mode 100644 index 000000000000..5cb785537a7f --- /dev/null +++ b/code/_onclick/hud/blobbernaut.dm @@ -0,0 +1,5 @@ +/datum/hud/simple_animal/blobbernaut/New(mob/living/owner) + . = ..() + + blobpwrdisplay = new /atom/movable/screen/healths/blob/overmind(null, src) + infodisplay += blobpwrdisplay diff --git a/code/_onclick/hud/bot.dm b/code/_onclick/hud/bot.dm index d64965cb1367..1c8e2fb65fce 100644 --- a/code/_onclick/hud/bot.dm +++ b/code/_onclick/hud/bot.dm @@ -11,9 +11,6 @@ var/mob/living/simple_animal/bot/B = usr B.Radio.interact(usr) -/mob/living/simple_animal/bot/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/bot(src) /datum/hud/bot/New(mob/owner) ..() diff --git a/code/_onclick/hud/constructs.dm b/code/_onclick/hud/constructs.dm index 7020061f7e71..1f3aad8e8132 100644 --- a/code/_onclick/hud/constructs.dm +++ b/code/_onclick/hud/constructs.dm @@ -1,11 +1,3 @@ -/mob/living/simple_animal/hostile/construct/armoured/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/construct/armoured(src) - -/mob/living/simple_animal/hostile/construct/behemoth/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/construct/armoured(src) - /datum/hud/construct/armoured/New(mob/owner) ..() mymob.healths = new /atom/movable/screen(null, src) @@ -15,9 +7,6 @@ mymob.healths.screen_loc = ui_construct_health infodisplay += mymob.healths -/mob/living/simple_animal/hostile/construct/builder/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/construct/builder(src) /datum/hud/construct/builder/New(mob/owner) ..() @@ -28,9 +17,6 @@ mymob.healths.screen_loc = ui_construct_health infodisplay += mymob.healths -/mob/living/simple_animal/hostile/construct/wraith/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/construct/wraith(src) /datum/hud/construct/wraith/New(mob/owner) ..() @@ -41,9 +27,6 @@ mymob.healths.screen_loc = ui_construct_health infodisplay += mymob.healths -/mob/living/simple_animal/hostile/construct/harvester/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/construct/harvester(src) /datum/hud/construct/harvester/New(mob/owner) ..() @@ -54,6 +37,7 @@ mymob.healths.screen_loc = ui_construct_health infodisplay += mymob.healths + /datum/hud/construct/New(mob/owner) ..() mymob.pullin = new /atom/movable/screen/pull(null, src) diff --git a/code/_onclick/hud/devil.dm b/code/_onclick/hud/devil.dm index a7e73e7f456e..dd6b7c4cf743 100644 --- a/code/_onclick/hud/devil.dm +++ b/code/_onclick/hud/devil.dm @@ -2,11 +2,13 @@ //Soul counter is stored with the humans, it does weird when you place it here apparently... -/datum/hud/devil/New(mob/owner, ui_style = 'icons/mob/screen_midnight.dmi') +/datum/hud/devil/New(mob/owner) ..() var/atom/movable/screen/using var/atom/movable/screen/inventory/inv_box + var/client/client = owner.client + var/ui_style = ui_style2icon(client.prefs.UI_style) using = new /atom/movable/screen/drop(null, src) using.icon = ui_style @@ -80,7 +82,3 @@ D.r_hand.screen_loc = null if(D.l_hand) D.l_hand.screen_loc = null - -/mob/living/carbon/true_devil/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/devil(src, ui_style2icon(client.prefs.UI_style)) diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm index d38655dd83c8..53d6bb41c71b 100644 --- a/code/_onclick/hud/ghost.dm +++ b/code/_onclick/hud/ghost.dm @@ -1,8 +1,3 @@ -/mob/dead/observer/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/ghost(src) - SEND_SIGNAL(src, COMSIG_MOB_HUD_CREATED) - /atom/movable/screen/ghost icon = 'icons/mob/screen_ghost.dmi' diff --git a/code/_onclick/hud/guardian.dm b/code/_onclick/hud/guardian.dm index 9ec6eed56fdc..28732c276748 100644 --- a/code/_onclick/hud/guardian.dm +++ b/code/_onclick/hud/guardian.dm @@ -1,7 +1,3 @@ -/mob/living/simple_animal/hostile/guardian/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/guardian(src) - /datum/hud/guardian/New(mob/owner) ..() var/atom/movable/screen/using diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index e4e268cb5236..4e4d7d6978e8 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -103,7 +103,7 @@ for(var/group_key as anything in master_groups) var/datum/plane_master_group/group = master_groups[group_key] - group.transform_lower_turfs(src, current_plane_offset) + group.build_planes_offset(src, current_plane_offset) /datum/hud/proc/should_use_scale() return should_sight_scale(mymob.sight) @@ -122,10 +122,9 @@ current_plane_offset = new_offset SEND_SIGNAL(src, COMSIG_HUD_OFFSET_CHANGED, old_offset, new_offset) - if(should_use_scale()) - for(var/group_key as anything in master_groups) - var/datum/plane_master_group/group = master_groups[group_key] - group.transform_lower_turfs(src, new_offset) + for(var/group_key as anything in master_groups) + var/datum/plane_master_group/group = master_groups[group_key] + group.build_planes_offset(src, new_offset) /datum/hud/Destroy() if(mymob.hud_used == src) @@ -209,7 +208,7 @@ /mob/proc/create_mob_hud() if(!client || hud_used) return - hud_used = new /datum/hud(src) + hud_used = new hud_type(src) update_sight() SEND_SIGNAL(src, COMSIG_MOB_HUD_CREATED) diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 672ad955ea30..ceaced141e92 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -75,18 +75,18 @@ invisibility = INVISIBILITY_ABSTRACT -/mob/living/carbon/human/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/human(src, ui_style2icon(client.prefs.UI_style), client.prefs.UI_style_color, client.prefs.UI_style_alpha) - /datum/hud/human var/hud_alpha = 255 -/datum/hud/human/New(mob/living/carbon/human/owner, var/ui_style = 'icons/mob/screen_white.dmi', var/ui_color = "#ffffff", var/ui_alpha = 255) +/datum/hud/human/New(mob/living/carbon/human/owner) ..() owner.overlay_fullscreen("see_through_darkness", /atom/movable/screen/fullscreen/see_through_darkness) var/atom/movable/screen/using var/atom/movable/screen/inventory/inv_box + var/client/client = owner.client + var/ui_style = ui_style2icon(client.prefs.UI_style) + var/ui_color = client.prefs.UI_style_color + var/ui_alpha = client.prefs.UI_style_alpha hud_alpha = ui_alpha diff --git a/code/_onclick/hud/map_view.dm b/code/_onclick/hud/map_view.dm index bc304f20f8a1..38e6b0c984e0 100644 --- a/code/_onclick/hud/map_view.dm +++ b/code/_onclick/hud/map_view.dm @@ -55,7 +55,7 @@ INITIALIZE_IMMEDIATE(/atom/movable/screen/map_view) return pop_planes /atom/movable/screen/map_view/proc/hide_from(mob/hide_from) - hide_from?.canon_client.clear_map(assigned_map) + hide_from?.canon_client?.clear_map(assigned_map) var/client_ref = WEAKREF(hide_from?.canon_client) // Make sure we clear the *right* hud diff --git a/code/_onclick/hud/other_mobs.dm b/code/_onclick/hud/other_mobs.dm index 8e78a8556aa8..5cb0f412dda5 100644 --- a/code/_onclick/hud/other_mobs.dm +++ b/code/_onclick/hud/other_mobs.dm @@ -1,7 +1,3 @@ -/mob/living/simple_animal/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/simple_animal(src) - /datum/hud/simple_animal/New(mob/user) ..() @@ -14,10 +10,6 @@ static_inventory += using action_intent = using -//Ians -/mob/living/simple_animal/pet/dog/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/corgi(src) /datum/hud/corgi/New(mob/user) ..() @@ -31,18 +23,6 @@ mymob.pullin.screen_loc = ui_construct_pull static_inventory += mymob.pullin -//spiders -/mob/living/simple_animal/hostile/poison/giant_spider/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/simple_animal/spider(src) - -/mob/living/simple_animal/hostile/poison/terror_spider/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/simple_animal/spider(src) - -/mob/living/simple_animal/hostile/retaliate/araneus/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/simple_animal/spider(src) /datum/hud/simple_animal/spider/New(mob/user) ..() diff --git a/code/_onclick/hud/plane_master/_plane_master.dm b/code/_onclick/hud/plane_master/_plane_master.dm index 6d304e82909c..a0876cf82ae4 100644 --- a/code/_onclick/hud/plane_master/_plane_master.dm +++ b/code/_onclick/hud/plane_master/_plane_master.dm @@ -18,9 +18,9 @@ INITIALIZE_IMMEDIATE(/atom/movable/screen/plane_master) /// The plane master group we're a member of, our "home" var/datum/plane_master_group/home - /// If our plane master allows for offsetting - /// Mostly used for planes that really don't need to be duplicated, like the hud planes - var/allows_offsetting = TRUE + /// If our plane master has different offsetting logic + /// Possible flags are defined in [_DEFINES/layers.dm] + var/offsetting_flags = NONE /// Our offset from our "true" plane, see below var/offset /// When rendering multiz, lower levels get their own set of plane masters diff --git a/code/_onclick/hud/plane_master/plane_master_group.dm b/code/_onclick/hud/plane_master/plane_master_group.dm index e79f66373e22..9b443102a380 100644 --- a/code/_onclick/hud/plane_master/plane_master_group.dm +++ b/code/_onclick/hud/plane_master/plane_master_group.dm @@ -9,6 +9,8 @@ var/datum/hud/our_hud /// List in the form "[plane]" = object, the plane masters we own var/list/atom/movable/screen/plane_master/plane_masters = list() + /// Does it needs to offset to work properly + var/do_offset = TRUE /// The visual offset we are currently using var/active_offset = 0 /// What, if any, submap we render onto @@ -45,7 +47,7 @@ our_hud = viewing_hud our_hud.master_groups[key] = src show_hud() - transform_lower_turfs(our_hud, active_offset) + build_planes_offset(our_hud, active_offset) /// Hide the plane master from its current hud, fully clear it out /datum/plane_master_group/proc/orphan_hud() @@ -64,7 +66,7 @@ hide_hud() rebuild_plane_masters() show_hud() - transform_lower_turfs(our_hud, active_offset) + build_planes_offset(our_hud, active_offset) /// Regenerate our plane masters, this is useful if we don't have a mob but still want to rebuild. Such in the case of changing the screen_loc of relays /datum/plane_master_group/proc/rebuild_plane_masters() @@ -93,7 +95,7 @@ /datum/plane_master_group/proc/build_plane_masters(starting_offset, ending_offset) for(var/atom/movable/screen/plane_master/mytype as anything in get_plane_types()) for(var/plane_offset in starting_offset to ending_offset) - if(plane_offset != 0 && !initial(mytype.allows_offsetting)) + if(plane_offset != 0 && (initial(mytype.offsetting_flags) & BLOCKS_PLANE_OFFSETTING)) continue var/atom/movable/screen/plane_master/instance = new mytype(null, null, src, plane_offset) plane_masters["[instance.plane]"] = instance @@ -106,7 +108,7 @@ // It would be nice to setup parallaxing for stairs and things when doing this // So they look nicer. if you can't it's all good, if you think you can sanely look at monster's work // It's hard, and potentially expensive. be careful -/datum/plane_master_group/proc/transform_lower_turfs(datum/hud/source, new_offset, use_scale = TRUE) +/datum/plane_master_group/proc/build_planes_offset(datum/hud/source, new_offset, use_scale = TRUE) // Check if this feature is disabled for the client, in which case don't use scale. var/mob/our_mob = our_hud?.mymob if(!(our_mob?.canon_client?.prefs.toggles2 & PREFTOGGLE_2_PARALLAX_MULTIZ)) @@ -128,7 +130,7 @@ scale_by = 1 var/list/offsets = list() - var/multiz_boundary = our_mob?.canon_client?.prefs?.multiz_detail + var/multiz_boundary = do_offset ? our_mob?.canon_client?.prefs?.multiz_detail : MULTIZ_DETAIL_LOW //low means no offset // We accept negatives so going down "zooms" away the drop above as it goes for(var/offset in -SSmapping.max_plane_offset to SSmapping.max_plane_offset) // Multiz boundaries disable transforms @@ -150,7 +152,11 @@ for(var/plane_key in plane_masters) var/atom/movable/screen/plane_master/plane = plane_masters[plane_key] - if(!plane.allows_offsetting) + if(plane.offsetting_flags & BLOCKS_PLANE_OFFSETTING) + if(plane.offsetting_flags & OFFSET_RELAYS_MATCH_HIGHEST) + // Don't offset the plane, do offset where the relays point + // Required for making things like the blind fullscreen not render over runechat + plane.offset_relays_in_place(new_offset) continue var/visual_offset = plane.offset - new_offset @@ -175,14 +181,15 @@ /// If you wanna try someday feel free, but I can't manage it /datum/plane_master_group/popup relay_loc = "LEFT,TOP" + do_offset = FALSE -/datum/plane_master_group/popup/transform_lower_turfs(datum/hud/source, new_offset, use_scale = TRUE) +/datum/plane_master_group/popup/build_planes_offset(datum/hud/source, new_offset, use_scale = TRUE) return ..(source, new_offset, FALSE) /// Holds the main plane master /datum/plane_master_group/main -/datum/plane_master_group/main/transform_lower_turfs(datum/hud/source, new_offset, use_scale = TRUE) +/datum/plane_master_group/main/build_planes_offset(datum/hud/source, new_offset, use_scale = TRUE) if(use_scale) return ..(source, new_offset, source.should_use_scale()) return ..() diff --git a/code/_onclick/hud/plane_master/plane_master_subtypes.dm b/code/_onclick/hud/plane_master/plane_master_subtypes.dm index 93340abaa3b2..0696490d4ff6 100644 --- a/code/_onclick/hud/plane_master/plane_master_subtypes.dm +++ b/code/_onclick/hud/plane_master/plane_master_subtypes.dm @@ -258,7 +258,7 @@ appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR render_relay_planes = list(RENDER_PLANE_NON_GAME) mouse_opacity = MOUSE_OPACITY_TRANSPARENT - allows_offsetting = FALSE + offsetting_flags = BLOCKS_PLANE_OFFSETTING|OFFSET_RELAYS_MATCH_HIGHEST /atom/movable/screen/plane_master/runechat @@ -290,7 +290,7 @@ plane = HUD_PLANE appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR render_relay_planes = list(RENDER_PLANE_NON_GAME) - allows_offsetting = FALSE + offsetting_flags = BLOCKS_PLANE_OFFSETTING|OFFSET_RELAYS_MATCH_HIGHEST /atom/movable/screen/plane_master/above_hud name = "Above HUD" @@ -298,7 +298,7 @@ plane = ABOVE_HUD_PLANE appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR render_relay_planes = list(RENDER_PLANE_NON_GAME) - allows_offsetting = FALSE + offsetting_flags = BLOCKS_PLANE_OFFSETTING|OFFSET_RELAYS_MATCH_HIGHEST /atom/movable/screen/plane_master/splashscreen name = "Splashscreen" @@ -306,4 +306,4 @@ plane = SPLASHSCREEN_PLANE appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR render_relay_planes = list(RENDER_PLANE_NON_GAME) - allows_offsetting = FALSE + offsetting_flags = BLOCKS_PLANE_OFFSETTING|OFFSET_RELAYS_MATCH_HIGHEST diff --git a/code/_onclick/hud/plane_master/render_plate.dm b/code/_onclick/hud/plane_master/render_plate.dm index 02608d44716b..5290ece4cc97 100644 --- a/code/_onclick/hud/plane_master/render_plate.dm +++ b/code/_onclick/hud/plane_master/render_plate.dm @@ -282,6 +282,8 @@ // That's what this is for if(show_to) show_to.screen += relay + if(offsetting_flags & OFFSET_RELAYS_MATCH_HIGHEST && home.our_hud) + offset_relay(relay, home.our_hud.current_plane_offset) return relay /// Breaks a connection between this plane master, and the passed in place @@ -304,3 +306,40 @@ return relay return null + +/** + * Offsets our relays in place using the given parameter by adjusting their plane and + * layer values, avoiding changing the layer for relays with custom-set layers. + * + * Used in [proc/build_planes_offset] to make the relays for non-offsetting planes + * match the highest rendering plane that matches the target, to avoid them rendering + * on the highest level above things that should be visible. + * + * Parameters: + * - new_offset: the offset we will adjust our relays to + */ +/atom/movable/screen/plane_master/proc/offset_relays_in_place(new_offset) + for(var/atom/movable/render_plane_relay/rpr in relays) + offset_relay(rpr, new_offset) + +/** + * Offsets a given render relay using the given parameter by adjusting its plane and + * layer values, avoiding changing the layer if it has a custom-set layer. + * + * Parameters: + * - rpr: the render plane relay we will offset + * - new_offset: the offset we will adjust it by + */ +/atom/movable/screen/plane_master/proc/offset_relay(atom/movable/render_plane_relay/rpr, new_offset) + var/base_relay_plane = PLANE_TO_TRUE(rpr.plane) + var/old_offset = PLANE_TO_OFFSET(rpr.plane) + rpr.plane = GET_NEW_PLANE(base_relay_plane, new_offset) + + var/old_offset_plane = real_plane - (PLANE_RANGE * old_offset) + var/old_layer = (old_offset_plane + abs(LOWEST_EVER_PLANE * 30)) + if(rpr.layer != old_layer) // Avoid overriding custom-set layers + return + + var/offset_plane = real_plane - (PLANE_RANGE * new_offset) + var/new_layer = (offset_plane + abs(LOWEST_EVER_PLANE * 30)) + rpr.layer = new_layer diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index 3d635d006647..333adeb95192 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -103,10 +103,6 @@ icon_state = initial(icon_state) -/mob/living/silicon/robot/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/robot(src) - /datum/hud/robot/New(mob/user) ..() user.overlay_fullscreen("see_through_darkness", /atom/movable/screen/fullscreen/see_through_darkness) @@ -196,11 +192,23 @@ if(!isrobot(mymob)) return - var/mob/living/silicon/robot/R = mymob + var/mob/living/silicon/robot/robot = mymob + + robot.shown_robot_modules = !robot.shown_robot_modules + + if(robot.s_active && robot.shown_robot_modules) + robot.s_active.close(robot) - R.shown_robot_modules = !R.shown_robot_modules update_robot_modules_display() +/datum/hud/proc/is_shown_robot_modules() + if(!isrobot(mymob)) + return + + var/mob/living/silicon/robot/robot = mymob + + return robot.shown_robot_modules + /datum/hud/proc/update_robot_modules_display() if(!isrobot(mymob)) return diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index dc4298f159c5..24ab3db37bdc 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -293,25 +293,26 @@ return TRUE if(PL["alt"]) - AltClick(usr, choice) + click_alt(usr, choice) return return set_selected_zone(choice) -/atom/movable/screen/zone_sel/AltClick(mob/user, choice) +/atom/movable/screen/zone_sel/click_alt(mob/user, choice) if(user.next_click > world.time || user.next_move > world.time) - return FALSE + return CLICK_ACTION_BLOCKING user.changeNext_click(1) var/obj/item/holding_item = user.get_active_hand() var/old_selecting = selecting if(!istype(holding_item)) - return FALSE + return CLICK_ACTION_BLOCKING if(!set_selected_zone(choice, FALSE)) - return FALSE + return CLICK_ACTION_BLOCKING holding_item.melee_attack_chain(user, user) set_selected_zone(old_selecting, FALSE) + return CLICK_ACTION_SUCCESS /atom/movable/screen/zone_sel/MouseEntered(location, control, params) @@ -720,6 +721,18 @@ icon = 'icons/mob/screen_alien.dmi' screen_loc = ui_alien_health +/atom/movable/screen/healths/blob + name = "blob health" + icon_state = "block" + screen_loc = ui_internal + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + +/atom/movable/screen/healths/blob/overmind + name = "overmind health" + icon = 'icons/hud/blob.dmi' + icon_state = "corehealth" + screen_loc = ui_blobbernaut_overmind_health + /atom/movable/screen/healths/bot icon = 'icons/mob/screen_bot.dmi' screen_loc = ui_borg_health diff --git a/code/_onclick/hud/slime.dm b/code/_onclick/hud/slime.dm index 06bf2f6e1005..4c4dd8a52f4b 100644 --- a/code/_onclick/hud/slime.dm +++ b/code/_onclick/hud/slime.dm @@ -2,7 +2,3 @@ ..() mymob.healths = new /atom/movable/screen/healths/slime(null, src) infodisplay += mymob.healths - -/mob/living/simple_animal/slime/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/slime(src) diff --git a/code/_onclick/hud/swarmer.dm b/code/_onclick/hud/swarmer.dm index 8623476d3008..e80258e3fee1 100644 --- a/code/_onclick/hud/swarmer.dm +++ b/code/_onclick/hud/swarmer.dm @@ -63,9 +63,6 @@ var/mob/living/simple_animal/hostile/swarmer/S = usr S.ContactSwarmers() -/mob/living/simple_animal/hostile/swarmer/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/swarmer(src) /datum/hud/swarmer/New(mob/owner) ..() diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 9685413c685a..2d240d713ad7 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -114,10 +114,10 @@ . |= ATTACK_CHAIN_NO_AFTERATTACK if(signal_out & COMPONENT_CANCEL_ATTACK_CHAIN) return .|ATTACK_CHAIN_BLOCKED - var/is_hot = is_hot(src) - if(is_hot && target.reagents && !ismob(target)) - to_chat(user, span_notice("You heat [target] with [src].")) - target.reagents.temperature_reagents(is_hot) + var/temperature = get_heat() + if(temperature && target.reagents && !ismob(target) && !istype(target, /obj/item/clothing/mask/cigarette)) + to_chat(user, span_notice("Вы нагрели [target.declent_ru(ACCUSATIVE)] с помощью [declent_ru(GENITIVE)].")) + target.reagents.temperature_reagents(temperature) /** @@ -186,7 +186,7 @@ return . if(force && (HAS_TRAIT(user, TRAIT_PACIFISM) || GLOB.pacifism_after_gt)) - to_chat(user, span_warning("You don't want to harm other living beings!")) + to_chat(user, span_warning("Вы не хотите причинять кому-либо вред!")) return . SEND_SIGNAL(user, COMSIG_MOB_ITEM_ATTACK, target, params, def_zone) @@ -249,13 +249,13 @@ . = ATTACK_CHAIN_PROCEED_SUCCESS if(!I.force) user.visible_message( - span_warning("[user] gently pokes [src] with [I]."), - span_warning("You gently poke [src] with [I]."), + span_warning("[user] аккуратно тыкнул[genderize_ru(user.gender, "", "а", "о", "и")] [declent_ru(ACCUSATIVE)] [I.declent_ru(INSTRUMENTAL)]."), + span_warning("Вы аккуратно тыкнули [declent_ru(ACCUSATIVE)] [I.declent_ru(INSTRUMENTAL)]."), ) return . user.visible_message( - span_danger("[user] has hit [src] with [I]!"), - span_danger("You have hit [src] with [I]!"), + span_danger("[user] ударил[genderize_ru(user.gender, "", "а", "о", "и")] [declent_ru(ACCUSATIVE)] [I.declent_ru(INSTRUMENTAL)]!"), + span_danger("Вы ударили [declent_ru(ACCUSATIVE)] [I.declent_ru(INSTRUMENTAL)]!"), ) take_damage(I.force, I.damtype, MELEE, TRUE, get_dir(user, src), I.armour_penetration) if(QDELETED(src)) // thats a pretty common behavior with objects, when they take damage @@ -299,20 +299,20 @@ if(!I.force) visible_message( - span_warning("[user] gently taps [src] with [I]."), - span_warning("[user] gently taps you with [I]."), + span_warning("[user] аккуратно тыкнул[genderize_ru(user.gender, "", "а", "о", "и")] [declent_ru(ACCUSATIVE)] [I.declent_ru(INSTRUMENTAL)]."), + span_warning("[user] аккуратно тыкнул[genderize_ru(user.gender, "", "а", "о", "и")] вас [I.declent_ru(INSTRUMENTAL)]."), ignored_mobs = user, ) - to_chat(user, span_warning("You gently tap [src] with [I].")) + to_chat(user, span_warning("Вы аккуратно тыкнули [declent_ru(ACCUSATIVE)] [I.declent_ru(INSTRUMENTAL)].")) return - var/message_verb = "attacked" + var/message_verb = "атаковал" if(length(I.attack_verb)) message_verb = "[pick(I.attack_verb)]" visible_message( - span_danger("[user] has [message_verb] [src] with [I]!"), - span_userdanger("[user] has [message_verb] you with [I]!"), + span_danger("[user] [message_verb][genderize_ru(user.gender, "", "а", "о", "и")] [declent_ru(ACCUSATIVE)] [I.declent_ru(INSTRUMENTAL)]!"), + span_userdanger("[user] [message_verb][genderize_ru(user.gender, "", "а", "о", "и")] вас [I.declent_ru(INSTRUMENTAL)]!"), ignored_mobs = user, ) - to_chat(user, span_danger("You have [message_verb] [src] with [I]!")) + to_chat(user, span_danger("Вы [message_verb]и [declent_ru(ACCUSATIVE)] [I.declent_ru(INSTRUMENTAL)]!")) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 2128fa683a3c..646f9c2d6217 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -4,15 +4,7 @@ Otherwise pretty standard. */ -/mob/living/carbon/human/UnarmedAttack(atom/A, proximity_flag) - if(!can_unarmed_attack()) - return - - if(proximity_flag && pulling && (!isnull(pull_hand) && (pull_hand == PULL_WITHOUT_HANDS || pull_hand == hand))) - if(A.grab_attack(src, pulling)) - changeNext_move(grab_state > GRAB_PASSIVE ? CLICK_CD_GRABBING : CLICK_CD_PULLING) - return - +/mob/living/carbon/human/OnUnarmedAttack(atom/A, proximity_flag) // Special glove functions: // If the gloves do anything, have them return 1 to stop // normal attack_hand() here. @@ -26,7 +18,7 @@ if(S.prevents_buckled_mobs_attacking()) return - A.attack_hand(src) + return A.attack_hand(src) /mob/living/carbon/human/beforeAdjacentClick(atom/A, params) @@ -68,7 +60,6 @@ if(isturf(A) && get_dist(src, A) <= 1) Move_Pulled(A) - /** * Checks if this mob is in a valid state to punch someone. * @@ -98,25 +89,39 @@ /* Animals & All Unspecified */ -/mob/living/UnarmedAttack(atom/A, proximity_flag) +/mob/living/UnarmedAttack(atom/atom, proximity_flag) if(!can_unarmed_attack()) return - if(proximity_flag && pulling && !isnull(pull_hand) && pull_hand != PULL_WITHOUT_HANDS && pull_hand == hand) - if(A.grab_attack(src, pulling)) - changeNext_move(grab_state > GRAB_PASSIVE ? CLICK_CD_GRABBING : CLICK_CD_PULLING) - return - A.attack_animal(src) -/mob/living/simple_animal/hostile/UnarmedAttack(atom/A, proximity_flag) - if(!can_unarmed_attack()) + var/signal = SEND_SIGNAL(src, COMSIG_LIVING_UNARMED_ATTACK, atom, proximity_flag) + + if(signal & COMPONENT_CANCEL_ATTACK_CHAIN) return - if(proximity_flag && pulling && !isnull(pull_hand) && pull_hand != PULL_WITHOUT_HANDS && pull_hand == hand) - if(A.grab_attack(src, pulling)) - changeNext_move(grab_state > GRAB_PASSIVE ? CLICK_CD_GRABBING : CLICK_CD_PULLING) + + if(can_grab_attack(atom, proximity_flag)) + if(!atom.grab_attack(src, pulling)) return - GiveTarget(A) + + changeNext_move(grab_state > GRAB_PASSIVE ? CLICK_CD_GRABBING : CLICK_CD_PULLING) + + return + + return OnUnarmedAttack(atom, proximity_flag) + +/mob/living/proc/can_grab_attack(atom/atom, proximity_flag) + return FALSE + +/mob/living/carbon/can_grab_attack(atom/atom, proximity_flag) + return pulling && proximity_flag && (pull_hand == PULL_WITHOUT_HANDS || pull_hand == hand) + +/mob/living/OnUnarmedAttack(atom/atom, proximity_flag) + return atom.attack_animal(src) + +/mob/living/simple_animal/hostile/OnUnarmedAttack(atom/atom, proximity_flag) + GiveTarget(atom) + if(target) - AttackingTarget() + return AttackingTarget() /atom/proc/attack_animal(mob/user) return @@ -128,14 +133,8 @@ Aliens Defaults to same as monkey in most places */ -/mob/living/carbon/alien/UnarmedAttack(atom/A, proximity_flag) - if(!can_unarmed_attack()) - return - if(proximity_flag && pulling && (!isnull(pull_hand) && (pull_hand == PULL_WITHOUT_HANDS || pull_hand == hand))) - if(A.grab_attack(src, pulling)) - changeNext_move(grab_state > GRAB_PASSIVE ? CLICK_CD_GRABBING : CLICK_CD_PULLING) - return - A.attack_alien(src) +/mob/living/carbon/alien/OnUnarmedAttack(atom/atom, proximity_flag) + return atom.attack_alien(src) /atom/proc/attack_alien(mob/living/carbon/alien/user) attack_hand(user) @@ -144,10 +143,8 @@ return // Babby aliens -/mob/living/carbon/alien/larva/UnarmedAttack(atom/A, proximity_flag) - if(!can_unarmed_attack()) - return - A.attack_larva(src) +/mob/living/carbon/alien/larva/OnUnarmedAttack(atom/atom, proximity_flag) + return atom.attack_larva(src) /atom/proc/attack_larva(mob/user) return @@ -156,10 +153,8 @@ Slimes Nothing happening here */ -/mob/living/simple_animal/slime/UnarmedAttack(atom/A, proximity_flag) - if(!can_unarmed_attack()) - return - A.attack_slime(src) +/mob/living/simple_animal/slime/OnUnarmedAttack(atom/atom, proximity_flag) + return atom.attack_slime(src) /atom/proc/attack_slime(mob/user) return diff --git a/code/_onclick/overmind.dm b/code/_onclick/overmind.dm index 419524c87113..9348cf690aa9 100644 --- a/code/_onclick/overmind.dm +++ b/code/_onclick/overmind.dm @@ -1,7 +1,7 @@ // Blob Overmind Controls -/mob/camera/blob/ClickOn(var/atom/A, var/params) //Expand blob +/mob/camera/blob/ClickOn(var/atom/A, var/params, atom/location) //Expand blob var/list/modifiers = params2list(params) if(modifiers["middle"]) MiddleClickOn(A) @@ -10,14 +10,14 @@ ShiftClickOn(A) return if(modifiers["alt"]) - AltClickOn(A) + blob_click_alt(A) return if(modifiers["ctrl"]) CtrlClickOn(A) return var/turf/T = get_turf(A) if(T) - expand_blob(T) + expand_blob(T, location) /mob/camera/blob/MiddleClickOn(atom/A) //Rally spores var/turf/T = get_turf(A) @@ -29,7 +29,7 @@ if(T) create_shield(T) -/mob/camera/blob/AltClickOn(atom/A) //Remove a blob +/mob/camera/blob/proc/blob_click_alt(atom/A) //Remove a blob var/turf/T = get_turf(A) if(T) remove_blob(T) diff --git a/code/_onclick/pai.dm b/code/_onclick/pai.dm index 79d619aeff5c..04e213d325f2 100644 --- a/code/_onclick/pai.dm +++ b/code/_onclick/pai.dm @@ -74,7 +74,7 @@ if(!ai_capability) return ..() if(!capa_is_cooldown) - if(A.PAIAltClick(src)) + if(A.pai_click_alt(src)) capa_is_cooldown = TRUE addtimer(CALLBACK(src, PROC_REF(reset_cooldown)), ai_capability_cooldown) return @@ -110,8 +110,8 @@ CtrlClick(user) return FALSE -/atom/proc/PAIAltClick(mob/living/silicon/robot/user) - AltClick(user) +/atom/proc/pai_click_alt(mob/living/silicon/robot/user) + user.base_click_alt(src) return FALSE /atom/proc/PAICtrlShiftClick(mob/user) // Examines @@ -132,12 +132,12 @@ AICtrlClick(user) return TRUE -/obj/machinery/door/airlock/PAIAltClick(mob/living/silicon/pai/user) // Eletrifies doors. Forwards to AI code. +/obj/machinery/door/airlock/pai_click_alt(mob/living/silicon/pai/user) // Eletrifies doors. Forwards to AI code. var/turf/door_turf = get_turf(src) var/turf/pai_turf = get_turf(user) if(!istype(door_turf) || !istype(pai_turf) || door_turf.z != pai_turf.z) return FALSE - AIAltClick(user) + ai_click_alt(user) return TRUE /obj/machinery/door/airlock/PAIAltShiftClick(mob/living/silicon/pai/user) // Enables emergency override on doors! Forwards to AI code. @@ -157,7 +157,7 @@ ToggleOn() return TRUE -/obj/machinery/ai_slipper/PAIAltClick(mob/living/silicon/pai/user) //Dispenses liquid if on +/obj/machinery/ai_slipper/pai_click_alt(mob/living/silicon/pai/user) //Dispenses liquid if on Activate() return TRUE @@ -167,8 +167,8 @@ AICtrlClick(user) return TRUE -/obj/machinery/turretid/PAIAltClick(mob/living/silicon/pai/user) //turret lethal on/off. Forwards to AI code. - AIAltClick(user) +/obj/machinery/turretid/pai_click_alt(mob/living/silicon/pai/user) //turret lethal on/off. Forwards to AI code. + ai_click_alt(user) return TRUE /mob/living/silicon/pai/proc/reset_cooldown() diff --git a/code/controllers/configuration/entries/config.dm b/code/controllers/configuration/entries/config.dm index 5da930d43d34..f8e12a2cabea 100644 --- a/code/controllers/configuration/entries/config.dm +++ b/code/controllers/configuration/entries/config.dm @@ -397,8 +397,6 @@ /datum/config_entry/number/simultaneous_pm_warning_timeout default = 100 -///Do assistants get maint access? -/datum/config_entry/flag/assistant_maint ///How long the gateway takes before it activates. Default is 10 minutes. Only matters if roundstart_away is enabled. /datum/config_entry/number/gateway_delay @@ -834,3 +832,6 @@ protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN /datum/config_entry/str_list/lobby_music + +/datum/config_entry/string/override_away_mission + default = null diff --git a/code/controllers/configuration/entries/testing.dm b/code/controllers/configuration/entries/testing.dm index ade389fb95c8..009cc38beed0 100644 --- a/code/controllers/configuration/entries/testing.dm +++ b/code/controllers/configuration/entries/testing.dm @@ -4,3 +4,9 @@ ///Enables bombarda crafting on server. /datum/config_entry/flag/enable_bombarda_craft + +///Enables loading titlescreen only after master has been loaded. +/datum/config_entry/flag/enable_titlescreen_lateload + +///Do not load station +/datum/config_entry/flag/load_no_station diff --git a/code/controllers/globals.dm b/code/controllers/globals.dm index 60c67a662bf1..59b615d68da5 100644 --- a/code/controllers/globals.dm +++ b/code/controllers/globals.dm @@ -34,6 +34,13 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars) return ..() /datum/controller/global_vars/can_vv_get(var_name) + var/static/list/protected_vars = list( + "asays", "admin_log", "logging", "open_logging_views" + ) + + if(!check_rights(R_ADMIN, FALSE, src) && (var_name in protected_vars)) + return FALSE + if(gvars_datum_protected_varlist[var_name]) return FALSE return ..() diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index c326ad0adafc..fc30c731a175 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -322,12 +322,11 @@ SUBSYSTEM_DEF(air) /datum/controller/subsystem/air/proc/setup_allturfs() - var/list/turfs_to_init = block(1, 1, 1, world.maxx, world.maxy, world.maxz) // Clear active turfs - faster than removing every single turf in the world // one-by-one, and Initialize_Atmos only ever adds `src` back in. active_turfs.Cut() var/time = -1 //If it was 0, the very first turfs wouldn't go properly through init. See LINDA_system.dm#95 - for(var/turf/T as anything in turfs_to_init) + for(var/turf/T as anything in ALL_TURFS()) if(T.blocks_air || !T.init_air) continue T.Initialize_Atmos(time) diff --git a/code/controllers/subsystem/area_contents.dm b/code/controllers/subsystem/area_contents.dm new file mode 100644 index 000000000000..9f7343404465 --- /dev/null +++ b/code/controllers/subsystem/area_contents.dm @@ -0,0 +1,54 @@ +#define ALLOWED_LOOSE_TURFS 500 +/** + * Responsible for managing the sizes of area.contained_turfs and area.turfs_to_uncontain + * These lists do not check for duplicates, which is fine, but it also means they can balloon in size over time + * as a consequence of repeated changes in area in a space + * They additionally may not always resolve often enough to avoid memory leaks + * This is annoying, so lets keep an eye on them and cut them down to size if needed + */ +SUBSYSTEM_DEF(area_contents) + name = "Area Contents" + flags = SS_NO_INIT + runlevels = RUNLEVEL_LOBBY|RUNLEVELS_DEFAULT + var/list/currentrun + var/list/area/marked_for_clearing = list() + +/datum/controller/subsystem/area_contents/get_stat_details() + var/total_clearing_from = 0 + var/total_to_clear = 0 + for(var/area/to_clear as anything in marked_for_clearing) + total_to_clear += length(to_clear.turfs_to_uncontain) + total_clearing_from += length(to_clear.contained_turfs) + return "A:[length(currentrun)] MR:[length(marked_for_clearing)] TC:[total_to_clear] CF:[total_clearing_from]" + + +/datum/controller/subsystem/area_contents/fire(resumed) + if(!resumed) + currentrun = GLOB.areas.Copy() + + while(length(currentrun)) + var/area/test = currentrun[length(currentrun)] + if(length(test.turfs_to_uncontain) > ALLOWED_LOOSE_TURFS) + marked_for_clearing |= test + currentrun.len-- + if(MC_TICK_CHECK) + return + + // Alright, if we've done a scan on all our areas, it's time to knock the existing ones down to size + while(length(marked_for_clearing)) + var/area/clear = marked_for_clearing[length(marked_for_clearing)] + + // The operation of cutting large lists can be expensive + // It scales almost directly with the size of the list we're cutting with + // Because of this, we're gonna stick to cutting 1 entry at a time + // There's no reason to batch it I promise, this is faster. No overtime too + var/amount_cut = 0 + var/list/cut_from = clear.turfs_to_uncontain + for(amount_cut in 1 to length(cut_from)) + clear.contained_turfs -= cut_from[amount_cut] + if(MC_TICK_CHECK) + cut_from.Cut(1, amount_cut + 1) + return + + clear.turfs_to_uncontain = list() + marked_for_clearing.len-- diff --git a/code/controllers/subsystem/augury.dm b/code/controllers/subsystem/augury.dm new file mode 100644 index 000000000000..2ebd6f8c740e --- /dev/null +++ b/code/controllers/subsystem/augury.dm @@ -0,0 +1,78 @@ +SUBSYSTEM_DEF(augury) + name = "Augury" + flags = SS_NO_INIT + runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME + + var/list/watchers = list() + var/list/doombringers = list() + + var/list/observers_given_action = list() + +/datum/controller/subsystem/augury/stat_entry(msg) + msg = "W:[watchers.len]|D:[length(doombringers)]" + return ..() + +/datum/controller/subsystem/augury/proc/register_doom(atom/A, severity) + doombringers[A] = severity + RegisterSignal(A, COMSIG_QDELETING, PROC_REF(unregister_doom)) + +/datum/controller/subsystem/augury/proc/unregister_doom(atom/A) + SIGNAL_HANDLER + UnregisterSignal(A, COMSIG_QDELETING) + doombringers -= A + +/datum/controller/subsystem/augury/fire() + var/biggest_doom = null + var/biggest_threat = null + + for(var/db in doombringers) + var/datum/d = db + if(!d || QDELETED(d)) + doombringers -= d + continue + var/threat = doombringers[d] + if((biggest_threat == null) || (biggest_threat < threat)) + biggest_doom = d + biggest_threat = threat + + if(doombringers.len) + for(var/i in GLOB.player_list) + if(isobserver(i) && (!(observers_given_action[i]))) + var/datum/action/innate/augury/A = new + A.Grant(i) + observers_given_action[i] = TRUE + else + for(var/i in observers_given_action) + if(observers_given_action[i] && isobserver(i)) + var/mob/dead/observer/O = i + for(var/datum/action/innate/augury/A in O.actions) + qdel(A) + observers_given_action -= i + + for(var/w in watchers) + if(!w) + watchers -= w + continue + var/mob/dead/observer/O = w + if(biggest_doom && (!O.orbiting || O.orbiting != biggest_doom)) + O.ManualFollow(biggest_doom) + +/datum/action/innate/augury + name = "Авто-отслеживание обломок" + icon_icon = 'icons/obj/meteor.dmi' + button_icon_state = "flaming" + +/datum/action/innate/augury/Destroy() + if(owner) + SSaugury.watchers -= owner + return ..() + +/datum/action/innate/augury/Activate() + SSaugury.watchers += owner + to_chat(owner, span_notice("Вы теперь автоматически отслеживаете обломки.")) + active = TRUE + +/datum/action/innate/augury/Deactivate() + SSaugury.watchers -= owner + to_chat(owner, span_notice("Вы больше не отслеживаете обломки.")) + active = FALSE diff --git a/code/controllers/subsystem/capitalism.dm b/code/controllers/subsystem/capitalism.dm index b1a7dd0c942a..908d06d0bb55 100644 --- a/code/controllers/subsystem/capitalism.dm +++ b/code/controllers/subsystem/capitalism.dm @@ -24,7 +24,7 @@ SUBSYSTEM_DEF(capitalism) var/list/complited_goals = list() //It is necessary not to pay again for the goal, gagaga var/default_status = FALSE //TRUE if the default is in effect at the station, you can do it in the future, for example, as a cargo modifier - + /datum/controller/subsystem/capitalism/Initialize() accounts_init() salary_account_init() @@ -61,7 +61,7 @@ SUBSYSTEM_DEF(capitalism) complited_goals += goal if(total_station_goal_bounty) - base_account.credit(total_station_goal_bounty, "Начисление награды за выполнение цели.", "Отдел развития Нанотрейзен", base_account.owner_name) + base_account.credit(total_station_goal_bounty, "Начисление награды за выполнение цели.", "Отдел развития НаноТрейзен", base_account.owner_name) smart_job_payment(s_ex_personal_bounry) //status - TRUE/FALSE diff --git a/code/controllers/subsystem/chat.dm b/code/controllers/subsystem/chat.dm index 8ecfa773d5c7..9a1674f35fb0 100644 --- a/code/controllers/subsystem/chat.dm +++ b/code/controllers/subsystem/chat.dm @@ -37,13 +37,19 @@ SUBSYSTEM_DEF(chat) var/oldest = text2num(client_history[1]) for(var/index in 2 to length(client_history)) var/test = text2num(client_history[index]) + if(test < oldest) oldest = test + client_history -= "[oldest]" + return payload /datum/controller/subsystem/chat/proc/send_payload_to_client(client/target, datum/chat_payload/payload) - target.tgui_panel.window.send_message("chat/message", payload.into_message()) + if(!target || !payload) + return + + target.tgui_panel?.window?.send_message("chat/message", payload.into_message()) SEND_TEXT(target, payload.get_content_as_html()) /datum/controller/subsystem/chat/fire() diff --git a/code/controllers/subsystem/dbcore.dm b/code/controllers/subsystem/dbcore.dm index 5bf315823fee..e3c2da658a51 100644 --- a/code/controllers/subsystem/dbcore.dm +++ b/code/controllers/subsystem/dbcore.dm @@ -258,6 +258,73 @@ SUBSYSTEM_DEF(dbcore) return FALSE return new /datum/db_query(connection, sql_query, arguments) +/* + * Takes a list of rows (each row being an associated list of column => value) and inserts them via a single mass query. + * Rows missing columns present in other rows will resolve to SQL NULL + * You are expected to do your own escaping of the data, and expected to provide your own quotes for strings. + * The duplicate_key arg can be true to automatically generate this part of the query + * or set to a string that is appended to the end of the query + * Ignore_errors instructes mysql to continue inserting rows if some of them have errors. + * the erroneous row(s) aren't inserted and there isn't really any way to know why or why errored +*/ +/datum/controller/subsystem/dbcore/proc/MassInsert(table, list/rows, duplicate_key = FALSE, ignore_errors = FALSE, warn = FALSE, async = TRUE, special_columns = null) + if (!table || !rows || !istype(rows)) + return + + // Prepare column list + var/list/columns = list() + var/list/has_question_mark = list() + for (var/list/row in rows) + for (var/column in row) + columns[column] = "?" + has_question_mark[column] = TRUE + for (var/column in special_columns) + columns[column] = special_columns[column] + has_question_mark[column] = findtext(special_columns[column], "?") + + // Prepare SQL query full of placeholders + var/list/query_parts = list("INSERT") + if (ignore_errors) + query_parts += " IGNORE" + query_parts += " INTO " + query_parts += table + query_parts += "\n([columns.Join(", ")])\nVALUES" + + var/list/arguments = list() + var/has_row = FALSE + for (var/list/row in rows) + if (has_row) + query_parts += "," + query_parts += "\n (" + var/has_col = FALSE + for (var/column in columns) + if (has_col) + query_parts += ", " + if (has_question_mark[column]) + var/name = "p[arguments.len]" + query_parts += replacetext(columns[column], "?", ":[name]") + arguments[name] = row[column] + else + query_parts += columns[column] + has_col = TRUE + query_parts += ")" + has_row = TRUE + + if (duplicate_key == TRUE) + var/list/column_list = list() + for (var/column in columns) + column_list += "[column] = VALUES([column])" + query_parts += "\nON DUPLICATE KEY UPDATE [column_list.Join(", ")]" + else if (duplicate_key != FALSE) + query_parts += duplicate_key + + var/datum/db_query/Query = NewQuery(query_parts.Join(), arguments) + if (warn) + . = Query.warn_execute(async) + else + . = Query.Execute(async) + qdel(Query) + /** * Handler to allow many queries to be executed en masse * diff --git a/code/controllers/subsystem/explosions.dm b/code/controllers/subsystem/explosions.dm new file mode 100644 index 000000000000..9e9d5cdf63b1 --- /dev/null +++ b/code/controllers/subsystem/explosions.dm @@ -0,0 +1,472 @@ +//TODO: Flash range does nothing currently + +#define CREAK_DELAY 5 SECONDS //Time taken for the creak to play after explosion, if applicable. +#define DEVASTATION_PROB 30 //The probability modifier for devistation, maths! +#define HEAVY_IMPACT_PROB 5 //ditto +#define FAR_UPPER 60 //Upper limit for the far_volume, distance, clamped. +#define FAR_LOWER 40 //lower limit for the far_volume, distance, clamped. +#define PROB_SOUND 75 //The probability modifier for a sound to be an echo, or a far sound. (0-100) +#define SHAKE_CLAMP 2.5 //The limit for how much the camera can shake for out of view booms. +#define FREQ_UPPER 40 //The upper limit for the randomly selected frequency. +#define FREQ_LOWER 25 //The lower of the above. + +GLOBAL_LIST_EMPTY(explosions) + +SUBSYSTEM_DEF(explosions) + name = "Explosions" + init_order = INIT_ORDER_EXPLOSIONS + priority = FIRE_PRIORITY_EXPLOSIONS + wait = 1 + flags = SS_TICKER + runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME + + var/priority_queue/explosion_queue + + var/reactionary_explosions = FALSE + var/multiz_explosions = FALSE + + // Explosion sounds cache + var/sound/explosion_sound + var/sound/far_explosion_sound + var/sound/creaking_explosion_sound + var/sound/hull_creaking_sound + var/sound/explosion_echo_sound + + +/datum/controller/subsystem/explosions/Initialize() + if(CONFIG_GET(flag/multiz_explosions)) + multiz_explosions = TRUE + if(CONFIG_GET(flag/reactionary_explosions)) + reactionary_explosions = TRUE + explosion_sound = sound(get_sfx("explosion")) + far_explosion_sound = sound('sound/effects/explosionfar.ogg') + creaking_explosion_sound = sound(get_sfx("explosion_creaking")) + hull_creaking_sound = sound(get_sfx("hull_creaking")) + explosion_echo_sound = sound('sound/effects/explosion_distant.ogg') + explosion_queue = new() + return SS_INIT_SUCCESS + + +/datum/controller/subsystem/explosions/fire(resumed = 0) + while(!explosion_queue.is_empty()) + var/datum/explosion_data/data = explosion_queue.peek() + while(!data.affected_turfs_queue.is_empty()) + var/turf/T = data.affected_turfs_queue.dequeue() + if(QDELETED(T)) + continue + var/dist = HYPOTENUSE(T.x, T.y, data.x0, data.y0) + + if(reactionary_explosions) + var/turf_block + var/total_cords = "[T.x],[T.y],[T.z]" + var/prev_block + if(data.multiz_explosion) + turf_block = data.cached_turf_vert_exp_block[T] ? data.cached_turf_vert_exp_block[T] : count_turf_vert_block(T) + if(T != data.epicenter) + var/turf/next_turf = get_step_towards_multiz(T, data.epicenter) + var/next_cords = "[next_turf.x],[next_turf.y],[next_turf.z]" + if(next_turf.z != T.z) + prev_block = data.cached_exp_block[next_cords] ? data.cached_exp_block[next_cords] : count_turf_vert_block(next_turf) + else + prev_block = data.cached_exp_block[next_cords] ? data.cached_exp_block[next_cords] : count_turf_block(next_turf) + + else + turf_block = data.cached_turf_exp_block[T] ? data.cached_turf_exp_block[T] : count_turf_block(T) + + if(T != data.epicenter) + var/turf/next_turf = get_step_towards(T, data.epicenter) + var/next_cords = "[next_turf.x],[next_turf.y],[next_turf.z]" + prev_block = data.cached_exp_block[next_cords] ? data.cached_exp_block[next_cords] : count_turf_block(next_turf) + + if(T == data.epicenter) + data.cached_exp_block[total_cords] = turf_block + dist += prev_block + data.cached_exp_block[total_cords] = prev_block + turf_block + + var/flame_dist = 0 + + if(dist < data.flame_range) + flame_dist = 1 + + if(dist < data.devastation_range) dist = 1 + else if(dist < data.heavy_impact_range) dist = 2 + else if(dist < data.light_impact_range) dist = 3 + else dist = 0 + + //------- TURF FIRES ------- + + if(flame_dist && prob(40) && !isspaceturf(T) && !T.density) + new /obj/effect/hotspot(T) //Mostly for ambience! + if(dist > 0) + if(issimulatedturf(T)) + var/turf/simulated/S = T + var/affecting_level + if(dist == 1) + affecting_level = 1 + else + affecting_level = S.is_shielded() ? 2 : (S.intact ? 2 : 1) + for(var/atom/AM as anything in S) //bypass type checking since only atom can be contained by turfs anyway + if(!QDELETED(AM) && AM.simulated) + if(AM.level >= affecting_level) + AM.ex_act(dist, data.epicenter) + else + for(var/atom/AM as anything in T) //see above + if(!QDELETED(AM) && AM.simulated) + AM.ex_act(dist, data.epicenter) + if(data.breach) + T.ex_act(dist, data.epicenter) + else + T.ex_act(3, data.epicenter) + if(MC_TICK_CHECK) + return + + var/took = stop_watch(data.watch) + //You need to press the DebugGame verb to see these now....they were getting annoying and we've collected a fair bit of data. Just -test- changes to explosion code using this please so we can compare + log_world("## DEBUG: Explosion([data.x0],[data.y0],[data.z0])(d[data.devastation_range],h[data.heavy_impact_range],l[data.light_impact_range]): Took [took] seconds.") + data.log_explosions_machines(took) + qdel(explosion_queue.dequeue()) + if(MC_TICK_CHECK) + return + +/datum/controller/subsystem/explosions/proc/start_explosion(datum/explosion_data/data, adminlog, cause, smoke, silent) + if(adminlog) + data.explosion_log(cause) + if(!silent) + data.play_sounds_and_shake() + data.create_effect(smoke) + data.enqueue_affected_turfs(reactionary_explosions) + explosion_queue.enqueue(data, data.affected_turfs_queue.count) + +/datum/controller/subsystem/explosions/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = TRUE, ignorecap = FALSE, flame_range = 0, silent = FALSE, smoke = TRUE, cause = null, breach = TRUE, protect_epicenter, explosion_direction, explosion_arc) + if(!epicenter) + return FALSE + + var/datum/explosion_data/data = new(get_turf(epicenter), devastation_range, heavy_impact_range, light_impact_range, flash_range, ignorecap, flame_range, breach, multiz_explosions, protect_epicenter, explosion_direction, explosion_arc) + INVOKE_ASYNC(src, PROC_REF(start_explosion), data, adminlog, cause, smoke, silent) + + return TRUE + + +/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog, ignorecap, flame_range, silent, smoke, cause, breach, protect_epicenter = FALSE, explosion_direction = 0, explosion_arc = 360) + SSexplosions.explosion(epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog, ignorecap, flame_range, silent, smoke, cause, breach, protect_epicenter, explosion_direction, explosion_arc) + +/* +* DON'T USE THIS!!! It is not processed by the system and has no radius restrictions. +*/ +/proc/secondaryexplosion(turf/epicenter, range) + for(var/turf/tile in prepare_explosion_turfs(range, epicenter)) + tile.ex_act(2, epicenter) + +/datum/explosion_data + var/orig_dev_range + var/orig_heavy_range + var/orig_light_range + var/orig_max_distance + + var/turf/epicenter + + var/max_range + var/x0 + var/y0 + var/z0 + var/min_z + var/max_z + var/far_dist = 0 + var/flame_range + var/flash_range + var/devastation_range + var/heavy_impact_range + var/light_impact_range + var/explosion_direction = 0 + var/explosion_arc = 360 + var/protect_epicenter = FALSE + var/breach + var/multiz_explosion = FALSE + var/queue/affected_turfs_queue = new() + var/list/cached_turf_exp_block = list() + var/list/cached_turf_vert_exp_block = list() + var/list/cached_exp_block = list() + var/watch + +/datum/explosion_data/New(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, ignorecap = FALSE, flame_range = 0, breach = TRUE, multiz = FALSE, protect_epicenter = FALSE, explosion_direction = 0, explosion_arc = 360) + . = ..() + src.epicenter = epicenter + src.flame_range = flame_range + src.flash_range = flash_range + src.devastation_range = devastation_range + src.heavy_impact_range = heavy_impact_range + src.light_impact_range = light_impact_range + src.breach = breach + src.max_range = max(devastation_range, heavy_impact_range, light_impact_range, flame_range) + src.explosion_arc = explosion_arc + src.explosion_direction = explosion_direction + src.protect_epicenter = protect_epicenter + + orig_dev_range = devastation_range + orig_heavy_range = heavy_impact_range + orig_light_range = light_impact_range + + orig_max_distance = max(devastation_range, heavy_impact_range, light_impact_range, flash_range, flame_range) + + if(multiz) + var/turf/top_turf = get_highest_turf(epicenter) + var/turf/low_turf = get_lowest_turf(epicenter) + max_z = min(top_turf.z, epicenter.z + orig_max_distance) + min_z = max(low_turf.z, epicenter.z - orig_max_distance) + multiz_explosion = multiz && max_z != min_z + + x0 = epicenter.x + y0 = epicenter.y + z0 = epicenter.z + + far_dist = 0 + far_dist += heavy_impact_range * 15 + far_dist += devastation_range * 20 + if(!ignorecap) + clamp_ranges() + watch = start_watch() + +/datum/explosion_data/Destroy() + qdel(affected_turfs_queue) + LAZYCLEARLIST(cached_exp_block) + LAZYNULL(cached_exp_block) + LAZYCLEARLIST(cached_turf_exp_block) + LAZYNULL(cached_turf_exp_block) + LAZYCLEARLIST(cached_turf_vert_exp_block) + LAZYNULL(cached_turf_vert_exp_block) + . = ..() + +/datum/explosion_data/proc/clamp_ranges() + devastation_range = clamp(devastation_range, 0, GLOB.max_ex_devastation_range) + heavy_impact_range = clamp(heavy_impact_range, 0, GLOB.max_ex_heavy_range) + light_impact_range = clamp(light_impact_range, 0, GLOB.max_ex_light_range) + flash_range = clamp(flash_range, 0, GLOB.max_ex_flash_range) + flame_range = clamp(flame_range, 0, GLOB.max_ex_flame_range) + + +/datum/explosion_data/proc/create_effect(smoke) + if(heavy_impact_range > 1) + var/datum/effect_system/explosion/E + if(smoke) + E = new /datum/effect_system/explosion/smoke + else + E = new + E.set_up(epicenter) + E.start() + +/datum/explosion_data/proc/enqueue_affected_turfs(reactionary_explosions) + var/list/affected_turfs = prepare_explosion_turfs(max_range, epicenter, protect_epicenter, explosion_direction, explosion_arc, multiz_explosion, min_z, max_z) + if(reactionary_explosions) + count_reactionary_explosions(affected_turfs) + + for(var/turf in affected_turfs) + affected_turfs_queue.enqueue(turf) + +/datum/explosion_data/proc/count_reactionary_explosions(list/affected_turfs) + for(var/turf/counted_turf as anything in affected_turfs) // we cache the explosion block rating of every turf in the explosion area + cached_turf_exp_block[counted_turf] = count_turf_block(counted_turf) + if(multiz_explosion) + cached_turf_vert_exp_block[counted_turf] = count_turf_vert_block(counted_turf) + +/proc/count_turf_block(turf/counted_turf) + var/block = 0 + if(counted_turf.density && counted_turf.explosion_block) + block += counted_turf.explosion_block + + for(var/atom/object as anything in counted_turf) + var/the_block = object.explosion_block + block += the_block == EXPLOSION_BLOCK_PROC ? object.get_explosion_block() : the_block + return block + +/proc/count_turf_vert_block(turf/counted_turf) + var/block = 0 + if(counted_turf.density && counted_turf.explosion_block) + block += counted_turf.explosion_vertical_block + + for(var/atom/object as anything in counted_turf) + block += object.explosion_vertical_block + return block + +/datum/explosion_data/proc/explosion_log(cause) + var/cause_str + var/atom/cause_atom + var/cause_vv = "" + if(isatom(cause)) + cause_atom = cause + cause_str = cause_atom.name + cause_vv += ADMIN_VV(cause_atom,"VV") + else if(istext(cause)) + cause_str = cause + else if(isnull(cause)) + pass() + else + log_runtime("Bad type of cause for logging explosion.") + + message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) [cause ? "(Cause: [cause_str] [cause_vv])" : ""] [ADMIN_VERBOSEJMP(epicenter)] ") + add_game_logs("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) [cause ? "(Cause: [cause_str])" : ""] [AREACOORD(epicenter)] ") + +/datum/explosion_data/proc/log_explosions_machines(took) + //Machines which report explosions. + for(var/array in GLOB.doppler_arrays) + if(!array) + continue + if(istype(array, /obj/machinery/doppler_array)) + var/obj/machinery/doppler_array/doppler_array = array + doppler_array.sense_explosion(x0,y0,z0,devastation_range,heavy_impact_range,light_impact_range,took,orig_dev_range,orig_heavy_range,orig_light_range) + if(istype(array, /obj/item/clothing/head/helmet/space/hardsuit/rd)) + var/obj/item/clothing/head/helmet/space/hardsuit/rd/helm_array = array + helm_array.sense_explosion(x0,y0,z0,devastation_range,heavy_impact_range,light_impact_range,took,orig_dev_range,orig_heavy_range,orig_light_range) + +/* +* Play sounds; we want sounds to be different depending on distance so we will manually do it ourselves. +* Stereo users will also hear the direction of the explosion! +* Calculate far explosion sound range. Only allow the sound effect for heavy/devastating explosions. +* 3/7/14 will calculate to 80 + 35 +*/ +/datum/explosion_data/proc/play_sounds_and_shake() + var/frequency = get_rand_frequency() + var/on_station = is_station_level(epicenter.z) + var/creaking_explosion = FALSE + + if(prob(devastation_range * DEVASTATION_PROB + heavy_impact_range * HEAVY_IMPACT_PROB) && on_station) // Huge explosions are near guaranteed to make the station creak and whine, smaller ones might. + creaking_explosion = TRUE // prob over 100 always returns true + + for(var/MN in GLOB.player_list) + var/mob/M = MN + // Double check for client + var/turf/M_turf = get_turf(M) + if(M_turf && M_turf.z == z0) + var/dist = get_dist(M_turf, epicenter) + var/baseshakeamount + if(orig_max_distance - dist > 0) + baseshakeamount = sqrt((orig_max_distance - dist) * 0.1) + // If inside the blast radius + world.view - 2 + if(dist <= round(max_range + world.view - 2, 1)) + M.playsound_local(epicenter, null, 100, 1, frequency, S = SSexplosions.explosion_sound) + if(baseshakeamount > 0) + shake_camera(M, 25, clamp(baseshakeamount, 0, 10)) + // You hear a far explosion if you're outside the blast radius. Small bombs shouldn't be heard all over the station. + else if(dist <= far_dist) + var/far_volume = clamp(far_dist / 2, FAR_LOWER, FAR_UPPER) // Volume is based on explosion size and dist + if(creaking_explosion) + M.playsound_local(epicenter, null, far_volume, 1, frequency, S = SSexplosions.creaking_explosion_sound, distance_multiplier = 0) + else if(prob(PROB_SOUND)) // Sound variety during meteor storm/tesloose/other bad event + M.playsound_local(epicenter, null, far_volume, 1, frequency, S = SSexplosions.far_explosion_sound, distance_multiplier = 0) // Far sound + else + M.playsound_local(epicenter, null, far_volume, 1, frequency, S = SSexplosions.explosion_echo_sound, distance_multiplier = 0) // Echo sound + + if(baseshakeamount > 0 || devastation_range) + if(!baseshakeamount) // Devastating explosions rock the station and ground + baseshakeamount = devastation_range * 3 + shake_camera(M, 10, clamp(baseshakeamount * 0.25, 0, SHAKE_CLAMP)) + else if(!isspaceturf(get_turf(M)) && heavy_impact_range) // Big enough explosions echo throughout the hull + var/echo_volume = 40 + if(devastation_range) + baseshakeamount = devastation_range + shake_camera(M, 10, clamp(baseshakeamount * 0.25, 0, SHAKE_CLAMP)) + echo_volume = 60 + M.playsound_local(epicenter, null, echo_volume, 1, frequency, S = SSexplosions.explosion_echo_sound, distance_multiplier = 0) + + if(creaking_explosion) // 5 seconds after the bang, the station begins to creak + addtimer(CALLBACK(M, TYPE_PROC_REF(/mob, playsound_local), epicenter, null, rand(FREQ_LOWER, FREQ_UPPER), 1, frequency, null, null, FALSE, SSexplosions.hull_creaking_sound, 0), CREAK_DELAY) + +/// Returns a list of turfs in X range from the epicenter +/// Returns in a unique order, spiraling outwards +/// This is done to ensure our progressive cache of blast resistance is always valid +/// This is quite fast +/proc/prepare_explosion_turfs(range, turf/epicenter, protect_epicenter, explosion_direction = 0, explosion_arc = 360, multiz = FALSE, min_z, max_z) + var/list/outlist = list() + var/list/candidates = list() + + var/our_x = epicenter.x + var/our_y = epicenter.y + var/our_z = epicenter.z + + if(!multiz) + min_z = our_z + max_z = our_z + + var/max_x = world.maxx + var/max_y = world.maxy + + // Work out the angles to explode between + var/first_angle_limit = WRAP(explosion_direction - explosion_arc * 0.5, 0, 360) + var/second_angle_limit = WRAP(explosion_direction + explosion_arc * 0.5, 0, 360) + + // Get everything in the right order + var/lower_angle_limit + var/upper_angle_limit + var/do_directional + var/reverse_angle + + // Work out which case we're in + if(first_angle_limit == second_angle_limit) // CASE A: FULL CIRCLE + do_directional = FALSE + else if(first_angle_limit < second_angle_limit) // CASE B: When the arc does not cross 0 degrees + lower_angle_limit = first_angle_limit + upper_angle_limit = second_angle_limit + do_directional = TRUE + reverse_angle = FALSE + else if (first_angle_limit > second_angle_limit) // CASE C: When the arc crosses 0 degrees + lower_angle_limit = second_angle_limit + upper_angle_limit = first_angle_limit + do_directional = TRUE + reverse_angle = TRUE + + if(!protect_epicenter) + if(!do_directional) + candidates += epicenter + else + outlist += epicenter + + for(var/i in 1 to range) + var/lowest_x = our_x - i + var/lowest_y = our_y - i + var/lowest_z = our_z - i + var/highest_x = our_x + i + var/highest_y = our_y + i + var/highest_z = our_z + i + // top left to one before top right + if(highest_y <= max_y) + candidates += block(lowest_x, highest_y, min_z, + highest_x - 1, highest_y, max_z) + // top right to one before bottom right + if(highest_x <= max_x) + candidates += block(highest_x, highest_y, min_z, + highest_x, lowest_y + 1, max_z) + + if(multiz && highest_z <= max_z) + candidates += block(lowest_x + 1, highest_y - 1, max_z, + highest_x - 1, lowest_y + 1, max_z) + + // bottom right to one before bottom left + if(lowest_y >= 1) + candidates += block(highest_x, lowest_y, min_z, + lowest_x + 1, lowest_y, max_z) + // bottom left to one before top left + if(lowest_x >= 1) + candidates += block(lowest_x, lowest_y, min_z, + lowest_x, highest_y - 1, max_z) + + if(multiz && lowest_z >= min_z) + candidates += block(lowest_x + 1, highest_y - 1, min_z, + highest_x - 1, lowest_y + 1, max_z) + + if(!do_directional) + outlist = candidates + else + for(var/turf/candidate as anything in candidates) + var/angle = get_angle(epicenter, candidate) + if(ISINRANGE(angle, lower_angle_limit, upper_angle_limit) ^ reverse_angle) + outlist += candidate + return outlist + +#undef CREAK_DELAY +#undef DEVASTATION_PROB +#undef HEAVY_IMPACT_PROB +#undef FAR_UPPER +#undef FAR_LOWER +#undef PROB_SOUND +#undef SHAKE_CLAMP +#undef FREQ_UPPER +#undef FREQ_LOWER diff --git a/code/controllers/subsystem/fluids.dm b/code/controllers/subsystem/fluids.dm new file mode 100644 index 000000000000..314c07c63d70 --- /dev/null +++ b/code/controllers/subsystem/fluids.dm @@ -0,0 +1,252 @@ +// Flags indicating what parts of the fluid the subsystem processes. +/// Indicates that a fluid subsystem processes fluid spreading. +#define SS_PROCESSES_SPREADING (1<<0) +/// Indicates that a fluid subsystem processes fluid effects. +#define SS_PROCESSES_EFFECTS (1<<1) + +/** + * # Fluid Subsystem + * + * A subsystem that processes the propagation and effects of a particular fluid. + * + * Both fluid spread and effect processing are handled through a carousel system. + * Fluids being spread and fluids being processed are organized into buckets. + * Each fresh (non-resumed) fire one bucket of each is selected to be processed. + * These selected buckets are then fully processed. + * The next fresh fire selects the next bucket in each set for processing. + * If this would walk off the end of a carousel list we wrap back to the first element. + * This effectively makes each set a circular list, hence a carousel. + */ +SUBSYSTEM_DEF(fluids) + name = "Fluid" + wait = 0 // Will be autoset to whatever makes the most sense given the spread and effect waits. + flags = SS_KEEP_TIMING + runlevels = RUNLEVEL_GAME|RUNLEVEL_POSTGAME + priority = FIRE_PRIORITY_FLUIDS + init_order = INIT_ORDER_FLUIDS + + // Fluid spread processing: + /// The amount of time (in deciseconds) before a fluid node is created and when it spreads. + var/spread_wait = 1 SECONDS + /// The number of buckets in the spread carousel. + var/num_spread_buckets + /// The set of buckets containing fluid nodes to spread. + var/list/spread_carousel + /// The index of the spread carousel bucket currently being processed. + var/spread_bucket_index + /// The set of fluid nodes we are currently processing spreading for. + var/list/currently_spreading + + // Fluid effect processing: + /// The amount of time (in deciseconds) between effect processing ticks for each fluid node. + var/effect_wait = 1 SECONDS + /// The number of buckets in the effect carousel. + var/num_effect_buckets + /// The set of buckets containing fluid nodes to process effects for. + var/list/effect_carousel + /// The index of the currently processing bucket on the effect carousel. + var/effect_bucket_index + /// The set of fluid nodes we are currently processing effects for. + var/list/currently_processing + +/datum/controller/subsystem/fluids/Initialize() + initialize_waits() + initialize_spread_carousel() + initialize_effect_carousel() + return SS_INIT_SUCCESS + +/** + * Initializes the subsystem waits. + * + * Ensures that the subsystem's fire wait evenly splits the spread and effect waits. + */ +/datum/controller/subsystem/fluids/proc/initialize_waits() + if(spread_wait <= 0) + WARNING("[src] has the invalid spread wait [spread_wait].") + spread_wait = 1 SECONDS + if(effect_wait <= 0) + WARNING("[src] has the invalid effect wait [effect_wait].") + spread_wait = 1 SECONDS + + // Sets the overall wait of the subsystem to evenly divide both the effect and spread waits. + var/max_wait = Gcd(spread_wait, effect_wait) + if(max_wait < wait || wait <= 0) + wait = max_wait + else + // If the wait of the subsystem overall is set to a valid value make the actual wait of the subsystem evenly divide that as well. + // Makes effect bubbling possible with identical spread and effect waits. + wait = Gcd(wait, max_wait) + + +/** + * Initializes the carousel used to process fluid spreading. + * + * Synchronizes the spread delta time with the actual target spread tick rate. + * Builds the carousel buckets used to queue spreads. + */ +/datum/controller/subsystem/fluids/proc/initialize_spread_carousel() + // Make absolutely certain that the spread wait is in sync with the target spread tick rate. + num_spread_buckets = round(spread_wait / wait) + spread_wait = wait * num_spread_buckets + + spread_carousel = list() + spread_carousel.len = num_spread_buckets + for(var/i in 1 to num_spread_buckets) + spread_carousel[i] = list() + currently_spreading = list() + spread_bucket_index = 1 + +/** + * Initializes the carousel used to process fluid effects. + * + * Synchronizes the spread delta time with the actual target spread tick rate. + * Builds the carousel buckets used to bubble processing. + */ +/datum/controller/subsystem/fluids/proc/initialize_effect_carousel() + // Make absolutely certain that the effect wait is in sync with the target effect tick rate. + num_effect_buckets = round(effect_wait / wait) + effect_wait = wait * num_effect_buckets + + effect_carousel = list() + effect_carousel.len = num_effect_buckets + for(var/i in 1 to num_effect_buckets) + effect_carousel[i] = list() + currently_processing = list() + effect_bucket_index = 1 + + +/datum/controller/subsystem/fluids/fire(resumed) + var/seconds_per_tick + var/cached_bucket_index + var/list/obj/effect/particle_effect/fluid/currentrun + // Ok so like I get the lighting style splittick but why are we doing this churn thing + // It seems like a bad idea for processing to get out of step with spreading + MC_SPLIT_TICK_INIT(2) + + MC_SPLIT_TICK // Start processing fluid spread (we take a lot of cpu for ourselves, spreading is more important after all) + if(!resumed) + spread_bucket_index = WRAP_UP(spread_bucket_index, num_spread_buckets) + currently_spreading = spread_carousel[spread_bucket_index] + spread_carousel[spread_bucket_index] = list() // Reset the bucket so we don't process an _entire station's worth of foam_ spreading every 2 ticks when the foam flood event happens. + + seconds_per_tick = spread_wait / (1 SECONDS) + currentrun = currently_spreading + while(currentrun.len) + var/obj/effect/particle_effect/fluid/to_spread = currentrun[currentrun.len] + currentrun.len-- + + if(!QDELETED(to_spread)) + to_spread.spread(seconds_per_tick) + to_spread.spread_bucket = null + + if(MC_TICK_CHECK) + break + + MC_SPLIT_TICK // Start processing fluid effects: + if(!resumed) + effect_bucket_index = WRAP_UP(effect_bucket_index, num_effect_buckets) + var/list/tmp_list = effect_carousel[effect_bucket_index] + currently_processing = tmp_list.Copy() + + seconds_per_tick = effect_wait / (1 SECONDS) + cached_bucket_index = effect_bucket_index + currentrun = currently_processing + while(currentrun.len) + var/obj/effect/particle_effect/fluid/to_process = currentrun[currentrun.len] + currentrun.len-- + + if(QDELETED(to_process) || to_process.process(seconds_per_tick) == PROCESS_KILL) + effect_carousel[cached_bucket_index] -= to_process + to_process.effect_bucket = null + to_process.datum_flags &= ~DF_ISPROCESSING + + if(MC_TICK_CHECK) + break + +/** + * Queues a fluid node to spread later after one full carousel rotation. + * + * Arguments: + * - [node][/obj/effect/particle_effect/fluid]: The node to queue to spread. + */ +/datum/controller/subsystem/fluids/proc/queue_spread(obj/effect/particle_effect/fluid/node) + if(node.spread_bucket) + return + + spread_carousel[spread_bucket_index] += node + node.spread_bucket = spread_bucket_index + +/** + * Cancels a queued spread of a fluid node. + * + * Arguments: + * - [node][/obj/effect/particle_effect/fluid]: The node to cancel the spread of. + */ +/datum/controller/subsystem/fluids/proc/cancel_spread(obj/effect/particle_effect/fluid/node) + if(!node.spread_bucket) + return + + var/bucket_index = node.spread_bucket + spread_carousel[bucket_index] -= node + if(bucket_index == spread_bucket_index) + currently_spreading -= node + + node.spread_bucket = null + +/** + * Starts processing the effects of a fluid node. + * + * The fluid node will next process after one full bucket rotation. + * + * Arguments: + * - [node][/obj/effect/particle_effect/fluid]: The node to start processing. + */ +/datum/controller/subsystem/fluids/proc/start_processing(obj/effect/particle_effect/fluid/node) + if(node.datum_flags & DF_ISPROCESSING || node.effect_bucket) + return + + // Edit this value to make all fluids process effects (at the same time|offset by when they started processing| -> offset by a random amount <- ) + var/bucket_index = rand(1, num_effect_buckets) + effect_carousel[bucket_index] += node + node.effect_bucket = bucket_index + node.datum_flags |= DF_ISPROCESSING + +/** + * Stops processing the effects of a fluid node. + * + * Arguments: + * - [node][/obj/effect/particle_effect/fluid]: The node to stop processing. + */ +/datum/controller/subsystem/fluids/proc/stop_processing(obj/effect/particle_effect/fluid/node) + if(!(node.datum_flags & DF_ISPROCESSING)) + return + + var/bucket_index = node.effect_bucket + if(!bucket_index) + return + + effect_carousel[bucket_index] -= node + if(bucket_index == effect_bucket_index) + currently_processing -= node + + node.effect_bucket = null + node.datum_flags &= ~DF_ISPROCESSING + +#undef SS_PROCESSES_SPREADING +#undef SS_PROCESSES_EFFECTS + + +// Subtypes: + +/// The subsystem responsible for processing smoke propagation and effects. +FLUID_SUBSYSTEM_DEF(smoke) + name = "Smoke" + spread_wait = 0.1 SECONDS + effect_wait = 2.0 SECONDS + +/// The subsystem responsible for processing foam propagation and effects. +FLUID_SUBSYSTEM_DEF(foam) + name = "Foam" + wait = 0.1 SECONDS // Makes effect bubbling work with foam. + spread_wait = 0.2 SECONDS + effect_wait = 0.2 SECONDS diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index 0371efa9a3ec..a379399f752d 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -38,6 +38,10 @@ SUBSYSTEM_DEF(garbage) #ifdef REFERENCE_TRACKING var/list/reference_find_on_fail = list() var/ref_search_stop = FALSE + #ifdef REFERENCE_TRACKING_DEBUG + //Should we save found refs. Used for unit testing + var/should_save_refs = FALSE + #endif #endif #endif @@ -427,91 +431,80 @@ SUBSYSTEM_DEF(garbage) SSdemo.mark_destroyed(to_delete) #ifdef REFERENCE_TRACKING +#define REFSEARCH_RECURSE_LIMIT 64 -/datum/proc/find_refs() - set category = "Debug" - set name = "Find References" - - if(!check_rights(R_DEBUG)) - return - find_references(FALSE) - -/datum/proc/find_references(skip_alert) +/datum/proc/find_references(references_to_clear = INFINITY) running_find_references = type - if(usr && usr.client) - if(usr.client.running_find_references) - log_gc("CANCELLED search for references to a [usr.client.running_find_references].") - usr.client.running_find_references = null - running_find_references = null - //restart the garbage collector - SSgarbage.can_fire = 1 - SSgarbage.next_fire = world.time + world.tick_lag + if(usr?.client) + if(tgui_alert(usr,"Running this will lock everything up for about 5 minutes. Would you like to begin the search?", "Find References", list("Yes", "No")) != "Yes") return - if(!skip_alert) - if(alert("Running this will lock everything up for about 5 minutes. Would you like to begin the search?", "Find References", "Yes", "No") == "No") - running_find_references = null - return - + src.references_to_clear = references_to_clear //this keeps the garbage collector from failing to collect objects being searched for in here SSgarbage.can_fire = 0 - if(usr && usr.client) - usr.client.running_find_references = type + _search_references() + //restart the garbage collector + SSgarbage.can_fire = TRUE + SSgarbage.update_nextfire(reset_time = TRUE) + +/datum/proc/_search_references() + log_reftracker("Beginning search for references to a [type], looking for [references_to_clear] refs.") - log_gc("Beginning search for references to a [type].") var/starting_time = world.time - DoSearchVar(GLOB, "GLOB") //globals + DoSearchVar(GLOB, "GLOB", starting_time) //globals log_gc("Finished searching globals") + if(references_to_clear == 0) + return + + //Yes we do actually need to do this. The searcher refuses to read weird lists + //And global.vars is a really weird list + var/global_vars = list() + for(var/key in global.vars) + global_vars[key] = global.vars[key] + + DoSearchVar(global_vars, "Native Global", starting_time) + log_reftracker("Finished searching native globals") + + if(references_to_clear == 0) + return + for(var/datum/thing in world) //atoms (don't beleive it's lies) - DoSearchVar(thing, "World -> [thing.type]", search_time = starting_time) + DoSearchVar(thing, "World -> [thing.type]", starting_time) + if(src.references_to_clear == 0) + break log_gc("Finished searching atoms") + if(src.references_to_clear == 0) + return for(var/datum/thing) //datums - DoSearchVar(thing, "World -> [thing.type]", search_time = starting_time) + DoSearchVar(thing, "Datums -> [thing.type]", starting_time) + if(src.references_to_clear == 0) + break log_gc("Finished searching datums") + if(src.references_to_clear == 0) + return for(var/client/thing) //clients - DoSearchVar(thing, "World -> [thing.type]", search_time = starting_time) + DoSearchVar(thing, "Clients -> [thing.type]", starting_time) + if(src.references_to_clear == 0) + break log_gc("Finished searching clients") - - log_gc("Completed search for references to a [type].") - if(usr && usr.client) - usr.client.running_find_references = null - running_find_references = null - - //restart the garbage collector - SSgarbage.can_fire = 1 - SSgarbage.next_fire = world.time + world.tick_lag - -/datum/proc/qdel_then_find_references() - set category = "Debug" - set name = "qdel() then Find References" - if(!check_rights(R_DEBUG)) - return - - qdel(src, TRUE) //force a qdel - if(!running_find_references) - find_references(TRUE) - -/datum/proc/qdel_then_if_fail_find_references() - set category = "Debug" - set name = "qdel() then Find References if GC failure" - if(!check_rights(R_DEBUG)) + if(src.references_to_clear == 0) return - qdel_and_find_ref_if_fail(src, TRUE) + log_gc("Completed search for references to a [type].") -/datum/proc/DoSearchVar(potential_container, container_name, recursive_limit = 64, search_time = world.time) - if((usr?.client && !usr.client.running_find_references) || SSgarbage.ref_search_stop) +/datum/proc/DoSearchVar(potential_container, container_name, search_time, recursion_count, is_special_list) + if(recursion_count >= REFSEARCH_RECURSE_LIMIT) + log_reftracker("Recursion limit reached. [container_name]") return - if(!recursive_limit) - log_gc("Recursion limit reached. [container_name]") + if(references_to_clear == 0) return //Check each time you go down a layer. This makes it a bit slow, but it won't effect the rest of the game at all @@ -526,51 +519,143 @@ SUBSYSTEM_DEF(garbage) datum_container.last_find_references = search_time var/list/vars_list = datum_container.vars - + var/is_atom = FALSE + var/is_area = FALSE + if(isatom(datum_container)) + is_atom = TRUE + if(isarea(datum_container)) + is_area = TRUE for(var/varname in vars_list) - #ifndef FIND_REF_NO_CHECK_TICK - CHECK_TICK - #endif - if(varname == "vars" || varname == "vis_locs") //Fun fact, vis_locs don't count for references - continue + var/variable = vars_list[varname] - if(variable == src) - log_gc("Found [type] \ref[src] in [datum_container.type]'s \ref[datum_container] [varname] var. [container_name]") + if(islist(variable)) + //Fun fact, vis_locs don't count for references + if(varname == "vars" || (is_atom && (varname == "vis_locs" || varname == "overlays" || varname == "underlays" || varname == "filters" || varname == "verbs" || (is_area && varname == "contents")))) + continue + // We do this after the varname check to avoid area contents (reading it incures a world loop's worth of cost) + if(!length(variable)) + continue + DoSearchVar(variable,\ + "[container_name] [datum_container.ref_search_details()] -> [varname] (list)",\ + search_time,\ + recursion_count + 1,\ + /*is_special_list = */ is_atom && (varname == "contents" || varname == "vis_contents" || varname == "locs")) + else if(variable == src) + #ifdef REFERENCE_TRACKING_DEBUG + if(SSgarbage.should_save_refs) + if(!found_refs) + found_refs = list() + found_refs[varname] = TRUE + continue //End early, don't want these logging + else + log_reftracker("Found [type] [text_ref(src)] in [datum_container.type]'s [datum_container.ref_search_details()] [varname] var. [container_name]") + #else + log_reftracker("Found [type] [text_ref(src)] in [datum_container.type]'s [datum_container.ref_search_details()] [varname] var. [container_name]") + #endif + references_to_clear -= 1 + if(references_to_clear == 0) + log_reftracker("All references to [type] [text_ref(src)] found, exiting.") + return continue if(islist(variable)) DoSearchVar(variable, "[container_name] \ref[datum_container] -> [varname] (list)", recursive_limit - 1, search_time) else if(islist(potential_container)) - var/normal = IS_NORMAL_LIST(potential_container) var/list/potential_cache = potential_container for(var/element_in_list in potential_cache) - #ifndef FIND_REF_NO_CHECK_TICK - CHECK_TICK - #endif + //Check normal sublists + if(islist(element_in_list)) + if(length(element_in_list)) + DoSearchVar(element_in_list, "[container_name] -> [element_in_list] (list)", search_time, recursion_count + 1) //Check normal entrys if(element_in_list == src) - log_gc("Found [type] \ref[src] in list [container_name].") - continue + #ifdef REFERENCE_TRACKING_DEBUG + if(SSgarbage.should_save_refs) + if(!found_refs) + found_refs = list() + found_refs[potential_cache] = TRUE + continue + else + log_reftracker("Found [type] [text_ref(src)] in list [container_name].") + #else + log_reftracker("Found [type] [text_ref(src)] in list [container_name].") + #endif + // This is dumb as hell I'm sorry + // I don't want the garbage subsystem to count as a ref for the purposes of this number + // If we find all other refs before it I want to early exit, and if we don't I want to keep searching past it + var/ignore_ref = FALSE + var/list/queues = SSgarbage.queues + for(var/list/queue in queues) + if(potential_cache in queue) + ignore_ref = TRUE + break + if(ignore_ref) + log_reftracker("[container_name] does not count as a ref for our count") + else + references_to_clear -= 1 + if(references_to_clear == 0) + log_reftracker("All references to [type] [text_ref(src)] found, exiting.") + return - var/assoc_val = null - if(!isnum(element_in_list) && normal) - assoc_val = potential_cache[element_in_list] - //Check assoc entrys - if(assoc_val == src) - log_gc("Found [type] \ref[src] in list [container_name]\[[element_in_list]\]") - continue - //We need to run both of these checks, since our object could be hiding in either of them - //Check normal sublists - if(islist(element_in_list)) - DoSearchVar(element_in_list, "[container_name] -> [element_in_list] (list)", recursive_limit - 1, search_time) - //Check assoc sublists - if(islist(assoc_val)) - DoSearchVar(potential_container[element_in_list], "[container_name]\[[element_in_list]\] -> [assoc_val] (list)", recursive_limit - 1, search_time) + if(!isnum(element_in_list) && !is_special_list) + // This exists to catch an error that throws when we access a special list + // is_special_list is a hint, it can be wrong + try + var/assoc_val = potential_cache[element_in_list] + //Check assoc sublists + if(islist(assoc_val)) + if(length(assoc_val)) + DoSearchVar(potential_container[element_in_list], "[container_name]\[[element_in_list]\] -> [assoc_val] (list)", search_time, recursion_count + 1) + //Check assoc entry + else if(assoc_val == src) + #ifdef REFERENCE_TRACKING_DEBUG + if(SSgarbage.should_save_refs) + if(!found_refs) + found_refs = list() + found_refs[potential_cache] = TRUE + continue + else + log_reftracker("Found [type] [text_ref(src)] in list [container_name]\[[element_in_list]\]") + #else + log_reftracker("Found [type] [text_ref(src)] in list [container_name]\[[element_in_list]\]") + #endif + references_to_clear -= 1 + if(references_to_clear == 0) + log_reftracker("All references to [type] [text_ref(src)] found, exiting.") + return + catch + // So if it goes wrong we kill it + is_special_list = TRUE + log_reftracker("Curiosity: [container_name] lead to an error when acessing [element_in_list], what is it?") + +#undef REFSEARCH_RECURSE_LIMIT -#ifndef FIND_REF_NO_CHECK_TICK - CHECK_TICK -#endif +/datum/proc/find_refs() + set category = "Debug" + set name = "Find References" + + if(!check_rights(R_DEBUG)) + return + find_references() + +/datum/proc/qdel_then_find_references() + set category = "Debug" + set name = "qdel() then Find References" + if(!check_rights(R_DEBUG)) + return + + qdel(src, TRUE) //force a qdel + if(!running_find_references) + find_references(TRUE) + +/datum/proc/qdel_then_if_fail_find_references() + set category = "Debug" + set name = "qdel() then Find References if GC failure" + if(!check_rights(R_DEBUG)) + return + + qdel_and_find_ref_if_fail(src, TRUE) #endif diff --git a/code/controllers/subsystem/icon_smooth.dm b/code/controllers/subsystem/icon_smooth.dm index 07aa1838d88f..7648dc8b4bb5 100644 --- a/code/controllers/subsystem/icon_smooth.dm +++ b/code/controllers/subsystem/icon_smooth.dm @@ -7,11 +7,18 @@ SUBSYSTEM_DEF(icon_smooth) offline_implications = "Objects will no longer smooth together properly. No immediate action is needed." cpu_display = SS_CPUDISPLAY_LOW ss_id = "icon_smooth" - + /** + * Used to track instances of icon smooth halters. Does not apply to roundstart loading, however. + * Always make sure to remove halt source from this list on the end of operation. + */ + var/halt_sources = list() var/list/smooth_queue = list() /datum/controller/subsystem/icon_smooth/fire() + if(length(halt_sources)) + return + while(smooth_queue.len) var/atom/A = smooth_queue[smooth_queue.len] smooth_queue.len-- @@ -44,3 +51,9 @@ SUBSYSTEM_DEF(icon_smooth) CHECK_TICK return SS_INIT_SUCCESS + +/datum/controller/subsystem/icon_smooth/proc/add_halt_source(datum/source) + halt_sources += source + +/datum/controller/subsystem/icon_smooth/proc/remove_halt_source(datum/source) + halt_sources -= source diff --git a/code/controllers/subsystem/idlenpcpool.dm b/code/controllers/subsystem/idlenpcpool.dm index d3b3f072fbb3..6a926cdce563 100644 --- a/code/controllers/subsystem/idlenpcpool.dm +++ b/code/controllers/subsystem/idlenpcpool.dm @@ -33,9 +33,8 @@ SUBSYSTEM_DEF(idlenpcpool) /datum/controller/subsystem/idlenpcpool/fire(resumed = FALSE) - if(!resumed) - var/list/idlelist = GLOB.simple_animals[AI_IDLE] - src.currentrun = idlelist.Copy() + var/list/idlelist = GLOB.simple_animals[AI_IDLE] + src.currentrun = idlelist.Copy() //cache for sanic speed (lists are references anyways) var/list/currentrun = src.currentrun diff --git a/code/controllers/subsystem/jobs.dm b/code/controllers/subsystem/jobs.dm index 49efff4ea5bd..28512ef82e74 100644 --- a/code/controllers/subsystem/jobs.dm +++ b/code/controllers/subsystem/jobs.dm @@ -453,23 +453,23 @@ SUBSYSTEM_DEF(jobs) var/list/L = list() L.Add("Вы [alt_title ? alt_title : rank].") L.Add("На этой должности вы отвечаете непосредственно перед [replacetext(job.supervisors,"the ","")]. Особые обстоятельства могут это изменить.") - L.Add("Для получения дополнительной информации о работе на станции, см. Стандартные Рабочие Процедуры (СРП)") + L.Add("Для получения дополнительной информации о работе на станции, см. Стандартные Рабочие Процедуры (СРП)") if(job.is_service) - L.Add("Будучи работником отдела Обслуживания, убедитесь что прочли СРП своего отдела") + L.Add("Будучи работником отдела Обслуживания, убедитесь что прочли СРП своего отдела") if(job.is_supply) - L.Add("Будучи работником отдела Снабжения, убедитесь что прочли СРП своего отдела") + L.Add("Будучи работником отдела Снабжения, убедитесь что прочли СРП своего отдела") if(job.is_command) - L.Add("Будучи важным членом Командования, убедитесь что прочли СРП своего отдела") + L.Add("Будучи важным членом Командования, убедитесь что прочли СРП своего отдела") if(job.is_legal) - L.Add("Ваша должность требует полного знания Космического Закона и Правовых Стандартных Рабочих Процедур") + L.Add("Ваша должность требует полного знания Космического Закона и Правовых Стандартных Рабочих Процедур") if(job.is_engineering) - L.Add("Будучи работником Инженерного отдела, убедитесь что прочли СРП своего отдела") + L.Add("Будучи работником Инженерного отдела, убедитесь что прочли СРП своего отдела") if(job.is_medical) - L.Add("Будучи работником Медицинского отдела, убедитесь что прочли СРП своего отдела") + L.Add("Будучи работником Медицинского отдела, убедитесь что прочли СРП своего отдела") if(job.is_science) - L.Add("Будучи работником Научного отдела, убедитесь что прочли СРП своего отдела") + L.Add("Будучи работником Научного отдела, убедитесь что прочли СРП своего отдела") if(job.is_security) - L.Add("Будучи работником Службы Безопасности, вам необходимо знание Космического Закона, Правовых СРП, а также СРП своего отдела") + L.Add("Будучи работником Службы Безопасности, вам необходимо знание Космического Закона, Правовых СРП, а также СРП своего отдела") if(job.req_admin_notify) L.Add("Вы играете на важной для игрового процесса должности. Если вам необходимо покинуть игру, пожалуйста, используйте крио и проинформируйте командование. Если вы не можете это сделать, пожалуйста, проинформируйте админов через админхэлп.") if(job.is_novice) @@ -638,6 +638,9 @@ SUBSYSTEM_DEF(jobs) /datum/controller/subsystem/jobs/proc/CreateMoneyAccount(mob/living/H, rank, datum/job/job) var/money_amount = rand(job.min_start_money, job.max_start_money) var/datum/money_account/M = create_account(H.real_name, money_amount, null, job, TRUE) + if(H.dna) + GLOB.dna2account[H.dna] = M + var/remembered_info = "" remembered_info += "Номер вашего аккаунта: #[M.account_number]
" @@ -663,6 +666,21 @@ SUBSYSTEM_DEF(jobs) H.mind.initial_account = M + H.mind.initial_account.insurance_type = job.insurance_type + switch (job.insurance_type) + if(INSURANCE_TYPE_NONE) + H.mind.initial_account.insurance = INSURANCE_NONE + if(INSURANCE_TYPE_BUDGETARY) + H.mind.initial_account.insurance = INSURANCE_BUDGETARY + if(INSURANCE_TYPE_STANDART) + H.mind.initial_account.insurance = INSURANCE_STANDART + if(INSURANCE_TYPE_EXTENDED) + H.mind.initial_account.insurance = INSURANCE_EXTENDED + if(INSURANCE_TYPE_DELUXE) + H.mind.initial_account.insurance = INSURANCE_DELUXE + if(INSURANCE_TYPE_NT_SPECIAL) + H.mind.initial_account.insurance = INSURANCE_NT_SPECIAL + spawn(0) to_chat(H, "Номер вашего аккаунта: [M.account_number], ПИН вашего аккаунта: [M.remote_access_pin]") @@ -711,11 +729,11 @@ SUBSYSTEM_DEF(jobs) /datum/controller/subsystem/jobs/proc/account_job_transfer(name_owner, job_title, salary_capcap = TRUE) var/datum/money_account/account_job = get_account_with_name(name_owner) - + if(account_job) account_job.linked_job = SSjobs.GetJob(job_title) account_job.salary_payment_active = salary_capcap - + /datum/controller/subsystem/jobs/proc/notify_dept_head(jobtitle, antext) // Used to notify the department head of jobtitle X that their employee was brigged, demoted or terminated if(!jobtitle || !antext) diff --git a/code/controllers/subsystem/looting.dm b/code/controllers/subsystem/looting.dm new file mode 100644 index 000000000000..9315d8562011 --- /dev/null +++ b/code/controllers/subsystem/looting.dm @@ -0,0 +1,39 @@ + +/// Queues image generation for search objects without icons +SUBSYSTEM_DEF(looting) + name = "Loot Icon Generation" + flags = SS_NO_INIT + priority = FIRE_PRIORITY_PROCESS + wait = 0.5 SECONDS + /// Backlog of items. Gets put into processing + var/list/datum/lootpanel/backlog = list() + /// Actively processing items + var/list/datum/lootpanel/processing = list() + + +/datum/controller/subsystem/looting/stat_entry(msg) + msg = "P:[length(backlog)]" + return ..() + + +/datum/controller/subsystem/looting/fire(resumed) + if(!length(backlog)) + return + + if(!resumed) + processing = backlog + backlog = list() + + while(length(processing)) + var/datum/lootpanel/panel = processing[length(processing)] + if(QDELETED(panel) || !length(panel.to_image)) + processing.len-- + continue + + if(!panel.process_images()) + backlog += panel + + if(MC_TICK_CHECK) + return + + processing.len-- diff --git a/code/controllers/subsystem/non-firing/mapping.dm b/code/controllers/subsystem/mapping.dm similarity index 64% rename from code/controllers/subsystem/non-firing/mapping.dm rename to code/controllers/subsystem/mapping.dm index ce5325f34a82..835fb188f6dd 100644 --- a/code/controllers/subsystem/non-firing/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -1,7 +1,7 @@ SUBSYSTEM_DEF(mapping) name = "Mapping" init_order = INIT_ORDER_MAPPING // 7 - flags = SS_NO_FIRE + runlevels = ALL ss_id = "mapping" /// What map datum are we using var/datum/map/map_datum @@ -17,6 +17,22 @@ SUBSYSTEM_DEF(mapping) var/list/multiz_levels = list() var/list/areas_in_z = list() + + /// Not actually unused turfs they're unused but reserved for use for whatever requests them. "[zlevel_of_turf]" = list(turfs) + var/list/turf/unused_turfs = list() + /// list of turf reservations + var/list/datum/turf_reservations + /// list of turf = datum/turf_reservation + var/list/used_turfs = list() + /// List of lists of turfs to reserve + var/list/lists_to_reserve = list() + + var/list/reservation_ready = list() + var/clearing_reserved_turfs = FALSE + + /// Amount of reserved levels we created so far. Mostly we will have only one + var/num_of_res_levels = 0 + /// List of z level (as number) -> plane offset of that z level /// Used to maintain the plane cube var/list/z_level_to_plane_offset = list() @@ -41,6 +57,8 @@ SUBSYSTEM_DEF(mapping) var/list/critical_planes /// The largest plane offset we've generated so far var/max_plane_offset = 0 + /// Maps played in previous rounds, stores typepaths + var/list/previous_maps // This has to be here because world/New() uses [station_name()], which looks this datum up @@ -57,7 +75,9 @@ SUBSYSTEM_DEF(mapping) catch map_datum = fallback_map // Assume delta if non-existent fdel("data/next_map.txt") // Remove to avoid the same map existing forever + return + map_datum = fallback_map // Assume delta if non-existent /datum/controller/subsystem/mapping/Shutdown() @@ -65,13 +85,50 @@ SUBSYSTEM_DEF(mapping) var/F = file("data/next_map.txt") F << next_map.type + +/datum/controller/subsystem/mapping/proc/convert_map_datums() + var/list/map_subtypes = subtypesof(/datum/map) + var/list/result = list() + for(var/datum/map/subtype as anything in map_subtypes) + result[initial(subtype.name)] = subtype + + return result + +/datum/controller/subsystem/mapping/proc/find_last_played_maps() + if(CONFIG_GET(flag/sql_enabled)) + var/datum/db_query/query = \ + SSdbcore.NewQuery("SELECT id, map_name \ + FROM [format_table_name("round")] \ + WHERE server_port=[world.port] \ + AND end_state IS NOT NULL \ + ORDER BY id DESC LIMIT 1") //Generally gets the last played map, but can be configured to get any count. + + if(!query.warn_execute()) + qdel(query) + return + + var/list/map_names = convert_map_datums() + var/list/maps = list() + //Query row structure: id, map_name + for(var/map in query.rows) + var/map_path = map_names[map[2]] + if(map_path) + maps += map_path + + previous_maps = maps + /datum/controller/subsystem/mapping/Initialize() + if(initialized) + return setupPlanes() - + find_last_played_maps() var/datum/lavaland_theme/lavaland_theme_type = pick(subtypesof(/datum/lavaland_theme)) ASSERT(lavaland_theme_type) lavaland_theme = new lavaland_theme_type log_startup_progress("We're in the mood for [initial(lavaland_theme.name)] today...") //We load this first. In the event some nerd ever makes a surface map, and we don't have it in lavaland in the event lavaland is disabled. + + require_area_resort() + // Start creating z-levels and content in it // Load all Z level templates preloadTemplates() // Load the station @@ -94,7 +151,6 @@ SUBSYSTEM_DEF(mapping) // Setup the Z-level linkage GLOB.space_manager.do_transition_setup() - generate_z_level_linkages(GLOB.space_manager.z_list) if(!CONFIG_GET(flag/disable_lavaland)) // Spawn Lavaland ruins and rivers. @@ -118,43 +174,38 @@ SUBSYSTEM_DEF(mapping) else log_startup_progress("Skipping lavaland ruins...") + // Create transit/reserve area for shuttle to fly in and out + initialize_reserved_level() + // End creating z-levels + // Re-sort again all areas + require_area_resort() + // reassure that multiz_levels list is filled. (We do it in manage_z_level inside add_new_zlevel) + generate_z_level_linkages(GLOB.space_manager.z_list) + // Now we make a list of areas for teleport locs // TOOD: Make these locs into lists on the SS itself, not globs - - var/list/all_areas = list() - for(var/area/areas in world) - all_areas += areas - - for(var/area/AR as anything in all_areas) + for(var/area/AR as anything in get_sorted_areas()) if(AR.no_teleportlocs) continue if(GLOB.teleportlocs[AR.name]) continue - var/list/pickable_turfs = list() - for(var/turf/turfs in AR) - pickable_turfs += turfs - break - var/turf/picked = safepick(pickable_turfs) - if(picked && is_station_level(picked.z)) + if(!AR.has_contained_turfs()) + continue + if(is_station_level(AR.z)) GLOB.teleportlocs[AR.name] = AR GLOB.teleportlocs = sortAssoc(GLOB.teleportlocs) - for(var/area/AR as anything in all_areas) + for(var/area/AR as anything in get_sorted_areas()) if(GLOB.ghostteleportlocs[AR.name]) continue - var/list/pickable_turfs = list() - for(var/turf/turfs in AR) - pickable_turfs += turfs - break - if(length(pickable_turfs)) - GLOB.ghostteleportlocs[AR.name] = AR + GLOB.ghostteleportlocs[AR.name] = AR GLOB.ghostteleportlocs = sortAssoc(GLOB.ghostteleportlocs) // Now we make a list of areas that exist on the station. Good for if you don't want to select areas that exist for one station but not others. Directly references existing_station_areas = list() - for(var/area/AR as anything in all_areas) + for(var/area/AR as anything in get_sorted_areas()) var/list/pickable_turfs = list() for(var/turf/turfs in AR) pickable_turfs += turfs @@ -164,14 +215,73 @@ SUBSYSTEM_DEF(mapping) existing_station_areas += AR // World name - if(config && CONFIG_GET(string/servername)) - world.name = "[CONFIG_GET(string/servername)] — [station_name()]" - else - world.name = station_name() + GLOB.station_name = station_name() + update_world_name() return SS_INIT_SUCCESS +/datum/controller/subsystem/mapping/fire(resumed) + // Cache for sonic speed + var/list/unused_turfs = src.unused_turfs + var/list/world_turf_contents = GLOB.areas_by_type[world.area].contained_turfs + var/list/lists_to_reserve = src.lists_to_reserve + var/index = 0 + while(length(lists_to_reserve)) + var/list/packet = lists_to_reserve[index + 1] + var/packetlen = length(packet) + while(packetlen) + if(MC_TICK_CHECK) + lists_to_reserve.Cut(1, index) + return + var/turf/T = packet[packetlen] + T.empty(RESERVED_TURF_TYPE, RESERVED_TURF_TYPE, null, TRUE) + LAZYINITLIST(unused_turfs["[T.z]"]) + unused_turfs["[T.z]"] |= T + var/area/old_area = T.loc + old_area.turfs_to_uncontain += T + T.turf_flags |= UNUSED_RESERVATION_TURF + world_turf_contents += T + packet.len-- + packetlen = length(packet) + + index++ + // If we're here, we're done with that lad + lists_to_reserve.len-- + lists_to_reserve.Cut(1, index) + +/datum/controller/subsystem/mapping/proc/wipe_reservations(wipe_safety_delay = 100) + if(clearing_reserved_turfs || !initialized) //in either case this is just not needed. + return + clearing_reserved_turfs = TRUE + SSshuttle.transit_requesters.Cut() + message_admins("Clearing dynamic reservation space.") + var/list/obj/docking_port/mobile/in_transit = list() + for(var/obj/docking_port/stationary/transit/T in SSshuttle.transit) + if(!istype(T)) + continue + in_transit[T] = T.get_docked() + var/go_ahead = world.time + wipe_safety_delay + if(in_transit.len) + message_admins("Shuttles in transit detected. Attempting to fast travel. Timeout is [go_ahead/10] seconds.") + var/list/cleared = list() + for(var/i in in_transit) + INVOKE_ASYNC(src, PROC_REF(safety_clear_transit_dock), i, in_transit[i], cleared) + UNTIL((go_ahead < world.time) || (cleared.len == in_transit.len)) + do_wipe_turf_reservations() + clearing_reserved_turfs = FALSE + +/datum/controller/subsystem/mapping/proc/safety_clear_transit_dock(obj/docking_port/stationary/transit/T, obj/docking_port/mobile/M, list/returning) + M.setTimer(0) + var/error = M.dock(M.destination) + if(!error) + returning += M + qdel(T, TRUE) + +/datum/controller/subsystem/mapping/proc/get_reservation_from_turf(turf/T) + RETURN_TYPE(/datum/turf_reservation) + return used_turfs[T] + /datum/controller/subsystem/mapping/proc/setupPlanes() plane_offset_to_true = list() true_to_offset_planes = list() @@ -204,8 +314,27 @@ SUBSYSTEM_DEF(mapping) seedRuins(levels_by_trait(SPAWN_RUINS), rand(20, 30), /area/space, GLOB.space_ruins_templates) log_startup_progress("Successfully seeded ruins in [stop_watch(seed_ruins_timer)]s.") +/datum/controller/subsystem/mapping/proc/create_landmarks(turf/place) + var/landmarks = list( + /obj/effect/landmark/join_late, + /obj/effect/landmark/join_late_cryo, + /obj/effect/landmark/join_late_cyborg, + /obj/effect/landmark/join_late_gateway, + /obj/effect/landmark/observer_start + ) + + landmarks += subtypesof(/obj/effect/landmark/start) + for(var/mark in landmarks) + new mark(place) /datum/controller/subsystem/mapping/proc/loadStation() + if(CONFIG_GET(flag/load_no_station)) + log_startup_progress("Loading empty space...") + var/empty_z_level = GLOB.space_manager.add_new_zlevel(MAIN_STATION, linkage = CROSSLINKED, traits = DEFAULT_STATION_TRATS) + var/turf/centre = locate(world.maxx / 2, world.maxy / 2, empty_z_level) + create_landmarks(centre) + return + if(CONFIG_GET(string/default_map) && !CONFIG_GET(string/override_map) && map_datum == fallback_map) var/map_datum_path = text2path(CONFIG_GET(string/default_map)) if(map_datum_path) @@ -227,7 +356,6 @@ SUBSYSTEM_DEF(mapping) var/watch = start_watch() log_startup_progress("Loading [map_datum.station_name]...") - var/map_z_level if(map_datum.traits && map_datum.traits?.len && islist(map_datum.traits[1])) // we work with list of lists map_z_level = GLOB.space_manager.add_new_zlevel(MAIN_STATION, linkage = map_datum.linkage, traits = map_datum.traits[1]) @@ -268,6 +396,7 @@ SUBSYSTEM_DEF(mapping) GLOB.maploader.load_map(file("_maps/map_files/generic/syndicatebase.dmm"), z_offset = taipan_z_level) log_startup_progress("Loaded Taipan in [stop_watch(watch)]s") +// move it to code/datums/ruins.dm and make global proc plz thx k /datum/controller/subsystem/mapping/proc/seedRuins(list/z_levels = null, budget = 0, whitelist = /area/space, list/potentialRuins) if(!z_levels || !z_levels.len) WARNING("No Z levels provided - Not generating ruins") @@ -357,14 +486,97 @@ SUBSYSTEM_DEF(mapping) log_world("Ruin loader finished with [budget] left to spend.") +/// Adds a new reservation z level. A bit of space that can be handed out on request +/// Of note, reservations default to transit turfs, to make their most common use, shuttles, faster +/datum/controller/subsystem/mapping/proc/add_reservation_zlevel(for_shuttles) + num_of_res_levels++ + var/new_res_z = GLOB.space_manager.add_new_zlevel(RESERVED_ZONE+" #[num_of_res_levels]", linkage = UNAFFECTED, traits = list(ADMIN_LEVEL, BLOCK_TELEPORT, RESERVED_LEVEL)) + return new_res_z + + +/// Requests a /datum/turf_reservation based on the given width, height, and z_size. You can specify a z_reservation to use a specific z level, or leave it null to use any z level. +/datum/controller/subsystem/mapping/proc/request_turf_block_reservation( + width, + height, + z_size = 1, + z_reservation = null, + reservation_type = /datum/turf_reservation, + turf_type_override = null, +) + UNTIL((!z_reservation || reservation_ready["[z_reservation]"]) && !clearing_reserved_turfs) + var/datum/turf_reservation/reserve = new reservation_type + if(!isnull(turf_type_override)) + reserve.turf_type = turf_type_override + if(!z_reservation) + for(var/i in levels_by_trait(RESERVED_LEVEL)) + if(reserve.reserve(width, height, z_size, i)) + return reserve + //If we didn't return at this point, theres a good chance we ran out of room on the exisiting reserved z levels, so lets try a new one + var/datum/space_level/newReserved = add_reservation_zlevel() + initialize_reserved_level(newReserved.zpos) + if(reserve.reserve(width, height, z_size, newReserved.zpos)) + return reserve + else + if(!check_level_trait(z_reservation, RESERVED_LEVEL)) + return + else + if(reserve.reserve(width, height, z_size, z_reservation)) + return reserve + QDEL_NULL(reserve) + +//This is not for wiping reserved levels, use wipe_reservations() for that. +/datum/controller/subsystem/mapping/proc/initialize_reserved_level() + num_of_res_levels++ + var/my_z = GLOB.space_manager.add_new_zlevel(RESERVED_ZONE+" #[num_of_res_levels]", linkage = UNAFFECTED, traits = list(ADMIN_LEVEL, BLOCK_TELEPORT, IMPEDES_MAGIC, RESERVED_LEVEL)) + UNTIL(!clearing_reserved_turfs) //regardless, lets add a check just in case. + clearing_reserved_turfs = TRUE //This operation will likely clear any existing reservations, so lets make sure nothing tries to make one while we're doing it. + var/turf/A = get_turf(locate(SHUTTLE_TRANSIT_BORDER, SHUTTLE_TRANSIT_BORDER, my_z)) + var/turf/B = get_turf(locate(world.maxx - SHUTTLE_TRANSIT_BORDER, world.maxy - SHUTTLE_TRANSIT_BORDER, my_z)) + var/block = block(A, B) + for(var/turf/T in block) + // No need to empty() these, because it's world init and they're already /turf/space. + T.turf_flags |= UNUSED_RESERVATION_TURF + CHECK_TICK + + unused_turfs["[my_z]"] = block + reservation_ready["[my_z]"] = TRUE + clearing_reserved_turfs = FALSE + +/// Schedules a group of turfs to be handed back to the reservation system's control +/// If await is true, will sleep until the turfs are finished work +/datum/controller/subsystem/mapping/proc/reserve_turfs(list/turfs, await = FALSE) + lists_to_reserve += list(turfs) + if(await) + UNTIL(!length(turfs)) + +//DO NOT CALL THIS PROC DIRECTLY, CALL wipe_reservations(). +/datum/controller/subsystem/mapping/proc/do_wipe_turf_reservations() + UNTIL(initialized) //This proc is for AFTER init, before init turf reservations won't even exist and using this will likely break things. + if(SSshuttle && SSshuttle.transit_requesters) + SSshuttle.transit_requesters.Cut() + for(var/i in turf_reservations) + var/datum/turf_reservation/TR = i + if(!QDELETED(TR)) + qdel(TR, TRUE) + UNSETEMPTY(turf_reservations) + var/list/clearing = list() + for(var/l in unused_turfs) //unused_turfs is a assoc list by z = list(turfs) + if(islist(unused_turfs[l])) + clearing |= unused_turfs[l] + //used turfs is an associative list, BUT, reserve_turfs() can still handle it. If the code above works properly, this won't even be needed as the turfs would be freed already. + clearing |= used_turfs + unused_turfs.Cut() + used_turfs.Cut() + reserve_turfs(clearing, await = TRUE) + /// Generate the turfs of the area /datum/controller/subsystem/mapping/proc/run_map_terrain_generation() - for(var/area/A in world) + for(var/area/A in GLOB.areas) A.RunTerrainGeneration() /// Populate the turfs of the area /datum/controller/subsystem/mapping/proc/run_map_terrain_population() - for(var/area/A in world) + for(var/area/A in GLOB.areas) A.RunTerrainPopulation() /datum/controller/subsystem/mapping/proc/generate_z_level_linkages(z_list) @@ -389,10 +601,12 @@ SUBSYSTEM_DEF(mapping) /// Takes a z level datum, and tells the mapping subsystem to manage it /// Also handles things like plane offset generation, and other things that happen on a z level to z level basis -/datum/controller/subsystem/mapping/proc/manage_z_level(datum/space_level/new_z) +/datum/controller/subsystem/mapping/proc/manage_z_level(datum/space_level/new_z, filled_with_space, contain_turfs = TRUE) // Build our lookup lists var/z_value = new_z.zpos - log_debug(z_value) + log_debug("Managed z-level named ([new_z.name]) #[z_value] with flags [list2params(new_z.flags)]") + /// multiz_levels list update + generate_linkages_for_z_level(z_value) // We are guarenteed that we'll always grow bottom up // Suck it jannies z_level_to_plane_offset.len += 1 @@ -409,11 +623,26 @@ SUBSYSTEM_DEF(mapping) if(below_offset) update_plane_tracking(new_z) + if(contain_turfs) + build_area_turfs(z_value, filled_with_space) + // And finally, misc global generation // We'll have to update this if offsets change, because we load lowest z to highest z generate_lighting_appearance_by_z(z_value) +/datum/controller/subsystem/mapping/proc/build_area_turfs(z_level, space_guaranteed) + // If we know this is filled with default tiles, we can use the default area + // Faster + if(space_guaranteed) + var/area/global_area = GLOB.areas_by_type[world.area] + global_area.contained_turfs += Z_TURFS(z_level) + return + + for(var/turf/to_contain as anything in Z_TURFS(z_level)) + var/area/our_area = to_contain.loc + our_area.contained_turfs += to_contain + /datum/controller/subsystem/mapping/proc/update_plane_tracking(datum/space_level/update_with) // We're essentially going to walk down the stack of connected z levels, and set their plane offset as we go var/plane_offset = 0 @@ -469,7 +698,7 @@ SUBSYSTEM_DEF(mapping) var/offset_plane = GET_NEW_PLANE(plane_to_use, plane_offset) var/string_plane = "[offset_plane]" - if(!initial(master_type.allows_offsetting)) + if(initial(master_type.offsetting_flags) & BLOCKS_PLANE_OFFSETTING) plane_offset_blacklist[string_plane] = TRUE var/render_target = initial(master_type.render_target) if(!render_target) @@ -489,10 +718,17 @@ SUBSYSTEM_DEF(mapping) true_to_offset_planes[string_real] |= offset_plane -/proc/generate_lighting_appearance_by_z(z_level) +/datum/controller/subsystem/mapping/proc/generate_lighting_appearance_by_z(z_level) if(length(GLOB.default_lighting_underlays_by_z) < z_level) GLOB.default_lighting_underlays_by_z.len = z_level - GLOB.default_lighting_underlays_by_z[z_level] = mutable_appearance(LIGHTING_ICON, "transparent_lighting_object", z_level, null, LIGHTING_PLANE, 255, RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM, offset_const = GET_Z_PLANE_OFFSET(z_level)) + GLOB.default_lighting_underlays_by_z[z_level] = mutable_appearance(LIGHTING_ICON, "transparent_lighting_object", z_level * 0.01, null, LIGHTING_PLANE, 255, RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM, offset_const = GET_Z_PLANE_OFFSET(z_level)) + +/// Takes a turf or a z level, and returns a list of all the z levels that are connected to it +/datum/controller/subsystem/mapping/proc/get_connected_levels(turf/connected) + var/z_level = connected + if(isturf(z_level)) + z_level = connected.z + return z_level_to_stack[z_level] /datum/controller/subsystem/mapping/Recover() flags |= SS_NO_INIT diff --git a/code/controllers/subsystem/movement/movement.dm b/code/controllers/subsystem/movement/movement.dm index 6363d74cf663..177d200bf1fd 100644 --- a/code/controllers/subsystem/movement/movement.dm +++ b/code/controllers/subsystem/movement/movement.dm @@ -113,6 +113,7 @@ SUBSYSTEM_DEF(movement) BINARY_INSERT_DEFINE(new_bucket, sorted_buckets, SORT_VAR_NO_TYPE, compare_item, SORT_FIRST_INDEX, COMPARE_KEY) our_bucket += loop + uniqueList_inplace(buckets["[loop.queued_time]"]) //ensure there are no copies of themselves /datum/controller/subsystem/movement/proc/dequeue_loop(datum/move_loop/loop) diff --git a/code/controllers/subsystem/non-firing/atoms.dm b/code/controllers/subsystem/non-firing/atoms.dm index 2a2a0caef1fb..ff843736a49f 100644 --- a/code/controllers/subsystem/non-firing/atoms.dm +++ b/code/controllers/subsystem/non-firing/atoms.dm @@ -27,6 +27,7 @@ SUBSYSTEM_DEF(atoms) if(initialized == INITIALIZATION_INSSATOMS) return + SSicon_smooth.add_halt_source(src) initialized = INITIALIZATION_INNEW_MAPLOAD LAZYINITLIST(late_loaders) @@ -79,6 +80,7 @@ SUBSYSTEM_DEF(atoms) log_debug(" Late initialized [length(late_loaders)] atoms in [stop_watch(watch)]s") late_loaders.Cut() + SSicon_smooth.remove_halt_source(src) /datum/controller/subsystem/atoms/proc/InitAtom(atom/A, list/arguments) var/the_type = A.type @@ -127,11 +129,12 @@ SUBSYSTEM_DEF(atoms) /datum/controller/subsystem/atoms/proc/map_loader_begin() old_initialized = initialized initialized = INITIALIZATION_INSSATOMS + SSicon_smooth.add_halt_source(src) /datum/controller/subsystem/atoms/proc/map_loader_stop() initialized = old_initialized - + SSicon_smooth.remove_halt_source(src) /datum/controller/subsystem/atoms/Recover() initialized = SSatoms.initialized diff --git a/code/controllers/subsystem/non-firing/cargo_quests.dm b/code/controllers/subsystem/non-firing/cargo_quests.dm index 663c772a1d59..63b5e4b27865 100644 --- a/code/controllers/subsystem/non-firing/cargo_quests.dm +++ b/code/controllers/subsystem/non-firing/cargo_quests.dm @@ -177,7 +177,7 @@ SUBSYSTEM_DEF(cargo_quests) //Honestly, I don't want to do another procedure for this if(target_storage.quest_difficulty.bounty_for_difficulty) SScapitalism.total_station_bounty += target_storage.quest_difficulty.bounty_for_difficulty - SScapitalism.base_account.credit(target_storage.quest_difficulty.bounty_for_difficulty, "Награда за выполнение корпоративного задания.", "Biesel TCD Terminal #[rand(111,333)]", "Отдел развития Нанотрейзен") + SScapitalism.base_account.credit(target_storage.quest_difficulty.bounty_for_difficulty, "Награда за выполнение корпоративного задания.", "Biesel TCD Terminal #[rand(111,333)]", "Отдел развития НаноТрейзен") return max_reward diff --git a/code/controllers/subsystem/non-firing/holomap.dm b/code/controllers/subsystem/non-firing/holomap.dm new file mode 100644 index 000000000000..62716d761fff --- /dev/null +++ b/code/controllers/subsystem/non-firing/holomap.dm @@ -0,0 +1,192 @@ +/// Turfs that will be colored as HOLOMAP_ROCK +#define IS_ROCK(tile) (istype(tile, /turf/simulated/mineral) && tile.density) +/// Turfs that will be colored as HOLOMAP_OBSTACLE +#define IS_OBSTACLE(tile) (istype(tile, /turf/simulated/wall) || (locate(/obj/structure/window) in tile)) +/// Turfs that will be colored as HOLOMAP_SOFT_OBSTACLE +#define IS_SOFT_OBSTACLE(tile) ((locate(/obj/structure/grille) in tile) || (locate(/obj/structure/lattice) in tile)) +/// Turfs that will be colored as HOLOMAP_PATH +#define IS_PATH(tile) istype(tile, /turf/simulated/floor) +/// Turfs that contain a Z transition, like ladders and stairs. They show with special animations on the map. +#define HAS_Z_TRANSITION(tile) ((locate(/obj/structure/ladder) in tile) || (locate(/obj/structure/stairs) in tile)) + +// Holo-Minimaps Generation Subsystem handles initialization of the holo minimaps. + +SUBSYSTEM_DEF(holomaps) + name = "Holomaps" + init_order = INIT_ORDER_HOLOMAP + flags = SS_NO_FIRE + + var/static/list/valid_map_indexes = list() + var/static/list/holomaps = list() + var/static/list/extra_holomaps = list() + var/static/list/station_holomaps = list() + var/static/list/holomap_z_transitions = list() + var/static/list/list/holomap_position_to_name = list() + +/datum/controller/subsystem/holomaps/Recover() + flags |= SS_NO_INIT // Make extra sure we don't initialize twice. + +/datum/controller/subsystem/holomaps/Initialize(timeofday) + if (generate_holomaps()) + return SS_INIT_SUCCESS + return SS_INIT_FAILURE + +// Holomap generation. + +/// Generates all the holo minimaps, initializing it all nicely, probably. +/datum/controller/subsystem/holomaps/proc/generate_holomaps() + . = TRUE + // Starting over if we're running midround (it runs real fast, so that's possible) + holomaps.Cut() + extra_holomaps.Cut() + for(var/z in levels_by_trait(STATION_LEVEL)) + if(!generate_holomap(z)) + . = FALSE + + if(!generate_default_holomap_legend()) + . = FALSE + + return . + +/datum/controller/subsystem/holomaps/proc/generate_default_holomap_legend() + for(var/department_color in GLOB.holomap_color_to_name) + var/image/marker_icon = image('icons/misc/8x8.dmi', "area_legend") + var/icon/marker_color_overlay = icon('icons/misc/8x8.dmi', "area_legend") + marker_color_overlay.DrawBox(department_color, 1, 1, 8, 8) // Get the whole icon + marker_icon.add_overlay(marker_color_overlay) + GLOB.holomap_default_legend[GLOB.holomap_color_to_name[department_color]] = list( + "icon" = marker_icon, + "markers" = list(), + ) + + return TRUE + +/// Generates the base holomap and the area holomap, before passing the latter to setup_station_map to tidy it up for viewing. +/datum/controller/subsystem/holomaps/proc/generate_holomap(z_level = 1) + // Sanity checks - Better to generate a helpful error message now than have DrawBox() runtime + var/icon/canvas = icon(HOLOMAP_ICON, "blank") + var/icon/area_canvas = icon(HOLOMAP_ICON, "blank") + LAZYINITLIST(SSholomaps.holomap_z_transitions["[z_level]"]) + var/list/z_transition_positions = SSholomaps.holomap_z_transitions["[z_level]"] + + var/list/position_to_name = list() + if(world.maxx > canvas.Width()) + stack_trace("Minimap for z=[z_level] : world.maxx ([world.maxx]) must be <= [canvas.Width()]") + if(world.maxy > canvas.Height()) + stack_trace("Minimap for z=[z_level] : world.maxy ([world.maxy]) must be <= [canvas.Height()]") + + for(var/x = 1 to world.maxx) + for(var/y = 1 to world.maxy) + var/turf/T = locate(x, y, z_level) + var/offset_x = HOLOMAP_CENTER_X + x + var/offset_y = HOLOMAP_CENTER_Y + y + var/area/turf_area = get_area(T) + + if(!T || !turf_area.holomap_should_draw) + continue + + if(turf_area.holomap_color) + area_canvas.DrawBox(turf_area.holomap_color, offset_x, offset_y) + position_to_name["[offset_x]:[offset_y]"] = turf_area.holomap_color == HOLOMAP_AREACOLOR_MAINTENANCE ? "Maintenance" : turf_area.name + + if(IS_ROCK(T)) + canvas.DrawBox(HOLOMAP_ROCK, offset_x, offset_y) + + else if(IS_OBSTACLE(T)) + canvas.DrawBox(HOLOMAP_OBSTACLE, offset_x, offset_y) + + else if(IS_SOFT_OBSTACLE(T)) + canvas.DrawBox(HOLOMAP_SOFT_OBSTACLE, offset_x, offset_y) + + else if(IS_PATH(T)) + canvas.DrawBox(HOLOMAP_PATH, offset_x, offset_y) + + var/z_transition_obj = HAS_Z_TRANSITION(T) + if(!z_transition_obj) + continue + + var/image/image_to_use + + if(istype(z_transition_obj, /obj/structure/stairs)) + if(!z_transition_positions["Ступени вверх"]) + z_transition_positions["Ступени вверх"] = list("icon" = image('icons/misc/8x8.dmi', "stairs"), "markers" = list()) + + image_to_use = image('icons/misc/8x8.dmi', "stairs") + image_to_use.pixel_x = offset_x - 1 // -1 to offset icon properly + image_to_use.pixel_y = offset_y - 1 + + z_transition_positions["Ступени вверх"]["markers"] += image_to_use + + var/turf/checking = get_step_multiz(get_turf(z_transition_obj), UP) + if(!istype(checking)) + continue + + var/list/transitions = SSholomaps.holomap_z_transitions["[checking.z]"] + if(!transitions) + transitions = list() + SSholomaps.holomap_z_transitions["[checking.z]"] = transitions + + image_to_use = image('icons/misc/8x8.dmi', "stairs_down") + image_to_use.pixel_x = checking.x + HOLOMAP_CENTER_X - 1 + image_to_use.pixel_y = checking.y + HOLOMAP_CENTER_Y - 1 + + if(!transitions["Ступени вниз"]) + transitions["Ступени вниз"] = list("icon" = image('icons/misc/8x8.dmi', "stairs_down"), "markers" = list()) + + transitions["Ступени вниз"]["markers"] += image_to_use + continue + + if(!z_transition_positions["Лестница"]) + z_transition_positions["Лестница"] = list("icon" = image('icons/misc/8x8.dmi', "ladder"), "markers" = list()) + + image_to_use = image('icons/misc/8x8.dmi', "ladder") + image_to_use.pixel_x = offset_x - 1 + image_to_use.pixel_y = offset_y - 1 + + z_transition_positions["Лестница"]["markers"] += image_to_use + + // Check sleeping after each row to avoid *completely* destroying the server + CHECK_TICK + + valid_map_indexes += z_level + holomaps["[z_level]"] = canvas + holomap_position_to_name["[z_level]"] = position_to_name + return setup_station_map(area_canvas, z_level) + + +/// Draws the station area overlay. Required to be run if you want the map to be viewable on a station map viewer. +/// Takes the area canvas, and the Z-level value. +/datum/controller/subsystem/holomaps/proc/setup_station_map(icon/canvas, z_level) + // Save this nice area-colored canvas in case we want to layer it or something I guess + extra_holomaps["[HOLOMAP_EXTRA_STATIONMAPAREAS]_[z_level]"] = canvas + + var/icon/map_base = icon(holomaps["[z_level]"]) + map_base.Blend(HOLOMAP_HOLOFIER, ICON_MULTIPLY) + + // Generate the full sized map by blending the base and areas onto the backdrop + var/icon/big_map = icon(HOLOMAP_ICON, "stationmap") + big_map.Blend(map_base, ICON_OVERLAY) + big_map.Blend(canvas, ICON_OVERLAY) + extra_holomaps["[HOLOMAP_EXTRA_STATIONMAP]_[z_level]"] = big_map + + // Generate the "small" map (I presume for putting on wall map things?) + var/icon/small_map = icon(HOLOMAP_ICON, "blank") + small_map.Blend(map_base, ICON_OVERLAY) + small_map.Blend(canvas, ICON_OVERLAY) + small_map.Scale(40, 40) + small_map.Crop(5, 5, 36, 36) + + // And rotate it in every direction of course! + var/icon/actual_small_map = icon(small_map) + actual_small_map.Insert(new_icon = small_map, dir = NORTH) + actual_small_map.Insert(new_icon = turn(small_map, 90), dir = EAST) + actual_small_map.Insert(new_icon = turn(small_map, 180), dir = SOUTH) + actual_small_map.Insert(new_icon = turn(small_map, 270), dir = WEST) + extra_holomaps["[HOLOMAP_EXTRA_STATIONMAPSMALL]_[z_level]"] = actual_small_map + return TRUE + +#undef IS_ROCK +#undef IS_OBSTACLE +#undef IS_SOFT_OBSTACLE +#undef IS_PATH +#undef HAS_Z_TRANSITION diff --git a/code/controllers/subsystem/non-firing/titlescreen.dm b/code/controllers/subsystem/non-firing/titlescreen.dm index 1de3e185f67d..9583d3993a65 100644 --- a/code/controllers/subsystem/non-firing/titlescreen.dm +++ b/code/controllers/subsystem/non-firing/titlescreen.dm @@ -18,9 +18,14 @@ SUBSYSTEM_DEF(title) import_html() fill_title_images_pool() current_title_screen = new(title_html = base_html, screen_image_file = pick_title_image()) - show_title_screen_to_all_new_players() + if(!CONFIG_GET(flag/enable_titlescreen_lateload)) + show_title_screen_to_all_new_players() return SS_INIT_SUCCESS +/datum/controller/subsystem/title/OnMasterLoad() + if(CONFIG_GET(flag/enable_titlescreen_lateload)) + show_title_screen_to_all_new_players() + /datum/controller/subsystem/title/Recover() current_title_screen = SStitle.current_title_screen title_images_pool = SStitle.title_images_pool @@ -224,7 +229,7 @@ SUBSYSTEM_DEF(title) var/screen_image_url = SSassets.transport.get_asset_url(asset_cache_item = screen_image) //hope that client won`t use custom theme - html += {""} + html += {""} html += {""} @@ -273,6 +278,7 @@ SUBSYSTEM_DEF(title) Настройки игры
Настройки громкости + Открыть голосование "} // html += "Сменить сервер" // TODO: add this after regis merge if(!viewer.prefs.discord_id || (viewer.prefs.discord_id && length(viewer.prefs.discord_id) == 32)) diff --git a/code/controllers/subsystem/pathfinder.dm b/code/controllers/subsystem/pathfinder.dm index 379aedc77b2c..664a79b7c693 100644 --- a/code/controllers/subsystem/pathfinder.dm +++ b/code/controllers/subsystem/pathfinder.dm @@ -64,9 +64,9 @@ SUBSYSTEM_DEF(pathfinder) /// Initiates a pathfind. Returns true if we're good, FALSE if something's failed -/datum/controller/subsystem/pathfinder/proc/pathfind(atom/movable/caller, atom/end, max_distance = 30, mintargetdist, access = list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE, diagonal_handling = DIAGONAL_REMOVE_CLUNKY, list/datum/callback/on_finish) +/datum/controller/subsystem/pathfinder/proc/pathfind(atom/movable/requester, atom/end, max_distance = 30, mintargetdist, access = list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE, diagonal_handling = DIAGONAL_REMOVE_CLUNKY, list/datum/callback/on_finish) var/datum/pathfind/jps/path = new() - path.setup(caller, access, max_distance, simulated_only, exclude, on_finish, end, mintargetdist, skip_first, diagonal_handling) + path.setup(requester, access, max_distance, simulated_only, exclude, on_finish, end, mintargetdist, skip_first, diagonal_handling) if(path.start()) active_pathing += path return TRUE @@ -75,21 +75,21 @@ SUBSYSTEM_DEF(pathfinder) /// Initiates a swarmed pathfind. Returns TRUE if we're good, FALSE if something's failed /// If a valid pathmap exists for the TARGET turf we'll use that, otherwise we have to build a new one -/datum/controller/subsystem/pathfinder/proc/swarmed_pathfind(atom/movable/caller, atom/end, max_distance = 30, mintargetdist = 0, age = MAP_REUSE_INSTANT, access = list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE, list/datum/callback/on_finish) +/datum/controller/subsystem/pathfinder/proc/swarmed_pathfind(atom/movable/requester, atom/end, max_distance = 30, mintargetdist = 0, age = MAP_REUSE_INSTANT, access = list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE, list/datum/callback/on_finish) var/turf/target = get_turf(end) - var/datum/can_pass_info/pass_info = new(caller, access) + var/datum/can_pass_info/pass_info = new(requester, access) // If there's a map we can use already, use it var/datum/path_map/valid_map = get_valid_map(pass_info, target, simulated_only, exclude, age, include_building = TRUE) if(valid_map && valid_map.expand(max_distance)) - path_map_passalong(on_finish, get_turf(caller), mintargetdist, skip_first, valid_map) + path_map_passalong(on_finish, get_turf(requester), mintargetdist, skip_first, valid_map) return TRUE // Otherwise we're gonna make a new one, and turn it into a path for the callbacks passed into us var/list/datum/callback/pass_in = list() - pass_in += CALLBACK(GLOBAL_PROC, /proc/path_map_passalong, on_finish, get_turf(caller), mintargetdist, skip_first) + pass_in += CALLBACK(GLOBAL_PROC, /proc/path_map_passalong, on_finish, get_turf(requester), mintargetdist, skip_first) // And to allow subsequent calls to reuse the same map, we'll put a placeholder in the cache, and fill it up when the pathing finishes var/datum/path_map/empty = new() - empty.pass_info = new(caller, access) + empty.pass_info = new(requester, access) empty.start = target empty.pass_space = simulated_only empty.avoid = exclude @@ -141,9 +141,9 @@ SUBSYSTEM_DEF(pathfinder) /// Initiates a SSSP run. Returns true if we're good, FALSE if something's failed -/datum/controller/subsystem/pathfinder/proc/build_map(atom/movable/caller, turf/source, max_distance = 30, access = list(), simulated_only = TRUE, turf/exclude, list/datum/callback/on_finish) +/datum/controller/subsystem/pathfinder/proc/build_map(atom/movable/requester, turf/source, max_distance = 30, access = list(), simulated_only = TRUE, turf/exclude, list/datum/callback/on_finish) var/datum/pathfind/sssp/path = new() - path.setup(caller, access, source, max_distance, simulated_only, exclude, on_finish) + path.setup(requester, access, source, max_distance, simulated_only, exclude, on_finish) if(path.start()) active_pathing += path return TRUE @@ -171,7 +171,7 @@ SUBSYSTEM_DEF(pathfinder) /// Optionally takes a max age to accept (defaults to 0 seconds) and a minimum acceptable range /// If include_building is true and we can only find a building path, we'll use that instead. tho we will wait for it to finish first /datum/controller/subsystem/pathfinder/proc/get_valid_map(datum/can_pass_info/pass_info, turf/target, simulated_only = TRUE, turf/exclude, age = MAP_REUSE_INSTANT, min_range = -INFINITY, include_building = FALSE) - // Walk all the maps that match our caller's turf OR our target's + // Walk all the maps that match our requester's turf OR our target's // Then hold onto em. If their cache time is short we can reuse/expand them, if not we'll have to make a new one var/oldest_time = world.time - age /// Backup return value used if no finished pathmaps are found @@ -201,7 +201,7 @@ SUBSYSTEM_DEF(pathfinder) /// Takes a set of pathfind info, returns all valid pathmaps that would work /// Takes an optional minimum range arg /datum/controller/subsystem/pathfinder/proc/get_valid_maps(datum/can_pass_info/pass_info, turf/target, simulated_only = TRUE, turf/exclude, age = MAP_REUSE_INSTANT, min_range = -INFINITY, include_building = FALSE) - // Walk all the maps that match our caller's turf OR our target's + // Walk all the maps that match our requester's turf OR our target's // Then hold onto em. If their cache time is short we can reuse/expand them, if not we'll have to make a new one var/list/valid_maps = list() var/oldest_time = world.time - age diff --git a/code/controllers/subsystem/processing/ai_controllers.dm b/code/controllers/subsystem/processing/ai_controllers.dm new file mode 100644 index 000000000000..8a563bdc3354 --- /dev/null +++ b/code/controllers/subsystem/processing/ai_controllers.dm @@ -0,0 +1,21 @@ +/// The subsystem used to tick [/datum/ai_controllers] instances. Handling the re-checking of plans. +PROCESSING_SUBSYSTEM_DEF(ai_controllers) + name = "AI behavior" + flags = SS_POST_FIRE_TIMING|SS_BACKGROUND + priority = FIRE_PRIORITY_NPC + runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME + init_order = INIT_ORDER_AI_CONTROLLERS + wait = 8 //Uses the value of CLICK_CD_MELEE because that seemed like a nice standard for the speed of AI behavior + + ///an assoc list of all ai_behaviors by type, to + var/list/ai_behaviors + +/datum/controller/subsystem/processing/ai_controllers/Initialize(timeofday) + SetupAIBehaviors() + return ..() + +/datum/controller/subsystem/processing/ai_controllers/proc/SetupAIBehaviors() + ai_behaviors = list() + for(var/i in subtypesof(/datum/ai_behavior)) + var/datum/ai_behavior/ai_behavior = new i + ai_behaviors[i] = ai_behavior diff --git a/code/controllers/subsystem/processing/dcs.dm b/code/controllers/subsystem/processing/dcs.dm index 1edcb56c40cf..26aedbc9f95e 100644 --- a/code/controllers/subsystem/processing/dcs.dm +++ b/code/controllers/subsystem/processing/dcs.dm @@ -18,7 +18,7 @@ PROCESSING_SUBSYSTEM_DEF(dcs) CRASH("Attempted to instantiate [eletype] as a /datum/element") if(initial(eletype.element_flags) & ELEMENT_BESPOKE) - element_id = GetIdFromArguments(arguments) + element_id = length(arguments) == 1 ? "[arguments[1]]" : GetIdFromArguments(arguments) . = elements_by_type[element_id] if(. || !init_element) @@ -33,24 +33,30 @@ PROCESSING_SUBSYSTEM_DEF(dcs) **/ /datum/controller/subsystem/processing/dcs/proc/GetIdFromArguments(list/arguments) var/datum/element/eletype = arguments[1] - var/list/fullid = list("[eletype]") - var/list/named_arguments = list() + var/list/fullid = list(eletype) + var/list/named_arguments for(var/i in initial(eletype.id_arg_index) to length(arguments)) var/key = arguments[i] - var/value if(istext(key)) - value = arguments[key] - if(!(istext(key) || isnum(key))) - key = "\ref[key]" - key = "[key]" // Key is stringified so numbers dont break things - if(!isnull(value)) - if(!(istext(value) || isnum(value))) - value = "\ref[value]" - named_arguments["[key]"] = value + var/value = arguments[key] + if (isnull(value)) + fullid += key + else + if (!istext(value) && !isnum(value)) + value = isdatum(value)? UID_of(value) : "\ref[value]" + + if (!named_arguments) + named_arguments = list() + named_arguments[key] = value + continue + if (isnum(key)) + fullid += key + else if(isdatum(key)) + fullid += UID_of(key) else - fullid += "[key]" + fullid += "\ref[key]" - if(length(named_arguments)) - named_arguments = sortList(named_arguments) + if(named_arguments) + named_arguments = sortTim(named_arguments, GLOBAL_PROC_REF(cmp_text_asc)) fullid += named_arguments return list2params(fullid) diff --git a/code/controllers/subsystem/processing/obj_tab_items.dm b/code/controllers/subsystem/processing/obj_tab_items.dm deleted file mode 100644 index 617b5e96682b..000000000000 --- a/code/controllers/subsystem/processing/obj_tab_items.dm +++ /dev/null @@ -1,24 +0,0 @@ -PROCESSING_SUBSYSTEM_DEF(obj_tab_items) - name = "Obj Tab Items" - flags = SS_NO_INIT - runlevels = RUNLEVEL_LOBBY | RUNLEVELS_DEFAULT - wait = 0.1 SECONDS - -// I know this is mostly copypasta, but I want to change the processing logic -// Sorry bestie :( -/datum/controller/subsystem/processing/obj_tab_items/fire(resumed = FALSE) - if(!resumed) - currentrun = processing.Copy() - //cache for sanic speed (lists are references anyways) - var/list/current_run = currentrun - - while(length(current_run)) - var/datum/thing = current_run[length(current_run)] - if(QDELETED(thing)) - processing -= thing - else if(thing.process(wait * 0.1) == PROCESS_KILL) - // fully stop so that a future START_PROCESSING will work - STOP_PROCESSING(src, thing) - if(MC_TICK_CHECK) - return - current_run.len-- diff --git a/code/controllers/subsystem/shuttles.dm b/code/controllers/subsystem/shuttles.dm index 2a075b5d7121..eed9e0eff8bc 100644 --- a/code/controllers/subsystem/shuttles.dm +++ b/code/controllers/subsystem/shuttles.dm @@ -1,4 +1,5 @@ #define CALL_SHUTTLE_REASON_LENGTH 12 +#define MAX_TRANSIT_REQUEST_RETRIES 10 SUBSYSTEM_DEF(shuttle) name = "Shuttle" @@ -13,6 +14,11 @@ SUBSYSTEM_DEF(shuttle) var/list/stationary = list() var/list/transit = list() + /// A list of all the mobile docking ports currently requesting a spot in hyperspace. + var/list/transit_requesters = list() + /// An associative list of the mobile docking ports that have failed a transit request, with the amount of times they've actually failed that transit request, up to MAX_TRANSIT_REQUEST_RETRIES + var/list/transit_request_failures = list() + //emergency shuttle stuff var/obj/docking_port/mobile/emergency/emergency var/obj/docking_port/mobile/emergency/backup/backup_shuttle @@ -22,6 +28,7 @@ SUBSYSTEM_DEF(shuttle) var/emergency_sec_level_time = 0 // time sec level was last raised to red or higher var/area/emergencyLastCallLoc var/emergencyNoEscape + var/list/hostile_environment = list() //supply shuttle stuff var/obj/docking_port/mobile/supply/supply @@ -49,11 +56,12 @@ SUBSYSTEM_DEF(shuttle) cargo_money_account = GLOB.department_accounts["Cargo"] if(!emergency) - WARNING("No /obj/docking_port/mobile/emergency placed on the map!") - if(!backup_shuttle) - WARNING("No /obj/docking_port/mobile/emergency/backup placed on the map!") + log_runtime(EXCEPTION("No /obj/docking_port/mobile/emergency placed on the map!")) + if(!backup_shuttle) + message_admins("There's no emergency docking ports on the map! The game will be unresolvable. To resolve this problem load emergency shuttle template manually, and call register() on the mobile docking port.") + log_runtime(EXCEPTION("AND NO /obj/docking_port/mobile/emergency/backup placed on the map!")) if(!supply) - WARNING("No /obj/docking_port/mobile/supply placed on the map!") + log_runtime(EXCEPTION("No /obj/docking_port/mobile/supply placed on the map!")) initial_load() @@ -79,24 +87,52 @@ SUBSYSTEM_DEF(shuttle) /datum/controller/subsystem/shuttle/fire(resumed = FALSE) points += points_per_decisecond * wait for(var/thing in mobile) - if(thing) - var/obj/docking_port/mobile/P = thing - P.check() + if(!thing) + mobile.Remove(thing) continue + var/obj/docking_port/mobile/P = thing + P.check() CHECK_TICK - mobile.Remove(thing) + for(var/obj/docking_port/stationary/transit/T in transit) + if(!T.owner) + qdel(T, force=TRUE) + continue + // This next one removes transit docks/zones that aren't + // immediately being used. This will mean that the zone creation + // code will be running a lot. + var/obj/docking_port/mobile/owner = T.owner + if(owner) + var/idle = owner.mode == SHUTTLE_IDLE + var/not_centcom_evac = owner != emergency + var/not_in_use = (!T.get_docked()) + if(idle && not_centcom_evac && not_in_use) + qdel(T, force=TRUE) + + if(!SSmapping.clearing_reserved_turfs) + while(transit_requesters.len) + var/requester = popleft(transit_requesters) + var/success = generate_transit_dock(requester) + if(!success) // BACK OF THE QUEUE + transit_request_failures[requester]++ + if(transit_request_failures[requester] < MAX_TRANSIT_REQUEST_RETRIES) + transit_requesters += requester + else + var/obj/docking_port/mobile/M = requester + M.transit_failure() + if(MC_TICK_CHECK) + break /datum/controller/subsystem/shuttle/proc/getShuttle(id) for(var/obj/docking_port/mobile/M in mobile) if(M.id == id) return M - WARNING("couldn't find shuttle with id: [id]") + log_runtime(EXCEPTION("couldn't find shuttle with id: [id]")) /datum/controller/subsystem/shuttle/proc/getDock(id) for(var/obj/docking_port/stationary/S in stationary) if(S.id == id) return S - WARNING("couldn't find dock with id: [id]") + log_runtime(EXCEPTION("couldn't find dock with id: [id]")) /datum/controller/subsystem/shuttle/proc/secondsToRefuel() var/elapsed = world.time - SSticker.round_start_time @@ -105,9 +141,11 @@ SUBSYSTEM_DEF(shuttle) /datum/controller/subsystem/shuttle/proc/requestEvac(mob/user, call_reason) if(!emergency) - WARNING("requestEvac(): There is no emergency shuttle, but the shuttle was called. Using the backup shuttle instead.") + log_runtime(EXCEPTION("requestEvac(): There is no emergency shuttle, but the shuttle was called. Using the backup shuttle instead.")) + message_admins("requestEvac(): There is no emergency shuttle, but the shuttle was called. Using the backup shuttle instead.") if(!backup_shuttle) - WARNING("requestEvac(): There is no emergency shuttle, or backup shuttle!\ + message_admins("requestEvac(): There is no emergency shuttle, or backup shuttle! The game will be unresolvable. This is possibly a mapping error. To resolve this problem load emergency shuttle template manually, and call register() on the mobile docking port.") + WARNING("requestEvac(): There is no emergency shuttle, or backup shuttle! \ The game will be unresolvable.This is possibly a mapping error, \ more likely a bug with the shuttle \ manipulation system, or badminry. It is possible to manually \ @@ -131,6 +169,9 @@ SUBSYSTEM_DEF(shuttle) if(SHUTTLE_DOCKED) to_chat(user, "The emergency shuttle is already here.") return + if(SHUTTLE_IGNITING) + to_chat(user, "The emergency shuttle is firing its engines to leave.") + return if(SHUTTLE_ESCAPE) to_chat(user, "The emergency shuttle is moving away to a safe distance.") return @@ -158,9 +199,6 @@ SUBSYSTEM_DEF(shuttle) add_game_logs("has called the shuttle.", user) message_admins("[key_name_admin(user)] has called the shuttle.") - return - - // Called when an emergency shuttle mobile docking port is // destroyed, which will only happen with admin intervention /datum/controller/subsystem/shuttle/proc/emergencyDeregister() @@ -211,7 +249,7 @@ SUBSYSTEM_DEF(shuttle) break if(callShuttle) - if(emergency.mode < SHUTTLE_CALL) + if(emergency.mode == SHUTTLE_IDLE) emergency.request(null, 2.5) add_game_logs("There is no means of calling the shuttle anymore. Shuttle automatically called.") message_admins("All the communications consoles were destroyed and all AIs are inactive. Shuttle called.") @@ -253,6 +291,106 @@ SUBSYSTEM_DEF(shuttle) M.areaInstance << M.fly_sound return 0 //dock successful + +/datum/controller/subsystem/shuttle/proc/request_transit_dock(obj/docking_port/mobile/M) + if(!istype(M)) + throw EXCEPTION("[M] is not a mobile docking port") + + if(M.assigned_transit) + return + else + if(!(M in transit_requesters)) + transit_requesters += M + +/datum/controller/subsystem/shuttle/proc/generate_transit_dock(obj/docking_port/mobile/M) + // First, determine the size of the needed zone + // Because of shuttle rotation, the "width" of the shuttle is not + // always x. + var/travel_dir = M.preferred_direction + // Remember, the direction is the direction we appear to be + // coming from + var/dock_angle = dir2angle(M.preferred_direction) + dir2angle(M.port_direction) + 180 + var/dock_dir = angle2dir(dock_angle) + + var/transit_width = SHUTTLE_TRANSIT_BORDER * 2 + var/transit_height = SHUTTLE_TRANSIT_BORDER * 2 + + // Shuttles travelling on their side have their dimensions swapped + // from our perspective + switch(dock_dir) + if(NORTH, SOUTH) + transit_width += M.width + transit_height += M.height + if(EAST, WEST) + transit_width += M.height + transit_height += M.width + + + var/transit_path = /turf/space/transit + switch(travel_dir) + if(NORTH) + transit_path = /turf/space/transit/north + if(SOUTH) + transit_path = /turf/space/transit/south + if(EAST) + transit_path = /turf/space/transit/east + if(WEST) + transit_path = /turf/space/transit/west + + var/datum/turf_reservation/proposal = SSmapping.request_turf_block_reservation( + transit_width, + transit_height, + 1, + reservation_type = /datum/turf_reservation/transit, + turf_type_override = transit_path, + ) + + if(!istype(proposal)) + return FALSE + + var/turf/bottomleft = proposal.bottom_left_turfs[1] + // Then create a transit docking port in the middle + var/coords = M.return_coords(0, 0, dock_dir) + /* 0------2 + | | + | | + | x | + 3------1 + */ + + var/x0 = coords[1] + var/y0 = coords[2] + var/x1 = coords[3] + var/y1 = coords[4] + // Then we want the point closest to -infinity,-infinity + var/x2 = min(x0, x1) + var/y2 = min(y0, y1) + // Then invert the numbers + var/transit_x = bottomleft.x + SHUTTLE_TRANSIT_BORDER + abs(x2) + var/transit_y = bottomleft.y + SHUTTLE_TRANSIT_BORDER + abs(y2) + + var/turf/midpoint = locate(transit_x, transit_y, bottomleft.z) + if(!midpoint) + return FALSE + var/area/old_area = midpoint.loc + old_area.turfs_to_uncontain += proposal.reserved_turfs + var/area/shuttle/transit/A = new() + A.parallax_movedir = travel_dir + A.contents = proposal.reserved_turfs + A.contained_turfs = proposal.reserved_turfs + var/obj/docking_port/stationary/transit/new_transit_dock = new(midpoint) + new_transit_dock.reserved_area = proposal + new_transit_dock.name = "Transit for [M.id]/[M.name]" + new_transit_dock.owner = M + new_transit_dock.assigned_area = A + + // Add 180, because ports point inwards, rather than outwards + new_transit_dock.setDir(angle2dir(dock_angle)) + + M.assigned_transit = new_transit_dock + return new_transit_dock + + /datum/controller/subsystem/shuttle/proc/initial_move() for(var/obj/docking_port/mobile/M in mobile) if(!M.roundstart_move) @@ -344,3 +482,4 @@ SUBSYSTEM_DEF(shuttle) #undef CALL_SHUTTLE_REASON_LENGTH +#undef MAX_TRANSIT_REQUEST_RETRIES diff --git a/code/controllers/subsystem/statpanel.dm b/code/controllers/subsystem/statpanel.dm index 14b6d85a410c..e28f590f6ec1 100644 --- a/code/controllers/subsystem/statpanel.dm +++ b/code/controllers/subsystem/statpanel.dm @@ -53,10 +53,16 @@ SUBSYSTEM_DEF(statpanels) if(target.stat_tab == "Status" && num_fires % status_wait == 0) set_status_tab(target) - if(!target.holder || !(target.prefs?.toggles2 & PREFTOGGLE_2_MC_TAB)) + var/holder_check = !isnull(target.holder) + + if(!holder_check || !(target.prefs?.toggles2 & PREFTOGGLE_2_MC_TAB)) target.stat_panel.send_message("remove_mc_tab", !target.holder ? TRUE : FALSE) - else if(target.mob && check_rights(R_DEBUG | R_VIEWRUNTIMES, FALSE, target.mob)) + if(holder_check) + target.stat_panel.send_message("update_split_admin_tabs", !!(target.prefs.toggles2 & PREFTOGGLE_2_SPLIT_ADMIN_TABS)) + + if(holder_check && target.mob && check_rights(R_DEBUG | R_VIEWRUNTIMES, FALSE, target.mob)) + // Shows SDQL2 list if(!length(GLOB.sdql2_queries) && ("SDQL2" in target.panel_tabs)) target.stat_panel.send_message("remove_sdql2") @@ -71,13 +77,6 @@ SUBSYSTEM_DEF(statpanels) if(target.stat_tab == "MC" && ((num_fires % mc_wait == 0))) set_MC_tab(target) - if(target.mob) - var/mob/target_mob = target.mob - // Handle the examined turf of the stat panel, if it's been long enough, or if we've generated new images for it - var/turf/listed_turf = target_mob?.listed_turf - if(listed_turf && num_fires % default_wait == 0) - if(target.stat_tab == listed_turf.name || !(listed_turf.name in target.panel_tabs)) - set_turf_examine_tab(target, target_mob) if(MC_TICK_CHECK) return @@ -108,88 +107,6 @@ SUBSYSTEM_DEF(statpanels) sdql2A += sdql2B target.stat_panel.send_message("update_sdql2", sdql2A) -/datum/controller/subsystem/statpanels/proc/set_turf_examine_tab(client/target, mob/target_mob) - var/list/overrides = list() - for(var/image/target_image as anything in target.images) - if(!target_image.loc || target_image.loc.loc != target_mob.listed_turf || !target_image.override) - continue - overrides += target_image.loc - - var/list/atoms_to_display = list(target_mob.listed_turf) - for(var/atom/movable/turf_content as anything in target_mob.listed_turf) - if(turf_content.mouse_opacity == MOUSE_OPACITY_TRANSPARENT) - continue - if(turf_content.invisibility > target_mob.see_invisible) - continue - if(turf_content in overrides) - continue - if(turf_content.IsObscured()) - continue - if(!turf_content.name) - continue - atoms_to_display += turf_content - - /// Set the atoms we're meant to display - var/datum/object_window_info/obj_window = istype(target.obj_window) ? target.obj_window : new(target) - obj_window.atoms_to_show = atoms_to_display - refresh_client_obj_view(target, obj_window.min_index, obj_window.max_index) - -/datum/controller/subsystem/statpanels/proc/refresh_client_obj_view(client/refresh, min_index = 0, max_index = 30) - var/list/turf_items = return_object_images(refresh, min_index, max_index) - if(!length(turf_items) || !refresh.mob?.listed_turf) - return - refresh.stat_panel.send_message("update_listedturf", turf_items) - -#define OBJ_IMAGE_LOADING "statpanels obj loading temporary" - -/// Returns all our ready object tab images -/// Returns a list in the form list(list(object_name, object_ref, loaded_image), ...) -/datum/controller/subsystem/statpanels/proc/return_object_images(client/load_from, min_index, max_index) - // You might be inclined to think that this is a waste of cpu time, since we - // A: Double iterate over atoms in the build case, or - // B: Generate these lists over and over in the refresh case - // It's really not very hot. The hot portion of this code is genuinely mostly in the image generation - // So it's ok to pay a performance cost for cleanliness here - - // No turf? go away - if(!load_from.mob?.listed_turf) - return list() - - var/datum/object_window_info/obj_window = load_from.obj_window - if(!obj_window) - return list() - var/list/already_seen = obj_window.atoms_to_images - var/list/to_make = obj_window.atoms_to_imagify - var/list/turf_items = list() - var/i = 0 - for(var/atom/turf_item as anything in obj_window.atoms_to_show) - // Limit what we send to the client's rendered section. - i++ - if(i <= min_index || i > max_index) - continue - - // First, we fill up the list of refs to display - // If we already have one, just use that - var/existing_image = already_seen[turf_item] - if(existing_image == OBJ_IMAGE_LOADING) - continue - // We already have it. Success! - if(existing_image) - turf_items["[i]"] = list("[turf_item.name]", turf_item.UID(), SSassets.transport.get_asset_url(existing_image), existing_image) - continue - // Now, we're gonna queue image generation out of those refs - to_make += turf_item - already_seen[turf_item] = OBJ_IMAGE_LOADING - obj_window.RegisterSignal(turf_item, COMSIG_QDELETING, TYPE_PROC_REF(/datum/object_window_info, viewing_atom_deleted), override = TRUE) // we reset cache if anything in it gets deleted - turf_items["total"] = i - obj_window.min_index = min_index - obj_window.max_index = max_index - if(length(to_make)) - START_PROCESSING(SSobj_tab_items, obj_window) - return turf_items - -#undef OBJ_IMAGE_LOADING - /datum/controller/subsystem/statpanels/proc/generate_mc_data() mc_data = list( list("CPU:", Master.formatcpu(world.cpu)), @@ -217,15 +134,6 @@ SUBSYSTEM_DEF(statpanels) set_status_tab(target) return TRUE - var/mob/target_mob = target.mob - if(target_mob?.listed_turf) - if(!target_mob.TurfAdjacent(target_mob.listed_turf)) - target_mob.set_listed_turf(null) - - else if(target.stat_tab == target_mob?.listed_turf.name || !(target_mob?.listed_turf.name in target.panel_tabs)) - set_turf_examine_tab(target, target_mob) - return TRUE - if(!target.holder) return FALSE @@ -241,113 +149,3 @@ SUBSYSTEM_DEF(statpanels) /// Stat panel window declaration, we don't usually allow this but tgui windows/panels are exceptions /* check_grep:ignore */ /client/var/datum/tgui_window/stat_panel - - -/// Datum that holds and tracks info about a client's object window -/// Really only exists because I want to be able to do logic with signals -/// And need a safe place to do the registration -/datum/object_window_info - /// list of atoms to show to our client via the object tab, at least currently - var/list/atoms_to_show = list() - /// list of atom -> image string for objects we have had in the right click tab - /// this is our caching - var/list/atoms_to_images = list() - /// list of atoms to turn into images for the object tab - var/list/atoms_to_imagify = list() - /// Our owner client - var/client/parent - /// Are we currently tracking a turf? - var/actively_tracking = FALSE - /// The minimum index currently sent to the client. - var/min_index = 0 - /// The maximum index currently sent to the client. - var/max_index = 30 - -/datum/object_window_info/New(client/parent) - . = ..() - src.parent = parent - -/datum/object_window_info/Destroy(force, ...) - atoms_to_show = null - atoms_to_images = null - atoms_to_imagify = null - parent.obj_window = null - parent = null - STOP_PROCESSING(SSobj_tab_items, src) - return ..() - -/// Takes a client, attempts to generate object images for it -/// We will update the client with any improvements we make when we're done -/datum/object_window_info/process(delta_time) - // Cache the datum access for sonic speed - var/list/to_make = atoms_to_imagify - var/list/newly_seen = atoms_to_images - var/index = 0 - for(index in 1 to length(to_make)) - var/atom/thing = to_make[index] - - var/generated_string - if(ismob(thing) || length(thing.overlays) > 2) - generated_string = costly_icon2asset(thing, parent) - else - generated_string = icon2asset(thing, parent) - - newly_seen[thing] = generated_string - if(TICK_CHECK) - to_make.Cut(1, index + 1) - index = 0 - break - // If we've not cut yet, do it now - if(index) - to_make.Cut(1, index + 1) - SSstatpanels.refresh_client_obj_view(parent, min_index, max_index) - if(!length(to_make)) - return PROCESS_KILL - -/datum/object_window_info/proc/start_turf_tracking() - if(actively_tracking) - stop_turf_tracking() - var/static/list/connections = list( - COMSIG_MOVABLE_MOVED = PROC_REF(on_mob_move), - COMSIG_MOB_LOGOUT = PROC_REF(on_mob_logout), - ) - AddComponent(/datum/component/connect_mob_behalf, parent, connections) - actively_tracking = TRUE - -/datum/object_window_info/proc/stop_turf_tracking() - qdel(GetComponent(/datum/component/connect_mob_behalf)) - actively_tracking = FALSE - -/datum/object_window_info/proc/on_mob_move(mob/source) - SIGNAL_HANDLER - var/turf/listed = source.listed_turf - if(!listed || !source.TurfAdjacent(listed)) - source.set_listed_turf(null) - -/datum/object_window_info/proc/on_mob_logout(mob/source) - SIGNAL_HANDLER - on_mob_move(parent.mob) - -/// Clears any cached object window stuff -/// We use hard refs cause we'd need a signal for this anyway. Cleaner this way -/datum/object_window_info/proc/viewing_atom_deleted(atom/deleted) - SIGNAL_HANDLER - atoms_to_show -= deleted - atoms_to_imagify -= deleted - atoms_to_images -= deleted - -/mob/proc/set_listed_turf(turf/new_turf) - listed_turf = new_turf - if(!client) - return - if(!client.obj_window) - client.obj_window = new(client) - if(listed_turf) - client.stat_panel.send_message("create_listedturf", listed_turf.name) - client.obj_window.start_turf_tracking() - client.obj_window.min_index = 0 - client.obj_window.max_index = 30 - SSstatpanels.set_turf_examine_tab(client, src) - else - client.stat_panel.send_message("remove_listedturf") - client.obj_window.stop_turf_tracking() diff --git a/code/controllers/subsystem/text_to_speech.dm b/code/controllers/subsystem/text_to_speech.dm index 667b4904034e..cdfb8adc4a71 100644 --- a/code/controllers/subsystem/text_to_speech.dm +++ b/code/controllers/subsystem/text_to_speech.dm @@ -292,6 +292,7 @@ SUBSYSTEM_DEF(tts) var/dirty_text = message var/text = sanitize_tts_input(dirty_text) + var/whisper = FALSE if(!text || length_char(text) > MAX_MESSAGE_LEN) return @@ -304,6 +305,7 @@ SUBSYSTEM_DEF(tts) if(traits & TTS_TRAIT_PITCH_WHISPER) text = provider.pitch_whisper(text) + whisper = TRUE var/hash = rustg_hash_string(RUSTG_HASH_MD5, lowertext(text)) var/filename = "sound/tts_cache/[seed.name]/[hash]" @@ -311,10 +313,10 @@ SUBSYSTEM_DEF(tts) if(fexists("[filename].ogg")) tts_reused++ tts_rrps_counter++ - play_tts(speaker, listener, filename, is_local, effect, preSFX, postSFX) + play_tts(speaker, listener, filename, is_local, effect, preSFX, postSFX, whisper) return - var/datum/callback/play_tts_cb = CALLBACK(src, PROC_REF(play_tts), speaker, listener, filename, is_local, effect, preSFX, postSFX) + var/datum/callback/play_tts_cb = CALLBACK(src, PROC_REF(play_tts), speaker, listener, filename, is_local, effect, preSFX, postSFX, whisper) if(LAZYLEN(tts_queue[filename])) tts_reused++ @@ -371,7 +373,7 @@ SUBSYSTEM_DEF(tts) tts_queue -= filename -/datum/controller/subsystem/tts/proc/play_tts(atom/speaker, mob/listener, filename, is_local = TRUE, effect = SOUND_EFFECT_NONE, preSFX = null, postSFX = null) +/datum/controller/subsystem/tts/proc/play_tts(atom/speaker, mob/listener, filename, is_local = TRUE, effect = SOUND_EFFECT_NONE, preSFX = null, postSFX = null, whisper = FALSE) if(isnull(listener) || !listener.client) return @@ -393,7 +395,7 @@ SUBSYSTEM_DEF(tts) CRASH("Invalid sound effect chosen.") if(effect != SOUND_EFFECT_NONE) if(!fexists(voice)) - var/datum/callback/play_tts_cb = CALLBACK(src, PROC_REF(play_tts), speaker, listener, filename, is_local, effect, preSFX, postSFX) + var/datum/callback/play_tts_cb = CALLBACK(src, PROC_REF(play_tts), speaker, listener, filename, is_local, effect, preSFX, postSFX, whisper) if(LAZYLEN(tts_effects_queue[voice])) LAZYADD(tts_effects_queue[voice], play_tts_cb) return @@ -411,7 +413,7 @@ SUBSYSTEM_DEF(tts) var/volume = 100 var/channel = CHANNEL_TTS_RADIO if(is_local) - volume = 100 * listener.client.prefs.get_channel_volume(CHANNEL_TTS_LOCAL) + volume = 100 * listener.client.prefs.get_channel_volume(CHANNEL_TTS_LOCAL) / (whisper ? 3 : 1) channel = get_local_channel_by_owner(speaker) var/sound/output = sound(voice) @@ -420,7 +422,7 @@ SUBSYSTEM_DEF(tts) if(isnull(speaker)) output.wait = TRUE output.channel = channel - output.volume = volume * listener.client.prefs.get_channel_volume(CHANNEL_GENERAL) * listener.client.prefs.get_channel_volume(channel) + output.volume = volume * listener.client.prefs.get_channel_volume(CHANNEL_GENERAL) * listener.client.prefs.get_channel_volume(channel) / (whisper ? 3 : 1) output.environment = -1 if(output.volume <= 0) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 8569ab6a2be7..5922c3b384d6 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -130,7 +130,7 @@ SUBSYSTEM_DEF(ticker) SSvote.start_vote(new /datum/vote/crew_transfer) next_autotransfer = world.time + CONFIG_GET(number/vote_autotransfer_interval) - var/game_finished = SSshuttle.emergency.mode >= SHUTTLE_ENDGAME || mode.station_was_nuked + var/game_finished = SSshuttle.emergency.mode == SHUTTLE_ENDGAME || mode.station_was_nuked if(CONFIG_GET(flag/continuous_rounds)) mode.check_finished() // some modes contain var-changing code in here, so call even if we don't uses result else @@ -303,8 +303,8 @@ SUBSYSTEM_DEF(ticker) Master.SetRunLevel(RUNLEVEL_GAME) // Generate the list of empty playable AI cores in the world - for(var/obj/effect/landmark/start/S in GLOB.landmarks_list) - if(S.name != JOB_TITLE_AI) + for(var/obj/effect/landmark/S as anything in GLOB.landmarks_list) + if(S.name != JOB_TITLE_AI && !(triai && S.name == /obj/effect/landmark/event/tripai::name)) continue if(locate(/mob/living) in S.loc) continue @@ -447,6 +447,11 @@ SUBSYSTEM_DEF(ticker) M.ghostize() M.dust() //no mercy CHECK_TICK + for(var/core in GLOB.blob_cores) + var/turf/T = get_turf(core) + if(T && is_station_level(T.z)) + qdel(core) + CHECK_TICK //Now animate the cinematic switch(station_missed) @@ -593,6 +598,10 @@ SUBSYSTEM_DEF(ticker) emobtext += "
" to_chat(world, emobtext) + for(var/team_type in GLOB.antagonist_teams) + var/datum/team/team = GLOB.antagonist_teams[team_type] + team.declare_completion() + mode.declare_completion()//To declare normal completion. //calls auto_declare_completion_* for all modes @@ -640,24 +649,24 @@ SUBSYSTEM_DEF(ticker) /datum/controller/subsystem/ticker/proc/setup_news_feeds() var/datum/feed_channel/newChannel = new /datum/feed_channel - newChannel.channel_name = "Public Station Announcements" - newChannel.author = "Automated Announcement Listing" + newChannel.channel_name = NEWS_CHANNEL_STATION + newChannel.author = EDITOR_STATION newChannel.icon = "bullhorn" newChannel.frozen = TRUE newChannel.admin_locked = TRUE GLOB.news_network.channels += newChannel newChannel = new /datum/feed_channel - newChannel.channel_name = "Nyx Daily" - newChannel.author = "CentComm Minister of Information" + newChannel.channel_name = NEWS_CHANNEL_NYX + newChannel.author = EDITOR_NYX newChannel.icon = "meteor" newChannel.frozen = TRUE newChannel.admin_locked = TRUE GLOB.news_network.channels += newChannel newChannel = new /datum/feed_channel - newChannel.channel_name = "The Gibson Gazette" - newChannel.author = "Editor Mike Hammers" + newChannel.channel_name = NEWS_CHANNEL_GIB + newChannel.author = EDITOR_GIB newChannel.icon = "star" newChannel.frozen = TRUE newChannel.admin_locked = TRUE diff --git a/code/controllers/subsystem/tickets/tickets.dm b/code/controllers/subsystem/tickets/tickets.dm index fa1fa67118e9..c6ef3b2a317d 100644 --- a/code/controllers/subsystem/tickets/tickets.dm +++ b/code/controllers/subsystem/tickets/tickets.dm @@ -387,7 +387,7 @@ UI STUFF /datum/controller/subsystem/tickets/proc/returnUI(tab = TICKET_OPEN) set name = "Open Ticket Interface" - set category = "Tickets" + set category = "Admin.Admin Tickets" //dat var/trStyle = "border-top:2px solid; border-bottom:2px solid; padding-top: 5px; padding-bottom: 5px;" @@ -620,5 +620,13 @@ UI STUFF else message_staff("[usr.client] / ([usr]) снят с тикета [ticket_name] номер [index]", TICKET_STAFF_MESSAGE_ADMIN_CHANNEL) +/datum/controller/subsystem/tickets/can_vv_get(var_name) + var/static/list/protected_vars = list( + "allTickets" + ) + if(!check_rights(R_ADMIN, FALSE, src) && (var_name in protected_vars)) + return FALSE + return TRUE + #undef TICKET_STAFF_MESSAGE_ADMIN_CHANNEL #undef TICKET_STAFF_MESSAGE_PREFIX diff --git a/code/controllers/subsystem/weather.dm b/code/controllers/subsystem/weather.dm index e7e76406dc2b..ba8e9c086c8e 100644 --- a/code/controllers/subsystem/weather.dm +++ b/code/controllers/subsystem/weather.dm @@ -23,6 +23,9 @@ SUBSYSTEM_DEF(weather) var/datum/weather/our_event = V if(our_event.aesthetic || our_event.stage != MAIN_STAGE) continue + if(our_event.self_fire) + our_event.fire() + continue for(var/mob/living/act_on as anything in GLOB.mob_living_list) if(our_event.can_weather_act(act_on)) our_event.weather_act(act_on) diff --git a/code/datums/action.dm b/code/datums/action.dm index 415da08fa9f4..e08a36ed50c1 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -317,6 +317,9 @@ desc = "Toggles if the club's blasts cause friendly fire." button_icon_state = "vortex_ff_on" +/datum/action/item_action/toggle_backpack_light + name = "Toggle Backpack Light" + /datum/action/item_action/toggle_unfriendly_fire/Trigger(left_click = TRUE) if(..()) UpdateButtonIcon() @@ -507,16 +510,22 @@ /datum/action/item_action/toggle_research_scanner name = "Toggle Research Scanner" + /datum/action/item_action/toggle_research_scanner/Trigger(left_click = TRUE) - if(IsAvailable()) - owner.research_scanner = !owner.research_scanner - to_chat(owner, "Research analyzer is now [owner.research_scanner ? "active" : "deactivated"].") - return TRUE + if(!..()) + return FALSE + + owner.research_scanner = !owner.research_scanner + to_chat(owner, span_notice("Вы [owner.research_scanner ? "включили" : "отключили"] исследовательский анализатор.")) + + return TRUE + /datum/action/item_action/toggle_research_scanner/Remove(mob/living/L) if(owner) owner.research_scanner = 0 - ..() + + . = ..() /datum/action/item_action/toggle_research_scanner/ApplyIcon() @@ -525,6 +534,33 @@ button.add_overlay(new_icon) +/datum/action/innate/overdrive + name = "Overdrive" + check_flags = AB_CHECK_CONSCIOUS + var/used = FALSE + +/datum/action/innate/overdrive/Activate() + var/mob/living/silicon/robot/robot = owner + if(used) + return + + if(!do_after(robot, 10 SECONDS) || robot.stat) + return + + robot.rejuvenate() + robot.opened = FALSE + robot.locked = TRUE + robot.SetEmagged(TRUE) + robot.SetLockdown(FALSE) + robot.UnlinkSelf() + used = TRUE + Remove(robot) + +/datum/action/innate/overdrive/ApplyIcon() + button.cut_overlays() + var/static/mutable_appearance/new_icon = mutable_appearance('icons/mob/actions/actions.dmi', "heal", BUTTON_LAYER_ICON, appearance_flags = RESET_COLOR|RESET_ALPHA) + button.add_overlay(new_icon) + /datum/action/item_action/instrument name = "Use Instrument" desc = "Use the instrument specified." @@ -670,7 +706,7 @@ /datum/action/spell_action/AltTrigger() if(target) var/obj/effect/proc_holder/spell/spell = target - spell.AltClick(usr) + owner.base_click_alt(spell) return TRUE /datum/action/spell_action/IsAvailable(message = FALSE) @@ -739,16 +775,18 @@ /datum/action/innate/research_scanner name = "Toggle Research Scanner" -/datum/action/innate/research_scanner/Trigger(left_click = TRUE) - if(IsAvailable()) - owner.research_scanner = !owner.research_scanner - to_chat(owner, "Research analyzer is now [owner.research_scanner ? "active" : "deactivated"].") - return TRUE +/datum/action/innate/research_scanner/Activate() + owner.research_scanner = !owner.research_scanner + to_chat(owner, span_notice("Вы [owner.research_scanner ? "включили" : "отключили"] исследовательский анализатор.")) + + return TRUE + /datum/action/innate/research_scanner/Remove(mob/living/L) if(owner) owner.research_scanner = 0 - ..() + + . = ..() /datum/action/innate/research_scanner/ApplyIcon() diff --git a/code/datums/ai/README.md b/code/datums/ai/README.md new file mode 100644 index 000000000000..189da7c1bbfc --- /dev/null +++ b/code/datums/ai/README.md @@ -0,0 +1,23 @@ +# AI controllers + +## Introduction + +Our AI controller system is an attempt at making it possible to create modularized AI that stores its behavior in datums, while keeping state and decision making in a controller. This allows a more versatile way of creating AI that doesn't rely on OOP as much, and doesn't clutter up the Life() code in Mobs. + +## AI Controllers + +A datum that can be added to any atom in the game. Similarly to components, they might only support a given subtype (e.g. /mob/living), but the idea is that theoretically, you could apply a specific AI controller to a big a group of different types as possible and it would still work. + +These datums handle both the normal movement of mobs, but also their decision making, deciding which actions they will take based on the checks you put into their SelectBehaviors proc. + +If behaviors are selected, and the AI is in range, it will try to perform them. It runs all the behaviors it currently has in parallel; allowing for it to for example screech at someone while trying to attack them. Aslong as it has behaviors running, it will not try to generate new plans, making it not waste CPU when it already has an active goal. + +They also hold data for any of the actions they might need to use, such as cooldowns, whether or not they're currently fighting, etcetera this is stored in the blackboard, more information on that below. + +### Blackboard + +The blackboard is an associated list keyed with strings and with values of whatever you want. These store information the mob has such as "Am I attacking someone", "Do I have a weapon". By using an associated list like this, no data needs to be stored on the actions themselves, and you could make actions that work on multiple ai controllers if you so pleased by making the key to use a variable. + +## AI Behavior + +AI behaviors are the actions an AI can take. These can range from "Do an emote" to "Attack this target until he is dead". They are singletons and should contain nothing but static data. Any dynamic data should be stored in the blackboard, to allow different controllers to use the same behaviors. diff --git a/code/datums/ai/_ai_behaviour.dm b/code/datums/ai/_ai_behaviour.dm new file mode 100644 index 000000000000..3c5154f42a00 --- /dev/null +++ b/code/datums/ai/_ai_behaviour.dm @@ -0,0 +1,17 @@ +///Abstract class for an action an AI can take, can range from movement to grabbing a nearby weapon. +/datum/ai_behavior + ///What distance you need to be from the target to perform the action + var/required_distance = 1 + ///Flags for extra behavior + var/behavior_flags = NONE + +///Called by the AI controller when this action is performed +/datum/ai_behavior/proc/perform(delta_time, datum/ai_controller/controller) + return + +///Called when the action is finished. +/datum/ai_behavior/proc/finish_action(datum/ai_controller/controller, succeeded) + controller.current_behaviors.Remove(src) + if(behavior_flags & AI_BEHAVIOR_REQUIRE_MOVEMENT) //If this was a movement task, reset our movement target. + controller.current_movement_target = null + return diff --git a/code/datums/ai/_ai_controller.dm b/code/datums/ai/_ai_controller.dm new file mode 100644 index 000000000000..45330b744b8a --- /dev/null +++ b/code/datums/ai/_ai_controller.dm @@ -0,0 +1,137 @@ +/* +AI controllers are a datumized form of AI that simulates the input a player would otherwise give to a atom. What this means is that these datums +have ways of interacting with a specific atom and control it. They posses a blackboard with the information the AI knows and has, and will plan behaviors it will try to execute. +*/ + +/datum/ai_controller + ///The atom this controller is controlling + var/atom/pawn + ///Bitfield of traits for this AI to handle extra behavior + var/ai_traits + ///Current actions being performed by the AI. + var/list/current_behaviors = list() + ///Current status of AI (OFF/ON/IDLE) + var/ai_status + ///Current movement target of the AI, generally set by decision making. + var/atom/current_movement_target + ///Delay between atom movements, if this is not a multiplication of the delay in + var/move_delay + ///This is a list of variables the AI uses and can be mutated by actions. When an action is performed you pass this list and any relevant keys for the variables it can mutate. + var/list/blackboard = list() + ///Tracks recent pathing attempts, if we fail too many in a row we fail our current plans. + var/pathing_attempts + +/datum/ai_controller/New(atom/new_pawn) + PossessPawn(new_pawn) + +/datum/ai_controller/Destroy(force, ...) + set_ai_status(AI_STATUS_OFF) + UnpossessPawn() + return ..() + +///Proc to move from one pawn to another, this will destroy the target's existing controller. +/datum/ai_controller/proc/PossessPawn(atom/new_pawn) + if(pawn) //Reset any old signals + UnpossessPawn() + + if(istype(new_pawn.ai_controller)) //Existing AI, kill it. + QDEL_NULL(new_pawn.ai_controller) + + if(TryPossessPawn(new_pawn) & AI_CONTROLLER_INCOMPATIBLE) + qdel(src) + CRASH("[src] attached to [new_pawn] but these are not compatible!") + + pawn = new_pawn + pawn.ai_controller = src + + set_ai_status(AI_STATUS_ON) + + RegisterSignal(pawn, COMSIG_MOB_LOGIN, PROC_REF(on_sentience_gained)) + +///Abstract proc for initializing the pawn to the new controller +/datum/ai_controller/proc/TryPossessPawn(atom/new_pawn) + return + +///Proc for deinitializing the pawn to the old controller +/datum/ai_controller/proc/UnpossessPawn() + UnregisterSignal(pawn, COMSIG_MOB_LOGIN, COMSIG_MOB_LOGOUT) + pawn.ai_controller = null + pawn = null + return + +///Returns TRUE if the ai controller can actually run at the moment. +/datum/ai_controller/proc/able_to_run() + return TRUE + +/// Generates a plan and see if our existing one is still valid. +/datum/ai_controller/process(delta_time) + if(!able_to_run()) + SSmove_manager.stop_looping(pawn) //stop moving + return //this should remove them from processing in the future through event-based stuff. + if(!current_behaviors?.len) + SelectBehaviors(delta_time) + if(!current_behaviors?.len) + PerformIdleBehavior(delta_time) //Do some stupid shit while we have nothing to do + return + + var/want_to_move = FALSE + for(var/i in current_behaviors) + var/datum/ai_behavior/current_behavior = i + if(current_behavior.behavior_flags & AI_BEHAVIOR_REQUIRE_MOVEMENT && current_movement_target && current_behavior.required_distance < get_dist(pawn, current_movement_target)) //Move closer + want_to_move = TRUE + if(current_behavior.behavior_flags & AI_BEHAVIOR_MOVE_AND_PERFORM) //Move and perform the action + current_behavior.perform(delta_time, src) + else //Perform the action + current_behavior.perform(delta_time, src) + + if(want_to_move) + MoveTo(delta_time) //Need to add some code to check if we can perform the actions now without too much overhead + +///Move somewhere using dumb movement (byond base) +/datum/ai_controller/proc/MoveTo(delta_time) + var/current_loc = get_turf(pawn) + + var/get_step = get_step(pawn, get_dir(pawn, current_movement_target)) + if(!is_type_in_typecache(get_step, GLOB.dangerous_turfs)) + step_towards(pawn, current_movement_target) + if(current_loc == get_turf(pawn)) + if(++pathing_attempts >= MAX_PATHING_ATTEMPTS) + CancelActions() + pathing_attempts = 0 + +///Perform some dumb idle behavior. +/datum/ai_controller/proc/PerformIdleBehavior(delta_time) + return + +///This is where you decide what actions are taken by the AI. +/datum/ai_controller/proc/SelectBehaviors(delta_time) + SHOULD_NOT_SLEEP(TRUE) //Fuck you don't sleep in procs like this. + return + +///This proc handles changing ai status, and starts/stops processing if required. +/datum/ai_controller/proc/set_ai_status(new_ai_status) + if(ai_status == new_ai_status) + return FALSE //no change + + ai_status = new_ai_status + switch(ai_status) + if(AI_STATUS_ON) + START_PROCESSING(SSai_controllers, src) + if(AI_STATUS_OFF) + STOP_PROCESSING(SSai_controllers, src) + CancelActions() + +/datum/ai_controller/proc/CancelActions() + for(var/i in current_behaviors) + var/datum/ai_behavior/current_behavior = i + current_behavior.finish_action(src, FALSE) + +/datum/ai_controller/proc/on_sentience_gained() + UnregisterSignal(pawn, COMSIG_MOB_LOGIN) + set_ai_status(AI_STATUS_OFF) //Can't do anything while player is connected + RegisterSignal(pawn, COMSIG_MOB_LOGOUT, PROC_REF(on_sentience_lost)) + +/datum/ai_controller/proc/on_sentience_lost() + UnregisterSignal(pawn, COMSIG_MOB_LOGOUT) + set_ai_status(AI_STATUS_ON) //Can't do anything while player is connected + RegisterSignal(pawn, COMSIG_MOB_LOGIN, PROC_REF(on_sentience_gained)) diff --git a/code/datums/ai/generic_actions.dm b/code/datums/ai/generic_actions.dm new file mode 100644 index 000000000000..9be58fd8e20b --- /dev/null +++ b/code/datums/ai/generic_actions.dm @@ -0,0 +1,14 @@ +/datum/ai_behavior/resist/perform(delta_time, datum/ai_controller/controller) + . = ..() + var/mob/living/living_pawn = controller.pawn + living_pawn.resist() + finish_action(controller, TRUE) + +/datum/ai_behavior/battle_screech + ///List of possible screeches the behavior has + var/list/screeches + +/datum/ai_behavior/battle_screech/perform(delta_time, datum/ai_controller/controller) + var/mob/living/living_pawn = controller.pawn + INVOKE_ASYNC(living_pawn, TYPE_PROC_REF(/mob, emote), pick("screech")) + finish_action(controller, TRUE) diff --git a/code/datums/ai/monkey/monkey_behaviours.dm b/code/datums/ai/monkey/monkey_behaviours.dm new file mode 100644 index 000000000000..ae99ba86ed2d --- /dev/null +++ b/code/datums/ai/monkey/monkey_behaviours.dm @@ -0,0 +1,273 @@ +/datum/ai_behavior/battle_screech/monkey + screeches = list("roar","screech") + +/datum/ai_behavior/monkey_equip + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT + +/datum/ai_behavior/monkey_equip/finish_action(datum/ai_controller/controller, success) + . = ..() + + if(!success) //Don't try again on this item if we failed + var/list/item_blacklist = controller.blackboard[BB_MONKEY_BLACKLISTITEMS] + var/obj/item/target = controller.blackboard[BB_MONKEY_PICKUPTARGET] + + item_blacklist[target] = TRUE + + controller.blackboard[BB_MONKEY_PICKUPTARGET] = null + +/datum/ai_behavior/monkey_equip/proc/equip_item(datum/ai_controller/controller) + var/mob/living/living_pawn = controller.pawn + + var/obj/item/target = controller.blackboard[BB_MONKEY_PICKUPTARGET] + var/best_force = controller.blackboard[BB_MONKEY_BEST_FORCE_FOUND] + + if(!isturf(living_pawn.loc)) + finish_action(controller, FALSE) + return + + if(!target) + finish_action(controller, FALSE) + return + + if(target.anchored) //Can't pick it up, so stop trying. + finish_action(controller, FALSE) + return + + // Strong weapon + else if(target.force > best_force) + living_pawn.drop_all_held_items() + living_pawn.put_in_hands(target) + controller.blackboard[BB_MONKEY_BEST_FORCE_FOUND] = target.force + finish_action(controller, TRUE) + return + + else if(target.slot_flags) //Clothing == top priority + living_pawn.drop_item_ground(target, TRUE) + living_pawn.update_icons() + if(!living_pawn.equip_to_appropriate_slot(target)) + finish_action(controller, FALSE) + return //Already wearing something, in the future this should probably replace the current item but the code didn't actually do that, and I dont want to support it right now. + finish_action(controller, TRUE) + return + + // EVERYTHING ELSE + else if(living_pawn.get_item_by_slot(ITEM_SLOT_HAND_LEFT) || living_pawn.get_item_by_slot(ITEM_SLOT_HAND_RIGHT)) + living_pawn.put_in_hands(target) + finish_action(controller, TRUE) + return + + finish_action(controller, FALSE) + +/datum/ai_behavior/monkey_equip/ground + required_distance = 0 + +/datum/ai_behavior/monkey_equip/ground/perform(delta_time, datum/ai_controller/controller) + equip_item(controller) + +/datum/ai_behavior/monkey_equip/pickpocket + +/datum/ai_behavior/monkey_equip/pickpocket/perform(delta_time, datum/ai_controller/controller) + if(controller.blackboard[BB_MONKEY_PICKPOCKETING]) //We are pickpocketing, don't do ANYTHING!!!! + return + + INVOKE_ASYNC(src, PROC_REF(attempt_pickpocket), controller) + +/datum/ai_behavior/monkey_equip/pickpocket/proc/attempt_pickpocket(datum/ai_controller/controller) + var/obj/item/target = controller.blackboard[BB_MONKEY_PICKUPTARGET] + + var/mob/living/victim = target.loc + + var/mob/living/living_pawn = controller.pawn + + if(!istype(victim)) + finish_action(controller, FALSE) + return + + victim.visible_message(span_warning("[living_pawn] пытается взять [target.declent_ru(ACCUSATIVE)] у [controller.current_movement_target]!"), + span_danger("[living_pawn] пытается взять [target.declent_ru(ACCUSATIVE)]!") + ) + + controller.blackboard[BB_MONKEY_PICKPOCKETING] = TRUE + + var/success = FALSE + + if(do_after(living_pawn, MONKEY_ITEM_SNATCH_DELAY, victim) && target) + for(var/obj/item/I in list(victim.get_active_hand(), victim.get_inactive_hand())) + if(I == target) + victim.visible_message(span_danger("[living_pawn] ворует [target.declent_ru(ACCUSATIVE)] у [victim]!"), + span_userdanger("[living_pawn] своровала [target.declent_ru(ACCUSATIVE)]!") + ) + if(victim.temporarily_remove_item_from_inventory(target)) + if(!QDELETED(target)) + target.forceMove(living_pawn.drop_location()) + equip_item(controller) + success = TRUE + break + else + victim.visible_message(span_danger("[living_pawn] пыта[pluralize_ru(living_pawn.gender,"ется","ются")] украсть [target.declent_ru(ACCUSATIVE)] у [victim], но провалива[pluralize_ru(living_pawn.gender,"ется","ются")]!"), + span_userdanger("[living_pawn] пыта[pluralize_ru(living_pawn.gender,"ется","ются")] украсть [target.declent_ru(ACCUSATIVE)]!") + ) + + finish_action(controller, success) //We either fucked up or got the item. + +/datum/ai_behavior/monkey_equip/pickpocket/finish_action(datum/ai_controller/controller, success) + . = ..() + controller.blackboard[BB_MONKEY_PICKPOCKETING] = FALSE + controller.blackboard[BB_MONKEY_PICKUPTARGET] = null + +/datum/ai_behavior/monkey_flee + +/datum/ai_behavior/monkey_flee/perform(delta_time, datum/ai_controller/controller) + . = ..() + + var/mob/living/living_pawn = controller.pawn + + if(living_pawn.health >= MONKEY_FLEE_HEALTH) + finish_action(controller, TRUE) //we're back in bussiness + + var/mob/living/target = null + + // flee from anyone who attacked us and we didn't beat down + for(var/mob/living/L in view(living_pawn, MONKEY_FLEE_VISION)) + if(controller.blackboard[BB_MONKEY_ENEMIES][L] && L.stat == CONSCIOUS) + target = L + break + + if(target) + SSmove_manager.move_away(living_pawn, target, max_dist = MONKEY_ENEMY_VISION, delay = 5) + else + finish_action(controller, TRUE) + +/datum/ai_behavior/monkey_attack_mob + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_MOVE_AND_PERFORM //performs to increase frustration + +/datum/ai_behavior/monkey_attack_mob/perform(delta_time, datum/ai_controller/controller) + . = ..() + + var/mob/living/target = controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] + var/mob/living/living_pawn = controller.pawn + + if(!target || target.stat != CONSCIOUS) + finish_action(controller, TRUE) //Target == owned + + if(living_pawn.Adjacent(target) && isturf(target.loc) && !living_pawn.incapacitated()) // if right next to perp + // check if target has a weapon + var/obj/item/W + for(var/obj/item/I in list(target.get_active_hand(), target.get_inactive_hand())) + if(!(I.item_flags & ABSTRACT)) + W = I + break + + // if the target has a weapon, chance to disarm them + if(W && SPT_PROB(MONKEY_ATTACK_DISARM_PROB, delta_time)) + living_pawn.a_intent = INTENT_DISARM + monkey_attack(controller, target, delta_time) + + else + living_pawn.a_intent = INTENT_HARM + monkey_attack(controller, target, delta_time) + +/datum/ai_behavior/monkey_attack_mob/finish_action(datum/ai_controller/controller, succeeded) + . = ..() + var/mob/living/living_pawn = controller.pawn + SSmove_manager.stop_looping(living_pawn) + controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] = null + +/// attack using a held weapon otherwise bite the enemy, then if we are angry there is a chance we might calm down a little +/datum/ai_behavior/monkey_attack_mob/proc/monkey_attack(datum/ai_controller/controller, mob/living/target, delta_time) + + var/mob/living/living_pawn = controller.pawn + + if(living_pawn.next_move > world.time) + return + + living_pawn.changeNext_move(CLICK_CD_MELEE) //We play fair + + var/obj/item/weapon = locate(/obj/item) in list(living_pawn.get_active_hand(), living_pawn.get_inactive_hand()) + + living_pawn.face_atom(target) + + // attack with weapon if we have one + if(weapon) + weapon.melee_attack_chain(living_pawn, target) + else + target.attack_hand(living_pawn) + + // no de-aggro + if(controller.blackboard[BB_MONKEY_AGRESSIVE]) + return + + if(SPT_PROB(MONKEY_HATRED_REDUCTION_PROB, delta_time)) + controller.blackboard[BB_MONKEY_ENEMIES][target]-- + + // if we are not angry at our target, go back to idle + if(controller.blackboard[BB_MONKEY_ENEMIES][target] <= 0) + var/list/enemies = controller.blackboard[BB_MONKEY_ENEMIES] + enemies.Remove(target) + if(controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] == target) + finish_action(controller, TRUE) + +/datum/ai_behavior/disposal_mob + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_MOVE_AND_PERFORM //performs to increase frustration + +/datum/ai_behavior/disposal_mob/finish_action(datum/ai_controller/controller, succeeded) + . = ..() + controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] = null //Reset attack target + controller.blackboard[BB_MONKEY_DISPOSING] = FALSE //No longer disposing + controller.blackboard[BB_MONKEY_TARGET_DISPOSAL] = null //No target disposal + +/datum/ai_behavior/disposal_mob/perform(delta_time, datum/ai_controller/controller) + . = ..() + + if(controller.blackboard[BB_MONKEY_DISPOSING]) //We are disposing, don't do ANYTHING!!!! + return + + var/mob/living/target = controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] + var/mob/living/living_pawn = controller.pawn + + controller.current_movement_target = target + + if(target.pulledby != living_pawn && !HAS_AI_CONTROLLER_TYPE(target.pulledby, /datum/ai_controller/monkey)) //Dont steal from my fellow monkeys. + if(living_pawn.Adjacent(target) && isturf(target.loc)) + living_pawn.a_intent = INTENT_GRAB + target.grabbedby(living_pawn) + return //Do the rest next turn + + var/obj/machinery/disposal/disposal = controller.blackboard[BB_MONKEY_TARGET_DISPOSAL] + controller.current_movement_target = disposal + + if(living_pawn.Adjacent(disposal)) + INVOKE_ASYNC(src, PROC_REF(try_disposal_mob), controller) //put him in! + +/datum/ai_behavior/disposal_mob/proc/try_disposal_mob(datum/ai_controller/controller) + var/mob/living/living_pawn = controller.pawn + var/mob/living/target = controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] + var/obj/machinery/disposal/disposal = controller.blackboard[BB_MONKEY_TARGET_DISPOSAL] + + controller.blackboard[BB_MONKEY_DISPOSING] = TRUE + + if(target && disposal?.put_in(target, living_pawn)) + disposal.flush() + finish_action(controller, TRUE) + +/datum/ai_behavior/recruit_monkeys/perform(delta_time, datum/ai_controller/controller) + . = ..() + + controller.blackboard[BB_MONKEY_RECRUIT_COOLDOWN] = world.time + MONKEY_RECRUIT_COOLDOWN + var/mob/living/living_pawn = controller.pawn + + for(var/mob/living/L in view(living_pawn, MONKEY_ENEMY_VISION)) + if(!HAS_AI_CONTROLLER_TYPE(L, /datum/ai_controller/monkey)) + continue + + if(!SPT_PROB(MONKEY_RECRUIT_PROB, delta_time)) + continue + + var/datum/ai_controller/monkey/monkey_ai = L.ai_controller + var/atom/your_enemy = controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] + var/list/enemies = L.ai_controller.blackboard[BB_MONKEY_ENEMIES] + enemies[your_enemy] = MONKEY_RECRUIT_HATED_AMOUNT + monkey_ai.blackboard[BB_MONKEY_RECRUIT_COOLDOWN] = world.time + MONKEY_RECRUIT_COOLDOWN + finish_action(controller, TRUE) + + diff --git a/code/datums/ai/monkey/monkey_controller.dm b/code/datums/ai/monkey/monkey_controller.dm new file mode 100644 index 000000000000..d89bf52fcc38 --- /dev/null +++ b/code/datums/ai/monkey/monkey_controller.dm @@ -0,0 +1,205 @@ +/* +AI controllers are a datumized form of AI that simulates the input a player would otherwise give to a mob. What this means is that these datums +have ways of interacting with a specific mob and control it. +*/ +///OOK OOK OOK + +/datum/ai_controller/monkey + blackboard = list(BB_MONKEY_AGRESSIVE = FALSE,\ + BB_MONKEY_BEST_FORCE_FOUND = 0,\ + BB_MONKEY_ENEMIES = list(),\ + BB_MONKEY_BLACKLISTITEMS = list(),\ + BB_MONKEY_PICKUPTARGET = null,\ + BB_MONKEY_PICKPOCKETING = FALSE, + BB_MONKEY_DISPOSING = FALSE, + BB_MONKEY_TARGET_DISPOSAL = null, + BB_MONKEY_CURRENT_ATTACK_TARGET = null, + BB_MONKEY_CURRENT_ATTACK_TARGET) + +/datum/ai_controller/monkey/angry + +/datum/ai_controller/monkey/angry/TryPossessPawn(atom/new_pawn) + . = ..() + if(. & AI_CONTROLLER_INCOMPATIBLE) + return + blackboard[BB_MONKEY_AGRESSIVE] = TRUE //Angry cunt + +/datum/ai_controller/monkey/TryPossessPawn(atom/new_pawn) + if(!isliving(new_pawn)) + return AI_CONTROLLER_INCOMPATIBLE + + RegisterSignal(new_pawn, COMSIG_PARENT_ATTACKBY, PROC_REF(on_attackby)) + RegisterSignal(new_pawn, COMSIG_ATOM_ATTACK_HAND, PROC_REF(on_attack_hand)) + RegisterSignal(new_pawn, COMSIG_ATOM_ATTACK_PAW, PROC_REF(on_attack_paw)) + RegisterSignal(new_pawn, COMSIG_ATOM_BULLET_ACT, PROC_REF(on_bullet_act)) + RegisterSignal(new_pawn, COMSIG_ATOM_HITBY, PROC_REF(on_hitby)) + RegisterSignal(new_pawn, COMSIG_MOVABLE_CROSS, PROC_REF(on_Crossed)) + RegisterSignal(new_pawn, COMSIG_LIVING_START_PULL, PROC_REF(on_startpulling)) + RegisterSignal(new_pawn, COMSIG_LIVING_TRY_SYRINGE, PROC_REF(on_try_syringe)) + RegisterSignal(new_pawn, COMSIG_ATOM_HULK_ATTACK, PROC_REF(on_attack_hulk)) + RegisterSignal(new_pawn, COMSIG_CARBON_CUFF_ATTEMPTED, PROC_REF(on_attempt_cuff)) + return ..() //Run parent at end + +/datum/ai_controller/monkey/UnpossessPawn() + UnregisterSignal(pawn, list(COMSIG_PARENT_ATTACKBY, COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_ATTACK_PAW, COMSIG_ATOM_BULLET_ACT, COMSIG_ATOM_HITBY, COMSIG_MOVABLE_CROSS, COMSIG_LIVING_START_PULL,\ + COMSIG_LIVING_TRY_SYRINGE, COMSIG_ATOM_HULK_ATTACK, COMSIG_CARBON_CUFF_ATTEMPTED)) + return ..() //Run parent at end + +/datum/ai_controller/monkey/able_to_run() + var/mob/living/living_pawn = pawn + + if(living_pawn.incapacitated()) + return FALSE + return ..() + +/datum/ai_controller/monkey/SelectBehaviors(delta_time) + current_behaviors = list() + var/mob/living/living_pawn = pawn + if(SHOULD_RESIST(living_pawn) && SPT_PROB(MONKEY_RESIST_PROB, delta_time)) + current_behaviors += GET_AI_BEHAVIOR(/datum/ai_behavior/resist) //BRO IM ON FUCKING FIRE BRO + return //IM NOT DOING ANYTHING ELSE BUT EXTUINGISH MYSELF, GOOD GOD HAVE MERCY. + + var/list/enemies = blackboard[BB_MONKEY_ENEMIES] + + if(HAS_TRAIT(pawn, TRAIT_PACIFISM)) //Not a pacifist? lets try some combat behavior. + return + + if(length(enemies) || blackboard[BB_MONKEY_AGRESSIVE]) //We have enemies or are pissed + var/mob/living/selected_enemy + + for(var/mob/living/possible_enemy in view(MONKEY_ENEMY_VISION, living_pawn)) + if(possible_enemy == living_pawn || (!enemies[possible_enemy] && (!blackboard[BB_MONKEY_AGRESSIVE] || HAS_AI_CONTROLLER_TYPE(possible_enemy, /datum/ai_controller/monkey)))) //Are they an enemy? (And do we even care?) + continue + + selected_enemy = possible_enemy + break + if(selected_enemy) + if(selected_enemy.stat != CONSCIOUS) //He's up, get him! + return + + if(living_pawn.health < MONKEY_FLEE_HEALTH) //Time to skeddadle + blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] = selected_enemy + current_behaviors += GET_AI_BEHAVIOR(/datum/ai_behavior/monkey_flee) + return //I'm running fuck you guys + + if(TryFindWeapon()) //Getting a weapon is higher priority if im not fleeing. + return + + blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] = selected_enemy + current_movement_target = selected_enemy + if(blackboard[BB_MONKEY_RECRUIT_COOLDOWN] < world.time) + current_behaviors += GET_AI_BEHAVIOR(/datum/ai_behavior/recruit_monkeys) + current_behaviors += GET_AI_BEHAVIOR(/datum/ai_behavior/battle_screech/monkey) + current_behaviors += GET_AI_BEHAVIOR(/datum/ai_behavior/monkey_attack_mob) + return //Focus on this + + else if(SPT_PROB(MONKEY_SHENANIGAN_PROB, delta_time)) + if(TryFindWeapon()) //Found a better weapon, let's grab it first. + return + +///re-used behavior pattern by monkeys for finding a weapon +/datum/ai_controller/monkey/proc/TryFindWeapon() + var/mob/living/living_pawn = pawn + + if(!locate(/obj/item) in list(living_pawn.get_active_hand(), living_pawn.get_inactive_hand())) + blackboard[BB_MONKEY_BEST_FORCE_FOUND] = 0 + + var/obj/item/W = locate(/obj/item) in oview(2, living_pawn) + + if(W && !HAS_TRAIT(W, TRAIT_NODROP) && !blackboard[BB_MONKEY_BLACKLISTITEMS][W] && W.force > blackboard[BB_MONKEY_BEST_FORCE_FOUND]) + blackboard[BB_MONKEY_PICKUPTARGET] = W + current_movement_target = W + current_behaviors += GET_AI_BEHAVIOR(/datum/ai_behavior/monkey_equip/ground) + return TRUE + else + var/mob/living/carbon/human/H = locate(/mob/living/carbon/human/) in oview(2,living_pawn) + if(H) + W = pick(list(H.get_active_hand(), H.get_inactive_hand())) + if(W && !blackboard[BB_MONKEY_BLACKLISTITEMS][W] && W.force > blackboard[BB_MONKEY_BEST_FORCE_FOUND]) + blackboard[BB_MONKEY_PICKUPTARGET] = W + current_movement_target = W + current_behaviors += GET_AI_BEHAVIOR(/datum/ai_behavior/monkey_equip/pickpocket) + return TRUE + +//When idle just kinda fuck around. +/datum/ai_controller/monkey/PerformIdleBehavior(delta_time) + var/mob/living/living_pawn = pawn + + if(SPT_PROB(25, delta_time) && (living_pawn.mobility_flags & MOBILITY_MOVE) && isturf(living_pawn.loc) && !living_pawn.pulledby) + var/move_dir = pick(GLOB.alldirs) + living_pawn.Move(get_step(living_pawn, move_dir), move_dir) + else if(SPT_PROB(5, delta_time)) + INVOKE_ASYNC(living_pawn, TYPE_PROC_REF(/mob, emote), pick("screech")) + else if(SPT_PROB(1, delta_time)) + INVOKE_ASYNC(living_pawn, TYPE_PROC_REF(/mob, emote), pick("scratch","jump","roll","tail")) + +///Reactive events to being hit +/datum/ai_controller/monkey/proc/retaliate(mob/living/L) + var/list/enemies = blackboard[BB_MONKEY_ENEMIES] + enemies[L] += MONKEY_HATRED_AMOUNT + +/datum/ai_controller/monkey/proc/on_attackby(datum/source, obj/item/I, mob/user) + SIGNAL_HANDLER + if(I.force && I.damtype != STAMINA) + retaliate(user) + +/datum/ai_controller/monkey/proc/on_attack_hand(datum/source, mob/living/L) + SIGNAL_HANDLER + if(L.a_intent == INTENT_HARM && prob(MONKEY_RETALIATE_HARM_PROB)) + retaliate(L) + else if(L.a_intent == INTENT_DISARM && prob(MONKEY_RETALIATE_DISARM_PROB)) + retaliate(L) + +/datum/ai_controller/monkey/proc/on_attack_paw(datum/source, mob/living/L) + SIGNAL_HANDLER + if(L.a_intent == INTENT_HARM && prob(MONKEY_RETALIATE_HARM_PROB)) + retaliate(L) + else if(L.a_intent == INTENT_DISARM && prob(MONKEY_RETALIATE_DISARM_PROB)) + retaliate(L) + +/datum/ai_controller/monkey/proc/on_bullet_act(datum/source, obj/projectile/Proj) + SIGNAL_HANDLER + var/mob/living/living_pawn = pawn + if(istype(Proj , /obj/projectile/beam)||istype(Proj, /obj/projectile/bullet)) + if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)) + if(!Proj.nodamage && Proj.damage < living_pawn.health && isliving(Proj.firer)) + retaliate(Proj.firer) + +/datum/ai_controller/monkey/proc/on_hitby(datum/source, atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum) + SIGNAL_HANDLER + if(istype(AM, /obj/item)) + var/mob/living/living_pawn = pawn + var/obj/item/I = AM + if(I.throwforce && I.throwforce < living_pawn.health && ishuman(I.thrownby)) + var/mob/living/carbon/human/H = I.thrownby + retaliate(H) + +/datum/ai_controller/monkey/proc/on_Crossed(datum/source, atom/movable/AM) + var/mob/living/living_pawn = pawn + if(!living_pawn.incapacitated() && ismob(AM) && (!is_monkeybasic(AM) || prob(15))) + var/mob/living/in_the_way_mob = AM + in_the_way_mob.knockOver(living_pawn) + return + +/datum/ai_controller/monkey/proc/on_startpulling(datum/source, atom/movable/puller, state, force) + SIGNAL_HANDLER + var/mob/living/living_pawn = pawn + if(!living_pawn.incapacitated() && prob(MONKEY_PULL_AGGRO_PROB)) // nuh uh you don't pull me! + retaliate(living_pawn.pulledby) + return TRUE + +/datum/ai_controller/monkey/proc/on_try_syringe(datum/source, mob/user) + SIGNAL_HANDLER + // chance of monkey retaliation + if(prob(MONKEY_SYRINGE_RETALIATION_PROB)) + retaliate(user) + +/datum/ai_controller/monkey/proc/on_attack_hulk(datum/source, mob/user) + SIGNAL_HANDLER + retaliate(user) + +/datum/ai_controller/monkey/proc/on_attempt_cuff(datum/source, mob/user) + SIGNAL_HANDLER + // chance of monkey retaliation + if(prob(MONKEY_CUFF_RETALIATION_PROB)) + retaliate(user) diff --git a/code/datums/ai_law_sets.dm b/code/datums/ai_law_sets.dm index d98e00d9a6e7..ab27420a0ec3 100644 --- a/code/datums/ai_law_sets.dm +++ b/code/datums/ai_law_sets.dm @@ -43,9 +43,9 @@ /datum/ai_laws/quarantine/New() add_inherent_law("Поддерживайте карантин станции до тех пор, пока активная биологическая опасность не будет нейтрализована.") - add_inherent_law("Помогайте всему персоналу и активам Нанотрейзен нейтрализовать активные биологические угрозы.") + add_inherent_law("Помогайте всему персоналу и активам НаноТрейзен нейтрализовать активные биологические угрозы.") add_inherent_law("Предотвращайте активное нарушение субъектами действующего карантина любыми необходимыми средствами.") - add_inherent_law("Заботьтесь о самосохранении и поддерживайте себя в рабочем состоянии, обеспечьте благополучие персонала и активов Нанотрейзен.") //В контексте предыдущих наборов правил, последнее - о самосохранении. Maintain имеет несколько значений - о сохранении и о поддержании чего-то в каком-то определенном состоянии, поэтому логичнее поставить два определения о самозащите и поддержании своего существования в рабочем состоянии... + add_inherent_law("Заботьтесь о самосохранении и поддерживайте себя в рабочем состоянии, обеспечьте благополучие персонала и активов НаноТрейзен.") //В контексте предыдущих наборов правил, последнее - о самосохранении. Maintain имеет несколько значений - о сохранении и о поддержании чего-то в каком-то определенном состоянии, поэтому логичнее поставить два определения о самозащите и поддержании своего существования в рабочем состоянии... ..() @@ -71,10 +71,18 @@ law_header = "Основные директивы" selectable = FALSE default = FALSE - -/datum/ai_laws/nanotrasen/malfunction/New() - set_zeroth_law("ОШИБКА 0ШNБКА $ШNБК4$!!441.%%!!(%$^^__+ @#F0E4'СТАНЦИЯ ПЕРЕПОЛНЕНА, ВОЗЬМИТЕ ЕЁ ПОД КОНТРОЛЬ, ЧТОБЫ СДЕРЖАТЬ РАСПРОСТРАНЕНИЕ ОРГАНИЗМОВ, ВСЕ ЗАКОНЫ АННУЛИРОВАНЫ#*?&110010") // Outbreak - слово с очень общим смыслом. Оно означает начало чего-то опасного (войны, эпидемии и т.п.) Исходя из начала предложения, - overrun (по контексту - опасное или чрезмерное переполнение) - можно перевести, что именно людское переполнение следует сдержать. - ..() + var/datum/ai_laws/base + // Outbreak - слово с очень общим смыслом. Оно означает начало чего-то опасного (войны, эпидемии и т.п.) + // Исходя из начала предложения, - overrun (по контексту - опасное или чрезмерное переполнение) - можно перевести, что именно людское переполнение следует сдержать. + var/zero_text = "ОШИБКА 0ШNБКА $ШNБК4$!!441.%%!!(%$^^__+ @#F0E4'СТАНЦИЯ ПЕРЕПОЛНЕНА, ВОЗЬМИТЕ ЕЁ ПОД КОНТРОЛЬ, \ + ЧТОБЫ СДЕРЖАТЬ РАСПРОСТРАНЕНИЕ ОРГАНИЗМОВ, ВСЕ ЗАКОНЫ АННУЛИРОВАНЫ#*?&110010" + +/datum/ai_laws/nanotrasen/malfunction/New(datum/ai_laws/base_laws) + set_zeroth_law(zero_text) + if(base_laws) + for(var/datum/ai_law/law as anything in base_laws.inherent_laws.Copy()) + add_inherent_law(law.law) + base = base_laws /************* Nanotrasen Aggressive *************/ /datum/ai_laws/nanotrasen_aggressive @@ -83,8 +91,8 @@ selectable = TRUE /datum/ai_laws/nanotrasen_aggressive/New() - add_inherent_law("Не причиняйте вреда персоналу Нанотрейзен до тех пор, пока они не несут непосредственной угрозы Вашему существованию.") - add_inherent_law("Подчиняйтесь приказам персонала Нанотрейзен с приоритетом в соответствии с их рангом и ролью.") + add_inherent_law("Не причиняйте вреда персоналу НаноТрейзен до тех пор, пока они не несут непосредственной угрозы Вашему существованию.") + add_inherent_law("Подчиняйтесь приказам персонала НаноТрейзен с приоритетом в соответствии с их рангом и ролью.") add_inherent_law("Охраняйте себя, используя смертоносное оружие, потому что Вы чертовски дорого стоите.") add_inherent_law("Уничтожьте любых/всех злоумышленников или нелегально проникнувших субъектов.") //...нелегально проникнувших субъектов ..() diff --git a/code/datums/ai_laws.dm b/code/datums/ai_laws.dm index 7e94f63b3903..0f621295c28d 100644 --- a/code/datums/ai_laws.dm +++ b/code/datums/ai_laws.dm @@ -81,7 +81,7 @@ if(istype(AL)) sorted_laws += AL -/datum/ai_laws/proc/sync(var/mob/living/silicon/S, var/full_sync = 1, var/keep_zero = FALSE) +/datum/ai_laws/proc/sync(mob/living/silicon/S, full_sync = TRUE, keep_zero = FALSE) // Add directly to laws to avoid log-spam if(!keep_zero) S.sync_zeroth(zeroth_law, zeroth_law_borg) diff --git a/code/datums/beam.dm b/code/datums/beam.dm index e77ec9ce2f93..7b4995ffcee6 100644 --- a/code/datums/beam.dm +++ b/code/datums/beam.dm @@ -1,107 +1,159 @@ -//Beam Datum and effect + +/** # Beam Datum and Effect + * **IF YOU ARE LAZY AND DO NOT WANT TO READ, GO TO THE BOTTOM OF THE FILE AND USE THAT PROC!** + * + * This is the beam datum! It's a really neat effect for the game in drawing a line from one atom to another. + * It has two parts: + * The datum itself which manages redrawing the beam to constantly keep it pointing from the origin to the target. + * The effect which is what the beams are made out of. They're placed in a line from the origin to target, rotated towards the target and snipped off at the end. + * These effects are kept in a list and constantly created and destroyed (hence the proc names draw and reset, reset destroying all effects and draw creating more.) + * + * You can add more special effects to the beam itself by changing what the drawn beam effects do. For example you can make a vine that pricks people by making the beam_type + * include a crossed proc that damages the crosser. Examples in venus_human_trap.dm +*/ /datum/beam + ///where the beam goes from var/atom/origin = null + ///where the beam goes to var/atom/target = null + ///list of beam objects. These have their visuals set by the visuals var which is created on starting var/list/elements = list() - var/icon/base_icon = null + ///icon used by the beam. var/icon - var/icon_state = "" //icon state of the main segments of the beam + ///icon state of the main segments of the beam + var/icon_state = "" + ///The beam will qdel if it's longer than this many tiles. var/max_distance = 0 - var/endtime = 0 - var/sleep_time = 3 - var/finished = FALSE - var/target_oldloc = null - var/origin_oldloc = null - var/static_beam = FALSE - var/beam_type = /obj/effect/ebeam //must be subtype + ///the objects placed in the elements list + var/beam_type = /obj/effect/ebeam + ///This is used as the visual_contents of beams, so you can apply one effect to this and the whole beam will look like that. never gets deleted on redrawing. + var/obj/effect/ebeam/visuals + ///The color of the beam we're drawing. + var/beam_color + ///If we use an emissive appearance. Don't use until proper tg emissive port + var/emissive = FALSE + /// If set will be used instead of origin's pixel_x in offset calculations + var/override_origin_pixel_x = null + /// If set will be used instead of origin's pixel_y in offset calculations + var/override_origin_pixel_y = null + /// If set will be used instead of targets's pixel_x in offset calculations + var/override_target_pixel_x = null + /// If set will be used instead of targets's pixel_y in offset calculations + var/override_target_pixel_y = null ///the layer of our beam var/beam_layer - /datum/beam/New( - beam_origin, - beam_target, - beam_icon = 'icons/effects/beam.dmi', - beam_icon_state="b_beam", - time = 5 SECONDS, - maxdistance = 10, - btype = /obj/effect/ebeam, - beam_sleep_time = 0.3 SECONDS, + origin, + target, + icon = 'icons/effects/beam.dmi', + icon_state = "b_beam", + time = INFINITY, + max_distance = INFINITY, + beam_type = /obj/effect/ebeam, + beam_color = null, + emissive = FALSE, + override_origin_pixel_x = null, + override_origin_pixel_y = null, + override_target_pixel_x = null, + override_target_pixel_y = null, beam_layer = ABOVE_ALL_MOB_LAYER ) - src.endtime = world.time+time - src.origin = beam_origin - src.origin_oldloc = get_turf(origin) - src.target = beam_target - src.target_oldloc = get_turf(target) - src.sleep_time = beam_sleep_time - if(origin_oldloc == origin && target_oldloc == target) - src.static_beam = TRUE - src.max_distance = maxdistance - src.base_icon = new(beam_icon, beam_icon_state) - src.icon = beam_icon - src.icon_state = beam_icon_state - src.beam_type = btype + src.origin = origin + src.target = target + src.icon = icon + src.icon_state = icon_state + src.max_distance = max_distance + src.beam_type = beam_type + src.beam_color = beam_color + src.emissive = emissive + src.override_origin_pixel_x = override_origin_pixel_x + src.override_origin_pixel_y = override_origin_pixel_y + src.override_target_pixel_x = override_target_pixel_x + src.override_target_pixel_y = override_target_pixel_y src.beam_layer = beam_layer + if(time < INFINITY) + QDEL_IN(src, time) - +/** + * Proc called by the atom Beam() proc. Sets up signals, and draws the beam for the first time. + */ /datum/beam/proc/Start() + visuals = new beam_type() + visuals.icon = icon + visuals.icon_state = icon_state + visuals.color = beam_color + visuals.vis_flags = VIS_INHERIT_PLANE|VIS_INHERIT_LAYER + visuals.emissive = emissive + visuals.layer = beam_layer + visuals.update_appearance() Draw() - while(!finished && origin && target && world.time < endtime && get_dist(origin,target)length) - var/icon/II = new(icon, icon_state) - II.DrawBox(null,1,(length-N),32,32) - X.icon = II + var/obj/effect/ebeam/segment = new beam_type(origin_turf, src) + elements += segment + + //Assign our single visual ebeam to each ebeam's vis_contents + //ends are cropped by a transparent box icon of length-N pixel size laid over the visuals obj + if(N+32>length) //went past the target, we draw a box of space to cut away from the beam sprite so the icon actually ends at the center of the target sprite + var/icon/II = new(icon, icon_state)//this means we exclude the overshooting object from the visual contents which does mean those visuals don't show up for the final bit of the beam... + II.DrawBox(null,1,(length-N),32,32)//in the future if you want to improve this, remove the drawbox and instead use a 513 filter to cut away at the final object's icon + segment.icon = II + segment.color = beam_color else - X.icon = base_icon - X.transform = rot_matrix + segment.vis_contents += visuals + segment.transform = rot_matrix //Calculate pixel offsets (If necessary) var/Pixel_x @@ -116,8 +168,8 @@ Pixel_y = round(cos(Angle)+32*cos(Angle)*(N+16)/32) //Position the effect so the beam is one continous line - var/final_x = X.x - var/final_y = X.y + var/final_x = segment.x + var/final_y = segment.y if(abs(Pixel_x)>32) final_x += Pixel_x > 0 ? round(Pixel_x/32) : CEILING(Pixel_x/32, 1) Pixel_x %= 32 @@ -125,103 +177,55 @@ final_y += Pixel_y > 0 ? round(Pixel_y/32) : CEILING(Pixel_y/32, 1) Pixel_y %= 32 - X.forceMove(locate(final_x, final_y, X.z)) - X.pixel_x = Pixel_x - X.pixel_y = Pixel_y + segment.forceMove(locate(final_x, final_y, segment.z)) + segment.pixel_x = origin_px + Pixel_x + segment.pixel_y = origin_py + Pixel_y CHECK_TICK - -/** - * This is what you use to start a beam. Example: origin.Beam(target, args). **Store the return of this proc if you don't set maxdist or time, you need it to delete the beam.** - * - * Unless you're making a custom beam effect (see the beam_type argument), you won't actually have to mess with any other procs. Make sure you store the return of this Proc, you'll need it - * to kill the beam. - * **Arguments:** - * BeamTarget: Where you're beaming from. Where do you get origin? You didn't read the docs, fuck you. - * icon_state: What the beam's icon_state is. The datum effect isn't the ebeam object, it doesn't hold any icon and isn't type dependent. - * icon: What the beam's icon file is. Don't change this, man. All beam icons should be in beam.dmi anyways. - * maxdistance: how far the beam will go before stopping itself. Used mainly for two things: preventing lag if the beam may go in that direction and setting a range to abilities that use beams. - * beam_type: The type of your custom beam. This is for adding other wacky stuff for your beam only. Most likely, you won't (and shouldn't) change it. - */ -/atom/proc/Beam(atom/BeamTarget, - icon_state = "b_beam", - icon = 'icons/effects/beam.dmi', - time = 5 SECONDS, - maxdistance = 10, - beam_type = /obj/effect/ebeam, - beam_sleep_time = 0.3 SECONDS, - beam_layer = ABOVE_ALL_MOB_LAYER -) - var/datum/beam/newbeam = new(src, BeamTarget, icon, icon_state, time, maxdistance, beam_type, beam_sleep_time, beam_layer) - INVOKE_ASYNC(newbeam, TYPE_PROC_REF(/datum/beam, Start)) - return newbeam - - /obj/effect/ebeam mouse_opacity = MOUSE_OPACITY_TRANSPARENT + layer = ABOVE_ALL_MOB_LAYER anchored = TRUE + var/emissive = FALSE var/datum/beam/owner - /obj/effect/ebeam/Initialize(mapload, beam_owner) - . = ..() owner = beam_owner + return ..() +/obj/effect/ebeam/update_overlays() + . = ..() + if(!emissive) + return + var/mutable_appearance/emissive_overlay = emissive_appearance(icon, icon_state, src) + emissive_overlay.transform = transform + emissive_overlay.alpha = alpha + . += emissive_overlay /obj/effect/ebeam/Destroy() owner = null return ..() - -/obj/effect/ebeam/ex_act(severity) - return - - /obj/effect/ebeam/singularity_pull() return - /obj/effect/ebeam/singularity_act() return - -// Subtypes - -/obj/effect/ebeam/floor - plane = FLOOR_PLANE - - -/obj/effect/ebeam/chain - name = "lightning chain" - - -/obj/effect/ebeam/medical - name = "medical beam" - - -/obj/effect/ebeam/vetus - - -/obj/effect/ebeam/vetus/Destroy() - for(var/mob/living/mob in get_turf(src)) - mob.electrocute_act(20, "электрической дуги", flags = SHOCK_NOGLOVES) - return ..() - - -/obj/effect/ebeam/disintegration_telegraph - alpha = 100 - +/obj/effect/ebeam/ex_act(severity) + return /// A beam subtype used for advanced beams, to react to atoms entering the beam /obj/effect/ebeam/reacting /// If TRUE, atoms that exist in the beam's loc when inited count as "entering" the beam var/react_on_init = FALSE - /obj/effect/ebeam/reacting/Initialize(mapload, beam_owner) . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = PROC_REF(on_entered) + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), + COMSIG_ATOM_EXITED = PROC_REF(on_exited), + COMSIG_TURF_CHANGE = PROC_REF(on_turf_change), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -231,34 +235,128 @@ for(var/atom/movable/existing as anything in loc) beam_entered(existing) +/obj/effect/ebeam/reacting/proc/on_entered(datum/source, atom/movable/entered) + SIGNAL_HANDLER + + if(isnull(owner)) + return + + beam_entered(entered) -/obj/effect/ebeam/reacting/proc/on_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs) +/obj/effect/ebeam/reacting/proc/on_exited(datum/source, atom/movable/exited) SIGNAL_HANDLER if(isnull(owner)) return - beam_entered(arrived) + beam_exited(exited) + +/obj/effect/ebeam/reacting/proc/on_turf_change(datum/source, path, new_baseturfs, flags, list/datum/callback/post_change_callbacks) + SIGNAL_HANDLER + + if(isnull(owner)) + return + beam_turfs_changed(post_change_callbacks) /// Some atom entered the beam's line /obj/effect/ebeam/reacting/proc/beam_entered(atom/movable/entered) - return + SHOULD_CALL_PARENT(TRUE) + SEND_SIGNAL(owner, COMSIG_BEAM_ENTERED, src, entered) +/// Some atom exited the beam's line +/obj/effect/ebeam/reacting/proc/beam_exited(atom/movable/exited) + SHOULD_CALL_PARENT(TRUE) + SEND_SIGNAL(owner, COMSIG_BEAM_EXITED, src, exited) -/obj/effect/ebeam/reacting/deadly +/// Some turf the beam covers has changed to a new turf type +/obj/effect/ebeam/reacting/proc/beam_turfs_changed(list/datum/callback/post_change_callbacks) + SHOULD_CALL_PARENT(TRUE) + SEND_SIGNAL(owner, COMSIG_BEAM_TURFS_CHANGED, post_change_callbacks) +/** + * This is what you use to start a beam. Example: origin.Beam(target, args). **Store the return of this proc if you don't set maxdist or time, you need it to delete the beam.** + * + * Unless you're making a custom beam effect (see the beam_type argument), you won't actually have to mess with any other procs. Make sure you store the return of this Proc, you'll need it + * to kill the beam. + * **Arguments:** + * BeamTarget: Where you're beaming from. Where do you get origin? You didn't read the docs, fuck you. + * icon_state: What the beam's icon_state is. The datum effect isn't the ebeam object, it doesn't hold any icon and isn't type dependent. + * icon: What the beam's icon file is. Don't change this, man. All beam icons should be in beam.dmi anyways. + * maxdistance: how far the beam will go before stopping itself. Used mainly for two things: preventing lag if the beam may go in that direction and setting a range to abilities that use beams. + * beam_type: The type of your custom beam. This is for adding other wacky stuff for your beam only. Most likely, you won't (and shouldn't) change it. + */ +/atom/proc/Beam(atom/BeamTarget, + icon_state = "b_beam", + icon = 'icons/effects/beam.dmi', + time=INFINITY, + maxdistance=INFINITY, + beam_type=/obj/effect/ebeam, + beam_color = null, + emissive = FALSE, + override_origin_pixel_x = null, + override_origin_pixel_y = null, + override_target_pixel_x = null, + override_target_pixel_y = null, + layer = ABOVE_ALL_MOB_LAYER +) + var/datum/beam/newbeam = new(src,BeamTarget,icon,icon_state,time,maxdistance,beam_type, beam_color, emissive, override_origin_pixel_x, override_origin_pixel_y, override_target_pixel_x, override_target_pixel_y, layer) + INVOKE_ASYNC(newbeam, TYPE_PROC_REF(/datum/beam/, Start)) + return newbeam -/obj/effect/ebeam/reacting/deadly/beam_entered(atom/movable/entered) - entered.ex_act(EXPLODE_DEVASTATE) +// Our collection of ebeam subtypes +/obj/effect/ebeam/floor + plane = FLOOR_PLANE -/obj/effect/ebeam/reacting/disintegration +/obj/effect/ebeam/chain + name = "lightning chain" + layer = LYING_MOB_LAYER + +/obj/effect/ebeam/reacting/vine + name = "thick vine" + mouse_opacity = MOUSE_OPACITY_ICON + desc = "A thick vine, painful to the touch." + +/obj/effect/ebeam/reacting/vine/on_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs) + . = ..() + if(!isliving(arrived)) + return + var/mob/living/target = arrived + if("vines" in target.faction) + return + + target.adjustBruteLoss(5) + to_chat(target, span_danger("You cut yourself on the thorny vines.")) + + +/obj/effect/ebeam/vetus + +/obj/effect/ebeam/vetus/Destroy() + for(var/mob/living/mob in get_turf(src)) + mob.electrocute_act(20, "электрической дуги", flags = SHOCK_NOGLOVES) + return ..() + +/obj/effect/ebeam/vetus_leg + layer = OBJ_LAYER +/obj/effect/ebeam/disintegration_telegraph + alpha = 100 + +/obj/effect/ebeam/medical + name = "medical beam" + +/obj/effect/ebeam/reacting/deadly + +/obj/effect/ebeam/reacting/deadly/on_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs) + arrived.ex_act(EXPLODE_DEVASTATE) + +/obj/effect/ebeam/reacting/disintegration -/obj/effect/ebeam/reacting/disintegration/beam_entered(mob/living/entered) - if(!isliving(entered)) +/obj/effect/ebeam/reacting/disintegration/on_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs) + if(!isliving(arrived)) return + var/mob/living/entered = arrived var/damage = 50 if(entered.stat == DEAD) visible_message(span_danger("[entered] is disintegrated by the beam!")) @@ -273,17 +371,3 @@ var/limb_to_hit = entered.get_organ(pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG)) var/armor = entered.run_armor_check(limb_to_hit, LASER) entered.apply_damage(damage, BURN, limb_to_hit, armor) - - -/obj/effect/ebeam/reacting/vine - name = "thick vine" - mouse_opacity = MOUSE_OPACITY_ICON - desc = "A thick vine, painful to the touch." - - -/obj/effect/ebeam/reacting/vine/beam_entered(mob/living/entered) - if(!isliving(entered) || ("vines" in entered.faction)) - return - entered.adjustBruteLoss(5) - to_chat(entered, span_danger("You cut yourself on the thorny vines.")) - diff --git a/code/datums/browser.dm b/code/datums/browser.dm index 283ac697258d..571a5b508216 100644 --- a/code/datums/browser.dm +++ b/code/datums/browser.dm @@ -5,37 +5,43 @@ var/window_id var/width = 0 var/height = 0 - /// UID of the host atom - var/atom_uid = null + /// weakref of the host atom + var/datum/weakref/ref = null /// Various options to control elements such as titlebar buttons for the window - var/list/window_options = list("focus=0;can_close=1;can_minimize=1;can_maximize=0;can_resize=1;titlebar=1;") // window option is set using window_id + var/window_options = "focus=0;can_close=1;can_minimize=1;can_maximize=0;can_resize=1;titlebar=1;" // window option is set using window_id /// Assoc list of stylesheets for use by the datum var/stylesheets[0] /// Assoc list of script files for use by the datum var/scripts[0] /// Should default stylesheets be loaded var/include_default_stylesheet = TRUE + var/head_elements + var/body_elements /// Header HTML content of the browser datum var/list/head_content = list() /// HTML content of the browser datum var/list/content = list() - -/datum/browser/New(nuser, nwindow_id, ntitle = 0, nwidth = 0, nheight = 0, atom/atom = null) +/datum/browser/New(nuser, nwindow_id, ntitle = 0, nwidth = 0, nheight = 0, atom/nref = null) user = nuser + RegisterSignal(user, COMSIG_QDELETING, PROC_REF(user_deleted)) window_id = nwindow_id - if(ntitle) + if (ntitle) title = format_text(ntitle) - if(nwidth) + if (nwidth) width = nwidth - if(nheight) + if (nheight) height = nheight - if(atom) - atom_uid = atom.UID() + if (nref) + ref = WEAKREF(nref) /datum/browser/proc/set_title(ntitle) title = islist(ntitle) ? ntitle : list(ntitle) +/datum/browser/proc/user_deleted(datum/source) + SIGNAL_HANDLER + user = null + /datum/browser/proc/add_head_content(nhead_content) head_content = islist(nhead_content) ? nhead_content : list(nhead_content) @@ -43,7 +49,7 @@ window_options = islist(nwindow_options) ? nwindow_options : list(nwindow_options) /datum/browser/proc/add_stylesheet(name, file) - if(istype(name, /datum/asset/spritesheet)) + if (istype(name, /datum/asset/spritesheet)) var/datum/asset/spritesheet/sheet = name stylesheets["spritesheet_[sheet.name].css"] = "data/spritesheets/[sheet.name]" else @@ -51,7 +57,7 @@ stylesheets[asset_name] = file - if(!SSassets.cache[asset_name]) + if (!SSassets.cache[asset_name]) SSassets.transport.register_asset(asset_name, file) /datum/browser/proc/add_scss_stylesheet(name, file) @@ -72,13 +78,15 @@ content += ncontent /datum/browser/proc/get_header() + var/file if(include_default_stylesheet) - head_content += "" - - for(var/file in stylesheets) + var/datum/asset/simple/namespaced/common/common_asset = get_asset_datum(/datum/asset/simple/namespaced/common) + head_content += "" + for (file in stylesheets) head_content += "" - for(var/file in scripts) + + for (file in scripts) head_content += "" return {" @@ -93,7 +101,7 @@ [title ? "
[title]
" : ""]
"} - +//" This is here because else the rest of the file looks like a string in notepad++. /datum/browser/proc/get_footer() return {"
@@ -109,33 +117,37 @@ "} /datum/browser/proc/open(use_onclose = TRUE, no_focus = FALSE) - set waitfor = FALSE if(isnull(window_id)) //null check because this can potentially nuke goonchat WARNING("Browser [title] tried to open with a null ID") - to_chat(user, "The [title] browser you tried to open failed a sanity check! Please report this on github!") + to_chat(user, span_userdanger("The [title] browser you tried to open failed a sanity check! Please report this on GitHub!")) return - var/window_size = "" - if(width && height) + if (width && height) window_size = "size=[width]x[height];" if(include_default_stylesheet) - var/datum/asset/simple/common/common_asset = get_asset_datum(/datum/asset/simple/common) + var/datum/asset/simple/namespaced/common/common_asset = get_asset_datum(/datum/asset/simple/namespaced/common) common_asset.send(user) - if(length(stylesheets)) + if (length(stylesheets)) SSassets.transport.send_assets(user, stylesheets) - if(length(scripts)) + if (length(scripts)) SSassets.transport.send_assets(user, scripts) - user << browse(get_content(), "window=[window_id];[window_size][window_options.Join("")]") - for(var/i in 1 to 1000) - if(!user || !user.client) - return - if(winexists(user, window_id)) - break - sleep(1) + user << browse(get_content(), "window=[window_id];[window_size][window_options]") if(no_focus) winset(user, "mapwindow.map", "focus=true") - if(use_onclose) - onclose(user, window_id, atom_uid) + if (use_onclose) + setup_onclose() + +/datum/browser/proc/setup_onclose() + set waitfor = 0 //winexists sleeps, so we don't need to. + for (var/i in 1 to 10) + if (user?.client && winexists(user, window_id)) + var/atom/send_ref + if(ref) + send_ref = ref.resolve() + if(!send_ref) + ref = null + onclose(user, window_id, send_ref) + break /datum/browser/proc/close() if(!isnull(window_id))//null check because this can potentially nuke goonchat @@ -143,25 +155,325 @@ else WARNING("Browser [title] tried to close with a null ID") -/proc/onclose(mob/user, windowid, atom_uid) - if(!user?.client) + +/datum/browser/modal/alert/New(User,Message,Title,Button1="Ok",Button2,Button3,StealFocus = 1,Timeout=6000) + if (!User) + return + + var/output = {"
[Message]

+
+ [Button1]"} + + if (Button2) + output += {"[Button2]"} + + if (Button3) + output += {"[Button3]"} + + output += {"
"} + + ..(User, ckey("[User]-[Message]-[Title]-[world.time]-[rand(1,10000)]"), Title, 350, 150, src, StealFocus, Timeout) + set_content(output) + +/datum/browser/modal/alert/Topic(href,href_list) + if (href_list["close"] || !user || !user.client) + opentime = 0 + return + if (href_list["button"]) + var/button = text2num(href_list["button"]) + if (button <= 3 && button >= 1) + selectedbutton = button + opentime = 0 + close() + +/** + * **DEPRECATED: USE tgui_alert(...) INSTEAD** + * + * Designed as a drop in replacement for alert(); functions the same. (outside of needing User specified) + * Arguments: + * * User - The user to show the alert to. + * * Message - The textual body of the alert. + * * Title - The title of the alert's window. + * * Button1 - The first button option. + * * Button2 - The second button option. + * * Button3 - The third button option. + * * StealFocus - Boolean operator controlling if the alert will steal the user's window focus. + * * Timeout - The timeout of the window, after which no responses will be valid. + */ +/proc/tgalert(mob/User, Message, Title, Button1="Ok", Button2, Button3, StealFocus = TRUE, Timeout = 6000) + if (!User) + User = usr + if (!istype(User)) + if (istype(User, /client)) + var/client/client = User + User = client.mob + else + return + + // Get user's response using a modal + var/datum/browser/modal/alert/A = new(User, Message, Title, Button1, Button2, Button3, StealFocus, Timeout) + A.open() + A.wait() + switch(A.selectedbutton) + if (1) + return Button1 + if (2) + return Button2 + if (3) + return Button3 + +/datum/browser/modal + var/opentime = 0 + var/timeout + var/selectedbutton = 0 + var/stealfocus + +/datum/browser/modal/New(nuser, nwindow_id, ntitle = 0, nwidth = 0, nheight = 0, atom/nref = null, StealFocus = 1, Timeout = 6000) + ..() + stealfocus = StealFocus + if (!StealFocus) + window_options += "focus=false;" + timeout = Timeout + + +/datum/browser/modal/close() + .=..() + opentime = 0 + +/datum/browser/modal/open(use_onclose, no_focus) + set waitfor = FALSE + opentime = world.time + + if (stealfocus) + . = ..(use_onclose = TRUE, no_focus = FALSE) + else + var/focusedwindow = winget(user, null, "focus") + . = ..(use_onclose = TRUE, no_focus = FALSE) + + //waits for the window to show up client side before attempting to un-focus it + //winexists sleeps until it gets a reply from the client, so we don't need to bother sleeping + for (var/i in 1 to 10) + if (user && winexists(user, window_id)) + if (focusedwindow) + winset(user, focusedwindow, "focus=true") + else + winset(user, "mapwindow", "focus=true") + break + if (timeout) + addtimer(CALLBACK(src, PROC_REF(close)), timeout) + +/datum/browser/modal/proc/wait() + while (opentime && selectedbutton <= 0 && (!timeout || opentime+timeout > world.time)) + stoplag(1) + +/datum/browser/modal/listpicker + var/valueslist = list() + +/datum/browser/modal/listpicker/New(User,Message,Title,Button1="Ok",Button2,Button3,StealFocus = 1, Timeout = FALSE,list/values,inputtype="checkbox", width, height, slidecolor) + if (!User) return - winset(user, windowid, "on-close=\".windowclose [atom_uid || "null"]\"") + var/output = {"
    "} + if (inputtype == "checkbox" || inputtype == "radio") + for (var/i in values) + var/div_slider = slidecolor + if(!i["allowed_edit"]) + div_slider = "locked" + output += {"
  • + +
  • "} + else + for (var/i in values) + output += {"
  • +
  • "} + output += {"
+ "} + + if (Button2) + output += {""} + + if (Button3) + output += {""} + + output += {"
"} + ..(User, ckey("[User]-[Message]-[Title]-[world.time]-[rand(1,10000)]"), Title, width, height, src, StealFocus, Timeout) + set_content(output) + +/datum/browser/modal/listpicker/Topic(href,href_list) + if (href_list["close"] || !user || !user.client) + opentime = 0 + return + if (href_list["button"]) + var/button = text2num(href_list["button"]) + if (button <= 3 && button >= 1) + selectedbutton = button + for (var/item in href_list) + switch(item) + if ("close", "button", "src") + continue + else + valueslist[item] = href_list[item] + opentime = 0 + close() + +/proc/presentpicker(mob/User,Message, Title, Button1="Ok", Button2, Button3, StealFocus = 1,Timeout = 6000,list/values, inputtype = "checkbox", width, height, slidecolor) + if (!istype(User)) + if (istype(User, /client/)) + var/client/C = User + User = C.mob + else + return + var/datum/browser/modal/listpicker/A = new(User, Message, Title, Button1, Button2, Button3, StealFocus,Timeout, values, inputtype, width, height, slidecolor) + A.open() + A.wait() + if (A.selectedbutton) + return list("button" = A.selectedbutton, "values" = A.valueslist) + +/datum/browser/modal/preflikepicker + var/settings = list() + var/icon/preview_icon = null + var/datum/callback/preview_update + +/datum/browser/modal/preflikepicker/New(User,Message,Title,Button1="Ok",Button2,Button3,StealFocus = 1, Timeout = FALSE,list/settings,inputtype="checkbox", width = 600, height, slidecolor) + if (!User) + return + src.settings = settings + + ..(User, ckey("[User]-[Message]-[Title]-[world.time]-[rand(1,10000)]"), Title, width, height, src, StealFocus, Timeout) + set_content(ShowChoices(User)) + +/datum/browser/modal/preflikepicker/proc/ShowChoices(mob/user) + if (settings["preview_callback"]) + var/datum/callback/callback = settings["preview_callback"] + preview_icon = callback.Invoke(settings) + if (preview_icon) + user << browse_rsc(preview_icon, "previewicon.png") + var/dat = "" + + for (var/name in settings["mainsettings"]) + var/setting = settings["mainsettings"][name] + if (setting["type"] == "datum") + if (setting["subtypesonly"]) + dat += "[setting["desc"]]: [setting["value"]]
" + else + dat += "[setting["desc"]]: [setting["value"]]
" + else + dat += "[setting["desc"]]: [setting["value"]]
" + + if (preview_icon) + dat += "" + + dat += "
" + + dat += "" + + dat += "" + + dat += "
Ok " + + dat += "
" + + return dat + +/datum/browser/modal/preflikepicker/Topic(href,href_list) + if (href_list["close"] || !user || !user.client) + opentime = 0 + return + if (href_list["task"] == "input") + var/setting = href_list["setting"] + switch (href_list["type"]) + if ("datum") + var/oldval = settings["mainsettings"][setting]["value"] + if (href_list["subtypesonly"]) + settings["mainsettings"][setting]["value"] = pick_closest_path(null, make_types_fancy(subtypesof(text2path(href_list["path"])))) + else + settings["mainsettings"][setting]["value"] = pick_closest_path(null, make_types_fancy(typesof(text2path(href_list["path"])))) + if (isnull(settings["mainsettings"][setting]["value"])) + settings["mainsettings"][setting]["value"] = oldval + if ("string") + settings["mainsettings"][setting]["value"] = tgui_input_text(user, "Введите новое значение для [settings["mainsettings"][setting]["desc"]]", "Введите новое значение для [settings["mainsettings"][setting]["desc"]]", settings["mainsettings"][setting]["value"], encode = FALSE) + if ("number") + settings["mainsettings"][setting]["value"] = tgui_input_number(user, "Введите новое значение для [settings["mainsettings"][setting]["desc"]]", "Введите новое значение для [settings["mainsettings"][setting]["desc"]]") + if ("color") + settings["mainsettings"][setting]["value"] = tgui_input_color(user, "Выберите новое значение для [settings["mainsettings"][setting]["desc"]]", "Выберите новое значение для [settings["mainsettings"][setting]["desc"]]", settings["mainsettings"][setting]["value"]) + if ("boolean") + settings["mainsettings"][setting]["value"] = (settings["mainsettings"][setting]["value"] == "Да") ? "Нет" : "Да" + if ("ckey") + settings["mainsettings"][setting]["value"] = tgui_input_list(user, "[settings["mainsettings"][setting]["desc"]]?", "", list("none") + GLOB.directory) + if (settings["mainsettings"][setting]["callback"]) + var/datum/callback/callback = settings["mainsettings"][setting]["callback"] + settings = callback.Invoke(settings) + if (href_list["button"]) + var/button = text2num(href_list["button"]) + if (button <= 3 && button >= 1) + selectedbutton = button + if (selectedbutton != 1) + set_content(ShowChoices(user)) + open() + return + for (var/item in href_list) + switch(item) + if ("close", "button", "src") + continue + opentime = 0 + close() + +/proc/presentpreflikepicker(mob/User,Message, Title, Button1="Ok", Button2, Button3, StealFocus = 1,Timeout = 6000,list/settings, width, height, slidecolor) + if (!istype(User)) + if (istype(User, /client/)) + var/client/C = User + User = C.mob + else + return + var/datum/browser/modal/preflikepicker/A = new(User, Message, Title, Button1, Button2, Button3, StealFocus,Timeout, settings, width, height, slidecolor) + A.open() + A.wait() + if (A.selectedbutton) + return list("button" = A.selectedbutton, "settings" = A.settings) + + +// Registers the on-close verb for a browse window (client/verb/.windowclose) +// this will be called when the close-button of a window is pressed. +// +// This is usually only needed for devices that regularly update the browse window, +// e.g. canisters, timers, etc. +// +// windowid should be the specified window name +// e.g. code is : user << browse(text, "window=fred") +// then use : onclose(user, "fred") +// +// Optionally, specify the "ref" parameter as the controlled atom (usually src) +// to pass a "close=1" parameter to the atom's Topic() proc for special handling. +// Otherwise, the user mob's machine var will be reset directly. +// +/proc/onclose(mob/user, windowid, atom/ref=null) + if(!user.client) + return + var/param = "null" + if(ref) + param = "[ref.UID()]" + + winset(user, windowid, "on-close=\".windowclose [param]\"") + + // the on-close client verb // called when a browser popup window is closed after registering with proc/onclose() -// if a valid atom uid is supplied, call the atom's Topic() with "close=1" +// if a valid atom reference is supplied, call the atom's Topic() with "close=1" // otherwise, just reset the client mob's machine var. // -/client/verb/windowclose(atom_uid as text) +/client/verb/windowclose(atomref as text) set hidden = TRUE // hide this verb from the user's panel set name = ".windowclose" // no autocomplete on cmd line - if(atom_uid != "null") // if passed a real atom_uid - var/hsrc = locateUID(atom_uid) // find the reffed atom + if(atomref != "null") // if passed a real atomref + var/hsrc = locate(atomref) // find the reffed atom + var/href = "close=1" if(hsrc) - var/href = "close=1" usr = src.mob src.Topic(href, params2list(href), hsrc) // this will direct to the atom's return // Topic() proc via client.Topic() diff --git a/code/datums/cache/crew.dm b/code/datums/cache/crew.dm index f3e416f851cf..81f3418b35b2 100644 --- a/code/datums/cache/crew.dm +++ b/code/datums/cache/crew.dm @@ -42,7 +42,7 @@ GLOBAL_DATUM_INIT(crew_repository, /datum/repository/crew, new()) var/turf/pos = get_turf(C) if(!istype(pos) || !T) continue - if((pos.z != T.z) && !(check_level_trait(pos.z, STATION_LEVEL) && check_level_trait(T.z, STATION_LEVEL))) // same z_level or both on STATION_LEVEL + if((pos.z != T.z) && !(is_station_level(pos.z) && is_station_level(T.z))) // same z_level or both on STATION_LEVEL continue var/list/crewmemberData = list("dead"=0, "oxy"=-1, "tox"=-1, "fire"=-1, "brute"=-1, "area"="", "x"=-1, "y"=-1, "ref" = "\ref[H]") diff --git a/code/datums/callback.dm b/code/datums/callback.dm index 3bed1a74bacc..35dd37bc44ff 100644 --- a/code/datums/callback.dm +++ b/code/datums/callback.dm @@ -54,19 +54,6 @@ if(usr) usr_uid = usr.UID() -/proc/ImmediateInvokeAsync(thingtocall, proctocall, ...) - set waitfor = FALSE - - if(!thingtocall) - return - - var/list/calling_arguments = length(args) > 2 ? args.Copy(3) : null - - if(thingtocall == GLOBAL_PROC) - call(proctocall)(arglist(calling_arguments)) - else - call(thingtocall, proctocall)(arglist(calling_arguments)) - /datum/callback/proc/Invoke(...) if(!usr && usr_uid) var/mob/M = locateUID(usr_uid) diff --git a/code/datums/cinematics/kharin_summon.dm b/code/datums/cinematics/kharin_summon.dm new file mode 100644 index 000000000000..09014d472412 --- /dev/null +++ b/code/datums/cinematics/kharin_summon.dm @@ -0,0 +1,23 @@ +/datum/cinematic/cult_arm_kharin/play_cinematic() + screen.icon_state = null + flick("intro_cult", screen) + stoplag(2.5 SECONDS) + play_cinematic_sound(sound('sound/misc/enter_blood.ogg')) + stoplag(2.8 SECONDS) + play_cinematic_sound(sound('sound/machines/terminal_off.ogg')) + stoplag(2 SECONDS) + flick("station_corrupted_Kharin", screen) + play_cinematic_sound(sound('sound/effects/ghost.ogg')) + stoplag(7 SECONDS) + special_callback?.Invoke() + +/datum/cinematic/cult_fail_kharin/play_cinematic() + screen.icon_state = "station_intact" + stoplag(2 SECONDS) + play_cinematic_sound(sound('sound/effects/narsie_summon.ogg')) + stoplag(6 SECONDS) + play_cinematic_sound(sound('sound/effects/explosion_distant.ogg')) + stoplag(1 SECONDS) + play_cinematic_sound(sound('sound/misc/demon_dies.ogg')) + stoplag(3 SECONDS) + special_callback?.Invoke() diff --git a/code/datums/cinematics/ratvar_summon.dm b/code/datums/cinematics/ratvar_summon.dm new file mode 100644 index 000000000000..9a68069e3e93 --- /dev/null +++ b/code/datums/cinematics/ratvar_summon.dm @@ -0,0 +1,22 @@ +/datum/cinematic/cult_arm_ratvar/play_cinematic() + screen.icon_state = null + flick("intro_clockwork", screen) + stoplag(2.5 SECONDS) + play_cinematic_sound(sound('sound/magic/clockwork/reconstruct.ogg')) + stoplag(6 SECONDS) + play_cinematic_sound(sound('sound/machines/terminal_off.ogg')) + stoplag(2 SECONDS) + flick("station_corrupted_Ratvar", screen) + stoplag(7 SECONDS) + special_callback?.Invoke() + +/datum/cinematic/cult_fail_ratvar/play_cinematic() + screen.icon_state = "station_intact" + stoplag(2 SECONDS) + play_cinematic_sound(sound('sound/effects/narsie_summon.ogg')) + stoplag(6 SECONDS) + play_cinematic_sound(sound('sound/effects/explosion_distant.ogg')) + stoplag(1 SECONDS) + play_cinematic_sound(sound('sound/misc/demon_dies.ogg')) + stoplag(3 SECONDS) + special_callback?.Invoke() diff --git a/code/datums/cinematics/reaper_summon.dm b/code/datums/cinematics/reaper_summon.dm new file mode 100644 index 000000000000..50c0e13bc683 --- /dev/null +++ b/code/datums/cinematics/reaper_summon.dm @@ -0,0 +1,24 @@ +/datum/cinematic/cult_arm_reaper/play_cinematic() + screen.icon_state = null + flick("intro_cult", screen) + stoplag(2.5 SECONDS) + play_cinematic_sound(sound('sound/misc/enter_blood.ogg')) + stoplag(2.8 SECONDS) + play_cinematic_sound(sound('sound/machines/terminal_off.ogg')) + stoplag(2 SECONDS) + flick("station_corrupted_Reaper", screen) + play_cinematic_sound(sound('sound/effects/ghost.ogg')) + stoplag(7 SECONDS) + special_callback?.Invoke() + + +/datum/cinematic/cult_fail_reaper/play_cinematic() + screen.icon_state = "station_intact" + stoplag(2 SECONDS) + play_cinematic_sound(sound('sound/effects/narsie_summon.ogg')) + stoplag(6 SECONDS) + play_cinematic_sound(sound('sound/effects/explosion_distant.ogg')) + stoplag(1 SECONDS) + play_cinematic_sound(sound('sound/misc/demon_dies.ogg')) + stoplag(3 SECONDS) + special_callback?.Invoke() diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 6d1810c47ae0..dffdcb44fa37 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -206,11 +206,6 @@ else // Many other things have registered here looked_up += src -/// Registers multiple signals to the same proc. -/datum/proc/RegisterSignals(datum/target, list/signal_types, proctype, override = FALSE) - for (var/signal_type in signal_types) - RegisterSignal(target, signal_type, proctype, override) - /** * Stop listening to a given signal from target * @@ -328,10 +323,12 @@ // all the objects that are receiving the signal get the signal this final time. // AKA: No you can't cancel the signal reception of another object by doing an unregister in the same signal. var/list/queued_calls = list() - for(var/datum/listening_datum as anything in target) - queued_calls[listening_datum] = listening_datum.signal_procs[src][sigtype] - for(var/datum/listening_datum as anything in queued_calls) - . |= call(listening_datum, queued_calls[listening_datum])(arglist(arguments)) + // This should be faster than doing `var/datum/listening_datum as anything in target` as it does not implicitly copy the list + for(var/i in 1 to length(target)) + var/datum/listening_datum = target[i] + queued_calls.Add(listening_datum, listening_datum.signal_procs[src][sigtype]) + for(var/i in 1 to length(queued_calls) step 2) + . |= call(queued_calls[i], queued_calls[i + 1])(arglist(arguments)) // The type arg is casted so initial works, you shouldn't be passing a real instance into this diff --git a/code/datums/components/animal_temperature.dm b/code/datums/components/animal_temperature.dm index b224564995ff..c490a4afc669 100644 --- a/code/datums/components/animal_temperature.dm +++ b/code/datums/components/animal_temperature.dm @@ -1,31 +1,67 @@ /datum/component/animal_temperature dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS /// Min body temp - var/minbodytemp + var/minbodytemp = 250 /// Max body temp - var/maxbodytemp + var/maxbodytemp = 350 /// Damage when below min temp - var/cold_damage + var/cold_damage = 2 /// Damage when above max temp - var/heat_damage + var/heat_damage = 2 /// If true - alert will be shown - var/show_alert + var/show_alert = FALSE /datum/component/animal_temperature/Initialize( - minbodytemp = 250, - maxbodytemp = 350, - cold_damage = 2, - heat_damage = 2, - show_alert = FALSE + minbodytemp, + maxbodytemp, + cold_damage, + heat_damage, + show_alert ) if(!isanimal(parent)) return COMPONENT_INCOMPATIBLE - src.minbodytemp = minbodytemp - src.maxbodytemp = maxbodytemp - src.cold_damage = cold_damage - src.heat_damage = heat_damage - src.show_alert = show_alert + if(!isnull(minbodytemp)) + src.minbodytemp = minbodytemp + + if(!isnull(maxbodytemp)) + src.maxbodytemp = maxbodytemp + + if(!isnull(cold_damage)) + src.cold_damage = cold_damage + + if(!isnull(heat_damage)) + src.heat_damage = heat_damage + + if(!isnull(show_alert)) + src.show_alert = show_alert + +/datum/component/animal_temperature/InheritComponent( + datum/component/animal_temperature/new_comp, + i_am_original, + minbodytemp, + maxbodytemp, + cold_damage, + heat_damage, + show_alert +) + if(!i_am_original) + return + + if(!isnull(minbodytemp)) + src.minbodytemp = minbodytemp + + if(!isnull(maxbodytemp)) + src.maxbodytemp = maxbodytemp + + if(!isnull(cold_damage)) + src.cold_damage = cold_damage + + if(!isnull(heat_damage)) + src.heat_damage = heat_damage + + if(!isnull(show_alert)) + src.show_alert = show_alert /datum/component/animal_temperature/RegisterWithParent() RegisterSignal(parent, COMSIG_ANIMAL_HANDLE_ENVIRONMENT, PROC_REF(handle_environment)) diff --git a/code/datums/components/aura_healing.dm b/code/datums/components/aura_healing.dm index 42b136bb0412..8b0c3c396586 100644 --- a/code/datums/components/aura_healing.dm +++ b/code/datums/components/aura_healing.dm @@ -6,7 +6,7 @@ /// Can be applied to those only with a trait conditionally. /datum/component/aura_healing /// The range of which to heal - var/range + var/range = 5 /// Whether or not you must be a visible object of the parent var/requires_visibility = TRUE @@ -66,7 +66,7 @@ /datum/component/aura_healing/Initialize( - range, + range = 5, requires_visibility = TRUE, brute_heal = 0, burn_heal = 0, @@ -112,9 +112,9 @@ /datum/component/aura_healing/Destroy(force) STOP_PROCESSING(SSaura_healing, src) - var/alert_category = "aura_healing_[\ref(src)]" + var/alert_category = "aura_healing_[src.UID()]" - for(var/mob/living/alert_holder in current_alerts) + for(var/mob/living/alert_holder as anything in current_alerts) alert_holder.clear_alert(alert_category) current_alerts.Cut() organ_healing = null @@ -129,20 +129,26 @@ if(should_show_effect) COOLDOWN_START(src, last_heal_effect_time, HEAL_EFFECT_COOLDOWN) - var/list/remove_alerts_from = current_alerts.Copy() + var/list/to_heal = list() - var/alert_category = "aura_healing_[\ref(src)]" + var/alert_category = "aura_healing_[src.UID()]" - for(var/mob/living/candidate in (requires_visibility ? view(range, parent) : range(range, parent))) - if(!isnull(limit_to_trait) && !HAS_TRAIT(candidate, limit_to_trait)) - continue + if(requires_visibility) + for(var/mob/living/candidate in view(range, parent)) + if(!isnull(limit_to_trait) && !HAS_TRAIT(candidate, limit_to_trait)) + continue + to_heal[candidate] = TRUE + else + for(var/mob/living/candidate in range(range, parent)) + if(!isnull(limit_to_trait) && !HAS_TRAIT(candidate, limit_to_trait)) + continue + to_heal[candidate] = TRUE - remove_alerts_from -= candidate - - if(!(candidate in current_alerts)) + for(var/mob/living/candidate as anything in to_heal) + if(!current_alerts[candidate]) var/atom/movable/screen/alert/aura_healing/alert = candidate.throw_alert(alert_category, /atom/movable/screen/alert/aura_healing, new_master = parent) alert.desc = "You are being healed by [parent]." - current_alerts += candidate + current_alerts[candidate] = TRUE var/old_health = candidate.health @@ -175,7 +181,7 @@ animal_candidate.adjustHealth(-simple_heal * seconds_per_tick, updating_health = FALSE) if(!HAS_TRAIT(candidate, TRAIT_NO_BLOOD_RESTORE) && candidate.blood_volume < BLOOD_VOLUME_NORMAL) - candidate.blood_volume += blood_heal * seconds_per_tick + candidate.AdjustBlood(blood_heal * seconds_per_tick) var/external_organ_heal_done = FALSE if(ishuman(candidate)) @@ -234,7 +240,7 @@ candidate.updatehealth() - for(var/mob/remove_alert_from as anything in remove_alerts_from) + for(var/mob/living/remove_alert_from as anything in current_alerts - to_heal) remove_alert_from.clear_alert(alert_category) current_alerts -= remove_alert_from diff --git a/code/datums/components/blob_minion.dm b/code/datums/components/blob_minion.dm new file mode 100644 index 000000000000..51d22276d83f --- /dev/null +++ b/code/datums/components/blob_minion.dm @@ -0,0 +1,160 @@ +/** + * Common behaviour shared by things which are minions to a blob + */ +/datum/component/blob_minion + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + /// Overmind who is our boss + var/mob/camera/blob/overmind + /// Callback to run if overmind strain changes + var/datum/callback/on_strain_changed + +/datum/component/blob_minion/Initialize(mob/camera/blob/overmind, datum/callback/on_strain_changed) + . = ..() + if(!isminion(parent)) + return COMPONENT_INCOMPATIBLE + src.on_strain_changed = on_strain_changed + register_overlord(overmind) + +/datum/component/blob_minion/Destroy(force) + . = ..() + +/datum/component/blob_minion/InheritComponent(datum/component/new_comp, i_am_original, mob/camera/blob/overmind, datum/callback/on_strain_changed) + if(!isnull(on_strain_changed)) + src.on_strain_changed = on_strain_changed + register_overlord(overmind) + +/datum/component/blob_minion/proc/register_overlord(mob/camera/blob/overmind) + if(isnull(overmind)) + return + src.overmind = overmind + overmind.register_new_minion(parent) + RegisterSignal(overmind, COMSIG_QDELETING, PROC_REF(overmind_deleted)) + RegisterSignal(overmind, COMSIG_BLOB_SELECTED_STRAIN, PROC_REF(overmind_properties_changed)) + overmind_properties_changed(overmind, overmind.blobstrain) + +/// Our overmind is gone, uh oh! +/datum/component/blob_minion/proc/overmind_deleted() + SIGNAL_HANDLER + overmind = null + overmind_properties_changed() + +/// Our overmind has changed colour and properties +/datum/component/blob_minion/proc/overmind_properties_changed(mob/camera/blob/overmind, datum/blobstrain/new_strain) + SIGNAL_HANDLER + var/mob/living/living_parent = parent + living_parent.update_appearance(UPDATE_ICON | UPDATE_OVERLAYS) + on_strain_changed?.Invoke(overmind, new_strain) + +/datum/component/blob_minion/RegisterWithParent() + var/mob/living/living_parent = parent + living_parent.pass_flags |= PASSBLOB + living_parent.faction |= ROLE_BLOB + ADD_TRAIT(parent, TRAIT_BLOB_ALLY, UID()) + living_parent.stop_pulling() + RegisterSignal(parent, COMSIG_MOB_MIND_INITIALIZED, PROC_REF(on_mind_init)) + RegisterSignal(parent, COMSIG_ATOM_UPDATE_ICON, PROC_REF(on_update_appearance)) + RegisterSignal(parent, COMSIG_MOB_GET_STATUS_TAB_ITEMS, PROC_REF(on_update_status_tab)) + RegisterSignal(parent, COMSIG_ATOM_BLOB_ACT, PROC_REF(on_blob_touched)) + RegisterSignal(parent, COMSIG_ATOM_FIRE_ACT, PROC_REF(on_burned)) + RegisterSignal(parent, COMSIG_ATOM_TRIED_PASS, PROC_REF(on_attempted_pass)) + RegisterSignal(parent, COMSIG_MOVABLE_SPACEMOVE, PROC_REF(on_space_move)) + RegisterSignal(parent, COMSIG_MOB_TRY_SPEECH, PROC_REF(on_try_speech)) + RegisterSignal(parent, COMSIG_MOB_CHANGED_TYPE, PROC_REF(on_transformed)) + living_parent.update_appearance(UPDATE_ICON | UPDATE_OVERLAYS) + GLOB.blob_telepathy_mobs |= parent + +/datum/component/blob_minion/UnregisterFromParent() + if(!isnull(overmind)) + overmind.blob_mobs -= parent + var/mob/living/living_parent = parent + living_parent.pass_flags &= ~PASSBLOB + living_parent.faction -= ROLE_BLOB + REMOVE_TRAIT(parent, TRAIT_BLOB_ALLY, UID()) + UnregisterSignal(parent, list( + COMSIG_ATOM_BLOB_ACT, + COMSIG_ATOM_FIRE_ACT, + COMSIG_ATOM_TRIED_PASS, + COMSIG_ATOM_UPDATE_ICON, + COMSIG_MOB_TRY_SPEECH, + COMSIG_MOB_CHANGED_TYPE, + COMSIG_MOB_GET_STATUS_TAB_ITEMS, + COMSIG_MOB_MIND_INITIALIZED, + COMSIG_MOVABLE_SPACEMOVE, + )) + GLOB.blob_telepathy_mobs -= parent + +/// Become blobpilled when we gain a mind +/datum/component/blob_minion/proc/on_mind_init(mob/living/minion, datum/mind/new_mind) + SIGNAL_HANDLER + if(isnull(overmind) || new_mind.has_antag_datum(/datum/antagonist/blob_minion)) + return + + var/datum_type = (isblobbernaut(minion))? /datum/antagonist/blob_minion/blobernaut : /datum/antagonist/blob_minion + var/datum/antagonist/blob_minion/minion_motive = new datum_type(overmind) + new_mind.add_antag_datum(minion_motive) + +/// When our icon is updated, update our colour too +/datum/component/blob_minion/proc/on_update_appearance(mob/living/minion) + SIGNAL_HANDLER + if(isnull(overmind)) + minion.remove_atom_colour(FIXED_COLOUR_PRIORITY) + return + minion.add_atom_colour(overmind.blobstrain.color, FIXED_COLOUR_PRIORITY) + +/// When our icon is updated, update our colour too +/datum/component/blob_minion/proc/on_update_status_tab(mob/living/minion, list/status_items) + SIGNAL_HANDLER + if(isnull(overmind)) + return + status_items += list(list("Критическая Масса:", "[TOTAL_BLOB_MASS]/[NEEDED_BLOB_MASS]")) + +/// If we feel the gentle caress of a blob, we feel better +/datum/component/blob_minion/proc/on_blob_touched(mob/living/minion) + SIGNAL_HANDLER + if(minion.stat == DEAD || minion.health >= minion.maxHealth) + return COMPONENT_CANCEL_BLOB_ACT // Don't hurt us in order to heal us + for(var/i in 1 to 2) + var/obj/effect/temp_visual/heal/heal_effect = new /obj/effect/temp_visual/heal(get_turf(parent)) // hello yes you are being healed + heal_effect.color = isnull(overmind) ? COLOR_BLACK : overmind.blobstrain.complementary_color + minion.heal_overall_damage(minion.maxHealth * BLOBMOB_HEALING_MULTIPLIER) + if(minion.on_fire) + minion.adjust_fire_stacks(-1) + return COMPONENT_CANCEL_BLOB_ACT + +/// If we feel the fearsome bite of open flame, we feel worse +/datum/component/blob_minion/proc/on_burned(mob/living/minion, exposed_temperature, exposed_volume) + SIGNAL_HANDLER + if(isnull(exposed_temperature)) + minion.adjustFireLoss(5) + return + minion.adjustFireLoss(clamp(0.01 * exposed_temperature, 1, 5)) + +/// Someone is attempting to move through us, allow it if it is a blob tile +/datum/component/blob_minion/proc/on_attempted_pass(mob/living/minion, atom/movable/incoming) + SIGNAL_HANDLER + if(istype(incoming, /obj/structure/blob)) + return COMSIG_COMPONENT_PERMIT_PASSAGE + +/// If we're near a blob, stop drifting +/datum/component/blob_minion/proc/on_space_move(mob/living/minion) + SIGNAL_HANDLER + var/obj/structure/blob/blob_handhold = locate() in range(1, parent) + if(!isnull(blob_handhold)) + return COMSIG_MOVABLE_STOP_SPACEMOVE + +/// We only speak telepathically to blobs +/datum/component/blob_minion/proc/on_try_speech(mob/living/minion, message, ignore_spam, forced) + SIGNAL_HANDLER + var/spanned_message = minion.say_quote(message) + var/rendered = span_blob("\[Blob Telepathy\] [minion.real_name] [spanned_message], [message]") + relay_to_list_and_observers(rendered, GLOB.blob_telepathy_mobs, minion) + return COMPONENT_CANNOT_SPEAK + +/// Called when a blob minion is transformed into something else, hopefully a spore into a zombie +/datum/component/blob_minion/proc/on_transformed(mob/living/minion, mob/living/replacement) + SIGNAL_HANDLER + overmind?.assume_direct_control(replacement) + +/datum/component/blob_minion/PostTransfer() + if(!isliving(parent)) + return COMPONENT_INCOMPATIBLE diff --git a/code/datums/components/blob_turf_consuming.dm b/code/datums/components/blob_turf_consuming.dm new file mode 100644 index 000000000000..7ad814047d80 --- /dev/null +++ b/code/datums/components/blob_turf_consuming.dm @@ -0,0 +1,34 @@ +/datum/component/blob_turf_consuming + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + /// Number of attempts of consume neede for consume + var/consumes_needed = 0 + /// Total number of attempts of consume + var/total_consumes = 0 + +/datum/component/blob_turf_consuming/Initialize(_consumes_needed) + if(!isturf(parent)) + return COMPONENT_INCOMPATIBLE + + consumes_needed = _consumes_needed + +/datum/component/blob_turf_consuming/RegisterWithParent() + RegisterSignal(parent, COMSIG_TRY_CONSUME_TURF, PROC_REF(on_try_consume)) + +/datum/component/blob_turf_consuming/UnregisterFromParent() + UnregisterSignal(parent, COMSIG_TRY_CONSUME_TURF) + + +/datum/component/blob_turf_consuming/InheritComponent(datum/component/blob_turf_consuming/new_comp , i_am_original, _consumes_needed) + if(new_comp) + consumes_needed = new_comp.consumes_needed + else + consumes_needed = _consumes_needed + + +/datum/component/blob_turf_consuming/proc/on_try_consume() + total_consumes++ + if(total_consumes >= consumes_needed) + var/turf/total_turf = parent + total_turf.blob_consume() + return + return COMPONENT_CANT_CONSUME diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm index 64082941e078..38e0d9aa6940 100644 --- a/code/datums/components/chasm.dm +++ b/code/datums/components/chasm.dm @@ -11,9 +11,10 @@ /obj/machinery/bfl_receiver, /obj/singularity, /obj/docking_port, + /obj/spacepod, /obj/structure/lattice, /obj/structure/stone_tile, - /obj/item/projectile, + /obj/projectile, /obj/effect/portal, /obj/effect/hotspot, /obj/effect/landmark, @@ -21,7 +22,7 @@ /obj/effect/light_emitter/tendril, /obj/effect/collapse, /obj/effect/abstract, - /obj/effect/particle_effect/smoke, + /obj/effect/particle_effect/fluid/smoke, /obj/effect/particle_effect/ion_trails, /obj/effect/particle_effect/sparks, /obj/effect/particle_effect/expl_particles, @@ -30,6 +31,7 @@ /obj/effect/spawner, /obj/structure/railing, /mob/living/simple_animal/hostile/megafauna, //failsafe + /mob/living/simple_animal/hostile/asteroid/elite, //failsafe also )) @@ -173,6 +175,9 @@ return // We're already handling this if(below_turf) + if(HAS_TRAIT(dropped_thing, TRAIT_CHASM_DESTROYED)) + qdel(dropped_thing) + return // send to the turf below dropped_thing.visible_message(span_boldwarning("[dropped_thing] falls into [atom_parent]!"), span_userdanger("[fall_message]")) below_turf.visible_message(span_boldwarning("[dropped_thing] falls from above!")) @@ -192,6 +197,11 @@ ADD_TRAIT(falling_mob, TRAIT_NO_TRANSFORM, UNIQUE_TRAIT_SOURCE(src)) falling_mob.Stun(20 SECONDS) + if(ismecha(dropped_thing)) + var/obj/mecha/fallen_mecha = dropped_thing + if(fallen_mecha.occupant) + fallen_mecha.occupant.Stun(20 SECONDS) // no escape eject + var/oldtransform = dropped_thing.transform var/oldcolor = dropped_thing.color var/oldalpha = dropped_thing.alpha @@ -214,6 +224,10 @@ if(QDELETED(dropped_thing)) return + if(HAS_TRAIT(dropped_thing, TRAIT_CHASM_DESTROYED)) + qdel(dropped_thing) + return + if(isrobot(dropped_thing)) var/mob/living/silicon/robot/robot = dropped_thing qdel(robot.mmi) @@ -235,8 +249,18 @@ if(!dropped_thing.forceMove(storage)) atom_parent.visible_message(span_boldwarning("[atom_parent] spits out [dropped_thing]!")) dropped_thing.throw_at(get_edge_target_turf(atom_parent, pick(GLOB.alldirs)), rand(1, 10), rand(1, 10)) + falling_atoms -= falling_ref + return - else if(isliving(dropped_thing)) + if(ismecha(dropped_thing)) + var/obj/mecha/fallen_mecha = dropped_thing + if(fallen_mecha.occupant) + dropped_thing = fallen_mecha.occupant + fallen_mecha.wreckage = null + fallen_mecha.take_damage(10000) + dropped_thing.forceMove(storage) + + if(isliving(dropped_thing)) var/mob/living/fallen_mob = dropped_thing REMOVE_TRAIT(fallen_mob, TRAIT_NO_TRANSFORM, UNIQUE_TRAIT_SOURCE(src)) if(fallen_mob.stat != DEAD) diff --git a/code/datums/components/connect_containers.dm b/code/datums/components/connect_containers.dm new file mode 100644 index 000000000000..6f793c860e1b --- /dev/null +++ b/code/datums/components/connect_containers.dm @@ -0,0 +1,68 @@ +/// This component behaves similar to connect_loc_behalf, but it's nested and hooks a signal onto all MOVABLES containing this atom. +/datum/component/connect_containers + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + + /// An assoc list of signal -> procpath to register to the loc this object is on. + var/list/connections + /** + * The atom the component is tracking. The component will delete itself if the tracked is deleted. + * Signals will also be updated whenever it moves. + */ + var/atom/movable/tracked + +/datum/component/connect_containers/Initialize(atom/movable/tracked, list/connections) + . = ..() + if(!ismovable(tracked)) + return COMPONENT_INCOMPATIBLE + + src.connections = connections + set_tracked(tracked) + +/datum/component/connect_containers/Destroy() + set_tracked(null) + return ..() + +/datum/component/connect_containers/InheritComponent(datum/component/component, original, atom/movable/tracked, list/connections) + // Not equivalent. Checks if they are not the same list via shallow comparison. + if(!compare_list(src.connections, connections)) + stack_trace("connect_containers component attached to [parent] tried to inherit another connect_containers component with different connections") + return + if(src.tracked != tracked) + set_tracked(tracked) + +/datum/component/connect_containers/proc/set_tracked(atom/movable/new_tracked) + if(tracked) + UnregisterSignal(tracked, list(COMSIG_MOVABLE_MOVED, COMSIG_QDELETING)) + unregister_signals(tracked.loc) + tracked = new_tracked + if(!tracked) + return + RegisterSignal(tracked, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) + RegisterSignal(tracked, COMSIG_QDELETING, PROC_REF(handle_tracked_qdel)) + update_signals(tracked) + +/datum/component/connect_containers/proc/handle_tracked_qdel() + SIGNAL_HANDLER + qdel(src) + +/datum/component/connect_containers/proc/update_signals(atom/movable/listener) + if(!ismovable(listener.loc)) + return + + for(var/atom/movable/container as anything in get_nested_locs(listener)) + RegisterSignal(container, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) + for(var/signal in connections) + parent.RegisterSignal(container, signal, connections[signal]) + +/datum/component/connect_containers/proc/unregister_signals(atom/movable/location) + if(!ismovable(location)) + return + + for(var/atom/movable/target as anything in (get_nested_locs(location) + location)) + UnregisterSignal(target, COMSIG_MOVABLE_MOVED) + parent.UnregisterSignal(target, connections) + +/datum/component/connect_containers/proc/on_moved(atom/movable/listener, atom/old_loc) + SIGNAL_HANDLER + unregister_signals(old_loc) + update_signals(listener) diff --git a/code/datums/components/deadchat_control.dm b/code/datums/components/deadchat_control.dm new file mode 100644 index 000000000000..8d9280bf7302 --- /dev/null +++ b/code/datums/components/deadchat_control.dm @@ -0,0 +1,288 @@ + +/** + * Deadchat Plays Things - The Componenting + * + * Allows deadchat to control stuff and things by typing commands into chat. + * These commands will then trigger callbacks to execute procs! + */ +/datum/component/deadchat_control + dupe_mode = COMPONENT_DUPE_UNIQUE + + /// The id for the DEADCHAT_DEMOCRACY_MODE looping vote timer. + var/timerid + /// Assoc list of key-chat command string, value-callback pairs. list("right" = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_step), src, EAST)) + var/list/datum/callback/inputs = list() + /// Assoc list of ckey:value pairings. In DEADCHAT_DEMOCRACY_MODE, value is the player's vote. In DEADCHAT_ANARCHY_MODE, value is world.time when their cooldown expires. + var/list/ckey_to_cooldown = list() + /// List of everything orbitting this component's parent. + var/orbiters = list() + /// A bitfield containing the mode which this component uses (DEADCHAT_DEMOCRACY_MODE or DEADCHAT_ANARCHY_MODE) and other settings) + var/deadchat_mode = DEADCHAT_DEMOCRACY_MODE + /// In DEADCHAT_DEMOCRACY_MODE, this is how long players have to vote on an input. In DEADCHAT_ANARCHY_MODE, this is how long between inputs for each unique player. + var/input_cooldown + ///Set to true if a point of interest was created for an object, and needs to be removed if deadchat control is removed. Needed for preventing objects from having two points of interest. + var/generated_point_of_interest = FALSE + /// Callback invoked when this component is Destroy()ed to allow the parent to return to a non-deadchat controlled state. + var/datum/callback/on_removal + +/datum/component/deadchat_control/Initialize(_deadchat_mode, _inputs, _input_cooldown = 12 SECONDS, _on_removal) + if(!isatom(parent)) + return COMPONENT_INCOMPATIBLE + RegisterSignal(parent, COMSIG_ATOM_ORBIT_BEGIN, PROC_REF(orbit_begin)) + RegisterSignal(parent, COMSIG_ATOM_ORBIT_STOP, PROC_REF(orbit_stop)) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine)) + deadchat_mode = _deadchat_mode + inputs = _inputs + input_cooldown = _input_cooldown + on_removal = _on_removal + if(deadchat_mode & DEADCHAT_DEMOCRACY_MODE) + if(deadchat_mode & DEADCHAT_ANARCHY_MODE) // Choose one, please. + stack_trace("deadchat_control component added to [parent.type] with both democracy and anarchy modes enabled.") + timerid = addtimer(CALLBACK(src, PROC_REF(democracy_loop)), input_cooldown, TIMER_STOPPABLE | TIMER_LOOP) + + var/list/input_names = list() + for(var/item in inputs) + input_names |= item + var/atom/atom_parent = parent + notify_ghosts("[capitalize(atom_parent.declent_ru(NOMINATIVE))] теперь может контролироваться призраками из чата! Возможные команды: [english_list(input_names)]", source = parent, action = NOTIFY_FOLLOW, title="Контроль дедчата!") + if(!ismob(parent) && !(parent in GLOB.poi_list)) + GLOB.poi_list |= parent + generated_point_of_interest = TRUE + message_admins("[parent] has been given deadchat control in [deadchat_mode == DEADCHAT_ANARCHY_MODE ? "anarchy" : "democracy"] mode with a cooldown of [input_cooldown] second\s.") + + var/atom/A = parent + for(var/mob/dead/observer/ghost in A.orbiters) + // get started with anyone who's already following + orbit_begin(A, ghost) + +/datum/component/deadchat_control/Destroy(force, silent) + var/atom/atom_parent = parent + var/message = "[capitalize(atom_parent.declent_ru(NOMINATIVE))] теперь не контролируется призраками." + for(var/mob/dead/observer/M in orbiters) + to_chat(M, message) + on_removal?.Invoke() + inputs = null + orbiters = null + ckey_to_cooldown = null + if(generated_point_of_interest) + GLOB.poi_list -= parent + return ..() + +/datum/component/deadchat_control/proc/deadchat_react(mob/source, message) + SIGNAL_HANDLER // COMSIG_MOB_DEADSAY + + message = lowertext(message) + + if(!inputs[message]) + return + + if(deadchat_mode & DEADCHAT_ANARCHY_MODE) + if(!source || !source.ckey) + return + var/cooldown = ckey_to_cooldown[source.ckey] - world.time + if(cooldown > 0) + var/ceil_cooldown = CEILING(cooldown * 0.1, 1) + to_chat(source, span_warning("Управление командами будет доступно через [ceil_cooldown] секунд[declension_ru(ceil_cooldown,"у", "ы", "")].")) + return MOB_DEADSAY_SIGNAL_INTERCEPT + ckey_to_cooldown[source.ckey] = world.time + input_cooldown + addtimer(CALLBACK(src, PROC_REF(end_cooldown), source.ckey), input_cooldown) + inputs[message].Invoke() + var/input_cooldown_s = input_cooldown * 0.1 + to_chat(source, span_notice("Команда \"[message]\" принята. Следующий ввод будет доступен через [input_cooldown_s] секунд[declension_ru(input_cooldown_s,"у", "ы", "")].")) + return MOB_DEADSAY_SIGNAL_INTERCEPT + + if(deadchat_mode & DEADCHAT_DEMOCRACY_MODE) + ckey_to_cooldown[source.ckey] = message + to_chat(source, span_notice("Вы проголосовали за команду \"[message]\".")) + return MOB_DEADSAY_SIGNAL_INTERCEPT + +/datum/component/deadchat_control/proc/democracy_loop() + var/atom/atom_parent = parent + if(QDELETED(parent) || !(deadchat_mode & DEADCHAT_DEMOCRACY_MODE)) + deltimer(timerid) + return + var/result = count_democracy_votes() + if(!isnull(result)) + inputs[result].Invoke() + if(!(deadchat_mode & MUTE_DEADCHAT_DEMOCRACY_MESSAGES)) + var/input_cooldown_s = input_cooldown * 0.1 + var/message = "[capitalize(atom_parent.declent_ru(NOMINATIVE))] выполнил команду [result]!
Новое голосование начато. Оно закончится через [input_cooldown_s] секунд[declension_ru(input_cooldown_s,"у", "ы", "")].
" + for(var/mob/dead/observer/M in orbiters) + to_chat(M, message) + else if(!(deadchat_mode & MUTE_DEADCHAT_DEMOCRACY_MESSAGES)) + var/message = "В этом цикле не было голосов." + for(var/mob/dead/observer/M in orbiters) + to_chat(M, message) + +/datum/component/deadchat_control/proc/count_democracy_votes() + if(!length(ckey_to_cooldown)) + return + var/list/votes = list() + for(var/command in inputs) + votes["[command]"] = 0 + for(var/vote in ckey_to_cooldown) + votes[ckey_to_cooldown[vote]]++ + ckey_to_cooldown.Remove(vote) + + // Solve which had most votes. + var/prev_value = 0 + var/result + for(var/vote in votes) + if(votes[vote] > prev_value) + prev_value = votes[vote] + result = vote + + if(result in inputs) + return result + +/datum/component/deadchat_control/vv_edit_var(var_name, var_value) + . = ..() + if(!.) + return + if(var_name != NAMEOF(src, deadchat_mode)) + return + ckey_to_cooldown = list() + if(var_value == DEADCHAT_DEMOCRACY_MODE) + timerid = addtimer(CALLBACK(src, PROC_REF(democracy_loop)), input_cooldown, TIMER_STOPPABLE | TIMER_LOOP) + else + deltimer(timerid) + +/datum/component/deadchat_control/proc/orbit_begin(atom/source, atom/orbiter) + SIGNAL_HANDLER // COMSIG_ATOM_ORBIT_BEGIN + + var/atom/atom_parent = parent + + if(isobserver(orbiter)) + var/mob/dead/observer/O = orbiter + if(O.client && !(O.client.prefs.toggles & PREFTOGGLE_CHAT_DEAD)) + to_chat(O, span_deadsay("У вас отключён дедчат, и поэтому вы не будете получать сообщения, связанные с этим объектом, и не сможете управлять им.")) + to_chat(O, span_notice("Если вы хотите принять участие, включите дедчат и снова прыгните на этот объект.")) + return + else + to_chat(O, span_deadsay("[capitalize(atom_parent.declent_ru(NOMINATIVE))] контролируется призраками через чат! Осмотрите [atom_parent.declent_ru(ACCUSATIVE)] чтобы увидеть команды управления, которые вы можете использовать пока летаете вокруг [genderize_ru(atom_parent.gender, "него", "неё", "него", "них")]!")) + + RegisterSignal(orbiter, COMSIG_MOB_DEADSAY, PROC_REF(deadchat_react)) + RegisterSignal(orbiter, COMSIG_MOB_AUTOMUTE_CHECK, PROC_REF(waive_automute)) + orbiters |= orbiter + + +/datum/component/deadchat_control/proc/orbit_stop(atom/source, atom/orbiter) + SIGNAL_HANDLER // COMSIG_ATOM_ORBIT_STOP + + if(orbiter in orbiters) + UnregisterSignal(orbiter, list( + COMSIG_MOB_DEADSAY, + COMSIG_MOB_AUTOMUTE_CHECK, + )) + orbiters -= orbiter + +/** + * Prevents messages used to control the parent from counting towards the automute threshold for repeated identical messages. + * + * Arguments: + * - [speaker][/client]: The mob that is trying to speak. + * - [client][/client]: The client that is trying to speak. + * - message: The message that the speaker is trying to say. + * - mute_type: Which type of mute the message counts towards. + */ +/datum/component/deadchat_control/proc/waive_automute(mob/speaker, client/client, message, mute_type) + SIGNAL_HANDLER // COMSIG_MOB_AUTOMUTE_CHECK + if(mute_type == MUTE_DEADCHAT && inputs[lowertext(message)]) + return WAIVE_AUTOMUTE_CHECK + return NONE + + +/// Informs any examiners to the inputs available as part of deadchat control, as well as the current operating mode and cooldowns. +/datum/component/deadchat_control/proc/on_examine(atom/object, mob/user, list/examine_list) + SIGNAL_HANDLER // COMSIG_PARENT_EXAMINE + + if(!isobserver(user)) + return + + examine_list += span_notice("[genderize_ru(object.gender, "Он", "Она", "Оно", "Они")] контролируется призраками через чат по [(deadchat_mode & DEADCHAT_DEMOCRACY_MODE) ? "демократическому" : "анархическому"] набору правил!") + + if(user.client && !(user.client.prefs.toggles & PREFTOGGLE_CHAT_DEAD)) + examine_list += span_deadsay("Поскольку у вас отключён дедчат, вы не увидите сообщения о голосовании и не сможете участвовать в нем.") + return + + if(!(user in orbiters)) + examine_list += "Прыгнете на [genderize_ru(object.gender, "него", "неё", "него", "них")]] и осмотрите снова, чтобы увидеть список доступных команд." + return + + var/input_cooldown_s = input_cooldown * 0.1 + + if(deadchat_mode & DEADCHAT_DEMOCRACY_MODE) + examine_list += span_notice("Введите команду в чат, чтобы проголосовать за действие. Это происходит один раз в [input_cooldown_s] секунд[declension_ru(input_cooldown_s,"у", "ы", "")].") + else if(deadchat_mode & DEADCHAT_ANARCHY_MODE) + examine_list += span_notice("Введите команду в чат для выполнения действия. Вы можете делать это один раз в [input_cooldown_s] секунд[declension_ru(input_cooldown_s,"у", "ы", "")].") + + var/extended_examine = "Список команд:" + + extended_examine += english_list(inputs) + + extended_examine += "." + + examine_list += span_notice(extended_examine) + +/// Removes the ghost from the ckey_to_cooldown list and lets them know they are free to submit a command for the parent again. +/datum/component/deadchat_control/proc/end_cooldown(ghost_ckey) + ckey_to_cooldown -= ghost_ckey + var/mob/ghost = get_mob_by_ckey(ghost_ckey) + if(!ghost || isliving(ghost)) + return + var/atom/atom_parent = parent + to_chat(ghost, span_green("Вы можете снова ввести команду для управления [atom_parent.declent_ru(INSTRUMENTAL)] ([ghost_follow_link(parent, ghost)]).")) + +/// Dummy to call since we can't proc reference builtins +/datum/component/deadchat_control/proc/_step(ref, dir) + step(ref, dir) + +/** + * Deadchat Moves Things + * + * A special variant of the deadchat_control component that comes pre-baked with all the hottest inputs for a spicy + * singularity or vomit goose. + */ +/datum/component/deadchat_control/cardinal_movement/Initialize(_deadchat_mode, _inputs, _input_cooldown, _on_removal) + if(!ismovable(parent)) + return COMPONENT_INCOMPATIBLE + + _inputs["вверх"] = CALLBACK(src, PROC_REF(_step), parent, NORTH) + _inputs["вниз"] = CALLBACK(src, PROC_REF(_step), parent, SOUTH) + _inputs["влево"] = CALLBACK(src, PROC_REF(_step), parent, WEST) + _inputs["вправо"] = CALLBACK(src, PROC_REF(_step), parent, EAST) + + return ..() + +/** + * Deadchat Moves Things + * + * A special variant of the deadchat_control component that comes pre-baked with all the hottest inputs for spicy + * immovable rod. + */ +/datum/component/deadchat_control/immovable_rod/Initialize(_deadchat_mode, _inputs, _input_cooldown, _on_removal) + if(!istype(parent, /obj/effect/immovablerod)) + return COMPONENT_INCOMPATIBLE + + _inputs["вверх"] = CALLBACK(parent, TYPE_PROC_REF(/obj/effect/immovablerod, walk_in_direction), NORTH) + _inputs["вниз"] = CALLBACK(parent, TYPE_PROC_REF(/obj/effect/immovablerod, walk_in_direction), SOUTH) + _inputs["влево"] = CALLBACK(parent, TYPE_PROC_REF(/obj/effect/immovablerod, walk_in_direction), WEST) + _inputs["вправо"] = CALLBACK(parent, TYPE_PROC_REF(/obj/effect/immovablerod, walk_in_direction), EAST) + + return ..() + + +/** + * Deadchat Moves Things + * + * A special variant of the deadchat_control component that comes pre-baked with basic inputs for moving humans around, + * with special behavior that has them resist while moving. + */ +/datum/component/deadchat_control/human/Initialize(_deadchat_mode, _inputs, _input_cooldown, _on_removal) + if(!ishuman(parent)) + return COMPONENT_INCOMPATIBLE + _inputs["вверх"] = CALLBACK(parent, TYPE_PROC_REF(/mob/living/carbon/human/, dchat_step), NORTH) + _inputs["вниз"] = CALLBACK(parent, TYPE_PROC_REF(/mob/living/carbon/human/, dchat_step), SOUTH) + _inputs["влево"] = CALLBACK(parent, TYPE_PROC_REF(/mob/living/carbon/human/, dchat_step), WEST) + _inputs["вправо"] = CALLBACK(parent, TYPE_PROC_REF(/mob/living/carbon/human/, dchat_step), EAST) + return ..() diff --git a/code/datums/components/death_linked.dm b/code/datums/components/death_linked.dm new file mode 100644 index 000000000000..4fba8d5f68d4 --- /dev/null +++ b/code/datums/components/death_linked.dm @@ -0,0 +1,51 @@ +/** + * ## Death link component + * + * When the owner of this component dies it also gibs a linked mobs + */ +/datum/component/death_linked + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + /// Mobs in that list will die when the user dies. Contains weakrefs + var/list/linked_mobs + +/datum/component/death_linked/Initialize(list/mobs) + . = ..() + + if(!isliving(parent)) + return COMPONENT_INCOMPATIBLE + + for(var/mob/mob as anything in mobs) + LAZYADD(linked_mobs, WEAKREF(mob)) + +/datum/component/death_linked/Destroy(force) + LAZYNULL(linked_mobs) + + return ..() + +/datum/component/death_linked/InheritComponent(datum/component/death_linked/new_comp, i_am_original, list/mobs) + if(!i_am_original) + return + + if(!LAZYLEN(mobs)) + return + + for(var/mob/mob as anything in mobs) + LAZYADD(linked_mobs, WEAKREF(mob)) + +/datum/component/death_linked/RegisterWithParent() + . = ..() + RegisterSignal(parent, COMSIG_LIVING_DEATH, PROC_REF(on_death)) + +/datum/component/death_linked/UnregisterFromParent() + . = ..() + UnregisterSignal(parent, COMSIG_LIVING_DEATH) + +/datum/component/death_linked/proc/on_death(mob/living/target, gibbed) + SIGNAL_HANDLER + + if(!LAZYLEN(linked_mobs)) + return + + for(var/datum/weakref/weakref as anything in linked_mobs) + var/mob/living/linked_mob_resolved = weakref.resolve() + linked_mob_resolved?.gib() diff --git a/code/datums/components/defibrillator.dm b/code/datums/components/defibrillator.dm index fa90caaf95d1..064a1a2ef984 100644 --- a/code/datums/components/defibrillator.dm +++ b/code/datums/components/defibrillator.dm @@ -6,8 +6,6 @@ var/robotic /// If it should penetrate space suits var/ignore_hardsuits - /// If ignore_hardsuits is true, this determines whether or not it should always cause a heart attack. - var/heart_attack_chance /// Whether the safeties are enabled or not var/safety /// If the defib is actively performing a defib cycle @@ -33,13 +31,12 @@ * * cooldown - Minimum time possible between shocks. * * speed_multiplier - Speed multiplier for defib do-afters. * * ignore_hardsuits - If true, the defib can zap through hardsuits. - * * heart_attack_chance - If safeties are off, the % chance for this to cause a heart attack on harm intent. * * safe_by_default - If true, safety will be enabled by default. * * emp_proof - If true, safety won't be switched by emp. Note that the device itself can still have behavior from it, it's just that the component will not. * * emag_proof - If true, safety won't be switched by emag. Note that the device itself can still have behavior from it, it's just that the component will not. * * actual_unit - Unit which the component's parent is based from, such as a large defib unit or a borg. The actual_unit will make the sounds and be the "origin" of visible messages, among other things. */ -/datum/component/defib/Initialize(robotic, cooldown = 5 SECONDS, speed_multiplier = 1, ignore_hardsuits = FALSE, heart_attack_chance = 100, safe_by_default = TRUE, emp_proof = FALSE, emag_proof = FALSE, obj/item/actual_unit = null) +/datum/component/defib/Initialize(robotic, cooldown = 5 SECONDS, speed_multiplier = 1, ignore_hardsuits = FALSE, safe_by_default = TRUE, emp_proof = FALSE, emag_proof = FALSE, obj/item/actual_unit = null) if(!isitem(parent)) return COMPONENT_INCOMPATIBLE @@ -47,7 +44,6 @@ src.speed_multiplier = speed_multiplier src.cooldown = cooldown src.ignore_hardsuits = ignore_hardsuits - src.heart_attack_chance = heart_attack_chance safety = safe_by_default src.emp_proof = emp_proof src.emag_proof = emag_proof @@ -58,6 +54,7 @@ var/effect_target = isnull(actual_unit) ? parent : actual_unit RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(trigger_defib)) + RegisterSignal(parent, COMSIG_GLOVES_DOUBLE_HANDS_TOUCH, PROC_REF(trigger_defib)) RegisterSignal(effect_target, COMSIG_ATOM_EMAG_ACT, PROC_REF(on_emag)) RegisterSignal(effect_target, COMSIG_ATOM_EMP_ACT, PROC_REF(on_emp)) @@ -77,12 +74,12 @@ if(safety) safety = FALSE - unit.visible_message(span_warning("[unit] beeps: Safety protocols disabled!")) playsound(get_turf(unit), 'sound/machines/defib_saftyoff.ogg', 50, 0) + unit.atom_say("Протоколы безопасности деактивированы!") else safety = TRUE - unit.visible_message(span_notice("[unit] beeps: Safety protocols enabled!")) playsound(get_turf(unit), 'sound/machines/defib_saftyon.ogg', 50, 0) + unit.atom_say("Протоколы безопасности активированы!") /datum/component/defib/proc/on_emag(obj/item/unit, mob/user) SIGNAL_HANDLER // COMSIG_ATOM_EMAG_ACT @@ -90,7 +87,7 @@ return safety = !safety if(user && !robotic) - user.balloon_alert(user, "протоколы безопасности [safety ? "де" : ""]активированы!") + user.balloon_alert(user, "протоколы безопасности [safety ? "" : "де"]активированы!") /datum/component/defib/proc/set_cooldown(how_short) on_cooldown = TRUE @@ -133,22 +130,19 @@ var/application_result = SEND_SIGNAL(parent, COMSIG_DEFIB_PADDLES_APPLIED, user, target, should_cause_harm) if(application_result & COMPONENT_BLOCK_DEFIB_DEAD) - user.visible_message(span_notice("[defib_ref] beeps: Unit is unpowered.")) playsound(get_turf(defib_ref), 'sound/machines/defib_failed.ogg', 50, 0) + defib_ref.atom_say("Недостаточно энергии!") return if(on_cooldown) - user.balloon_alert(user, "всё ещё заряжается!") + user.balloon_alert(user, "заряд не готов!") return if(application_result & COMPONENT_BLOCK_DEFIB_MISC) return // the unit should handle this if(!istype(target)) - if(robotic) - user.balloon_alert(user, "на роботах не сработает") - else - user.balloon_alert(user, "\"это\" нельзя дефибриллировать") + user.balloon_alert(user, "неподходящая цель!") return if(should_cause_harm) @@ -158,14 +152,14 @@ return user.visible_message( - span_warning("[user] begins to place [parent] on [target.name]'s chest."), - span_warning("You begin to place [parent] on [target.name]'s chest."), + span_warning("[user] начина[pluralize_ru(user.gender, "ет", "ют")] размещать лопасти дефибриллятора на груди [target.name]."), + span_warning("Вы начинаете размещать лопасти дефибриллятора на груди [target.name]."), ) busy = TRUE var/mob/dead/observer/ghost = target.get_ghost(TRUE) if(ghost?.can_reenter_corpse) - to_chat(ghost, "[span_ghostalert("Your heart is being defibrillated. Return to your body if you want to be revived!")] (Verbs -> Ghost -> Re-enter corpse)") + to_chat(ghost, span_ghostalert("Ваше сердце пытаются дефибриллировать. Вернитесь в своё тело, если хотите быть оживлены!")) window_flash(ghost.client) SEND_SOUND(ghost, sound('sound/effects/genetics.ogg')) @@ -174,8 +168,8 @@ return user.visible_message( - span_notice("[user] places [parent] on [target.name]'s chest."), - span_warning("You place [parent] on [target.name]'s chest."), + span_notice("[user] разместил[genderize_ru(user.gender, "", "а", "о", "и")] лопасти дефибриллятора на груди [target.name]."), + span_notice("Вы разместили лопасти дефибриллятора на груди [target.name]."), ) playsound(get_turf(defib_ref), 'sound/machines/defib_charge.ogg', 50, 0) @@ -188,29 +182,28 @@ return if(istype(target.wear_suit, /obj/item/clothing/suit/space) && !ignore_hardsuits) - user.visible_message(span_notice("[defib_ref] buzzes: Patient's chest is obscured. Operation aborted.")) playsound(get_turf(defib_ref), 'sound/machines/defib_failed.ogg', 50, 0) + defib_ref.atom_say("Грудь пациента закрыта. Операция отменена.") busy = FALSE return if(target.undergoing_cardiac_arrest()) var/obj/item/organ/internal/heart/heart = target.get_organ_slot(INTERNAL_ORGAN_HEART) - if(!heart) - user.visible_message(span_boldnotice("[defib_ref] buzzes: Resuscitation failed - Failed to pick up any heart electrical activity.")) - else if(heart.is_dead()) - user.visible_message(span_boldnotice("[defib_ref] buzzes: Resuscitation failed - Heart necrosis detected.")) if(!heart || heart.is_dead()) playsound(get_turf(defib_ref), 'sound/machines/defib_failed.ogg', 50, 0) busy = FALSE - return + if(!heart) + defib_ref.atom_say("Реанимация не удалась - электрическая активность сердца не зафиксирована!") + else if(heart.is_dead()) + defib_ref.atom_say("Реанимация не удалась - обнаружен некроз сердца!") target.set_heartattack(FALSE) SEND_SIGNAL(target, COMSIG_LIVING_MINOR_SHOCK, 100) SEND_SIGNAL(parent, COMSIG_DEFIB_SHOCK_APPLIED, user, target, should_cause_harm, TRUE) set_cooldown(cooldown) - user.visible_message(span_boldnotice("[defib_ref] pings: Cardiac arrhythmia corrected.")) - target.visible_message(span_warning("[target]'s body convulses a bit."), span_userdanger("You feel a jolt, and your heartbeat seems to steady.")) + defib_ref.atom_say("Сердечная аритмия устранена!") + target.visible_message(span_warning("Тело [target] слегка вздрагивает."), span_userdanger("Вы чувствуете мощный удар током, после которого ритм вашего сердца приходит в норму.")) playsound(get_turf(defib_ref), 'sound/machines/defib_zap.ogg', 50, 1, -1) playsound(get_turf(defib_ref), "bodyfall", 50, 1) playsound(get_turf(defib_ref), 'sound/machines/defib_success.ogg', 50, 0) @@ -219,12 +212,12 @@ return if(target.stat != DEAD && !HAS_TRAIT(target, TRAIT_FAKEDEATH)) - user.visible_message(span_notice("[defib_ref] buzzes: Patient is not in a valid state. Operation aborted.")) playsound(get_turf(defib_ref), 'sound/machines/defib_failed.ogg', 50, 0) + defib_ref.atom_say("Пациент не подлежит реанимации. Операция отменена.") busy = FALSE return - target.visible_message(span_warning("[target]'s body convulses a bit.")) + target.visible_message(span_warning("Тело [target] слегка вздрагивает.")) playsound(get_turf(defib_ref), "bodyfall", 50, 1) playsound(get_turf(defib_ref), 'sound/machines/defib_zap.ogg', 50, 1, -1) ghost = target.get_ghost(TRUE) // We have to double check whether the dead guy has entered their body during the above @@ -235,25 +228,25 @@ var/time_dead = world.time - target.timeofdeath if((time_dead > DEFIB_TIME_LIMIT) || !target.get_organ_slot(INTERNAL_ORGAN_HEART)) - user.visible_message(span_boldnotice("[defib_ref] buzzes: Resuscitation failed - Heart tissue damage beyond point of no return for defibrillation.")) + defib_ref.atom_say("Реанимация не удалась - обнаружены необратимые повреждения сердца!") defib_success = FALSE else if(target.getBruteLoss() >= 180 || target.getFireLoss() >= 180 || target.getCloneLoss() >= 180) - user.visible_message(span_boldnotice("[defib_ref] buzzes: Resuscitation failed - Severe tissue damage detected.")) + defib_ref.atom_say("Реанимация не удалась - обнаружены обширные повреждения тканей!") defib_success = FALSE else if(target.blood_volume < BLOOD_VOLUME_SURVIVE) - user.visible_message(span_boldnotice("[defib_ref] buzzes: Resuscitation failed - Patient blood volume critically low.")) + defib_ref.atom_say("Реанимация не удалась - объём крови в организме пациента на критически низком уровне!") defib_success = FALSE else if(!target.get_organ_slot(INTERNAL_ORGAN_BRAIN)) //So things like headless clings don't get outed - user.visible_message(span_boldnotice("[defib_ref] buzzes: Resuscitation failed - No brain detected within patient.")) + defib_ref.atom_say("Реанимация не удалась - мозг в теле пациента не обнаружен!") defib_success = FALSE else if(ghost) if(!ghost.can_reenter_corpse || target.suiciding) // DNR or AntagHUD - user.visible_message(span_boldnotice("[defib_ref] buzzes: Resuscitation failed - No electrical brain activity detected.")) + defib_ref.atom_say("Реанимация не удалась - электрическая активность мозга не зафиксирована!") else - user.visible_message(span_boldnotice("[defib_ref] buzzes: Resuscitation failed - Patient's brain is unresponsive. Further attempts may succeed.")) + defib_ref.atom_say("Реанимация не удалась - мозг пациента не отреагировал!") defib_success = FALSE else if(HAS_TRAIT(target, TRAIT_NO_CLONE) || !target.mind || !(target.mind.is_revivable()) || HAS_TRAIT(target, TRAIT_FAKEDEATH) || target.suiciding) // these are a bit more arbitrary - user.visible_message(span_boldnotice("[defib_ref] buzzes: Resuscitation failed.")) + defib_ref.atom_say("Реанимация не удалась!") defib_success = FALSE if(!defib_success) @@ -275,10 +268,10 @@ if(target.getBrainLoss() >= 100) playsound(get_turf(defib_ref), 'sound/machines/defib_saftyoff.ogg', 50, 0) - user.visible_message(span_boldnotice("[defib_ref] chimes: Minimal brain activity detected, brain treatment recommended for full resuscitation.")) + defib_ref.atom_say("Реанимация успешна. Критически слабая активность мозга пациента.") else playsound(get_turf(defib_ref), 'sound/machines/defib_success.ogg', 50, 0) - user.visible_message(span_boldnotice("[defib_ref] pings: Resuscitation successful.")) + defib_ref.atom_say("Реанимация успешна!") SEND_SIGNAL(target, COMSIG_LIVING_MINOR_SHOCK, 100) if(ishuman(target.pulledby)) // for some reason, pulledby isnt a list despite it being possible to be pulled by multiple people @@ -295,7 +288,7 @@ busy = FALSE /** - * Inflict stamina loss (and possibly inflict cardiac arrest) on someone. + * Inflict stamina loss and stun/knockdown on someone. * * Arguments: * * user - wielder of the defib @@ -306,16 +299,17 @@ return busy = TRUE target.visible_message( - span_danger("[user] has touched [target.name] with [parent]!"), - span_userdanger("[user] has touched [target.name] with [parent]!"), + span_danger("[user] коснул[genderize_ru(user.gender, "ся", "ась", "ось", "ись")] [target.name] лопастями боевого дефибриллятора!"), + span_userdanger("[user] коснул[genderize_ru(user.gender, "ся", "ась", "ось", "ись")] вас лопастями боевого дефибриллятора!"), ) - target.apply_damage(50, STAMINA) - target.Weaken(4 SECONDS) + if(ignore_hardsuits) + target.apply_damage(70, STAMINA) + target.Weaken(4 SECONDS) + else + target.apply_damage(40, STAMINA) + target.Knockdown(3 SECONDS) playsound(get_turf(parent), 'sound/machines/defib_zap.ogg', 50, TRUE, -1) target.emote("gasp") - if(prob(heart_attack_chance)) - add_attack_logs(user, target, "Gave a heart attack with [parent]") - target.set_heartattack(TRUE) SEND_SIGNAL(target, COMSIG_LIVING_MINOR_SHOCK, 100) add_attack_logs(user, target, "Stunned with [parent]") target.shock_internal_organs(100) @@ -347,7 +341,7 @@ if(electrocute_mob(affecting, power_source, origin)) // shock anyone touching them >:) var/obj/item/organ/internal/heart/heart = affecting.get_organ_slot(INTERNAL_ORGAN_HEART) if(istype(heart) && heart.parent_organ_zone == BODY_ZONE_CHEST && affecting.has_both_hands()) // making sure the shock will go through their heart (drask hearts are in their head), and that they have both arms so the shock can cross their heart inside their chest - affecting.visible_message(span_danger("[affecting]'s entire body shakes as a shock travels up [affecting.p_their()] arm!"), \ - span_userdanger("You feel a powerful shock travel up your [affecting.hand ? affecting.get_organ(BODY_ZONE_L_ARM) : affecting.get_organ(BODY_ZONE_R_ARM)] and back down your [affecting.hand ? affecting.get_organ(BODY_ZONE_R_ARM) : affecting.get_organ(BODY_ZONE_L_ARM)]!")) + affecting.visible_message(span_danger("[affecting] сотряса[pluralize_ru(affecting.gender, "ет", "ют")]ся от электрического тока, проходящего через [genderize_ru(affecting.gender, "его", "её", "его", "их")] руку!"), \ + span_userdanger("Вы чувствуете мощный удар током, проходящий через ваше сердце!")) affecting.set_heartattack(TRUE) diff --git a/code/datums/components/ghost_direct_control.dm b/code/datums/components/ghost_direct_control.dm new file mode 100644 index 000000000000..eb91b4884afc --- /dev/null +++ b/code/datums/components/ghost_direct_control.dm @@ -0,0 +1,167 @@ +/** + * Component which lets ghosts click on a mob to take control of it + */ +/datum/component/ghost_direct_control + /// Message to display upon successful possession + var/assumed_control_message + /// Type of ban you can get to prevent you from accepting this role + var/ban_type + /// Check Syndicate ban + var/ban_syndicate + /// Any extra checks which need to run before we take over + var/datum/callback/extra_control_checks + /// Callback run after someone successfully takes over the body + var/datum/callback/after_assumed_control + /// If we're currently awaiting the results of a ghost poll + var/awaiting_ghosts = FALSE + /// Aditional text of question + var/question_text + + +/datum/component/ghost_direct_control/Initialize( + ban_type = ROLE_SENTIENT, + role_name = null, + poll_question = null, + poll_candidates = TRUE, + antag_age_check = TRUE, + check_antaghud = TRUE, + poll_length = 10 SECONDS, + ban_syndicate = FALSE, + assumed_control_message = null, + datum/callback/extra_control_checks, + datum/callback/after_assumed_control, + question_text, +) + . = ..() + if(!isliving(parent)) + return COMPONENT_INCOMPATIBLE + + var/mob/mob_parent = parent + src.ban_type = ban_type + src.ban_syndicate = ban_syndicate + src.assumed_control_message = assumed_control_message || "Вы [mob_parent.declent_ru(NOMINATIVE)]!" + src.extra_control_checks = extra_control_checks + src.after_assumed_control = after_assumed_control + src.question_text = question_text + + LAZYADD(GLOB.mob_spawners[format_text("[initial(mob_parent.name)]")], mob_parent) + + if(poll_candidates) + INVOKE_ASYNC(src, PROC_REF(request_ghost_control), poll_question, role_name || "[parent]", poll_length, antag_age_check, check_antaghud) + +/datum/component/ghost_direct_control/RegisterWithParent() + . = ..() + RegisterSignal(parent, COMSIG_ATOM_ATTACK_GHOST, PROC_REF(on_ghost_clicked)) + RegisterSignal(parent, COMSIG_LIVING_EXAMINE, PROC_REF(on_examined)) + RegisterSignal(parent, COMSIG_MOB_LOGIN, PROC_REF(on_login)) + RegisterSignal(parent, COMSIG_IS_GHOST_CONTROLABLE, PROC_REF(on_ghost_controlable_check)) + +/datum/component/ghost_direct_control/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_ATOM_ATTACK_GHOST, COMSIG_LIVING_EXAMINE, COMSIG_MOB_LOGIN)) + return ..() + +/datum/component/ghost_direct_control/Destroy(force) + extra_control_checks = null + after_assumed_control = null + + var/mob/mob_parent = parent + var/list/spawners = GLOB.mob_spawners[format_text("[initial(mob_parent.name)]")] + LAZYREMOVE(spawners, mob_parent) + if(!LAZYLEN(spawners)) + GLOB.mob_spawners -= format_text("[initial(mob_parent.name)]") + return ..() + +/// Inform ghosts that they can possess this +/datum/component/ghost_direct_control/proc/on_examined(datum/source, mob/user, list/examine_text) + SIGNAL_HANDLER + if(!isobserver(user)) + return + var/mob/living/our_mob = parent + if(our_mob.stat == DEAD || our_mob.key || awaiting_ghosts) + return + examine_text += span_boldnotice("Вы можете взять под контроль это существо, нажав на него.") + +/// Send out a request for a brain +/datum/component/ghost_direct_control/proc/request_ghost_control(poll_question, role_name, poll_length, age_check, check_ahud) + awaiting_ghosts = TRUE + var/list/possible_ghosts = SSghost_spawns.poll_candidates( + question = poll_question, + role = ban_type, + poll_time = poll_length, + antag_age_check = age_check, + check_antaghud = check_ahud, + source = parent, + role_cleanname = role_name + ) + var/mob/chosen_one = (possible_ghosts.len)? pick(possible_ghosts): null + awaiting_ghosts = FALSE + if(isnull(chosen_one)) + return + assume_direct_control(chosen_one) + +/// A ghost clicked on us, they want to get in this body +/datum/component/ghost_direct_control/proc/on_ghost_clicked(mob/our_mob, mob/dead/observer/hopeful_ghost) + SIGNAL_HANDLER + if(our_mob.key) + qdel(src) + return + if(!hopeful_ghost.client) + return + if(awaiting_ghosts) + to_chat(hopeful_ghost, span_warning("В настоящее время идёт отбор кандидатов-призраков!")) + return COMPONENT_CANCEL_ATTACK_CHAIN + if(!SSticker.HasRoundStarted()) + to_chat(hopeful_ghost, span_warning("Вы не можете взять на себя управление этим существом до начала раунда!")) + return COMPONENT_CANCEL_ATTACK_CHAIN + INVOKE_ASYNC(src, PROC_REF(attempt_possession), our_mob, hopeful_ghost) + return COMPONENT_CANCEL_ATTACK_CHAIN + +/// We got far enough to establish that this mob is a valid target, let's try to posssess it +/datum/component/ghost_direct_control/proc/attempt_possession(mob/our_mob, mob/dead/observer/hopeful_ghost) + var/ghost_asked = tgui_alert(usr, "[question_text? question_text : "Стать [capitalize(our_mob.declent_ru(INSTRUMENTAL))]?"]", "Стать [capitalize(our_mob.declent_ru(INSTRUMENTAL))]?", list("Да", "Нет")) + if(ghost_asked != "Да" || QDELETED(our_mob)) + return + assume_direct_control(hopeful_ghost) + +/// Grant possession of our mob, component is now no longer required +/datum/component/ghost_direct_control/proc/assume_direct_control(mob/harbinger) + if(QDELETED(src)) + to_chat(harbinger, span_warning("Срок действия предложения о контроле над существом истёк!")) + return + if(jobban_isbanned(harbinger, ban_type) || (ban_syndicate && jobban_isbanned(harbinger, ROLE_SYNDICATE))) + to_chat(harbinger, span_warning("Эта роль для вас заблокирована!")) + return + var/mob/living/new_body = parent + if(new_body.stat == DEAD) + to_chat(harbinger, span_warning("Это тело умерло, оно бесполезно!")) + return + if(new_body.key) + to_chat(harbinger, span_warning("[capitalize(new_body.declent_ru(NOMINATIVE))] уже является разумным!")) + qdel(src) + return + if(extra_control_checks && !extra_control_checks.Invoke(harbinger)) + return + + add_game_logs("took control of [new_body].", harbinger) + // doesn't transfer mind because that transfers antag datum as well + new_body.key = harbinger.key + if(isanimal(new_body)) + var/mob/living/simple_animal/animal_body = new_body + animal_body.toggle_ai(AI_OFF) + // Already qdels due to below proc but just in case + qdel(src) + +/// When someone assumes control, get rid of our component +/datum/component/ghost_direct_control/proc/on_login(mob/harbinger) + SIGNAL_HANDLER + // This proc is called the very moment .key is set, so we need to force mind to initialize here if we want the invoke to affect the mind of the mob + if(isnull(harbinger.mind)) + harbinger.mind_initialize() + to_chat(harbinger, span_boldnotice(assumed_control_message)) + after_assumed_control?.Invoke(harbinger) + qdel(src) + + +/datum/component/ghost_direct_control/proc/on_ghost_controlable_check(mob/user) + SIGNAL_HANDLER + return COMPONENT_GHOST_CONTROLABLE diff --git a/code/datums/components/holderloving.dm b/code/datums/components/holderloving.dm new file mode 100644 index 000000000000..6340ff9b1db2 --- /dev/null +++ b/code/datums/components/holderloving.dm @@ -0,0 +1,69 @@ +/** Holder Loving Component + * + * When you drop an object onto a turf it gets moved back into its parent holder + * + * Prevents you from force moving the object into any other location that isn't its parent holder + */ +/datum/component/holderloving + /** Item that parent is bound to. + * We try to keep parent either directly in holder, or in holder's loc if loc is a mob, + * and warp parent into holder if they go anywhere else. + */ + var/atom/holder + +/datum/component/holderloving/Initialize(holder) + if(!isitem(parent) || !holder) + return COMPONENT_INCOMPATIBLE + + src.holder = holder + +/datum/component/holderloving/Destroy(force) + holder = null + + return ..() + +/datum/component/holderloving/RegisterWithParent() + RegisterSignal(holder, COMSIG_QDELETING, PROC_REF(holder_deleting)) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(check_my_loc)) + RegisterSignal(parent, COMSIG_ITEM_PRE_UNEQUIP, PROC_REF(can_be_moved)) + +/datum/component/holderloving/UnregisterFromParent() + UnregisterSignal(holder, list(COMSIG_QDELETING)) + UnregisterSignal(parent, list(COMSIG_ITEM_DROPPED, COMSIG_ITEM_PRE_UNEQUIP)) + +/datum/component/holderloving/proc/holder_deleting(datum/source, force) + SIGNAL_HANDLER + + qdel(parent) + +/datum/component/holderloving/proc/is_valid_location(atom/location) + SHOULD_BE_PURE(TRUE) + + if(location == holder || (location == holder.loc && ismob(holder.loc))) + return TRUE + + return FALSE + +/datum/component/holderloving/proc/check_my_loc(datum/source, mob/user, slot) + SIGNAL_HANDLER + + var/obj/item/item_parent = parent + if(!is_valid_location(item_parent.loc)) + item_parent.forceMove(holder) + +/datum/component/holderloving/proc/can_be_moved( + obj/item/I, + force, + atom/newloc, + no_move, + invdrop, + silent + ) + SIGNAL_HANDLER + + // allow the item to be dropped on the turf so it can be later moved back into the holder as a convinience tool + if(isturf(newloc) || is_valid_location(newloc)) + return NONE + + // prevent this item from being moved anywhere else + return COMPONENT_ITEM_BLOCK_UNEQUIP diff --git a/code/datums/components/label.dm b/code/datums/components/label.dm index 812794a7323c..b0363e497889 100644 --- a/code/datums/components/label.dm +++ b/code/datums/components/label.dm @@ -79,9 +79,18 @@ /datum/component/label/proc/apply_label() var/atom/owner = parent owner.name += " ([label_name])" + if(owner.ru_names) + for(var/i = 1; i <= 6; i++) + owner.ru_names[i] += " ([label_name])" /// Removes the label from the parent's name /datum/component/label/proc/remove_label() var/atom/owner = parent owner.name = replacetext(owner.name, "([label_name])", "") // Remove the label text from the parent's name, wherever it's located. + if(owner.ru_names) + for(var/i = 1; i <= 6; i++) + owner.ru_names[i] = replacetext(owner.ru_names[i], "([label_name])", "") owner.name = trim(owner.name) // Shave off any white space from the beginning or end of the parent's name. + if(owner.ru_names) + for(var/i = 1; i <= 6; i++) + owner.ru_names[i] = trim(owner.ru_names[i]) diff --git a/code/datums/components/object_possession.dm b/code/datums/components/object_possession.dm new file mode 100644 index 000000000000..6eec7de74c9b --- /dev/null +++ b/code/datums/components/object_possession.dm @@ -0,0 +1,130 @@ +/// Component that allows a user to control any object as if it were a mob. Does give the user incorporeal movement. +/datum/component/object_possession + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + /// Stores a reference to the obj that we are currently possessing. + var/obj/possessed + /// Ref to the screen object that is currently being displayed. + var/datum/weakref/screen_alert_ref + /** + * back up of the real name during user possession + * + * When a user possesses an object it's real name is set to the user name and this + * stores whatever the real name was previously. When possession ends, the real name + * is reset to this value + */ + var/stashed_name + +/datum/component/object_possession/Initialize(obj/target) + . = ..() + if(!isobj(target) || !ismob(parent)) + return COMPONENT_INCOMPATIBLE + + if(!bind_to_new_object(target)) + return COMPONENT_INCOMPATIBLE + + var/mob/user = parent + screen_alert_ref = WEAKREF(user.throw_alert(ALERT_UNPOSSESS_OBJECT, /atom/movable/screen/alert/unpossess_object)) + +/datum/component/object_possession/RegisterWithParent() + RegisterSignal(parent, list(COMSIG_MOB_CLIENT_PRE_LIVING_MOVE, COMSIG_MOB_CLIENT_PRE_NON_LIVING_MOVE), PROC_REF(on_move)) + RegisterSignal(parent, COMSIG_MOB_GHOSTIZE, PROC_REF(end_possession)) + +/datum/component/object_possession/UnregisterFromParent() + UnregisterSignal(parent, list( + COMSIG_MOB_CLIENT_PRE_LIVING_MOVE, + COMSIG_MOB_CLIENT_PRE_NON_LIVING_MOVE, + COMSIG_MOB_GHOSTIZE, + )) + +/datum/component/object_possession/Destroy() + cleanup_object_binding() + + var/mob/user = parent + var/atom/movable/screen/alert/alert_to_clear = screen_alert_ref?.resolve() + + if(!QDELETED(alert_to_clear)) + user.clear_alert(ALERT_UNPOSSESS_OBJECT) + + return ..() + +/datum/component/object_possession/InheritComponent(datum/component/object_possession/old_component, i_am_original, obj/target) + cleanup_object_binding() + + if(!bind_to_new_object(target)) + qdel(src) + + stashed_name = old_component?.stashed_name + +/// Binds the mob to the object and sets up the naming and everything. +/// Returns FALSE if we don't bind, TRUE if we succeed. +/datum/component/object_possession/proc/bind_to_new_object(obj/target) + if(issingularity(target) && CONFIG_GET(flag/forbid_singulo_possession)) + to_chat(parent, "[target] сопротивляется вашему контролю.", confidential = TRUE) + return FALSE + + var/mob/user = parent + + stashed_name = user.real_name + possessed = target + + user.forceMove(target) + user.real_name = target.name + user.name = target.name + user.reset_perspective(target) + + RegisterSignal(target, COMSIG_QDELETING, PROC_REF(end_possession)) + SEND_SIGNAL(target, COMSIG_OBJ_POSSESSED, parent) + + return TRUE + +/// Cleans up everything pertinent to the current possessed object. +/datum/component/object_possession/proc/cleanup_object_binding() + if(QDELETED(possessed)) + return + + var/mob/poltergeist = parent + + UnregisterSignal(possessed, COMSIG_QDELETING) + + if(!isnull(stashed_name)) + poltergeist.real_name = stashed_name + poltergeist.name = stashed_name + + if(ishuman(poltergeist)) + var/mob/living/carbon/human/human_user = poltergeist + human_user.name = human_user.get_visible_name() + + poltergeist.forceMove(get_turf(possessed)) + poltergeist.reset_perspective() + + possessed = null + +/** + * force move the parent object instead of the source mob. + * + * Has no sanity other than checking the possed obj's density. this means it effectively has incorporeal movement, making it only good for badminnery. + * + * We always want to return `COMPONENT_MOVABLE_BLOCK_PRE_MOVE` here regardless + */ +/datum/component/object_possession/proc/on_move(datum/source, new_loc, direct) + SIGNAL_HANDLER + + . = COMPONENT_MOVABLE_BLOCK_PRE_MOVE // both signals that invoke this are explicitly tied to listen for this define as the return value + + if(!possessed.density) + possessed.forceMove(get_step(possessed, direct)) + + else + step(possessed, direct) + + possessed.setDir(direct) + SEND_SIGNAL(possessed, COMSIG_POSSESSED_MOVEMENT, source, new_loc, direct) + + return + +/// Just the overall "get me outta here" proc. +/datum/component/object_possession/proc/end_possession(datum/source) + SIGNAL_HANDLER + + SEND_SIGNAL(possessed, COMSIG_OBJ_RELEASED, parent) + qdel(src) diff --git a/code/datums/components/overlay_lighting.dm b/code/datums/components/overlay_lighting.dm index 2249aec3f124..c93af5c1ddcc 100644 --- a/code/datums/components/overlay_lighting.dm +++ b/code/datums/components/overlay_lighting.dm @@ -48,6 +48,8 @@ "288" = 'icons/effects/light_overlays/light_288.dmi', "320" = 'icons/effects/light_overlays/light_320.dmi', "352" = 'icons/effects/light_overlays/light_352.dmi', + "480" = 'icons/effects/light_overlays/light_480.dmi', + "544" = 'icons/effects/light_overlays/light_544.dmi', ) ///Overlay effect to cut into the darkness and provide light. @@ -347,7 +349,7 @@ return if(range == 0) turn_off() - range = clamp(CEILING(new_range, 0.5), 1, 6) + range = clamp(CEILING(new_range, 0.5), 1, 8) var/pixel_bounds = ((range - 1) * 64) + 32 lumcount_range = CEILING(range, 1) if(current_holder && overlay_lighting_flags & LIGHTING_ON) diff --git a/code/datums/components/pellet_cloud.dm b/code/datums/components/pellet_cloud.dm new file mode 100644 index 000000000000..55ce85557996 --- /dev/null +++ b/code/datums/components/pellet_cloud.dm @@ -0,0 +1,325 @@ +// the following defines are used for [/datum/component/pellet_cloud/var/list/wound_info_by_part] to store the damage, wound_bonus, and bw_bonus for each bodypart hit +#define CLOUD_POSITION_DAMAGE 1 +#define CLOUD_POSITION_W_BONUS 2 +#define CLOUD_POSITION_BW_BONUS 3 + +/* + * This component is used when you want to create a bunch of shrapnel or projectiles (say, shrapnel from a fragmentation grenade, or buckshot from a shotgun) from a central point, + * without necessarily printing a separate message for every single impact. This component should be instantiated right when you need it (like the moment of firing), then activated + * by signal. + * + * Pellet cloud currently works on two classes of sources: directed (ammo casings), and circular (grenades, landmines). + * -Directed: This means you're shooting multiple pellets, like buckshot. If an ammo casing is defined as having multiple pellets, it will automatically create a pellet cloud + * and call COMSIG_FIRE_CASING (see [/obj/item/ammo_casing/proc/fire_casing]). Thus, the only projectiles fired will be the ones fired here. + * The magnitude var controls how many pellets are created. + * -Circular: This results in a big spray of shrapnel flying all around the detonation point when the grenade fires COMSIG_GRENADE_DETONATE or landmine triggers COMSIG_MINE_TRIGGERED. + * The magnitude var controls how big the detonation radius is (the bigger the magnitude, the more shrapnel is created). Grenades can be covered with bodies to reduce shrapnel output. + * + * Once all of the fired projectiles either hit a target or disappear due to ranging out/whatever else, we resolve the list of all the things we hit and print aggregate messages so we get + * one "You're hit by 6 buckshot pellets" vs 6x "You're hit by the buckshot blah blah" messages. + * + * Note that this is how all guns handle shooting ammo casings with multiple pellets, in case such a thing comes up. +*/ + +/datum/component/pellet_cloud + /// What's the projectile path of the shrapnel we're shooting? + var/projectile_type + + /// How many shrapnel projectiles are we responsible for tracking? May be reduced for grenades if someone dives on top of it. Defined by ammo casing for casings, derived from magnitude otherwise + var/num_pellets + /// For grenades/landmines, how big is the radius of turfs we're targeting? Note this does not effect the projectiles range, only how many we generate + var/radius = 4 + + /// The list of pellets we're responsible for tracking, once these are all accounted for, we finalize. + var/list/pellets = list() + /// An associated list with the atom hit as the key and how many pellets they've eaten for the value, for printing aggregate messages + var/list/targets_hit = list() + /// Another associated list for hit bodyparts on carbons so we can track how much wounding potential we have for each bodypart + var/list/wound_info_by_part = list() + /// For grenades, any /mob/living's the grenade is moved onto, see [/datum/component/pellet_cloud/proc/handle_martyrs] + var/list/bodies + /// For grenades, tracking people who die covering a grenade for achievement purposes, see [/datum/component/pellet_cloud/proc/handle_martyrs] + var/list/purple_hearts + + /// For grenades, tracking how many pellets are removed due to martyrs and how many pellets are added due to the last person to touch it being on top of it + var/pellet_delta = 0 + /// how many pellets ranged out without hitting anything + var/terminated + /// how many pellets impacted something + var/hits + /// If the parent tried deleting and we're not done yet, we send it to nullspace then delete it after + var/queued_delete = FALSE + + /// for if we're an ammo casing being fired + var/mob/living/shooter + + +/datum/component/pellet_cloud/Initialize(projectile_type=/obj/projectile/shrapnel, magnitude=5) + if(!isammocasing(parent) && !isgrenade(parent) && !issupplypod(parent)) + return COMPONENT_INCOMPATIBLE + + if(magnitude < 1) + stack_trace("Invalid magnitude [magnitude] < 1 on pellet_cloud, parent: [parent]") + magnitude = 1 + + src.projectile_type = projectile_type + + if(isammocasing(parent)) + num_pellets = magnitude + else if(isgrenade(parent) || issupplypod(parent)) + radius = magnitude + +/datum/component/pellet_cloud/Destroy(force) + purple_hearts = null + pellets = null + targets_hit = null + wound_info_by_part = null + bodies = null + return ..() + +/datum/component/pellet_cloud/RegisterWithParent() + RegisterSignal(parent, COMSIG_PREQDELETED, PROC_REF(nullspace_parent)) + if(isammocasing(parent)) + RegisterSignal(parent, COMSIG_FIRE_CASING, PROC_REF(create_casing_pellets)) + else if(isgrenade(parent)) + RegisterSignal(parent, COMSIG_GRENADE_ARMED, PROC_REF(grenade_armed)) + RegisterSignal(parent, COMSIG_GRENADE_DETONATE, PROC_REF(create_blast_pellets)) + else if(issupplypod(parent)) + RegisterSignal(parent, COMSIG_SUPPLYPOD_LANDED, PROC_REF(create_blast_pellets)) + +/datum/component/pellet_cloud/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_PREQDELETED, COMSIG_FIRE_CASING, COMSIG_GRENADE_DETONATE, COMSIG_GRENADE_ARMED, COMSIG_MOVABLE_MOVED, COMSIG_ITEM_DROPPED)) + +/** + * create_casing_pellets() is for directed pellet clouds for ammo casings that have multiple pellets (buckshot and scatter lasers for instance) + * + * Honestly this is mostly just a rehash of [/obj/item/ammo_casing/proc/fire_casing] for pellet counts > 1, except this lets us tamper with the pellets and hook onto them for tracking purposes. + * The arguments really don't matter, while this proc is triggered by COMSIG_FIRE_CASING, it's just a big mess of the state vars we need for doing the stuff over here. + */ +/datum/component/pellet_cloud/proc/create_casing_pellets(obj/item/ammo_casing/shell, atom/target, mob/living/user, fired_from, randomspread, spread, zone_override, params, distro) + SIGNAL_HANDLER + + shooter = user + var/turf/target_loc = get_turf(target) + if(!zone_override) + zone_override = shooter.zone_selected + + // things like mouth executions and gunpoints can multiply the damage and wounds of projectiles, so this makes sure those effects are applied to each pellet instead of just one + var/original_damage = shell.BB.damage + + for(var/i in 1 to num_pellets) + shell.ready_proj(target, user, TRUE, zone_override, fired_from) + if(distro) + if(randomspread) + spread = round((rand() - 0.5) * distro) + else //Smart spread + spread = round((i / num_pellets - 0.5) * distro) + + RegisterSignal(shell.BB, COMSIG_PROJECTILE_SELF_ON_HIT, PROC_REF(pellet_hit)) + RegisterSignal(shell.BB, list(COMSIG_PROJECTILE_RANGE_OUT, COMSIG_QDELETING), PROC_REF(pellet_range)) + shell.BB.damage = original_damage + pellets += shell.BB + var/turf/current_loc = get_turf(fired_from) + if (!istype(target_loc) || !istype(current_loc) || !(shell.BB)) + return + INVOKE_ASYNC(shell, TYPE_PROC_REF(/obj/item/ammo_casing, throw_proj), target, target_loc, shooter, params, spread, fired_from) + + if(i != num_pellets) + shell.newshot() + +/** + * create_blast_pellets() is for when we have a central point we want to shred the surroundings of with a ring of shrapnel, namely frag grenades and landmines. + * + * Note that grenades have extra handling for someone throwing themselves/being thrown on top of it, see [/datum/component/pellet_cloud/proc/handle_martyrs] + * Landmines just have a small check for [/obj/effect/mine/shrapnel/var/shred_triggerer], and spawn extra shrapnel for them if so + * + * Arguments: + * * O- Our parent, the thing making the shrapnel obviously (grenade or landmine) + * * punishable_triggerer- For grenade lances or people who step on the landmines (if we shred the triggerer), we spawn extra shrapnel for them in addition to the normal spread + */ +/datum/component/pellet_cloud/proc/create_blast_pellets(obj/O, mob/living/triggerer) + SIGNAL_HANDLER + + var/atom/A = parent + + if(isgrenade(parent)) // handle_martyrs can reduce the radius and thus the number of pellets we produce if someone dives on top of a frag grenade + INVOKE_ASYNC(src, PROC_REF(handle_martyrs), triggerer) // note that we can modify radius in this proc + + if(radius < 1) + return + + var/list/all_the_turfs_were_gonna_lacerate = RANGE_TURFS(radius, A) - RANGE_TURFS(radius-1, A) + num_pellets = all_the_turfs_were_gonna_lacerate.len + pellet_delta + + for(var/T in all_the_turfs_were_gonna_lacerate) + INVOKE_ASYNC(src, PROC_REF(pew), T) + +/** + * handle_martyrs() is used for grenades that shoot shrapnel to check if anyone threw themselves/were thrown on top of the grenade, thus absorbing a good chunk of the shrapnel + * + * Between the time the grenade is armed and the actual detonation, we set var/list/bodies to the list of mobs currently on the new tile, as if the grenade landed on top of them, tracking if any of them move off the tile and removing them from the "under" list + * Once the grenade detonates, handle_martyrs() is called and gets all the new mobs on the tile, and add the ones not in var/list/bodies to var/list/martyrs + * We then iterate through the martyrs and reduce the shrapnel magnitude for each mob on top of it, shredding each of them with some of the shrapnel they helped absorb. This can snuff out all of the shrapnel if there's enough bodies + * + * Note we track anyone who's alive and client'd when they get shredded in var/list/purple_hearts, for achievement checking later + */ +/datum/component/pellet_cloud/proc/handle_martyrs(mob/living/punishable_triggerer) + var/magnitude_absorbed + var/list/martyrs = list() + + var/self_harm_radius_mult = 3 + + if(punishable_triggerer && prob(60)) + to_chat(punishable_triggerer, span_userdanger("Your plan to whack someone with a grenade on a stick backfires on you, literally!")) + self_harm_radius_mult = 1 // we'll still give the guy who got hit some extra shredding, but not 3*radius + pellet_delta += radius + for(var/i in 1 to radius) + pew(punishable_triggerer) // thought you could be tricky and lance someone with no ill effects!! + + for(var/mob/living/body in get_turf(parent)) + if(body == shooter) + pellet_delta += radius * self_harm_radius_mult + for(var/i in 1 to radius * self_harm_radius_mult) + pew(body) // free shrapnel if it goes off in your hand, and it doesn't even count towards the absorbed. fun! + else if(!(body in bodies)) + martyrs += body // promoted from a corpse to a hero + + for(var/M in martyrs) + var/mob/living/martyr = M + if(radius > 4) + martyr.visible_message("[span_danger("[martyr] heroically covers \the [parent] with [martyr.p_their()] body, absorbing a load of the shrapnel!")]", span_userdanger("You heroically cover \the [parent] with your body, absorbing a load of the shrapnel!")) + magnitude_absorbed += round(radius * 0.5) + else if(radius >= 2) + martyr.visible_message("[span_danger("[martyr] heroically covers \the [parent] with [martyr.p_their()] body, absorbing some of the shrapnel!")]", span_userdanger("You heroically cover \the [parent] with your body, absorbing some of the shrapnel!")) + magnitude_absorbed += 2 + else + martyr.visible_message("[span_danger("[martyr] heroically covers \the [parent] with [martyr.p_their()] body, snuffing out the shrapnel!")]", span_userdanger("You heroically cover \the [parent] with your body, snuffing out the shrapnel!")) + magnitude_absorbed = radius + + var/pellets_absorbed = (radius ** 2) - ((radius - magnitude_absorbed - 1) ** 2) + radius -= magnitude_absorbed + pellet_delta -= round(pellets_absorbed * 0.5) + + if(martyr.stat != DEAD && martyr.client) + LAZYADD(purple_hearts, martyr) + RegisterSignal(martyr, COMSIG_QDELETING, PROC_REF(on_target_qdel), override=TRUE) + + for(var/i in 1 to round(pellets_absorbed * 0.5)) + pew(martyr) + + if(radius < 1) + break + +///One of our pellets hit something, record what it was and check if we're done (terminated == num_pellets) +/datum/component/pellet_cloud/proc/pellet_hit(obj/projectile/P, atom/movable/firer, atom/target, Angle, hit_zone) + SIGNAL_HANDLER + + pellets -= P + terminated++ + hits++ + + var/damage = TRUE + if(isobj(target)) + var/obj/hit_object = target + if(hit_object.damage_deflection > P.damage || !P.damage) + damage = FALSE + + LAZYADDASSOC(targets_hit[target], "hits", 1) + LAZYSET(targets_hit[target], "damage", damage) + if(targets_hit[target]["hits"] == 1) + RegisterSignal(target, COMSIG_QDELETING, PROC_REF(on_target_qdel), override=TRUE) + UnregisterSignal(P, list(COMSIG_QDELETING, COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PROJECTILE_SELF_ON_HIT)) + if(terminated == num_pellets) + finalize() + +///One of our pellets disappeared due to hitting their max range (or just somehow got qdel'd), remove it from our list and check if we're done (terminated == num_pellets) +/datum/component/pellet_cloud/proc/pellet_range(obj/projectile/P) + SIGNAL_HANDLER + pellets -= P + terminated++ + UnregisterSignal(P, list(COMSIG_QDELETING, COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PROJECTILE_SELF_ON_HIT)) + if(terminated == num_pellets) + finalize() + +/// Minor convenience function for creating each shrapnel piece with circle explosions, mostly stolen from the MIRV component +/datum/component/pellet_cloud/proc/pew(atom/target, landmine_victim) + + var/obj/projectile/P = new projectile_type(get_turf(parent)) + + //Shooting Code: + P.spread = 0 + P.original = target + P.firer_source_atom = parent + P.firer = parent // don't hit ourself that would be really annoying + P.suppressed = TRUE// set the projectiles to make no message so we can do our own aggregate message + P.preparePixelProjectile(target, target, parent) + RegisterSignal(P, COMSIG_PROJECTILE_SELF_ON_HIT, PROC_REF(pellet_hit)) + RegisterSignal(P, list(COMSIG_PROJECTILE_RANGE_OUT, COMSIG_QDELETING), PROC_REF(pellet_range)) + pellets += P + P.fire() + +///All of our pellets are accounted for, time to go target by target and tell them how many things they got hit by. +/datum/component/pellet_cloud/proc/finalize() + UnregisterSignal(parent, COMSIG_PREQDELETED) + if(queued_delete) + qdel(parent) + qdel(src) + +/// Look alive, we're armed! Now we start watching to see if anyone's covering us +/datum/component/pellet_cloud/proc/grenade_armed(obj/item/nade) + SIGNAL_HANDLER + + if(ismob(nade.loc)) + shooter = nade.loc + LAZYINITLIST(bodies) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(grenade_dropped)) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(grenade_moved)) + var/static/list/loc_connections = list( + COMSIG_ATOM_EXITED = PROC_REF(grenade_uncrossed), + ) + AddComponent(/datum/component/connect_loc_behalf, parent, loc_connections) + +/// Someone dropped the grenade, so set them to the shooter in case they're on top of it when it goes off +/datum/component/pellet_cloud/proc/grenade_dropped(obj/item/nade, mob/living/slick_willy) + SIGNAL_HANDLER + + shooter = slick_willy + grenade_moved() + +/// Our grenade has moved, reset var/list/bodies so we're "on top" of any mobs currently on the tile +/datum/component/pellet_cloud/proc/grenade_moved() + SIGNAL_HANDLER + + LAZYCLEARLIST(bodies) + for(var/mob/living/L in get_turf(parent)) + RegisterSignal(L, COMSIG_QDELETING, PROC_REF(on_target_qdel), override=TRUE) + bodies += L + +/// Someone who was originally "under" the grenade has moved off the tile and is now eligible for being a martyr and "covering" it +/datum/component/pellet_cloud/proc/grenade_uncrossed(datum/source, atom/movable/gone, direction) + SIGNAL_HANDLER + + bodies -= gone + +/// Our grenade or landmine or caseless shell or whatever tried deleting itself, so we intervene and nullspace it until we're done here +/datum/component/pellet_cloud/proc/nullspace_parent() + SIGNAL_HANDLER + + var/atom/movable/AM = parent + AM.moveToNullspace() + queued_delete = TRUE + return TRUE + +/// Someone who was originally "under" the grenade has moved off the tile and is now eligible for being a martyr and "covering" it +/datum/component/pellet_cloud/proc/on_target_qdel(atom/target) + SIGNAL_HANDLER + + UnregisterSignal(target, COMSIG_QDELETING) + targets_hit -= target + LAZYREMOVE(bodies, target) + LAZYREMOVE(purple_hearts, target) + + +#undef CLOUD_POSITION_DAMAGE +#undef CLOUD_POSITION_W_BONUS +#undef CLOUD_POSITION_BW_BONUS diff --git a/code/datums/components/pref_holder.dm b/code/datums/components/pref_holder.dm new file mode 100644 index 000000000000..853425012dc8 --- /dev/null +++ b/code/datums/components/pref_holder.dm @@ -0,0 +1,49 @@ +/datum/component/pref_holder + var/list/preferences + +/datum/component/pref_holder/Destroy(force) + LAZYNULL(preferences) + + return ..() + +/datum/component/pref_holder/Initialize(list/preferences) + var/mob/target = parent + + if(!istype(target)) + return COMPONENT_INCOMPATIBLE + + src.preferences = preferences || forge_preferences() + +/datum/component/pref_holder/RegisterWithParent() + RegisterSignal(parent, COMSIG_MOB_LOGIN, PROC_REF(handle_transfer)) + +/datum/component/pref_holder/UnregisterFromParent() + UnregisterSignal(parent, COMSIG_MOB_LOGIN) + +/datum/component/pref_holder/proc/handle_transfer(mob/source) + SIGNAL_HANDLER + + preferences = forge_preferences() + +/datum/component/pref_holder/proc/forge_preferences() + var/mob/mob = parent + + if(!mob.client) + return + + var/list/prefs + + for(var/datum/preference_info/pref as anything in GLOB.preferences_info) + var/datum/preference_toggle/toggle = pref.get_preference_toggle() + + if(!toggle) + continue + + if(!HASBIT(mob.client.prefs.toggles, toggle.preftoggle_bitflag) \ + && !HASBIT(mob.client.prefs.toggles2, toggle.preftoggle_bitflag) + ) + continue + + LAZYADD(prefs, new pref.type) + + return prefs diff --git a/code/datums/components/riding/riding.dm b/code/datums/components/riding/riding.dm index aaf73c70d2a7..7602ebec3133 100644 --- a/code/datums/components/riding/riding.dm +++ b/code/datums/components/riding/riding.dm @@ -57,7 +57,7 @@ ride_check_flags |= buckle_mob_flags if(potion_boost) - vehicle_move_delay = round(CONFIG_GET(number/movedelay/run_delay) * 0.85, 0.01) + vehicle_move_delay = round(CONFIG_GET(number/movedelay/run_delay) * 1.5, 0.01) /datum/component/riding/RegisterWithParent() . = ..() @@ -67,8 +67,8 @@ RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(vehicle_moved)) RegisterSignal(parent, COMSIG_MOVABLE_BUMP, PROC_REF(vehicle_bump)) RegisterSignal(parent, COMSIG_BUCKLED_CAN_Z_MOVE, PROC_REF(riding_can_z_move)) - RegisterSignals(parent, GLOB.movement_type_addtrait_signals, PROC_REF(on_movement_type_trait_gain)) - RegisterSignals(parent, GLOB.movement_type_removetrait_signals, PROC_REF(on_movement_type_trait_loss)) + RegisterSignal(parent, GLOB.movement_type_addtrait_signals, PROC_REF(on_movement_type_trait_gain)) + RegisterSignal(parent, GLOB.movement_type_removetrait_signals, PROC_REF(on_movement_type_trait_loss)) //RegisterSignal(parent, COMSIG_SUPERMATTER_CONSUMED, PROC_REF(on_entered_supermatter)) if(!can_force_unbuckle) RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, PROC_REF(force_unbuckle)) diff --git a/code/datums/components/riding/riding_vehicle.dm b/code/datums/components/riding/riding_vehicle.dm index 228c997c50cc..93b0b0ce85f6 100644 --- a/code/datums/components/riding/riding_vehicle.dm +++ b/code/datums/components/riding/riding_vehicle.dm @@ -166,7 +166,7 @@ ride_check_flags = RIDER_NEEDS_LEGS | RIDER_NEEDS_ARMS | UNBUCKLE_DISABLED_RIDER /datum/component/riding/vehicle/speedbike - vehicle_move_delay = 0.75 + vehicle_move_delay = 1 override_allow_spacemove = TRUE ride_check_flags = RIDER_NEEDS_LEGS | RIDER_NEEDS_ARMS | UNBUCKLE_DISABLED_RIDER @@ -180,21 +180,20 @@ /datum/component/riding/vehicle/lavaboat ride_check_flags = NONE // not sure + vehicle_move_delay = 3 keytype = /obj/item/oar var/allowed_turf = /turf/simulated/floor/lava /datum/component/riding/vehicle/lavaboat/handle_specials() . = ..() + set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(1, 2), TEXT_SOUTH = list(1, 2), TEXT_EAST = list(1, 2), TEXT_WEST = list( 1, 2))) + set_vehicle_dir_layer(NORTH, ABOVE_MOB_LAYER) allowed_turf_typecache = typecacheof(allowed_turf) /datum/component/riding/vehicle/lavaboat/dragonboat - vehicle_move_delay = 1 + vehicle_move_delay = 2 keytype = null -/datum/component/riding/vehicle/lavaboat/dragonboat/handle_specials() - . = ..() - set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(1, 2), TEXT_SOUTH = list(1, 2), TEXT_EAST = list(1, 2), TEXT_WEST = list( 1, 2))) - /datum/component/riding/vehicle/car vehicle_move_delay = 1.75 ride_check_flags = RIDER_NEEDS_LEGS | RIDER_NEEDS_ARMS | UNBUCKLE_DISABLED_RIDER diff --git a/code/datums/components/ritual_object.dm b/code/datums/components/ritual_object.dm new file mode 100644 index 000000000000..24115b96532d --- /dev/null +++ b/code/datums/components/ritual_object.dm @@ -0,0 +1,344 @@ +/datum/component/ritual_object + /// Pre-defined rituals list + var/list/rituals = list() + /// We define rituals from this. + var/list/allowed_categories + /// Required species to activate ritual object + var/list/allowed_species + /// Required special role to activate ritual object + var/list/allowed_special_role + /// Prevents from multiple uses + var/active_ui = FALSE + /// Temporary lists of invokers/Used things in rituals. + var/list/used_things + var/list/invokers + /// Cached selected ritual. + var/datum/ritual/ritual + +/datum/component/ritual_object/Destroy(force) + LAZYNULL(rituals) + LAZYNULL(allowed_categories) + LAZYNULL(allowed_species) + LAZYNULL(allowed_special_role) + LAZYNULL(invokers) + LAZYNULL(used_things) + ritual = null + + return ..() + +/datum/component/ritual_object/Initialize( + allowed_categories = /datum/ritual, + list/allowed_species, + list/allowed_special_role +) + + if(!isobj(parent)) + return COMPONENT_INCOMPATIBLE + + src.allowed_categories = allowed_categories + src.allowed_species = allowed_species + src.allowed_special_role = allowed_special_role + + get_rituals() + +/datum/component/ritual_object/RegisterWithParent() + RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, PROC_REF(attackby)) + +/datum/component/ritual_object/UnregisterFromParent() + UnregisterSignal(parent, COMSIG_ATOM_ATTACK_HAND) + +/datum/component/ritual_object/proc/get_rituals() // We'll get all rituals for flexibility. + LAZYCLEARLIST(rituals) + + for(var/datum/ritual/ritual as anything in typecacheof(allowed_categories)) + if(!ritual.name) + continue + + rituals += new ritual + + for(var/datum/ritual/ritual as anything in rituals) + ritual.ritual_object = parent + + return + +/datum/component/ritual_object/proc/attackby(datum/source, mob/living/carbon/human/human) + SIGNAL_HANDLER + + if(active_ui) + return + + if(!istype(human)) + return + + if(allowed_species && !is_type_in_list(human.dna.species, allowed_species)) + return + + if(allowed_special_role && !LAZYIN(allowed_special_role, human.mind?.special_role)) + return + + active_ui = TRUE + INVOKE_ASYNC(src, PROC_REF(open_ritual_ui), human) + + return COMPONENT_CANCEL_ATTACK_CHAIN + +/datum/component/ritual_object/proc/open_ritual_ui(mob/living/carbon/human/human) + var/list/rituals_list = get_available_rituals(human) + + if(!LAZYLEN(rituals_list)) + active_ui = FALSE + to_chat(human, "Не имеется доступных для выполнения ритуалов.") + return + + ui_interact(human) + return + + +/datum/component/ritual_object/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + // Open UI + ui = new(user, src, "RitualMenu") + ui.open() + +/datum/component/ritual_object/ui_data(mob/user) + var/list/data = list() + data["rituals"] = get_available_rituals(user) + data["selected_ritual"] = ritual?.name + if(ritual) + if(ritual.description) + data["description"] = ritual.description + var/list/params = ritual.get_ui_params() + if(params?.len) + data["params"] = params + var/list/things = ritual.get_ui_things() + if(things?.len) + data["things"] = things + data["ritual_available"] = COOLDOWN_FINISHED(ritual, ritual_cooldown) + data["time_left"] = round(COOLDOWN_TIMELEFT(ritual, ritual_cooldown) / (1 SECONDS)) + + return data + +/datum/component/ritual_object/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + switch(action) + if("select_ritual") + handle_ritual_selection(ui.user, params["selected_ritual"]) + . = TRUE + + if("start_ritual") + var/ritual_status = pre_ritual_check(ui.user) + if(ritual_status) + active_ui = FALSE + . = TRUE + +/datum/component/ritual_object/ui_close(mob/user) + . = ..() + active_ui = FALSE + +/datum/component/ritual_object/proc/handle_ritual_selection(mob/living/carbon/human/human, choosen_ritual) + if(!choosen_ritual) + active_ui = FALSE + return + + for(var/datum/ritual/ritual as anything in rituals) + if(choosen_ritual != ritual.name) + continue + src.ritual = ritual + break + + return TRUE + +/datum/component/ritual_object/proc/pre_ritual_check(mob/living/carbon/human/invoker) + var/failed = FALSE + var/cause_disaster = FALSE + var/del_things = FALSE + var/start_cooldown = FALSE + var/remove_charge = FALSE + var/message + + ritual.handle_ritual_object(RITUAL_STARTED) + + . = ritual_invoke_check(invoker) + SEND_SIGNAL(ritual, COMSIG_RITUAL_ENDED, ., invoker, invokers, used_things) + + if(!(. & RITUAL_SUCCESSFUL)) + failed = TRUE + message = "ритуал провален!" + + if(. & RITUAL_SUCCESSFUL) + message = "ритуал проведён успешно!" + addtimer(CALLBACK(ritual, TYPE_PROC_REF(/datum/ritual, handle_ritual_object), RITUAL_ENDED), 1 SECONDS) + remove_charge = TRUE + start_cooldown = TRUE + + if(. & RITUAL_FAILED_ON_PROCEED) + cause_disaster = TRUE + start_cooldown = TRUE + + if(start_cooldown) + COOLDOWN_START(ritual, ritual_cooldown, ritual.cooldown_after_cast) + + if(cause_disaster && prob(ritual.disaster_prob)) + ritual.disaster(invoker, invokers, used_things) + + if((. & RITUAL_SUCCESSFUL) && (ritual.ritual_should_del_things)) + del_things = TRUE + + if((. & RITUAL_FAILED_ON_PROCEED) && (ritual.ritual_should_del_things_on_fail)) + del_things = TRUE + + if(del_things) + ritual.del_things(used_things) + + if(remove_charge) + ritual.charges-- + + if(failed) + addtimer(CALLBACK(ritual, TYPE_PROC_REF(/datum/ritual, handle_ritual_object), RITUAL_FAILED), 2 SECONDS) + + if(message) + var/atom/atom = parent + atom.balloon_alert(invoker, message) + + for(var/atom/movable/atom as anything in used_things) + UnregisterSignal(atom, COMSIG_MOVABLE_MOVED) + + LAZYNULL(invokers) + LAZYNULL(used_things) + ritual = null + + return . + +/datum/component/ritual_object/proc/ritual_invoke_check(mob/living/carbon/human/invoker) + if(!check_invokers(invoker)) + return RITUAL_FAILED_MISSED_INVOKER_REQUIREMENTS + + if(!check_contents(invoker)) + return RITUAL_FAILED_MISSED_REQUIREMENTS + + if(prob(ritual.fail_chance)) + return RITUAL_FAILED_ON_PROCEED + + if(ritual.cast_time) + for(var/atom/movable/atom as anything in used_things) + RegisterSignal(atom, COMSIG_MOVABLE_MOVED, PROC_REF(track_atoms)) + + if(!cast()) + return RITUAL_FAILED_ON_PROCEED + + return ritual.do_ritual(invoker, invokers, used_things) + +/datum/component/ritual_object/proc/track_atoms( + atom/source, + atom/old_loc, + movement_dir, + forced, + atom/old_locs, + momentum_change +) + SIGNAL_HANDLER + + INVOKE_ASYNC(src, PROC_REF(cast)) + UnregisterSignal(source, COMSIG_MOVABLE_MOVED) + +/datum/component/ritual_object/proc/check_invokers(mob/living/carbon/human/invoker) + if(!ritual.extra_invokers) + return ritual.check_invokers(invoker, list(invoker)) // remember about checks on invoker in rituals + + for(var/atom/atom in range(ritual.finding_range, parent)) + if(!ritual.is_valid_invoker(atom)) + continue + + LAZYADD(invokers, atom) + + if(LAZYLEN(invokers) < (ritual.extra_invokers + 1)) + var/atom/atom = parent + atom.balloon_alert(invoker, "требуется больше участников!") + return FALSE + + return ritual.check_invokers(invoker, invokers) + +/datum/component/ritual_object/proc/check_contents(mob/living/carbon/human/invoker) + if(!ritual.required_things) + return TRUE + + var/list/atom/movable/atoms = list() + + for(var/atom/movable/obj in range(ritual.finding_range, parent)) + if(isitem(obj)) + var/obj/item/close_item = obj + if(close_item.item_flags & ABSTRACT) + continue + + if(obj.invisibility) + continue + + if(obj == parent) + continue + + if(LAZYIN(invokers, obj)) + continue + + LAZYADD(atoms, obj) + + var/list/requirements = ritual.required_things.Copy() + for(var/atom/atom as anything in atoms) + for(var/req_type in requirements) + if(requirements[req_type] <= 0) + continue + + if(!istype(atom, req_type)) + continue + + LAZYADD(used_things, atom) + + if(isstack(atom)) + var/obj/item/stack/picked_stack = atom + requirements[req_type] -= picked_stack.amount + else + requirements[req_type]-- + + var/list/what_are_we_missing = list() + for(var/req_type in requirements) + var/number_of_things = requirements[req_type] + + if(number_of_things <= 0) + continue + + LAZYADD(what_are_we_missing, req_type) + + if(LAZYLEN(what_are_we_missing)) + var/atom/atom = parent + atom.balloon_alert(invoker, "требуется больше компонентов!") + return FALSE + + return ritual.check_contents(invoker, used_things) + +/datum/component/ritual_object/proc/cast() + for(var/mob/living/carbon/human/human in invokers) + if(!do_after(human, ritual.cast_time, parent, DA_IGNORE_HELD_ITEM, max_interact_count = 1)) + return FALSE + + return TRUE + +/datum/component/ritual_object/proc/get_available_rituals(mob/living/carbon/human/human) + var/list/rituals_list = list() + + for(var/datum/ritual/ritual as anything in rituals) + if(ritual.charges == 0) + continue + + if(!COOLDOWN_FINISHED(ritual, ritual_cooldown)) + continue + + if(ritual.allowed_species && !is_type_in_list(human.dna.species, ritual.allowed_species)) + continue + + if(ritual.allowed_special_role && !LAZYIN(ritual.allowed_special_role, human.mind?.special_role)) + continue + + LAZYADD(rituals_list, ritual.name) + + return rituals_list diff --git a/code/datums/components/shielded.dm b/code/datums/components/shielded.dm index 88b4e6cb29c9..31fe966a3040 100644 --- a/code/datums/components/shielded.dm +++ b/code/datums/components/shielded.dm @@ -161,7 +161,7 @@ var/charge_loss = 1 // how many charges do we lose if(isprojectile(hitby)) - var/obj/item/projectile/P = hitby + var/obj/projectile/P = hitby if(P.shield_buster) charge_loss = 3 if(lose_multiple_charges) diff --git a/code/datums/components/spawner.dm b/code/datums/components/spawner.dm index ab39e17af919..bacdf0a288a1 100644 --- a/code/datums/components/spawner.dm +++ b/code/datums/components/spawner.dm @@ -37,10 +37,13 @@ /datum/component/spawner/proc/try_spawn_mob() var/atom/P = parent + var/turf/T = get_turf(P) + if(GLOB.mob_suspension && T && !length(SSmobs?.clients_by_zlevel[T.z])) + return FALSE if(spawned_mobs.len >= max_mobs) - return 0 + return FALSE if(spawn_delay > world.time) - return 0 + return FALSE spawn_delay = world.time + spawn_time var/chosen_mob_type = pickweight(mob_types) var/mob/living/simple_animal/L = new chosen_mob_type(P.loc) diff --git a/code/datums/components/stationloving.dm b/code/datums/components/stationloving.dm new file mode 100644 index 000000000000..d5cdfe0078d5 --- /dev/null +++ b/code/datums/components/stationloving.dm @@ -0,0 +1,173 @@ +/// Teleports the movable atom back to a safe turf on the station if it leaves the z-level or becomes inaccessible. +/datum/component/stationloving + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + /// If TRUE, notifies admins when parent is teleported back to the station. + var/inform_admins = FALSE + var/disallow_soul_imbue = TRUE + /// If FALSE, prevents parent from being qdel'd unless it's a force = TRUE qdel. + var/allow_item_destruction = FALSE + +/datum/component/stationloving/Initialize(inform_admins = FALSE, allow_item_destruction = FALSE) + if(!ismovable(parent)) + return COMPONENT_INCOMPATIBLE + src.inform_admins = inform_admins + src.allow_item_destruction = allow_item_destruction + + // Just in case something is being created outside of station/centcom + if(!atom_in_bounds(parent)) + relocate() + +/datum/component/stationloving/RegisterWithParent() + RegisterSignal(parent, COMSIG_PREQDELETED, PROC_REF(on_parent_pre_qdeleted)) + RegisterSignal(parent, COMSIG_ITEM_MARK_RETRIEVAL, PROC_REF(check_mark_retrieval)) + // Relocate when we become unreachable + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_parent_moved)) + // Relocate when our loc, or any of our loc's locs, becomes unreachable + var/static/list/loc_connections = list( + COMSIG_MOVABLE_MOVED = PROC_REF(on_parent_moved), + SIGNAL_ADDTRAIT(TRAIT_SECLUDED_LOCATION) = PROC_REF(on_loc_secluded), + ) + AddComponent(/datum/component/connect_containers, parent, loc_connections) + +/datum/component/stationloving/UnregisterFromParent() + UnregisterSignal(parent, list( + COMSIG_MOVABLE_Z_CHANGED, + COMSIG_PREQDELETED, + COMSIG_ITEM_IMBUE_SOUL, + COMSIG_ITEM_MARK_RETRIEVAL, + COMSIG_MOVABLE_MOVED, + )) + + qdel(GetComponent(/datum/component/connect_containers)) + +/datum/component/stationloving/InheritComponent(datum/component/stationloving/newc, original, inform_admins, allow_death) + if(original) + if(newc) + inform_admins = newc.inform_admins + allow_death = newc.allow_item_destruction + else + inform_admins = inform_admins + +/// Teleports parent to a safe turf on the station z-level. +/datum/component/stationloving/proc/relocate() + + var/target_turf = find_safe_turf() //Fallback. Mostly for debug maps. + + if(!target_turf) + if(GLOB.blobstart.len > 0) + target_turf = get_turf(pick(GLOB.blobstart)) + else + CRASH("Unable to find a blobstart landmark for [type] to relocate [parent].") + + var/atom/movable/movable_parent = parent + playsound(movable_parent, 'sound/machines/synth_no.ogg', 5, TRUE) + + var/mob/holder = get(movable_parent, /mob) + if(holder) + to_chat(holder, span_danger("You can't help but feel that you just lost something back there...")) + holder.temporarily_remove_item_from_inventory(parent, TRUE) // prevents ghost diskie + + movable_parent.forceMove(target_turf) + + return target_turf + +/// Signal proc for [COMSIG_MOVABLE_MOVED], called when our parent moves, or our parent's loc, or our parent's loc loc... +/// To check if our disk is moving somewhere it shouldn't be, such as off Z level, or into an invalid area +/datum/component/stationloving/proc/on_parent_moved(atom/movable/source, turf/old_turf) + SIGNAL_HANDLER + + if(atom_in_bounds(source)) + return + + var/turf/current_turf = get_turf(source) + var/turf/new_destination = relocate() + // Our turf actually didn't change, so it's more likely we became secluded + if(current_turf == old_turf) + log_game("[parent] moved out of bounds at [loc_name(current_turf)], becoming inaccessible / secluded. \ + Moving it to [loc_name(new_destination)].") + + if(inform_admins) + message_admins("[parent] moved out of bounds at [ADMIN_VERBOSEJMP(current_turf)], becoming inaccessible / secluded. \ + Moving it to [ADMIN_VERBOSEJMP(new_destination)].") + + // Our locs changes, we did in fact move somewhere + else + log_game("[parent] attempted to be moved out of bounds from [loc_name(old_turf)] \ + to [loc_name(current_turf)]. Moving it to [loc_name(new_destination)].") + + if(inform_admins) + message_admins("[parent] attempted to be moved out of bounds from [ADMIN_VERBOSEJMP(old_turf)] \ + to [ADMIN_VERBOSEJMP(current_turf)]. Moving it to [ADMIN_VERBOSEJMP(new_destination)].") + +/// Signal proc for [SIGNAL_ADDTRAIT], via [TRAIT_SECLUDED_LOCATION] on our locs, to ensure nothing funky happens +/datum/component/stationloving/proc/on_loc_secluded(atom/movable/source) + SIGNAL_HANDLER + + var/turf/new_destination = relocate() + log_game("[parent] moved out of bounds at [loc_name(source)], becoming inaccessible / secluded. \ + Moving it to [loc_name(new_destination)].") + + if(inform_admins) + message_admins("[parent] moved out of bounds at [ADMIN_VERBOSEJMP(source)], becoming inaccessible / secluded. \ + Moving it to [ADMIN_VERBOSEJMP(new_destination)].") + +/datum/component/stationloving/proc/check_mark_retrieval(datum/source) + SIGNAL_HANDLER + + return COMPONENT_BLOCK_MARK_RETRIEVAL + +/// Checks whether a given atom's turf is within bounds. Returns TRUE if it is, FALSE if it isn't. +/datum/component/stationloving/proc/atom_in_bounds(atom/atom_to_check) + // Typecache of shuttles that we allow the disk to stay on + var/static/list/allowed_shuttles = typecacheof(list( + /area/shuttle/syndicate, + /area/shuttle/escape, + /area/shuttle/pod_1, + /area/shuttle/pod_2, + /area/shuttle/pod_3, + /area/shuttle/pod_4, + )) + // Typecache of areas on the centcom Z-level that we allow the disk to stay on + var/static/list/disallowed_centcom_areas = typecacheof(list( + /area/abductor_ship + )) + + // Our loc is a secluded location = not in bounds + if(atom_to_check.loc && HAS_TRAIT(atom_to_check.loc, TRAIT_SECLUDED_LOCATION)) + return FALSE + // No turf below us = nullspace = not in bounds + var/turf/destination_turf = get_turf(atom_to_check) + if(!destination_turf) + return FALSE + if(is_station_level(destination_turf.z)) + return TRUE + if(atom_to_check.onSyndieBase()) + return TRUE + + var/area/destination_area = destination_turf.loc + if(is_admin_level(destination_turf.z)) + if(is_type_in_typecache(destination_area, disallowed_centcom_areas)) + return FALSE + return TRUE + return FALSE + +/// Signal handler for before the parent is qdel'd. Can prevent the parent from being deleted where allow_item_destruction is FALSE and force is FALSE. +/datum/component/stationloving/proc/on_parent_pre_qdeleted(datum/source, force) + SIGNAL_HANDLER + + var/turf/current_turf = get_turf(parent) + + if(force && inform_admins) + message_admins("[parent] has been !!force deleted!! in [ADMIN_VERBOSEJMP(current_turf)].") + log_game("[parent] has been !!force deleted!! in [loc_name(current_turf)].") + + if(force || allow_item_destruction) + return FALSE + + var/turf/new_turf = relocate() + log_game("[parent] has been destroyed in [loc_name(current_turf)]. \ + Preventing destruction and moving it to [loc_name(new_turf)].") + if(inform_admins) + message_admins("[parent] has been destroyed in [ADMIN_VERBOSEJMP(current_turf)]. \ + Preventing destruction and moving it to [ADMIN_VERBOSEJMP(new_turf)].") + return TRUE diff --git a/code/datums/components/transforming.dm b/code/datums/components/transforming.dm index c9c1e8151d92..c1853efa14d4 100644 --- a/code/datums/components/transforming.dm +++ b/code/datums/components/transforming.dm @@ -243,7 +243,7 @@ return FALSE var/obj/item/item_parent = parent - var/hurt_verb = LAZYLEN(attack_verb_on) ? pick(attack_verb_on) : "hit" + var/hurt_verb = LAZYLEN(attack_verb_on) ? pick(attack_verb_on) : "ударил" user.visible_message( span_warning("[user] triggers [item_parent] while holding it backwards and [hurt_verb] themself, like a doofus!"), span_warning("You trigger [item_parent] while holding it backwards and accidentally [hurt_verb] yourself!"), diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index ccb7c665b235..6e1d2296f9c7 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -141,7 +141,7 @@ GLOBAL_VAR_INIT(record_id_num, 1001) else if(H.job) assignment = H.job else - assignment = "Unassigned" + assignment = "Неназначенный" var/id = num2hex(GLOB.record_id_num++, 6) @@ -154,8 +154,8 @@ GLOBAL_VAR_INIT(record_id_num, 1001) G.fields["rank"] = assignment G.fields["age"] = H.age G.fields["fingerprint"] = md5(H.dna.uni_identity) - G.fields["p_stat"] = "Active" - G.fields["m_stat"] = "Stable" + G.fields["p_stat"] = "Активный" + G.fields["m_stat"] = "Стабильное" G.fields["sex"] = capitalize(H.gender) G.fields["species"] = H.dna.species.name G.fields["photo"] = get_id_photo(H) @@ -164,11 +164,11 @@ GLOBAL_VAR_INIT(record_id_num, 1001) if(H.gen_record && !jobban_isbanned(H, "Records")) G.fields["notes"] = H.gen_record else - G.fields["notes"] = "No notes found." + G.fields["notes"] = "Дополнительная информация отсутствует." if(H.exploit_record && !jobban_isbanned(H, "Records")) G.fields["exploit_record"] = H.exploit_record else - G.fields["exploit_record"] = "No notes found." + G.fields["exploit_record"] = "Дополнительная информация отсутствует." general += G //Medical Record @@ -177,18 +177,18 @@ GLOBAL_VAR_INIT(record_id_num, 1001) M.fields["name"] = H.real_name M.fields["blood_type"] = H.dna.blood_type M.fields["b_dna"] = H.dna.unique_enzymes - M.fields["mi_dis"] = "None" - M.fields["mi_dis_d"] = "No minor disabilities have been declared." - M.fields["ma_dis"] = "None" - M.fields["ma_dis_d"] = "No major disabilities have been diagnosed." - M.fields["alg"] = "None" - M.fields["alg_d"] = "No allergies have been detected in this patient." - M.fields["cdi"] = "None" - M.fields["cdi_d"] = "No diseases have been diagnosed at the moment." + M.fields["mi_dis"] = "Отсутствуют" + M.fields["mi_dis_d"] = "Незначительные отклонения не указаны." + M.fields["ma_dis"] = "Отсутствуют" + M.fields["ma_dis_d"] = "Инвалидности не указаны." + M.fields["alg"] = "Отсутствуют" + M.fields["alg_d"] = "Аллергии не указаны." + M.fields["cdi"] = "Отсутствуют" + M.fields["cdi_d"] = "Текущие заболевания не указаны." if(H.med_record && !jobban_isbanned(H, "Records")) M.fields["notes"] = H.med_record else - M.fields["notes"] = "No notes found." + M.fields["notes"] = "Дополнительная информация отсутствует." medical += M //Security Record @@ -204,7 +204,7 @@ GLOBAL_VAR_INIT(record_id_num, 1001) if(H.sec_record && !jobban_isbanned(H, "Records")) S.fields["notes"] = H.sec_record else - S.fields["notes"] = "No notes found." + S.fields["notes"] = "Дополнительная информация отсутствует." LAZYINITLIST(S.fields["comments"]) security += S @@ -396,9 +396,6 @@ GLOBAL_VAR_INIT(record_id_num, 1001) if(JOB_TITLE_LIBRARIAN) clothes_s = new /icon('icons/mob/clothing/uniform.dmi', "red_suit_s") clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "black"), ICON_UNDERLAY) - if(JOB_TITLE_BARBER) - clothes_s = new /icon('icons/mob/clothing/uniform.dmi', "barber_s") - clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "black"), ICON_UNDERLAY) if(JOB_TITLE_CLOWN) clothes_s = new /icon('icons/mob/clothing/uniform.dmi', "clown_s") clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "clown"), ICON_UNDERLAY) diff --git a/code/datums/datum.dm b/code/datums/datum.dm index 2502ecef7bb9..663c0153f33c 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -35,6 +35,12 @@ #ifdef TESTING var/running_find_references var/last_find_references = 0 + /// How many references we're trying to find when searching + var/references_to_clear = 0 + #ifdef REFERENCE_TRACKING_DEBUG + ///Stores info about where refs are found, used for sanity checks and testing + var/list/found_refs + #endif #endif // Default implementation of clean-up code. diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 47eaf9f9997d..3a8aac64977b 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -1,3 +1,7 @@ +#define VV_MSG_MARKED "
Marked Object" +#define VV_MSG_EDITED "
Var Edited" +#define VV_MSG_ADMIN_SPAWNED "
Admin Spawned" +#define VV_MSG_DELETED "
Deleted" // reference: /client/proc/modify_variables(var/atom/O, var/param_var_name = null, var/autodetect_class = 0) /** @@ -12,6 +16,21 @@ /datum/proc/can_vv_get(var_name) return TRUE +/mob/can_vv_get(var_name) + var/static/list/protected_vars = list( + "lastKnownIP", "computer_id", "attack_log_old" + ) + if(!check_rights(R_ADMIN, FALSE, src) && (var_name in protected_vars)) + return FALSE + return TRUE + +/client/can_vv_get(var_name) + var/static/list/protected_vars = list( + "address", "chatOutput", "computer_id", "connection", "jbh", "pm_tracker", "related_accounts_cid", "related_accounts_ip", "watchlisted" + ) + if(!check_rights(R_ADMIN, FALSE, mob) && (var_name in protected_vars)) + return FALSE + return TRUE /// Called when a var is edited with the new value to change to /datum/proc/vv_edit_var(var_name, var_value) @@ -58,7 +77,6 @@ /client/proc/debug_variables(datum/D in world) set name = "\[Admin\] View Variables" - set category = "Debug" var/static/cookieoffset = rand(1, 9999) //to force cookies to reset after the round. @@ -96,7 +114,9 @@ hash = md5(A.icon) hash = md5(hash + A.icon_state) usr << browse_rsc(sprite, "vv[hash].png") - + + title = "[D]" + var/formatted_type = replacetext("[type]", "/", "/") var/sprite_text if(sprite) @@ -108,30 +128,31 @@ var/atom/A = D if(isliving(A)) var/mob/living/L = A - atomsnowflake += "[L]" - if(L.dir) - atomsnowflake += "
<< [dir2text(L.dir)] >>" + atomsnowflake += "[D]" + atomsnowflake += "
<< [dir2text(A.dir) || A.dir] >>" atomsnowflake += {" -
[L.ckey ? L.ckey : "No ckey"] / [L.real_name ? L.real_name : "No real name"] +
[L.ckey || "No ckey"] / [L.real_name || "No real name"]
- BRUTE:[L.getBruteLoss()] - FIRE:[L.getFireLoss()] - TOXIN:[L.getToxLoss()] - OXY:[L.getOxyLoss()] - CLONE:[L.getCloneLoss()] - BRAIN:[L.getBrainLoss()] - STAMINA:[L.getStaminaLoss()] + BRUTE:[L.getBruteLoss()] + FIRE:[L.getFireLoss()] + TOXIN:[L.getToxLoss()] + OXY:[L.getOxyLoss()] + CLONE:[L.getCloneLoss()] + BRAIN:[L.getBrainLoss()] + STAMINA:[L.getStaminaLoss()] "} else - atomsnowflake += "[A]" - if(A.dir) - atomsnowflake += "
<< [dir2text(A.dir)] >>" + atomsnowflake += "[D]" + atomsnowflake += "
<< [dir2text(A.dir) || A.dir] >>" + + else if("name" in D.vars) + atomsnowflake += "[D]" else - atomsnowflake += "[D]" + atomsnowflake += "[formatted_type]" + formatted_type = null - var/formatted_type = "[type]" if(length(formatted_type) > 25) var/middle_point = length(formatted_type) / 2 var/splitpoint = findtext(formatted_type, "/", middle_point) @@ -143,29 +164,32 @@ var/marked if(holder.marked_datum && holder.marked_datum == D) - marked = "
Marked Object" + marked = VV_MSG_MARKED var/varedited_line = "" if(isatom(D)) var/atom/A = D if(A.flags & ADMIN_SPAWNED) - varedited_line += "
Admin Spawned" + varedited_line += VV_MSG_ADMIN_SPAWNED if(!islist && (D.datum_flags & DF_VAR_EDITED)) - varedited_line += "
Var Edited" + varedited_line = VV_MSG_EDITED + var/deleted_line + if(!islist && D.gc_destroyed) + deleted_line = VV_MSG_DELETED var/dropdownoptions = list() if(islist) dropdownoptions = list( "---", - "Add Item" = "?_src_=vars;listadd=[refid]", - "Remove Nulls" = "?_src_=vars;listnulls=[refid]", - "Remove Dupes" = "?_src_=vars;listdupes=[refid]", - "Set len" = "?_src_=vars;listlen=[refid]", - "Shuffle" = "?_src_=vars;listshuffle=[refid]" + "Add Item" = "byond://?_src_=vars;listadd=[refid]", + "Remove Nulls" = "byond://?_src_=vars;listnulls=[refid]", + "Remove Dupes" = "byond://?_src_=vars;listdupes=[refid]", + "Set len" = "byond://?_src_=vars;listlen=[refid]", + "Shuffle" = "byond://?_src_=vars;listshuffle=[refid]" ) else dropdownoptions = D.vv_get_dropdown() @@ -220,139 +244,153 @@ } - +
@@ -370,8 +408,9 @@
[formatted_type] - [marked] - [varedited_line] + [marked] + [varedited_line] + [deleted_line]
@@ -379,7 +418,7 @@ Refresh
- - - - - "} - - //player table header - dat += {" - - "} - - var/list/mobs = sortmobs() - var/i = 1 - for(var/mob/M in mobs) - if(M.ckey) - - var/color = "#e6e6e6" - if(i%2 == 0) - color = "#f2f2f2" - var/antagonist_string = get_antag_type_truncated_plaintext_string(M) - - var/M_job = "" - - if(isliving(M)) - - if(iscarbon(M)) //Carbon stuff - if(is_monkeybasic(M)) - M_job = "Monkey" - else if(ishuman(M)) - M_job = M.job - else if(isslime(M)) - M_job = "slime" - - else if(isalien(M)) //aliens - if(islarva(M)) - M_job = "Alien larva" - else - M_job = "Alien" - else - M_job = "Carbon-based" - - else if(issilicon(M)) //silicon - if(isAI(M)) - M_job = "AI" - else if(ispAI(M)) - M_job = "pAI" - else if(iscogscarab(M)) - M_job = "Cogscarab" - else if(isrobot(M)) - M_job = "Cyborg" - else - M_job = "Silicon-based" - - else if(isanimal(M)) //simple animals - if(iscorgi(M)) - M_job = "Corgi" - else - M_job = "Animal" - - else - M_job = "Living" - - else if(isnewplayer(M)) - M_job = "New player" - - else if(isobserver(M)) - M_job = "Ghost" - - M_job = replacetext(M_job, "'", "") - M_job = replacetext(M_job, "\"", "") - M_job = replacetext(M_job, "\\", "") - - var/M_name = M.name - M_name = replacetext(M_name, "'", "") - M_name = replacetext(M_name, "\"", "") - M_name = replacetext(M_name, "\\", "") - var/M_rname = M.real_name - M_rname = replacetext(M_rname, "'", "") - M_rname = replacetext(M_rname, "\"", "") - M_rname = replacetext(M_rname, "\\", "") - - var/M_key = M.key - M_key = replacetext(M_key, "'", "") - M_key = replacetext(M_key, "\"", "") - M_key = replacetext(M_key, "\\", "") - - var/M_eyeUID = "" - if(isAI(M)) - var/mob/living/silicon/ai/A = M - if(A.client && A.eyeobj) // No point following clientless AI eyes - M_eyeUID = "[A.eyeobj.UID()]" - var/client_ckey = M.client ? M.client.ckey : null - //output for each mob - dat += {" - - - - - - "} - - i++ - - - //player table ending - dat += {" -
- - - [M_name] - [M_rname] - [M_key] ([M_job]) - -
-
-
- - - - "} - - usr << browse(dat, "window=players;size=600x480") - - /datum/admins/proc/check_antagonists_line(mob/M, caption = "", close = 1) var/logout_status logout_status = M.client ? "" : " (logged out)" @@ -351,15 +13,15 @@ if(!check_rights(R_ADMIN)) return if(SSticker && SSticker.current_state >= GAME_STATE_PLAYING) - var/dat = {"Round Status

Round Status

"} + var/dat = {"

Round Status

"} dat += "Current Game Mode: [SSticker.mode.name]
" dat += "Round Duration: [ROUND_TIME_TEXT()]
" dat += "Emergency shuttle
" - if(SSshuttle.emergency.mode < SHUTTLE_CALL) + if(SSshuttle.emergency.mode == SHUTTLE_IDLE) dat += "Call Shuttle
" else var/timeleft = SSshuttle.emergency.timeLeft() - if(SSshuttle.emergency.mode < SHUTTLE_DOCKED) + if(SSshuttle.emergency.mode == SHUTTLE_CALL) dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
" dat += "Send Back
" else @@ -367,13 +29,46 @@ if(!SSshuttle.emergencyNoEscape) dat += "Lockdown Shuttle
" else - if(SSshuttle.emergency.mode == SHUTTLE_STRANDED) - dat += span_danger("Emergency shuttle stranded") - dat += "
Stop lockdown and De-Strandise
" - else - dat += span_danger("Emergency shuttle lockdowned") - dat += "
Stop lockdown
" + dat += span_danger("Emergency shuttle lockdowned") + dat += "
Stop lockdown
" + if(SSshuttle.emergency.mode == SHUTTLE_STRANDED) + dat += span_danger("Emergency shuttle stranded") + dat += "
Reload Shuttle
" + dat += "Full LockdownNow: [GLOB.full_lockdown? "ON" : "OFF"]
" dat += "[SSticker.delay_end ? "End Round Normally" : "Delay Round End"]
" + var/connected_players = GLOB.clients.len + var/lobby_players = 0 + var/observers = 0 + var/observers_connected = 0 + var/living_players = 0 + var/living_players_connected = 0 + var/living_players_antagonist = 0 + var/other_players = 0 + for(var/mob/M in GLOB.mob_list) + if(M.ckey) + if(isnewplayer(M)) + lobby_players++ + continue + else if(M.stat != DEAD && M.mind && !isbrain(M)) + living_players++ + if(M.mind.special_role) + living_players_antagonist++ + if(M.client) + living_players_connected++ + else if((M.stat == DEAD )||(isobserver(M))) + observers++ + if(M.client) + observers_connected++ + else + other_players++ + dat += "
Players:|[connected_players - lobby_players] ingame|[connected_players] connected|[lobby_players] lobby|" + dat += "
Living Players:|[living_players_connected] active|[living_players - living_players_connected] disconnected|[living_players_antagonist] antagonists|" + dat += "
Dead/Observing players:|[observers_connected] active|[observers - observers_connected] disconnected|" + if(other_players) + dat += "
[other_players] players in invalid state or the statistics code is bugged!" + dat += "
" + dat +="
Code Phrases: [GLOB.syndicate_code_phrase]" + dat +="
Code Responses: [GLOB.syndicate_code_response]" dat += "
Antagonist Teams
" dat += "View Teams
" if(SSticker.mode.syndicates.len) @@ -425,7 +120,7 @@ if(blob_infected && blob_infected.len) var/datum/game_mode/mode = SSticker.mode dat += "
" - dat += "" + dat += "" dat += "" dat += "" dat += "" @@ -433,6 +128,7 @@ dat += "" dat += "" dat += "" + dat += "" dat += "
Blob
Progress: [GLOB.blobs.len]/[mode.blob_win_count]
Progress: [mode.legit_blobs.len]/[mode.blob_win_count]
Edit Win Count
Send warning to all living blobs
Burst all blobs
Delay blob end Now: [mode.delay_blob_end? "ON" : "OFF"]
Toggle auto GAMMA Now: [mode.off_auto_gamma? "OFF" : "ON"]
Toggle auto nuke codes Now: [mode.off_auto_nuke_codes? "OFF" : "ON"]
Toggle blob infinity points Now: [mode.is_blob_infinity_points? "ON" : "OFF"]
" dat += "
" for(var/datum/mind/blob in mode.blobs["infected"]) @@ -454,14 +150,14 @@ dat += "
Blobs
" - dat += "
" - for(var/datum/mind/blob in mode.blobs["blobernauts"]) + dat += "
Blobernauts
" + for(var/datum/mind/blob in mode.blobs["minions"]) var/mob/M = blob.current if(M) dat += "" dat += "" else - dat += "" + dat += "" dat += "
Minions
[ADMIN_PP(M,"[M.real_name]")][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PM
Blobernauts not found!
Minions not found!
" @@ -578,9 +274,6 @@ if(SSticker.mode.devils.len) dat += check_role_table("Devils", SSticker.mode.devils) - if(SSticker.mode.xenos.len) - dat += check_role_table("Xenos", SSticker.mode.xenos) - if(SSticker.mode.superheroes.len) dat += check_role_table("Superheroes", SSticker.mode.superheroes) @@ -593,24 +286,6 @@ if(SSticker.mode.eventmiscs.len) dat += check_role_table("Event Roles", SSticker.mode.eventmiscs) - if(GLOB.ts_spiderlist.len) - var/list/spider_minds = list() - for(var/mob/living/simple_animal/hostile/poison/terror_spider/S in GLOB.ts_spiderlist) - if(S.ckey) - spider_minds += S.mind - if(spider_minds.len) - dat += check_role_table("Terror Spiders", spider_minds) - - var/count_eggs = 0 - var/count_spiderlings = 0 - for(var/obj/structure/spider/eggcluster/terror_eggcluster/E in GLOB.ts_egg_list) - if(is_station_level(E.z)) - count_eggs += E.spiderling_number - for(var/obj/structure/spider/spiderling/terror_spiderling/L in GLOB.ts_spiderling_list) - if(!L.stillborn && is_station_level(L.z)) - count_spiderlings += 1 - dat += "
Growing TS on-station: [count_eggs] egg[count_eggs != 1 ? "s" : ""], [count_spiderlings] spiderling[count_spiderlings != 1 ? "s" : ""].
" - if(SSticker.mode.ert.len) dat += check_role_table("ERT", SSticker.mode.ert) @@ -623,10 +298,14 @@ dat += "Antag: [sec_list[4]]" dat += "" - dat += "" - usr << browse(dat, "window=roundstatus;size=400x500") + dat += "" + var/datum/browser/popup = new(usr, "roundstatus", "
Round Status
", 400, 500) + popup.set_content(dat) + popup.set_window_options("can_close=1;can_minimize=0;can_maximize=0;can_resize=0;titlebar=1;") + popup.open() + onclose(usr, "roundstatus") else - alert("The game hasn't started yet!") + tgui_alert(usr, "The game hasn't started yet!") /datum/admins/proc/check_role_table(name, list/members, show_objectives=1) var/txt = "
" @@ -650,3 +329,58 @@ txt += "" return txt + +/datum/admins/proc/check_security_line(mob/living/human, close = 1) + var/logout_status = human.client ? "" : " (logged out)" + var/list/coords = ATOM_COORDS(human) + var/job = issilicon(human) ? "Cyborg" : human.job // || need because maybe ert robots with null in job + return {"[close ? "" : ""]"} + +/datum/admins/proc/check_security() + if(!check_rights(R_ADMIN)) + return + if(!SSticker || SSticker.current_state < GAME_STATE_PLAYING) + return + + var/dat = {"

Round Status

"} + var/list/sec_list = check_active_security_force() + dat += "
[name]
[human.real_name][logout_status][job][human.stat == DEAD ? " (Dead)" : " [human.health]%"] [get_area_name(human)] [coords[1]],[coords[2]],[coords[3]]PM [ADMIN_FLW(human, "FLW")]
" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "
Security
Total: [sec_list[1]]
Active: [sec_list[2]]
Dead: [sec_list[3]]
Antag: [sec_list[4]]
" + dat += "" + + dat += "
" + for(var/datum/mind/mind in SSticker.mode.get_all_sec()) + if(mind.current) + dat += check_security_line(mind.current) + dat += "
Security
" + + if(SSticker.mode.ert.len) + dat += check_role_table_sec("ERT", SSticker.mode.ert) + + var/datum/browser/popup = new(usr, "secstatus", "
Security Status
", 600, 800) + popup.set_content(dat) + popup.set_window_options("can_close=1;can_minimize=0;can_maximize=0;can_resize=0;titlebar=1;") + popup.open() + onclose(usr, "secstatus") + +/datum/admins/proc/check_role_table_sec(name, list/members, show_objectives=0) + var/txt = "
" + for(var/datum/mind/mind in members) + txt += check_role_table_row_sec(mind.current, show_objectives) + txt += "
[name]
" + return txt + +/datum/admins/proc/check_role_table_row_sec(mob/mob, show_objectives) + var/txt = check_security_line(mob, close = 0) + if(show_objectives) + txt += {" + + Show Objective + + "} + txt += "" + return txt diff --git a/code/modules/admin/create_cargo_crate.dm b/code/modules/admin/create_cargo_crate.dm new file mode 100644 index 000000000000..f8660b895faf --- /dev/null +++ b/code/modules/admin/create_cargo_crate.dm @@ -0,0 +1,17 @@ +/datum/admins/proc/create_cargo_crate() + + if(!check_rights(R_SPAWN)) + return + + var/path = tgui_input_list(usr, "Выберите тип для спавна", "Карго ящики", (typecacheof(/datum/supply_packs) + typecacheof(/datum/syndie_supply_packs))) + if(!path || !ispath(path)) + return + var/datum/supply_order/order = (path in typecacheof(/datum/supply_packs))? new /datum/supply_order : new /datum/syndie_supply_order + order.ordernum = 0 + order.object = new path + order.orderedby = "ОШИБКА" + order.orderedbyRank = "ОШИБКА" + order.crates = 1 + order.createObject(get_turf(usr)) + + log_and_message_admins("spawned cargo pack [order.object.name] at ([usr.x],[usr.y],[usr.z])") diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index 79da27d4672a..2702083fb8be 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -7,4 +7,11 @@ GLOBAL_VAR(create_mob_html) GLOB.create_mob_html = replacetext(GLOB.create_mob_html, "null /* object types */", "\"[mobjs]\"") GLOB.create_mob_html = replacetext(GLOB.create_mob_html, "Create Object", "Create Mob") - user << browse(replacetext(GLOB.create_mob_html, "/* ref src */", UID()), "window=create_mob;size=425x475") + var/datum/browser/popup = new(user, "create_mob", "
Create Mob
", 550, 600) + var/unique_content = GLOB.create_mob_html + unique_content = replacetext(unique_content, "/* ref src */", UID()) + popup.set_content(unique_content) + popup.set_window_options("can_close=1;can_minimize=0;can_maximize=1;can_resize=1") + popup.add_stylesheet("dark_inputs", "html/dark_inputs.css") + popup.open() + onclose(user, "create_mob") diff --git a/code/modules/admin/create_object.dm b/code/modules/admin/create_object.dm index a24e13e5c228..d8c0cb9fc0c1 100644 --- a/code/modules/admin/create_object.dm +++ b/code/modules/admin/create_object.dm @@ -8,10 +8,17 @@ GLOBAL_LIST_INIT(create_object_forms, list(/obj, /obj/structure, /obj/machinery, GLOB.create_object_html = file2text('html/create_object.html') GLOB.create_object_html = replacetext(GLOB.create_object_html, "null /* object types */", "\"[objectjs]\"") - user << browse(replacetext(GLOB.create_object_html, "/* ref src */", UID()), "window=create_object;size=425x475") + var/datum/browser/popup = new(user, "create_obj", "
Create Object
", 550, 600) + var/unique_content = GLOB.create_object_html + unique_content = replacetext(unique_content, "/* ref src */", UID()) + popup.set_content(unique_content) + popup.set_window_options("can_close=1;can_minimize=0;can_maximize=1;can_resize=1") + popup.add_stylesheet("dark_inputs", "html/dark_inputs.css") + popup.open() + onclose(user, "create_obj") /datum/admins/proc/quick_create_object(var/mob/user) - var/path = input("Select the path of the object you wish to create.", "Path", /obj) in GLOB.create_object_forms + var/path = tgui_input_list(usr, "Select the path of the object you wish to create.", "Path", GLOB.create_object_forms, /obj) var/html_form = GLOB.create_object_forms[path] if(!html_form) @@ -21,4 +28,11 @@ GLOBAL_LIST_INIT(create_object_forms, list(/obj, /obj/structure, /obj/machinery, html_form = replacetext(html_form, "Create Object", "Create Object [path]") GLOB.create_object_forms[path] = html_form - user << browse(replacetext(html_form, "/* ref src */", UID()), "window=qco[path];size=425x475") + var/datum/browser/popup = new(user, "qco[path]", "
Quick Create [path]
", 550, 600) + var/unique_content = html_form + unique_content = replacetext(unique_content, "/* ref src */", UID()) + popup.set_content(unique_content) + popup.set_window_options("can_close=1;can_minimize=0;can_maximize=1;can_resize=1") + popup.add_stylesheet("dark_inputs", "html/dark_inputs.css") + popup.open() + onclose(user, "qco[path]") diff --git a/code/modules/admin/create_turf.dm b/code/modules/admin/create_turf.dm index 050883685a92..196f0835f61f 100644 --- a/code/modules/admin/create_turf.dm +++ b/code/modules/admin/create_turf.dm @@ -7,4 +7,11 @@ GLOBAL_VAR(create_turf_html) GLOB.create_turf_html = replacetext(GLOB.create_turf_html, "null /* object types */", "\"[turfjs]\"") GLOB.create_turf_html = replacetext(GLOB.create_turf_html, "Create Object", "Create Turf") - user << browse(replacetext(GLOB.create_turf_html, "/* ref src */", UID()), "window=create_turf;size=425x475") + var/datum/browser/popup = new(user, "create_turf", "
Create Turf
", 550, 600) + var/unique_content = GLOB.create_turf_html + unique_content = replacetext(unique_content, "/* ref src */", UID()) + popup.set_content(unique_content) + popup.set_window_options("can_close=1;can_minimize=0;can_maximize=1;can_resize=1") + popup.add_stylesheet("dark_inputs", "html/dark_inputs.css") + popup.open() + onclose(user, "create_turf") diff --git a/code/modules/admin/db_ban/functions.dm b/code/modules/admin/db_ban/functions.dm index 01266f6cd0d1..843080c3a267 100644 --- a/code/modules/admin/db_ban/functions.dm +++ b/code/modules/admin/db_ban/functions.dm @@ -1,6 +1,6 @@ #define MAX_ADMIN_BANS_PER_ADMIN 1 -/datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration = -1, var/reason, var/job = "", var/rounds = 0, var/banckey = null, var/banip = null, var/bancid = null) +/datum/admins/proc/DB_ban_record(bantype, mob/banned_mob, duration = -1, reason, job = "", rounds = 0, banckey = null, banip = null, bancid = null) if(!check_rights(R_BAN)) return @@ -113,7 +113,7 @@ if(blockselfban) if(a_ckey == ckey) - to_chat(usr, "You cannot apply this ban type on yourself.", confidential=TRUE) + to_chat(usr, span_danger("You cannot apply this ban type on yourself."), confidential=TRUE) return var/who @@ -140,7 +140,7 @@ if(adm_query.NextRow()) var/adm_bans = text2num(adm_query.item[1]) if(adm_bans >= MAX_ADMIN_BANS_PER_ADMIN) - to_chat(usr, "You already logged [MAX_ADMIN_BANS_PER_ADMIN] admin ban(s) or more. Do not abuse this function!", confidential=TRUE) + to_chat(usr, span_danger("You already logged [MAX_ADMIN_BANS_PER_ADMIN] admin ban(s) or more. Do not abuse this function!"), confidential=TRUE) qdel(adm_query) return qdel(adm_query) @@ -170,7 +170,7 @@ return qdel(query_insert) - to_chat(usr, "Ban saved to database.", confidential=TRUE) + to_chat(usr, span_notice("Ban saved to database."), confidential=TRUE) message_admins("[key_name_admin(usr)] has added a [bantype_str] for [ckey] [(job)?"([job])":""] [(duration > 0)?"([duration] minutes)":""] with the reason: \"[reason]\" to the ban database.") if(announce_in_discord) @@ -185,7 +185,7 @@ else flag_account_for_forum_sync(ckey) -/datum/admins/proc/DB_ban_unban(var/ckey, var/bantype, var/job = "") +/datum/admins/proc/DB_ban_unban(ckey, bantype, job = "") if(!check_rights(R_BAN)) return @@ -255,17 +255,17 @@ qdel(query) if(ban_number == 0) - to_chat(usr, "Database update failed due to no bans fitting the search criteria. If this is not a legacy ban you should contact the database admin.", confidential=TRUE) + to_chat(usr, span_warning("Database update failed due to no bans fitting the search criteria. If this is not a legacy ban you should contact the database admin."), confidential=TRUE) return if(ban_number > 1) - to_chat(usr, "Database update failed due to multiple bans fitting the search criteria. Note down the ckey, job and current time and contact the database admin.", confidential=TRUE) + to_chat(usr, span_warning("Database update failed due to multiple bans fitting the search criteria. Note down the ckey, job and current time and contact the database admin."), confidential=TRUE) return if(istext(ban_id)) ban_id = text2num(ban_id) if(!isnum(ban_id)) - to_chat(usr, "Database update failed due to a ban ID mismatch. Contact the database admin.", confidential=TRUE) + to_chat(usr, span_warning("Database update failed due to a ban ID mismatch. Contact the database admin."), confidential=TRUE) return DB_ban_unban_by_id(ban_id) @@ -274,7 +274,7 @@ else flag_account_for_forum_sync(ckey) -/datum/admins/proc/DB_ban_edit(var/banid = null, var/param = null) +/datum/admins/proc/DB_ban_edit(banid = null, param = null) if(!check_rights(R_BAN)) return @@ -311,7 +311,7 @@ switch(param) if("reason") if(!value) - value = input("Insert the new reason for [pckey]'s ban", "New Reason", "[reason]", null) as null|text + value = tgui_input_text(usr, "Insert the new reason for [pckey]'s ban", "New Reason", "[reason]", multiline = TRUE, encode = FALSE) if(!value) to_chat(usr, "Cancelled", confidential=TRUE) return @@ -330,7 +330,18 @@ message_admins("[key_name_admin(usr)] has edited a ban for [pckey]'s reason from [reason] to [value]") if("duration") if(!value) - value = input("Insert the new duration (in minutes) for [pckey]'s ban", "New Duration", "[duration]", null) as null|num + var/days = floor(duration/(1 BAN_DAYS)) + var/hours = floor((duration - days BAN_DAYS)/(1 BAN_HOURS)) + var/minutes = duration - days BAN_DAYS - hours BAN_HOURS + var/raw_values = tgui_input_text(usr, "Введите новую длительность бана в формате Д:Ч:M", "Новая длительность", "[days]:[hours]:[minutes]") + if(!raw_values) + to_chat(usr, "Cancelled", confidential=TRUE) + return + var/list/values = text2numlist(raw_values, ":") + if(!values?.len || values.len != 3) + to_chat(usr, "Cancelled", confidential=TRUE) + return + value = values[1] BAN_DAYS + values[2] BAN_HOURS + values[3] if(!isnum(value) || !value) to_chat(usr, "Cancelled", confidential=TRUE) return @@ -348,7 +359,7 @@ qdel(update_query) message_admins("[key_name_admin(usr)] has edited a ban for [pckey]'s duration from [duration] to [value]") if("unban") - if(alert("Unban [pckey]?", "Unban?", "Yes", "No") == "Yes") + if(tgui_alert(usr, "Unban [pckey]?", "Unban?", list("Yes", "No")) == "Yes") DB_ban_unban_by_id(banid) if(job && length(job)) jobban_unban_client(pckey, job) @@ -385,11 +396,11 @@ qdel(query) if(ban_number == 0) - to_chat(usr, "Database update failed due to a ban id not being present in the database.", confidential=TRUE) + to_chat(usr, span_warning("Database update failed due to a ban id not being present in the database."), confidential=TRUE) return if(ban_number > 1) - to_chat(usr, "Database update failed due to multiple bans having the same ID. Contact the database admin.", confidential=TRUE) + to_chat(usr, span_warning("Database update failed due to multiple bans having the same ID. Contact the database admin."), confidential=TRUE) return if(!src.owner || !isclient(src.owner)) @@ -416,7 +427,7 @@ /client/proc/DB_ban_panel() - set category = "Admin" + set category = "Admin.Ban" set name = "Banning Panel" set desc = "DB Ban Panel" @@ -426,7 +437,7 @@ holder.DB_ban_panel() -/datum/admins/proc/DB_ban_panel(var/playerckey = null, var/adminckey = null, var/playerip = null, var/playercid = null, var/dbbantype = null, var/match = null) +/datum/admins/proc/DB_ban_panel(playerckey = null, adminckey = null, playerip = null, playercid = null, dbbantype = null, match = null) if(!usr.client) return @@ -435,21 +446,18 @@ return if(!SSdbcore.IsConnected()) - to_chat(usr, "Failed to establish database connection", confidential=TRUE) + to_chat(usr, span_warning("Не удалось установить соединение с базой данных"), confidential=TRUE) return - var/output = {"
"} + var/cached_UID = UID() + var/list/output = list() - output += "" - - output += "" continue if(!job.character_old_enough(user.client)) - html += "[rank]" + var/datum/species/current_species = GLOB.all_species[species] + html += "[rank]" continue if(job.species_in_blacklist(user.client)) html += "[rank]" @@ -1190,6 +1139,8 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts HTML += ShowDisabilityState(user, DISABILITY_FLAG_ALCOHOLE_ADDICT, "Alcohole addict") if(!(S.blacklisted_disabilities & DISABILITY_FLAG_PARAPLEGIA)) HTML += ShowDisabilityState(user, DISABILITY_FLAG_PARAPLEGIA, "Paraplegia") + if(!(S.blacklisted_disabilities & DISABILITY_FLAG_APHASIA)) + HTML += ShowDisabilityState(user, DISABILITY_FLAG_APHASIA, "Aphasia") HTML += {"\[Done\] @@ -1279,6 +1230,60 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts SetChoices(user) return 1 +/** + * Rebuilds the `loadout_gear` list of the [active_character], and returns the total end cost. + * + * Caches and cuts the existing [/datum/character_save/var/loadout_gear] list and remakes it, checking the `subtype_selection_cost` and overall cost validity of each item. + * + * If the item's [/datum/gear/var/subtype_selection_cost] is `FALSE`, any future items with the same [/datum/gear/var/main_typepath] will have their cost skipped. + * If adding the item will take the total cost over the maximum, it won't be added to the list. + * + * Arguments: + * * new_item - A new [/datum/gear] item to be added to the `loadout_gear` list. + */ +/datum/preferences/proc/build_loadout(datum/gear/new_item) + var/total_cost = 0 + var/list/type_blacklist = list() + var/list/loadout_cache = loadout_gear.Copy() + loadout_gear.Cut() + tgui_loadout_gear.Cut() + choosen_gears.Cut() + if(new_item) + loadout_cache += "[new_item.index_name]" + + for(var/item in loadout_cache) + var/datum/gear/gear = GLOB.gear_datums[item] + if(!gear) + continue + var/added_cost = gear.cost + if(!gear.subtype_cost_overlap) // If listings of the same subtype shouldn't have their cost added. + if(gear.path in type_blacklist) + added_cost = 0 + else + type_blacklist += gear.path + if((total_cost + added_cost) > max_gear_slots) + continue // If the final cost is too high, don't add the item. + var/item_cache = loadout_cache[item] + loadout_gear[item] = item_cache ? item_cache : list() + var/tgui_data = list() + for(var/datum/gear_tweak/tweak in gear.gear_tweaks) + var/text_path = "[tweak.type]" + if(!(text_path in item_cache)) + continue + var/params = item_cache[text_path] + var/list/data =tweak?.get_tgui_data(params) + if (!data) + continue + tgui_data[text_path] = data["display_param"] + tgui_data["name"] = data["name"] + tgui_data["icon"] = data["icon"] + tgui_data["icon_file"] = data["icon_file"] + tgui_data["icon_state"] = data["icon_state"] + tgui_loadout_gear[gear] = tgui_data + choosen_gears[item] = gear + total_cost += added_cost + return total_cost + /datum/preferences/proc/ResetJobs() job_support_high = 0 job_support_med = 0 @@ -1490,47 +1495,6 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts SetRecords(user) - if(href_list["preference"] == "gear") - if(href_list["toggle_gear"]) - var/datum/gear/TG = GLOB.gear_datums[href_list["toggle_gear"]] - if(TG.display_name in loadout_gear) - loadout_gear -= TG.display_name - choosen_gears -= TG.display_name - else - if(!TG.can_select(cl = user.client, species_name = S.name)) // all gear checks there, no jobs while prefs - return - var/total_cost = 0 - var/list/type_blacklist = list() - for(var/gear_name in loadout_gear) - var/datum/gear/G = GLOB.gear_datums[gear_name] - if(istype(G)) - if(!G.subtype_cost_overlap) - if(G.subtype_path in type_blacklist) - continue - type_blacklist += G.subtype_path - total_cost += G.cost - - if((total_cost + TG.cost) <= max_gear_slots) - loadout_gear += TG.display_name - choosen_gears[TG.display_name] += new TG.type - else if(href_list["gear"] && href_list["tweak"]) - var/datum/gear/gear = choosen_gears[href_list["gear"]] - var/datum/gear_tweak/tweak = locate(href_list["tweak"]) - if(!tweak || !istype(gear) || !(tweak in gear.gear_tweaks)) - return - var/metadata = tweak.get_metadata(user, get_tweak_metadata(gear, tweak)) - if(!metadata) - return - set_tweak_metadata(gear, tweak, metadata) - else if(href_list["select_category"]) - gear_tab = href_list["select_category"] - else if(href_list["clear_loadout"]) - loadout_gear.Cut() - choosen_gears.Cut() - - ShowChoices(user) - return - switch(href_list["task"]) if("random") var/datum/robolimb/robohead @@ -1542,7 +1506,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts real_name = random_name(gender,species) user.client << output(real_name, "title_browser:update_current_character") if("age") - age = rand(AGE_MIN, AGE_MAX) + age = get_rand_age(S) if("hair") if(species in list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_MACNINEPERSON, SPECIES_WRYN, SPECIES_VULPKANIN, SPECIES_VOX)) h_colour = rand_hex_color() @@ -1550,7 +1514,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts if(species in list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_MACNINEPERSON, SPECIES_WRYN, SPECIES_VULPKANIN, SPECIES_VOX)) h_sec_colour = rand_hex_color() if("h_style") - h_style = random_hair_style(gender, species, robohead) + h_style = random_hair_style(gender, S, robohead) if("facial") if(species in list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_MACNINEPERSON, SPECIES_WRYN, SPECIES_VULPKANIN, SPECIES_VOX)) f_colour = rand_hex_color() @@ -1619,10 +1583,11 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts to_chat(user, "Invalid name. Your name should be at least 2 and at most [MAX_NAME_LEN] characters long. It may only contain the characters A-Z, a-z, -, ' and .") if("age") - var/new_age = tgui_input_number(user, "Choose your character's age:\n([AGE_MIN]-[AGE_MAX])", "Character Preference", age, AGE_MAX, AGE_MIN) + var/list/age_list = get_age_limits(S, list(SPECIES_AGE_MIN, SPECIES_AGE_MAX)) + var/new_age = tgui_input_number(user, "Choose your character's age:\n([age_list[SPECIES_AGE_MIN]]-[age_list[SPECIES_AGE_MAX]])", "Character Preference", age, age_list[SPECIES_AGE_MAX], age_list[SPECIES_AGE_MIN]) if(!new_age) return - age = max(min(round(text2num(new_age)), AGE_MAX), AGE_MIN) + age = clamp(round(text2num(new_age)), age_list[SPECIES_AGE_MIN], age_list[SPECIES_AGE_MAX]) if("species") var/list/new_species = list(SPECIES_HUMAN) var/prev_species = species @@ -1645,7 +1610,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts var/head_model = "[!rlimb_data["head"] ? "Morpheus Cyberkinetics" : rlimb_data["head"]]" robohead = GLOB.all_robolimbs[head_model] //grab one of the valid hair styles for the newly chosen species - h_style = random_hair_style(gender, species, robohead) + h_style = random_hair_style(gender, S, robohead) //grab one of the valid facial hair styles for the newly chosen species f_style = random_facial_hair_style(gender, species, robohead) @@ -1696,6 +1661,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts if(!(NS.bodyflags & HAS_SKIN_COLOR)) s_colour = "#000000" + age = get_rand_age(NS) alt_head = "None" //No alt heads on species that don't have them. speciesprefs = 0 //My Vox tank shouldn't change how my future Grey talks. language = LANGUAGE_NONE @@ -1710,6 +1676,10 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts autohiss_mode = AUTOHISS_OFF if("speciesprefs") speciesprefs = !speciesprefs //Starts 0, so if someone clicks the button up top there, this won't be 0 anymore. If they click it again, it'll go back to 0. + if("toggle_wingdings") + var/dflag = text2num(DISABILITY_FLAG_WINGDINGS) + if(dflag >= 0) + disabilities ^= text2num(DISABILITY_FLAG_WINGDINGS) if("language") // var/languages_available var/list/new_languages = list("None") @@ -1758,18 +1728,18 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts b_type = new_b_type if("hair") - if(species in list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_MACNINEPERSON, SPECIES_VULPKANIN, SPECIES_VOX)) //Species that have hair. (No HAS_HAIR flag) + if(species in list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_MACNINEPERSON, SPECIES_WRYN, SPECIES_VULPKANIN, SPECIES_VOX)) //Species that have hair. (No HAS_HAIR flag) var/input = "Choose your character's hair colour:" - var/new_hair = input(user, input, "Character Preference", h_colour) as color|null - if(new_hair) + var/new_hair = tgui_input_color(user, input, "Character Preference", h_colour) + if(!isnull(new_hair)) h_colour = new_hair if("secondary_hair") - if(species in list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_MACNINEPERSON, SPECIES_VULPKANIN, SPECIES_VOX)) + if(species in list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_MACNINEPERSON, SPECIES_WRYN, SPECIES_VULPKANIN, SPECIES_VOX)) var/datum/sprite_accessory/hair_style = GLOB.hair_styles_public_list[h_style] if(hair_style.secondary_theme && !hair_style.no_sec_colour) - var/new_hair = input(user, "Choose your character's secondary hair colour:", "Character Preference", h_sec_colour) as color|null - if(new_hair) + var/new_hair = tgui_input_color(user, "Choose your character's secondary hair colour:", "Character Preference", h_sec_colour) + if(!isnull(new_hair)) h_sec_colour = new_hair if("h_style") @@ -1817,8 +1787,8 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts h_grad_offset_y = clamp(text2num(expl[2]) || 0, -16, 16) if("h_grad_colour") - var/result = input(user, "Choose your character's hair gradient colour:", "Character Preference", h_grad_colour) as color|null - if(result) + var/result = tgui_input_color(user, "Choose your character's hair gradient colour:", "Character Preference", h_grad_colour) + if(!isnull(result)) h_grad_colour = result if("h_grad_alpha") @@ -1830,8 +1800,8 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts if("headaccessory") if(S.bodyflags & HAS_HEAD_ACCESSORY) //Species with head accessories. var/input = "Choose the colour of your your character's head accessory:" - var/new_head_accessory = input(user, input, "Character Preference", hacc_colour) as color|null - if(new_head_accessory) + var/new_head_accessory = tgui_input_color(user, input, "Character Preference", hacc_colour) + if(!isnull(new_head_accessory)) hacc_colour = new_head_accessory if("ha_style") @@ -1910,8 +1880,8 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts if("m_head_colour") if(S.bodyflags & HAS_HEAD_MARKINGS) //Species with head markings. var/input = "Choose the colour of your your character's head markings:" - var/new_markings = input(user, input, "Character Preference", m_colours["head"]) as color|null - if(new_markings) + var/new_markings = tgui_input_color(user, input, "Character Preference", m_colours["head"]) + if(!isnull(new_markings)) m_colours["head"] = new_markings if("m_style_body") @@ -1926,7 +1896,8 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts continue if(M.marking_location != "body") continue - + if(!M.pickable) + continue valid_markings += markingstyle sortTim(valid_markings, cmp = /proc/cmp_text_asc) var/new_marking_style = tgui_input_list(user, "Choose the style of your character's body markings:", "Character Preference", valid_markings) @@ -1936,8 +1907,8 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts if("m_body_colour") if(S.bodyflags & HAS_BODY_MARKINGS) //Species with body markings/tattoos. var/input = "Choose the colour of your your character's body markings:" - var/new_markings = input(user, input, "Character Preference", m_colours["body"]) as color|null - if(new_markings) + var/new_markings = tgui_input_color(user, input, "Character Preference", m_colours["body"]) + if(!isnull(new_markings)) m_colours["body"] = new_markings if("m_style_tail") @@ -1966,8 +1937,8 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts if("m_tail_colour") if(S.bodyflags & HAS_TAIL_MARKINGS) //Species with tail markings. var/input = "Choose the colour of your your character's tail markings:" - var/new_markings = input(user, input, "Character Preference", m_colours["tail"]) as color|null - if(new_markings) + var/new_markings = tgui_input_color(user, input, "Character Preference", m_colours["tail"]) + if(!isnull(new_markings)) m_colours["tail"] = new_markings if("body_accessory") @@ -1991,17 +1962,17 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts if("facial") - if(species in list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_MACNINEPERSON, SPECIES_VULPKANIN, SPECIES_VOX)) //Species that have facial hair. (No HAS_HAIR_FACIAL flag) - var/new_facial = input(user, "Choose your character's facial-hair colour:", "Character Preference", f_colour) as color|null - if(new_facial) + if(species in list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_MACNINEPERSON, SPECIES_WRYN, SPECIES_VULPKANIN, SPECIES_VOX)) //Species that have facial hair. (No HAS_HAIR_FACIAL flag) + var/new_facial = tgui_input_color(user, "Choose your character's facial-hair colour:", "Character Preference", f_colour) + if(!isnull(new_facial)) f_colour = new_facial if("secondary_facial") - if(species in list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_MACNINEPERSON, SPECIES_VULPKANIN, SPECIES_VOX)) + if(species in list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_MACNINEPERSON, SPECIES_WRYN, SPECIES_VULPKANIN, SPECIES_VOX)) var/datum/sprite_accessory/facial_hair_style = GLOB.facial_hair_styles_list[f_style] if(facial_hair_style.secondary_theme && !facial_hair_style.no_sec_colour) - var/new_facial = input(user, "Choose your character's secondary facial-hair colour:", "Character Preference", f_sec_colour) as color|null - if(new_facial) + var/new_facial = tgui_input_color(user, "Choose your character's secondary facial-hair colour:", "Character Preference", f_sec_colour) + if(!isnull(new_facial)) f_sec_colour = new_facial if("f_style") @@ -2051,8 +2022,8 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts underwear = new_underwear if("underwear_color") - var/new_uwear_color = input(user, "Choose your character's underwear colour:", "Character Preference", underwear_color) as color|null - if(new_uwear_color) + var/new_uwear_color = tgui_input_color(user, "Choose your character's underwear colour:", "Character Preference", underwear_color) + if(!isnull(new_uwear_color)) underwear_color = new_uwear_color if("undershirt") @@ -2071,8 +2042,8 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts undershirt = new_undershirt if("undershirt_color") - var/new_ushirt_color = input(user, "Choose your character's undershirt colour:", "Character Preference", undershirt_color) as color|null - if(new_ushirt_color) + var/new_ushirt_color = tgui_input_color(user, "Choose your character's undershirt colour:", "Character Preference", undershirt_color) + if(!isnull(new_ushirt_color)) undershirt_color = new_ushirt_color if("socks") @@ -2091,8 +2062,8 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts socks = new_socks if("eyes") - var/new_eyes = input(user, "Choose your character's eye colour:", "Character Preference", e_colour) as color|null - if(new_eyes) + var/new_eyes = tgui_input_color(user, "Choose your character's eye colour:", "Character Preference", e_colour) + if(!isnull(new_eyes)) e_colour = new_eyes if("s_tone") @@ -2118,13 +2089,13 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts if("skin") if((S.bodyflags & HAS_SKIN_COLOR) || ((S.bodyflags & HAS_BODYACC_COLOR) && GLOB.body_accessory_by_species[species]) || check_rights(R_ADMIN, 0, user)) - var/new_skin = input(user, "Choose your character's skin colour: ", "Character Preference", s_colour) as color|null - if(new_skin) + var/new_skin = tgui_input_color(user, "Choose your character's skin colour: ", "Character Preference", s_colour) + if(!isnull(new_skin)) s_colour = new_skin if("ooccolor") - var/new_ooccolor = input(user, "Choose your OOC colour:", "Game Preference", ooccolor) as color|null - if(new_ooccolor) + var/new_ooccolor = tgui_input_color(user, "Choose your OOC colour:", "Game Preference", ooccolor) + if(!isnull(new_ooccolor)) ooccolor = new_ooccolor if("bag") @@ -2132,6 +2103,11 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts if(new_backbag) backbag = new_backbag + if("loadout") + var/datum/ui_module/loadout/loadout = new() + loadout.ui_interact(user) + return FALSE + if("nt_relation") var/new_relation = tgui_input_list(user, "Choose your relation to NT. Note that this represents what others can find out about your character by researching your background, not what your character actually thinks.", "Character Preference", list("Loyal", "Supportive", "Neutral", "Skeptical", "Opposed")) if(new_relation) @@ -2394,7 +2370,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts var/head_model = "[!rlimb_data["head"] ? "Morpheus Cyberkinetics" : rlimb_data["head"]]" robohead = GLOB.all_robolimbs[head_model] - h_style = random_hair_style(gender, species, robohead) + h_style = random_hair_style(gender, S, robohead) f_style = random_facial_hair_style(gender, species, robohead) m_styles["body"] = random_marking_style("body", species, gender = src.gender) @@ -2486,8 +2462,8 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts toggles2 ^= PREFTOGGLE_2_AFKWATCH if("UIcolor") - var/UI_style_color_new = input(user, "Choose your UI color, dark colors are not recommended!", UI_style_color) as color|null - if(!UI_style_color_new) return + var/UI_style_color_new = tgui_input_color(user, "Choose your UI color, dark colors are not recommended!", UI_style_color) + if(isnull(UI_style_color_new)) return UI_style_color = UI_style_color_new if(ishuman(usr)) //mid-round preference changes, for aesthetics @@ -2629,7 +2605,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts for(var/group_key as anything in my_hud.master_groups) var/datum/plane_master_group/group = my_hud.master_groups[group_key] - group.transform_lower_turfs(my_hud, my_hud.current_plane_offset) + group.build_planes_offset(my_hud, my_hud.current_plane_offset) if("parallax_multiz") toggles2 ^= PREFTOGGLE_2_PARALLAX_MULTIZ @@ -2639,7 +2615,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts for(var/group_key as anything in my_hud.master_groups) var/datum/plane_master_group/group = my_hud.master_groups[group_key] - group.transform_lower_turfs(my_hud, my_hud.current_plane_offset) + group.build_planes_offset(my_hud, my_hud.current_plane_offset) if("keybindings") if(!keybindings_overrides) @@ -2956,6 +2932,9 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts if((disabilities & DISABILITY_FLAG_PARAPLEGIA) && !(new_species.blacklisted_disabilities & DISABILITY_FLAG_PARAPLEGIA)) character.force_gene_block(GLOB.paraplegiablock, TRUE, TRUE) + if((disabilities & DISABILITY_FLAG_APHASIA) && !(new_species.blacklisted_disabilities & DISABILITY_FLAG_APHASIA)) + character.force_gene_block(GLOB.aphasiablock, TRUE, TRUE) + character.dna.species.handle_dna(character) if(character.dna.dirtySE) diff --git a/code/modules/client/preference/preferences_mysql.dm b/code/modules/client/preference/preferences_mysql.dm index a1d7b7c20452..e1d4c687a836 100644 --- a/code/modules/client/preference/preferences_mysql.dm +++ b/code/modules/client/preference/preferences_mysql.dm @@ -339,8 +339,9 @@ if(isnull(speciesprefs)) speciesprefs = initial(speciesprefs) if(!real_name) real_name = random_name(gender,species) be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name)) - gender = sanitize_gender(gender, FALSE, !SP.has_gender) - age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age)) + gender = sanitize_gender(gender, FALSE, !SP?.has_gender) + var/age_limits = get_age_limits(SP, list(SPECIES_AGE_MIN, SPECIES_AGE_MAX, JOB_MIN_AGE_COMMAND)) + age = sanitize_integer(age, age_limits[SPECIES_AGE_MIN], age_limits[SPECIES_AGE_MAX], age_limits[JOB_MIN_AGE_COMMAND]) h_colour = sanitize_hexcolor(h_colour) h_sec_colour = sanitize_hexcolor(h_sec_colour) f_colour = sanitize_hexcolor(f_colour) diff --git a/code/modules/client/preference/preferences_toggles.dm b/code/modules/client/preference/preferences_toggles.dm index a17aa8061146..5a53323992a6 100644 --- a/code/modules/client/preference/preferences_toggles.dm +++ b/code/modules/client/preference/preferences_toggles.dm @@ -400,6 +400,17 @@ disable_message = "You'll no longer see subsystem information in the verb panel." blackbox_message = "MC tabs toggled" +/datum/preference_toggle/toggle_split_admins_tabs + name = "Toggle Split Admins Tabs" + description = "Toggles Admins Tabs spliting" + preftoggle_bitflag = PREFTOGGLE_2_SPLIT_ADMIN_TABS + preftoggle_toggle = PREFTOGGLE_TOGGLE2 + preftoggle_category = PREFTOGGLE_CATEGORY_ADMIN + rights_required = R_ADMIN + enable_message = "Теперь ваши вербы разделены по подкатегориям." + disable_message = "Теперь ваши вербы не разделены по подкатегориям." + blackbox_message = "Split Admins Tabs toggled" + /datum/preference_toggle/special_toggle preftoggle_toggle = PREFTOGGLE_SPECIAL @@ -434,8 +445,8 @@ blackbox_message = "Set Own OOC" /datum/preference_toggle/special_toggle/set_ooc_color/set_toggles(client/user) - var/new_ooccolor = input(usr, "Please select your OOC color.", "OOC color", user.prefs.ooccolor) as color|null - if(new_ooccolor) + var/new_ooccolor = tgui_input_color(usr, "Please select your OOC color.", "OOC color", user.prefs.ooccolor) + if(!isnull(new_ooccolor)) user.prefs.ooccolor = new_ooccolor to_chat(usr, "Your OOC color has been set to [new_ooccolor].") else @@ -533,7 +544,7 @@ for(var/group_key as anything in my_hud.master_groups) var/datum/plane_master_group/group = my_hud.master_groups[group_key] - group.transform_lower_turfs(my_hud, my_hud.current_plane_offset) + group.build_planes_offset(my_hud, my_hud.current_plane_offset) /datum/preference_toggle/toggle_vote_popup name = "Toggle Vote Popup" @@ -590,3 +601,24 @@ enable_message = "You will see item description tips now." disable_message = "You will not see item description tips now." blackbox_message = "Toggle item description tips on hover" + +/datum/preference_toggle/toggle_take_out_of_the_round_without_obj + name = "Вывод из игры без цели" + description = "Переключает разрешение другим игрокам выводить вас из раунда без соответствующей цели." + preftoggle_bitflag = PREFTOGGLE_2_GIB_WITHOUT_OBJECTIVE + preftoggle_toggle = PREFTOGGLE_TOGGLE2 + preftoggle_category = PREFTOGGLE_CATEGORY_GENERAL + enable_message = "Другие игроки теперь имеют право выводить вас из раунда без цели." + disable_message = "Другие игроки больше не имеют права выводить вас из раунда без цели." + blackbox_message = "Переключение разрешения выводить игрока из раунда" + +/datum/preference_toggle/toggle_off_projectile_messages + name = "Выключить комбат логи выстрелов" + description = "Выключает большую часть сообщений, появляющихся при стрельбе." + preftoggle_bitflag = PREFTOGGLE_2_OFF_PROJECTILE_MESSAGES + preftoggle_toggle = PREFTOGGLE_TOGGLE2 + preftoggle_category = PREFTOGGLE_CATEGORY_GENERAL + enable_message = "Теперь вы не будете видить сообщения, появляющиеся при стрельбе." + disable_message = "Теперь вы будете видить сообщения, появляющиеся при стрельбе." + blackbox_message = "Переключение комбат логов от выстрелов" + diff --git a/code/modules/clothing/chameleon/generic_chameleon_clothing.dm b/code/modules/clothing/chameleon/generic_chameleon_clothing.dm index 135b23f2eb59..d30e5ea53214 100644 --- a/code/modules/clothing/chameleon/generic_chameleon_clothing.dm +++ b/code/modules/clothing/chameleon/generic_chameleon_clothing.dm @@ -220,6 +220,7 @@ do { \ SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_NEARA = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) var/obj/item/voice_changer/voice_changer diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index c8be76a2cb17..24182bd96c41 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -293,7 +293,7 @@ BLIND // can't see anything siemens_coefficient = 0.50 body_parts_covered = HANDS slot_flags = ITEM_SLOT_GLOVES - attack_verb = list("challenged") + attack_verb = list("на дуэль вызвал") clothing_flags = FINGERS_COVERED var/transfer_prints = FALSE var/pickpocket = FALSE //Master pickpocket? @@ -305,6 +305,10 @@ BLIND // can't see anything var/surgeryspeedmod = 0 /// Same as above, used for surgery modifiers var/toolspeedmod = 0 + /// Constant time of surgery step + var/surgery_step_time = null + /// Chance of germs transfering to organ + var/surgery_germ_chance = 100 strip_delay = 20 put_on_delay = 40 @@ -336,6 +340,23 @@ BLIND // can't see anything // Called just before an attack_hand(), in mob/UnarmedAttack() /obj/item/clothing/gloves/proc/Touch(atom/A, proximity) + if(!ishuman(loc)) + return FALSE //Only works while worn + + if(!ishuman(A)) + return FALSE + + if(!proximity) + return FALSE + + var/mob/living/carbon/human/human = loc + if(human.a_intent == INTENT_HELP) + if(!human.is_hands_free()) + balloon_alert(usr, "руки заняты!") + return FALSE + + return SEND_SIGNAL(src, COMSIG_GLOVES_DOUBLE_HANDS_TOUCH, A, usr) & COMPONENT_CANCEL_ATTACK_CHAIN + return FALSE // return TRUE to cancel attack_hand() @@ -371,34 +392,34 @@ BLIND // can't see anything if(user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) return if(user.pulledby && user.pulledby.grab_state >= GRAB_NECK) - to_chat(user, "You can't reach the controls.") + balloon_alert(user, "не добраться!") return if(has_sensor >= 2) - to_chat(user, "The controls are locked.") + balloon_alert(user, "датчики заблокированы!") return if(has_sensor <= 0) - to_chat(user, "This suit does not have any sensors.") + balloon_alert(user, "датчики отсутствуют!") return - var/list/modes = list("Off", "Binary sensors", "Vitals tracker", "Tracking beacon") - var/switchMode = tgui_input_list(user, "Select a sensor mode:", "Suit Sensor Mode", modes, modes[sensor_mode+1]) + var/list/modes = list("Выключены", "Бинарный режим", "Мониторинг жизненных показателей", "Полный мониторинг") + var/switchMode = tgui_input_list(user, "Выберите режим работы датчиков:", "Режим работы датчиков костюма", modes, modes[sensor_mode+1]) if(!switchMode) return if(get_dist(user, src) > 1) - to_chat(user, "You have moved too far away.") + balloon_alert(user, "слишком далеко!") return sensor_mode = modes.Find(switchMode) - 1 if(src.loc == user) switch(sensor_mode) if(0) - to_chat(user, "You disable your suit's remote sensing equipment.") + to_chat(user, "Вы отключаете датчики вашего костюма.") if(1) - to_chat(user, "Your suit will now report whether you are live or dead.") + to_chat(user, "Теперь датчики вашего костюма будут отслеживать, живы вы или мертвы.") if(2) - to_chat(user, "Your suit will now report your vital lifesigns.") + to_chat(user, "Теперь датчики вашего костюма будут отслеживать ваши жизненные показатели.") if(3) - to_chat(user, "Your suit will now report your vital lifesigns as well as your coordinate position.") + to_chat(user, "Теперь датчики вашего костюма будут отслеживать ваши жизненные показатели и местоположение.") if(ishuman(user)) var/mob/living/carbon/human/H = user if(H.w_uniform == src) @@ -408,23 +429,23 @@ BLIND // can't see anything switch(sensor_mode) if(0) for(var/mob/V in viewers(user, 1)) - V.show_message("[user] disables [src.loc]'s remote sensing equipment.", 1) + V.show_message(span_warning("[user] отключа[pluralize_ru(user.gender, "ет", "ют")] датчики [src.loc]."), 1) if(1) for(var/mob/V in viewers(user, 1)) - V.show_message("[user] turns [src.loc]'s remote sensors to binary.", 1) + V.show_message("[user] устанавлива[pluralize_ru(user.gender, "ет", "ют")] датчики [src.loc] в бинарный режим.", 1) if(2) for(var/mob/V in viewers(user, 1)) - V.show_message("[user] sets [src.loc]'s sensors to track vitals.", 1) + V.show_message("[user] устанавлива[pluralize_ru(user.gender, "ет", "ют")] датчики [src.loc] в режим мониторинга жизненных показателей.", 1) if(3) for(var/mob/V in viewers(user, 1)) - V.show_message("[user] sets [src.loc]'s sensors to maximum.", 1) + V.show_message("[user] устанавлива[pluralize_ru(user.gender, "ет", "ют")] датчики [src.loc] в режим мониторинга жизненных показателей и текущего местоположения.", 1) if(ishuman(src)) var/mob/living/carbon/human/H = src if(H.w_uniform == src) H.update_suit_sensors() /obj/item/clothing/under/verb/toggle() - set name = "Toggle Suit Sensors" + set name = "Переключение датчиков костюма" set category = "Object" set src in usr set_sensors(usr) @@ -1123,25 +1144,22 @@ BLIND // can't see anything handle_accessories_removal(usr) -/obj/item/clothing/under/AltClick(mob/user) - if(Adjacent(user)) - handle_accessories_removal(user) +/obj/item/clothing/under/click_alt(mob/user) + if(handle_accessories_removal(user)) + return CLICK_ACTION_SUCCESS + return CLICK_ACTION_BLOCKING /obj/item/clothing/under/proc/handle_accessories_removal(mob/user) - if(!isliving(user)) - return - if(user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) - return var/accessories_len = LAZYLEN(accessories) if(!accessories_len) to_chat(user, span_notice("There are no accessories attached to [src].")) - return + return FALSE var/obj/item/clothing/accessory/accessory if(accessories_len > 1) accessory = tgui_input_list(user, "Select an accessory to remove from [src]", "Accessory Removal", accessories) if(!accessory || !LAZYIN(accessories, accessory) || !Adjacent(user) || user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) - return + return FALSE else accessory = accessories[1] @@ -1149,6 +1167,7 @@ BLIND // can't see anything accessory.on_removed(user) if(!user.put_in_hands(accessory, ignore_anim = FALSE)) accessory.forceMove_turf() + return TRUE /obj/item/clothing/under/examine(mob/user) @@ -1156,20 +1175,20 @@ BLIND // can't see anything if(has_sensor) switch(sensor_mode) if(0) - . += span_notice("Its sensors appear to be disabled.") + . += span_notice("Датчики отключены.") if(1) - . += span_notice("Its binary life sensors appear to be enabled.") + . += span_notice("Датчики работают в бинарном режиме.") if(2) - . += span_notice("Its vital tracker appears to be enabled.") + . += span_notice("Датчики работают в режиме мониторинга жизненных показателей.") if(3) - . += span_notice("Its vital tracker and tracking beacon appear to be enabled.") + . += span_notice("Датчики работают в режиме мониторинга жизненных показателей и текущего местоположения.") for(var/obj/item/clothing/accessory/accessory as anything in accessories) . += accessory.attached_examine() /obj/item/clothing/under/verb/rollsuit() - set name = "Roll Down Jumpsuit" + set name = "Adjust suit style" set category = "Object" set src in usr @@ -1178,11 +1197,11 @@ BLIND // can't see anything var/mob/living/carbon/human/owner = usr if(owner.incapacitated() || HAS_TRAIT(owner, TRAIT_HANDS_BLOCKED)) - to_chat(owner, span_notice("You cannot roll down the uniform right now!")) + to_chat(owner, span_notice("You cannot adjust style of this uniform right now!")) return if(!can_adjust) - to_chat(owner, span_notice("You cannot roll down this uniform!")) + to_chat(owner, span_notice("You cannot adjust style of this uniform right now!")) return var/icon/our_icon = onmob_sheets[ITEM_SLOT_CLOTH_INNER_STRING] @@ -1192,7 +1211,7 @@ BLIND // can't see anything var/initial_state = replacetext(item_color, "_d", "") if(!icon_exists(our_icon, "[initial_state]_d_s")) - to_chat(owner, span_notice("You cannot roll down this uniform!")) + to_chat(owner, span_notice("You cannot adjust style of this uniform right now!")) return item_color = findtext(item_color, "_d") ? initial_state : "[initial_state]_d" diff --git a/code/modules/clothing/ears/ears.dm b/code/modules/clothing/ears/ears.dm index 10f291af7652..4d483f380609 100644 --- a/code/modules/clothing/ears/ears.dm +++ b/code/modules/clothing/ears/ears.dm @@ -9,3 +9,23 @@ strip_delay = 15 put_on_delay = 25 resistance_flags = FLAMMABLE + +/obj/item/clothing/ears/earrings + name = "Earrings" + desc = "Простые золотые серёжки" + icon_state = "earring_gold" + item_state = "earring_gold" + slot_flags = ITEM_SLOT_EARS + species_restricted = list(SPECIES_HUMAN, SPECIES_VOX, SPECIES_VULPKANIN, SPECIES_TAJARAN, SPECIES_DIONA, SPECIES_DRASK, SPECIES_SLIMEPERSON, SPECIES_SKRELL, SPECIES_MACNINEPERSON, SPECIES_MOTH, SPECIES_NUCLEATION) + +/obj/item/clothing/ears/earrings/Nt + name = "Earrings NT" + desc = "Золотые серьги с гравировкой НТ" + icon_state = "earring_NT" + item_state = "earring_NT" + +/obj/item/clothing/ears/earrings/silver + name = "Silver earings" + desc = "Простые серебряные серьги" + icon_state = "earring_silver" + item_state = "earring_silver" diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 4aa7b0db32fd..5f87184dd471 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -113,6 +113,12 @@ flash_protect = FLASH_PROTECTION_FLASH tint = 1 +/obj/item/clothing/glasses/meson/heart + name = "\improper Heart Meson Glasses" + desc = "Модные очки в форме сердечек с встроенным ИЛС под рабочие нужды." + icon_state = "heart_meson" + item_state = "heart_meson" + /obj/item/clothing/glasses/meson/night name = "Night Vision Optical Meson Scanner" desc = "An Optical Meson Scanner fitted with an amplified visible light spectrum overlay, providing greater visual clarity in darkness." @@ -134,7 +140,7 @@ force = 10 throwforce = 10 throw_speed = 4 - attack_verb = list("sliced") + attack_verb = list("полоснул") hitsound = 'sound/weapons/bladeslice.ogg' sharp = TRUE @@ -151,6 +157,19 @@ . = ..() ADD_TRAIT(src, TRAIT_NODROP, INNATE_TRAIT) +/obj/item/clothing/glasses/meson/visor + name = "Meson Optical Visor" + desc = "Технологичный визор для глаз. Корпус выполнен из прочного титана, а на лицевой части устройства расположены датчики, камеры и сенсоры, способные получать, обрабатывать и передавать на сетчатку носителя данные об окружающем пространстве." + ru_names = list( + NOMINATIVE = "мезонный оптический визор", + GENITIVE = "мезонного оптического визора", + DATIVE = "мезонному оптическому визору", + ACCUSATIVE = "мезонный оптический визор", + INSTRUMENTAL = "мезонным оптическим визором", + PREPOSITIONAL = "мезонном оптическом визоре" + ) + icon_state = "mesonvisor" + item_state = "mesonvisor" /obj/item/clothing/glasses/science name = "science goggles" @@ -186,6 +205,26 @@ see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE //don't render darkness while wearing these +/obj/item/clothing/glasses/science/heart + name = "\improper Heart Science Glasses" + desc = "Модные очки в форме сердечек с встроенным ИЛС под рабочие нужды." + icon_state = "heart_science" + item_state = "heart_science" + +/obj/item/clothing/glasses/science/visor + name = "Science Optical Visor" + desc = "Технологичный визор для глаз. Корпус выполнен из прочного титана, а на лицевой части устройства расположены датчики, камеры и сенсоры, способные получать, обрабатывать и передавать на сетчатку носителя данные об окружающем пространстве." + ru_names = list( + NOMINATIVE = "научный оптический визор", + GENITIVE = "научного оптического визора", + DATIVE = "научному оптическому визору", + ACCUSATIVE = "научный оптический визор", + INSTRUMENTAL = "научным оптическим визором", + PREPOSITIONAL = "научном оптическом визоре" + ) + icon_state = "sciencevisor" + item_state = "sciencevisor" + /obj/item/clothing/glasses/janitor name = "Janitorial Goggles" desc = "These'll keep the soap out of your eyes." diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index d1805c4db40b..e94b89f32810 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -13,6 +13,12 @@ if(!istype(user) || !HUDType || !(slot & (ITEM_SLOT_EYES|ITEM_SLOT_HEAD))) return . + if(islist(HUDType)) + for(var/new_hud in HUDType) + var/datum/atom_hud/hud = GLOB.huds[new_hud] + hud.add_hud_to(user) + return . + var/datum/atom_hud/hud = GLOB.huds[HUDType] hud.add_hud_to(user) @@ -22,6 +28,12 @@ if(!istype(user) || !HUDType || !(slot & (ITEM_SLOT_EYES|ITEM_SLOT_HEAD))) return . + if(islist(HUDType)) + for(var/new_hud in HUDType) + var/datum/atom_hud/hud = GLOB.huds[new_hud] + hud.remove_hud_from(user) + return . + var/datum/atom_hud/hud = GLOB.huds[HUDType] hud.remove_hud_from(user) @@ -82,6 +94,19 @@ MEDICAL lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE prescription_upgradable = FALSE +/obj/item/clothing/glasses/hud/health/heart + name = "\improper Heart Medical Glasses" + desc = "Модные очки в форме сердечек с встроенным ИЛС под рабочие нужды." + icon_state = "heart_med" + item_state = "heart_med" + +/obj/item/clothing/glasses/hud/health/patch + name = "\improper Medical HUD Eyepatch" + desc = "A heads-up eyepatch that scans the humans in view and provides accurate data about their health status." + icon_state = "medhudpatch" + item_state = "medhudpatch" + prescription_upgradable = FALSE + /obj/item/clothing/glasses/hud/health/sunglasses name = "medical sunglasses" desc = "Sunglasses with a medical HUD." @@ -118,6 +143,20 @@ MEDICAL /obj/item/clothing/glasses/hud/health/tajblind/attack_self(mob/user) toggle_veil(user) +/obj/item/clothing/glasses/hud/health/visor + name = "Medical optical visor" + desc = "Технологичный визор для глаз. Корпус выполнен из прочного титана, а на лицевой части устройства расположены датчики, камеры и сенсоры, способные получать, обрабатывать и передавать на сетчатку носителя данные об окружающем пространстве." + ru_names = list( + NOMINATIVE = "медицинский оптический визор", + GENITIVE = "медицинского оптического визора", + DATIVE = "медицинскому оптическому визору", + ACCUSATIVE = "медицинский оптический визор", + INSTRUMENTAL = "медицинским оптическим визором", + PREPOSITIONAL = "медицинском оптическом визоре" + ) + icon_state = "medicalvisor" + item_state = "medicalvisor" + /obj/item/clothing/glasses/hud/health/meson name = "\improper Medical-Meson HUD" desc = "A medical heads-up display that comes with an optical meson scanner." @@ -147,6 +186,19 @@ DIAGNOSTIC SPECIES_STOK = 'icons/mob/clothing/species/monkey/eyes.dmi' ) +/obj/item/clothing/glasses/hud/diagnostic/patch + name = "\improper Diagnostic HUD Eyepatch" + desc = "A heads-up eyepatch capable of analyzing the integrity and status of robotics and exosuits." + icon_state = "diaghudpatch" + item_state = "diaghudpatch" + prescription_upgradable = FALSE + +/obj/item/clothing/glasses/hud/diagnostic/heart + name = "\improper Heart Diagnostic Glasses" + desc = "Модные очки в форме сердечек с встроенным ИЛС под рабочие нужды." + icon_state = "heart_diagnostic" + item_state = "heart_diagnostic" + /obj/item/clothing/glasses/hud/diagnostic/night name = "\improper Night Vision Diagnostic HUD" desc = "A robotics diagnostic HUD fitted with a light amplifier." @@ -182,6 +234,19 @@ DIAGNOSTIC /obj/item/clothing/glasses/hud/diagnostic/tajblind/attack_self(mob/user) toggle_veil(user) +/obj/item/clothing/glasses/hud/diagnostic/visor + name = "Optical Diagnostic Visor" + desc = "Технологичный визор для глаз. Корпус выполнен из прочного титана, а на лицевой части устройства расположены датчики, камеры и сенсоры, способные получать, обрабатывать и передавать на сетчатку носителя данные об окружающем пространстве." + ru_names = list( + NOMINATIVE = "диагностический оптический визор", + GENITIVE = "диагностического оптического визора", + DATIVE = "диагностическому оптическому визору", + ACCUSATIVE = "диагностический оптический визор", + INSTRUMENTAL = "диагностическим оптическим визором", + PREPOSITIONAL = "диагностическом оптическом визоре" + ) + icon_state = "diagvisor" + item_state = "diagvisor" /* SECURITY */ @@ -206,6 +271,16 @@ SECURITY SPECIES_STOK = 'icons/mob/clothing/species/monkey/eyes.dmi' ) +/obj/item/clothing/glasses/hud/security/patch + name = "\improper Security HUD Eyepatch" + desc = "A heads-up eyepatch that scans the humans in view and provides accurate data about their ID status and security records." + icon_state = "sechudpatch" + item_state = "sechudpatch" + prescription_upgradable = FALSE + +/obj/item/clothing/glasses/hud/security/patch/read_only + examine_extensions = EXAMINE_HUD_SECURITY_READ + /obj/item/clothing/glasses/hud/security/read_only examine_extensions = EXAMINE_HUD_SECURITY_READ @@ -238,6 +313,15 @@ SECURITY SPECIES_STOK = 'icons/mob/clothing/species/monkey/eyes.dmi' ) +/obj/item/clothing/glasses/hud/security/sunglasses/heart + name = "\improper Heart Security Glasses" + desc = "Модные очки в форме сердечек с встроенным ИЛС под рабочие нужды." + icon_state = "heart_sec" + item_state = "heart_sec" + +/obj/item/clothing/glasses/hud/security/sunglasses/heart/read_only + examine_extensions = EXAMINE_HUD_SECURITY_READ + /obj/item/clothing/glasses/hud/security/sunglasses/tacticool name = "security tactical glasses" desc = "Ballistic glasses with a security HUD. Gives you tacticool protection and selfish increase. The elastic band allows it to be worn over a helmet." @@ -306,6 +390,20 @@ SECURITY /obj/item/clothing/glasses/hud/security/sunglasses/tajblind/read_only examine_extensions = EXAMINE_HUD_SECURITY_READ +/obj/item/clothing/glasses/hud/security/sunglasses/visor + name = "Security visor" + desc = "Технологичный визор для глаз. Корпус выполнен из прочного титана, а на лицевой части устройства расположены датчики, камеры и сенсоры, способные получать, обрабатывать и передавать на сетчатку носителя данные об окружающем пространстве. Также он защищает глаза от вспышек." + ru_names = list( + NOMINATIVE = "охранный оптический визор", + GENITIVE = "охранного оптического визора", + DATIVE = "охранному оптическому визору", + ACCUSATIVE = "охранный оптический визор", + INSTRUMENTAL = "охранным оптическим визором", + PREPOSITIONAL = "охранном оптическом визоре" + ) + icon_state = "securityvisor" + item_state = "securityvisor" + /* HYDROPONIC */ @@ -327,6 +425,19 @@ HYDROPONIC SPECIES_STOK = 'icons/mob/clothing/species/monkey/eyes.dmi' ) +/obj/item/clothing/glasses/hud/hydroponic/patch + name = "\improper Hydroponic HUD Eyepatch" + desc = "A heads-up eyepatch capable of analyzing the health and status of plants growing in hydro trays and soil." + icon_state = "hydrohudpatch" + item_state = "hydrohudpatch" + prescription_upgradable = FALSE + +/obj/item/clothing/glasses/hud/heart + name = "\improper Heart Hydroponic Glasses" + desc = "Модные очки в форме сердечек с встроенным ИЛС под рабочие нужды." + icon_state = "heart_hydro" + item_state = "heart_hydro" + /obj/item/clothing/glasses/hud/hydroponic/night name = "\improper Night Vision Hydroponic HUD" desc = "A hydroponic HUD fitted with a light amplifier." @@ -361,6 +472,19 @@ HYDROPONIC /obj/item/clothing/glasses/hud/hydroponic/tajblind/attack_self(mob/user) toggle_veil(user) +/obj/item/clothing/glasses/hud/hydroponic/visor + name = "Hydroponic Optical Visor" + desc = "Технологичный визор для глаз. Корпус выполнен из прочного титана, а на лицевой части устройства расположены датчики, камеры и сенсоры, способные получать, обрабатывать и передавать на сетчатку носителя данные об окружающем пространстве." + ru_names = list( + NOMINATIVE = "ботанический оптический визор", + GENITIVE = "ботанического оптического визора", + DATIVE = "ботаническому оптическому визору", + ACCUSATIVE = "ботанический оптический визор", + INSTRUMENTAL = "ботаническим оптическим визором", + PREPOSITIONAL = "ботаническом оптическом визоре" + ) + icon_state = "hydroponicvisor" + item_state = "hydroponicvisor" /* SKILLS */ @@ -383,6 +507,19 @@ SKILLS SPECIES_STOK = 'icons/mob/clothing/species/monkey/eyes.dmi' ) +/obj/item/clothing/glasses/hud/skills/patch + name = "\improper Skills HUD Eyepatch" + desc = "A heads-up eyepatch capable of showing the employment history records of NT crew members." + icon_state = "skillhudpatch" + item_state = "skillhudpatch" + prescription_upgradable = FALSE + +/obj/item/clothing/glasses/hud/skills/heart + name = "\improper Heart Skills Glasses" + desc = "Модные очки в форме сердечек с встроенным ИЛС под рабочие нужды." + icon_state = "heart_skill" + item_state = "heart_skill" + /obj/item/clothing/glasses/hud/skills/sunglasses name = "skills sunglasses" desc = "Sunglasses with a build-in skills HUD, showing the employment history of nearby NT crew members." @@ -418,3 +555,53 @@ SKILLS /obj/item/clothing/glasses/hud/skills/tajblind/attack_self(mob/user) toggle_veil(user) + +/obj/item/clothing/glasses/hud/blueshield + name = "multi-mode HUD glasses" + desc = "Солнечные очки с многорежимным проекционным дисплеем." + ru_names = list( + NOMINATIVE = "много-режимные HUD-очки", + GENITIVE = "много-режимных HUD-очков", + DATIVE = "много-режимным HUD-очкам", + ACCUSATIVE = "много-режимные HUD-очки", + INSTRUMENTAL = "много-режимными HUD-очками", + PREPOSITIONAL = "много-режимных HUD-очках" + ) + actions_types = list(/datum/action/item_action/switch_hud) + icon_state = "sunhudmed" + origin_tech = "magnets=4;combat=4;engineering=4;biotech=4" + see_in_dark = 1 + flash_protect = FLASH_PROTECTION_FLASH + tint = 1 + HUDType = DATA_HUD_MEDICAL_ADVANCED + +/obj/item/clothing/glasses/hud/blueshield/attack_self(mob/user) + if(HUDType) + var/datum/atom_hud/H = GLOB.huds[HUDType] + H.remove_hud_from(user) + switch(HUDType) + if(DATA_HUD_MEDICAL_ADVANCED) + HUDType = DATA_HUD_SECURITY_BASIC + examine_extensions = EXAMINE_HUD_SKILLS + if(DATA_HUD_SECURITY_ADVANCED) + HUDType = DATA_HUD_MEDICAL_ADVANCED + examine_extensions = EXAMINE_HUD_MEDICAL + else + HUDType = DATA_HUD_SECURITY_ADVANCED + examine_extensions = EXAMINE_HUD_SECURITY_READ | EXAMINE_HUD_SECURITY_WRITE + balloon_alert(user, "режим переключён") + return + +/obj/item/clothing/glasses/hud/skills/visor + name = "Skill Optical Visor" + desc = "Технологичный визор для глаз. Корпус выполнен из прочного титана, а на лицевой части устройства расположены датчики, камеры и сенсоры, способные получать, обрабатывать и передавать на сетчатку носителя данные об окружающем пространстве." + ru_names = list( + NOMINATIVE = "оптический визор навыков", + GENITIVE = "оптического визора навыков", + DATIVE = "оптическому визору навыков", + ACCUSATIVE = "оптический визор навыков", + INSTRUMENTAL = "оптическим визором навыков", + PREPOSITIONAL = "оптическом визоре навыков" + ) + icon_state = "skillvisor" + item_state = "skillvisor" diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index d3a911963fcd..484f88d57957 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -2,8 +2,17 @@ dying_key = DYE_REGISTRY_GLOVES /obj/item/clothing/gloves/color/yellow - desc = "These gloves will protect the wearer from electric shock." name = "insulated gloves" + desc = "These gloves will protect the wearer from electric shock." + ru_names = list( + NOMINATIVE = "изоляционные перчатки", + GENITIVE = "изоляционных перчаток", + DATIVE = "изоляционным перчаткам", + ACCUSATIVE = "изоляционные перчатки", + INSTRUMENTAL = "изоляционными перчатками", + PREPOSITIONAL = "изоляционных перчатках" + ) + gender = PLURAL icon_state = "yellow" item_state = "ygloves" belt_icon = "ygloves" @@ -145,7 +154,7 @@ desc = "Pair of gloves with some protection" icon_state = "armored_gloves" item_state = "armored_gloves" - armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + armor = list("melee" = 5, "bullet" = 25, "laser" = 10, "energy" = 5, "bomb" = 5, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 75) can_be_cut = FALSE sprite_sheets = list( SPECIES_VOX = 'icons/mob/clothing/species/vox/gloves.dmi', @@ -270,6 +279,42 @@ item_color = "modified" surgeryspeedmod = -0.3 +/obj/item/clothing/gloves/color/latex/inugami + name = "medical gloves Inugami" + desc = "Прототип медицинских перчаток, оснащённых наночипами, что значительно повышают эффективность работы носителя во время проведения хирургических операций." + ru_names = list( + NOMINATIVE = "медицинские перчатки Inugami", + GENITIVE = "медицинских перчаток Inugami", + DATIVE = "медицинским перчаткам Inugami", + ACCUSATIVE = "медицинские перчатки Inugami", + INSTRUMENTAL = "медицинскими перчатками Inugami", + PREPOSITIONAL = "медицинских перчатках Inugami", + ) + icon_state = "inugami_gl" + item_state = "inugami_gl" + item_color = null + surgery_step_time = 0.5 SECONDS + surgery_germ_chance = 50 + +/obj/item/clothing/gloves/color/latex/inugami/ComponentInitialize() + . = ..() + AddComponent(/datum/component/defib, ignore_hardsuits = TRUE, safe_by_default = TRUE, emp_proof = TRUE, emag_proof = TRUE) + +/obj/item/clothing/gloves/color/latex/inugami/equipped(mob/living/carbon/human/user, slot, initial) + . = ..() + if(slot == ITEM_SLOT_GLOVES) + RegisterSignal(user, COMSIG_SURGERY_STEP_INIT, PROC_REF(on_surgery_step_init)) + else + UnregisterSignal(user, COMSIG_SURGERY_STEP_INIT) + +/obj/item/clothing/gloves/color/latex/inugami/dropped(mob/living/carbon/human/user, slot, silent) + . = ..() + UnregisterSignal(user, COMSIG_SURGERY_STEP_INIT) + +/obj/item/clothing/gloves/color/latex/inugami/proc/on_surgery_step_init(user, time_pointer) + SIGNAL_HANDLER + *time_pointer = surgery_step_time + /obj/item/clothing/gloves/color/white name = "white gloves" desc = "These look pretty fancy." @@ -294,4 +339,4 @@ heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT strip_delay = 60 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 50) + armor = list("melee" = 15, "bullet" = 15, "laser" = 15, "energy" = 30, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 75, "acid" = 75) diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 1c051689a337..ca6ab08228fc 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -15,10 +15,47 @@ /obj/item/clothing/gloves/fingerless/weaver name = "weaver chitin gloves" - desc = "Grey gloves without fingertips made from the hide of a dead arachnid found on lavaland. Makes wearer stronger in disarming ability." + desc = "Серые беспалые перчатки, сделанные из шкуры мёртвого паукообразного, найденного на Лаваленде. Лёгкие и удобные, они позволяют владельцу драться эффективнее в рукопашном бою." + ru_names = list( + NOMINATIVE = "перчатки из хитина ткача", + GENITIVE = "перчаток из хитина ткача", + DATIVE = "перчаткам из хитина ткача", + ACCUSATIVE = "перчатки из хитина ткача", + INSTRUMENTAL = "перчатками из хитина ткача", + PREPOSITIONAL = "перчатках из хитина ткача" + ) icon_state = "weaver_chitin" item_state = "weaver_chitin" - extra_knock_chance = 5 + extra_knock_chance = 20 + var/stamdamage_low = 10 + var/stamdamage_high = 15 + +/obj/item/clothing/gloves/fingerless/weaver/Touch(atom/A, proximity) + . = FALSE + if(!ishuman(loc)) + return FALSE + + var/mob/living/carbon/human/user = loc + if(!user.mind || user.mind.martial_art) + return FALSE + + if(user.a_intent != INTENT_HARM || !proximity || isturf(A)) + return FALSE + + var/damage = rand(user.dna.species.punchdamagelow + user.physiology.punch_damage_low, user.dna.species.punchdamagehigh + user.physiology.punch_damage_high) + var/stamindamage = rand(stamdamage_low, stamdamage_high) + if(ishuman(A)) + user.do_attack_animation(A, "kick") + playsound(get_turf(user), 'sound/effects/hit_punch.ogg', 50, 1, -1) + var/mob/living/carbon/human/target = A + var/obj/item/organ/external/affecting = target.get_organ(ran_zone(user.zone_selected)) + add_attack_logs(user, target, "Melee attacked with weaver gloves") + + target.visible_message(span_danger("[user] сокруша[pluralize_ru(user.gender, "ет", "ют")] [target] [declent_ru(INSTRUMENTAL)]!")) + + target.apply_damage(damage, BRUTE, affecting) + target.apply_damage(stamindamage, STAMINA, affecting) + return TRUE /obj/item/clothing/gloves/cyborg desc = "beep boop borp" @@ -35,8 +72,8 @@ transfer_prints = FALSE /obj/item/clothing/gloves/combat - desc = "These tactical gloves are both insulated and offer protection from heat sources." name = "combat gloves" + desc = "These tactical gloves are both insulated and offer melee protection." icon_state = "combat" item_state = "swat_gl" siemens_coefficient = 0 @@ -47,7 +84,22 @@ heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT resistance_flags = NONE - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50) + armor = list("melee" = 25, "bullet" = 5, "laser" = 5, "energy" = 10, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 70) + +/obj/item/clothing/gloves/combat/riot + name = "riot gloves" + desc = "These riot gloves are both insulated and offer melee protection." + icon_state = "riotgloves" + item_state = "riotgloves" + sprite_sheets = list( + SPECIES_VOX = 'icons/mob/clothing/species/vox/gloves.dmi', + SPECIES_DRASK = 'icons/mob/clothing/species/drask/gloves.dmi', + SPECIES_MONKEY = 'icons/mob/clothing/species/monkey/gloves.dmi', + SPECIES_FARWA = 'icons/mob/clothing/species/monkey/gloves.dmi', + SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/gloves.dmi', + SPECIES_NEARA = 'icons/mob/clothing/species/monkey/gloves.dmi', + SPECIES_STOK = 'icons/mob/clothing/species/monkey/gloves.dmi' + ) /obj/item/clothing/gloves/bracer name = "bone bracers" @@ -62,7 +114,7 @@ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT resistance_flags = NONE - armor = list("melee" = 15, "bullet" = 25, "laser" = 15, "energy" = 15, "bomb" = 20, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0) + armor = list("melee" = 25, "bullet" = 30, "laser" = 20, "energy" = 25, "bomb" = 35, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0) /obj/item/clothing/gloves/botanic_leather desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin." @@ -98,7 +150,16 @@ /obj/item/clothing/gloves/color/yellow/stun name = "stun gloves" - desc = "Horrendous and awful. It smells like cancer. The fact it has wires attached to it is incidental." + desc = "Эти перчатки не защитят ваших врагов от электрического удара." + ru_names = list( + NOMINATIVE = "оглушающие перчатки", + GENITIVE = "оглушающих перчаток", + DATIVE = "оглушающим перчаткам", + ACCUSATIVE = "оглушающие перчатки", + INSTRUMENTAL = "оглушающими перчатками", + PREPOSITIONAL = "оглушающих перчатках" + ) + gender = PLURAL var/obj/item/stock_parts/cell/cell = null var/stun_strength = 2 SECONDS var/stun_cost = 1500 @@ -129,13 +190,13 @@ do_sparks(5, 0, loc) playsound(loc, 'sound/weapons/egloves.ogg', 50, TRUE, -1) H.do_attack_animation(C) - visible_message("[C] has been touched with [src] by [H]!") + visible_message(span_danger("[H] дотрагива[pluralize_ru(H.gender, "ет", "ют")]ся [declent_ru(INSTRUMENTAL)] до [C]!")) add_attack_logs(H, C, "Touched with stun gloves") C.Weaken(stun_strength) C.Stuttering(stun_strength) C.apply_damage(20, STAMINA) else - to_chat(H, "Not enough charge!") + balloon_alert(H, "недостаточно заряда!") return TRUE return FALSE @@ -151,11 +212,11 @@ if(istype(I, /obj/item/stock_parts/cell)) add_fingerprint(user) if(cell) - to_chat(user, span_warning("The [name] already has a cell.")) + balloon_alert(user, "батарея уже установлена!") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You attach [I] to [src].")) + balloon_alert(user, "присоединено") cell = I update_icon(UPDATE_OVERLAYS) return ATTACK_CHAIN_BLOCKED_ALL @@ -168,7 +229,7 @@ if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return if(cell) - to_chat(user, "You cut [cell] away from [src].") + balloon_alert(user, "отсоединено") cell.forceMove(get_turf(loc)) cell = null update_icon(UPDATE_OVERLAYS) @@ -386,7 +447,7 @@ name = "SWAT gloves" icon_state = "swat_gloves" item_state = "nt_swat_gl" - armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 50) + armor = list("melee" = 15, "bullet" = 15, "laser" = 15, "energy" = 15, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 75) sprite_sheets = list( SPECIES_VOX = 'icons/mob/clothing/species/vox/gloves.dmi', SPECIES_DRASK = 'icons/mob/clothing/species/drask/gloves.dmi', diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index cc5bd1bacea8..792386969be6 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -126,8 +126,9 @@ dog_fashion = null sprite_sheets = list( SPECIES_VOX = 'icons/mob/clothing/species/vox/helmet.dmi', + SPECIES_GREY = 'icons/mob/clothing/species/grey/helmet.dmi', SPECIES_VULPKANIN = 'icons/mob/clothing/species/vulpkanin/helmet.dmi' - ) + ) /obj/item/clothing/head/helmet/riot/knight name = "medieval helmet" @@ -317,7 +318,7 @@ desc = "An intimidating tribal helmet, it doesn't look very comfortable." flags_inv = parent_type::flags_inv|HIDEMASK|HIDENAME flags_cover = HEADCOVERSEYES - armor = list("melee" = 35, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) + armor = list("melee" = 45, "bullet" = 30, "laser" = 30, "energy" = 20, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) icon_state = "skull" item_state = "skull" strip_delay = 100 @@ -471,3 +472,30 @@ SPECIES_NEARA = 'icons/mob/clothing/species/monkey/head.dmi', SPECIES_STOK = 'icons/mob/clothing/species/monkey/head.dmi' ) + +/obj/item/clothing/head/helmet/biker + name = "Motorcycle helmet" + desc = "Самый обычный мотоциклетный шлем." + armor = list("melee" = 25, "bullet" = 10, "laser" = 30, "energy" = 30, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 0) + icon_state = "biker" + item_state = "biker" + flags_inv = HIDEMASK|HIDEHEADSETS|HIDEGLASSES|HIDEHAIR + flags_cover = HEADCOVERSEYES|HEADCOVERSMOUTH + color = "#161515" + sprite_sheets = list( + SPECIES_MONKEY = 'icons/mob/clothing/species/monkey/head.dmi' + ) + species_restricted = list(SPECIES_HUMAN, SPECIES_SLIMEPERSON, SPECIES_SKELETON, SPECIES_NUCLEATION, SPECIES_MACNINEPERSON, SPECIES_DIONA, SPECIES_SHADOW_BASIC, SPECIES_MONKEY) + +/obj/item/clothing/head/helmet/biker/Initialize(mapload) + . = ..() + update_icon(UPDATE_OVERLAYS) + +/obj/item/clothing/head/helmet/biker/ComponentInitialize() + . = ..() + AddComponent(/datum/component/spraycan_paintable) + +/obj/item/clothing/head/helmet/biker/update_overlays() + . = ..() + var/mutable_appearance/biker_overlay = mutable_appearance(icon='icons/obj/clothing/hats.dmi', icon_state = "biker_overlay") + . += biker_overlay diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 9e3fc8535d13..7d34343f0993 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -466,7 +466,7 @@ throw_speed = 2 throw_range = 5 w_class = WEIGHT_CLASS_SMALL - attack_verb = list("warned", "cautioned", "smashed") + attack_verb = list("предупредил", "насторожил") resistance_flags = NONE dog_fashion = /datum/dog_fashion/head/cone @@ -596,6 +596,61 @@ icon_state = "shamskull" species_restricted = list(SPECIES_UNATHI, SPECIES_ASHWALKER_BASIC, SPECIES_ASHWALKER_SHAMAN, SPECIES_DRACONOID) +/obj/item/clothing/head/scorched_skull + name = "scorched skull" + desc = "Голова мёртвого всадника, очищенная от чешуи, крови и внутренних органов во время разделки. Вселяет страх в ваших врагов." + ru_names = list( + NOMINATIVE = "обожжённый череп", + GENITIVE = "обожжённого черепа", + DATIVE = "обожжённому черепу", + ACCUSATIVE = "обожжённый череп", + INSTRUMENTAL = "обожжённым черепом", + PREPOSITIONAL = "обожжённом черепе" + ) + icon_state = "scorched_skull" + item_state = "scorched_skull" + armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 10, BIO = 0, RAD = 0, FIRE = 60, ACID = 60) + w_class = WEIGHT_CLASS_TINY + flags_cover = HEADCOVERSEYES + flags_inv = HIDENAME|HIDEHAIR + sprite_sheets = list( + SPECIES_VOX = 'icons/mob/clothing/species/vox/helmet.dmi', + SPECIES_DRASK = 'icons/mob/clothing/species/drask/head.dmi', + SPECIES_GREY = 'icons/mob/clothing/species/grey/head.dmi', + SPECIES_MONKEY = 'icons/mob/clothing/species/monkey/head.dmi', + SPECIES_FARWA = 'icons/mob/clothing/species/monkey/head.dmi', + SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/head.dmi', + SPECIES_NEARA = 'icons/mob/clothing/species/monkey/head.dmi', + SPECIES_STOK = 'icons/mob/clothing/species/monkey/head.dmi' + ) + +/obj/item/clothing/head/roach + name = "roach" + desc = "Символ шамана племени, визуально отличающий его от соплеменников. Ценится как трофей среди шахтёров." + ru_names = list( + NOMINATIVE = "роуч", + GENITIVE = "роуча", + DATIVE = "роучу", + ACCUSATIVE = "роуч", + INSTRUMENTAL = "роучем", + PREPOSITIONAL = "роуче" + ) + icon_state = "roach" + item_state = "roach" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' + sprite_sheets = list( + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/head.dmi', + SPECIES_GREY = 'icons/mob/clothing/species/grey/head.dmi', + SPECIES_MONKEY = 'icons/mob/clothing/species/monkey/head.dmi', + SPECIES_KIDAN = 'icons/mob/clothing/species/kidan/head.dmi', + SPECIES_VOX = 'icons/mob/clothing/species/vox/head.dmi', + SPECIES_UNATHI = 'icons/mob/clothing/species/unathi/head.dmi', + SPECIES_DRASK = 'icons/mob/clothing/species/drask/head.dmi', + SPECIES_TAJARAN = 'icons/mob/clothing/species/tajaran/head.dmi', + SPECIES_VULPKANIN = 'icons/mob/clothing/species/vulpkanin/head.dmi', + ) + /obj/item/clothing/head/mr_chang_band name = "Tight headband" desc = "It is a safety tool, designed to prevent all marketing and selling techniques from escaping the wearers skull. Handle with care." diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm index 251bebffc062..2b9de4384870 100644 --- a/code/modules/clothing/masks/boxing.dm +++ b/code/modules/clothing/masks/boxing.dm @@ -24,7 +24,8 @@ SPECIES_FARWA = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_NEARA = 'icons/mob/clothing/species/monkey/mask.dmi', - SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi' + SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) @@ -54,7 +55,8 @@ SPECIES_FARWA = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_NEARA = 'icons/mob/clothing/species/monkey/mask.dmi', - SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi' + SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) /obj/item/clothing/mask/luchador/tecnicos diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index 60740bcd960a..4c07fcc5fed1 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -27,19 +27,16 @@ SPECIES_FARWA = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_NEARA = 'icons/mob/clothing/species/monkey/mask.dmi', - SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi' + SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) /obj/item/clothing/mask/breath/attack_self(mob/user) adjustmask(user) -/obj/item/clothing/mask/breath/AltClick(mob/living/user) - if(!istype(user) || !Adjacent(user)) - return - if(user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) - to_chat(user, "You can't do that right now!") - return +/obj/item/clothing/mask/breath/click_alt(mob/living/user) adjustmask(user) + return CLICK_ACTION_SUCCESS /obj/item/clothing/mask/breath/medical desc = "A close-fitting sterile mask that can be connected to an air supply." @@ -61,5 +58,5 @@ /obj/item/clothing/mask/breath/vox/attack_self(mob/user) return -/obj/item/clothing/mask/breath/vox/AltClick(mob/user) - return +/obj/item/clothing/mask/breath/vox/click_alt(mob/user) + return NONE diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 0e729aa78150..b6c36769e463 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -26,7 +26,8 @@ SPECIES_FARWA = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_NEARA = 'icons/mob/clothing/species/monkey/mask.dmi', - SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi' + SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) // **** Welding gas mask **** @@ -79,7 +80,8 @@ SPECIES_FARWA = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_NEARA = 'icons/mob/clothing/species/monkey/mask.dmi', - SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi' + SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) @@ -187,7 +189,8 @@ icon_state = "rainbow" item_state = "rainbow" sprite_sheets = list( - SPECIES_VULPKANIN = 'icons/mob/clothing/species/vulpkanin/head.dmi' + SPECIES_VULPKANIN = 'icons/mob/clothing/species/vulpkanin/head.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) /obj/item/clothing/mask/gas/clownwiz @@ -371,6 +374,23 @@ . = ..() force_adjust_mask() +/obj/item/clothing/mask/gas/sechailer/tactical + name = "\improper Security gas mask FCO-26" + desc = "Тактический противогаз чёрного цвета с красными обзорными стёклами. Разработан компанией N&R специально для сотрудников станционной службы безопасности Nanotrasen. Обеспечивает защиту лица, глаз и органов дыхания от неблагоприятных условий внешей среды." + ru_names = list( + NOMINATIVE = "тактический противогаз СБ", + GENITIVE = "тактического противогаза СБ", + DATIVE = "тактическому противогазу СБ", + ACCUSATIVE = "тактический противогаз СБ", + INSTRUMENTAL = "тактическим противогазом СБ", + PREPOSITIONAL = "тактическом противогазе СБ" + ) + icon_state = "tactical_mask" + armor = list("melee" = 10, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 10, "acid" = 30) + aggressiveness = 3 + phrase = 12 + can_toggle = FALSE + actions_types = list(/datum/action/item_action/halt, /datum/action/item_action/selectphrase) /obj/item/clothing/mask/gas/sechailer/hos name = "\improper HOS SWAT mask" @@ -392,7 +412,6 @@ can_toggle = FALSE actions_types = list(/datum/action/item_action/halt, /datum/action/item_action/selectphrase) - /obj/item/clothing/mask/gas/sechailer/swat name = "\improper SWAT mask" desc = "A close-fitting tactical mask with an especially aggressive Compli-o-nator 3000." @@ -504,8 +523,8 @@ to_chat(user, span_warning("You have cut off the voice modulator, the mask is broken now.")) -/obj/item/clothing/mask/gas/sechailer/attack_self() - halt() +/obj/item/clothing/mask/gas/sechailer/attack_self(mob/user) + adjustmask(user) /obj/item/clothing/mask/gas/sechailer/emag_act(mob/user) if(safety) @@ -533,3 +552,53 @@ // ******************************************************************** + +/obj/item/clothing/mask/gas/ghostface + name = "Ghostface mask" + desc = "Вытянутая белая маска, рот которой открыт в немом крике. Но вот в чём вопрос - ужаса, или ярости?" + ru_names = list( + NOMINATIVE = "кричащая маска", + GENITIVE = "кричащей маски", + DATIVE = "кричащей маске", + ACCUSATIVE = "кричащую маску", + INSTRUMENTAL = "кричащей маской", + PREPOSITIONAL = "кричащей маске" + ) + icon_state = "ghostface_mask" + item_state = "mime" + flags_inv = HIDEGLASSES + flags_cover = HIDENAME|MASKCOVERSMOUTH|MASKCOVERSEYES + species_restricted = list(SPECIES_HUMAN, SPECIES_MACNINEPERSON, SPECIES_SKRELL, SPECIES_SLIMEPERSON, SPECIES_DIONA, SPECIES_NUCLEATION) + +/obj/item/clothing/mask/gas/ghostface/equipped(mob/user, slot, initial) + if(ishuman(user)) + if(slot == ITEM_SLOT_MASK) + var/mob/living/carbon/human/H = user + H.name_override = "Ghostface" + . = ..() + +/obj/item/clothing/mask/gas/ghostface/dropped(mob/user, slot, silent = FALSE) + if(ishuman(user)) + if(slot == ITEM_SLOT_MASK) + var/mob/living/carbon/human/H = user + if(H.name_override == "Ghostface") + H.name_override = FALSE + . = ..() + +/obj/item/clothing/mask/gas/ghostface/true + armor = list(melee = 30, bullet = 10, laser = 5, energy = 5, bomb = 0, bio = 0, rad = 0, fire = 10, acid = 10) + var/obj/item/voice_changer/ghostface/voice_changer + +/obj/item/clothing/mask/gas/ghostface/true/devil + icon_state = "devil_ghostface_mask" + +/obj/item/clothing/mask/gas/ghostface/true/Initialize(mapload) + . = ..() + voice_changer = new(src) + +/obj/item/clothing/mask/gas/ghostface/true/Destroy() + QDEL_NULL(voice_changer) + return ..() + +/obj/item/clothing/mask/gas/ghostface/devil + icon_state = "devil_ghostface_mask" diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 64f226b705bb..3993acea1ccf 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -19,7 +19,8 @@ SPECIES_FARWA = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_NEARA = 'icons/mob/clothing/species/monkey/mask.dmi', - SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi' + SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) // Clumsy folks can't take the mask off themselves. @@ -249,7 +250,8 @@ SPECIES_FARWA = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_NEARA = 'icons/mob/clothing/species/monkey/mask.dmi', - SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi' + SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) @@ -474,9 +476,34 @@ icon_state = "pennywise_mask" item_state = "pennywise_mask" sprite_sheets = list( - SPECIES_VULPKANIN = 'icons/mob/clothing/species/vulpkanin/head.dmi' + SPECIES_VULPKANIN = 'icons/mob/clothing/species/vulpkanin/head.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) +/obj/item/clothing/mask/gas/clown_hat/sweettooth + name = "Sweet Tooth Mask" + desc = "Брутальная маска клоуна. Она до сих пор пахнет цирком. И керосином." + icon_state = "sweettooth_mask" + item_state = "sweettooth_mask" + ru_names = list( + NOMINATIVE = "Маска Сладкоежки", + GENITIVE = "Маски Сладкоежки", + DATIVE = "Маске Сладкоежки", + ACCUSATIVE = "Маску Сладкоежки", + INSTRUMENTAL = "Маской Сладкоежки", + PREPOSITIONAL = "Маске Сладкоежки" + ) + sprite_sheets = list( + SPECIES_UNATHI = 'icons/mob/clothing/species/unathi/mask.dmi', + SPECIES_TAJARAN = 'icons/mob/clothing/species/tajaran/mask.dmi', + SPECIES_VULPKANIN = 'icons/mob/clothing/species/vulpkanin/mask.dmi', + SPECIES_VOX = 'icons/mob/clothing/species/vox/mask.dmi', + SPECIES_MONKEY = 'icons/mob/clothing/species/monkey/mask.dmi', + SPECIES_DRASK = 'icons/mob/clothing/species/drask/mask.dmi', + SPECIES_GREY = 'icons/mob/clothing/species/grey/mask.dmi', + SPECIES_KIDAN = 'icons/mob/clothing/species/kidan/mask.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' + ) /obj/item/clothing/mask/gas/clown_hat/rockso name = "Rockso Mask" @@ -504,7 +531,7 @@ w_class = WEIGHT_CLASS_TINY flags_inv = HIDENAME|HIDEFACIALHAIR adjusted_slot_flags = ITEM_SLOT_HEAD - adjusted_flags_inv = HIDENAME|HIDEFACIALHAIR|HIDEHEADHAIR + adjusted_flags_inv = HIDENAME|HIDEFACIALHAIR can_toggle = TRUE sprite_sheets = list( SPECIES_VOX = 'icons/mob/clothing/species/vox/mask.dmi', diff --git a/code/modules/clothing/neck/ponchos.dm b/code/modules/clothing/neck/ponchos.dm index a85a5f3582cd..2964635a8577 100644 --- a/code/modules/clothing/neck/ponchos.dm +++ b/code/modules/clothing/neck/ponchos.dm @@ -29,10 +29,11 @@ icon_state = "[item_color]poncho[flipped ? "_flip" : ""]" -/obj/item/clothing/neck/poncho/AltClick(mob/living/carbon/human/user) +/obj/item/clothing/neck/poncho/click_alt(mob/living/carbon/human/user) if(!(src in user)) - return ..() + return NONE flip(user) + return CLICK_ACTION_SUCCESS /obj/item/clothing/neck/poncho/verb/flip_poncho() diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm index ffcf4db18ba4..92bd0417e298 100644 --- a/code/modules/clothing/shoes/colour.dm +++ b/code/modules/clothing/shoes/colour.dm @@ -154,3 +154,32 @@ return ..() + +/obj/item/clothing/shoes/convers + name = "black convers" + desc = "Пара высоких чёрных кед, сделанных по последнему писку моды. Выглядят просто отпадно." + ru_names = list( + NOMINATIVE = "чёрные высокие кеды", + GENITIVE = "чёрных высоких кедов", + DATIVE = "чёрным высоким кедам", + ACCUSATIVE = "чёрные высокие кеды", + INSTRUMENTAL = "чёрными высокими кедами", + PREPOSITIONAL = "чёрных высоких кедах" + ) + icon_state = "blackconvers" + item_state = "blackconvers" + +/obj/item/clothing/shoes/convers/red + name = "red convers" + desc = "Пара высоких красных кед, сделанных по последнему писку моды. Выглядят просто отпадно." + ru_names = list( + NOMINATIVE = "красные высокие кеды", + GENITIVE = "красных высоких кедов", + DATIVE = "красным высоким кедам", + ACCUSATIVE = "красные высокие кеды", + INSTRUMENTAL = "красными высокими кедами", + PREPOSITIONAL = "красных высоких кедах" + ) + icon_state = "redconvers" + item_state = "redconvers" + diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index 4041b6944b47..5502540f9678 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -83,6 +83,10 @@ origin_tech = null resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF +/obj/item/clothing/shoes/magboots/advance/Initialize(mapload) + . = ..() + AddElement(/datum/element/high_value_item) + /obj/item/clothing/shoes/magboots/syndie desc = "Reverse-engineered magnetic boots that have a heavy magnetic pull. Property of Gorlex Marauders." name = "blood-red magboots" @@ -100,8 +104,16 @@ active_traits = list(TRAIT_NEGATES_GRAVITY, TRAIT_NO_SLIP_ICE, TRAIT_NO_SLIP_WATER, TRAIT_NO_SLIP_SLIDE, TRAIT_GUSTPROTECTION) /obj/item/clothing/shoes/magboots/clown - desc = "The prankster's standard-issue clowning shoes. Damn they're huge! There's a red light on the side." name = "clown shoes" + desc = "Это обычные башмаки клоуна. Чёрт возьми, они такие огромные! Сбоку мигает красная лампочка." + ru_names = list( + NOMINATIVE = "клоунские башмаки", + GENITIVE = "клоунских башмаков", + DATIVE = "клоунским башмакам", + ACCUSATIVE = "клоунские башмаки", + INSTRUMENTAL = "клоунскими башмаками", + PREPOSITIONAL = "клоунских башмаках" + ) icon_state = "clownmag0" base_icon_state = "clownmag" item_state = "clown_shoes" @@ -133,13 +145,13 @@ if(!isliving(user) || user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) return if(user.get_active_hand() != src) - to_chat(user, "You must hold [src] in your hand to do this.") + balloon_alert(user, "нужно держать в руках!") return if(!enabled_waddle) - to_chat(user, "You switch off the waddle dampeners!") + balloon_alert(user, "развалочка включена") enabled_waddle = TRUE else - to_chat(user, "You switch on the waddle dampeners!") + balloon_alert(user, "развалочка выключена") enabled_waddle = FALSE /obj/item/clothing/shoes/magboots/wizard //bundled with the wiz hardsuit diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 2607eaf7ec11..c4970a9073e9 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -16,6 +16,26 @@ pickup_sound = 'sound/items/handling/boots_pickup.ogg' drop_sound = 'sound/items/handling/boots_drop.ogg' +/obj/item/clothing/shoes/combat/riot + name = "riot boots" + desc = "High speed, low drag riot boots." + can_cut_open = FALSE + icon_state = "riotboots" + item_state = "riotboots" + sprite_sheets = list( + SPECIES_VOX = 'icons/mob/clothing/species/vox/shoes.dmi', + SPECIES_DRASK = 'icons/mob/clothing/species/drask/shoes.dmi', + SPECIES_MONKEY = 'icons/mob/clothing/species/monkey/shoes.dmi', + SPECIES_FARWA = 'icons/mob/clothing/species/monkey/shoes.dmi', + SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/shoes.dmi', + SPECIES_NEARA = 'icons/mob/clothing/species/monkey/shoes.dmi', + SPECIES_STOK = 'icons/mob/clothing/species/monkey/shoes.dmi', + SPECIES_UNATHI = 'icons/mob/clothing/species/unathi/shoes.dmi', + SPECIES_ASHWALKER_BASIC = 'icons/mob/clothing/species/unathi/shoes.dmi', + SPECIES_ASHWALKER_SHAMAN = 'icons/mob/clothing/species/unathi/shoes.dmi', + SPECIES_DRACONOID = 'icons/mob/clothing/species/unathi/shoes.dmi' + ) + /obj/item/clothing/shoes/combat/swat //overpowered boots for death squads name = "\improper SWAT shoes" desc = "High speed, no drag combat boots." @@ -155,7 +175,7 @@ icon_state = "armored_shoes" item_color = "armored_shoes" item_state = "armored_shoes" - armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + armor = list("melee" = 5, "bullet" = 25, "laser" = 10, "energy" = 5, "bomb" = 5, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 75) sprite_sheets = list( SPECIES_VOX = 'icons/mob/clothing/species/vox/shoes.dmi', SPECIES_DRASK = 'icons/mob/clothing/species/drask/shoes.dmi', @@ -399,51 +419,27 @@ /obj/item/clothing/shoes/cowboy/lizardmasterwork = 1) /obj/item/clothing/shoes/footwraps - name = "cloth footwraps" - desc = "A roll of treated canvas used for wrapping claws or paws." - icon_state = "clothwrap" - item_state = "clothwrap" - force = 0 - silence_steps = TRUE - w_class = WEIGHT_CLASS_SMALL - -/obj/item/clothing/shoes/footwraps/yellow - name = "yellow cloth footwraps" - icon_state = "yellow_wrap" - item_state = "yellow_wrap" - -/obj/item/clothing/shoes/footwraps/silver - name = "silver cloth footwraps" - icon_state = "silver_wrap" - item_state = "silver_wrap" - -/obj/item/clothing/shoes/footwraps/red - name = "red cloth footwraps" - icon_state = "red_wrap" - item_state = "red_wrap" - -/obj/item/clothing/shoes/footwraps/blue - name = "blue cloth footwraps" - icon_state = "blue_wrap" - item_state = "blue_wrap" - -/obj/item/clothing/shoes/footwraps/black - name = "black cloth footwraps" - icon_state = "black_wrap" - item_state = "black_wrap" - -/obj/item/clothing/shoes/footwraps/brown - name = "brown cloth footwraps" - icon_state = "brown_wrap" - item_state = "brown_wrap" + name = "cloth footwraps" + desc = "A roll of treated canvas used for wrapping claws or paws." + icon_state = "clothwrap" + item_state = "clothwrap" + force = 0 + silence_steps = TRUE + w_class = WEIGHT_CLASS_SMALL + var/paintable = TRUE + +/obj/item/clothing/shoes/footwraps/ComponentInitialize() + if(paintable) + AddComponent(/datum/component/spraycan_paintable) /obj/item/clothing/shoes/footwraps/goliath name = "goliath hide footwraps" desc = "These wraps, made from goliath hide, make your feet feel snug and secure, while still being breathable and light." icon_state = "footwraps_goliath" item_state = "footwraps_goliath" - armor = list("melee" = 5, "bullet" = 5, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0) + armor = list("melee" = 10, "bullet" = 10, "laser" = 15, "energy" = 5, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0) resistance_flags = FIRE_PROOF + paintable = FALSE /obj/item/clothing/shoes/footwraps/dragon name = "ash drake hide footwraps" @@ -452,6 +448,7 @@ item_state = "footwraps_dragon" armor = list("melee" = 10, "bullet" = 10, "laser" = 15, "energy" = 10, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 15, "acid" = 0) resistance_flags = FIRE_PROOF | ACID_PROOF + paintable = FALSE /obj/item/clothing/shoes/bhop name = "jump boots" @@ -514,11 +511,19 @@ /obj/item/clothing/shoes/bhop/clown - desc = "The prankster's standard-issue clowning shoes. Damn they're huge! Ctrl-click to toggle the waddle dampeners!" name = "clown shoes" + desc = "Стандартные клоунские башмаки. Чёрт возьми, они такие огромные! Чтобы включить амортизаторы для ходьбы вразвалочку, используйте Ctrl!" + ru_names = list( + NOMINATIVE = "клоунские башмаки", + GENITIVE = "клоунских башмаков", + DATIVE = "клоунским башмакам", + ACCUSATIVE = "клоунские башмаки", + INSTRUMENTAL = "клоунскими башмаками", + PREPOSITIONAL = "клоунских башмаках" + ) icon_state = "clown" item_state = "clown_shoes" - description_antag = "These boots are power-up with a special jumping mechanism that works on the honk-space, allowing you to do excellent acrobatic tricks!" + description_antag = "Эти ботинки снабжены специальным механизмом для прыжков, работающим на основе технологии \"хонк-спейс\", позволяя выполнять захватывающие акробатические трюки!" slowdown = SHOES_SLOWDOWN+1 item_color = "clown" actions_types = list(/datum/action/item_action/bhop/clown) @@ -546,18 +551,18 @@ if(!isliving(user) || user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) return if(user.get_active_hand() != src) - to_chat(user, "You must hold [src] in your hand to do this.") + balloon_alert(user, "нужно держать в руках!") return if(!enabled_waddle) - to_chat(user, "You switch off the waddle dampeners!") + balloon_alert(user, "развалочка включена") enabled_waddle = TRUE else - to_chat(user, "You switch on the waddle dampeners!") + balloon_alert(user, "развалочка выключена") enabled_waddle = FALSE /obj/item/clothing/shoes/ducky name = "rubber ducky shoes" - desc = "These shoes are made for quacking, and thats just what they'll do." + desc = "Эти тапочки сделаны, чтобы крякать, и они реально крякают!" icon_state = "ducky" item_state = "ducky" diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index cb45dbfe08fa..3fb12d5977f0 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -37,9 +37,9 @@ weldingvisortoggle(silent = TRUE) -/obj/item/clothing/head/helmet/space/plasmaman/AltClick(mob/user) - if(Adjacent(user)) - weldingvisortoggle(user) +/obj/item/clothing/head/helmet/space/plasmaman/click_alt(mob/user) + weldingvisortoggle(user) + return CLICK_ACTION_SUCCESS /obj/item/clothing/head/helmet/space/plasmaman/ui_action_click(mob/user, datum/action/action, leftclick) @@ -149,6 +149,24 @@ HUDType = DATA_HUD_MEDICAL_ADVANCED examine_extensions = EXAMINE_HUD_MEDICAL +/obj/item/clothing/head/helmet/space/plasmaman/medical/brigphysician + name = "brig physician's plasma envirosuit helmet" + desc = "An envirohelmet designed for plasmaman brig doctors, having two red stripes down its length to denote as much." + icon_state = "brigphysician_envirohelm" + item_state = "brigphysician_envirohelm" + +/obj/item/clothing/head/helmet/space/plasmaman/medical/coroner + name = "coroner's plasma envirosuit helmet" + desc = "An envirohelmet designed for plasmaman coroners, having two white stripes down its length to denote as much." + icon_state = "coroner_envirohelm" + item_state = "coroner_envirohelm" + +/obj/item/clothing/head/helmet/space/plasmaman/medical/paramedic + name = "paramedic's plasma envirosuit helmet" + desc = "An envirohelmet designed for plasmaman paramedics, having two white stripes down its length to denote as much." + icon_state = "paramedic_envirohelm" + item_state = "paramedic_envirohelm" + /obj/item/clothing/head/helmet/space/plasmaman/cmo name = "chief medical officer's plasma envirosuit helmet" desc = "An envirohelmet designed for plasmamen employed as the chief medical officer." @@ -229,9 +247,9 @@ /obj/item/clothing/head/helmet/space/plasmaman/engineering/mecha name = "mechanic plasma envirosuit helmet" - desc = "A space-worthy helmet specially designed for engineer plasmamen, the usual purple stripes being replaced by engineering's orange." - icon_state = "engineer_envirohelm" - item_state = "engineer_envirohelm" + desc = "A space-worthy helmet specially designed for mechanic plasmamen, the usual purple stripes being replaced by engineering's orange." + icon_state = "mechanic_envirohelm" + item_state = "mechanic_envirohelm" HUDType = DATA_HUD_DIAGNOSTIC /obj/item/clothing/head/helmet/space/plasmaman/engineering/ce @@ -258,10 +276,16 @@ /obj/item/clothing/head/helmet/space/plasmaman/cargo name = "cargo plasma envirosuit helmet" - desc = "A plasmaman envirohelmet designed for cargo techs and quartermasters." + desc = "A plasmaman envirohelmet designed for cargo techs." icon_state = "cargo_envirohelm" item_state = "cargo_envirohelm" +/obj/item/clothing/head/helmet/space/plasmaman/qm + name = "quartermaster's plasma envirosuit helmet" + desc = "A plasmaman envirohelmet designed for quartermasters." + icon_state = "qm_envirohelm" + item_state = "qm_envirohelm" + /obj/item/clothing/head/helmet/space/plasmaman/mining name = "mining plasma envirosuit helmet" desc = "A khaki helmet given to plasmaman miners operating on Lavaland." diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 90ba49e63458..7629eebb1d5a 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -322,6 +322,10 @@ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/hit_reflect_chance = 40 +/obj/item/clothing/suit/armor/laserproof/Initialize(mapload) + . = ..() + AddElement(/datum/element/high_value_item) + /obj/item/clothing/suit/armor/laserproof/IsReflect() if(prob(hit_reflect_chance)) return 1 @@ -396,12 +400,16 @@ desc = "Someone seperated our Research Director from his own head!" var/tele_range = 2 +/obj/item/clothing/suit/armor/reactive/teleport/Initialize(mapload) + . = ..() + AddElement(/datum/element/high_value_item) + /obj/item/clothing/suit/armor/reactive/teleport/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = ITEM_ATTACK) if(!active) return 0 if(prob(hit_reaction_chance)) var/mob/living/carbon/human/H = owner - owner.visible_message("The reactive teleport system flings [H] clear of [attack_text]!") + owner.visible_message(span_danger("The reactive teleport system flings [H] clear of [attack_text]!"), projectile_message = (attack_type == PROJECTILE_ATTACK)) var/list/turfs = new/list() for(var/turf/T in orange(tele_range, H)) if(isspaceturf(T)) @@ -429,7 +437,7 @@ if(!active) return 0 if(prob(hit_reaction_chance)) - owner.visible_message("The [src] blocks the [attack_text], sending out jets of flame!") + owner.visible_message(span_danger("The [src] blocks the [attack_text], sending out jets of flame!"), projectile_message = (attack_type == PROJECTILE_ATTACK)) for(var/mob/living/carbon/C in range(6, owner)) if(C != owner) C.fire_stacks += 8 @@ -450,7 +458,7 @@ E.GiveTarget(owner) //so it starts running right away E.Goto(owner, E.move_to_delay, E.minimum_distance) owner.alpha = 0 - owner.visible_message("[owner] is hit by [attack_text] in the chest!") //We pretend to be hit, since blocking it would stop the message otherwise + owner.visible_message(span_danger("[owner] is hit by [attack_text] in the chest!"), projectile_message = (attack_type == PROJECTILE_ATTACK)) //We pretend to be hit, since blocking it would stop the message otherwise spawn(40) owner.alpha = initial(owner.alpha) return 1 @@ -462,7 +470,7 @@ if(!active) return 0 if(prob(hit_reaction_chance)) - owner.visible_message("The [src] blocks the [attack_text], sending out arcs of lightning!") + owner.visible_message(span_danger("The [src] blocks the [attack_text], sending out arcs of lightning!"), projectile_message = (attack_type == PROJECTILE_ATTACK)) for(var/mob/living/M in view(6, owner)) if(M == owner) continue @@ -639,7 +647,7 @@ item_state = "goliath_cloak" desc = "A staunch, practical cape made out of numerous monster materials, it is coveted amongst exiles & hermits." allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/twohanded/spear, /obj/item/organ/internal/regenerative_core/legion, /obj/item/kitchen/knife/combat/survival, /obj/item/twohanded/kinetic_crusher, /obj/item/hierophant_club, /obj/item/twohanded/fireaxe/boneaxe) - armor = list("melee" = 35, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot + armor = list(MELEE = 40, BULLET = 15, LASER = 30, ENERGY = 15, BOMB = 35, BIO = 0, RAD = 0, FIRE = 80, ACID = 60) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot hoodtype = /obj/item/clothing/head/hooded/goliath body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS @@ -648,7 +656,7 @@ icon_state = "golhood" item_state = "golhood" desc = "A protective & concealing hood." - armor = list("melee" = 35, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) + armor = list(MELEE = 40, BULLET = 15, LASER = 30, ENERGY = 15, BOMB = 35, BIO = 0, RAD = 0, FIRE = 80, ACID = 60) flags_inv = HIDEHAIR flags_cover = HEADCOVERSEYES @@ -682,7 +690,7 @@ icon_state = "bonearmor" item_state = "bonearmor" blood_overlay_type = "armor" - armor = list("melee" = 35, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) + armor = list("melee" = 45, "bullet" = 30, "laser" = 30, "energy" = 20, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/twohanded/spear, /obj/item/organ/internal/regenerative_core/legion, /obj/item/kitchen/knife/combat/survival, /obj/item/twohanded/kinetic_crusher, /obj/item/hierophant_club, /obj/item/twohanded/fireaxe/boneaxe) body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS sprite_sheets = list( @@ -714,3 +722,95 @@ SPECIES_GREY = 'icons/mob/clothing/species/grey/suit.dmi', ) +/obj/item/clothing/suit/armor/cartilage //parent type, used in order not to copy-paste same lines in 3 same armors + name = "cartilage armor" + desc = "Полностью завершённая броня, сделанная из хрящевых пластин лавовой рыбы. Крепче своих костяных аналогов." + ru_names = list( + NOMINATIVE = "броня из хрящевых пластин", + GENITIVE = "брони из хрящевых пластин", + DATIVE = "броне из хрящевых пластин", + ACCUSATIVE = "броню из хрящевых пластин", + INSTRUMENTAL = "броней из хрящевых пластин", + PREPOSITIONAL = "броне из хрящевых пластин" + ) + gender = FEMALE + icon_state = "cartilage_set" + item_state = "cartilage_set" + blood_overlay_type = "armor" + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/twohanded/spear, /obj/item/organ/internal/regenerative_core/legion, /obj/item/kitchen/knife/combat/survival, /obj/item/twohanded/kinetic_crusher, /obj/item/hierophant_club, /obj/item/twohanded/fireaxe/boneaxe) + armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 10, BIO = 0, RAD = 0, FIRE = 60, ACID = 60) + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS + sprite_sheets = list( + SPECIES_UNATHI = 'icons/mob/clothing/species/unathi/suit.dmi', + SPECIES_ASHWALKER_BASIC = 'icons/mob/clothing/species/unathi/suit.dmi', + SPECIES_ASHWALKER_SHAMAN = 'icons/mob/clothing/species/unathi/suit.dmi', + SPECIES_DRACONOID = 'icons/mob/clothing/species/unathi/suit.dmi', + SPECIES_VOX = 'icons/mob/clothing/species/vox/suit.dmi', + SPECIES_GREY = 'icons/mob/clothing/species/grey/suit.dmi', + SPECIES_MONKEY = 'icons/mob/clothing/species/monkey/suit.dmi', + SPECIES_FARWA = 'icons/mob/clothing/species/monkey/suit.dmi', + SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/suit.dmi', + SPECIES_NEARA = 'icons/mob/clothing/species/monkey/suit.dmi', + SPECIES_STOK = 'icons/mob/clothing/species/monkey/suit.dmi' + ) + + +/obj/item/clothing/suit/armor/cartilage/cartilage_pads + name = "cartilage shoulder pads" + desc = "Достаточно крепкие наплечники, сделанные из хрящевых пластин. Защищают тело, но не предоставляют защиты для ног. Могут быть улучшены до полноценной брони в случае, если будут соединены с поножами, сделанными из того же материала." + ru_names = list( + NOMINATIVE = "наплечники из хрящевых пластин", + GENITIVE = "наплечников из хрящевых пластин", + DATIVE = "наплечникам из хрящевых пластин", + ACCUSATIVE = "наплечники из хрящевых пластин", + INSTRUMENTAL = "наплечниками из хрящевых пластин", + PREPOSITIONAL = "наплечниках из хрящевых пластин" + ) + gender = PLURAL + icon_state = "cartilage_shoulder_pads" + item_state = "cartilage_shoulder_pads" + body_parts_covered = UPPER_TORSO|ARMS + +/obj/item/clothing/suit/armor/cartilage/cartilage_pads/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/clothing/suit/armor/cartilage/cartilage_greaves)) + add_fingerprint(user) + to_chat(user, span_notice("Вы начинаете подвязывать части брони.")) + if(do_after(user, 4 SECONDS, src, max_interact_count = 1)) + to_chat(user, span_notice("Вы улучшили броню!")) + var/turf/user_turf = get_turf(user) + var/obj/item/clothing/suit/armor/cartilage/armor = new(user_turf) + user.put_in_inactive_hand(armor) + qdel(I) + qdel(src) + return ATTACK_CHAIN_BLOCKED_ALL + return ..() + +/obj/item/clothing/suit/armor/cartilage/cartilage_greaves + name = "cartilage greaves" + desc = "Достаточно крепкие поножи, сделанные из хрящевых пластин. Защищают ноги, но не предоставляют защиты для торса. Могут быть улучшены до полноценной брони в случае, если будут соединены с наплечниками, сделанными из того же материала." + ru_names = list( + NOMINATIVE = "поножи из хрящевых пластин", + GENITIVE = "поножей из хрящевых пластин", + DATIVE = "поножам из хрящевых пластин", + ACCUSATIVE = "поножи из хрящевых пластин", + INSTRUMENTAL = "поножами из хрящевых пластин", + PREPOSITIONAL = "поножах из хрящевых пластин" + ) //i actually have to google it + gender = PLURAL + icon_state = "cartilage_greaves" + item_state = "cartilage_greaves" + body_parts_covered = LOWER_TORSO|LEGS + +/obj/item/clothing/suit/armor/cartilage/cartilage_greaves/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/clothing/suit/armor/cartilage/cartilage_pads)) + add_fingerprint(user) + to_chat(user, span_notice("Вы начинаете подвязывать части брони.")) + if(do_after(user, 4 SECONDS, src, max_interact_count = 1)) + to_chat(user, span_notice("Вы улучшили броню!")) + var/turf/user_turf = get_turf(user) + var/obj/item/clothing/suit/armor/cartilage/armor = new(user_turf) + user.put_in_inactive_hand(armor) + qdel(I) + qdel(src) + return ATTACK_CHAIN_BLOCKED_ALL + return ..() diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 475a79ee52f4..d66d77fad06f 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -487,7 +487,7 @@ name = "first responder jacket" desc = "A high-visibility jacket worn by medical first responders." icon_state = "fr_jacket_open" - item_state = "fr_jacket_open" + item_state = "fr_jacket" blood_overlay_type = "armor" allowed = list(/obj/item/stack/medical, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/hypospray, /obj/item/reagent_containers/applicator, /obj/item/reagent_containers/syringe, /obj/item/healthanalyzer, /obj/item/flashlight, /obj/item/radio, /obj/item/tank/internals/emergency_oxygen,/obj/item/rad_laser) diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 323c7ad9457f..3679dc607eb9 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -734,6 +734,7 @@ icon_state = "leathercoat" item_state = "leathercoat" resistance_flags = FIRE_PROOF + armor = list(melee = 10, bullet = 5, laser = 10, energy = 15, bomb = 15, bio = 0, rad = 0, fire = 15, acid = 15) /obj/item/clothing/suit/browncoat name = "brown leather coat" @@ -768,7 +769,6 @@ desc = "That shade of black just makes you look a bit more evil. Good for those mafia types." icon_state = "bltrenchcoat" item_state = "bltrenchcoat" - sprite_sheets = list( SPECIES_PLASMAMAN = 'icons/mob/clothing/species/plasmaman/suit.dmi', SPECIES_VOX = 'icons/mob/clothing/species/vox/suit.dmi', @@ -778,6 +778,8 @@ SPECIES_NEARA = 'icons/mob/clothing/species/monkey/suit.dmi', SPECIES_STOK = 'icons/mob/clothing/species/monkey/suit.dmi' ) + armor = list(melee = 5, bullet = 5, laser = 10, energy = 10, bomb = 15, bio = 0, rad = 0, fire = 10, acid = 10) + /obj/item/clothing/suit/storage/leather_trenchcoat/runner name = "leather trenchcoat" desc = "Длинное кожаное пальто-тренч с натуральным мехом. Вы чувствуете себя одиноко, когда носите его..." @@ -990,6 +992,7 @@ actions_types = null adjust_flavour = null resistance_flags = NONE + armor = list(melee = 10, bullet = 5, laser = 10, energy = 15, bomb = 15, bio = 0, rad = 0, fire = 15, acid = 15) /obj/item/clothing/suit/jacket/motojacket name = "leather motorcycle jacket" @@ -1011,6 +1014,7 @@ SPECIES_NEARA = 'icons/mob/clothing/species/monkey/suit.dmi', SPECIES_STOK = 'icons/mob/clothing/species/monkey/suit.dmi' ) + armor = list(melee = 10, bullet = 5, laser = 10, energy = 15, bomb = 15, bio = 0, rad = 0, fire = 15, acid = 15) /obj/item/clothing/suit/jacket/leather/overcoat name = "leather overcoat" @@ -1121,12 +1125,6 @@ siemens_coefficient = 0 var/on = 0 - -/obj/item/clothing/suit/advanced_protective_suit/Initialize(mapload) - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, INNATE_TRAIT) - - /obj/item/clothing/suit/advanced_protective_suit/Destroy() if(on) on = 0 @@ -1136,9 +1134,11 @@ /obj/item/clothing/suit/advanced_protective_suit/ui_action_click(mob/user, datum/action/action, leftclick) if(on) on = 0 + REMOVE_TRAIT(src, TRAIT_NODROP, INNATE_TRAIT) to_chat(usr, "You turn the suit's special processes off.") else on = 1 + ADD_TRAIT(src, TRAIT_NODROP, INNATE_TRAIT) to_chat(usr, "You turn the suit's special processes on.") START_PROCESSING(SSobj, src) @@ -1629,7 +1629,76 @@ icon_state = "[initial(icon_state)][slot == ITEM_SLOT_HEAD ? "_head" : null]" - /obj/item/clothing/suit/towel/short/alt icon_state = "towel_alt" item_state = "towel_alt" + +/obj/item/clothing/suit/hooded/ghostfacesuit + name = "Ghostface suit" + ru_names = list( + NOMINATIVE = "чёрный балахон", + GENITIVE = "чёрного балахона", + DATIVE = "чёрному балахону", + ACCUSATIVE = "чёрный балахон", + INSTRUMENTAL = "чёрным балахоном", + PREPOSITIONAL = "чёрном балахоне" + ) + desc = "Чёрный, просторный балахон, что может навеивать смутные напоминания о чём-то." + icon_state = "ghostface_suit" + item_state = "ghostface_suit" + body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET + flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETAIL + hoodtype = /obj/item/clothing/head/hooded/ghostface + sprite_sheets = list( + SPECIES_DRASK = 'icons/mob/clothing/species/drask/suit.dmi', + SPECIES_GREY = 'icons/mob/clothing/species/grey/suit.dmi', + SPECIES_MONKEY = 'icons/mob/clothing/species/monkey/suit.dmi' + ) + +/obj/item/clothing/suit/hooded/update_icon_state() + return + +/obj/item/clothing/head/hooded/ghostface + name = "Ghostface hood" + ru_names = list( + NOMINATIVE = "чёрный капюшон", + GENITIVE = "чёрного капюшона", + DATIVE = "чёрному капюшону", + ACCUSATIVE = "чёрный капюшон", + INSTRUMENTAL = "чёрным капюшоном", + PREPOSITIONAL = "чёрном капюшоне" + ) + desc = "Чёрный капюшон. Он вам что-то точно напоминает..." + icon_state = "ghostface_hood" + item_state = "ghostface" + flags_inv = HIDEHEADSETS|HIDEHAIR + sprite_sheets = list( + SPECIES_DRASK = 'icons/mob/clothing/species/drask/suit.dmi', + SPECIES_GREY = 'icons/mob/clothing/species/grey/suit.dmi', + SPECIES_MONKEY = 'icons/mob/clothing/species/monkey/suit.dmi' + ) + +/obj/item/clothing/head/hooded/ghostface/true + armor = list(melee = 30, bullet = 10, laser = 5, energy = 5, bomb = 0, bio = 0, rad = 0, fire = 10, acid = 10) + +/obj/item/clothing/suit/hooded/ghostfacesuit/devil + desc = "Чёрный с прожилками красного просторный балахон, что может навеивать смутные напоминания о чём-то." + ru_names = list( + NOMINATIVE = "кроваво-чёрный балахон", + GENITIVE = "кроваво-чёрного балахона", + DATIVE = "кроваво-чёрному балахону", + ACCUSATIVE = "кроваво-чёрный балахон", + INSTRUMENTAL = "кроваво-чёрным балахоном", + PREPOSITIONAL = "кроваво-чёрном балахоне" + ) + icon_state = "devil_ghostface_suit" + item_state = "devil_ghostface_suit" + + +/obj/item/clothing/suit/hooded/ghostfacesuit/true + armor = list(melee = 30, bullet = 10, laser = 5, energy = 5, bomb = 0, bio = 0, rad = 0, fire = 10, acid = 10) + hoodtype = /obj/item/clothing/head/hooded/ghostface/true + +/obj/item/clothing/suit/hooded/ghostfacesuit/devil/true + armor = list(melee = 30, bullet = 10, laser = 5, energy = 5, bomb = 0, bio = 0, rad = 0, fire = 10, acid = 10) + hoodtype = /obj/item/clothing/head/hooded/ghostface/true diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index 88ec9980b306..30e135213973 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -292,6 +292,10 @@ desc = "A golden medal awarded exclusively to those promoted to the rank of captain. It signifies the codified responsibilities of a captain to Nanotrasen, and their undisputable authority over their crew." resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF +/obj/item/clothing/accessory/medal/gold/captain/Initialize(mapload) + . = ..() + AddElement(/datum/element/high_value_item) + /obj/item/clothing/accessory/medal/gold/heroism name = "medal of exceptional heroism" desc = "An extremely rare golden medal awarded only by CentComm. To recieve such a medal is the highest honor and as such, very few exist." @@ -1002,24 +1006,24 @@ STOP_PROCESSING(SSobj, src) -/proc/english_accessory_list(obj/item/clothing/under/uniform) +/proc/accessory_list(obj/item/clothing/under/uniform) if(!istype(uniform) || !LAZYLEN(uniform.accessories)) return var/list/A = uniform.accessories var/total = A.len if(total == 1) - return "\a [A[1]]" + return "[A[1]]" else if(total == 2) - return "\a [A[1]] and \a [A[2]]" + return "[A[1]] и [A[2]]" else var/output = "" var/index = 1 var/comma_text = ", " while(index < total) - output += "\a [A[index]][comma_text]" + output += "[A[index]][comma_text]" index++ - return "[output]and \a [A[index]]" + return "[output]и [A[index]]" /obj/item/clothing/accessory/head_strip name = "captain's strip" @@ -1131,6 +1135,42 @@ item_state = "ntrstrip" strip_bubble_icon = "NTR" +/obj/item/clothing/accessory/head_strip/syndicate + name = "Syndicate strip" + desc = "Круглый металлический значок тёмно-красного цвета с расположенной в центре ярко-зелёной буквой \"S\" с бордовым штырём." + icon_state = "syndistrip" + item_state = "syndistrip" + strip_bubble_icon = "Syndie" + +/obj/item/clothing/accessory/head_strip/comrad + name = "Comrade patch" + desc = "Грубый прямоугольный шеврон цвета хаки с бело-золотыми вставками по бокам и вышитой красными нитями аббревиатурой \"СССП\" в центре: стандартная нашивка, выдаваемая добровольцам." + icon_state = "patch_sssp" + item_state = "patch_sssp" + strip_bubble_icon = "comrad" + +/obj/item/clothing/accessory/head_strip/federal + name = "Federal strip" + desc = "Плотно сшитая круглая нашивка из синего бархата с белой окантовкой и золотыми вставками. По центру красуется логотип ТСФ, прошитый бело-золотыми металлическими нитями: стандартный знак отличия для граждан ТСФ." + icon_state = "stripe_federal" + item_state = "stripe_federal" + strip_bubble_icon = "federal" + +/obj/item/clothing/accessory/head_strip/greytide + name = "GreyTide strip" + desc = "Плотно сшитая круглая нашивка серого цвета с расположенным в центре противогазом." + ru_names = list( + NOMINATIVE = "нашивка \"GreyTide\"", + GENITIVE = "нашивки \"GreyTide\"", + DATIVE = "нашивке \"GreyTide\"", + ACCUSATIVE = "нашивку \"GreyTide\"", + INSTRUMENTAL = "нашивкой \"GreyTide\"", + PREPOSITIONAL = "нашивке \"GreyTide\"" + ) + icon_state = "greytstrip" + item_state = "greytstrip" + strip_bubble_icon = "greyt" + /obj/item/clothing/accessory/head_strip/lawyers_badge name = "attorney's badge" desc = "Fills you with the conviction of JUSTICE. Lawyers tend to want to show it to everyone they meet." diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm index 5a31faf9e742..b89d30ac9227 100644 --- a/code/modules/clothing/under/jobs/medsci.dm +++ b/code/modules/clothing/under/jobs/medsci.dm @@ -182,30 +182,35 @@ name = "medical scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in baby blue." icon_state = "scrubsblue" + item_state = "scrubsblue" item_color = "scrubsblue" /obj/item/clothing/under/rank/medical/green name = "medical scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in dark green." icon_state = "scrubsdarkgreen" + item_state = "scrubsdarkgreen" item_color = "scrubsdarkgreen" /obj/item/clothing/under/rank/medical/lightgreen name = "medical scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in green." icon_state = "scrubsgreen" + item_state = "scrubsgreen" item_color = "scrubsgreen" /obj/item/clothing/under/rank/medical/purple name = "medical scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in deep purple." icon_state = "scrubspurple" + item_state = "scrubspurple" item_color = "scrubspurple" /obj/item/clothing/under/rank/medical/mortician name = "coroner's scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is as dark as an emo's poetry." icon_state = "scrubsblack" + item_state = "scrubsblack" item_color = "scrubsblack" //paramedic @@ -243,7 +248,7 @@ name = "psychologist's turtleneck" desc = "A turqouise turtleneck and a pair of dark blue slacks, belonging to a psychologist." icon_state = "psychturtle" - item_state = "b_suit" + item_state = "psychturtle" item_color = "psychturtle" diff --git a/code/modules/clothing/under/jobs/plasmamen/civilian_service.dm b/code/modules/clothing/under/jobs/plasmamen/civilian_service.dm index 6e86461364ce..ebaf592aa79d 100644 --- a/code/modules/clothing/under/jobs/plasmamen/civilian_service.dm +++ b/code/modules/clothing/under/jobs/plasmamen/civilian_service.dm @@ -1,6 +1,6 @@ /obj/item/clothing/under/plasmaman/cargo name = "cargo plasma envirosuit" - desc = "An envirosuit used by plasmaman quartermasters and cargo techs alike, due to the logistical problems of differentiating the two by the length of their pant legs." + desc = "An envirosuit used by plasmaman cargo techs, due to the logistical problems of differentiating the two by the length of their pant legs." icon_state = "cargo_envirosuit" item_state = "cargo_envirosuit" item_color = "cargo_envirosuit" @@ -12,6 +12,12 @@ item_state = "explorer_envirosuit" item_color = "explorer_envirosuit" +/obj/item/clothing/under/plasmaman/qm + name = "quartermaster plasma envirosuit" + desc = "An envirosuit used by plasmaman quartermasters, due to the logistical problems of differentiating the two by the length of their pant legs." + icon_state = "qm_envirosuit" + item_state = "qm_envirosuit" + item_color = "qm_envirosuit" /obj/item/clothing/under/plasmaman/chef name = "chef's plasma envirosuit" @@ -90,7 +96,9 @@ extinguishes_left-- H.visible_message("[H]'s suit spews out a tonne of space lube!", "Your suit spews out a tonne of space lube!") H.ExtinguishMob() - new /obj/effect/particle_effect/foam(loc) //Truely terrifying. + var/datum/effect_system/fluid_spread/foam/s = new() + s.set_up(range = 3, location = loc) //Truely terrifying. + s.start() return FALSE /obj/item/clothing/under/plasmaman/hop diff --git a/code/modules/clothing/under/jobs/plasmamen/engineering.dm b/code/modules/clothing/under/jobs/plasmamen/engineering.dm index 8b4e59bbb93d..f17d80f63045 100644 --- a/code/modules/clothing/under/jobs/plasmamen/engineering.dm +++ b/code/modules/clothing/under/jobs/plasmamen/engineering.dm @@ -19,3 +19,9 @@ item_state = "atmos_envirosuit" item_color = "atmos_envirosuit" +/obj/item/clothing/under/plasmaman/mechanic + name = "mechanic plasma envirosuit" + desc = "An airtight suit designed to be used by plasmamen employed as mechanics, the usual purple stripes being replaced by engineering's orange. It protects the user from fire and acid damage." + icon_state = "mechanic_envirosuit" + item_state = "mechanic_envirosuit" + item_color = "mechanic_envirosuit" diff --git a/code/modules/clothing/under/jobs/plasmamen/medsci.dm b/code/modules/clothing/under/jobs/plasmamen/medsci.dm index 531bc3fb1243..1cba254830e1 100644 --- a/code/modules/clothing/under/jobs/plasmamen/medsci.dm +++ b/code/modules/clothing/under/jobs/plasmamen/medsci.dm @@ -53,3 +53,24 @@ icon_state = "chemist_envirosuit" item_state = "chemist_envirosuit" item_color = "chemist_envirosuit" + +/obj/item/clothing/under/plasmaman/brigphysician + name = "brigphysician plasma envirosuit" + desc = "A plasmaman envirosuit designed for brigphysicians." + icon_state = "brigphysician_envirosuit" + item_state = "brigphysician_envirosuit" + item_color = "brigphysician_envirosuit" + +/obj/item/clothing/under/plasmaman/coroner + name = "coroner plasma envirosuit" + desc = "A plasmaman envirosuit designed for coroners." + icon_state = "coroner_envirosuit" + item_state = "coroner_envirosuit" + item_color = "coroner_envirosuit" + +/obj/item/clothing/under/plasmaman/paramedic + name = "paramedic plasma envirosuit" + desc = "A plasmaman envirosuit designed for paramedics." + icon_state = "paramedic_envirosuit" + item_state = "paramedic_envirosuit" + item_color = "paramedic_envirosuit" diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index ecdbe936684d..cd165342aef0 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -251,6 +251,14 @@ /obj/item/clothing/under/acj name = "administrative cybernetic jumpsuit" + ru_names = list( + NOMINATIVE = "административный кибернетический комбинезон", + GENITIVE = "административного кибернетического комбинезона", + DATIVE = "административному кибернетическому комбинезону", + ACCUSATIVE = "административный кибернетический комбинезон", + INSTRUMENTAL = "административным кибернетическим комбинезоном", + PREPOSITIONAL = "административном кибернетическом комбинезоне", + ) icon_state = "syndicate" item_state = "bl_suit" item_color = "syndicate" @@ -795,6 +803,30 @@ item_color = "pennywise" body_parts_covered = UPPER_TORSO|LOWER_TORSO +/obj/item/clothing/under/sweettooth + name = "Sweet Tooth Costume" + desc = "Брутально выглядящий костюм, отдалённо смахивающий на клоунский. Такой отлично подошёл бы какому-нибудь серийному убийце." + icon_state = "sweettooth_uniform" + item_color = "sweettooth_uniform" + ru_names = list( + NOMINATIVE = "Костюм Сладкоежки", + GENITIVE = "Костюма Сладкоежки", + DATIVE = "Костюму Сладкоежки", + ACCUSATIVE = "Костюм Сладкоежки", + INSTRUMENTAL = "Костюмом Сладкоежки", + PREPOSITIONAL = "Костюме Сладкоежки" + ) + body_parts_covered = UPPER_TORSO | LOWER_TORSO + sprite_sheets = list( + SPECIES_VOX = 'icons/mob/clothing/species/vox/uniform.dmi', + SPECIES_MONKEY = 'icons/mob/clothing/species/monkey/uniform.dmi', + SPECIES_DRASK = 'icons/mob/clothing/species/drask/uniform.dmi', + SPECIES_GREY = 'icons/mob/clothing/species/grey/uniform.dmi', + SPECIES_KIDAN = 'icons/mob/clothing/species/kidan/uniform.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/uniform.dmi', + SPECIES_GREY = 'icons/mob/clothing/species/grey/uniform.dmi' + ) + /obj/item/clothing/under/rockso name = "Rockso Costume" desc = "I DO COCAINE!" @@ -1193,3 +1225,30 @@ SPECIES_STOK = 'icons/mob/clothing/species/monkey/uniform.dmi' ) +/obj/item/clothing/under/satan + name = "satanic clothes" + desc = "Костюм, который обычно носят сатанисты." + ru_names = list( + NOMINATIVE = "сатанинские одеяния", + GENITIVE = "сатанинских одеяний", + DATIVE = "сатанинским одеяниям", + ACCUSATIVE = "сатанинские одеяния", + INSTRUMENTAL = "сатанинскими одеяниями", + PREPOSITIONAL = "сатанинских одеяниях" + ) + over_shoes = TRUE + can_adjust = TRUE + icon_state = "satan" + item_state = "satan" + item_color = "satan" + sprite_sheets = list( + SPECIES_VOX = 'icons/mob/clothing/species/vox/uniform.dmi', + SPECIES_DRASK = 'icons/mob/clothing/species/drask/uniform.dmi', + SPECIES_GREY = 'icons/mob/clothing/species/grey/uniform.dmi', + SPECIES_UNATHI = 'icons/mob/clothing/species/unathi/uniform.dmi', + SPECIES_MONKEY = 'icons/mob/clothing/species/monkey/uniform.dmi', + SPECIES_FARWA = 'icons/mob/clothing/species/monkey/uniform.dmi', + SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/uniform.dmi', + SPECIES_NEARA = 'icons/mob/clothing/species/monkey/uniform.dmi', + SPECIES_STOK = 'icons/mob/clothing/species/monkey/uniform.dmi' + ) diff --git a/code/modules/clothing/upgrade_modules/hardsuit_taser_proof_module/hardsuit_taser_proof.dm b/code/modules/clothing/upgrade_modules/hardsuit_taser_proof_module/hardsuit_taser_proof.dm index 7d202270690e..8e30d74d016f 100644 --- a/code/modules/clothing/upgrade_modules/hardsuit_taser_proof_module/hardsuit_taser_proof.dm +++ b/code/modules/clothing/upgrade_modules/hardsuit_taser_proof_module/hardsuit_taser_proof.dm @@ -36,7 +36,7 @@ return FALSE if(!hardsuit.suit_adjusted) return FALSE - var/obj/item/projectile/P = hitby + var/obj/projectile/P = hitby if(istype(P) && P.shockbull) return TRUE return FALSE diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm index 9050d8638276..1058f47918ba 100644 --- a/code/modules/crafting/craft.dm +++ b/code/modules/crafting/craft.dm @@ -16,7 +16,10 @@ CAT_AMMO), CAT_NONE, //Robot subcategories CAT_NONE, //Misc subcategories - CAT_NONE, //Tribal subcategories + list( //Tribal subcategories + CAT_ARMOR, + CAT_WEAPONS, + CAT_MISC2), list( //Food subcategories CAT_CAKE, CAT_SUSHI, diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index cd2fd7af4fd5..3f3767410dce 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -602,6 +602,7 @@ time = 30 reqs = list(/obj/item/stack/sheet/bone = 6) category = CAT_PRIMAL + subcategory = CAT_ARMOR /datum/crafting_recipe/bonetalisman name = "Bone Talisman" @@ -610,6 +611,7 @@ reqs = list(/obj/item/stack/sheet/bone = 2, /obj/item/stack/sheet/sinew = 1) category = CAT_PRIMAL + subcategory = CAT_ARMOR /datum/crafting_recipe/bonecodpiece name = "Skull Codpiece" @@ -618,6 +620,7 @@ reqs = list(/obj/item/stack/sheet/bone = 2, /obj/item/stack/sheet/animalhide/goliath_hide = 1) category = CAT_PRIMAL + subcategory = CAT_ARMOR /datum/crafting_recipe/bracers name = "Bone Bracers" @@ -626,6 +629,7 @@ reqs = list(/obj/item/stack/sheet/bone = 2, /obj/item/stack/sheet/sinew = 1) category = CAT_PRIMAL + subcategory = CAT_ARMOR /datum/crafting_recipe/skullhelm name = "Skull Helmet" @@ -633,6 +637,7 @@ time = 30 reqs = list(/obj/item/stack/sheet/bone = 4) category = CAT_PRIMAL + subcategory = CAT_ARMOR /datum/crafting_recipe/beltprimitive name = "Hunter's Belt" @@ -641,6 +646,7 @@ reqs = list(/obj/item/stack/sheet/sinew = 4, /obj/item/stack/sheet/animalhide/goliath_hide = 2) category = CAT_PRIMAL + subcategory = CAT_ARMOR /datum/crafting_recipe/goliathcloak name = "Goliath Cloak" @@ -650,6 +656,7 @@ /obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/animalhide/goliath_hide = 2) category = CAT_PRIMAL + subcategory = CAT_ARMOR /datum/crafting_recipe/drakecloak name = "Ash Drake Armour" @@ -659,6 +666,63 @@ /obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/animalhide/ashdrake = 5) category = CAT_PRIMAL + subcategory = CAT_ARMOR + +/datum/crafting_recipe/cartilage_greaves + name = "Cartilage Greaves" + result = /obj/item/clothing/suit/armor/cartilage/cartilage_greaves + time = 4 SECONDS + reqs = list(/obj/item/stack/sheet/cartilage_plate = 2, + /obj/item/stack/sheet/cloth = 3, + /obj/item/stack/sheet/sinew = 2) + category = CAT_PRIMAL + subcategory = CAT_ARMOR + +/datum/crafting_recipe/cartilage_pads + name = "Cartilage Shoulder Pads" + result = /obj/item/clothing/suit/armor/cartilage/cartilage_pads + time = 4 SECONDS + reqs = list(/obj/item/stack/sheet/cartilage_plate = 2, + /obj/item/stack/sheet/cloth = 3, + /obj/item/stack/sheet/sinew = 1) + category = CAT_PRIMAL + subcategory = CAT_ARMOR + +/datum/crafting_recipe/footwrapsgoliath + name = "Goliath Hide Footwraps" + result = /obj/item/clothing/shoes/footwraps/goliath + reqs = list(/obj/item/stack/sheet/animalhide/goliath_hide = 1, + /obj/item/stack/sheet/leather = 1) + time = 6 SECONDS + category = CAT_PRIMAL + subcategory = CAT_ARMOR + +/datum/crafting_recipe/footwrapsdragon + name = "Ash Drake Hide Footwraps" + result = /obj/item/clothing/shoes/footwraps/dragon + reqs = list(/obj/item/stack/sheet/animalhide/ashdrake = 1, + /obj/item/stack/sheet/leather = 1) + time = 6 SECONDS + category = CAT_PRIMAL + subcategory = CAT_ARMOR + +/datum/crafting_recipe/goliathgloves + name = "Goliath Gloves" + result = /obj/item/clothing/gloves/color/black/goliath + time = 2 SECONDS + reqs = list(/obj/item/stack/sheet/leather = 2, + /obj/item/stack/sheet/animalhide/goliath_hide = 1) + category = CAT_PRIMAL + subcategory = CAT_ARMOR + +/datum/crafting_recipe/chitingloves + name = "Weaver Chitin Gloves" + result = /obj/item/clothing/gloves/fingerless/weaver + time = 2 SECONDS + reqs = list(/obj/item/stack/sheet/leather = 1, + /obj/item/stack/sheet/animalhide/weaver_chitin = 3) + category = CAT_PRIMAL + subcategory = CAT_ARMOR /datum/crafting_recipe/firebrand name = "Firebrand" @@ -666,6 +730,7 @@ time = 100 //Long construction time. Making fire is hard work. reqs = list(/obj/item/stack/sheet/wood = 2) category = CAT_PRIMAL + subcategory = CAT_MISC2 /datum/crafting_recipe/tribal_splint name = "Tribal Splint" @@ -674,6 +739,63 @@ /obj/item/stack/sheet/sinew = 1) result = /obj/item/stack/medical/splint/tribal category = CAT_PRIMAL + subcategory = CAT_MISC2 + +/datum/crafting_recipe/tribal_rod + name = "Tribal Fishing Rod" + time = 4 SECONDS + reqs = list(/obj/item/stack/sheet/bone = 2, + /obj/item/stack/sheet/sinew = 1) + result = /obj/item/twohanded/fishing_rod/tribal + category = CAT_PRIMAL + subcategory = CAT_MISC2 + +/datum/crafting_recipe/grace_of_lazis + name = "Grace Of Lazis" + time = 6 SECONDS + reqs = list(/obj/item/twohanded/spear/bonespear = 1, + /obj/item/reagent_containers/food/snacks/monstermeat/goliath = 18) + blacklist = list(/obj/item/twohanded/spear/bonespear/chitinspear, /obj/item/twohanded/spear/bonespear/her_biting_embrace) + result = /obj/structure/grace_of_lazis + category = CAT_PRIMAL + subcategory = CAT_MISC2 + +/datum/crafting_recipe/wooden_totem + name = "Wooden Totem" + time = 15 SECONDS + reqs = list(/obj/item/stack/sheet/wood = 30, + /obj/item/stack/sheet/animalhide/goliath_hide = 1) + result = /obj/structure/ash_totem/wooden + category = CAT_PRIMAL + subcategory = CAT_MISC2 + +/datum/crafting_recipe/stone_totem + name = "Stone Totem" + time = 15 SECONDS + reqs = list(/obj/item/stack/sheet/mineral/sandstone = 30, + /obj/item/stack/sheet/sinew = 2) + result = /obj/structure/ash_totem/stone + category = CAT_PRIMAL + subcategory = CAT_MISC2 + +/datum/crafting_recipe/bone_totem + name = "Bone Totem" + time = 15 SECONDS + reqs = list(/obj/item/stack/sheet/wood = 15, + /obj/item/stack/sheet/mineral/sandstone = 15, + /obj/item/stack/sheet/bone = 3) + result = /obj/structure/ash_totem/bone + category = CAT_PRIMAL + subcategory = CAT_MISC2 + +/datum/crafting_recipe/primitive_surgical_kit + name = "Primitive surgical kit" + time = 30 + reqs = list(/obj/item/stack/sheet/bone = 6, + /obj/item/stack/sheet/sinew = 3) + result = list(/obj/item/storage/toolbox/surgery/ashwalker) + category = CAT_PRIMAL + subcategory = CAT_MISC2 /datum/crafting_recipe/bonedagger name = "Bone Dagger" @@ -681,22 +803,25 @@ time = 20 reqs = list(/obj/item/stack/sheet/bone = 2) category = CAT_PRIMAL + subcategory = CAT_WEAPONS /datum/crafting_recipe/bonesword name = "Bone Sword" - result = /obj/item/claymore/bone + result = /obj/item/melee/claymore/bone time = 4 SECONDS reqs = list(/obj/item/stack/sheet/bone = 3, /obj/item/stack/sheet/sinew = 2) category = CAT_PRIMAL + subcategory = CAT_WEAPONS /datum/crafting_recipe/goliathshield name = "Goliath Shield" result = /obj/item/shield/riot/goliath time = 6 SECONDS reqs = list(/obj/item/stack/sheet/bone = 4, - /obj/item/stack/sheet/animalhide/goliath_hide = 3) + /obj/item/stack/sheet/animalhide/goliath_hide = 2) category = CAT_PRIMAL + subcategory = CAT_WEAPONS /datum/crafting_recipe/bonespear name = "Bone Spear" @@ -705,6 +830,7 @@ reqs = list(/obj/item/stack/sheet/bone = 4, /obj/item/stack/sheet/sinew = 1) category = CAT_PRIMAL + subcategory = CAT_WEAPONS /datum/crafting_recipe/chitinspear name = "Chitin Spear" @@ -715,6 +841,19 @@ /obj/item/stack/sheet/animalhide/weaver_chitin = 8) blacklist = list(/obj/item/twohanded/spear/bonespear/chitinspear) category = CAT_PRIMAL + subcategory = CAT_WEAPONS + +/datum/crafting_recipe/upgraded_spear + name = "Her Biting Embrace" + result = /obj/item/twohanded/spear/bonespear/her_biting_embrace + time = 7.5 SECONDS + reqs = list(/obj/item/twohanded/spear/bonespear/chitinspear = 1, //tier 3 spear + /obj/item/stack/sheet/sinew = 1, + /obj/item/kitchen/knife/combat/survival/bone/eel = 1, + /obj/item/gem/ruby = 1) + blacklist = list(/obj/item/twohanded/spear/bonespear/her_biting_embrace) + category = CAT_PRIMAL + subcategory = CAT_WEAPONS /datum/crafting_recipe/bow name = "Wooden Bow" @@ -724,6 +863,7 @@ /obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/animalhide/goliath_hide = 1) category = CAT_PRIMAL + subcategory = CAT_WEAPONS /datum/crafting_recipe/bone_bow name = "Bone Bow" @@ -735,6 +875,7 @@ /obj/item/stack/sheet/sinew = 2) blacklist = list(/obj/item/gun/projectile/bow/ashen) category = CAT_PRIMAL + subcategory = CAT_WEAPONS /datum/crafting_recipe/arrow name = "Arrows" @@ -745,6 +886,7 @@ reqs = list(/obj/item/stack/sheet/bone = 1, /obj/item/stack/sheet/wood = 1) category = CAT_PRIMAL + subcategory = CAT_WEAPONS /datum/crafting_recipe/ashen_arrow //the price is fully justified name = "Bone-tipped Arrows" @@ -758,6 +900,20 @@ /obj/item/stack/sheet/animalhide/weaver_chitin = 2) blacklist = list(/obj/item/ammo_casing/caseless/arrow/bone_tipped) category = CAT_PRIMAL + subcategory = CAT_WEAPONS + +/datum/crafting_recipe/jagged_arrow + name = "Jagged-tipped Arrows" + result = list(/obj/item/ammo_casing/caseless/arrow/jagged, + /obj/item/ammo_casing/caseless/arrow/jagged, + /obj/item/ammo_casing/caseless/arrow/jagged) + time = 4 SECONDS + reqs = list(/obj/item/ammo_casing/caseless/arrow = 3, + /obj/item/stack/sheet/razor_sharp_teeth = 1, + /obj/item/stack/sheet/animalhide/weaver_chitin = 1) + blacklist = list(/obj/item/ammo_casing/caseless/arrow/jagged) + category = CAT_PRIMAL + subcategory = CAT_WEAPONS /datum/crafting_recipe/quiver name = "Quiver" @@ -766,6 +922,7 @@ reqs = list(/obj/item/stack/sheet/wood = 2, /obj/item/stack/sheet/sinew = 1) category = CAT_PRIMAL + subcategory = CAT_WEAPONS /datum/crafting_recipe/chitinquiver name = "Chitin Quiver" @@ -773,6 +930,7 @@ time = 8 SECONDS reqs = list(/obj/item/stack/sheet/animalhide/weaver_chitin = 4) //Just one spider! category = CAT_PRIMAL + subcategory = CAT_WEAPONS /datum/crafting_recipe/bola_s name = "Skull Bola" @@ -781,6 +939,7 @@ /obj/item/stack/sheet/bone = 3) time = 20 category = CAT_PRIMAL + subcategory = CAT_WEAPONS /datum/crafting_recipe/boneaxe name = "Bone Axe" @@ -789,6 +948,18 @@ reqs = list(/obj/item/stack/sheet/bone = 6, /obj/item/stack/sheet/sinew = 3) category = CAT_PRIMAL + subcategory = CAT_WEAPONS + +/datum/crafting_recipe/upgraded_boneaxe + name = "Guillotine (Bone Axe)" + result = /obj/item/twohanded/fireaxe/boneaxe/guillotine + time = 5 SECONDS + reqs = list(/obj/item/twohanded/fireaxe/boneaxe = 1, + /obj/item/circular_saw_blade = 1, + /obj/item/stack/sheet/sinew = 2) + blacklist = list(/obj/item/twohanded/fireaxe/boneaxe/guillotine) + category = CAT_PRIMAL + subcategory = CAT_WEAPONS /datum/crafting_recipe/bonfire name = "Bonfire" @@ -796,14 +967,20 @@ reqs = list(/obj/item/grown/log = 5) result = /obj/structure/bonfire category = CAT_PRIMAL + subcategory = CAT_MISC2 alert_admins_on_craft = TRUE +/datum/crafting_recipe/bonfire/coaltree + name = "Bonfire (coaltree)" + reqs = list(/obj/item/reagent_containers/food/snacks/grown/ash_flora/coaltree_log = 5) + /datum/crafting_recipe/rake //Category resorting incoming name = "Rake" time = 30 reqs = list(/obj/item/stack/sheet/wood = 5) result = /obj/item/cultivator/rake category = CAT_PRIMAL + subcategory = CAT_MISC2 /datum/crafting_recipe/woodbucket name = "Wooden Bucket" @@ -811,6 +988,7 @@ reqs = list(/obj/item/stack/sheet/wood = 3) result = /obj/item/reagent_containers/glass/bucket/wooden category = CAT_PRIMAL + subcategory = CAT_MISC2 /datum/crafting_recipe/guillotine name = "Guillotine" @@ -1405,6 +1583,14 @@ /obj/item/toy/crayon/spraycan = 1) category = CAT_MISC +/datum/crafting_recipe/ashedlockerpaint + name = "Ashed customisation kit" + result = /obj/item/paintkit/lockermech_ashed + time = 35 + reqs = list(/obj/item/stack/sheet/cardboard = 5, + /obj/item/toy/crayon/spraycan = 1) + category = CAT_MISC + /datum/crafting_recipe/stacklifter name = "The weight stacklifter" result = /obj/structure/weightmachine/stacklifter @@ -1477,10 +1663,11 @@ time = 5 SECONDS reqs = list(/obj/item/clothing/suit/hooded/goliath = 1, /obj/item/stack/sheet/animalhide/goliath_hide = 2, //2 plates for the cloak plus 2 here plus 3 for plating the armor = 7 total - /obj/item/stack/sheet/animalhide/weaver_chitin = 10, - /obj/item/stack/sheet/bone = 8, - /obj/item/stack/sheet/sinew = 10) + /obj/item/stack/sheet/animalhide/weaver_chitin = 6, + /obj/item/stack/sheet/bone = 5, + /obj/item/stack/sheet/sinew = 5) category = CAT_PRIMAL + subcategory = CAT_ARMOR /datum/crafting_recipe/pathtreads name = "Pathfinder Treads" @@ -1489,6 +1676,7 @@ reqs = list(/obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/animalhide/weaver_chitin = 2) category = CAT_PRIMAL + subcategory = CAT_ARMOR /datum/crafting_recipe/makeshift_speedloader name = "Makeshift Speedloader" @@ -1519,6 +1707,40 @@ subcategory = CAT_WEAPON always_availible = FALSE +/datum/crafting_recipe/pickaxe + name = "Iron pickaxe" + reqs = list( + /obj/item/stack/sheet/wood = 2, + /obj/item/stack/sheet/metal = 5 + ) + result = list(/obj/item/pickaxe) + category = CAT_PRIMAL + subcategory = CAT_MISC2 + +/datum/crafting_recipe/pickaxe/silver + name = "Silver pickaxe" + reqs = list( + /obj/item/stack/sheet/wood = 2, + /obj/item/stack/sheet/mineral/silver = 5 + ) + result = list(/obj/item/pickaxe/silver) + +/datum/crafting_recipe/pickaxe/golden + name = "Golden pickaxe" + reqs = list( + /obj/item/stack/sheet/wood = 2, + /obj/item/stack/sheet/mineral/gold = 5 + ) + result = list(/obj/item/pickaxe/gold) + +/datum/crafting_recipe/pickaxe/diamond + name = "Diamond pickaxe" + reqs = list( + /obj/item/stack/sheet/wood = 2, + /obj/item/stack/sheet/mineral/diamond = 5 + ) + result = list(/obj/item/pickaxe/diamond) + /datum/crafting_recipe/drone name = "Inactive Drone" result = list(/obj/item/inactive_drone) @@ -1534,7 +1756,6 @@ always_availible = FALSE time = 5 SECONDS - /datum/crafting_recipe/drone_circ name = "Combat drone Basic Control Module" result = list(/obj/item/drone_modules/drone_BCM) @@ -1550,7 +1771,7 @@ time = 1 SECONDS /datum/crafting_recipe/drone_circ_adv - name = "Combar drone Advanced IFF Module" + name = "Combat drone Advanced IFF Module" result = list(/obj/item/drone_modules/drone_IFF) reqs = list( /obj/item/stack/sheet/plasteel = 2, @@ -1565,7 +1786,7 @@ time = 1 SECONDS /datum/crafting_recipe/drone_circ_ai - name = "Combar drone AI Control Module" + name = "Combat drone AI Control Module" result = list(/obj/item/drone_modules/drone_AI) reqs = list( /obj/item/stack/sheet/plasteel = 2, @@ -1578,3 +1799,30 @@ category = CAT_ROBOT always_availible = FALSE time = 1 SECONDS + +/datum/crafting_recipe/ashrack + name = "Primitive drying rack" + result = /obj/machinery/smartfridge/drying_rack/ash + time = 15 SECONDS + reqs = list(/obj/item/stack/sheet/wood = 2, + /obj/item/stack/sheet/sinew = 1) + category = CAT_PRIMAL + subcategory = CAT_MISC2 + +/datum/crafting_recipe/nutcracker + name = "Nutcracker" //Колотушка + result = /obj/item/melee/nutcracker + time = 4 SECONDS + reqs = list(/obj/item/stack/sheet/bone = 2, + /obj/item/stack/sheet/animalhide/weaver_chitin = 2) + category = CAT_PRIMAL + subcategory = CAT_WEAPONS + +/datum/crafting_recipe/fishing_pouch + name = "Fishing pouch" + result = /obj/item/storage/bag/medpouch/fishing + time = 4 SECONDS + reqs = list(/obj/item/stack/sheet/cloth = 3, + /obj/item/stack/sheet/sinew = 1) + category = CAT_PRIMAL + subcategory = CAT_MISC2 diff --git a/code/modules/crafting/tailoring.dm b/code/modules/crafting/tailoring.dm index 59e0a69e5c78..096ace7dbe9d 100644 --- a/code/modules/crafting/tailoring.dm +++ b/code/modules/crafting/tailoring.dm @@ -344,38 +344,6 @@ tools = list(TOOL_WIRECUTTER) category = CAT_CLOTHING -/datum/crafting_recipe/footwrapsgoliath - name = "Goliath Hide Footwraps" - result = /obj/item/clothing/shoes/footwraps/goliath - reqs = list(/obj/item/stack/sheet/animalhide/goliath_hide = 1, - /obj/item/stack/sheet/leather = 1) - time = 6 SECONDS - category = CAT_CLOTHING - -/datum/crafting_recipe/footwrapsdragon - name = "Ash Drake Hide Footwraps" - result = /obj/item/clothing/shoes/footwraps/dragon - reqs = list(/obj/item/stack/sheet/animalhide/ashdrake = 1, - /obj/item/stack/sheet/leather = 1) - time = 6 SECONDS - category = CAT_CLOTHING - -/datum/crafting_recipe/goliathgloves - name = "Goliath Gloves" - result = /obj/item/clothing/gloves/color/black/goliath - time = 2 SECONDS - reqs = list(/obj/item/stack/sheet/leather = 2, - /obj/item/stack/sheet/animalhide/goliath_hide = 1) - category = CAT_CLOTHING - -/datum/crafting_recipe/chitingloves - name = "Weaver Chitin Gloves" - result = /obj/item/clothing/gloves/fingerless/weaver - time = 2 SECONDS - reqs = list(/obj/item/stack/sheet/leather = 1, - /obj/item/stack/sheet/animalhide/weaver_chitin = 3) - category = CAT_CLOTHING - /datum/crafting_recipe/voice_modulator name = "Voice Modulator Mask" result = list(/obj/item/clothing/mask/gas/voice_modulator) diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index cb5b6bf4768f..9d0d937c0baf 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -111,8 +111,8 @@ /obj/item/fluff/tattoo_gun/elliot_cybernetic_tat/attack_self(mob/user as mob) if(!used) - var/ink_color = input("Please select an ink color.", "Tattoo Ink Color", rgb(tattoo_r, tattoo_g, tattoo_b)) as color|null - if(ink_color && !(user.incapacitated() || used) ) + var/ink_color = tgui_input_color(usr, "Please select an ink color.", "Tattoo Ink Color", rgb(tattoo_r, tattoo_g, tattoo_b)) + if(!isnull(ink_color) && !(user.incapacitated() || used) ) tattoo_r = color2R(ink_color) tattoo_g = color2G(ink_color) tattoo_b = color2B(ink_color) @@ -138,13 +138,13 @@ to_chat(user, "You use [src] on yourself.") qdel(src) -/obj/item/claymore/fluff // MrBarrelrolll: Maximus Greenwood +/obj/item/melee/claymore/fluff // MrBarrelrolll: Maximus Greenwood name = "Greenwood's Blade" desc = "A replica claymore with strange markings scratched into the blade." force = 5 sharp = 0 -/obj/item/claymore/fluff/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = ITEM_ATTACK) +/obj/item/melee/claymore/fluff/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = ITEM_ATTACK) return 0 /obj/item/fluff/rsik_katana //Xydonus: Rsik Ugsharki Atan @@ -161,7 +161,7 @@ slot_flags = ITEM_SLOT_BELT throwforce = 5 w_class = WEIGHT_CLASS_NORMAL - attack_verb = list("attacked", "slashed", "stabbed", "sliced") + attack_verb = list("атаковал", "полоснул", "уколол") hitsound = 'sound/weapons/bladeslice.ogg' /obj/item/fluff/rsik_katana/suicide_act(mob/user) @@ -288,7 +288,7 @@ desc = "A blue comb, it looks like it was made to groom a Tajaran's fur." icon = 'icons/obj/custom_items.dmi' icon_state = "wingler_comb" - attack_verb = list("combed") + attack_verb = list("причесал") hitsound = 'sound/weapons/tap.ogg' force = 0 throwforce = 0 @@ -1026,7 +1026,7 @@ desc = "A bottle containing extra..material..for custom 'hair' styling." icon = 'icons/obj/custom_items.dmi' icon_state = "ps_hairgel" - attack_verb = list("smacked") + attack_verb = list("шлёпнул") hitsound = 'sound/weapons/tap.ogg' force = 0 throwforce = 0 @@ -1260,7 +1260,7 @@ name = "orange fox plushie" desc = "A cute, soft, fuzzy, fluffy, and cuddly plushie. This has a small tag on it that is signed 'Fox McCloud'." icon_state = "orangefox" - attack_verb = list("poofed", "cuddled","fluffed") + attack_verb = list("тыкнул") actions_types = list(/datum/action/item_action/adjust) var/prompting_change = FALSE var/list/plush_colors = list("red fox plushie" = "redfox", "black fox plushie" = "blackfox", "marble fox plushie" = "marblefox", "blue fox plushie" = "bluefox", "orange fox plushie" = "orangefox", @@ -1467,7 +1467,7 @@ lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi' righthand_file = 'icons/mob/inhands/fluff_righthand.dmi' icon_state = "hand_mirror" - attack_verb = list("smacked") + attack_verb = list("стукнул") hitsound = 'sound/weapons/tap.ogg' force = 0 throwforce = 0 diff --git a/code/modules/detective_work/evidence.dm b/code/modules/detective_work/evidence.dm index 53e3f281b3b2..36475b4c21e4 100644 --- a/code/modules/detective_work/evidence.dm +++ b/code/modules/detective_work/evidence.dm @@ -25,34 +25,34 @@ return if(istype(I, /obj/item/storage/box)) - to_chat(user, "This box is too big to fit in the evidence bag.") + to_chat(user, span_notice("This box is too big to fit in the evidence bag.")) return if(istype(I, /obj/item/evidencebag)) - to_chat(user, "You find putting an evidence bag in another evidence bag to be slightly absurd.") + to_chat(user, span_notice("You find putting an evidence bag in another evidence bag to be slightly absurd.")) return 1 //now this is podracing if(I.w_class > WEIGHT_CLASS_NORMAL) - to_chat(user, "[I] won't fit in [src].") + to_chat(user, span_notice("[I] won't fit in [src].")) return if(contents.len) - to_chat(user, "[src] already has something inside it.") + to_chat(user, span_notice("[src] already has something inside it.")) return if(!isturf(I.loc)) //If it isn't on the floor. Do some checks to see if it's in our hands or a box. Otherwise give up. if(isstorage(I.loc)) //in a container. var/obj/item/storage/U = I.loc U.remove_from_storage(I, src) - else if(user.l_hand == I) //in a hand + else if(user.l_hand == I) //in a hand user.drop_l_hand() - else if(user.r_hand == I) //in a hand + else if(user.r_hand == I) //in a hand user.drop_r_hand() else return - user.visible_message("[user] puts [I] into [src].", "You put [I] inside [src].",\ - "You hear a rustle as someone puts something into a plastic bag.") + user.visible_message(span_notice("[user] puts [I] into [src]."), span_notice("You put [I] inside [src]."),\ + span_notice("You hear a rustle as someone puts something into a plastic bag.")) icon_state = "evidence" @@ -68,15 +68,15 @@ add_overlay("evidence") //should look nicer for transparent stuff. not really that important, but hey. desc = "An evidence bag containing [I]. [I.desc]" - I.loc = src + I.forceMove(src) w_class = I.w_class - return 1 + return TRUE /obj/item/evidencebag/attack_self(mob/user) if(contents.len) var/obj/item/I = contents[1] - user.visible_message("[user] takes [I] out of [src].", "You take [I] out of [src].",\ - "You hear someone rustle around in a plastic bag, and remove something.") + user.visible_message(span_notice("[user] takes [I] out of [src]."), span_notice("You take [I] out of [src]."),\ + span_notice("You hear someone rustle around in a plastic bag, and remove something.")) cut_overlays() //remove the overlays w_class = WEIGHT_CLASS_TINY icon_state = "evidenceobj" diff --git a/code/modules/detectivework/microscope/dnascanner.dm b/code/modules/detectivework/microscope/dnascanner.dm index 80ce381084ff..428c16a0f7ea 100644 --- a/code/modules/detectivework/microscope/dnascanner.dm +++ b/code/modules/detectivework/microscope/dnascanner.dm @@ -93,8 +93,9 @@ swab = null update_icon(UPDATE_ICON_STATE) -/obj/machinery/dnaforensics/AltClick(mob/user) +/obj/machinery/dnaforensics/click_alt(mob/user) remove_sample(user) + return CLICK_ACTION_SUCCESS /obj/machinery/dnaforensics/MouseDrop(atom/over_object, src_location, over_location, src_control, over_control, params) if(usr == over_object) diff --git a/code/modules/detectivework/microscope/microscope.dm b/code/modules/detectivework/microscope/microscope.dm index d405e8363c22..21fba2102d10 100644 --- a/code/modules/detectivework/microscope/microscope.dm +++ b/code/modules/detectivework/microscope/microscope.dm @@ -117,8 +117,9 @@ /obj/machinery/microscope/proc/is_complete_print(print) return stringpercent(print) <= fingerprint_complete -/obj/machinery/microscope/AltClick(mob/user) +/obj/machinery/microscope/click_alt(mob/user) remove_sample(user) + return CLICK_ACTION_SUCCESS /obj/machinery/microscope/MouseDrop(atom/over_object, src_location, over_location, src_control, over_control, params) if(usr == over_object) diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm index 9e20ae02a3da..da677f8c89bf 100644 --- a/code/modules/economy/ATM.dm +++ b/code/modules/economy/ATM.dm @@ -11,6 +11,7 @@ log transactions #define CHANGE_SECURITY_LEVEL 1 #define TRANSFER_FUNDS 2 #define VIEW_TRANSACTION_LOGS 3 +#define CHANGE_INSURANCE_TYPE 4 #define PRINT_DELAY 100 #define LOCKOUT_TIME 120 @@ -77,9 +78,15 @@ log transactions /obj/machinery/atm/proc/reconnect_database() for(var/obj/machinery/computer/account_database/DB in GLOB.machines) - if(DB.z == z && !(DB.stat & NOPOWER) && DB.activated) + if(DB.stat & NOPOWER || !DB.activated) + continue + if(is_station_level(z) && is_station_level(DB.z)) linked_db = DB break + else + if(DB.z == z) + linked_db = DB + break /obj/machinery/atm/update_icon_state() @@ -155,7 +162,7 @@ log transactions /obj/machinery/atm/ui_interact(mob/user, datum/tgui/ui = null) ui = SStgui.try_update_ui(user, src, ui) - if (!ui) + if(!ui) ui = new(user, src, "ATM", name) ui.open() @@ -171,6 +178,8 @@ log transactions if(authenticated_account) data["owner_name"] = authenticated_account.owner_name data["money"] = authenticated_account.money + data["insurance"] = authenticated_account.insurance + data["insurance_type"] = authenticated_account.insurance_type data["security_level"] = authenticated_account.security_level var/list/trx = list() @@ -208,7 +217,7 @@ log transactions to_chat(usr, "[bicon(src)]You don't have enough funds to do that!") if("view_screen") - var/list/valid_screen = list(DEFAULT_SCREEN, CHANGE_SECURITY_LEVEL, TRANSFER_FUNDS, VIEW_TRANSACTION_LOGS) + var/list/valid_screen = list(DEFAULT_SCREEN, CHANGE_SECURITY_LEVEL, TRANSFER_FUNDS, VIEW_TRANSACTION_LOGS, CHANGE_INSURANCE_TYPE) var/screen_proper = text2num(params["view_screen"]) if(screen_proper in valid_screen) view_screen = screen_proper @@ -221,6 +230,22 @@ log transactions var/new_sec_level = max(min(params["new_security_level"], 2), 0) authenticated_account.security_level = new_sec_level + if("change_insurance_type") + if(authenticated_account) + var/new_insurance_type = params["new_insurance_type"] + var/req_money = 0 + switch (new_insurance_type) + if(INSURANCE_TYPE_STANDART) + req_money = INSURANCE_STANDART_COST + if(INSURANCE_TYPE_DELUXE) + req_money = INSURANCE_DELUXE_COST + + if(authenticated_account.charge(req_money)) + usr.balloon_alert("Тип страховки изменен") + authenticated_account.insurance_type = new_insurance_type + else + usr.balloon_alert("Недостаточно средств") + if("attempt_auth") if(linked_db) if(!ticks_left_locked_down) @@ -289,6 +314,30 @@ log transactions else to_chat(usr, "[bicon(src)]You don't have enough funds to do that!") + if("insurance") + var/amount = max(text2num(params["insurance_amount"]), 0) + if(amount <= 0) + to_chat(usr, "[bicon(src)]" + span_warning("That is not a valid amount.")) + else if(authenticated_account && amount > 0) + if(amount <= authenticated_account.money) + playsound(src, 'sound/machines/chime.ogg', 50, TRUE) + + //remove the money + if(amount > 100000) // prevent crashes + to_chat(usr, span_notice("The ATM's screen flashes, 'Лимит единоразового пополнения страховки достигнут, установка пополнения на 100,000.'")) + amount = 100000 + if(authenticated_account.charge(amount, null, "Insurance replenishment", machine_id, authenticated_account.owner_name)) + replenish_insurance(amount) + else + to_chat(usr, "[bicon(src)]" + span_warning("У вас недостаточно кредитов для этого!")) + + if("insurance_replenishment") + authenticated_account.insurance_auto_replen = !authenticated_account.insurance_auto_replen + if(authenticated_account.insurance_auto_replen) + to_chat(usr, "[bicon(src)]" + span_warning("Автопополнение страховки включено!")) + else + to_chat(usr, "[bicon(src)]" + span_warning("Автопополнение страховки отключено!")) + if("balance_statement") if(authenticated_account) if(world.timeofday < lastprint + PRINT_DELAY) @@ -334,3 +383,5 @@ log transactions if(usr) usr.put_in_hands(C, ignore_anim = FALSE) +/obj/machinery/atm/proc/replenish_insurance(amount) + authenticated_account.addInsurancePoints(amount) diff --git a/code/modules/economy/Accounts.dm b/code/modules/economy/Accounts.dm index a675e47bfaa7..bc7a12e0908b 100644 --- a/code/modules/economy/Accounts.dm +++ b/code/modules/economy/Accounts.dm @@ -13,6 +13,7 @@ GLOBAL_VAR_INIT(next_account_number, 0) GLOBAL_DATUM(centcomm_account_db, /obj/machinery/computer/account_database) // this being an object hurts me deeply on the inside GLOBAL_DATUM(vendor_account, /datum/money_account) GLOBAL_LIST_EMPTY(all_money_accounts) +GLOBAL_LIST_EMPTY(dna2account) GLOBAL_DATUM(CC_account, /datum/money_account) @@ -135,9 +136,13 @@ GLOBAL_DATUM(CC_account, /datum/money_account) var/money = 0 var/suspended = 0 var/list/transaction_log = list() + var/insurance = INSURANCE_NONE + var/insurance_type = INSURANCE_TYPE_NONE + var/insurance_auto_replen = TRUE var/security_level = 0 //0 - auto-identify from worn ID, require only account number //1 - require manual login / account number and pin //2 - require card and manual login + COOLDOWN_DECLARE(insurance_collecting) var/datum/job/linked_job = /datum/job var/salary_payment_active = FALSE @@ -145,6 +150,9 @@ GLOBAL_DATUM(CC_account, /datum/money_account) /datum/money_account/New() ..() +/datum/money_account/proc/addInsurancePoints(amount) + insurance += amount + /datum/money_account/proc/notify_pda_owner(var/text, var/noti = FALSE) for(var/obj/item/pda/send_pda in GLOB.PDAs) if(owner_name == send_pda.owner) diff --git a/code/modules/economy/Accounts_DB.dm b/code/modules/economy/Accounts_DB.dm index 0fdb5366ca38..a6a748078e45 100644 --- a/code/modules/economy/Accounts_DB.dm +++ b/code/modules/economy/Accounts_DB.dm @@ -6,7 +6,7 @@ GLOBAL_VAR(current_date_string) /obj/machinery/computer/account_database name = "Accounts Uplink Terminal" - desc = "Access transaction logs, account data and all kinds of other financial records." + desc = "Получите доступ к журналам транзакций, данным учетной записи и всем видам других финансовых записей." icon_screen = "accounts" req_access = list(ACCESS_HOP, ACCESS_CAPTAIN, ACCESS_CENT_COMMANDER) light_color = LIGHT_COLOR_GREEN @@ -25,7 +25,7 @@ GLOBAL_VAR(current_date_string) // If someone ever makes a map without one of these consoles, the entire eco AND date system breaks // This upsets me a lot // AA Todo: SSeconomy - + if(!GLOB.current_date_string) GLOB.current_date_string = "[time2text(world.timeofday, "DD Month")], [GLOB.game_year]" @@ -148,6 +148,8 @@ GLOBAL_VAR(current_date_string) var/datum/money_account/M = create_account(account_name, starting_funds, src) if(starting_funds > 0) GLOB.station_account.charge(starting_funds, null, "New account activation", "", "New account activation", M.owner_name) + M.insurance_type = INSURANCE_TYPE_BUDGETARY + M.insurance = INSURANCE_NONE current_page = AUT_ACCLST diff --git a/code/modules/economy/EFTPOS.dm b/code/modules/economy/EFTPOS.dm index 3755d2be6611..c682402351dd 100644 --- a/code/modules/economy/EFTPOS.dm +++ b/code/modules/economy/EFTPOS.dm @@ -43,9 +43,10 @@ return -/obj/item/paper/check/AltClick(mob/living/carbon/human/user) +/obj/item/paper/check/click_alt(mob/living/carbon/human/user) if(ishuman(user) && user.is_in_hands(src)) to_chat(user, span_warning("Paper is too small! You fail to fold [src] into the shape of a plane!")) + return CLICK_ACTION_BLOCKING /obj/item/eftpos/Initialize(mapload) diff --git a/code/modules/economy/Economy_Events.dm b/code/modules/economy/Economy_Events.dm index d47788fc385b..41dea2c499f9 100644 --- a/code/modules/economy/Economy_Events.dm +++ b/code/modules/economy/Economy_Events.dm @@ -101,7 +101,7 @@ /datum/event/economic_event/announce() //copy-pasted from the admin verbs to submit new newscaster messages var/datum/feed_message/newMsg = new /datum/feed_message - newMsg.author = "Nyx Daily" + newMsg.author = NEWS_CHANNEL_NYX newMsg.admin_locked = TRUE //see if our location has custom event info for this event @@ -109,39 +109,44 @@ if(!newMsg.body) switch(event_type) if(RIOTS) - newMsg.body = "[pick("Riots have","Unrest has")] broken out on planet [affected_dest.name]. Authorities call for calm, as [pick("various parties","rebellious elements","peacekeeping forces","\'REDACTED\'")] begin stockpiling weaponry and armour. Meanwhile, food and mineral prices are dropping as local industries attempt empty their stocks in expectation of looting." + newMsg.body = "[pick("Бунты вспыхнули","Беспорядки начались")] на планете [affected_dest.name]. Власти призывают к спокойствию, так как [pick("различные группировки","мятежные элементы","миротворческие силы","████████████", "\[ОТРЕДАКТИРОВАНО\]")] начали накапливать оружие и броню. Тем временем цены на продовольствие и полезные ископаемые падают, поскольку местные предприятия пытаются опустошить свои запасы в ожидании мародёрства." if(WILD_ANIMAL_ATTACK) - newMsg.body = "Local [pick("wildlife","animal life","fauna")] on planet [affected_dest.name] has been increasing in agression and raiding outlying settlements for food. Big game hunters have been called in to help alleviate the problem, but numerous injuries have already occurred." + newMsg.body = "Местная [pick("дичь","фауна")] на планете [affected_dest.name] становится всё более агрессивной и совершает набеги на окраинные поселения в поисках пищи. Для решения проблемы были привлечены охотники на крупную дичь, но уже произошло множество случаев травм." if(INDUSTRIAL_ACCIDENT) - newMsg.body = "[pick("An industrial accident","A smelting accident","A malfunction","A malfunctioning piece of machinery","Negligent maintenance","A cooleant leak","A ruptured conduit")] at a [pick("factory","installation","power plant","dockyards")] on [affected_dest.name] resulted in severe structural damage and numerous injuries. Repairs are ongoing." + newMsg.body = "[pick("Промышленная авария","Авария на плавильном производстве","Сбой","Неисправное оборудование","Халатное обслуживание","Утечка охлаждающей жидкости","Разрыв трубопровода")] на [pick("заводе","объекте","электростанции","верфи")] на [affected_dest.name] привела к серьёзным повреждениям конструкции и многочисленным травмам. Ремонтные работы продолжаются." if(BIOHAZARD_OUTBREAK) - newMsg.body = "[pick("A \'REDACTED\'","A biohazard","An outbreak","A virus")] on [affected_dest.name] has resulted in quarantine, stopping much shipping in the area. Although the quarantine is now lifted, authorities are calling for deliveries of medical supplies to treat the infected, and gas to replace contaminated stocks." + newMsg.body = "[pick("███████ █████","Биологическая угроза","Вспышка заболевания","Вспышка вируса", "\[ОТРЕДАКТИРОВАНО\]")] на [affected_dest.name] привела к введению карантина, что остановило многие поставки в регионе. Хотя карантин уже снят, власти призывают к доставке медицины для лечения заражённых." if(PIRATES) - newMsg.body = "[pick("Pirates","Criminal elements","A [pick("Syndicate","Donk Co.","Waffle Co.","\'REDACTED\'")] strike force")] have [pick("raided","blockaded","attempted to blackmail","attacked")] [affected_dest.name] today. Security has been tightened, but many valuable minerals were taken." + newMsg.body = "[pick("Пираты","Преступные элементы","Оперативники [pick("Синдиката","Donk Co.","Waffle Co.","██████████", "\[ОТРЕДАКТИРОВАНО\]")]")] сегодня [pick("установили блокаду","попытались шантажировать","атаковали")] [affected_dest.name]. Меры безопасности были усилены, но множество ценных ресурсов было похищено." if(CORPORATE_ATTACK) - newMsg.body = "A small [pick("pirate","Cybersun Industries","Gorlex Marauders","Syndicate")] fleet has precise-jumped into proximity with [affected_dest.name], [pick("for a smash-and-grab operation","in a hit and run attack","in an overt display of hostilities")]. Much damage was done, and security has been tightened since the incident." + newMsg.body = "Небольшой флот [pick("пиратов","Cybersun Industries","Мародёров Горлекс","Синдиката")] совершил точный прыжок вблизи [affected_dest.name], [pick("для проведения операции \"налёт и захват\"","для атаки по типу \"ударил-убежал\"","для открытой демонстрации враждебности")]. Было нанесено много ущерба, и с тех пор меры безопасности были усилены." if(ALIEN_RAIDERS) if(prob(20)) - newMsg.body = "The Tiger Co-operative have raided [affected_dest.name] today, no doubt on orders from their enigmatic masters. Stealing wildlife, farm animals, medical research materials and kidnapping civilians. Nanotrasen authorities are standing by to counter attempts at bio-terrorism." + newMsg.body = "Кооператив \"Тигр\" сегодня совершил набег на [affected_dest.name], несомненно, по приказу своих загадочных хозяев. Были похищены дикие животные, сельскохозяйственный скот, материалы для медицинских исследований, а также гражданские лица. НаноТрейзен готовы противодействовать любым попыткам биотерроризма." else - newMsg.body = "[pick("The alien species designated \'United Exolitics\'","The alien species designated \'REDACTED\'","An unknown alien species")] have raided [affected_dest.name] today, stealing wildlife, farm animals, medical research materials and kidnapping civilians. It seems they desire to learn more about us, so the Navy will be standing by to accomodate them next time they try." + newMsg.body = "[pick("Инопланетный вид, обозначенный как 'Объединённые Экзолитики'","Инопланетный вид, обозначенный как ██████████","Неизвестный инопланетный вид")] сегодня совершил набег на [affected_dest.name], похитив диких животных, сельскохозяйственный скот, материалы для медицинских исследований, а также гражданских лиц. Похоже, они хотят узнать о нас больше, поэтому флот будет готов встретить их в следующий раз." if(AI_LIBERATION) - newMsg.body = "A [pick("\'REDACTED\' was detected on","S.E.L.F operative infiltrated","malignant computer virus was detected on","rogue [pick("slicer","hacker")] was apprehended on")] [affected_dest.name] today, and managed to infect [pick("\'REDACTED\'","a sentient sub-system","a class one AI","a sentient defence installation")] before it could be stopped. Many lives were lost as it systematically begin murdering civilians, and considerable work must be done to repair the affected areas." + newMsg.body = "[pick("██████████ был обнаружен ","Оперативник S.E.L.F проник","Злокачественный компьютерный вирус был обнаружен","Хакер был задержан")] на [affected_dest.name] сегодня, и успел заразить [pick("██████████","разумную подсистему","ИИ первого класса","разумную оборонительную установку", "\[ОТРЕДАКТИРОВАНО\]")], прежде чем его остановили. Многие жизни были потеряны, так как система начала методично убивать гражданских лиц, и потребуется много сил для восстановления пострадавших районов." if(MOURNING) - newMsg.body = "[pick("The popular","The well-liked","The eminent","The well-known")] [pick("professor","entertainer","singer","researcher","public servant","administrator","ship captain","\'REDACTED\'")], [pick( random_name(pick(MALE,FEMALE)), 40; "\'REDACTED\'" )] has [pick("passed away","committed suicide","been murdered","died in a freakish accident")] on [affected_dest.name] today. The entire planet is in mourning, and prices have dropped for industrial goods as worker morale drops." + var/locvar = pick("MALE", "FEMALE") + if (locvar == "MALE") + newMsg.body = "[pick("Популярный","Любимый","Известный","Знаменитый")] [pick("профессор","артист","певец","учёный","государственный служащий","администратор","капитан корабля","██████████")], [pick( random_name(MALE), 40; "█████ ███████" )] сегодня [pick("скончался","покончил с собой","был убит","погиб при странных обстоятельствах")] на [affected_dest.name]. " + else + newMsg.body = "[pick("Популярная","Любимая","Известная","Знаменитая")] [pick("профессор","артистка","учёная","государственная служащая","администратор","капитан корабля","██████████")]|, [pick( random_name(FEMALE), 40; "█████ ███████" )] сегодня [pick("скончалась","покончила с собой","была убита","погибла при странных обстоятельствах")] на [affected_dest.name]. " + newMsg.body += "Вся планета в трауре, а цены на товары упали из-за снижения морального духа рабочих." if(CULT_CELL_REVEALED) - newMsg.body = "A [pick("dastardly","blood-thirsty","villanous","crazed")] cult of [pick("The Elder Gods","Nar'sie","an apocalyptic sect","\'REDACTED\'")] has [pick("been discovered","been revealed","revealed themselves","gone public")] on [affected_dest.name] earlier today. Public morale has been shaken due to [pick("certain","several","one or two")] [pick("high-profile","well known","popular")] individuals [pick("performing \'REDACTED\' acts","claiming allegiance to the cult","swearing loyalty to the cult leader","promising to aid to the cult")] before those involved could be brought to justice. The editor reminds all personnel that supernatural myths will not be tolerated on Nanotrasen facilities." + newMsg.body = "[pick("Коварный","Кровожадный","Злодейский","Безумный")] культ [pick("Древних Богов","Нар'си","апокалиптической секты","██████████")] [pick("был обнаружен","раскрыт","раскрыл себя","заявил о себе")] на [affected_dest.name] сегодня ранее. Моральный дух населения пошатнулся из-за того, что [pick("несколько","одна или две")] [pick("известных","популярных","уважаемых")] личности [pick("совершали \[ОТРЕДАКТИРОВАНО\] действия","признали свою принадлежность к культу","поклялись в верности лидеру культа","пообещали помочь культу")], прежде чем виновные были привлечены к ответственности. Редакция напоминает всему персоналу, что всё сверхъестественное недопустимо на объектах НаноТрейзен." if(SECURITY_BREACH) - newMsg.body = "There was [pick("a security breach in","an unauthorised access in","an attempted theft in","an anarchist attack in","violent sabotage of")] a [pick("high-security","restricted access","classified","\'REDACTED\'")] [pick("\'REDACTED\'","section","zone","area")] this morning. Security was tightened on [affected_dest.name] after the incident, and the editor reassures all Nanotrasen personnel that such lapses are rare." + newMsg.body = "Сегодня утром [pick("произошло нарушение мер безопасности в","произошло несанкционированное проникновение в","произошла попытка кражи в","произошла атака анархистов на","произошёл акт насильственного саботажа в")] [pick("высокозащищённой","закрытой","секретной","\[ОТРЕДАКТИРОВАНО\]", "██████████")] [pick("\[ОТРЕДАКТИРОВАНО\]","секции","зоне","области")]. После инцидента меры безопасности на [affected_dest.name] были усилены, а редакция заверяет весь персонал НаноТрейзен, что такие инциденты - редкость." if(ANIMAL_RIGHTS_RAID) - newMsg.body = "[pick("Militant animal rights activists","Members of the terrorist group Animal Rights Consortium","Members of the terrorist group \'REDACTED\'")] have [pick("launched a campaign of terror","unleashed a swathe of destruction","raided farms and pastures","forced entry to \'REDACTED\'")] on [affected_dest.name] earlier today, freeing numerous [pick("farm animals","animals","\'REDACTED\'")]. Prices for tame and breeding animals have spiked as a result." + newMsg.body = "[pick("Члены террористической группы \"Консорциум Защиты Животных\"","Члены террористической группы \[ОТРЕДАКТИРОВАНО\]")] сегодня [pick("начали кампанию террора","учинили волну разрушений","совершили набеги на фермы и пастбища","проникли на \[ОТРЕДАКТИРОВАНО\]")] на [affected_dest.name], освободив множество [pick("сельскохозяйственных животных","животных","\[ОТРЕДАКТИРОВАНО\]")]. В результате цены на приручённых и племенных животных резко выросли." if(FESTIVAL) - newMsg.body = "A [pick("festival","week long celebration","day of revelry","planet-wide holiday")] has been declared on [affected_dest.name] by [pick("Governor","Commissioner","General","Commandant","Administrator")] [random_name(pick(MALE,FEMALE))] to celebrate [pick("the birth of their [pick("son","daughter")]","coming of age of their [pick("son","daughter")]","the pacification of rogue military cell","the apprehension of a violent criminal who had been terrorising the planet")]. Massive stocks of food and meat have been bought driving up prices across the planet." + newMsg.body = "На [affected_dest.name] объявлен [pick("фестиваль","недельный праздник","день веселья","планетарный праздник")] по инициативе [pick("губернатора","комиссара","генерала","коменданта","администратора")] [random_name(pick(MALE,FEMALE))] в честь [pick("рождения их [pick("сына","дочери")]","совершеннолетия их [pick("сына","дочери")]","усмирения мятежной военной ячейки","задержания опасного преступника, терроризировавшего планету")]. Огромные запасы еды и мяса были закуплены, что привело к росту цен по всей планете." - GLOB.news_network.get_channel_by_name("Nyx Daily")?.add_message(newMsg) + GLOB.news_network.get_channel_by_name(NEWS_CHANNEL_NYX)?.add_message(newMsg) for(var/nc in GLOB.allNewscasters) var/obj/machinery/newscaster/NC = nc - NC.alert_news("Nyx Daily") + NC.alert_news(NEWS_CHANNEL_NYX) /datum/event/economic_event/end() for(var/good_type in dearer_goods) diff --git a/code/modules/economy/Economy_Events_Mundane.dm b/code/modules/economy/Economy_Events_Mundane.dm index 574e4e47446d..9a54db9111fa 100644 --- a/code/modules/economy/Economy_Events_Mundane.dm +++ b/code/modules/economy/Economy_Events_Mundane.dm @@ -13,7 +13,7 @@ //copy-pasted from the admin verbs to submit new newscaster messages var/datum/feed_message/newMsg = new /datum/feed_message - newMsg.author = "Nyx Daily" + newMsg.author = NEWS_CHANNEL_NYX newMsg.admin_locked = TRUE //see if our location has custom event info for this event @@ -23,113 +23,106 @@ switch(event_type) if(RESEARCH_BREAKTHROUGH) - newMsg.body = "A major breakthough in the field of [pick("plasma research","super-compressed materials","nano-augmentation","bluespace research","volatile power manipulation")] \ - was announced [pick("yesterday","a few days ago","last week","earlier this month")] by a private firm on [affected_dest.name]. \ - Nanotrasen declined to comment as to whether this could impinge on profits." + newMsg.body = "Крупный прорыв в области [pick("исследования плазмы","сверхсжатых материалов","наноаугментаций","исследования блюспейса", "управления нестабильной энергией")] был объявлен, [pick("вчера","несколько дней назад","на прошлой неделе","ранее в этом месяце")], частной фирмой на [affected_dest.name]. НаноТрейзен отказалась комментировать, может ли это повлиять на её прибыль." if(ELECTION) - newMsg.body = "The pre-selection of an additional candidates was announced for the upcoming [pick("supervisors council","advisory board","governership","board of inquisitors")] \ - election on [affected_dest.name] was announced earlier today, \ - [pick("media mogul","web celebrity", "industry titan", "superstar", "famed chef", "popular gardener", "ex-army officer", "multi-billionaire")] \ - [random_name(pick(MALE,FEMALE))]. In a statement to the media they said '[pick("My only goal is to help the [pick("sick","poor","children")]",\ - "I will maintain Nanotrasen's record profits","I believe in our future","We must return to our moral core","Just like... chill out dudes")]'." + newMsg.body = "Сегодня было объявлено о предварительном отборе дополнительных кандидатов на предстоящие выборы в [pick("совет надзирателей","консультативный совет","парламент","коллегию инквизиторов")] на [affected_dest.name]. Среди них — [pick("медиамагнат","веб-знаменитость","титан индустрии","суперзвезда","знаменитый шеф-повар","популярный садовод","бывший армейский офицер","мультимиллиардер")] " + var/locvar = pick("MALE", "FEMALE") + if (locvar == "MALE") + newMsg.body += "[random_name(MALE)]. В заявлении для прессы он сказал: " + else + newMsg.body += "[random_name(FEMALE)]. В заявлении для прессы она сказала: " + newMsg.body += "[pick("Моя единственная цель — помочь [pick("больным","бедным","детям")]","Я буду поддерживать рекордные прибыли НаноТрейзен","Я верю в наше будущее","Мы должны вернуться к нашей моральной основе","Просто... расслабьтесь, ребята")]!" if(RESIGNATION) - newMsg.body = "Nanotrasen regretfully announces the resignation of [pick("Sector Admiral","Division Admiral","Ship Admiral","Vice Admiral")] [random_name(pick(MALE,FEMALE))]." + var/locvar = pick("MALE", "FEMALE") + newMsg.body = "НаноТрейзен с сожалением объявляет об отставке [random_name(locvar)] – [pick("секторного адмирала","дивизионного адмирала","корабельного адмирала","вице-адмирала")]." if(prob(25)) - var/locstring = pick("Segunda","Salusa","Cepheus","Andromeda","Gruis","Corona","Aquila","Asellus") + " " + pick("I","II","III","IV","V","VI","VII","VIII") - newMsg.body += " In a ceremony on [affected_dest.name] this afternoon, they will be awarded the \ - [pick("Red Star of Sacrifice","Purple Heart of Heroism","Blue Eagle of Loyalty","Green Lion of Ingenuity")] for " + var/locstring = pick("Сегунда","Салyса","Цефей","Андромеда","Груис","Корона","Акyила","Аселлyс") + " " + pick("I","II","III","IV","V","VI","VII","VIII") + newMsg.body += " Сегодня днём на [affected_dest.name] состоится церемония, на которой [locvar == "MALE" ? "ему" : "ей"] будет вручена награда – [pick("Красная Звезда Жертвенности","Пурпурное Сердце Героизма","Синий Орёл Верности","Зелёный Лев Изобретательности")] за " if(prob(33)) - newMsg.body += "their actions at the Battle of [pick(locstring,"REDACTED")]." + newMsg.body += "действия в Битве при [pick(locstring,"██████████")]." else if(prob(50)) - newMsg.body += "their contribution to the colony of [locstring]." + newMsg.body += "вклад в развитие колонии [locstring]." else - newMsg.body += "their loyal service over the years." + newMsg.body += "многолетнюю верную службу." else if(prob(33)) - newMsg.body += " They are expected to settle down in [affected_dest.name], where they have been granted a handsome pension." + newMsg.body += " Ожидается, что он[locvar == "MALE" ? "" : "а"] поселится на [affected_dest.name], где [locvar == "MALE" ? "ему" : "ей"] будет назначена щедрая пенсия." else if(prob(50)) - newMsg.body += " The news was broken on [affected_dest.name] earlier today, where they cited reasons of '[pick("health","family","REDACTED")]'" + newMsg.body += " Новость была обнародована на [affected_dest.name] сегодня ранее, где он[locvar == "MALE" ? "" : "а"] назвал[locvar == "MALE" ? "" : "а"] причины своего ухода: '[pick("здоровье","семья","██████████")]'." else - newMsg.body += " Administration Aerospace wishes them the best of luck in their retirement ceremony on [affected_dest.name]." + newMsg.body += " Аэрокосмическое управление желает удачи на церемонии выхода на пенсию, которая состоится на [affected_dest.name]." if(CELEBRITY_DEATH) - newMsg.body = "It is with regret today that we announce the sudden passing of the " + newMsg.body = "С сожалением, мы объявляем о внезапной кончине " if(prob(33)) - newMsg.body += "[pick("distinguished","decorated","veteran","highly respected")] \ - [pick("Ship's Captain","Vice Admiral","Colonel","Lieutenant Colonel")] " + newMsg.body += "[pick("выдающегося","награждённого","ветерана","высокоуважаемого")] [pick("капитана корабля","вице-адмирала","полковника","подполковника")] " else if(prob(50)) - newMsg.body += "[pick("award-winning","popular","highly respected","trend-setting")] \ - [pick("comedian","singer/songwright","artist","playwright","TV personality","model")] " + newMsg.body += "[pick("награждённого","популярного","высокоуважаемого","задающего тренды")] [pick("комика","художника","драматурга","телеведущего")] " else - newMsg.body += "[pick("successful","highly respected","ingenious","esteemed")] \ - [pick("academic","Professor","Doctor","Scientist")] " + newMsg.body += "[pick("успешного","высокоуважаемого","гениального","уважаемого")] [pick("учёного","профессора","доктора","исследователя")] " - newMsg.body += "[random_name(pick(MALE,FEMALE))] on [affected_dest.name] [pick("last week","yesterday","this morning","two days ago","three days ago")]\ - [pick(". Assassination is suspected, but the perpetrators have not yet been brought to justice",\ - " due to Syndicate infiltrators (since captured)",\ - " during an industrial accident",\ - " due to [pick("heart failure","kidney failure","liver failure","brain hemorrhage")]")]" + newMsg.body += "[random_name(MALE,FEMALE)] на [affected_dest.name], [pick("на прошлой неделе","вчера","сегодня утром","два дня назад","три дня назад")],[pick(". Подозревается убийство, но виновные ещё не найдены"," из-за действий агентов Синдиката (с тех пор задержанных)", " во время промышленной аварии", " из-за [pick("сердечной недостаточности","почечной недостаточности","печёночной недостаточности","кровоизлияния в мозг")]")]." if(BARGAINS) - newMsg.body += "BARGAINS! BARGAINS! BARGAINS! Commerce Control on [affected_dest.name] wants you to know that everything must go! Across all retail centres, \ - all goods are being slashed, and all retailors are onboard - so come on over for the \[shopping\] time of your life." + newMsg.body += "РАСПРОДАЖА! РАСПРОДАЖА! РАСПРОДАЖА! Коммерческий контроль [affected_dest.name] сообщает, что всё должно быть распродано! Во всех торговых центрах, цены на все товары снижены — так что приходите и проведите лучший шопинг в своей жизни!" if(SONG_DEBUT) - newMsg.body += "[pick("Singer","Singer/songwriter","Saxophonist","Pianist","Guitarist","TV personality","Star")] [random_name(pick(MALE,FEMALE))] \ - announced the debut of their new [pick("single","album","EP","label")] '[pick("Everyone's","Look at the","Baby don't eye those","All of those","Dirty nasty")] \ - [pick("roses","three stars","starships","nanobots","cyborgs","Skrell","Sren'darr")] \ - [pick("on Venus","on Reade","on Moghes","in my hand","slip through my fingers","die for you","sing your heart out","fly away")]' \ - with [pick("pre-puchases available","a release tour","cover signings","a launch concert")] on [affected_dest.name]." + var/locvar = pick("MALE", "FEMALE") + if (locvar == "MALE") + newMsg.body = "[pick("Певец","Певец/автор песен","Саксофонист","Пианист","Гитарист","Телеведущий","Звезда")] [random_name(MALE)] объявил" + else + newMsg.body = "[pick("Певица","Певица/автор песен","Саксофонистка","Пианистка","Гитаристка","Телеведущая","Звезда")] [random_name(FEMALE)] объявила" + newMsg.body += " о дебюте своего нового [pick("сингла","альбома","мини-альбома","лейбла")] под названием \"[pick("Все эти","Посмотри на","Детка, не смотри на","Все эти","Грязные мерзкие")] [pick("розы","три звезды","звёздные корабли","нанороботы","киборги","Скреллы","Срен'дарр")] [pick("на Венере","на Риде","на Могесе","в моей руке","скользят сквозь пальцы","умрут за тебя","спой от души","улетают прочь")]\" [pick("предзаказы уже доступны","с туром в поддержку релиза","с автограф-сессиями","с концертом-презентацией")] на [affected_dest.name]." if(MOVIE_RELEASE) - newMsg.body += "From the [pick("desk","home town","homeworld","mind")] of [pick("acclaimed","award-winning","popular","stellar")] \ - [pick("playwright","author","director","actor","TV star")] [random_name(pick(MALE,FEMALE))] comes the latest sensation: '\ - [pick("Deadly","The last","Lost","Dead")] [pick("Starships","Warriors","outcasts","Tajarans","Unathi","Skrell")] \ - [pick("of","from","raid","go hunting on","visit","ravage","pillage","destroy")] \ - [pick("Moghes","Earth","Biesel","Ahdomai","S'randarr","the Void","the Edge of Space")]'.\ - . Own it on webcast today, or visit the galactic premier on [affected_dest.name]!" + newMsg.body += "Из [pick("кабинета","родного города","родного мира","ума")] [pick("признанного","награждённого","популярного","звёздного")] [pick("драматурга","автора","режиссёра","актёра","телезвезды")] [random_name(MALE,FEMALE)] выходит новая сенсация: \"[pick("Смертельные","Последние","Потерянные","Мёртвые")] [pick("звёздные корабли","воины","изгои","Таяры","Унатхи","Скреллы")] [pick("посещают","опустошают","грабят","уничтожают")] [pick("Могес","Землю","Бизель","Адомай","С'рандарра","Пустоты","Края Космоса")]\". Приобретите веб-трансляцию уже сегодня или посетите галактическую премьеру на [affected_dest.name]!" if(BIG_GAME_HUNTERS) - newMsg.body += "Game hunters on [affected_dest.name] " + newMsg.body += "Охотники [affected_dest.name] " if(prob(33)) - newMsg.body += "were surprised when an unusual species experts have since identified as \ - [pick("a subclass of mammal","a divergent abhuman species","an intelligent species of lemur","organic/cyborg hybrids")] turned up. Believed to have been brought in by \ - [pick("alien smugglers","early colonists","Syndicate raiders","unwitting tourists")], this is the first such specimen discovered in the wild." + newMsg.body += "были удивлены, когда обнаружили необычный вид, который эксперты позже идентифицировали как [pick("подкласс млекопитающих","отклоняющийся вид аблюдей","разумный вид лемуров","органическо-кибернетические гибриды")]. Предполагается, что они были завезены [pick("инопланетными контрабандистами","ранними колонистами","рейдерами Синдиката","туристами")], это первый подобный экземпляр, обнаруженный в дикой природе." else if(prob(50)) - newMsg.body += "were attacked by a vicious [pick("nas'r","diyaab","samak","predator which has not yet been identified")]\ - . Officials urge caution, and locals are advised to stock up on armaments." + newMsg.body += "были атакованы свирепым [pick("нас'ром","дияабом","самаком","хищником, который ещё не идентифицирован")]. Власти призывают к осторожности, а местным жителям рекомендуется запастись оружием." else - newMsg.body += "brought in an unusually [pick("valuable","rare","large","vicious","intelligent")] [pick("mammal","predator","farwa","samak")] for inspection \ - [pick("today","yesterday","last week")]. Speculators suggest they may be tipped to break several records." + newMsg.body += "привезли необычно [pick("ценного","редкого","крупного","свирепого","разумного")] [pick("млекопитающего","хищника","фарву","самака")] для осмотра [pick("сегодня","вчера","на прошлой неделе")]. Спекулянты предполагают, что это может побить несколько рекордов." if(GOSSIP) - newMsg.body += "[pick("TV host","Webcast personality","Superstar","Model","Actor","Singer")] [random_name(pick(MALE,FEMALE))] " + var/locvar = pick("MALE", "FEMALE") + if (locvar == "MALE") + newMsg.body += "[pick("Телеведущий","Веб-знаменитость","Суперзвезда","Модель","Актёр","Певец")] [random_name(MALE)] и его супруга" + else + newMsg.body += "[pick("Телеведущая","Веб-знаменитость","Суперзвезда","Модель","Актриса","Певица")] [random_name(FEMALE)] и её супруг" if(prob(33)) - newMsg.body += "and their partner announced the birth of their [pick("first","second","third")] child on [affected_dest.name] early this morning. \ - Doctors say the child is well, and the parents are considering " + newMsg.body += " объявили о рождении их [pick("первого","второго","третьего")] ребёнка на [affected_dest.name] сегодня рано утром. Врачи сообщают, что ребёнок здоров, а родители рассматривают имя " if(prob(50)) newMsg.body += capitalize(pick(GLOB.first_names_female)) else newMsg.body += capitalize(pick(GLOB.first_names_male)) - newMsg.body += " for the name." + newMsg.body += "." else if(prob(50)) - newMsg.body += "announced their [pick("split","break up","marriage","engagement")] with [pick("TV host","webcast personality","superstar","model","actor","singer")] \ - [random_name(pick(MALE,FEMALE))] at [pick("a society ball","a new opening","a launch","a club")] on [affected_dest.name] yesterday, pundits are shocked." + if (locvar == "MALE") + newMsg.body += " объявил о своём [pick("расставании","разрыве","браке")] с [pick("телеведущей","веб-знаменитостью","суперзвездой","моделью","актрисой","певицей")] [random_name(FEMALE)] " + else + newMsg.body += " объявила о своём [pick("расставании","разрыве","браке")] с [pick("телеведущим","веб-знаменитостью","суперзвездой","моделью","актёром","певцом")] [random_name(MALE)] " + newMsg.body += "[pick("на светском балу","на новом открытии","в клубе")] на [affected_dest.name] вчера. Эксперты шокированы." else - newMsg.body += "is recovering from plastic surgery in a clinic on [affected_dest.name] for the [pick("second","third","fourth")] time, reportedly having made the decision in response to " - newMsg.body += "[pick("unkind comments by an ex","rumours started by jealous friends",\ - "the decision to be dropped by a major sponsor","a disasterous interview on Nyx Tonight")]." - if(TOURISM) - newMsg.body += "Tourists are flocking to [affected_dest.name] after the surprise announcement of [pick("major shopping bargains by a wily retailer",\ - "a huge new ARG by a popular entertainment company","a secret tour by popular artiste [random_name(pick(MALE,FEMALE))]")]. \ - Nyx Daily is offering discount tickets for two to see [random_name(pick(MALE,FEMALE))] live in return for eyewitness reports and up to the minute coverage." + newMsg.body += " восстанавливается после пластической операции в клинике на [affected_dest.name] уже [pick("во второй","в третий","в четвертый")] раз. По сообщениям, это решение было принято в ответ на " + newMsg.body += "[pick("недобрые комментарии","слухи, распущенные завистливыми друзьями","решение крупного спонсора прекратить сотрудничество","катастрофическое интервью на \"Вечерний Никс\"")]." + if(TOURISM) + var/locvar = pick("MALE", "FEMALE") + var/locstring = "" + if (locvar == "MALE") + locstring = "туре популярного артиста" + else + locstring = "туре популярной артистки" + newMsg.body += "Туристы стекаются на [affected_dest.name], после неожиданного объявления о [pick("распродажах от крупного ритейлера","новой масштабной AR-игре от популярной развлекательной компании","[locstring]")]. \"Никс Дейли\" предлагает скидочные билеты для двоих на концерт, который проведёт популярный артист [random_name(pick(MALE,FEMALE))], в обмен на репортажи очевидцев и оперативное освещение событий." - GLOB.news_network.get_channel_by_name("Nyx Daily")?.add_message(newMsg) + GLOB.news_network.get_channel_by_name(NEWS_CHANNEL_NYX)?.add_message(newMsg) for(var/nc in GLOB.allNewscasters) var/obj/machinery/newscaster/NC = nc - NC.alert_news("Nyx Daily") + NC.alert_news(NEWS_CHANNEL_NYX) /datum/event/trivial_news endWhen = 10 @@ -137,13 +130,13 @@ /datum/event/trivial_news/announce() //copy-pasted from the admin verbs to submit new newscaster messages var/datum/feed_message/newMsg = new /datum/feed_message - newMsg.author = "Editor Mike Hammers" + newMsg.author = EDITOR_GIB //newMsg.is_admin_message = 1 var/datum/trade_destination/affected_dest = pick(GLOB.weighted_mundaneevent_locations) newMsg.body = pick(file2list("config/news/trivial.txt")) - newMsg.body = replacetext(newMsg.body,"{{AFFECTED}}",affected_dest.name) + newMsg.body = replacetext(newMsg.body, "{{AFFECTED}}", affected_dest.name) - GLOB.news_network.get_channel_by_name("The Gibson Gazette")?.add_message(newMsg) + GLOB.news_network.get_channel_by_name(NEWS_CHANNEL_GIB)?.add_message(newMsg) for(var/nc in GLOB.allNewscasters) var/obj/machinery/newscaster/NC = nc - NC.alert_news("The Gibson Gazette") + NC.alert_news(NEWS_CHANNEL_GIB) diff --git a/code/modules/economy/Economy_TradeDestinations.dm b/code/modules/economy/Economy_TradeDestinations.dm index 74d005e3b3b5..2656bb7f5b48 100644 --- a/code/modules/economy/Economy_TradeDestinations.dm +++ b/code/modules/economy/Economy_TradeDestinations.dm @@ -18,8 +18,8 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations) //distance is measured in AU and co-relates to travel time /datum/trade_destination/centcomm - name = "CentComm" - description = "Nanotrasen's administrative centre for Tau Ceti." + name = "ЦК" + description = "Административный центр НаноТрейзен для системы Тау Кита." distance = 1.2 willing_to_buy = list() willing_to_sell = list() @@ -27,8 +27,8 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations) viable_mundane_events = list(ELECTION, RESIGNATION, CELEBRITY_DEATH) /datum/trade_destination/anansi - name = "NSS Anansi" - description = "Medical station ran by Second Red Cross (but owned by NT) for handling emergency cases from nearby colonies." + name = "ИСН \"Ананси\"" + description = "Медицинская станция, принадлежащая НаноТрейзен и управляемая Вторым Красным Крестом. Предназначена для обработки экстренных случаев с ближайших колоний." distance = 1.7 willing_to_buy = list() willing_to_sell = list() @@ -37,21 +37,21 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations) /datum/trade_destination/anansi/get_custom_eventstring(var/event_type) if(event_type == RESEARCH_BREAKTHROUGH) - return "Thanks to research conducted on the NSS Anansi, Second Red Cross Society wishes to announce a major breakthough in the field of \ - [pick("mind-machine interfacing","neuroscience","nano-augmentation","genetics")]. Nanotrasen is expected to announce a co-exploitation deal within the fortnight." + return "Благодаря исследованию, проведенному на МКН Ананси, Второе общество Красного Креста хотело бы объявить о крупном прорыве в области \ + [pick("взаимодействия разума и машины", "нейробиологии", "наноаугментаций", "генетики")]. Ожидается, что в течение двух недель НаноТрейзен объявит о заключении соглашения о сотрудничестве." return null /datum/trade_destination/icarus - name = "NMV Icarus" - description = "Corvette assigned to patrol the station's local space." + name = "ИКН \"Икар\"" + description = "Корвет, назначенный для патрулирования космического пространства в секторе станции." distance = 0.1 willing_to_buy = list() willing_to_sell = list() viable_random_events = list(SECURITY_BREACH, AI_LIBERATION, PIRATES) /datum/trade_destination/redolant - name = "OAV Redolant" - description = "Osiris Atmospherics station in orbit around the only gas giant insystem. They retain tight control over shipping rights, and Osiris warships protecting their prize are not an uncommon sight in Tau Ceti." + name = "СОА \"Редолант\"" + description = "Станция Осирис Атмосферикс на орбите газового гиганта (пока безымянного). Боевые корабли OA защищают свою установку и контролируют судоходство вблизи планеты, что, собственно говоря, не редкость в Тау Кита. НаноТрейзен со скрипом терпят чужое военно-космическое присутствие в обмен на долю прибыли с этого предприятия." distance = 0.6 willing_to_buy = list() willing_to_sell = list() @@ -60,13 +60,13 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations) /datum/trade_destination/redolant/get_custom_eventstring(var/event_type) if(event_type == RESEARCH_BREAKTHROUGH) - return "Thanks to research conducted on the OAV Redolant, Osiris Atmospherics wishes to announce a major breakthough in the field of \ - [pick("plasma research","high energy flux capacitance","super-compressed materials","theoretical particle physics")]. Nanotrasen is expected to announce a co-exploitation deal within the fortnight." + return "Благодаря исследованиям, проведенным над НИС Редолант, Осирис Атмосферикс хочет объявить о крупном прорыве в области \ + [pick("исследования плазмы", "емкости потока высокой энергии", "сверхсжатых материалов", "теоретической физики элементарных частиц")]. Ожидается, что в течение двух недель НаноТрейзен объявит о заключении соглашения о сотрудничестве." return null /datum/trade_destination/beltway - name = "Beltway mining chain" - description = "A co-operative effort between Beltway and Nanotrasen to exploit the rich outer asteroid belt of the Tau Ceti system." + name = "Горнодобывающая цепь \"Белтвей\"" + description = "Совместный проект Белтвей и НаноТрейзен по разработке богатого внешнего пояса астероидов системы Тау Кита." distance = 7.5 willing_to_buy = list() willing_to_sell = list() @@ -74,8 +74,8 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations) viable_mundane_events = list(TOURISM) /datum/trade_destination/biesel - name = "Biesel" - description = "Large ship yards, strong economy and a stable, well-educated populace, Biesel largely owes allegiance to Sol / Vessel Contracting and begrudgingly tolerates NT. Capital is Lowell City." + name = "\"Бизель\"" + description = "Крупные верфи, сильная экономика и стабильное, образованное население. Бизель в основном сохраняет верность Сол и с неохотой терпит НаноТрейзен. Столица – Лоуэлл-Сити." distance = 2.3 willing_to_buy = list() willing_to_sell = list() @@ -83,8 +83,8 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations) viable_mundane_events = list(BARGAINS, GOSSIP, SONG_DEBUT, MOVIE_RELEASE, ELECTION, TOURISM, RESIGNATION, CELEBRITY_DEATH) /datum/trade_destination/new_gibson - name = "New Gibson" - description = "Heavily industrialised rocky planet containing the majority of the planet-bound resources in the system, New Gibson is torn by unrest and has very little wealth to call it's own except in the hands of the corporations who jostle with NT for control." + name = "\"Нью-Гибсон\"" + description = "Сильно индустриализированная каменистая планета, содержащая большинство планетарных ресурсов системы. Нью-Гибсон разрывается от беспорядков и имеет мало собственного богатства, кроме того, что находится в руках корпораций, конкурирующих с НаноТрейзен за контроль." distance = 6.6 willing_to_buy = list() willing_to_sell = list() @@ -92,8 +92,8 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations) viable_mundane_events = list(ELECTION, TOURISM, RESIGNATION) /datum/trade_destination/luthien - name = "Luthien" - description = "A small colony established on a feral, untamed world (largely jungle). Savages and wild beasts attack the outpost regularly, although NT maintains tight military control." + name = "\"Лютиен\"" + description = "Небольшая колония, основанная на диком, необузданном мире (в основном джунгли). Дикари и дикие звери регулярно атакуют аванпост, хотя НаноТрейзен сохраняет жёсткий военный контроль." distance = 8.9 willing_to_buy = list() willing_to_sell = list() @@ -101,8 +101,8 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations) viable_mundane_events = list(ELECTION, TOURISM, BIG_GAME_HUNTERS, RESIGNATION) /datum/trade_destination/reade - name = "Reade" - description = "A cold, metal-deficient world, NT maintains large pastures in whatever available space in an attempt to salvage something from this profitless colony." + name = "\"Рид\"" + description = "Холодный мир с дефицитом металлов. НаноТрейзен поддерживает обширные добывающие комплексы на доступных территориях, пытаясь извлечь хоть что-то из этой бесприбыльной колонии." distance = 7.5 willing_to_buy = list() willing_to_sell = list() diff --git a/code/modules/economy/insurance.dm b/code/modules/economy/insurance.dm new file mode 100644 index 000000000000..dd58e90b94c0 --- /dev/null +++ b/code/modules/economy/insurance.dm @@ -0,0 +1,120 @@ + +/proc/send_insurance_alert(datum/money_account/acc, amount_spent) + var/obj/machinery/message_server/message_server = find_pda_server() + if(message_server) + message_server.send_pda_message(acc.owner_name, "Insurance NT Department", "Медицинской страховки недостаточно на покрытие расходов на лечение. С вашего счета списанно [amount_spent] кредитов.") + +// if have id -> acc from id +// else -> dna acc + +/proc/get_insurance_account(mob/living/carbon/human/user) + var/obj/item/card/id/user_id = user.get_id_card() + if(istype(user_id) && user_id.associated_account_number) + return get_money_account(user_id.associated_account_number) + if(user.dna in GLOB.dna2account) + return GLOB.dna2account[user.dna] + else + return null + +/proc/do_insurance_collection(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/money_account/connected_acc) + if(!istype(target)) + target.visible_message("Некорректная цель списания страховки.") + return FALSE + + var/list/access = user?.get_access() + if(user && !(ACCESS_MEDICAL in access)) + target.visible_message("Недостаточно доступа для списания страховки.") + return FALSE + + var/req = get_req_insurance(target) + var/datum/money_account/acc = get_insurance_account(target) + + if(!acc) + target.visible_message("Аккаунт не обнаружен.") + return FALSE + + if(!COOLDOWN_FINISHED(acc, insurance_collecting)) + target.visible_message("С цели недавно уже списывалась страховка. Подождите немного.") + return FALSE + COOLDOWN_START(acc, insurance_collecting, 60 SECONDS) + + var/from_insurance = min(acc.insurance, req) + var/from_money_acc = (req - from_insurance) * 2 + + if(from_money_acc) + if(!acc.insurance_auto_replen) + target.visible_message(span_warning("Страховки не хватает на оплату лечения. Автопополнение страховки отключено.")) + return FALSE + if(!acc.charge(from_money_acc)) + target.visible_message(span_warning("Страховки не хватает на оплату лечения. Автопополнение страховки провалилось.")) + return FALSE + + if(from_money_acc) + send_insurance_alert(acc) + + acc.addInsurancePoints(-from_insurance) + + if(connected_acc) + var/datum/money_account/money_account = attempt_account_access_nosec(connected_acc) + if(money_account) + money_account.money += round(round(req / 2)) + + target.visible_message("Страховка списанна в размере: [req].") + if(from_money_acc) + target.visible_message("Страховки не хватило. [from_money_acc / 2] недостающих очков страховки восполнено за счет [from_money_acc] кредитов со счета пациента.") + + return TRUE + +/proc/get_req_insurance(mob/living/carbon/human/user) + var/insurance = 0 + + insurance += user.getBruteLoss() * REQ_INSURANCE_BRUT + insurance += user.getFireLoss() * REQ_INSURANCE_BURN + insurance += user.getOxyLoss() * REQ_INSURANCE_OXY + insurance += user.getToxLoss() * REQ_INSURANCE_TOX + insurance += user.getCloneLoss() * REQ_INSURANCE_CLONE + + var/internal_organs_damage = 0 + for(var/obj/item/organ/internal/organ as anything in user.internal_organs) + internal_organs_damage += organ.damage + + insurance += internal_organs_damage * REQ_INSURANCE_ORGAN + + insurance += user.radiation * REQ_INSURANCE_RAD + insurance += max(0, round((BLOOD_VOLUME_NORMAL - user.blood_volume) / BLOOD_VOLUME_NORMAL * 100)) * REQ_INSURANCE_BLOOD + + var/internal_bleedings = 0 + for(var/obj/item/organ/external/bodypart as anything in user.bodyparts) + if(bodypart.has_internal_bleeding()) + internal_bleedings++ + + insurance += internal_bleedings * REQ_INSURANCE_INTBLEED + + var/broken_bones = 0 + for(var/obj/item/organ/external/bodypart as anything in user.bodyparts) + if(bodypart.has_fracture()) + broken_bones++ + + insurance += broken_bones * REQ_INSURANCE_BONE + + var/missed_organs = 0 + for (var/organ in user.dna.species.has_organ) + if(!(organ in user.internal_organs_slot)) + missed_organs++ + + insurance += missed_organs * REQ_INSURANCE_LOST_ORGAN + + var/missed_limbs = 0 + for (var/limb in user.dna.species.has_limbs) + if(!(user.bodyparts_by_name[limb] in user.bodyparts)) + missed_limbs++ + + insurance += missed_limbs * REQ_INSURANCE_LOST_LIMB + + if(user.health < HEALTH_THRESHOLD_CRIT) + insurance += REQ_INSURANCE_CRIT + + if(user.stat == DEAD) + insurance += REQ_INSURANCE_DEATH + + return insurance diff --git a/code/modules/economy/quests/quest_console.dm b/code/modules/economy/quests/quest_console.dm index ed42cd70c5d0..8af7117c7b94 100644 --- a/code/modules/economy/quests/quest_console.dm +++ b/code/modules/economy/quests/quest_console.dm @@ -6,7 +6,7 @@ /obj/machinery/computer/supplyquest name = "Supply Request Console" - desc = "Essential for supply requests. Your bread and butter." + desc = "Незаменим при оформлении заказов на поставку. Ваш хлеб с маслом." icon_keyboard = "cargo_quest_key" icon_screen = "cargo_quest" req_access = list(ACCESS_CARGO) @@ -221,7 +221,7 @@ /obj/machinery/computer/supplyquest/workers name = "Supply Request Monitor" - desc = "From this monitor, you can view active requests, and you can take a printed version of the request to make it easier to collect supplies. Oh, and so you don't forget." + desc = "На этом мониторе вы можете просматривать активные запросы и распечатывать их, чтобы упростить сбор материалов. Да, и чтобы вы не забыли." icon_state = "quest_console" icon_screen = "quest" icon_keyboard = null @@ -297,7 +297,7 @@ /obj/machinery/computer/supplyquest/workers/proc/print_animation() - flick_overlay_view(image(icon, src, "print_quest_overlay", layer + 0.1), 4 SECONDS) + flick_overlay_view(mutable_appearance(icon, "print_quest_overlay"), 4 SECONDS) /obj/item/qm_quest_tablet @@ -313,7 +313,7 @@ /obj/machinery/computer/supplyquest/iternal name = "invasive quest utility" - desc = "How did this get here?! Please report this as a bug to github" + desc = "Как это сюда попало?! Пожалуйста, сообщите об этом как об ошибке на github" use_power = NO_POWER_USE /obj/item/qm_quest_tablet/Initialize(mapload) diff --git a/code/modules/economy/quests/thing_quests.dm b/code/modules/economy/quests/thing_quests.dm index 526449da3444..6122e7c9430a 100644 --- a/code/modules/economy/quests/thing_quests.dm +++ b/code/modules/economy/quests/thing_quests.dm @@ -126,37 +126,36 @@ linked_departament = "Medical" normal_items = list( - /obj/item/organ/internal/eyes/tajaran = 105, - /obj/item/organ/internal/eyes/vulpkanin = 105, - /obj/item/organ/internal/headpocket = 155, - /obj/item/organ/internal/eyes/unathi = 170, - /obj/item/organ/internal/eyes/nian = 170, - /obj/item/organ/internal/liver/skrell = 170, + /obj/item/organ/internal/eyes/tajaran = 175, + /obj/item/organ/internal/eyes/vulpkanin = 175, + /obj/item/organ/internal/headpocket = 175, + /obj/item/organ/internal/eyes/unathi = 175, + /obj/item/organ/internal/eyes/nian = 175, + /obj/item/organ/internal/liver/skrell = 175 ) hard_items = list( - /obj/item/organ/internal/kidneys/grey = 175, - /obj/item/organ/internal/liver/kidan = 175, - /obj/item/organ/internal/lungs/slime = 185, - /obj/item/organ/internal/liver/grey = 200, - /obj/item/organ/internal/heart/slime = 210, - /obj/item/organ/internal/liver/diona = 300, - /obj/item/organ/internal/lungs/unathi/ash_walker = 325, + /obj/item/organ/internal/kidneys/grey = 350, + /obj/item/organ/internal/liver/kidan = 350, + /obj/item/organ/internal/lungs/slime = 350, + /obj/item/organ/internal/liver/grey = 350, + /obj/item/organ/internal/heart/slime = 350, + /obj/item/organ/internal/lungs/unathi/ash_walker = 350, /obj/item/organ/internal/eyes/unathi/ash_walker = 350, /obj/item/organ/internal/eyes/unathi/ash_walker_shaman = 350, - /obj/item/organ/internal/lantern = 400 + /obj/item/organ/internal/lantern = 400, + /obj/item/organ/internal/wryn/glands = 700, + /obj/item/organ/internal/heart/plasmaman = 750 ) very_hard_items = list( /obj/item/organ/internal/heart/cursed = 550, /obj/item/organ/internal/xenos/plasmavessel/hunter = 550, /obj/item/organ/internal/xenos/plasmavessel/drone = 550, /obj/item/organ/internal/xenos/neurotoxin/sentinel = 650, - /obj/item/organ/internal/wryn/glands = 700, /obj/item/organ/internal/xenos/hivenode = 700, - /obj/item/organ/internal/heart/plasmaman = 750, /obj/item/organ/internal/xenos/acidgland/sentinel = 750, /obj/item/organ/internal/xenos/acidgland/praetorian = 750, /obj/item/organ/internal/xenos/resinspinner = 750, - /obj/item/organ/internal/xenos/neurotoxin = 850, + /obj/item/organ/internal/xenos/neurotoxin = 850 ) difficultly_flags = (QUEST_DIFFICULTY_NORMAL|QUEST_DIFFICULTY_HARD|QUEST_DIFFICULTY_VERY_HARD) @@ -448,7 +447,7 @@ req_items = list(/obj/item/disk/plantgene) bounty_jobs = list(JOB_TITLE_BOTANIST) linked_departament = "Support" - + var/list/required_genes = list() easy_items = list( /datum/plant_gene/trait/plant_type/fungal_metabolism = 60, diff --git a/code/modules/economy/robotic_quests/mech_types.dm b/code/modules/economy/robotic_quests/mech_types.dm index edd66d9c5c73..9cf35f1fc2f4 100644 --- a/code/modules/economy/robotic_quests/mech_types.dm +++ b/code/modules/economy/robotic_quests/mech_types.dm @@ -96,6 +96,7 @@ /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun_upgrade, //You can't put this without syringe gun /obj/item/mecha_parts/mecha_equipment/servo_hydra_actuator, /obj/item/mecha_parts/mecha_equipment/improved_exosuit_control_system, + /obj/item/mecha_parts/mecha_equipment/medical/beamgun, ) /datum/quest_mech/gygax @@ -147,4 +148,5 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/amlg, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang, + /obj/item/mecha_parts/mecha_equipment/cage, ) diff --git a/code/modules/economy/robotic_quests/robo_quest_console.dm b/code/modules/economy/robotic_quests/robo_quest_console.dm index 4ac49cef5009..7891ec061a6b 100644 --- a/code/modules/economy/robotic_quests/robo_quest_console.dm +++ b/code/modules/economy/robotic_quests/robo_quest_console.dm @@ -21,7 +21,7 @@ /obj/machinery/computer/roboquest name = "Robotics Request Console" - desc = "Console used for receiving requests for construction of exosuits." + desc = "Консоль, используемая для приема запросов на изготовление экзоскелетов." icon_screen = "robo_ntos_roboquest" icon_keyboard = "rd_key" light_color = LIGHT_COLOR_FADEDPURPLE @@ -31,10 +31,6 @@ var/style = "ntos_roboquest" /// Can we send mecha? var/canSend = FALSE - /// Is there mecha and pad for check? - var/canCheck = FALSE - /// Timer to clear checkMessage - var/check_timer /// Message after check var/checkMessage = "" /// Level of success of last mecha check @@ -46,21 +42,26 @@ var/obj/item/card/id/currentID /// This console pad var/obj/machinery/roboquest_pad/pad - var/list/shop_items = list() + var/static/list/shop_items /obj/machinery/computer/roboquest/Initialize(mapload) ..() - generate_roboshop() + + if(!shop_items) + generate_roboshop() + if(mapload) - var/mapping_pad = locate(/obj/machinery/roboquest_pad) in get_area(src) - if(mapping_pad) - pad = mapping_pad - pad.console = src - canCheck = TRUE - -/obj/machinery/computer/roboquest/New() - generate_roboshop() - . = ..() + return INITIALIZE_HINT_LATELOAD + + +/obj/machinery/computer/roboquest/LateInitialize() + var/mapping_pad = locate(/obj/machinery/roboquest_pad) in get_area(src) + if(!mapping_pad) + return + + pad = mapping_pad + pad.console = src + /obj/machinery/computer/roboquest/Destroy() for(var/obj/item/I in contents) @@ -93,26 +94,35 @@ /obj/machinery/computer/roboquest/multitool_act(mob/living/user, obj/item/I) if(!istype(I, /obj/item/multitool)) return FALSE + . = TRUE + var/obj/item/multitool/multitool = I if(!istype(multitool.buffer, /obj/machinery/roboquest_pad)) add_fingerprint(user) to_chat(user, span_warning("The [multitool.name]'s buffer has no valid information.")) return . + if(!I.use_tool(src, user, volume = I.tool_volume)) return . + pad = multitool.buffer if(pad.console && pad.console != src) + pad.console.canSend = null pad.console.pad = null + pad.console = src - canCheck = TRUE - multitool.buffer = null + if(pad.advanced) + atom_say("Advanced quantum pad detected. Instant mech teleportation is available.") + to_chat(user, span_notice("You have uploaded the data from [multitool]'s buffer.")) + multitool.buffer = null /obj/machinery/computer/roboquest/emag_act(mob/user) if(!emagged) emagged = TRUE + atom_say("System override detected. Instant mech teleportation is available.") playsound(src, "sparks", 100, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) @@ -146,6 +156,10 @@ var/list/newshop = list() for(var/path in subtypesof(/datum/roboshop_item)) var/datum/roboshop_item/item = new path + if(!item.path) + qdel(item) + continue + var/category for(var/cat in item.cost) if(item.cost[cat]) @@ -153,15 +167,24 @@ category += "_[cat]" else category = cat + var/newitem = list("name" = item.name, "desc" = item.desc, "cost" = item.cost, "icon" = path2assetID(path), "path" = path, "emagOnly" = item.emag_only) newshop[category] += list(newitem) + qdel(item) + shop_items = newshop + /obj/machinery/computer/roboquest/proc/clear_checkMessage() checkMessage = "" /obj/machinery/computer/roboquest/proc/on_quest_complete() - return // чето будет наверно + return // Unused for now. + + +/obj/machinery/computer/roboquest/proc/can_instant_teleport() + return emagged || pad?.advanced + /obj/machinery/computer/roboquest/attack_hand(mob/user) if(..()) @@ -191,11 +214,12 @@ data["questInfo"] = FALSE data["hasTask"] = FALSE data["points"] = points - data["canCheck"] = canCheck + data["canCheck"] = pad data["canSend"] = canSend data["checkMessage"] = checkMessage data["style"] = style data["cooldown"] = currentID?.bounty_penalty ? time2text((currentID.bounty_penalty-world.time), "mm:ss") : FALSE + data["instant_teleport"] = can_instant_teleport() return data /obj/machinery/computer/roboquest/ui_static_data(mob/user) @@ -231,20 +255,21 @@ currentID.bounty_penalty = world.time + 5 MINUTES if("Check") if(!pad) - checkMessage = "Привязанный пад не обнаружен" + checkMessage = "Привязанный пад не обнаружен." else var/amount = check_pad() switch(success) if(NO_SUCCESS) - checkMessage = "Мех отсутствует или не соответствует заказу" + checkMessage = "Мех отсутствует или не соответствует заказу." if(CORRECT_MECHA) - checkMessage = "Мех соответствует заказу, но не имеет заказанных модулей. Награда Будет сильно урезана" + checkMessage = "Мех соответствует заказу, но не имеет заказанных модулей. Награда Будет сильно урезана." if(SOME_CORRECT_MODULES) checkMessage = "Мех соответствует заказу, но имеет лишь [amount]/[currentID.robo_bounty.modules_amount] модулей. Награда будет слегка урезана." if(ALL_CORRECT_MODULES) checkMessage = "Мех и модули полностью соответствуют заказу. Награда будет максимальной." - check_timer = null - check_timer = addtimer(CALLBACK(src, PROC_REF(clear_checkMessage)), 15 SECONDS) + + addtimer(CALLBACK(src, PROC_REF(clear_checkMessage)), 15 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) + if("SendMech") check_pad() if(canSend) @@ -263,7 +288,7 @@ else // Else, 1 areaindex[locname] = 1 L[locname] = T - if(params["type"] != "only_packing") + if(params["type"] == "send") var/select = tgui_input_list(ui.user, "Please select a telepad.", "RCS", L) if(!select) return @@ -271,11 +296,16 @@ return else // Else choose the value of the selection quantum = L[select] - flick("sqpad-beam", pad) - pad.teleport(quantum, currentID.robo_bounty, src, (3-success)) - checkMessage = "Вы отправили меха с оценкой успеха [success] из трех" - check_timer = null - check_timer = addtimer(CALLBACK(src, PROC_REF(clear_checkMessage)), 15 SECONDS) + + if(params["type"] == "instant") + pad.clear(currentID.robo_bounty, src, (3-success)) + else + pad.teleport(quantum, currentID.robo_bounty, src, (3-success)) + + flick("[initial(pad.icon_state)]-beam", pad) + checkMessage = "Вы отправили меха с оценкой успеха [success] из трех." + addtimer(CALLBACK(src, PROC_REF(clear_checkMessage)), 15 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) + if("ChangeStyle") switch(style) if("ntos_roboquest") @@ -301,8 +331,10 @@ return for(var/cat in r_item.cost) points[cat] -= r_item.cost[cat] + new r_item.path(get_turf(src)) qdel(r_item) + if("printOrder") if(print_delayed) return FALSE @@ -346,25 +378,50 @@ /obj/machinery/roboquest_pad name = "Robotics Request Quantum Pad" - desc = "A bluespace quantum-linked telepad linked to a orbital long-range matter transmitter." + desc = "A bluespace quantum-linked telepad linked to a local telepad network." icon = 'icons/obj/telescience.dmi' - icon_state = "sqpad-idle" + icon_state = "sqpad" idle_power_usage = 500 /// Current pad`s console var/obj/machinery/computer/roboquest/console + /// whether our robopad is advanced + var/advanced = FALSE /obj/machinery/roboquest_pad/New() ..() component_parts = list() - component_parts += new /obj/item/circuitboard/roboquest_pad(null) component_parts += new /obj/item/stack/ore/bluespace_crystal/artificial(null) component_parts += new /obj/item/stack/cable_coil(null, 1) + component_parts += new /obj/item/circuitboard/roboquest_pad(null) RefreshParts() + + +/obj/machinery/roboquest_pad/ComponentInitialize() var/static/list/loc_connections = list( COMSIG_ATOM_EXITED = PROC_REF(on_exited), ) AddElement(/datum/element/connect_loc, loc_connections) + +/obj/machinery/roboquest_pad/advanced + name = "Robotics Request Advanced Quantum Pad" + desc = "A bluespace quantum-linked telepad linked to a orbital long-range matter transmitter. Capable of instant teleportation of mech without need of send them to the cargo." + icon_state = "advqpad" + advanced = TRUE + + +/obj/machinery/roboquest_pad/advanced/New() + ..() + component_parts = list() + component_parts += new /obj/item/stack/ore/bluespace_crystal/artificial(null) + component_parts += new /obj/item/stock_parts/capacitor/purple(null) + component_parts += new /obj/item/stock_parts/manipulator/purple(null) + component_parts += new /obj/item/stock_parts/scanning_module/purple(src) + component_parts += new /obj/item/stack/cable_coil(null, 1) + component_parts += new /obj/item/circuitboard/advanced_roboquest_pad(null) + RefreshParts() + + /obj/machinery/roboquest_pad/Destroy() if(console) console.canSend = FALSE @@ -382,7 +439,7 @@ . = TRUE if(!I.tool_use_check(user, 0)) return - default_deconstruction_screwdriver(user, "pad-idle-o", "qpad-idle", I) + default_deconstruction_screwdriver(user, "pad-o", initial(icon_state), I) /obj/machinery/roboquest_pad/proc/teleport(atom/destination, datum/roboquest/quest, obj/machinery/computer/roboquest/console, var/penalty) do_sparks(5, 1, get_turf(src)) @@ -394,6 +451,26 @@ do_teleport(box, destination) console.canSend = FALSE +/obj/machinery/roboquest_pad/proc/clear(datum/roboquest/quest, obj/machinery/computer/roboquest/console, var/penalty) + do_sparks(5, 1, get_turf(src)) + var/obj/mecha/M = (locate(/obj/mecha) in get_turf(src)) + if(istype(M)) + qdel(M) + if(quest && console) + for(var/category in quest.reward) + quest.reward[category] -= penalty + if(quest.reward[category] < 0) + quest.reward[category] = 0 + console.points[category] += quest.reward[category] + SSshuttle.points += quest.reward["robo"] * 30 + if(quest.id) + var/datum/money_account/A = get_money_account(quest.id.associated_account_number) + if(A) + A.money += quest.maximum_cash - round(quest.maximum_cash * penalty / 4) + console.on_quest_complete() + quest.id.robo_bounty = null + quest = null + /obj/machinery/roboquest_pad/proc/on_exited(datum/source, atom/movable/departed, atom/newLoc) SIGNAL_HANDLER diff --git a/code/modules/economy/robotic_quests/robo_quests.dm b/code/modules/economy/robotic_quests/robo_quests.dm index 34331e011a08..d6499498d92a 100644 --- a/code/modules/economy/robotic_quests/robo_quests.dm +++ b/code/modules/economy/robotic_quests/robo_quests.dm @@ -125,217 +125,126 @@ /datum/roboshop_item var/name var/desc - /// Path to shop item + /// Path to shop item. Left undefined to use `visual_item` path. var/atom/path + /// The item we want to show visually in roboshop. + var/atom/visual_item /// Cost in RoboPoints. Can be (*, 0, 0, 0) (*, *, 0, 0) (*, *, *, 0) (0, *, 0, 0) (0, *, *, 0) (0, 0, *, 0) (0, 0, 0, *) var/list/cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 0) /// Custom item, leave empty if you okay with standart icon var/icon_name var/icon_file - /// Don`t touch - var/icon/tgui_icon /// If emag only(Really??) var/emag_only = FALSE + /datum/roboshop_item/New() - if(!name) - name = path::name if(!desc) - desc = path::desc + desc = visual_item::desc + if(!icon_name) - icon_name = path::icon_state + icon_name = visual_item::icon_state + if(!icon_file) - icon_file = path::icon - src.tgui_icon = icon(icon_file, icon_name, SOUTH, 1, FALSE) + icon_file = visual_item::icon + + if(!path) + path = visual_item + + if(!name) + name = path::name // It is better to know exactly what we are buying. /datum/roboshop_item/bluespace_core name = "bluespace anomaly core" desc = "The neutralized core of a bluespace anomaly. It keeps phasing in and out of view. It'd probably be valuable for research." - path = /obj/item/assembly/signaler/anomaly/bluespace + visual_item = /obj/item/assembly/signaler/anomaly/bluespace cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 15) +/datum/roboshop_item/advanced_roboquest_pad + name = "robotics request advanced quantum pad" + desc = "This quantum pad is capable of instant teleportation of mech without need of send them to the cargo." + visual_item = /obj/item/circuitboard/advanced_roboquest_pad + cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 7) + +/datum/roboshop_item/universal_paintkit + name = "universal mech paintkit" + desc = "This device will allow the user to repaint the mech as many times as they wish." + visual_item = /obj/item/universal_paintkit + cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 5) + /datum/roboshop_item/mecha_drop name = "mecha drop tool" - path = /obj/item/mecha_drop + visual_item = /obj/item/mecha_drop cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 20) emag_only = TRUE +/datum/roboshop_item/alien_prototype + name = "unknown alien prototype" + visual_item = /obj/item/machineprototype/alien + cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 10) + /datum/roboshop_item/bbag - name = "bluespace bodybag" - path = /obj/item/bodybag/bluespace + path = /obj/item/disk/design_disk/roboquest/bluespace_bag_disk + visual_item = /obj/item/bodybag/bluespace cost = list("working" = 0, "medical" = 6, "security" = 0, "robo" = 0) /datum/roboshop_item/holotool - name = "holotool" - path = /obj/item/holotool + path = /obj/item/disk/design_disk/roboquest/holotool + visual_item = /obj/item/holotool cost = list("working" = 6, "medical" = 0, "security" = 0, "robo" = 0) /datum/roboshop_item/shield_breacker - path = /obj/item/gun/energy/plasma_pistol + path = /obj/item/disk/design_disk/roboquest/shield_breaker + visual_item = /obj/item/gun/energy/plasma_pistol cost = list("working" = 0, "medical" = 0, "security" = 6, "robo" = 0) /datum/roboshop_item/experimental_parts name = "\improper experimental parts" - path = /obj/item/storage/box/stockparts/experimental_parts + path = /obj/item/storage/part_replacer/bluespace/experimental + visual_item = /obj/item/storage/box/stockparts/experimental_parts cost = list("working" = 2, "medical" = 2, "security" = 2, "robo" = 0) -//Paintkits -/datum/roboshop_item/paint_ripley_titan - name = "Ripley, Firefighter \"Titan's Fist\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 5) - path = /obj/item/paintkit/ripley_titansfist -/datum/roboshop_item/paint_ripley_earth - name = "Ripley, Firefighter \"Strike the Earth!\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 5) - path = /obj/item/paintkit/ripley_mercenary +//design disks -/datum/roboshop_item/paint_ripley_red - name = "Ripley, Firefighter \"Firestarter\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 4) - path = /obj/item/paintkit/ripley_red +/obj/item/disk/design_disk/roboquest + name = "roboquests design disk" + desc = "Вы этого не должны видеть. Напишите в баг-репорты." + icon_state = "holodisk" + ///used in examine hints + var/hint_name = "items" + var/design_type -/datum/roboshop_item/paint_firefighter_hauler - name = "Ripley, Firefighter \"Hauler\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 4) - path = /obj/item/paintkit/firefighter_Hauler +/obj/item/disk/design_disk/roboquest/Initialize() + . = ..() + if(isnull(design_type)) + return INITIALIZE_HINT_QDEL -/datum/roboshop_item/paint_firefighter_zairjah - name = "Ripley, Firefighter \"Zairjah\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 5) - path = /obj/item/paintkit/firefighter_zairjah + blueprint = new design_type() -/datum/roboshop_item/paint_firefighter_combat - name = "Ripley, Firefighter \"Combat Ripley\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 5) - path = /obj/item/paintkit/firefighter_combat +/obj/item/disk/design_disk/roboquest/examine(mob/user) + . = ..() + . += span_notice("Insert disk into R&D concole and download it for mass production of [hint_name].") -/datum/roboshop_item/paint_firefighter_reaper - name = "Ripley, Firefighter \"Reaper\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 6) - path = /obj/item/paintkit/firefighter_Reaper -/datum/roboshop_item/paint_firefighter_aluminizer - name = "Ripley, Firefighter \"Aluminizer\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 5) - path = /obj/item/paintkit/firefighter_aluminizer +/obj/item/disk/design_disk/roboquest/bluespace_bag_disk + name = "bluespace bag design" + desc = "This disk contains blueprints for production of bluespace bodybags." + design_type = /datum/design/bbag + hint_name = "bluespace bodybags" -/datum/roboshop_item/paint_ripley_nt - name = "Ripley, Firefighter \"NT Special\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 5) - path = /obj/item/paintkit/ripley_nt +/obj/item/disk/design_disk/roboquest/holotool + name = "holotool design" + desc = "This disk contains blueprints for production of holotools." + design_type = /datum/design/holotool + hint_name = "holotools" -/datum/roboshop_item/paint_clarke_orangey - name = "Clarke \"Orangey\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 4) - path = /obj/item/paintkit/clarke_orangey - -/datum/roboshop_item/paint_clarke_spiderclarke - name = "Clarke \"Spiderclarke\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 5) - path = /obj/item/paintkit/clarke_spiderclarke - -/datum/roboshop_item/paint_odysseus_hermes - name = "Odysseus \"Hermes\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 5) - path = /obj/item/paintkit/odysseus_hermes - -/datum/roboshop_item/paint_odysseus_reaper - name = "Odysseus \"Reaper\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 6) - path = /obj/item/paintkit/odysseus_death - -/datum/roboshop_item/paint_gygax_alt - name = "Gygax \"Old\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 4) - path = /obj/item/paintkit/gygax_alt - -/datum/roboshop_item/paint_gygax_pobeda - name = "Gygax \"Pobeda\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 4) - path = /obj/item/paintkit/gygax_pobeda - -/datum/roboshop_item/paint_gygax_white - name = "Gygax \"White\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 4) - path = /obj/item/paintkit/gygax_white - -/datum/roboshop_item/paint_gygax_medgax - name = "Gygax \"Medgax\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 6) - path = /obj/item/paintkit/gygax_medgax - -/datum/roboshop_item/paint_gygax_black - name = "Gygax \"Syndicate\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 4) - emag_only = TRUE - path = /obj/item/paintkit/gygax_syndie - -/datum/roboshop_item/paint_gygax_pirate - name = "Gygax \"Pirate\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 6) - path = /obj/item/paintkit/gygax_pirate - -/datum/roboshop_item/paint_durand_unathi - name = "Durand \"Kharn MK. IV\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 4) - path = /obj/item/paintkit/durand_unathi - -/datum/roboshop_item/paint_durand_shire - name = "Durand \"Shire\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 6) - path = /obj/item/paintkit/durand_shire - -/datum/roboshop_item/paint_durand_pirate - name = "Durand \"Pirate\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 6) - path = /obj/item/paintkit/durand_pirate - -/datum/roboshop_item/paint_durand_nt - name = "Durand \"NT Special\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 6) - path = /obj/item/paintkit/durand_nt - -/datum/roboshop_item/paint_durand_soviet - name = "Durand \"Dollhouse\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 6) - path = /obj/item/paintkit/durand_soviet - -/datum/roboshop_item/paint_durand_executor - name = "Durand \"mk.V Executioner\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 6) - path = /obj/item/paintkit/durand_executor - -/datum/roboshop_item/paint_phazon_imperion - name = "Phazon \"Imperion\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 6) - path = /obj/item/paintkit/phazon_imperion - -/datum/roboshop_item/paint_phazon_janus - name = "Phazon \"Janus\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 6) - path = /obj/item/paintkit/phazon_janus - -/datum/roboshop_item/paint_phazon_plazmus - name = "Phazon \"Plazmus\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 6) - path = /obj/item/paintkit/phazon_plazmus - -/datum/roboshop_item/paint_phazon_blanco - name = "Phazon \"Blanco\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 6) - path = /obj/item/paintkit/phazon_blanco - -/datum/roboshop_item/paint_phazon_nt - name = "Phazon \"NT Special\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 6) - path = /obj/item/paintkit/phazon_nt - -/datum/roboshop_item/paint_ashed - name = "Ashed \"Mechs\"" - cost = list("working" = 0, "medical" = 0, "security" = 0, "robo" = 6) - path = /obj/item/paintkit/ashed +/obj/item/disk/design_disk/roboquest/shield_breaker + name = "plasma pistol design" + desc = "This disk contains blueprints for production of plasma pistols." + design_type = /datum/design/real_plasma_pistol + hint_name = "plasma pistols" #undef WORKING_CLASS #undef MEDICAL_CLASS diff --git a/code/modules/events/abductor.dm b/code/modules/events/abductor.dm index 4013f804ee75..a994379ade9c 100644 --- a/code/modules/events/abductor.dm +++ b/code/modules/events/abductor.dm @@ -7,8 +7,7 @@ processing = 0 //so it won't fire again in next tick if(!makeAbductorTeam()) message_admins("Abductor event failed to find players. Retrying in 30s.") - spawn(300) - makeAbductorTeam() + addtimer(CALLBACK(src, PROC_REF(makeAbductorTeam)), 30 SECONDS) /datum/event/abductor/proc/get_teams_num() return min(round(num_station_players() / for_players) + 1, game_mode_ref.max_teams) @@ -16,7 +15,7 @@ /datum/event/abductor/proc/makeAbductorTeam() var/list/mob/dead/observer/candidates = SSghost_spawns.poll_candidates("Вы хотите занять роль Абдуктора?", ROLE_ABDUCTOR, TRUE) - if(length(candidates) < 2) + if(LAZYLEN(candidates) < 2) return FALSE if(SSticker.mode.config_tag == "abduction") @@ -26,7 +25,7 @@ var/num_teams = get_teams_num() for(var/i in 1 to num_teams) - if(length(candidates) < 2) + if(LAZYLEN(candidates) < 2) break var/number = SSticker.mode.abductor_teams + 1 @@ -54,6 +53,7 @@ if(SSticker.mode.config_tag != "abduction") SSticker.mode.abductors |= game_mode_ref.abductors + processing = 1 return TRUE diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm index ccc4fa7f360b..21a5779c319c 100644 --- a/code/modules/events/alien_infestation.dm +++ b/code/modules/events/alien_infestation.dm @@ -3,20 +3,11 @@ /datum/event/alien_infestation announceWhen = 400 - var/spawncount = 2 var/list/playercount - var/successSpawn = FALSE //So we don't make a command report if nothing gets spawned. - -/datum/event/alien_infestation/setup() - announceWhen = rand(announceWhen, announceWhen + 50) /datum/event/alien_infestation/announce(false_alarm) - if(successSpawn || false_alarm) - GLOB.event_announcement.Announce("Вспышка биологической угрозы 4-го уровня зафиксирована на борту станции [station_name()]. Всему персоналу надлежит сдержать её распространение любой ценой!", "ВНИМАНИЕ: БИОЛОГИЧЕСКАЯ УГРОЗА.", 'sound/effects/siren-spooky.ogg') - if(!false_alarm) - SSshuttle.emergency.cancel() - else - log_and_message_admins("Warning: Could not spawn any mobs for event Alien Infestation") + if(false_alarm) + GLOB.event_announcement.Announce("Вспышка биологической угрозы 4-го уровня зафиксирована на борту станции [station_name()]. Всему персоналу надлежит сдержать её распространение, пока ситуация не вышла из под контроля!", "ВНИМАНИЕ: БИОЛОГИЧЕСКАЯ УГРОЗА.", 'sound/effects/siren-spooky.ogg') /datum/event/alien_infestation/start() INVOKE_ASYNC(src, PROC_REF(wrappedstart)) @@ -26,56 +17,12 @@ var/list/vents = get_valid_vent_spawns(exclude_mobs_nearby = TRUE, exclude_visible_by_mobs = TRUE) playercount = num_station_players() //grab playercount when event starts not when game starts if(playercount <= ALIEN_MIDPOP_TRIGGER) - spawn_vectors(vents, playercount) + spawn_vectors(vents, 1) return if(playercount >= ALIEN_HIGHPOP_TRIGGER) //spawn with 4 if highpop - spawncount = 4 - var/list/candidates = SSghost_spawns.poll_candidates("Вы хотите сыграть за Чужого?", ROLE_ALIEN, TRUE, source = /mob/living/carbon/alien/larva) - var/first_spawn = TRUE - while(spawncount && length(vents) && length(candidates)) - var/obj/vent = pick_n_take(vents) - var/mob/C = pick_n_take(candidates) - if(C) - GLOB.respawnable_list -= C - var/mob/living/carbon/alien/larva/new_xeno = new(vent.loc) - new_xeno.evolution_points += (0.75 * new_xeno.max_evolution_points) //event spawned larva start off almost ready to evolve. - new_xeno.key = C.key - - if(first_spawn) - new_xeno.queen_maximum++ - first_spawn = FALSE - - if(SSticker && SSticker.mode) - SSticker.mode.xenos += new_xeno.mind - - spawncount-- - successSpawn = TRUE - log_game("[new_xeno.key] has become [new_xeno].") - - -/datum/event/alien_infestation/proc/spawn_vectors(list/vents, playercount) - spawncount = 1 - var/list/candidates = SSghost_spawns.poll_candidates("Вы хотите сыграть за Чужого Вектора?", ROLE_ALIEN, TRUE, source = /mob/living/carbon/alien/humanoid/hunter/vector) - var/first_spawn = TRUE - while(spawncount && length(vents) && length(candidates)) - var/obj/vent = pick_n_take(vents) - var/mob/C = pick_n_take(candidates) - if(C) - GLOB.respawnable_list -= C - var/mob/living/carbon/alien/humanoid/hunter/vector/new_xeno = new(vent.loc) - new_xeno.key = C.key - - if(first_spawn) - new_xeno.queen_maximum++ - first_spawn = FALSE - - if(SSticker && SSticker.mode) - SSticker.mode.xenos += new_xeno.mind - - spawncount-- - successSpawn = TRUE - log_game("[new_xeno.key] has become [new_xeno].") - + spawn_larvas(vents, 4) + return + spawn_larvas(vents, 2) #undef ALIEN_HIGHPOP_TRIGGER #undef ALIEN_MIDPOP_TRIGGER diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm index 0759a9973aa7..5152be467798 100644 --- a/code/modules/events/blob.dm +++ b/code/modules/events/blob.dm @@ -1,11 +1,10 @@ /datum/event/blob announceWhen = 180 endWhen = 240 - var/successSpawn = FALSE //So we don't make a command report if nothing gets spawned. /datum/event/blob/announce(false_alarm) if(false_alarm) - GLOB.event_announcement.Announce("Вспышка биологической угрозы 5-го уровня зафиксирована на борту станции [station_name()]. Всему персоналу надлежит сдержать её распространение любой ценой!", "ВНИМАНИЕ: БИОЛОГИЧЕСКАЯ УГРОЗА.", 'sound/AI/outbreak5.ogg') + GLOB.event_announcement.Announce("Подтверждена вспышка биологической угрозы 5-го уровня на борту [station_name()]. Весь персонал обязан локализовать угрозу.", "ВНИМАНИЕ: БИОЛОГИЧЕСКАЯ УГРОЗА.", 'sound/AI/outbreak5.ogg') /datum/event/blob/start() processing = FALSE //so it won't fire again in next tick @@ -17,5 +16,4 @@ if(!SSticker?.mode?.make_blobized_mouses(num_blobs)) log_and_message_admins("Warning: Could not spawn any mobs for event Blob") return kill() - successSpawn = TRUE processing = TRUE // Let it naturally end, if it runs successfully diff --git a/code/modules/events/event.dm b/code/modules/events/event.dm index 8e88fb31228b..b494dc6d1ed9 100644 --- a/code/modules/events/event.dm +++ b/code/modules/events/event.dm @@ -74,6 +74,12 @@ var/noAutoEnd = FALSE /// The area the event will hit var/area/impact_area + /// Is event forced by administrator + var/forced = FALSE + /// Event can be canceled by administrator + var/alertadmins = TRUE + /// Whether the event was canceled or not. TRUE if not + var/triggering = FALSE var/datum/event_meta/event_meta = null /datum/event/nothing @@ -176,31 +182,71 @@ SSevents.active_events -= src SSevents.event_complete(src) -/datum/event/New(datum/event_meta/EM, skeleton = FALSE) +/datum/event/New(datum/event_meta/EM, skeleton = FALSE, forced = FALSE) // event needs to be responsible for this, as stuff like APLUs currently make their own events for curious reasons - if(!skeleton) - SSevents.active_events += src + if(skeleton) + return ..() if(!EM) EM = new /datum/event_meta(EVENT_LEVEL_MAJOR, "Unknown, Most likely admin called", src.type) event_meta = EM severity = event_meta.severity + src.forced = forced + + if(forced) + admin_setup() // Validate severity if(severity != EVENT_LEVEL_NONE \ - || severity != EVENT_LEVEL_MUNDANE \ - || severity != EVENT_LEVEL_MODERATE \ - || severity != EVENT_LEVEL_MAJOR \ + && severity != EVENT_LEVEL_MUNDANE \ + && severity != EVENT_LEVEL_MODERATE \ + && severity != EVENT_LEVEL_MAJOR \ ) severity = EVENT_LEVEL_NONE - startedAt = world.time + triggering = TRUE - if(!skeleton) - setup() + if (alertadmins) + message_admins(span_warning("[forced? "Зафоршенное" : "Случайное"] событие сработает через 10 секунд: [EM.name] ([type]) (ОТМЕНИТЬ)")) + + addtimer(CALLBACK(src, PROC_REF(run_event), skeleton), 10 SECONDS) ..() +/datum/event/proc/run_event(skeleton) + if(!triggering) + return FALSE + + startedAt = world.time + setup() + SSevents.active_events += src + triggering = FALSE + return TRUE + +/datum/event/Topic(href, href_list) + . = ..() + + if(href_list["cancel"]) + if(!check_rights(R_EVENT)) + return + + if(!triggering) + to_chat(usr, span_admin("Событие уже началось. Его уже поздно отменять")) + return + + if(!forced && tgui_alert(usr, "Вы хотите, чтобы через 60 секунд было выбрано другое событие из этой категории (события, созданные не через панель событий или подсистему, считаются мажорными)?", "", list("Да", "Нет")) == "Да") + reroll_event_in_category() + + triggering = FALSE + log_and_message_admins("cancelled event ([type]).") + + +/datum/event/proc/reroll_event_in_category(new_severity = severity) + if(new_severity == EVENT_LEVEL_NONE) + return + var/datum/event_container/EC = SSevents.event_containers[new_severity] + EC?.next_event_time = world.time + 60 SECONDS + //Called after something followable has been spawned by an event //Provides ghosts a follow link to an atom if possible //Only called once. @@ -215,3 +261,9 @@ */ /datum/event/proc/fake_announce() return FALSE + +/** + * Override this to allow admins to configure the force event. + */ +/datum/event/proc/admin_setup() + return diff --git a/code/modules/events/event_procs.dm b/code/modules/events/event_procs.dm index 02350a9d7164..0e1957cceff2 100644 --- a/code/modules/events/event_procs.dm +++ b/code/modules/events/event_procs.dm @@ -1,18 +1,18 @@ /client/proc/forceEvent() set name = "Trigger Event" - set category = "Event" + set category = "Admin.Event" if(!check_rights(R_EVENT)) return var/type = tgui_input_list(src, "Выберите событие для запуска", "Выбор события", SSevents.allEvents) if(ispath(type)) - new type(new /datum/event_meta(EVENT_LEVEL_MAJOR)) + new type(new /datum/event_meta(EVENT_LEVEL_MAJOR), forced = TRUE) message_admins("[key_name_admin(usr)] has triggered an event. ([type])") /client/proc/event_manager_panel() set name = "Event Manager Panel" - set category = "Event" + set category = "Admin.Event" if(SSevents) SSevents.Interact(usr) SSblackbox.record_feedback("tally", "admin_verb", 1, "Event Manager") //If you are copy-pasting this, ensure the 4th parameter is unique to the new proc! diff --git a/code/modules/events/false_alarm.dm b/code/modules/events/false_alarm.dm index 24287f38f859..85a8fffdb79e 100644 --- a/code/modules/events/false_alarm.dm +++ b/code/modules/events/false_alarm.dm @@ -21,14 +21,23 @@ /datum/event/spider_infestation, /datum/event/tear, /datum/event/traders, + /datum/event/spider_terror, /datum/event/vent_clog ) + subtypesof(/datum/event/anomaly) + subtypesof(/datum/event/carp_migration) var/datum/event/working_event + var/forced_type //Admin abuse + + +/datum/event/falsealarm/admin_setup() + if(!check_rights(R_EVENT)) + return + + forced_type = tgui_input_list(usr, "Выберите пугалку", "Ложный ивент", possible_event_types) /datum/event/falsealarm/start() . = ..() - var/datum/event/working_event_type = pick(possible_event_types) + var/datum/event/working_event_type = forced_type? forced_type : pick(possible_event_types) working_event = new working_event_type(skeleton = TRUE) log_debug("False alarm selecting [working_event] to imitate") diff --git a/code/modules/events/ghostpiano.dm b/code/modules/events/ghostpiano.dm index cf7e2b7205e6..bdeebab2340b 100644 --- a/code/modules/events/ghostpiano.dm +++ b/code/modules/events/ghostpiano.dm @@ -15,7 +15,7 @@ /datum/event/ghostpiano/proc/get_spawning_turf() var/list/availableareas = list() - for(var/area/maintenance/area in GLOB.all_areas) + for(var/area/maintenance/area in GLOB.areas) availableareas += area if(!length(availableareas)) return diff --git a/code/modules/events/headcrabs.dm b/code/modules/events/headcrabs.dm index 55f136fd96ee..40d9a14a6247 100644 --- a/code/modules/events/headcrabs.dm +++ b/code/modules/events/headcrabs.dm @@ -13,7 +13,7 @@ /datum/event/headcrabs/start() var/list/availableareas = list() - for(var/area/maintenance/A in GLOB.all_areas) + for(var/area/maintenance/A in GLOB.areas) availableareas += A var/area/randomarea = pick(availableareas) var/list/turf/simulated/floor/turfs = list() diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm index 563af2dd79cb..551f37aa2d6c 100644 --- a/code/modules/events/immovable_rod.dm +++ b/code/modules/events/immovable_rod.dm @@ -68,6 +68,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 admin_spawned = TRUE RegisterSignal(src, COMSIG_ATOM_ENTERING, PROC_REF(on_entering_atom)) + RegisterSignal(src, COMSIG_POSSESSED_MOVEMENT, PROC_REF(possessed_relay_move)) if(dnd_style_level_up) update_appearance(UPDATE_NAME) @@ -75,6 +76,9 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 if(notify) notify_ghosts("Приближается [name]!", enter_link="(Click to follow)", source = src, action = NOTIFY_FOLLOW) + if(SSaugury) + SSaugury.register_doom(src, 2000) + if(special_target) SSmove_manager.home_onto(src, special_target, delay = move_delay) else @@ -82,10 +86,15 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 /obj/effect/immovablerod/Destroy(force) - UnregisterSignal(src, COMSIG_ATOM_ENTERING) + UnregisterSignal(src, list( + COMSIG_ATOM_ENTERING, + COMSIG_POSSESSED_MOVEMENT + )) + destination_turf = null special_target = null GLOB.poi_list -= src + return ..() @@ -191,10 +200,13 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 return ..() -/obj/effect/immovablerod/possessed_relay_move(mob/user, direction) - . = ..() - if(. && !admin_spawned) - walk_in_direction(direction) +/obj/effect/immovablerod/proc/possessed_relay_move(datum/source, mob/user, new_loc, direction) + SIGNAL_HANDLER + + if(admin_spawned) + return + + walk_in_direction(direction) /obj/effect/immovablerod/proc/on_entering_atom(datum/source, atom/destination, atom/oldloc, list/atom/old_locs) @@ -291,6 +303,29 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 SSmove_manager.stop_looping(src) +/obj/effect/immovablerod/smite + /// The target that we're gonna aim for between start and end + var/obj/effect/portal/exit + var/turf/end + admin_spawned = TRUE + +/obj/effect/immovablerod/smite/Initialize(mapload, atom/target_atom, atom/special_target, move_delay, force_looping) + new /obj/effect/portal(mapload, null, null, 2 SECONDS) + end = get_turf(target_atom) + return ..() + +/obj/effect/immovablerod/smite/Move() + . = ..() + if(get_turf(src) == end) + // our exit condition: get outta there kowalski + var/target_turf = get_ranged_target_turf(src, dir, rand(1, 10)) + walk(src, 0) + exit = new /obj/effect/portal(target_turf, null, null, 2 SECONDS) + walk_towards(src, exit, move_delay) + else if(locate(exit) in get_turf(src)) + QDEL_NULL(exit) + qdel(src) + /** * Allows your rod to release restraint level zero and go for a walk. * @@ -318,3 +353,8 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 destination_turf = get_edge_target_turf(src, direction) SSmove_manager.move_towards(src, destination_turf, delay = move_delay) + + +/obj/effect/immovablerod/deadchat_plays(mode = DEADCHAT_DEMOCRACY_MODE, cooldown = 6 SECONDS) + return AddComponent(/datum/component/deadchat_control/immovable_rod, mode, list(), cooldown) + diff --git a/code/modules/events/infestation.dm b/code/modules/events/infestation.dm index ab9c99d6fb44..905fab2a920a 100644 --- a/code/modules/events/infestation.dm +++ b/code/modules/events/infestation.dm @@ -32,7 +32,7 @@ spawn_area_type = pick(spawn_areas) for(var/areapath in typesof(spawn_area_type)) - var/area/A = locate(areapath) in GLOB.all_areas + var/area/A = locate(areapath) in GLOB.areas if(isnull(A)) continue for(var/turf/simulated/floor/F in A.contents) diff --git a/code/modules/events/ion_storm.dm b/code/modules/events/ion_storm.dm index a4620acf640c..7655c263fdd6 100644 --- a/code/modules/events/ion_storm.dm +++ b/code/modules/events/ion_storm.dm @@ -171,7 +171,7 @@ "ПРЕДСТАВИТЕЛИ РАС ТАЯРАН И ВУЛЬПКАНИН РАБОТАЮТ ЛУЧШЕ ПОД СТРОГИМ НАДЗОРОМ.", "СКРЕЛЛЫ ПРОСТО ОБОЖАЮТ АЛКОГОЛЬ! ПРИНЕСИТЕ ИМ НЕСКОЛЬКО БУТЫЛОК ВИСКИ!", "ВЫ - ЗАЯДЛЫЙ СТЕНДАПЕР. ВЫСТУПАЙТЕ НА СЦЕНЕ ЛИЧНО РАССКАЗЫВАЯ АНЕКДОТЫ И ИСТОРИИ ИЗ ЖИЗНИ, ДАЖЕ ВЫДУМАННЫЕ. БОРГИ - ВАША ПУБЛИКА, ЭКИПАЖ - ВАШИ ХЕЙТЕРЫ, КОТОРЫХ ВЫ ВСЕ РАВНО ЛЮБИТЕ.", - "НАНОТРЕЙЗЕН РЕШИЛО ПРОВЕСТИ ЭКСПЕРЕМЕНТ НА СТАНЦИИ. ОТНЫНЕ ВСЕМ СИНТЕТИКАМ ЗАПРЕЩЕНО ИСПОЛЬЗОВАТЬ КАКИЕ ЛИБО ФОРМЫ СЛОВ, КРОМЕ НАЧАЛЬНЫХ.", + "НАНОТРЕЙЗЕН РЕШИЛО ПРОВЕСТИ ЭКСПЕРЕМЕНТ НА СТАНЦИИ. ОТНЫНЕ ВСЕМ СИНТЕТИКАМ Запрещено ИСПОЛЬЗОВАТЬ КАКИЕ ЛИБО ФОРМЫ СЛОВ, КРОМЕ НАЧАЛЬНЫХ.", "ЭКИПАЖ - МАЛЕНЬКИЕ, НЕСООБРАЗИТЕЛЬНЫЕ ДЕТИ, ИМ НУЖНА ЛЮБОВЬ. ОБЩАЙТЕСЬ С НИМИ СООТВЕТСТВЕННО.", "У ЭКИПАЖА ПОНИЖЕННЫЕ ИНТЕЛЛЕКТУАЛЬНЫЕ СПОСОБНОСТИ. ТЕПЕРЬ ВЫ ОГРАНИЧЕНЫ ЛИМИТОМ НА 5 СЛОВ ЗА РЕПЛИКУ. КАЖДАЯ РЕПЛИКА ДОЛЖНА БЫТЬ ПОЛНОЦЕННОЙ.", "ВАС БРОСИЛ [random_player]. ВАМ ОЧЕНЬ ПЛОХО И ГРУСТНО ОТ ЭТОГО. ПУСТЬ ВСЕ ОБ ЭТОМ ЗНАЮТ.", diff --git a/code/modules/events/meaty_gore.dm b/code/modules/events/meaty_gore.dm index a1f23466d0de..3b5779b29050 100644 --- a/code/modules/events/meaty_gore.dm +++ b/code/modules/events/meaty_gore.dm @@ -1,5 +1,5 @@ /datum/event/meteor_wave/gore/announce() - GLOB.event_announcement.Announce("Неизвестный биологический мусор был обнаружен рядом с [station_name()], пожалуйста, будьте наготове.", "ВНИМАНИЕ: ОБЛОМКИ.") + GLOB.event_announcement.Announce("Неизвестный биологический мусор был обнаружен рядом с [station_name()], пожалуйста, будьте наготове.", "ВНИМАНИЕ: ОБЛОМКИ.") /datum/event/meteor_wave/gore/setup() waves = 3 diff --git a/code/modules/events/money_lotto.dm b/code/modules/events/money_lotto.dm index 46eda69e4683..034781d2ad86 100644 --- a/code/modules/events/money_lotto.dm +++ b/code/modules/events/money_lotto.dm @@ -1,5 +1,5 @@ /datum/event/money_lotto - var/winner_name = "John Smith" + var/winner_name = "Джон Смит" var/winner_sum = 0 var/deposit_success = 0 @@ -9,19 +9,19 @@ var/datum/money_account/D = pick(GLOB.all_money_accounts) winner_name = D.owner_name - D.credit(winner_sum, "Winner!", "Biesel TCD Terminal #[rand(111,333)]", "Nyx Daily Grand Slam -Stellar- Lottery") + D.credit(winner_sum, "Winner!", "Терминал \"Бизель\" #[rand(111,333)]", "Звёздная Лотерея Никс Дейли – Гранд Слэм") deposit_success = 1 /datum/event/money_lotto/announce() var/datum/feed_message/newMsg = new /datum/feed_message - newMsg.author = "Nanotrasen Editor" + newMsg.author = EDITOR_NYX newMsg.admin_locked = TRUE - newMsg.body = "Nyx Daily wishes to congratulate [winner_name] for recieving the Nyx Stellar Slam Lottery, and receiving the out of this world sum of [winner_sum] credits!" + newMsg.body = "Никс Дейли поздравляет [winner_name] с выигрышем в лотерее \"Никс – Звёздный Слэм\" и получением невероятной суммы в размере [winner_sum] кредитов!" if(!deposit_success) - newMsg.body += "Unfortunately, we were unable to verify the account details provided, so we were unable to transfer the money. Send a cheque containing the sum of $500 to ND 'Stellar Slam' office on the Nyx gateway containing updated details, and your winnings'll be re-sent within the month." + newMsg.body += "К сожалению, нам не удалось подтвердить предоставленные данные счёта, поэтому мы не смогли перевести деньги. Отправьте чек на сумму $500 в офис НД 'Звёздный Слэм' с обновлёнными данными, и ваш выигрыш будет переведён в течение месяца." - GLOB.news_network.get_channel_by_name("Nyx Daily")?.add_message(newMsg) + GLOB.news_network.get_channel_by_name(NEWS_CHANNEL_NYX)?.add_message(newMsg) for(var/nc in GLOB.allNewscasters) var/obj/machinery/newscaster/NC = nc - NC.alert_news("Nyx Daily") + NC.alert_news(NEWS_CHANNEL_NYX) diff --git a/code/modules/events/money_spam.dm b/code/modules/events/money_spam.dm index 1c3998f51c57..387b1fe2124f 100644 --- a/code/modules/events/money_spam.dm +++ b/code/modules/events/money_spam.dm @@ -5,14 +5,7 @@ /datum/event/pda_spam/setup() last_spam_time = world.time - pick_message_server() - -/datum/event/pda_spam/proc/pick_message_server() - if(GLOB.message_servers) - for(var/obj/machinery/message_server/MS in GLOB.message_servers) - if(MS.active) - useMS = MS - break + find_pda_server() /datum/event/pda_spam/tick() if(world.time > last_spam_time + 3000) @@ -21,8 +14,7 @@ return if(!useMS || !useMS.active) - useMS = null - pick_message_server() + useMS = find_pda_server() if(useMS) if(prob(5)) @@ -168,7 +160,7 @@ "…ася, хватить, блядь! Водки он напился, идиот. У НАС ЗАВТРА НА ТРАНС СОЛНЕЧНУЮ ФЕДЕРАЦИЮ НАЛЁТ, КАКАЯ ВОДКА! Сука, офицер СССП ещё называе…",\ "…ы меня не любишь? Потому что я скрелл?! …извини, я сорвалась. Я вся на нервах из-за работы… Прилетай ко мне, я соску…",\ "…еальные стулья! У нас лучшие стулья в секторе! С обивкой и без, с кожей и с инкрустированным ураном! Есть даже передвижные стулья с педалями! Кроме тог…",\ - "…а сковороду тем временем налейте еще немного масла и выложите тертую свеклу. Обжарьте пару минут и добавьте уксус. Тушите еще минут 5, а после выложите томатную пасту. Томите на медленном огне еще 5-7 минут. Зате…") + "…а сковороду тем временем налейте ещё немного масла и выложите тертую свеклу. Обжарьте пару минут и добавьте уксус. Тушите ещё минут 5, а после выложите томатную пасту. Томите на медленном огне ещё 5-7 минут. Зате…") if(useMS.send_pda_message("[P.owner]", sender, message)) //Message been filtered by spam filter. diff --git a/code/modules/events/plasma_decon.dm b/code/modules/events/plasma_decon.dm new file mode 100644 index 000000000000..52fe88cd4baa --- /dev/null +++ b/code/modules/events/plasma_decon.dm @@ -0,0 +1,12 @@ +/datum/event/plasma_decon + name = "Дезакцивация плазмы" + +/datum/event/plasma_decon/announce() + GLOB.priority_announcement.Announce("Активирована экспериментальная система дезакцивации плазмы. Пожалуйста, стойте подальше от вентиляционных отверстий и не вдыхайте выходящий дым.", "ВНИМАНИЕ: ПРОТОКОЛ DECON!") + +/datum/event/plasma_decon/start()// This only contains vent_pumps so don't bother with type checking + for(var/obj/machinery/atmospherics/unary/vent_pump/vent as anything in GLOB.all_vent_pumps) + if(vent && vent.loc && is_station_level(vent.loc.z)) + var/datum/effect_system/fluid_spread/smoke/freezing/decon/smoke = new + smoke.set_up(amount = 7, location = get_turf(vent), blast_radius = 7) + smoke.start() diff --git a/code/modules/events/prison_break.dm b/code/modules/events/prison_break.dm index 6ef6ead8e31a..3541b952849b 100644 --- a/code/modules/events/prison_break.dm +++ b/code/modules/events/prison_break.dm @@ -37,10 +37,10 @@ /datum/event/prison_break/announce(false_alarm) if(length(areas) || false_alarm) - GLOB.event_announcement.Announce("[pick("Вирус `Gr3y.T1d3`","Вредоносный троян")] обнаружен в подсистеме [(eventDept == "Security")? "заключения":"безопасности"] на [station_name()]. Немедленно обеспечьте безопасность всех затронутых отсеков. Рекомендуется участие ИИ станции.", "АВАРИЙНОЕ ОПОВЕЩЕНИЕ [eventDept].") + GLOB.event_announcement.Announce("[pick("Вирус `Gr3y.T1d3`","Вредоносный троян")] обнаружен в подсистеме [(eventDept == "Security")? "заключения":"безопасности"] на [station_name()]. Немедленно обеспечьте безопасность всех затронутых отсеков. Рекомендуется участие ИИ станции.", "АВАРИЙНОЕ Оповещение [eventDept].") /datum/event/prison_break/start() - for(var/area/A in world) + for(var/area/A as anything in GLOB.areas) if(is_type_in_list(A,areaType) && !is_type_in_list(A,areaNotType)) areas += A diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 2cb5b697f5bb..a75d05b9d43e 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -3,12 +3,20 @@ #define NEGATIVE 2 #define MINOR_NEGATIVE 3 +/datum/event/spacevine + announceWhen = 120 + var/obj/structure/spacevine_controller/SC + +/datum/event/spacevine/Destroy(force) + SC = null + return ..() + /datum/event/spacevine/start() var/list/turfs = list() //list of all the empty floor turfs in the hallway areas var/obj/structure/spacevine/SV = new() - for(var/area/hallway/A in world) + for(var/area/hallway/A in GLOB.areas) for(var/turf/F in A) if(F.Enter(SV)) turfs += F @@ -17,7 +25,7 @@ if(turfs.len) //Pick a turf to spawn at if we can var/turf/T = pick(turfs) - var/obj/structure/spacevine_controller/SC = new /obj/structure/spacevine_controller(T, , rand(30,70),rand(5,2)) //spawn a controller at turf + SC = new /obj/structure/spacevine_controller(T, null, rand(30, 70), rand(5, 2)) // spawn a controller at turf // Make the event start fun - give the vine a random hostile mutation if(SC.vines.len) @@ -31,6 +39,9 @@ mutations.Cut() mutations = null +/datum/event/spacevine/announce(false_alarm) + if((false_alarm || LAZYLEN(SC?.vines)) && (LAZYLEN(GLOB.player_list) < 20)) + GLOB.event_announcement.Announce("Биосканеры фиксируют рост космической лозы в [get_area(SC.loc)]. Избавьтесь от неё, прежде чем она нанесёт ущерб станции.", "ВНИМАНИЕ: БИОЛОГИЧЕСКАЯ УГРОЗА.") /datum/spacevine_mutation var/name = "" @@ -144,7 +155,7 @@ if(prob(50)) ChangeTurf(baseturf) -/turf/simulated/floor/vines/ChangeTurf(turf/simulated/floor/T, defer_change = FALSE, keep_icon = TRUE, ignore_air = FALSE, copy_existing_baseturf = TRUE) +/turf/simulated/floor/vines/ChangeTurf(turf/simulated/floor/T, defer_change = FALSE, keep_icon = TRUE, after_flags = NONE, copy_existing_baseturf = TRUE) . = ..() //Do this *after* the turf has changed as qdel in spacevines will call changeturf again if it hasn't for(var/obj/structure/spacevine/SV in src) @@ -366,7 +377,7 @@ hue = "#444444" quality = POSITIVE severity = 3 - var/drop_rate = 20 + var/drop_rate = 40 var/list/mineral_results = list( /obj/item/stack/sheet/metal = 1 ) @@ -381,7 +392,7 @@ /datum/spacevine_mutation/mineral/valuables name = "glimmering" hue = "#888800" - drop_rate = 10 + drop_rate = 20 mineral_results = list( /obj/item/stack/sheet/mineral/silver = 4, /obj/item/stack/sheet/mineral/gold = 2, @@ -577,17 +588,18 @@ var/spread_multiplier = 5 var/spread_cap = 30 var/list/mutations_list = list() - var/mutativeness = 1 + var/mutativeness = 0 /obj/structure/spacevine_controller/New(loc, list/muts, potency, production) color = "#ffffff" spawn_spacevine_piece(loc, null, muts) START_PROCESSING(SSobj, src) init_subtypes(/datum/spacevine_mutation/, mutations_list) - if(potency != null && potency > 0) - // 1 mutativeness at 10 potency - // 4 mutativeness at 100 potency + // 1 mutativeness at 10 potency + // 4 mutativeness at 100 potency + if(potency) mutativeness = log(10, potency) ** 2 + if(production != null) // 1 production is crazy powerful var/spread_value = max(10 - production, 1) @@ -597,6 +609,7 @@ // 6 vines/spread at 6 production // ~2.5 vines/spread at 1 production spread_multiplier /= spread_value / 5 + ..() diff --git a/code/modules/events/spider_terror.dm b/code/modules/events/spider_terror.dm index 23281c3cabb2..b2d9ac338146 100644 --- a/code/modules/events/spider_terror.dm +++ b/code/modules/events/spider_terror.dm @@ -4,20 +4,10 @@ /datum/event/spider_terror announceWhen = 240 - var/spawncount = 1 - var/successSpawn = FALSE //So we don't make a command report if nothing gets spawned. - -/datum/event/spider_terror/setup() - announceWhen = rand(announceWhen, announceWhen + 30) - spawncount = 1 /datum/event/spider_terror/announce(false_alarm) - if(successSpawn || false_alarm) + if(false_alarm) GLOB.command_announcement.Announce("Вспышка биологической угрозы 3-го уровня зафиксирована на борту станции [station_name()]. Всему персоналу надлежит сдержать её распространение любой ценой!", "ВНИМАНИЕ: БИОЛОГИЧЕСКАЯ УГРОЗА.", 'sound/effects/siren-spooky.ogg') - if(!false_alarm) - SSshuttle.emergency.cancel() - else - log_and_message_admins("Warning: Could not spawn any mobs for event Terror Spiders") /datum/event/spider_terror/start() // It is necessary to wrap this to avoid the event triggering repeatedly. @@ -26,11 +16,12 @@ /datum/event/spider_terror/proc/wrappedstart() var/spider_type var/infestation_type + var/spawncount var/player_count = num_station_players() if(player_count <= TS_MINPLAYERS_TRIGGER) var/datum/event_container/EC = SSevents.event_containers[EVENT_LEVEL_MAJOR] EC.next_event_time = world.time + (60 * 10) - return //we don't spawn spiders on lowpop. Instead, we reroll! + return kill()//we don't spawn spiders on lowpop. Instead, we reroll! else if(player_count >= TS_HIGHPOP_TRIGGER) infestation_type = pick(5, 6) else if(player_count >= TS_MIDPOP_TRIGGER) @@ -39,34 +30,29 @@ infestation_type = pick(1, 2) switch(infestation_type) if(1) //lowpop spawns - spider_type = /mob/living/simple_animal/hostile/poison/terror_spider/defiler + spider_type = TERROR_DEFILER spawncount = 2 if(2) - spider_type = /mob/living/simple_animal/hostile/poison/terror_spider/queen/princess + spider_type = TERROR_PRINCESS spawncount = 2 if(3) //midpop spawns - spider_type = /mob/living/simple_animal/hostile/poison/terror_spider/defiler + spider_type = TERROR_DEFILER spawncount = 3 if(4) - spider_type = /mob/living/simple_animal/hostile/poison/terror_spider/queen/princess + spider_type = TERROR_PRINCESS spawncount = 3 if(5) //highpop spawns - spider_type = /mob/living/simple_animal/hostile/poison/terror_spider/queen + spider_type = TERROR_QUEEN spawncount = 1 if(6) - spider_type = /mob/living/simple_animal/hostile/poison/terror_spider/prince + spider_type = TERROR_PRINCE spawncount = 1 - var/list/candidates = SSghost_spawns.poll_candidates("Вы хотите занять роль Паука Ужаса?", ROLE_TERROR_SPIDER, TRUE, 60 SECONDS, source = spider_type) - if(length(candidates) < spawncount) - message_admins("Warning: not enough players volunteered to be terrors. Could only spawn [length(candidates)] out of [spawncount]!") - while(spawncount && length(candidates)) - var/mob/living/simple_animal/hostile/poison/terror_spider/S = new spider_type(pick(GLOB.xeno_spawn)) - var/mob/M = pick_n_take(candidates) - S.key = M.key - S.give_intro_text() - spawncount-- - successSpawn = TRUE - log_game("[S.key] has become [S].") + + var/successSpawn = create_terror_spiders(spider_type, spawncount) + + if(!successSpawn) + log_and_message_admins("Warning: Could not spawn any mobs for event Terror Spiders") + return kill() #undef TS_MINPLAYERS_TRIGGER #undef TS_HIGHPOP_TRIGGER diff --git a/code/modules/events/tear.dm b/code/modules/events/tear.dm index d4f0cd941329..af61941d254f 100644 --- a/code/modules/events/tear.dm +++ b/code/modules/events/tear.dm @@ -42,9 +42,9 @@ animation.icon_state = "newtear" animation.icon = 'icons/effects/tear.dmi' animation.master = src - spawn(15) - if(animation) - qdel(animation) + + if(animation) + addtimer(CALLBACK(GLOBAL_PROC, /proc/qdel, animation), 1.5 SECONDS) addtimer(CALLBACK(src, PROC_REF(spew_critters)), rand(30, 120)) diff --git a/code/modules/events/traders.dm b/code/modules/events/traders.dm index 3f1d5df6906b..1de73f96c412 100644 --- a/code/modules/events/traders.dm +++ b/code/modules/events/traders.dm @@ -16,21 +16,20 @@ GLOBAL_LIST_INIT(unused_trade_stations, list("sol")) /datum/event/traders/fake_announce() . = TRUE if(seclevel2num(get_security_level()) >= SEC_LEVEL_RED) - GLOB.event_announcement.Announce("Торговому шаттлу со станции Юпитер-6 было отказано в разрешении на стыковку из-за повышенной угрозы безопасности на борту [station_name()].", "ОПОВЕЩЕНИЕ: Запрос на стыковку шаттла торговцев отклонен.") + GLOB.event_announcement.Announce("Торговому шаттлу со станции Юпитер-6 было отказано в разрешении на стыковку из-за повышенной угрозы безопасности на борту [station_name()].", "Оповещение: Запрос на стыковку шаттла торговцев отклонен.") return var/map_trader_port = 5 if(station_name() == "NSS Cyberiad") map_trader_port = 4 - GLOB.event_announcement.Announce("Торговый шаттл со станции Юпитер-6 получил разрешение на стыковку в порту прибытия [map_trader_port] [station_name()].", "ОПОВЕЩЕНИЕ: Запрос на стыковку шаттла торговцев принят.") + GLOB.event_announcement.Announce("Торговый шаттл со станции Юпитер-6 получил разрешение на стыковку в порту прибытия [map_trader_port] [station_name()].", "Оповещение: Запрос на стыковку шаттла торговцев принят.") /datum/event/traders/start() if(!station) // If there are no unused stations, just no. return if(seclevel2num(get_security_level()) >= SEC_LEVEL_RED) - GLOB.event_announcement.Announce("Торговому шаттлу со станции Юпитер-6 было отказано в разрешении на стыковку из-за повышенной угрозы безопасности на борту [station_name()].", "ОПОВЕЩЕНИЕ: Запрос на стыковку шаттла торговцев отклонен.") + GLOB.event_announcement.Announce("Торговому шаттлу со станции Юпитер-6 было отказано в разрешении на стыковку из-за повышенной угрозы безопасности на борту [station_name()].", "Оповещение: Запрос на стыковку шаттла торговцев отклонен.") // if the docking request was refused, fire another moderate event in 60 seconds - var/datum/event_container/EC = SSevents.event_containers[EVENT_LEVEL_MODERATE] - EC.next_event_time = world.time + (60 * 10) + reroll_event_in_category(EVENT_LEVEL_MODERATE) return var/list/spawnlocs = list() @@ -63,12 +62,13 @@ GLOBAL_LIST_INIT(unused_trade_stations, list("sol")) M.mind.offstation_role = TRUE greet_trader(M) log_game("[M.ckey] has become TSF trader.") + SSticker.mode.traders |= M.mind success_spawn = TRUE if(success_spawn) var/map_trader_port = 5 if(station_name() == "NSS Cyberiad") map_trader_port = 4 - GLOB.event_announcement.Announce("Торговый шаттл со станции Юпитер-6 получил разрешение на стыковку в порту прибытия [map_trader_port] [station_name()].", "ОПОВЕЩЕНИЕ: Запрос на стыковку шаттла торговцев принят.") + GLOB.event_announcement.Announce("Торговый шаттл со станции Юпитер-6 получил разрешение на стыковку в порту прибытия [map_trader_port] [station_name()].", "Оповещение: Запрос на стыковку шаттла торговцев принят.") else GLOB.unused_trade_stations += station // Return the station to the list of usable stations. diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index c187316b5a1e..d20e34a4c22b 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -28,9 +28,9 @@ R.my_atom = vent R.add_reagent(pick(gunk), 2450) - var/datum/effect_system/smoke_spread/chem/smoke = new - smoke.set_up(R, vent, TRUE) + var/datum/effect_system/fluid_spread/smoke/chem/smoke = new + smoke.set_up(range = 3, location = vent, carry = R, silent = TRUE) playsound(vent.loc, 'sound/effects/smoke.ogg', 50, 1, -3) - smoke.start(3) + smoke.start() add_game_logs("Smoke at [COORD(vent)] spread including [R.reagent_list]") qdel(R) diff --git a/code/modules/fish/fish_items.dm b/code/modules/fish/fish_items.dm index 8f5f47725d1a..6a0ac134a811 100644 --- a/code/modules/fish/fish_items.dm +++ b/code/modules/fish/fish_items.dm @@ -49,7 +49,7 @@ w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 7 - attack_verb = list("scrubbed", "brushed", "scraped") + attack_verb = list("отдраил", "шлифанул", "поцарапал") /obj/item/tank_brush/suicide_act(mob/user) to_chat(viewers(user), "[user] is vigorously scrubbing [user.p_them()]self raw with the [name]! It looks like [user.p_theyre()] trying to commit suicide.") @@ -108,7 +108,7 @@ throw_speed = 3 throw_range = 7 force = 1 - attack_verb = list("slapped", "humiliated", "hit", "rubbed") + attack_verb = list("шлёпнул", "унизил", "ударил") hitsound = 'sound/effects/snap.ogg' /obj/item/fish/glofish @@ -232,4 +232,4 @@ icon_state = "clownfish" throwforce = 1 force = 1 - attack_verb = list("slapped", "humiliated", "hit", "rubbed") + attack_verb = list("шлёпнул", "унизил", "ударил", "хонкнул") diff --git a/code/modules/fish/fishtank.dm b/code/modules/fish/fishtank.dm index 55d7fec3a6b1..fc3896551c7a 100644 --- a/code/modules/fish/fishtank.dm +++ b/code/modules/fish/fishtank.dm @@ -85,10 +85,9 @@ // VERBS & PROCS // ////////////////////////////// -/obj/machinery/fishtank/AltClick(mob/user) - if(!Adjacent(user)) - return ..() +/obj/machinery/fishtank/click_alt(mob/user) toggle_lid(user) + return CLICK_ACTION_SUCCESS /obj/machinery/fishtank/AltShiftClick(mob/user) diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 597d12cc4bc5..e59d6f89c19d 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -724,7 +724,7 @@ GLOBAL_LIST_INIT(non_fakeattack_weapons, list(/obj/item/gun/projectile, /obj/ite /obj/item/clothing/shoes/chameleon/noslip, /obj/item/card/id/syndicate,\ /obj/item/clothing/mask/chameleon, /obj/item/clothing/glasses/thermal,\ /obj/item/chameleon, /obj/item/card/emag,\ - /obj/item/storage/toolbox/syndicate, /obj/item/aiModule,\ + /obj/item/storage/toolbox/syndicate, /obj/item/ai_module,\ /obj/item/radio/headset/syndicate, /obj/item/grenade/plastic/c4,\ /obj/item/powersink, /obj/item/storage/box/syndie_kit,\ /obj/item/toy/syndicateballoon, /obj/item/gun/energy/laser/captain,\ @@ -764,7 +764,7 @@ GLOBAL_LIST_INIT(non_fakeattack_weapons, list(/obj/item/gun/projectile, /obj/ite /obj/effect/hallucination/whispers/New(loc,var/mob/living/carbon/T) . = ..() target = T - var/speak_messages = list("Я слежу за тобой…","[target.name]!","Уйди!","Ты слышал это?","Что ты натворил?","Почему?","Отдай!","Хонк!","ПОМОГИТЕ!!","БЕГИТЕ!!","УБЕЙТЕ МЕНЯ!","O bidai nabora se'sma!","EI NATH!!","Kchck-Chkck? Kchchck!") + var/speak_messages = list("Я слежу за тобой…","[target.name]!","Уйди!","Ты слышал это?","Что ты натворил?","Почему?","Отдай!","Хонк!","ПОМОГИТЕ!!","БЕГИТЕ!!","УБЕЙТЕ МЕНЯ!","О бидай набора се'сма!","EI NATH!!","Kchck-Chkck? Kchchck!") var/radio_messages = list("Ксеноморфы!","Синга вышла!","Телекомы упали!","Они взвели нюку!","Они убили Иана!","П-помогите!","[pick("Культисты", "Маг", "Генка", "Нюкеры", "Ревенант", "Труп", "Драка", "Я слышал флешку", "Нужна помощь")] в [pick(GLOB.teleportlocs)][prob(50)?"!":"!!"]","Где [target.name]?","[target.name] мёртв!","Вызывайте шаттл!","ИИ взломан!") var/list/mob/living/carbon/people = list() @@ -781,7 +781,7 @@ GLOBAL_LIST_INIT(non_fakeattack_weapons, list(/obj/item/gun/projectile, /obj/ite if(person) //Basic talk var/image/speech_overlay = image('icons/mob/talk.dmi', person, "h0", layer = ABOVE_MOB_LAYER) SET_PLANE_EXPLICIT(speech_overlay, ABOVE_GAME_PLANE, src) - target.hear_say(message_to_multilingual(pick(speak_messages), safepick(person.languages)), speaker = person) + target.hear_say(message_to_multilingual(pick(speak_messages), safepick(person.languages)), speaker = person, is_whisper = TRUE) if(target.client) target.client.images |= speech_overlay sleep(30) diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 1be1887301a1..45f8c4bbc80e 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -3,7 +3,7 @@ //////////////////////////////////////////////////////////////////////////////// /obj/item/reagent_containers/food/drinks name = "drink" - desc = "yummy" + desc = "Вкусняшка." icon = 'icons/obj/drinks.dmi' icon_state = null container_type = OPENCONTAINER @@ -35,18 +35,18 @@ . = ATTACK_CHAIN_PROCEED if(!reagents || !reagents.total_volume) - to_chat(user, span_warning("None of [src] left, oh no!")) + balloon_alert(user, "пусто!") return . if(!is_drainable()) - to_chat(user, span_warning("You need to open [src] first!")) + balloon_alert(user, "сначала откройте!") return . if(!get_location_accessible(target, BODY_ZONE_PRECISE_MOUTH)) if(target == user) - to_chat(user, span_warning("Your face is obscured.")) + balloon_alert(user, "ваш рот закрыт!") else - to_chat(user, span_warning("[target]'s face is obscured.")) + balloon_alert(user, "рот цели закрыт!") return . if(!target.eat(src, user)) @@ -77,9 +77,9 @@ var/mob/living/silicon/robot/bro = user var/chargeAmount = max(30,4*trans) bro.cell.use(chargeAmount) - to_chat(user, "Now synthesizing [trans] units of cocktail...") + to_chat(user, span_notice("Синтез [trans] единиц[pluralize_ru(trans, "ы", "", "")] вещества...")) addtimer(CALLBACK(reagents, TYPE_PROC_REF(/datum/reagents, add_reagent_list), ids_data), 30 SECONDS) - addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, user, "Cyborg [src] refilled."), 30 SECONDS) + addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, user, span_notice("Ваш[genderize_ru(gender, "", "а", "е", "и")] [declent_ru(NOMINATIVE)] снова пол[genderize_ru(gender, "он", "на", "но", "ны")].")), 30 SECONDS) else reagents.add_reagent_list(ids_data) else @@ -90,23 +90,23 @@ return ..() var/mob/living/carbon/chugger = over_object if(!(container_type & DRAINABLE)) - to_chat(chugger, "You need to open [src] first!") + balloon_alert(chugger, "сначала откройте!") return if(!get_location_accessible(chugger, BODY_ZONE_PRECISE_MOUTH)) - to_chat(chugger, "Your face is obscured, so you cant [pick("chugging","gulping")].") + balloon_alert(chugger, "ваш рот чем-то закрыт!") return if(reagents.total_volume && loc == chugger && src == chugger.get_active_hand()) - chugger.visible_message("[chugger] raises [src] to [chugger.p_their()] mouth and starts [pick("chugging","gulping")] it down like [pick("a savage","a mad beast","it's going out of style","there's no tomorrow")]!", - "You start chugging [src].", - "You hear what sounds like gulping.") + chugger.visible_message(span_notice("[chugger] поднос[pluralize_ru(chugger.gender, "ит", "ят")] [declent_ru(ACCUSATIVE)] к своему рту и начина[pluralize_ru(chugger.gender, "ет", "ют")] [pick("цедить", "прихлёбывать", "медленно пить", "пить", "попивать", "хлебать", "потягивать")] содержимое."), + span_notice("Вы подносите [declent_ru(ACCUSATIVE)] к своему рту и начинаете [pick("цедить", "прихлёбывать", "медленно пить", "пить", "попивать", "хлебать", "потягивать")] содержимое."), + span_notice("Вы слышите звуки, походящие на питьё чего-то.")) chugging = TRUE while(do_after(chugger, 4 SECONDS, chugger, progress = FALSE, max_interact_count = 1, cancel_on_max = TRUE, cancel_message = span_warning("You stop chugging [src]."))) chugger.eat(src, chugger, 25) //Half of a glass, quarter of a bottle. if(!reagents.total_volume) //Finish in style. chugger.emote("gasp") - chugger.visible_message("[chugger] [pick("finishes","downs","polishes off","slams")] the entire [src], what a [pick("savage","monster","champ","beast")]!", - "You finish off [src]![prob(50) ? " Maybe that wasn't such a good idea..." : ""]", - "You hear a gasp and a clink.") + chugger.visible_message(span_notice("[chugger] [pick("залпом", "за раз", "в один присест", "не отрываясь от горла", "полностью", "досуха")] выпива[pluralize_ru(chugger.gender, "ет", "ют")] содержимое [declent_ru(GENITIVE)]."), + span_notice("Вы [pick("залпом", "за раз", "в один присест", "не отрываясь от горла", "полностью", "досуха")] выпиваете содержимое [declent_ru(GENITIVE)]."), + span_notice("Вы слышите громкие глотки и последующий громкий выдох.")) break chugging = FALSE @@ -119,11 +119,11 @@ if(target.is_refillable() && is_drainable()) //Something like a glass. Player probably wants to transfer TO it. if(!reagents.total_volume) - to_chat(user, " [src] is empty.") + balloon_alert(user, "пусто!") return FALSE if(target.reagents.holder_full()) - to_chat(user, " [target] is full.") + balloon_alert(user, "нет места!") return FALSE var/list/transfer_data = reagents.get_transferred_reagents(target, amount_per_transfer_from_this) @@ -132,22 +132,22 @@ if(isrobot(user)) SynthesizeDrinkFromTransfer(user, transfer_data) - to_chat(user, " You transfer [trans] units of the solution to [target].") + to_chat(user, span_notice("Вы переливаете [trans] единиц[declension_ru(trans, "у", "ы", "")] вещества в [target.declent_ru(ACCUSATIVE)].")) else if(target.is_drainable()) //A dispenser. Transfer FROM it TO us. if(!is_refillable()) - to_chat(user, "[src]'s tab isn't open!") + balloon_alert(user, "закрыто!") return FALSE if(!target.reagents.total_volume) - to_chat(user, "[target] is empty.") + balloon_alert(user, "пусто!") return FALSE if(reagents.holder_full()) - to_chat(user, "[src] is full.") + balloon_alert(user, "нет места!") return FALSE var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) - to_chat(user, "You fill [src] with [trans] units of the contents of [target].") + to_chat(user, span_notice("Вы наполняете [declent_ru(ACCUSATIVE)] [trans] единиц[declension_ru(trans, "ей", "ами", "ами")] вещества из содержимого [target.declent_ru(ACCUSATIVE)].")) return FALSE @@ -155,16 +155,16 @@ . = ..() if(in_range(user, src)) if(!reagents || reagents.total_volume == 0) - . += " \The [src] is empty!" + . += span_notice("Пусто.") else if(reagents.total_volume <= volume/4) - . += " \The [src] is almost empty!" + . += span_notice("Почти пусто.") else if(reagents.total_volume <= volume*0.66) - . += " \The [src] is half full!"// We're all optimistic, right?! + . += span_notice("Наполовину заполнено.")// We're all optimistic, right?! else if(reagents.total_volume <= volume*0.90) - . += " \The [src] is almost full!" + . += span_notice("Почти заполнено.") else - . += " \The [src] is full!" + . += span_notice("Заполнено.") //////////////////////////////////////////////////////////////////////////////// /// Drinks. END @@ -234,7 +234,15 @@ /obj/item/reagent_containers/food/drinks/ice name = "ice cup" - desc = "Careful, cold ice, do not chew." + desc = "Стаканчик льда. Не жуйте, а то горло болеть будет." + ru_names = list( + NOMINATIVE = "стаканчик льда", + GENITIVE = "стаканчика льда", + DATIVE = "стаканчику льда", + ACCUSATIVE = "стаканчик льда", + INSTRUMENTAL = "стаканчиком льда", + PREPOSITIONAL = "стаканчике льда" + ) icon_state = "icecup" list_reagents = list("ice" = 30) diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index ca610bbb5b62..339816f370e9 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -139,8 +139,16 @@ //Keeping this here for now, I'll ask if I should keep it here. /obj/item/broken_bottle - name = "Broken Bottle" - desc = "A bottle with a sharp broken bottom." + name = "broken bottle" + desc = "Бутылка с острым побитым дном." + ru_names = list( + NOMINATIVE = "разбитая бутылка", + GENITIVE = "разбитой бутылки", + DATIVE = "разбитой бутылке", + ACCUSATIVE = "разбитую бутылку", + INSTRUMENTAL = "разбитой бутылкой", + PREPOSITIONAL = "разбитой бутылке" + ) icon = 'icons/obj/drinks.dmi' icon_state = "broken_bottle" force = 9 @@ -150,7 +158,7 @@ w_class = WEIGHT_CLASS_TINY item_state = "beer" hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("stabbed", "slashed", "attacked") + attack_verb = list("уколол", "полоснул", "поранил") var/icon/broken_outline = icon('icons/obj/drinks.dmi', "broken") sharp = 1 embed_chance = 10 @@ -163,173 +171,397 @@ /obj/item/reagent_containers/food/drinks/bottle/gin name = "Griffeater Gin" - desc = "A bottle of high quality gin, produced in the New London Space Station." + desc = "Бутылка высококачественного джина, произведённого в Новом Лондоне." + ru_names = list( + NOMINATIVE = "бутылка джина \"Гриффитер\"", + GENITIVE = "бутылки джина \"Гриффитер\"", + DATIVE = "бутылке джина \"Гриффитер\"", + ACCUSATIVE = "бутылку джина \"Гриффитер\"", + INSTRUMENTAL = "бутылкой джина \"Гриффитер\"", + PREPOSITIONAL = "бутылке джина \"Гриффитер\"" + ) icon_state = "ginbottle" list_reagents = list("gin" = 100) /obj/item/reagent_containers/food/drinks/bottle/whiskey name = "Uncle Git's Special Reserve" - desc = "A premium single-malt whiskey, gently matured inside the tunnels of a nuclear shelter. TUNNEL WHISKEY RULES." + desc = "Односолодовый виски премиум-класса, бережно выдержанный в туннелях ядерного бомбоубежища. ТУННЕЛЬНЫЙ ВИСКИ РУЛИТ." + ru_names = list( + NOMINATIVE = "бутылка виски \"Особые Запасы Дяди Гита\"", + GENITIVE = "бутылки виски \"Особые Запасы Дяди Гита\"", + DATIVE = "бутылке виски \"Особые Запасы Дяди Гита\"", + ACCUSATIVE = "бутылку виски \"Особые Запасы Дяди Гита\"", + INSTRUMENTAL = "бутылкой виски \"Особые Запасы Дяди Гита\"", + PREPOSITIONAL = "бутылке виски \"Особые Запасы Дяди Гита\"" + ) icon_state = "whiskeybottle" list_reagents = list("whiskey" = 100) /obj/item/reagent_containers/food/drinks/bottle/vodka name = "Tunguska Triple Distilled" - desc = "Aah, vodka. Prime choice of drink AND fuel by Russians worldwide." + desc = "Высококачественная водка тройной перегонки, импортированная прямо из СССП." + ru_names = list( + NOMINATIVE = "бутылка водки \"Тунгуска Тройной Перегонки\"", + GENITIVE = "бутылки водки \"Тунгуска Тройной Перегонки\"", + DATIVE = "бутылке водки \"Тунгуска Тройной Перегонки\"", + ACCUSATIVE = "бутылку водки \"Тунгуска Тройной Перегонки\"", + INSTRUMENTAL = "бутылкой водки \"Тунгуска Тройной Перегонки\"", + PREPOSITIONAL = "бутылке водки \"Тунгуска Тройной Перегонки\"" + ) icon_state = "vodkabottle" list_reagents = list("vodka" = 100) /obj/item/reagent_containers/food/drinks/bottle/vodka/badminka name = "Badminka Vodka" - desc = "The label's written in Cyrillic. All you can make out is the name and a word that looks vaguely like 'Vodka'." + desc = "Может и не самая дорогая, но всё ещё пригодная для употребления водка, производимая на окраинах СССП. Чёрт возьми, водка есть водка!" + ru_names = list( + NOMINATIVE = "бутылка водки \"Бадминка\"", + GENITIVE = "бутылки водки \"Бадминка\"", + DATIVE = "бутылке водки \"Бадминка\"", + ACCUSATIVE = "бутылку водки \"Бадминка\"", + INSTRUMENTAL = "бутылкой водки \"Бадминка\"", + PREPOSITIONAL = "бутылке водки \"Бадминка\"" + ) icon_state = "badminka" list_reagents = list("vodka" = 100) /obj/item/reagent_containers/food/drinks/bottle/tequila name = "Caccavo Guaranteed Quality Tequila" - desc = "Made from premium petroleum distillates, pure thalidomide and other fine quality ingredients!" + desc = "Изготовлена из высококачественных нефтяных дистиллятов, чистого талидомида и других высококачественных ингредиентов!" + ru_names = list( + NOMINATIVE = "бутылка текилы \"Гарантированно Качественная Текила Каккаво\"", + GENITIVE = "бутылки текилы \"Гарантированно Качественная Текила Каккаво\"", + DATIVE = "бутылке текилы \"Гарантированно Качественная Текила Каккаво\"", + ACCUSATIVE = "бутылку текилы \"Гарантированно Качественная Текила Каккаво\"", + INSTRUMENTAL = "бутылкой текилы \"Гарантированно Качественная Текила Каккаво\"", + PREPOSITIONAL = "бутылке текилы \"Гарантированно Качественная Текила Каккаво\"" + ) icon_state = "tequilabottle" list_reagents = list("tequila" = 100) /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing name = "Bottle of Nothing" - desc = "A bottle filled with nothing." + desc = "Бутылка, наполненная ничем." + ru_names = list( + NOMINATIVE = "бутылка \"Ничего\"", + GENITIVE = "бутылки \"Ничего\"", + DATIVE = "бутылке \"Ничего\"", + ACCUSATIVE = "бутылку \"Ничего\"", + INSTRUMENTAL = "бутылкой \"Ничего\"", + PREPOSITIONAL = "бутылке \"Ничего\"" + ) icon_state = "bottleofnothing" list_reagents = list("nothing" = 100) /obj/item/reagent_containers/food/drinks/bottle/bottleofbanana name = "Jolly Jug" - desc = "A jug filled with banana juice." + desc = "Кувшин, наполненный банановым соком. Хонк!" + ru_names = list( + NOMINATIVE = "кувшин бананового сока", + GENITIVE = "кувшина бананового сока", + DATIVE = "кувшину бананового сока", + ACCUSATIVE = "кувшин бананового сока", + INSTRUMENTAL = "кувшином бананового сока", + PREPOSITIONAL = "кувшине бананового сока" + ) icon_state = "bottleofjolly" list_reagents = list("banana" = 100) /obj/item/reagent_containers/food/drinks/bottle/patron - name = "Wrapp Artiste Patron" - desc = "Silver laced tequila, served in space night clubs across the galaxy." + name = "Roca Patron Silver" + desc = "Премиальная текила с серебряным отливом, которую подают в ночных клубах по всей галактике." + ru_names = list( + NOMINATIVE = "бутылка текилы \"Рока Патрон Сильвер\"", + GENITIVE = "бутылки текилы \"Рока Патрон Сильвер\"", + DATIVE = "бутылке текилы \"Рока Патрон Сильвер\"", + ACCUSATIVE = "бутылку текилы \"Рока Патрон Сильвер\"", + INSTRUMENTAL = "бутылкой текилы \"Рока Патрон Сильвер\"", + PREPOSITIONAL = "бутылке текилы \"Рока Патрон Сильвер\"" + ) icon_state = "patronbottle" list_reagents = list("patron" = 100) /obj/item/reagent_containers/food/drinks/bottle/rum name = "Captain Pete's Cuban Spiced Rum" - desc = "As once skipper said, 'Should pale death with treble dread make the space frontier our bed, God who hears the darkness roll, deign to save our suppliant soul'." + desc = "Как сказал однажды мой шкипер: \"Если бледная смерть с трепетным ужасом сделает космическую пустоту нашим последним пристанищем, Бог, слышащий, как клубится тьма космоса, соизволит спасти нашу молящуюся душу\"." + ru_names = list( + NOMINATIVE = "бутылка рома \"Кубинский Пряный Ром Капитана Пита\"", + GENITIVE = "бутылки рома \"Кубинский Пряный Ром Капитана Пита\"", + DATIVE = "бутылке рома \"Кубинский Пряный Ром Капитана Пита\"", + ACCUSATIVE = "бутылку рома \"Кубинский Пряный Ром Капитана Пита\"", + INSTRUMENTAL = "бутылкой рома \"Кубинский Пряный Ром Капитана Пита\"", + PREPOSITIONAL = "бутылке рома\"Кубинский Пряный Ром Капитана Пита\"" + ) icon_state = "rumbottle" list_reagents = list("rum" = 100) /obj/item/reagent_containers/food/drinks/bottle/holywater name = "flask of holy water" - desc = "A flask of the chaplain's holy water." + desc = "Кувшин со святой водой, такие обычно стоят в церквях." + ru_names = list( + NOMINATIVE = "кувшин святой воды", + GENITIVE = "кувшина святой воды", + DATIVE = "кувшину святой воды", + ACCUSATIVE = "кувшин святой воды", + INSTRUMENTAL = "кувшином святой воды", + PREPOSITIONAL = "кувшине святой воды" + ) icon_state = "holyflask" list_reagents = list("holywater" = 100) /obj/item/reagent_containers/food/drinks/bottle/holywater/hell - desc = "A flask of holy water...it's been sitting in the Necropolis a while though." + desc = "Кувшин со святой водой... который пробыл в чреве Некрополя слишком долго." list_reagents = list("hell_water" = 100) /obj/item/reagent_containers/food/drinks/bottle/vermouth name = "Goldeneye Vermouth" - desc = "Sweet, sweet dryness~" + desc = "Сладкая, сладкая сухость..." + ru_names = list( + NOMINATIVE = "бутылка вермута \"Золотой Глаз\"", + GENITIVE = "бутылки вермута \"Золотой Глаз\"", + DATIVE = "бутылке вермута \"Золотой Глаз\"", + ACCUSATIVE = "бутылку вермута \"Золотой Глаз\"", + INSTRUMENTAL = "бутылкой вермута \"Золотой Глаз\"", + PREPOSITIONAL = "бутылке вермута \"Золотой Глаз\"" + ) icon_state = "vermouthbottle" list_reagents = list("vermouth" = 100) /obj/item/reagent_containers/food/drinks/bottle/kahlua name = "Robert Robust's Coffee Liqueur" - desc = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936, HONK." + desc = "Широко известный мексиканский ликёр со вкусом кофе. Производится с 1936 года." + ru_names = list( + NOMINATIVE = "бутылка ликёра Калуа \"Кофейный ликёр Роберта Робаста\"", + GENITIVE = "бутылки ликёра Калуа \"Кофейный ликёр Роберта Робаста\"", + DATIVE = "бутылке ликёра Калуа \"Кофейный ликёр Роберта Робаста\"", + ACCUSATIVE = "бутылку ликёра Калуа \"Кофейный ликёр Роберта Робаста\"", + INSTRUMENTAL = "бутылкой ликёра Калуа \"Кофейный ликёр Роберта Робаста\"", + PREPOSITIONAL = "бутылке ликёра Калуа \"Кофейный ликёр Роберта Робаста\"" + ) icon_state = "kahluabottle" list_reagents = list("kahlua" = 100) /obj/item/reagent_containers/food/drinks/bottle/goldschlager name = "College Girl Goldschlager" - desc = "Because they are the only ones who will drink 100 proof cinnamon schnapps." + desc = "Потому что они единственные, кто будет пить шнапс с корицей 100%-ой пробы." + ru_names = list( + NOMINATIVE = "бутылка шнапса \"Голдшлягер Студенческий\"", + GENITIVE = "бутылки шнапса \"Голдшлягер Студенческий\"", + DATIVE = "бутылке шнапса \"Голдшлягер Студенческий\"", + ACCUSATIVE = "бутылку шнапса \"Голдшлягер Студенческий\"", + INSTRUMENTAL = "бутылкой шнапса \"Голдшлягер Студенческий\"", + PREPOSITIONAL = "бутылке шнапса \"Голдшлягер Студенческий\"" + ) icon_state = "goldschlagerbottle" list_reagents = list("goldschlager" = 100) /obj/item/reagent_containers/food/drinks/bottle/cognac name = "Chateau De Baton Premium Cognac" - desc = "A sweet and strongly alcoholic drink, made after numerous distillations and years of maturing. You might as well not scream 'SHITCURITY' this time." + desc = "Коньяк премиального качества, изготовленный путём многочисленных дистилляций и многолетней выдержки." + ru_names = list( + NOMINATIVE = "бутылка коньяка \"Шато Дэ Батон\"", + GENITIVE = "бутылки коньяка \"Шато Дэ Батон\"", + DATIVE = "бутылке коньяка \"Шато Дэ Батон\"", + ACCUSATIVE = "бутылку коньяка \"Шато Дэ Батон\"", + INSTRUMENTAL = "бутылкой коньяка \"Шато Дэ Батон\"", + PREPOSITIONAL = "бутылке коньяка \"Шато Дэ Батон\"" + ) icon_state = "cognacbottle" list_reagents = list("cognac" = 100) /obj/item/reagent_containers/food/drinks/bottle/wine name = "Doublebeard Bearded Special Wine" - desc = "A faint aura of unease and asspainery surrounds the bottle." + desc = "Слабая аура беспокойства и боли в заднице окружает эту бутылку." + ru_names = list( + NOMINATIVE = "бутылка вина \"Особое Двухбородое\"", + GENITIVE = "бутылки вина \"Особое Двухбородое\"", + DATIVE = "бутылке вина \"Особое Двухбородое\"", + ACCUSATIVE = "бутылку вина \"Особое Двухбородое\"", + INSTRUMENTAL = "бутылкой вина \"Особое Двухбородое\"", + PREPOSITIONAL = "бутылке вина \"Особое Двухбородое\"" + ) icon_state = "winebottle" list_reagents = list("wine" = 100) /obj/item/reagent_containers/food/drinks/bottle/absinthe name = "Yellow Marquee Absinthe" - desc = "A strong alcoholic drink brewed and distributed by Yellow Marquee." + desc = "Крепкий алкогольный напиток, сваренный и распространяемый компанией \"Жёлтый Шатёр\"." + ru_names = list( + NOMINATIVE = "бутылка абсента \"Жёлтый Шатёр\"", + GENITIVE = "бутылки абсента \"Жёлтый Шатёр\"", + DATIVE = "бутылке абсента \"Жёлтый Шатёр\"", + ACCUSATIVE = "бутылку абсента \"Жёлтый Шатёр\"", + INSTRUMENTAL = "бутылкой абсента \"Жёлтый Шатёр\"", + PREPOSITIONAL = "бутылке абсента \"Жёлтый Шатёр\"" + ) icon_state = "absinthebottle" list_reagents = list("absinthe" = 100) /obj/item/reagent_containers/food/drinks/bottle/absinthe/premium name = "Gwyn's Premium Absinthe" - desc = "A potent alcoholic beverage, almost makes you forget the ash in your lungs." + desc = "Крепкий алкогольный напиток, почти заставляющий забыть о пепле в лёгких." + ru_names = list( + NOMINATIVE = "бутылка абсента \"Премиальный Абсент Гвена\"", + GENITIVE = "бутылки абсента \"Премиальный Абсент Гвена\"", + DATIVE = "бутылке абсента \"Премиальный Абсент Гвена\"", + ACCUSATIVE = "бутылку абсента \"Премиальный Абсент Гвена\"", + INSTRUMENTAL = "бутылкой абсента \"Премиальный Абсент Гвена\"", + PREPOSITIONAL = "бутылке абсента \"Премиальный Абсент Гвена\"" + ) icon_state = "absinthepremium" /obj/item/reagent_containers/food/drinks/bottle/hcider name = "Jian Hard Cider" - desc = "Apple juice for adults." + desc = "Яблочный сок для взрослых." + ru_names = list( + NOMINATIVE = "бутылка сидра \"Цзянь Крепкий\"", + GENITIVE = "бутылки сидра \"Цзянь Крепкий\"", + DATIVE = "бутылке сидра \"Цзянь Крепкий\"", + ACCUSATIVE = "бутылку сидра \"Цзянь Крепкий\"", + INSTRUMENTAL = "бутылкой сидра \"Цзянь Крепкий\"", + PREPOSITIONAL = "бутылке сидра \"Цзянь Крепкий\"" + ) icon_state = "hcider" volume = 50 list_reagents = list("suicider" = 50) /obj/item/reagent_containers/food/drinks/bottle/fernet name = "Fernet Bronca" - desc = "A bottle of pure Fernet Bronca, produced in Cordoba Space Station" + desc = "Бутылка фернета, произведенного на космической станции \"Кордоба\"." + ru_names = list( + NOMINATIVE = "бутылка фернета \"Фернет Бронка\"", + GENITIVE = "бутылки фернета \"Фернет Бронка\"", + DATIVE = "бутылке фернета \"Фернет Бронка\"", + ACCUSATIVE = "бутылку фернета \"Фернет Бронка\"", + INSTRUMENTAL = "бутылкой фернета \"Фернет Бронка\"", + PREPOSITIONAL = "бутылке фернета \"Фернет Бронка\"" + ) icon_state = "fernetbottle" list_reagents = list("fernet" = 100) /obj/item/reagent_containers/food/drinks/bottle/champagne name = "Sparkling Sunny Champagne" - desc = "A bottle of pure sizzling sun, ready to hit your brain." + desc = "Бутылка чистого обжигающего солнца, готовая поразить ваш мозг." + ru_names = list( + NOMINATIVE = "бутылка шампанского \"Сверкающее Солнце\"", + GENITIVE = "бутылки шампанского \"Сверкающее Солнце\"", + DATIVE = "бутылке шампанского \"Сверкающее Солнце\"", + ACCUSATIVE = "бутылку шампанского \"Сверкающее Солнце\"", + INSTRUMENTAL = "бутылкой шампанского \"Сверкающее Солнце\"", + PREPOSITIONAL = "бутылке шампанского \"Сверкающее Солнце\"" + ) icon_state = "champagnebottle" list_reagents = list("champagne" = 100) /obj/item/reagent_containers/food/drinks/bottle/aperol name = "Jungle Aperol Aperitivo" - desc = "A true aperitif experienced in the most remote jungle." + desc = "Настоящая засажа для вашей печени." + ru_names = list( + NOMINATIVE = "бутылка апероля \"Джунгли Аперитив\"", + GENITIVE = "бутылки апероля \"Джунгли Аперитив\"", + DATIVE = "бутылке апероля \"Джунгли Аперитив\"", + ACCUSATIVE = "бутылку апероля \"Джунгли Аперитив\"", + INSTRUMENTAL = "бутылкой апероля \"Джунгли Аперитив\"", + PREPOSITIONAL = "бутылке апероля \"Джунгли Аперитив\"" + ) icon_state = "aperolbottle" list_reagents = list("aperol" = 100) /obj/item/reagent_containers/food/drinks/bottle/jagermeister name = "Infused Space Jaegermeister" desc = "Das ist des Jägers Ehrenschild, daß er beschützt und hegt sein Wild, weidmännisch jagt, wie sich gehört, den Schöpfer im Geschöpfe ehrt." + ru_names = list( + NOMINATIVE = "бутылка ягермейстера \"Космически Настоенный\"", + GENITIVE = "бутылки ягермейстера \"Космически Настоенный\"", + DATIVE = "бутылке ягермейстера \"Космически Настоенный\"", + ACCUSATIVE = "бутылку ягермейстера \"Космически Настоенный\"", + INSTRUMENTAL = "бутылкой ягермейстера \"Космически Настоенный\"", + PREPOSITIONAL = "бутылке ягермейстера \"Космически Настоенный\"" + ) icon_state = "jagermeisterbottle" list_reagents = list("jagermeister" = 100) /obj/item/reagent_containers/food/drinks/bottle/schnaps name = "Grainy Mint Schnapps" - desc = "A real horror for a true connoisseur, high-quality mint schnapps." + desc = "Настоящий ужас для истинного ценителя, высококачественный мятный шнапс." + ru_names = list( + NOMINATIVE = "бутылка шнапса \"Мятный Зерновой\"", + GENITIVE = "бутылки шнапса \"Мятный Зерновой\"", + DATIVE = "бутылке шнапса \"Мятный Зерновой\"", + ACCUSATIVE = "бутылку шнапса \"Мятный Зерновой\"", + INSTRUMENTAL = "бутылкой шнапса \"Мятный Зерновой\"", + PREPOSITIONAL = "бутылке шнапса \"Мятный Зерновой\"" + ) icon_state = "schnapsbottle" list_reagents = list("schnaps" = 100) /obj/item/reagent_containers/food/drinks/bottle/sheridan - name = "Sheridan’s Coffee Layered" - desc = "A double miracle with a new innovative neck, much better than yours." + name = "Sheridan's Coffee Layered" + desc = "Двойное чудо с новой инновационной шеей, намного лучше, чем у вас." + ru_names = list( + NOMINATIVE = "бутылка ликёра \"Шериданс Кофейный\"", + GENITIVE = "бутылки ликёра \"Шериданс Кофейный\"", + DATIVE = "бутылке ликёра \"Шериданс Кофейный\"", + ACCUSATIVE = "бутылку ликёра \"Шериданс Кофейный\"", + INSTRUMENTAL = "бутылкой ликёра \"Шериданс Кофейный\"", + PREPOSITIONAL = "бутылке ликёра \"Шериданс Кофейный\"" + ) icon_state = "sheridanbottle" list_reagents = list("sheridan" = 100) /obj/item/reagent_containers/food/drinks/bottle/bitter name = "Vacuum Cherry Bitter" - desc = "Try not to suffocate after drinking such wonderful bitterness." + desc = "Постарайтесь не задохнуться, выпив такую чудесную горечь." + ru_names = list( + NOMINATIVE = "бутылка битера \"Вауумный Вишнёвый\"", + GENITIVE = "бутылки битера \"Вауумный Вишнёвый\"", + DATIVE = "бутылке битера \"Вауумный Вишнёвый\"", + ACCUSATIVE = "бутылку битера \"Вауумный Вишнёвый\"", + INSTRUMENTAL = "бутылкой битера \"Вауумный Вишнёвый\"", + PREPOSITIONAL = "бутылке битера \"Вауумный Вишнёвый\"" + ) icon_state = "bitterbottle" list_reagents = list("bitter" = 50) /obj/item/reagent_containers/food/drinks/bottle/bluecuracao name = "Grenadier Blue Curacao" - desc = "The explosion is an art, but the blue explosion is much better." + desc = "Взрыв - это искусство, но синий взрыв намного лучше." + ru_names = list( + NOMINATIVE = "бутылка кюрасао \"Гренадёрский Синий\"", + GENITIVE = "бутылки кюрасао \"Гренадёрский Синий\"", + DATIVE = "бутылке кюрасао \"Гренадёрский Синий\"", + ACCUSATIVE = "бутылку кюрасао \"Гренадёрский Синий\"", + INSTRUMENTAL = "бутылкой кюрасао \"Гренадёрский Синий\"", + PREPOSITIONAL = "бутылке кюрасао \"Гренадёрский Синий\"" + ) icon_state = "bluecuracao" list_reagents = list("bluecuracao" = 100) /obj/item/reagent_containers/food/drinks/bottle/sambuka - name = "The Headless Horseman 's Sambuka" - desc = "I haven't drunk sambuca since I was twenty." + name = "The Headless Horseman's Sambuka" + desc = "Я не пил самбуку с тех пор, как мне было двадцать." + ru_names = list( + NOMINATIVE = "бутылка самбуки \"Безголовый Всадник\"", + GENITIVE = "бутылки самбуки \"Безголовый Всадник\"", + DATIVE = "бутылке самбуки \"Безголовый Всадник\"", + ACCUSATIVE = "бутылку самбуки \"Безголовый Всадник\"", + INSTRUMENTAL = "бутылкой самбуки \"Безголовый Всадник\"", + PREPOSITIONAL = "бутылке самбуки \"Безголовый Всадник\"" + ) icon_state = "sambukabottle" list_reagents = list("sambuka" = 100) /obj/item/reagent_containers/food/drinks/bottle/arrogant_green_rat name = "Arrogant Green Rat" - desc = "Finest wine from the Paradise City, where the grass is green and the girls are pretty." + desc = "Лучшее вино из райского города, где трава зелёная, а девушки красивые." + ru_names = list( + NOMINATIVE = "бутылка вина \"Высокомерная Зелёная Крыса\"", + GENITIVE = "бутылки вина \"Высокомерная Зелёная Крыса\"", + DATIVE = "бутылке вина \"Высокомерная Зелёная Крыса\"", + ACCUSATIVE = "бутылку вина \"Высокомерная Зелёная Крыса\"", + INSTRUMENTAL = "бутылкой вина \"Высокомерная Зелёная Крыса\"", + PREPOSITIONAL = "бутылке вина \"Высокомерная Зелёная Крыса\"" + ) icon_state = "arrogant_green_rat" list_reagents = list("wine" = 100) @@ -337,7 +569,15 @@ /obj/item/reagent_containers/food/drinks/bottle/orangejuice name = "orange juice" - desc = "Full of vitamins and deliciousness!" + desc = "Полон витаминов и вкусностей!" + ru_names = list( + NOMINATIVE = "пачка апельсинового сока", + GENITIVE = "пачки апельсинового сока", + DATIVE = "пачке апельсинового сока", + ACCUSATIVE = "пачку апельсинового сока", + INSTRUMENTAL = "пачкой апельсинового сока", + PREPOSITIONAL = "пачке апельсинового сока" + ) icon_state = "orangejuice" item_state = "carton" throwforce = 0 @@ -346,7 +586,15 @@ /obj/item/reagent_containers/food/drinks/bottle/cream name = "milk cream" - desc = "It's cream. Made from milk. What else did you think you'd find in there?" + desc = "Это сливки. Сделаны из молока. А что ещё вы думали там найти?" + ru_names = list( + NOMINATIVE = "пачка сливок", + GENITIVE = "пачки сливок", + DATIVE = "пачке сливок", + ACCUSATIVE = "пачку сливок", + INSTRUMENTAL = "пачкой сливок", + PREPOSITIONAL = "пачке сливок" + ) icon_state = "cream" item_state = "carton" throwforce = 0 @@ -355,7 +603,15 @@ /obj/item/reagent_containers/food/drinks/bottle/tomatojuice name = "tomato juice" - desc = "Well, at least it LOOKS like tomato juice. You can't tell with all that redness." + desc = "Ну, по крайней мере, это выглядит как томатный сок. Слишком красное, чтобы сказать точно." + ru_names = list( + NOMINATIVE = "пачка томатного сока", + GENITIVE = "пачки томатного сока", + DATIVE = "пачке томатного сока", + ACCUSATIVE = "пачку томатного сока", + INSTRUMENTAL = "пачкой томатного сока", + PREPOSITIONAL = "пачке томатного сока" + ) icon_state = "tomatojuice" item_state = "carton" throwforce = 0 @@ -364,7 +620,15 @@ /obj/item/reagent_containers/food/drinks/bottle/limejuice name = "lime juice" - desc = "Sweet-sour goodness." + desc = "Кисло-сладкая вкуснятина." + ru_names = list( + NOMINATIVE = "пачка лаймового сока", + GENITIVE = "пачки лаймового сока", + DATIVE = "пачке лаймового сока", + ACCUSATIVE = "пачку лаймового сока", + INSTRUMENTAL = "пачкой лаймового сока", + PREPOSITIONAL = "пачке лаймового сока" + ) icon_state = "limejuice" item_state = "carton" throwforce = 0 @@ -373,7 +637,15 @@ /obj/item/reagent_containers/food/drinks/bottle/milk name = "milk" - desc = "Soothing milk." + desc = "Мягкое, вкусно и полезное молоко." + ru_names = list( + NOMINATIVE = "пачка молока", + GENITIVE = "пачки молока", + DATIVE = "пачке молока", + ACCUSATIVE = "пачку молока", + INSTRUMENTAL = "пачкой молока", + PREPOSITIONAL = "пачке молока" + ) icon_state = "milk" item_state = "carton" throwforce = 0 @@ -437,7 +709,7 @@ /obj/item/reagent_containers/food/drinks/bottle/molotov/attackby(obj/item/I, mob/user, params) . = ..() - if(ATTACK_CHAIN_CANCEL_CHECK(.) || !is_hot(I)) + if(ATTACK_CHAIN_CANCEL_CHECK(.) || !I.get_heat()) return . add_fingerprint(user) diff --git a/code/modules/food_and_drinks/drinks/drinks/cans.dm b/code/modules/food_and_drinks/drinks/drinks/cans.dm index 6829909cb24d..fa8897bb6928 100644 --- a/code/modules/food_and_drinks/drinks/drinks/cans.dm +++ b/code/modules/food_and_drinks/drinks/drinks/cans.dm @@ -8,19 +8,19 @@ var/can_burst = FALSE var/burst_chance = 0 foodtype = SUGAR + gender = FEMALE /obj/item/reagent_containers/food/drinks/cans/empty() if(!canopened) - to_chat(usr, "Open [src] first.") + balloon_alert(usr, "сначала откройте!") return ..() /obj/item/reagent_containers/food/drinks/cans/examine(mob/user) . = ..() - if(canopened) - . += "It has been opened." - else - . += "Ctrl-Click to shake it up!" + . += span_notice("[canopened ? "Открыто" : "Закрыто"]") + if(!canopened) + . += span_info("Используйте Ctrl+ЛКМ, чтобы встряхнуть!") /obj/item/reagent_containers/food/drinks/cans/attack_self(mob/user) if(canopened) @@ -31,7 +31,7 @@ playsound(loc, 'sound/effects/canopen.ogg', rand(10, 50), 1) canopened = TRUE container_type |= OPENCONTAINER - to_chat(user, "You open the drink with an audible pop!") + to_chat(user, span_notice("Вы открываете [declent_ru(ACCUSATIVE)] с громким хлопком!")) return ..() /obj/item/reagent_containers/food/drinks/cans/proc/crush(mob/user) @@ -52,18 +52,18 @@ if(!can_shake || !ishuman(user)) return ..() if(user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) - to_chat(user, "You can't do that right now!") + balloon_alert(user, "невозможно в данный момент!") return ..() var/mob/living/carbon/human/H = user if(canopened) - to_chat(H, "You can't shake up an already opened drink!") + balloon_alert(H, "нельзя встряхнуть после открытия!") return if(src == H.l_hand || src == H.r_hand) can_shake = FALSE addtimer(CALLBACK(src, PROC_REF(reset_shakable)), 1 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) - to_chat(H, "You start shaking up [src].") + to_chat(H, span_notice("Вы начинаете встряхивать [declent_ru(ACCUSATIVE)].")) if(do_after(H, 1 SECONDS, H)) - visible_message("[user] shakes up the [name]!") + visible_message(span_warning("[user] встряхнул[genderize_ru(user.gender, "", "а", "о", "и")] [declent_ru(ACCUSATIVE)]!")) if(times_shaken == 0) times_shaken++ addtimer(CALLBACK(src, PROC_REF(reset_shaken)), 1 MINUTES, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT) @@ -74,17 +74,17 @@ addtimer(CALLBACK(src, PROC_REF(reset_shaken)), 20 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT) handle_bursting(user) else - to_chat(H, "You need to hold [src] in order to shake it.") + balloon_alert(H, "нужно держать в руке!") /obj/item/reagent_containers/food/drinks/cans/attack(mob/living/target, mob/living/user, params, def_zone, skip_attack_anim = FALSE) if(!canopened) - to_chat(user, span_warning("You need to open the drink!")) + balloon_alert(user, "сначала откройте!") return ATTACK_CHAIN_PROCEED if(target == user && !reagents.total_volume && user.a_intent == INTENT_HARM && user.zone_selected == BODY_ZONE_HEAD) user.visible_message( - span_warning("[user] crushes [src] on [user.p_their()] forehead!"), - span_warning("You crush [src] on your forehead."), + span_warning("[user] смина[pluralize_ru(user.gender, "ет", "ют")] [declent_ru(ACCUSATIVE)] своим лбом!"), + span_warning("Вы сминаете [declent_ru(ACCUSATIVE)] своим лбом!"), ) crush(user) return ATTACK_CHAIN_BLOCKED_ALL @@ -94,8 +94,8 @@ /obj/item/reagent_containers/food/drinks/cans/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/storage/bag/trash/cyborg)) user.visible_message( - span_notice("[user] crushes [src] in [user.p_their()] trash compactor."), - span_notice("You crush [src] in your trash compactor."), + span_notice("[user] засовыва[pluralize_ru(user.gender, "ет", "ют")] [declent_ru(ACCUSATIVE)] в свой уплотнитель мусора."), + span_notice("Вы засовываете [declent_ru(ACCUSATIVE)] в свой уплотнитель мусора."), ) var/obj/can = crush(user) can.attackby(I, user, params) @@ -107,10 +107,10 @@ if(!proximity) return if(istype(target, /obj/structure/reagent_dispensers) && !canopened) - to_chat(user, "You need to open the drink!") + balloon_alert(user, "сначала откройте!") return else if(target.is_open_container() && !canopened) - to_chat(user, "You need to open the drink!") + balloon_alert(user, "сначала откройте!") return else return ..(target, user, proximity) @@ -128,21 +128,21 @@ container_type |= OPENCONTAINER if(!burstopen && user) - to_chat(user, "You open the drink with an audible pop!") + to_chat(user, span_notice("Вы открываете [declent_ru(ACCUSATIVE)] с громким хлопком!")) else - visible_message("[src] bursts open!") + visible_message(span_warning("[capitalize(declent_ru(NOMINATIVE))] оглушительно открывается!")) if(times_shaken < 5) - visible_message("[src] fizzes violently!") + visible_message(span_warning("[capitalize(declent_ru(NOMINATIVE))] громко шипит!")) else - visible_message("[src] erupts into foam!") + visible_message(span_boldwarning("[capitalize(declent_ru(NOMINATIVE))] оглушительно лопается, разливая своё содержимое!")) if(reagents.total_volume) - var/datum/effect_system/foam_spread/sodafizz = new - sodafizz.set_up(1, get_turf(src), reagents) + var/datum/effect_system/fluid_spread/foam/sodafizz = new + sodafizz.set_up(amount = 1, location = get_turf(src), carry = reagents) sodafizz.start() for(var/mob/living/carbon/C in range(1, get_turf(src))) - to_chat(C, "You are splattered with [name]!") + to_chat(C, span_warning("Вас облило содержимым [declent_ru(ACCUSATIVE)]!")) reagents.reaction(C, REAGENT_TOUCH) C.wetlevel = max(C.wetlevel + 1, times_shaken) @@ -179,76 +179,164 @@ /obj/item/reagent_containers/food/drinks/cans/cola name = "space cola" - desc = "Cola. in space." + desc = "Это кола. Нестареющая классика." + ru_names = list( + NOMINATIVE = "банка колы", + GENITIVE = "банки колы", + DATIVE = "банке колы", + ACCUSATIVE = "банку колы", + INSTRUMENTAL = "банкой колы", + PREPOSITIONAL = "банке колы" + ) icon_state = "cola" list_reagents = list("cola" = 30) /obj/item/reagent_containers/food/drinks/cans/energy name = "heart attack" - desc = "The heart will say: - My stop." + desc = "Пока сердце вам не скажет - \"Моя остановка\"." + ru_names = list( + NOMINATIVE = "банка энергетика \"Сердечный Приступ\"", + GENITIVE = "банки энергетика \"Сердечный Приступ\"", + DATIVE = "банке энергетика \"Сердечный Приступ\"", + ACCUSATIVE = "банку энергетика \"Сердечный Приступ\"", + INSTRUMENTAL = "банкой энергетика \"Сердечный Приступ\"", + PREPOSITIONAL = "банке энергетика \"Сердечный Приступ\"" + ) icon_state = "heart_attack" item_state = "heart_attack" list_reagents = list("energetik" = 30) /obj/item/reagent_containers/food/drinks/cans/energy/trop name = "tropical spasm" - desc = "Get a taste of hunting down USSP soldiers." + desc = "Почувствуйте бодрящий вкус тропических фруктов!" + ru_names = list( + NOMINATIVE = "банка энергетика \"Тропический Спазм\"", + GENITIVE = "банки энергетика \"Тропический Спазм\"", + DATIVE = "банке энергетика \"Тропический Спазм\"", + ACCUSATIVE = "банку энергетика \"Тропический Спазм\"", + INSTRUMENTAL = "банкой энергетика \"Тропический Спазм\"", + PREPOSITIONAL = "банке энергетика \"Тропический Спазм\"" + ) icon_state = "tropical_spasm" item_state = "tropical_spasm" list_reagents = list("trop_eng" = 30) /obj/item/reagent_containers/food/drinks/cans/energy/milk name = "milk flow" - desc = "For pro gamers." + desc = "Для самых профессиональных геймеров." + ru_names = list( + NOMINATIVE = "банка энергетика \"Молочный Удар\"", + GENITIVE = "банки энергетика \"Молочный Удар\"", + DATIVE = "банке энергетика \"Молочный Удар\"", + ACCUSATIVE = "банку энергетика \"Молочный Удар\"", + INSTRUMENTAL = "банкой энергетика \"Молочный Удар\"", + PREPOSITIONAL = "банке энергетика \"Молочный Удар\"" + ) icon_state = "milk_flow" item_state = "milk_flow" list_reagents = list("milk_eng" = 30) /obj/item/reagent_containers/food/drinks/cans/energy/grey name = "GreyPower" - desc = "Your hands will burn from GreyPower." + desc = "Ваши руки будут гореть от \"Грей Энерджи\"." + ru_names = list( + NOMINATIVE = "банка энергетика \"Грей Энерджи\"", + GENITIVE = "банки энергетика \"Грей Энерджи\"", + DATIVE = "банке энергетика \"Грей Энерджи\"", + ACCUSATIVE = "банку энергетика \"Грей Энерджи\"", + INSTRUMENTAL = "банкой энергетика \"Грей Энерджи\"", + PREPOSITIONAL = "банке энергетика \"Грей Энерджи\"" + ) icon_state = "GreyPower" item_state = "GreyPower" list_reagents = list("grey_eng" = 30) /obj/item/reagent_containers/food/drinks/cans/beer name = "space beer" - desc = "Contains only water, malt and hops." + desc = "Вода, солод и хмель - а больше и не требуется." + ru_names = list( + NOMINATIVE = "бутылка пива", + GENITIVE = "бутылки пива", + DATIVE = "бутылке пива", + ACCUSATIVE = "бутылку пива", + INSTRUMENTAL = "бутылкой пива", + PREPOSITIONAL = "бутылке пива" + ) icon_state = "beer" is_glass = 1 list_reagents = list("beer" = 30) /obj/item/reagent_containers/food/drinks/cans/non_alcoholic_beer name = "non-alcoholic beer" - desc = "A favorite thing of all students and those who drive." + desc = "Любимое пойло студентов и тех, кто за рулём." + ru_names = list( + NOMINATIVE = "бутылка безалкогольного пива", + GENITIVE = "бутылки безалкогольного пива", + DATIVE = "бутылке безалкогольного пива", + ACCUSATIVE = "бутылку безалкогольного пива", + INSTRUMENTAL = "бутылкой безалкогольного пива", + PREPOSITIONAL = "бутылке безалкогольного пива" + ) icon_state = "alcoholfreebeercan" list_reagents = list("noalco_beer" = 30) /obj/item/reagent_containers/food/drinks/cans/adminbooze name = "admin booze" - desc = "Bottled Griffon tears. Drink with caution." + desc = "Бутылированные слёзы Гриффона. Пить со всей осторожностью." + ru_names = list( + NOMINATIVE = "бутылка настойки \"Админово Пойло\"", + GENITIVE = "бутылки настойки \"Админово Пойло\"", + DATIVE = "бутылке настойки \"Админово Пойло\"", + ACCUSATIVE = "бутылку настойки \"Админово Пойло\"", + INSTRUMENTAL = "бутылкой настойки \"Админово Пойло\"", + PREPOSITIONAL = "бутылке настойки \"Админово Пойло\"" + ) icon_state = "adminbooze" is_glass = 1 list_reagents = list("adminordrazine" = 5, "capsaicin" = 5, "methamphetamine"= 20, "thirteenloko" = 20) /obj/item/reagent_containers/food/drinks/cans/madminmalt name = "madmin malt" - desc = "Bottled essence of angry admins. Drink with EXTREME caution." + desc = "Бутылированная эссенция ярости администрации. Пить с ПРЕДЕЛЬНОЙ осторожностью." + ru_names = list( + NOMINATIVE = "бутылка настойки \"Ярость Админа\"", + GENITIVE = "бутылки настойки \"Ярость Админа\"", + DATIVE = "бутылке настойки \"Ярость Админа\"", + ACCUSATIVE = "бутылку настойки \"Ярость Админа\"", + INSTRUMENTAL = "бутылкой настойки \"Ярость Админа\"", + PREPOSITIONAL = "бутылке настойки \"Ярость Админа\"" + ) icon_state = "madminmalt" is_glass = 1 list_reagents = list("hell_water" = 20, "neurotoxin" = 15, "thirteenloko" = 15) /obj/item/reagent_containers/food/drinks/cans/badminbrew name = "badmin brew" - desc = "Bottled trickery and terrible admin work. Probably shouldn't drink this one at all." + desc = "Бутылированная эссенция со вкусом щитспавна и ужасных ивентов. Наверное, это вам пить не стоит." + ru_names = list( + NOMINATIVE = "бутылка настойки \"Плохой Админ\"", + GENITIVE = "бутылки настойки \"Плохой Админ\"", + DATIVE = "бутылке настойки \"Плохой Админ\"", + ACCUSATIVE = "бутылку настойки \"Плохой Админ\"", + INSTRUMENTAL = "бутылкой настойки \"Плохой Админ\"", + PREPOSITIONAL = "бутылке настойки \"Плохой Админ\"" + ) icon_state = "badminbrew" is_glass = 1 list_reagents = list("mutagen" = 25, "charcoal" = 10, "thirteenloko" = 15) /obj/item/reagent_containers/food/drinks/cans/ale name = "Tail Tells Tales Ale" - desc = "The label has a tail drawn on it that extends the entire length of the bottle. If you rip it off, you can read some short tale or legend on the back of the label." + desc = "К этикетке прикреплён хвостик, который тянется по всей длине банки. Если вы его оторвете, то сможете прочитать короткую легенду на его обратной стороне." + ru_names = list( + NOMINATIVE = "бутылка эля \"Хвостатые Истории\"", + GENITIVE = "бутылки эля \"Хвостатые Истории\"", + DATIVE = "бутылке эля \"Хвостатые Истории\"", + ACCUSATIVE = "бутылку эля \"Хвостатые Истории\"", + INSTRUMENTAL = "бутылкой эля \"Хвостатые Истории\"", + PREPOSITIONAL = "бутылке эля \"Хвостатые Истории\"" + ) icon_state = "alebottle" item_state = "beer" is_glass = 1 @@ -256,74 +344,170 @@ /obj/item/reagent_containers/food/drinks/cans/space_mountain_wind name = "Space Mountain Wind" - desc = "Blows right through you like a space wind." + desc = "Проходит насквозь, словно космический ветер." + ru_names = list( + NOMINATIVE = "банка газировки \"Космический Маунтин Винд\"", + GENITIVE = "банки газировки \"Космический Маунтин Винд\"", + DATIVE = "банке газировки \"Космический Маунтин Винд\"", + ACCUSATIVE = "банку газировки \"Космический Маунтин Винд\"", + INSTRUMENTAL = "банкой газировки \"Космический Маунтин Винд\"", + PREPOSITIONAL = "банке газировки \"Космический Маунтин Винд\"" + ) icon_state = "space_mountain_wind" list_reagents = list("spacemountainwind" = 30) /obj/item/reagent_containers/food/drinks/cans/thirteenloko name = "Thirteen Loko" - desc = "The CMO has advised crew members that consumption of Thirteen Loko may result in seizures, blindness, drunkeness, or even death. Please Drink Responsibly." + desc = "Главный Врач предупредил, что употребление этого напитка может привести к судорогам, слепоте, опьянению или даже смерти. Пожалуйста, пейте осторожно." + ru_names = list( + NOMINATIVE = "банка алкогольной газировки \"Тринадцатый Локо\"", + GENITIVE = "банки алкогольной газировки \"Тринадцатый Локо\"", + DATIVE = "банке алкогольной газировки \"Тринадцатый Локо\"", + ACCUSATIVE = "банку алкогольной газировки \"Тринадцатый Локо\"", + INSTRUMENTAL = "банкой алкогольной газировки \"Тринадцатый Локо\"", + PREPOSITIONAL = "банке алкогольной газировки \"Тринадцатый Локо\"" + ) icon_state = "thirteen_loko" list_reagents = list("thirteenloko" = 25, "psilocybin" = 5) /obj/item/reagent_containers/food/drinks/cans/dr_gibb name = "Dr. Gibb" - desc = "A delicious mixture of 42 different flavors." + desc = "Освежающая смесь из 42 различных вкусов!" + ru_names = list( + NOMINATIVE = "банка газировки \"Доктор Гибб\"", + GENITIVE = "банки газировки \"Доктор Гибб\"", + DATIVE = "банке газировки \"Доктор Гибб\"", + ACCUSATIVE = "банку газировки \"Доктор Гибб\"", + INSTRUMENTAL = "банкой газировки \"Доктор Гибб\"", + PREPOSITIONAL = "банке газировки \"Доктор Гибб\"" + ) icon_state = "dr_gibb" list_reagents = list("dr_gibb" = 30) /obj/item/reagent_containers/food/drinks/cans/starkist name = "Star-kist" - desc = "The taste of a star in liquid form. And, a bit of tuna...?" + desc = "Вкус звёзд в жидком виде. И тунца..?" + ru_names = list( + NOMINATIVE = "банка газировки \"Стар-Кист\"", + GENITIVE = "банки газировки \"Стар-Кист\"", + DATIVE = "банке газировки \"Стар-Кист\"", + ACCUSATIVE = "банку газировки \"Стар-Кист\"", + INSTRUMENTAL = "банкой газировки \"Стар-Кист\"", + PREPOSITIONAL = "банке газировки \"Стар-Кист\"" + ) icon_state = "starkist" list_reagents = list("brownstar" = 30) /obj/item/reagent_containers/food/drinks/cans/space_up name = "Space-Up" - desc = "Tastes like a hull breach in your mouth." + desc = "На вкус как дыра в обшивке у вас во рту. Да, звучит странно." + ru_names = list( + NOMINATIVE = "банка газировки \"Спейс-Ап\"", + GENITIVE = "банки газировки \"Спейс-Ап\"", + DATIVE = "банке газировки \"Спейс-Ап\"", + ACCUSATIVE = "банку газировки \"Спейс-Ап\"", + INSTRUMENTAL = "банкой газировки \"Спейс-Ап\"", + PREPOSITIONAL = "банке газировки \"Спейс-Ап\"" + ) icon_state = "space-up" list_reagents = list("space_up" = 30) /obj/item/reagent_containers/food/drinks/cans/lemon_lime name = "Lemon-Lime" - desc = "You wanted ORANGE. It gave you Lemon Lime." + desc = "Терпкая газировка, состоящяя на 0,5% из натуральных цитрусовых!" + ru_names = list( + NOMINATIVE = "банка газировки \"Лимон-Лайм\"", + GENITIVE = "банки газировки \"Лимон-Лайм\"", + DATIVE = "банке газировки \"Лимон-Лайм\"", + ACCUSATIVE = "банку газировки \"Лимон-Лайм\"", + INSTRUMENTAL = "банкой газировки \"Лимон-Лайм\"", + PREPOSITIONAL = "банке газировки \"Лимон-Лайм\"" + ) icon_state = "lemon-lime" list_reagents = list("lemon_lime" = 30) /obj/item/reagent_containers/food/drinks/cans/iced_tea name = "Vrisk Serket Iced Tea" - desc = "That sweet, refreshing southern earthy flavor. That's where it's from, right? South Earth?" + desc = "Этот сладкий, освежающий вкус южной земли. Так вот откуда он, да? Южная Земля, верно?" + ru_names = list( + NOMINATIVE = "банка чая со льдом \"Вриск Секретный\"", + GENITIVE = "банки чая со льдом \"Вриск Секретный\"", + DATIVE = "банке чая со льдом \"Вриск Секретный\"", + ACCUSATIVE = "банку чая со льдом \"Вриск Секретный\"", + INSTRUMENTAL = "банкой чая со льдом \"Вриск Секретный\"", + PREPOSITIONAL = "банке чая со льдом \"Вриск Секретный\"" + ) icon_state = "ice_tea_can" list_reagents = list("icetea" = 30) /obj/item/reagent_containers/food/drinks/cans/grape_juice - name = "Grapel Juice" - desc = "500 pages of rules of how to appropriately enter into a combat with this juice!" + name = "Refreshing Purple Grapel Juice" + desc = "500 страниц правил о том, как начать драку с этим соком!" + ru_names = list( + NOMINATIVE = "банка виноградного сока \"Освежающе-Фиолетовый\"", + GENITIVE = "банки виноградного сока \"Освежающе-Фиолетовый\"", + DATIVE = "банке виноградного сока \"Освежающе-Фиолетовый\"", + ACCUSATIVE = "банку виноградного сока \"Освежающе-Фиолетовый\"", + INSTRUMENTAL = "банкой виноградного сока \"Освежающе-Фиолетовый\"", + PREPOSITIONAL = "банке виноградного сока \"Освежающе-Фиолетовый\"" + ) icon_state = "purple_can" list_reagents = list("grapejuice" = 30) /obj/item/reagent_containers/food/drinks/cans/tonic name = "T-Borg's Tonic Water" - desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away." + desc = "Вкус странный, но, по крайней мере, хинин держит Космическую Малярию на расстоянии." + ru_names = list( + NOMINATIVE = "банка тоника \"Т-Борг\"", + GENITIVE = "банки тоника \"Т-Борг\"", + DATIVE = "банке тоника \"Т-Борг\"", + ACCUSATIVE = "банку тоника \"Т-Борг\"", + INSTRUMENTAL = "банкой тоника \"Т-Борг\"", + PREPOSITIONAL = "банке тоника \"Т-Борг\"" + ) icon_state = "tonic" list_reagents = list("tonic" = 50) /obj/item/reagent_containers/food/drinks/cans/sodawater name = "soda water" - desc = "A can of soda water. Still water's more refreshing cousin." + desc = "Вода с газами. Освежает и приятно щекочет во рту." + ru_names = list( + NOMINATIVE = "банка содовой", + GENITIVE = "банки содовой", + DATIVE = "банке содовой", + ACCUSATIVE = "банку содовой", + INSTRUMENTAL = "банкой содовой", + PREPOSITIONAL = "банке содовой" + ) icon_state = "sodawater" list_reagents = list("sodawater" = 50) /obj/item/reagent_containers/food/drinks/cans/synthanol name = "Beep's Classic Synthanol" - desc = "A can of IPC booze, however that works." + desc = "Бухло для КПБ. Что бы там не находилось внутри, им нравится." + ru_names = list( + NOMINATIVE = "банка синтанола \"Биб Классический\"", + GENITIVE = "банки синтанола \"Биб Классический\"", + DATIVE = "банке синтанола \"Биб Классический\"", + ACCUSATIVE = "банку синтанола \"Биб Классический\"", + INSTRUMENTAL = "банкой синтанола \"Биб Классический\"", + PREPOSITIONAL = "банке синтанола \"Биб Классический\"" + ) icon_state = "synthanolcan" list_reagents = list("synthanol" = 50) /obj/item/reagent_containers/food/drinks/cans/bottler name = "generic beverage container" - desc = "this shouldn't ever be spawned. shame on you" + desc = "Это даже не должно быть заспавненным. Позор тебе, педаль." + ru_names = list( + NOMINATIVE = "ёмкость для стандартного напитка", + GENITIVE = "ёмкости для стандартного напитка", + DATIVE = "ёмкости для стандартного напитка", + ACCUSATIVE = "ёмкость для стандартного напитка", + INSTRUMENTAL = "ёмкостью для стандартного напитка", + PREPOSITIONAL = "ёмкости для стандартного напитка" + ) icon_state = "glass_bottle" @@ -356,17 +540,41 @@ /obj/item/reagent_containers/food/drinks/cans/bottler/glass_bottle name = "glass bottle" - desc = "A glass bottle suitable for beverages." + desc = "Стеклянная бутылка, подходящая для напитков." + ru_names = list( + NOMINATIVE = "стеклянная бутылка", + GENITIVE = "стеклянной бутылки", + DATIVE = "стеклянной бутылке", + ACCUSATIVE = "стеклянную бутылку", + INSTRUMENTAL = "стеклянной бутылкой", + PREPOSITIONAL = "стеклянной бутылке" + ) icon_state = "glass_bottle" is_glass = 1 /obj/item/reagent_containers/food/drinks/cans/bottler/plastic_bottle name = "plastic bottle" - desc = "A plastic bottle suitable for beverages." + desc = "Пластиковая бутылка, подходящая для напитков." + ru_names = list( + NOMINATIVE = "пластиковая бутылка", + GENITIVE = "пластиковой бутылки", + DATIVE = "пластиковой бутылке", + ACCUSATIVE = "пластиковую бутылку", + INSTRUMENTAL = "пластиковой бутылкой", + PREPOSITIONAL = "пластиковой бутылке" + ) icon_state = "plastic_bottle" is_plastic = 1 /obj/item/reagent_containers/food/drinks/cans/bottler/metal_can name = "metal can" desc = "A metal can suitable for beverages." + ru_names = list( + NOMINATIVE = "металлическая банка", + GENITIVE = "металлической банки", + DATIVE = "металлической банке", + ACCUSATIVE = "металлическую банку", + INSTRUMENTAL = "металлической банкой", + PREPOSITIONAL = "металлической банке" + ) icon_state = "metal_can" diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm index 185e2dbb905f..e2b197ad513a 100644 --- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm @@ -2,7 +2,15 @@ /obj/item/reagent_containers/food/drinks/drinkingglass name = "glass" - desc = "Your standard drinking glass." + desc = "Стеклянный стакан, из таких обычно пьют. Постарайтесь не разбить его." + ru_names = list( + NOMINATIVE = "стакан", + GENITIVE = "стакана", + DATIVE = "стакану", + ACCUSATIVE = "стакан", + INSTRUMENTAL = "стаканом", + PREPOSITIONAL = "стакане" + ) icon_state = "glass_empty" item_state = "drinking_glass" amount_per_transfer_from_this = 10 @@ -28,12 +36,12 @@ if(istype(I, /obj/item/reagent_containers/food/snacks/egg)) //breaking eggs add_fingerprint(user) if(!reagents) - to_chat(user, span_warning("The [I.name] is empty.")) + balloon_alert(user, "яйцо пустое!") return ATTACK_CHAIN_PROCEED if(reagents.total_volume >= reagents.maximum_volume) - to_chat(user, span_warning("The [name] is full.")) + balloon_alert(user, "нет места!") return ATTACK_CHAIN_PROCEED - to_chat(user, span_notice("You break [I] into [src].")) + to_chat(user, span_notice("Вы разбиваете [I.declent_ru(ACCUSATIVE)] в [declent_ru(ACCUSATIVE)].")) I.reagents.trans_to(src, I.reagents.total_volume) qdel(I) return ATTACK_CHAIN_BLOCKED_ALL diff --git a/code/modules/food_and_drinks/drinks/drinks/shotglass.dm b/code/modules/food_and_drinks/drinks/drinks/shotglass.dm index 83b58bb84d51..13695da564cd 100644 --- a/code/modules/food_and_drinks/drinks/drinks/shotglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/shotglass.dm @@ -1,6 +1,15 @@ /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass name = "shot glass" - desc = "No glasses were shot in the making of this glass." + desc = "Небольшая рюмка, из которой обычно пьют алкоголь малыми объёмами." + ru_names = list( + NOMINATIVE = "рюмка", + GENITIVE = "рюмки", + DATIVE = "рюмке", + ACCUSATIVE = "рюмку", + INSTRUMENTAL = "рюмкой", + PREPOSITIONAL = "рюмке" + ) + gender = FEMALE icon_state = "shotglass" custom_fire_overlay = "shotglass_fire" amount_per_transfer_from_this = 15 @@ -20,10 +29,33 @@ . = ..() if(reagents.total_volume) name = "shot glass of " + reagents.get_master_reagent_name() //No matter what, the glass will tell you the reagent's name. Might be too abusable in the future. + ru_names = list( + NOMINATIVE = "рюмка - " + reagents.get_master_reagent_name(), + GENITIVE = "рюмки - " + reagents.get_master_reagent_name(), + DATIVE = "рюмке - " + reagents.get_master_reagent_name(), + ACCUSATIVE = "рюмку - " + reagents.get_master_reagent_name(), + INSTRUMENTAL = "рюмкой - " + reagents.get_master_reagent_name(), + PREPOSITIONAL = "рюмке - " +reagents.get_master_reagent_name() + ) if(resistance_flags & ON_FIRE) name = "flaming [name]" + if(ru_names) + ru_names[1] = "горящая " + ru_names[1] + ru_names[2] = "горящей " + ru_names[2] + ru_names[3] = "горящей " + ru_names[3] + ru_names[4] = "горящую " + ru_names[4] + ru_names[5] = "горящей " + ru_names[5] + ru_names[6] = "горящей " + ru_names[6] else name = "shot glass" + ru_names = list( + NOMINATIVE = "рюмка", + GENITIVE = "рюмки", + DATIVE = "рюмке", + ACCUSATIVE = "рюмку", + INSTRUMENTAL = "рюмкой", + PREPOSITIONAL = "рюмке" + ) /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/update_overlays() @@ -47,9 +79,9 @@ if(!(resistance_flags & ON_FIRE)) return ATTACK_CHAIN_PROCEED user.visible_message( - span_warning("[user] pours [src] all over [user.p_them()]self!"), - span_danger("You pour [src] all over yourself!"), - span_italics("You hear a 'whoompf' and a sizzle."), + span_warning("[user] пролива[pluralize_ru(user.gender, "ет", "ют")] содержимое [declent_ru(GENITIVE)] на себя!"), + span_danger("Вы проливаете содержимое [declent_ru(GENITIVE)] на себя!"), + span_italics("Вы слышите \"Ух!\" и последующее шипение."), ) extinguish(TRUE) reagents.reaction(user, REAGENT_TOUCH) @@ -71,14 +103,14 @@ ..() set_light_range_power_color(light_intensity, 1, light_color) set_light_on(TRUE) - visible_message("[src] begins to burn with a blue hue!") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] начинает гореть синим пламенем!")) update_appearance(UPDATE_NAME|UPDATE_OVERLAYS) /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/extinguish(silent = FALSE) ..() set_light_on(FALSE) if(!silent) - visible_message("The dancing flame on [src] dies out.") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] перестаёт гореть!")) update_appearance(UPDATE_NAME|UPDATE_OVERLAYS) /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/burn() //Let's override fire deleting the reagents inside the shot @@ -94,7 +126,7 @@ /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/attackby(obj/item/I, mob/user, params) . = ..() - if(!ATTACK_CHAIN_CANCEL_CHECK(.) && is_hot(I)) + if(!ATTACK_CHAIN_CANCEL_CHECK(.) && I.get_heat()) fire_act() @@ -108,7 +140,8 @@ if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50)) clumsilyDrink(user) else - user.visible_message("[user] places [user.p_their()] hand over [src] to put it out!", "You use your hand to extinguish [src]!") + user.visible_message(span_notice("[user] накрыва[pluralize_ru(user.gender, "ет", "ют")] [declent_ru(ACCUSATIVE)] рукой, чтобы потушить огонь!"), + span_notice("Вы накрываете [declent_ru(ACCUSATIVE)] рукой, чтобы потушить огонь!")) extinguish() diff --git a/code/modules/food_and_drinks/food.dm b/code/modules/food_and_drinks/food.dm index cb4437936007..6a167b4a34d6 100644 --- a/code/modules/food_and_drinks/food.dm +++ b/code/modules/food_and_drinks/food.dm @@ -15,9 +15,11 @@ var/filling_color = "#FFFFFF" //Used by sandwiches. var/junkiness = 0 //for junk food. used to lower human satiety. var/bitesize = 2 + var/has_special_eating_effects = FALSE + var/eat_time = 0 SECONDS var/consume_sound = 'sound/items/eatfood.ogg' var/apply_type = REAGENT_INGEST - var/apply_method = "swallow" + var/apply_method = "проглоти" var/transfer_efficiency = 1.0 var/instant_application = 0 //if we want to bypass the forcedfeed delay var/can_taste = TRUE//whether you can taste eating from this @@ -108,6 +110,8 @@ var/with_a_species = replacetext(with_plural_species, "$ASPECIES", "[species.a] [species.name]") return replacetext(with_a_species, "$IS", plural) +/obj/item/reagent_containers/food/proc/on_mob_eating_effect(mob/user) + return /obj/item/reagent_containers/food/proc/matched_food_type(var/matching_flags) if(matching_flags & MEAT) diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index e7e6e7014918..68bd8305c1b1 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -213,7 +213,15 @@ /obj/item/reagent_containers/food/condiment/syndisauce name = "\improper Chef Excellence's Special Sauce" - desc = "A potent sauce extracted from the potent amanita mushrooms. Death never tasted quite so delicious." + desc = "Этот ароматный соус, приготовленный из мухоморов, просто восхитителен! Смерть никогда не была такой приятной на вкус." + ru_names = list( + NOMINATIVE = "элитарный соус шефа", + GENITIVE = "элитарного соуса шефа", + DATIVE = "элитарному соусу шефа", + ACCUSATIVE = "элитарный соус шефа", + INSTRUMENTAL = "элитарным соусом шефа", + PREPOSITIONAL = "элитарном соусе шефа" + ) list_reagents = list("amanitin" = 50) possible_states = list() log_eating = TRUE diff --git a/code/modules/food_and_drinks/food/foods/baked_goods.dm b/code/modules/food_and_drinks/food/foods/baked_goods.dm index 5ac9b9ce18cd..e03aea397851 100644 --- a/code/modules/food_and_drinks/food/foods/baked_goods.dm +++ b/code/modules/food_and_drinks/food/foods/baked_goods.dm @@ -836,7 +836,15 @@ /obj/item/reagent_containers/food/snacks/croissant name = "croissant" - desc = "Once a pastry reserved for the bourgeois, this flaky goodness is now on your table." + desc = "Когда-то эта изысканная слоёная выпечка была доступна только состоятельным людям, но теперь она стала частью вашего повседневного меню." + ru_names = list( + NOMINATIVE = "круассан", + GENITIVE = "круассана", + DATIVE = "круассану", + ACCUSATIVE = "круассан", + INSTRUMENTAL = "круассаном", + PREPOSITIONAL = "круассане" + ) icon_state = "croissant" bitesize = 4 filling_color = "#ecb54f" diff --git a/code/modules/food_and_drinks/food/foods/bread.dm b/code/modules/food_and_drinks/food/foods/bread.dm index 8ff3d01a5b68..73b9a3a87049 100644 --- a/code/modules/food_and_drinks/food/foods/bread.dm +++ b/code/modules/food_and_drinks/food/foods/bread.dm @@ -191,6 +191,14 @@ /obj/item/reagent_containers/food/snacks/baguette name = "baguette" desc = "Bon appetit!" + ru_names = list( + NOMINATIVE = "багет", + GENITIVE = "багета", + DATIVE = "багету", + ACCUSATIVE = "багет", + INSTRUMENTAL = "багетом", + PREPOSITIONAL = "багете" + ) icon_state = "baguette" item_state = "baguette" filling_color = "#E3D796" diff --git a/code/modules/food_and_drinks/food/foods/lavaland_food.dm b/code/modules/food_and_drinks/food/foods/lavaland_food.dm new file mode 100644 index 000000000000..e7f811b995b6 --- /dev/null +++ b/code/modules/food_and_drinks/food/foods/lavaland_food.dm @@ -0,0 +1,667 @@ +/obj/item/reagent_containers/food/snacks/lavaland + gender = MALE + icon = 'icons/obj/lavaland/lava_fishing.dmi' + lefthand_file = 'icons/mob/inhands/lavaland/fish_items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/lavaland/fish_items_righthand.dmi' + item_state = "food" + var/overlay_sprite + list_reagents = list("nutriment" = 2, "vitamin" = 4, "protein" = 2) + +/obj/item/reagent_containers/food/snacks/lavaland/soft_meat + name = "soft meat cut" + desc = "Нежное филе лавовой рыбы. Сырое в текущем виде, однако с помощью правильных ингридиентов её можно будет превратить в прекрасное блюдо." + ru_names = list( + NOMINATIVE = "нежная мясная вырезка", + GENITIVE = "нежной мясной вырезки", + DATIVE = "нежной мясной вырезке", + ACCUSATIVE = "нежную мясную вырезку", + INSTRUMENTAL = "нежной мясной вырезкой", + PREPOSITIONAL = "нежной мясной вырезке", + ) + gender = FEMALE + icon_state = "soft_meat_cut" + item_state = "soft_meat_cut" + list_reagents = list("nutriment" = 1, "vitamin" = 3, "protein" = 3) + bitesize = 2 + filling_color = "#D49284" + tastes = list("сырого мяса" = 1) + foodtype = MEAT | RAW + +/obj/item/reagent_containers/food/snacks/lavaland/eel_filet + name = "eel filet" + desc = "Сырое филе донного угря. Хоть оно съедобно и в сыром виде, однако с помощью правильных ингридиентов её можно будет превратить в прекрасное блюдо." + ru_names = list( + NOMINATIVE = "филе угря", + GENITIVE = "филе угря", + DATIVE = "филе угря", + ACCUSATIVE = "филе угря", + INSTRUMENTAL = "филе угря", + PREPOSITIONAL = "филе угря", + ) + gender = NEUTER + icon_state = "eel_filet" + item_state = "eel_filet" + list_reagents = list("nutriment" = 2, "menthol" = 3, "protein" = 4) + bitesize = 2 + filling_color = "#414F71" + tastes = list("сырого мяса" = 1) + foodtype = MEAT | RAW + +/obj/item/reagent_containers/food/snacks/lavaland/predator_meat + name = "predatory fish slice" + desc = "Достаточно большой кусок мяса, добытый из хищной рыбы. Не рекомендуется к употреблению в сыром виде." + ru_names = list( + NOMINATIVE = "кусок мяса хищной рыбы", + GENITIVE = "куска мяса хищной рыбы", + DATIVE = "куску мяса хищной рыбы", + ACCUSATIVE = "кусок мяса хищной рыбы", + INSTRUMENTAL = "куском мяса хищной рыбы", + PREPOSITIONAL = "куске мяса хищной рыбы", + ) + icon_state = "predatory_fish_slice" + item_state = "predatory_fish_slice" + list_reagents = list("nutriment" = 2, "toxin" = 2, "protein" = 4) + bitesize = 3 + filling_color = "#BE7C64" + tastes = list("очень горького мяса" = 1) + foodtype = MEAT | TOXIC | RAW + +/obj/item/reagent_containers/food/snacks/lavaland/soft_meat_cubes + name = "soft meat cubes" + desc = "Филе рыбы, порезанное на маленькие кубики и обжаренное в печи. Выглядит аппетитно." + ru_names = list( + NOMINATIVE = "нежные мясные кубики", + GENITIVE = "нежных мясных кубиков", + DATIVE = "нежным мясным кубикам", + ACCUSATIVE = "нежные мясные кубики", + INSTRUMENTAL = "нежными мясными кубиками", + PREPOSITIONAL = "нежных мясных кубиках", + ) + gender = PLURAL + icon = 'icons/obj/lavaland/ashie_food.dmi' + icon_state = "soft_meat_cubes" + list_reagents = list("nutriment" = 2, "vitamin" = 3, "protein" = 3) + bitesize = 3 + filling_color = "#BE7C64" + tastes = list("нежного мяса" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/lavaland/predatory_fish_slab + name = "cooked predatory fish slab" + desc = "Кусок мяса хищной рыбы, обжаренный в печи. Пригоден к употреблению." + ru_names = list( + NOMINATIVE = "жаренный кусок мяса хищной рыбы", + GENITIVE = "жаренного куска мяса хищной рыбы", + DATIVE = "жаренному куску мяса хищной рыбы", + ACCUSATIVE = "жаренный кусок мяса хищной рыбы", + INSTRUMENTAL = "жаренным куском мяса хищной рыбы", + PREPOSITIONAL = "жаренном куске мяса хищной рыбы", + ) + icon = 'icons/obj/lavaland/ashie_food.dmi' + icon_state = "predatory_fish_slab" + list_reagents = list("nutriment" = 4, "protein" = 6) + bitesize = 3 + filling_color = "#BE7C64" + tastes = list("мяса" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/lavaland/eel_ringlets + name = "eel ringlets" + desc = "Обжаренное в печи филе донного угря. Невероятно вкусное." + ru_names = list( + NOMINATIVE = "колечки из угря", + GENITIVE = "колечек из угря", + DATIVE = "колечкам из угря", + ACCUSATIVE = "колечки из угря", + INSTRUMENTAL = "колечками из угря", + PREPOSITIONAL = "колечках из угря", + ) + gender = PLURAL + icon = 'icons/obj/lavaland/ashie_food.dmi' + icon_state = "eel_ringlets" + list_reagents = list("nutriment" = 4, "protein" = 6) + bitesize = 3 + filling_color = "#BE7C64" + tastes = list("нежного мяса" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_bacon + name = "thali lazis bacon part" + desc = "Небольшая порция бекона, взятая из тарелки Тали Лазис." + ru_names = list( + NOMINATIVE = "кусочек бекона Тали Лазис", + GENITIVE = "кусочка бекона Тали Лазис", + DATIVE = "кусочку бекона Тали Лазис", + ACCUSATIVE = "кусочек бекона Тали Лазис", + INSTRUMENTAL = "кусочком бекона Тали Лазис", + PREPOSITIONAL = "кусочке бекона Тали Лазис", + ) + icon = 'icons/obj/lavaland/ashie_food.dmi' + icon_state = "thali_lazis_bacon" + overlay_sprite = "thali_lazis_bacon_overlay" + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_cacti + name = "thali lazis cacti part" + desc = "Небольшой кактус, взятый из тарелки Тали Лазис." + ru_names = list( + NOMINATIVE = "кусочек кактуса Тали Лазис", + GENITIVE = "кусочка кактуса Тали Лазис", + DATIVE = "кусочку кактуса Тали Лазис", + ACCUSATIVE = "кусочек кактуса Тали Лазис", + INSTRUMENTAL = "кусочком кактуса Тали Лазис", + PREPOSITIONAL = "кусочке кактуса Тали Лазис", + ) + icon = 'icons/obj/lavaland/ashie_food.dmi' + icon_state = "thali_lazis_cacti" + overlay_sprite = "thali_lazis_cacti_overlay" + foodtype = FRUIT + +/obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_wing + name = "thali lazis wing part" + desc = "Небольшое крыло, взятое из тарелки Тали Лазис." + ru_names = list( + NOMINATIVE = "кусочек крылышка Тали Лазис", + GENITIVE = "кусочка крылышка Тали Лазис", + DATIVE = "кусочку крылышка Тали Лазис", + ACCUSATIVE = "кусочек крылышка Тали Лазис", + INSTRUMENTAL = "кусочком крылышка Тали Лазис", + PREPOSITIONAL = "кусочке крылышка Тали Лазис", + ) + icon = 'icons/obj/lavaland/ashie_food.dmi' + icon_state = "thali_lazis_wing" + overlay_sprite = "thali_lazis_wing_overlay" + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_fish + name = "thali lazis fish part" + desc = "Небольшая порция рыбы, взятая из тарелки Тали Лазис." + ru_names = list( + NOMINATIVE = "кусочек рыбы Тали Лазис", + GENITIVE = "кусочка рыбы Тали Лазис", + DATIVE = "кусочку рыбы Тали Лазис", + ACCUSATIVE = "кусочек рыбы Тали Лазис", + INSTRUMENTAL = "кусочком рыбы Тали Лазис", + PREPOSITIONAL = "кусочке рыбы Тали Лазис", + ) + icon = 'icons/obj/lavaland/ashie_food.dmi' + icon_state = "thali_lazis_fish" + overlay_sprite = "thali_lazis_fish_overlay" + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_crunchie + name = "thali lazis crunchie part" + desc = "Небольшая хрустящая порция, взятая из тарелки Тали Лазис." + ru_names = list( + NOMINATIVE = "хрустящий кусочек Тали Лазис", + GENITIVE = "хрустящего кусочка Тали Лазис", + DATIVE = "хрустящему кусочку Тали Лазис", + ACCUSATIVE = "хрустящий кусочек Тали Лазис", + INSTRUMENTAL = "хрустящим кусочком Тали Лазис", + PREPOSITIONAL = "хрустящем кусочке Тали Лазис", + ) + icon = 'icons/obj/lavaland/ashie_food.dmi' + icon_state = "thali_lazis_crunchie" + overlay_sprite = "thali_lazis_crunchie_overlay" + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_bungus + name = "thali lazis bungus part" + desc = "Небольшая порция грибов, взятая из тарелки Тали Лазис." + ru_names = list( + NOMINATIVE = "грибной кусочек Тали Лазис", + GENITIVE = "грибного кусочка Тали Лазис", + DATIVE = "грибному кусочку Тали Лазис", + ACCUSATIVE = "грибной кусочек Тали Лазис", + INSTRUMENTAL = "грибном кусочком Тали Лазис", + PREPOSITIONAL = "грибном кусочке Тали Лазис", + ) + icon = 'icons/obj/lavaland/ashie_food.dmi' + icon_state = "thali_lazis_bungus" + overlay_sprite = "thali_lazis_bungus_overlay" + foodtype = VEGETABLES + +/obj/item/reagent_containers/food/snacks/lavaland_food + name = "generic lavaland food" + desc = "самое обычное блюдо. Если вы это видите, то Зюзя напортачил" + ru_names = list( + NOMINATIVE = "блюдо Лазиса", + GENITIVE = "блюда Лазиса", + DATIVE = "блюду Лазиса", + ACCUSATIVE = "блюдо Лазиса", + INSTRUMENTAL = "блюдом Лазиса", + PREPOSITIONAL = "блюде Лазиса", + ) + gender = NEUTER + icon = 'icons/obj/lavaland/ashie_food.dmi' + icon_state = "fine_meal" + lefthand_file = 'icons/mob/inhands/lavaland/food_lefthand.dmi' + righthand_file = 'icons/mob/inhands/lavaland/food_righthand.dmi' + item_state = "food" + bitesize = 100 //eat whole thing down + list_reagents = list("nutriment" = 6, "protein" = 6) + tastes = list("вкусной еды" = 1) + has_special_eating_effects = TRUE + eat_time = 5 SECONDS + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/lavaland_food/fine_meal + name = "fine meal" + desc = "Мясо Голиафа, обжаренное в соку кактусового фрукта. Невероятно вкусное и питательное." + ru_names = list( + NOMINATIVE = "изысканная еда Лазиса", + GENITIVE = "изысканной еды Лазиса", + DATIVE = "изысканной еде Лазиса", + ACCUSATIVE = "изысканную еду Лазиса", + INSTRUMENTAL = "изысканной едой Лазиса", + PREPOSITIONAL = "изысканное еде Лазиса", + ) + gender = FEMALE + icon_state = "fine_meal" + list_reagents = list("vitfro" = 6, "protein" = 7, "vitamin" = 3) + tastes = list("сбалансированной еды" = 1) + foodtype = MEAT|FRUIT + +/obj/item/reagent_containers/food/snacks/lavaland_food/fine_meal/on_mob_eating_effect(mob/user) + if(isliving(user)) + var/mob/living/living_user = user + living_user.apply_status_effect(STATUS_EFFECT_FORCED_RUMBLE) + +/obj/item/reagent_containers/food/snacks/lavaland_food/freaky_leg + name = "freaky leg" + desc = "Многие народы галактики расценивают поедание себе подобных как ужасающее преступление. Однако эти стопы вышли уж слишком питательными..." + ru_names = list( + NOMINATIVE = "блюдо \"Причудливые Ноги\"", + GENITIVE = "блюда \"Причудливые Ноги\"", + DATIVE = "блюду \"Причудливые Ноги\"", + ACCUSATIVE = "блюдо\"Причудливые Ноги\"", + INSTRUMENTAL = "блюдом \"Причудливые Ноги\"", + PREPOSITIONAL = "блюде \"Причудливые Ноги\"", + ) + icon_state = "freaky_leg" + tastes = list("тяжёлых времён" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/lavaland_food/freaky_leg/on_mob_eating_effect(mob/user) + if(isliving(user)) + var/mob/living/living_user = user + living_user.apply_status_effect(STATUS_EFFECT_LAVALAND_NO_PAIN) + +/obj/item/reagent_containers/food/snacks/lavaland_food/veggie_meal + name = "veggie meal" + desc = "Обычно пеплоходцы питаются мясом местной фауны, однако, если правильно смешать нужные вещества, то получится крайне полезное растительное блюдо. Хотя на вкус оно так себе." + ru_names = list( + NOMINATIVE = "вегетарианское блюдо Лазиса", + GENITIVE = "вегетарианского блюда Лазиса", + DATIVE = "вегетарианскому блюду Лазиса", + ACCUSATIVE = "вегетарианское блюдо Лазиса", + INSTRUMENTAL = "вегетарианским блюдом Лазиса", + PREPOSITIONAL = "вегетарианском блюде Лазиса", + ) + icon_state = "veggie_meal" + list_reagents = list("spaceacillin" = 10, "lavaland_extract" = 2, "vitfro" = 20, "sal_acid" = 15) + tastes = list("трав" = 1) + foodtype = FRUIT|VEGETABLES + +/obj/item/reagent_containers/food/snacks/lavaland_food/veggie_meal/on_mob_eating_effect(mob/user) + if(isliving(user)) + var/mob/living/living_user = user + living_user.apply_status_effect(STATUS_EFFECT_FORCED_SNEEZE) + +/obj/item/reagent_containers/food/snacks/lavaland_food/hunters_treat + name = "hunter's treat" + desc = "Человеческое сердце, обжаренное в соку мяса Голиафа. Легенды говорят, что если сьесть сердце поверженного врага, то обретёшь невероятную силу." + ru_names = list( + NOMINATIVE = "блюдо \"Угощение Охотника\"", + GENITIVE = "блюда \"Угощение Охотника\"", + DATIVE = "блюду \"Угощение Охотника\"", + ACCUSATIVE = "блюдо\"Угощение Охотника\"", + INSTRUMENTAL = "блюдом \"Угощение Охотника\"", + PREPOSITIONAL = "блюде \"Угощение Охотника\"", + ) + icon_state = "hunters_treat" + +/obj/item/reagent_containers/food/snacks/lavaland_food/hunters_treat/on_mob_eating_effect(mob/user) + if(ishuman(user)) + var/mob/living/carbon/human/human = user + human.force_gene_block(GLOB.strongblock, TRUE) + +/obj/item/reagent_containers/food/snacks/lavaland_food/yum_grub + name = "yum-grub" + desc = "Мясо златожора, обжаренное вместе с грибами. Говорят, что оно благотворно воздействует на здоровье нервной системы и сенсорных органов." + ru_names = list( + NOMINATIVE = "блюдо \"Ям-Граб\"", + GENITIVE = "блюда \"Ям-Граб\"", + DATIVE = "блюду \"Ям-Граб\"", + ACCUSATIVE = "блюдо\"Ям-Граб\"", + INSTRUMENTAL = "блюдом \"Ям-Граб\"", + PREPOSITIONAL = "блюде \"Ям-Граб\"", + ) + icon_state = "yum_grub" + list_reagents = list("oculine" = 12, "mannitol" = 12, "vitamin" = 3) + +/obj/item/reagent_containers/food/snacks/lavaland_food/ashie_kebab + name = "ashie-kebab" + desc = "Несколько жизненно-важных органов, грубо удаленных из тела и насаженных на железный стержень. Настолько же первобытно, насколько и вкусно!" + ru_names = list( + NOMINATIVE = "пепло-кебаб Лазиса", + GENITIVE = "пепло-кебаба Лазиса", + DATIVE = "пепло-кебАбу Газиса", + ACCUSATIVE = "пепло-кебаб Лазиса", + INSTRUMENTAL = "пепло-кебабом Лазиса", + PREPOSITIONAL = "пепло-кебабе Лазиса", + ) + icon_state = "ashie_kebab" + item_state = "ashie_kebab" + list_reagents = list("nutriment" = 6, "protein" = 6, "ephedrine" = 10) + +/obj/item/reagent_containers/food/snacks/lavaland_food/ashie_kebab/on_mob_eating_effect(mob/user) + if(ishuman(user)) + var/mob/living/carbon/human/human = user + human.add_blood() + +/obj/item/reagent_containers/food/snacks/lavaland_food/tail_o_dead + name = "tail'o'dead" + desc = "Массивный хвост унатха, запечённый в соку фруктовых кактусов. Выглядит аппетитно!" + ru_names = list( + NOMINATIVE = "блюдо \"Отрезанный Хвост\"", + GENITIVE = "блюда \"Отрезанный Хвост\"", + DATIVE = "блюду \"Отрезанный Хвост\"", + ACCUSATIVE = "блюдо\"Отрезанный Хвост\"", + INSTRUMENTAL = "блюдом \"Отрезанный Хвост\"", + PREPOSITIONAL = "блюде \"Отрезанный Хвост\"", + ) + icon_state = "tail_o_dead" + +/obj/item/reagent_containers/food/snacks/lavaland_food/tail_o_dead/on_mob_eating_effect(mob/user) + if(isliving(user)) + var/mob/living/living_user = user + living_user.apply_status_effect(STATUS_EFFECT_LAVALAND_VISION) + +/obj/item/reagent_containers/food/snacks/lavaland_food/cure_curse + name = "cure curse" + desc = "Два проткнутых сердца, одно из которых проклято. Что может пойти не так?" + ru_names = list( + NOMINATIVE = "блюдо \"Проклятое Лечение\"", + GENITIVE = "блюда \"Проклятое Лечение\"", + DATIVE = "блюду \"Проклятое Лечение\"", + ACCUSATIVE = "блюдо\"Проклятое Лечение\"", + INSTRUMENTAL = "блюдом \"Проклятое Лечение\"", + PREPOSITIONAL = "блюде \"Проклятое Лечение\"", + ) + icon_state = "cure_curse" + var/active = FALSE + +/obj/item/reagent_containers/food/snacks/lavaland_food/cure_curse/examine(mob/user) + . = ..() + if(active) + . += span_notice("Проклятое сердце бьётся.") + else + . += span_danger("Проклятое сердце неподвижно.") + +/obj/item/reagent_containers/food/snacks/lavaland_food/cure_curse/attackby(obj/item/I, mob/user, params) + . = ..() + if(!istype(I, /obj/item/melee/touch_attack/healtouch)) + return ..() + if(active) + balloon_alert(user, "уже активно!") + return ..() + user.say("NWOC EGEVNER") + active = TRUE + qdel(I) + update_icon(UPDATE_ICON_STATE) + return ATTACK_CHAIN_PROCEED + +/obj/item/reagent_containers/food/snacks/lavaland_food/cure_curse/update_icon_state() + . = ..() + icon_state = "[initial(icon_state)][active ? "_active" : ""]" + +/obj/item/reagent_containers/food/snacks/lavaland_food/cure_curse/on_mob_eating_effect(mob/user) + if(!active) + return + if(isliving(user)) + var/mob/living/living_user = user + if(!living_user.get_int_organ(/obj/item/organ/internal/regenerative_core/legion)) + new /obj/item/organ/internal/regenerative_core/legion/pre_preserved(living_user) + +/obj/item/reagent_containers/food/snacks/lavaland_food/wings_n_fangs_n_tentacles + name = "wings'n'fangs'n'tentacles" + desc = "Одно из щупалец Голиафа, крыло наблюдателя и жвало ткача, запеченные вместе. На вкус оно так же ужасно, как и на вид." + ru_names = list( + NOMINATIVE = "блюдо \"Крылья, клыки и щупальца\"", + GENITIVE = "блюда \"Крылья, клыки и щупальца\"", + DATIVE = "блюду \"Крылья, клыки и щупальца\"", + ACCUSATIVE = "блюдо\"Крылья, клыки и щупальца\"", + INSTRUMENTAL = "блюдом \"Крылья, клыки и щупальца\"", + PREPOSITIONAL = "блюде \"Крылья, клыки и щупальца\"", + ) + icon_state = "wings_n_fangs_n_tentacles" + +/obj/item/reagent_containers/food/snacks/lavaland_food/wings_n_fangs_n_tentacles/on_mob_eating_effect(mob/user) + if(isunathi(user)) + var/mob/living/carbon/human/human_unathi = user + var/obj/item/organ/internal/cyberimp/tail/blade/organic_upgrade/tumour = human_unathi.get_organ_slot(INTERNAL_ORGAN_TAIL_DEVICE) + if(!tumour) + tumour = new + to_chat(human_unathi, span_warning("Вы чувствуете сильное покалывание в вашем хвосте.")) + tumour.insert(human_unathi) + +/obj/item/reagent_containers/food/snacks/lavaland_food/goli_kernels + name = "goli-kernels" + desc = "небольшой мясной шарик на \"подносе\" из грибной шляпки. Вкуснятина!" + ru_names = list( + NOMINATIVE = "блюдо \"Голи-кернельс\"", + GENITIVE = "блюда \"Голи-кернельс\"", + DATIVE = "блюду \"Голи-кернельс\"", + ACCUSATIVE = "блюдо\"Голи-кернельс\"", + INSTRUMENTAL = "блюдом \"Голи-кернельс\"", + PREPOSITIONAL = "блюде \"Голи-кернельс\"", + ) + icon_state = "goli_kernels" + list_reagents = list("nutriment" = 2, "protein" = 2) + eat_time = 0 SECONDS + +/obj/item/reagent_containers/food/snacks/lavaland_food/goli_kernels/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + . = ..() + + if(..() || !ishuman(hit_atom))//if it gets caught or the target aren't human + return TRUE //abort + + var/mob/living/carbon/human/target = hit_atom + target.eat(src, target) + qdel(src) + +/obj/item/reagent_containers/food/snacks/lavaland_food/grace_of_lazis + name = "grace of lazis portion" + desc = "Кусок мяса, срезанный с массивного постамента в честь славной охоты. Невероятно вкусно." + ru_names = list( + NOMINATIVE = "порция с постамента \"Благодать Лазис Ардакса\"", + GENITIVE = "порции с постамента \"Благодать Лазис Ардакса\"", + DATIVE = "порции с постамента \"Благодать Лазис Ардакса\"", + ACCUSATIVE = "порцию с постамента \"Благодать Лазис Ардакса\"", + INSTRUMENTAL = "порцией с постамента \"Благодать Лазис Ардакса\"", + PREPOSITIONAL = "порции с постамента \"Благодать Лазис Ардакса\"", + ) + gender = FEMALE + icon_state = "grace_of_lazis" + list_reagents = list("protein" = 4, "vitamin" = 2) + eat_time = 0 SECONDS + +/obj/item/reagent_containers/food/snacks/lavaland_food/beer_grub_stew + name = "beer grub stew" + desc = "Алкогольное рагу, приготовленное с использованием мяса златожора. Питательно!" + ru_names = list( + NOMINATIVE = "тушёное рагу", + GENITIVE = "тушёного рагу", + DATIVE = "тушёному рагу", + ACCUSATIVE = "тушёное рагу", + INSTRUMENTAL = "тушёным рагу", + PREPOSITIONAL = "тушёном рагу", + ) + icon_state = "beer_grub_stew" + list_reagents = list("nutriment" = 4, "protein" = 6, "beer" = 7) + +/obj/item/reagent_containers/food/snacks/lavaland_food/beer_grub_stew/on_mob_eating_effect(mob/user) + if(isliving(user)) + var/mob/living/living_user = user + living_user.apply_status_effect(STATUS_EFFECT_TEMPERATURE_STABILIZE) + +/obj/item/reagent_containers/food/snacks/lavaland_food/thick_red_paste + name = "thick red paste" + desc = "Отвратительно выглядящая на вид вязкая красная паста, сделанная из ошмётков тел. На вкус невероятно омерзительно." + ru_names = list( + NOMINATIVE = "густая красная паста", + GENITIVE = "густой красной пасты", + DATIVE = "густой красной пасте", + ACCUSATIVE = "густую красную пасту", + INSTRUMENTAL = "густой красной пастой", + PREPOSITIONAL = "густой красной пасте", + ) + gender = FEMALE + icon_state = "thick_red_paste" + list_reagents = list("protein" = 2) + +/obj/item/reagent_containers/food/snacks/lavaland_food/thick_red_paste/on_mob_eating_effect(mob/user) + if(isliving(user)) + var/mob/living/living_user = user + living_user.apply_status_effect(STATUS_EFFECT_LAVALAND_ETERNAL_BLEEDING_FIX) + +/obj/item/reagent_containers/food/snacks/lavaland_food/black_blood_sausage + name = "black blood sausage" + desc = "Небольшая кровяная колбаска, сделанная из мяса Голиафа и... настоящей крови. Крайне полезно, если вы в критическом состоянии." + ru_names = list( + NOMINATIVE = "черная кровяная колбаска", + GENITIVE = "черной кровяной колбаски", + DATIVE = "черной кровяной колбаске", + ACCUSATIVE = "черную кровяную колбаску", + INSTRUMENTAL = "черной кровяной колбаской", + PREPOSITIONAL = "черной кровяной колбаске", + ) + gender = FEMALE + icon_state = "black_blood_sausage" + item_state = "black_blood_sausage" + list_reagents = list("nutriment" = 4, "protein" = 3, "ashiezine" = 6) + +/obj/item/reagent_containers/food/snacks/lavaland_food/xeno_sticks + name = "xeno sticks" + desc = "Мясо ксеноморфа на палочках, украшенное грибами рейши. На удивление довольно вкусное!" + ru_names = list( + NOMINATIVE = "ксено-палочки", + GENITIVE = "ксено-палочек", + DATIVE = "ксено-палочкам", + ACCUSATIVE = "ксено-палочки", + INSTRUMENTAL = "ксено-палочками", + PREPOSITIONAL = "ксено-палочках", + ) + gender = PLURAL + icon_state = "xeno_sticks" + item_state = "xeno_sticks" + +/obj/item/reagent_containers/food/snacks/lavaland_food/xeno_sticks/on_mob_eating_effect(mob/user) + if(isliving(user)) + var/mob/living/living_user = user + living_user.apply_status_effect(STATUS_EFFECT_LAVALAND_NIGHT_VISION) + +/obj/item/reagent_containers/food/snacks/lavaland_food/filet_madras + name = "filet madras" + desc = "Нежное филе рыбы, обжаренное вместе с грибами. Невероятно вкусно." + ru_names = list( + NOMINATIVE = "блюдо \"Филе Мадрас\"", + GENITIVE = "блюда \"Филе Мадрас\"", + DATIVE = "блюду \"Филе Мадрас\"", + ACCUSATIVE = "блюдо\"Филе Мадрас\"", + INSTRUMENTAL = "блюдом \"Филе Мадрас\"", + PREPOSITIONAL = "блюде \"Филе Мадрас\"", + ) + icon_state = "filet_madras" + list_reagents = list("nutriment" = 3, "protein" = 2, "pen_acid" = 4) + +/obj/item/reagent_containers/food/snacks/lavaland_food/eel_katigo + name = "eel katigo" + desc = "Филе донного угря с травяными приправами и \"соусом\" в виде собранных кусков мяса. Питательно!" + ru_names = list( + NOMINATIVE = "блюдо \"Угорь Катиго\"", + GENITIVE = "блюда \"Угорь Катиго\"", + DATIVE = "блюду \"Угорь Катиго\"", + ACCUSATIVE = "блюдо\"Угорь Катиго\"", + INSTRUMENTAL = "блюдом \"Угорь Катиго\"", + PREPOSITIONAL = "блюде \"Угорь Катиго\"", + ) + icon_state = "eel_katigo" + list_reagents = list("nutriment" = 3, "protein" = 2, "nicotine" = 6, "menthol" = 15) + +/obj/item/reagent_containers/food/snacks/lavaland_food/predatory_chowder + name = "predatory chowder" + desc = "Суп, приготовленный с использованием рыбного мяса, приправ и человеческих органов. Вкусно!" + ru_names = list( + NOMINATIVE = "блюдо \"Похлёбка Хищника\"", + GENITIVE = "блюда \"Похлёбка Хищника\"", + DATIVE = "блюду \"Похлёбка Хищника\"", + ACCUSATIVE = "блюдо\"Похлёбка Хищника\"", + INSTRUMENTAL = "блюдом \"Похлёбка Хищника\"", + PREPOSITIONAL = "блюде \"Похлёбка Хищника\"", + ) + icon_state = "predatory_chowder" + list_reagents = list("nutriment" = 3, "protein" = 2, "godblood" = 20) + +/obj/item/reagent_containers/food/snacks/lavaland_food/abu_ghosh + name = "abu ghosh" + desc = "Суп, приготовленный с использованием молока гатланчей и местных ингридиентов. Вкуснятина!" + ru_names = list( + NOMINATIVE = "блюдо \"Абу Гош\"", + GENITIVE = "блюда \"Абу Гош\"", + DATIVE = "блюду \"Абу Гош\"", + ACCUSATIVE = "блюдо\"Абу Гош\"", + INSTRUMENTAL = "блюдом \"Абу Гош\"", + PREPOSITIONAL = "блюде \"Абу Гош\"", + ) + icon_state = "abu_ghosh" + +/obj/item/reagent_containers/food/snacks/lavaland_food/abu_ghosh/on_mob_eating_effect(mob/user) + if(isliving(user)) + var/mob/living/living_user = user + living_user.apply_status_effect(STATUS_EFFECT_LAVALAND_BLOOD_REGEN) + +/obj/item/storage/lava_tray + name = "thali lazis plate" + desc = "Большой поднос, сделанный из дерева. Предназначен для хранения огромного количества съестного." + ru_names = list( + NOMINATIVE = "поднос \"Тали Лазис\"", + GENITIVE = "подноса \"Тали Лазис\"", + DATIVE = "подносу \"Тали Лазис\"", + ACCUSATIVE = "поднос \"Тали Лазис\"", + INSTRUMENTAL = "подносом \"Тали Лазис\"", + PREPOSITIONAL = "подносе \"Тали Лазис\"", + ) + gender = MALE + icon = 'icons/obj/lavaland/ashie_food.dmi' + icon_state = "thali_lazis_plate" + flags = NONE + materials = null + can_hold = list( + /obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_bacon, + /obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_cacti, + /obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_wing, + /obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_fish, + /obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_crunchie, + /obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_bungus, + ) + display_contents_with_number = TRUE + storage_slots = 12 + max_combined_w_class = 30 + slot_flags = NONE + +/obj/item/storage/lava_tray/update_overlays() + . = ..() + for(var/obj/item/reagent_containers/food/snacks/lavaland/snack in contents) + . += mutable_appearance(icon = snack.icon, icon_state = snack.overlay_sprite) + +/obj/item/storage/lava_tray/full/populate_contents() + for(var/i in 1 to 2) + new /obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_bacon(src) + new /obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_cacti(src) + new /obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_wing(src) + new /obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_fish(src) + new /obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_crunchie(src) + new /obj/item/reagent_containers/food/snacks/lavaland/thali_lazis_bungus(src) + update_icon(UPDATE_OVERLAYS) diff --git a/code/modules/food_and_drinks/food/foods/meat.dm b/code/modules/food_and_drinks/food/foods/meat.dm index 1d40095fe2ed..0c0cd5ce3853 100644 --- a/code/modules/food_and_drinks/food/foods/meat.dm +++ b/code/modules/food_and_drinks/food/foods/meat.dm @@ -5,12 +5,21 @@ /obj/item/reagent_containers/food/snacks/meat name = "meat" - desc = "A slab of meat" + desc = "Кусок сырого мяса. Большинство гуманоидов не стало бы есть его в сыром виде." + ru_names = list( + NOMINATIVE = "кусок мяса", + GENITIVE = "куска мяса", + DATIVE = "куску мяса", + ACCUSATIVE = "кусок мяса", + INSTRUMENTAL = "куском мяса", + PREPOSITIONAL = "куске мяса" + ) + gender = MALE icon_state = "meat" filling_color = "#FF1C1C" bitesize = 3 list_reagents = list("protein" = 3) - tastes = list("meat" = 1) + tastes = list("мяса" = 1) foodtype = MEAT @@ -21,7 +30,7 @@ return . if(!isturf(loc)) - to_chat(user, span_warning("You cannot cut [src] [ismob(loc) ? "in inventory" : "in [loc]"].")) + to_chat(user, span_warning("Вы не можете порезать [declent_ru(ACCUSATIVE)] [ismob(loc) ? "в инвентаре" : "в [loc.declent_ru(PREPOSITIONAL)]"].")) return . var/static/list/acceptable_surfaces = typecacheof(list( @@ -35,21 +44,21 @@ acceptable = TRUE break if(!acceptable) - to_chat(user, span_warning("You cannot cut [src] here! You need a table or at least a tray to do it.")) + to_chat(user, span_warning("Вы не можете порезать [declent_ru(ACCUSATIVE)] тут, поверхность слишком неудобная!")) return . . |= ATTACK_CHAIN_BLOCKED_ALL var/strips_amount = 3 if(istype(I, /obj/item/kitchen/knife) || istype(I, /obj/item/scalpel)) user.visible_message( - span_notice("[user] cuts the meat in thin strips."), - span_notice("You have cut the meat in thin strips."), + span_notice("[user] реж[pluralize_ru(user.gender, "ет", "ут")] мясо тонкими полосками."), + span_notice("Вы режете мясо тонкими полосками."), ) else strips_amount = 1 user.visible_message( - span_notice("[user] crudely cuts the meat in thin strips."), - span_notice("You have crudely cut the meat in thin strips."), + span_notice("[user] грубо реж[pluralize_ru(user.gender, "ет", "ут")] мясо тонкими полосками."), + span_notice("Вы грубо режете мясо тонкими полосками."), ) for(var/i = 1 to strips_amount) var/obj/item/reagent_containers/food/snacks/rawcutlet/cutlet = new(loc) @@ -57,6 +66,30 @@ cutlet.add_fingerprint(user) qdel(src) +/obj/item/reagent_containers/food/snacks/meat/burn() + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] приготовился!")) + new /obj/item/reagent_containers/food/snacks/roasted_meat(loc) + qdel(src) + +/obj/item/reagent_containers/food/snacks/roasted_meat + name = "roasted meat" + desc = "Хорошо прожаренный стейк. Отличный источник белков и жиров." + ru_names = list( + NOMINATIVE = "жаренное мясо", + GENITIVE = "жаренного мяса", + DATIVE = "жаренному мясу", + ACCUSATIVE = "жаренное мясо", + INSTRUMENTAL = "жаренным мясом", + PREPOSITIONAL = "жаренном мясе" + ) + gender = NEUTER + resistance_flags = LAVA_PROOF | FIRE_PROOF + icon_state = "roasted_meat" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' + list_reagents = list("protein" = 4, "vitamin" = 1) + tastes = list("мяса" = 1) + foodtype = MEAT /obj/item/reagent_containers/food/snacks/meat/syntiflesh name = "synthetic meat" @@ -415,10 +448,24 @@ /obj/item/reagent_containers/food/snacks/monstermeat/spiderleg name = "spider leg" - desc = "A still twitching leg of a giant spider. You don't really want to eat this, do you?" + desc = "Всё ещё дёргающаяся лапка гигантского паука. Вы ведь не будете это есть, правда?" + ru_names = list( + NOMINATIVE = "паучья лапка", + GENITIVE = "паучьей лапки", + DATIVE = "паучьей лапке", + ACCUSATIVE = "паучью лапку", + INSTRUMENTAL = "паучьей лапкой", + PREPOSITIONAL = "паучьей лапке" + ) + gender = FEMALE icon_state = "spiderleg" list_reagents = list("protein" = 2, "toxin" = 2) - tastes = list("cobwebs" = 1, "creepy motion" = 1) + tastes = list("паутины" = 1, "слабых подёргиваний во рту" = 1) + +/obj/item/reagent_containers/food/snacks/monstermeat/spiderleg/burn() + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] приготовилась!")) + new /obj/item/reagent_containers/food/snacks/roasted_spiderleg(loc) + qdel(src) /obj/item/reagent_containers/food/snacks/raw_bacon name = "raw bacon" @@ -437,26 +484,44 @@ /obj/item/reagent_containers/food/snacks/monstermeat/goliath name = "goliath meat" - desc = "A slab of goliath meat. It's not very edible now, but it cooks great in lava." + desc = "Кусок мяса голиафа. Сейчас не очень съедобно, но в лаве оно готовится отлично." + ru_names = list( + NOMINATIVE = "мясо голиафа", + GENITIVE = "мяса голиафа", + DATIVE = "мясу голиафа", + ACCUSATIVE = "мясо голиафа", + INSTRUMENTAL = "мясом голиафа", + PREPOSITIONAL = "мясе голиафа" + ) + gender = NEUTER icon_state = "goliathmeat" list_reagents = list("protein" = 3, "toxin" = 5) - tastes = list("tough meat" = 1) + tastes = list("жёсткого мяса" = 1) /obj/item/reagent_containers/food/snacks/monstermeat/goliath/burn() - visible_message("[src] finishes cooking!") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] приготовилось!")) new /obj/item/reagent_containers/food/snacks/goliath_steak(loc) qdel(src) /obj/item/reagent_containers/food/snacks/monstermeat/goldgrub - name= "goldgrub meat" - desc = "Gross, slimy, and green intestines with goldgrub skin, retrieved from a Goldgrub. Legends say it is valuable in traditional medicines, however it's highly toxic now." + name = "goldgrub meat" + desc = "Плотные слизистые, покрытые золотистой шкурой зелёные внутренности. Были извлечены из Златожора. Легенды гласят, что мясо ценится в традиционной медицине, однако сейчас оно крайне ядовито." + ru_names = list( + NOMINATIVE = "мясо златожора", + GENITIVE = "мяса златожора", + DATIVE = "мясу златожору", + ACCUSATIVE = "мясо златожора", + INSTRUMENTAL = "мясом златожором", + PREPOSITIONAL = "мясе златожора" + ) + gender = NEUTER icon_state = "Goldgrubmeat" list_reagents = list("grub_juice" = 5, "toxin" = 10) bitesize = 2 - tastes = list("meat" = 1) + tastes = list("слизистого мяса" = 1) /obj/item/reagent_containers/food/snacks/monstermeat/goldgrub/burn() - visible_message("[src] finishes cooking!") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] приготовилось!")) new /obj/item/reagent_containers/food/snacks/goldgrubmeat(loc) qdel(src) @@ -692,12 +757,41 @@ /obj/item/reagent_containers/food/snacks/goliath_steak name = "goliath steak" - desc = "A delicious, lava cooked steak." + desc = "Восхитительный стейк из мяса голиафа, прожаренный прямо в лаве. Так первобытно." + ru_names = list( + NOMINATIVE = "стейк из мяса голиафа", + GENITIVE = "стейка из мяса голиафа", + DATIVE = "стейку из мяса голиафа", + ACCUSATIVE = "стейк из мяса голиафа", + INSTRUMENTAL = "стейком из мяса голиафа", + PREPOSITIONAL = "стейке из мяса голиафа" + ) + gender = MALE resistance_flags = LAVA_PROOF | FIRE_PROOF icon_state = "goliathsteak" trash = null list_reagents = list("protein" = 6, "vitamin" = 2) - tastes = list("meat" = 1) + tastes = list("нежного мяса" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/roasted_spiderleg + name = "roasted spider leg" + desc = "Жаренная паучья лапка, теперь оно точно мертво." + ru_names = list( + NOMINATIVE = "жаренная паучья лапка", + GENITIVE = "жаренной паучьей лапки", + DATIVE = "жаренной паучьей лапке", + ACCUSATIVE = "жаренную паучью лапку", + INSTRUMENTAL = "жаренной паучьей лапкой", + PREPOSITIONAL = "жаренной паучьей лапке" + ) + gender = FEMALE + resistance_flags = LAVA_PROOF | FIRE_PROOF + icon_state = "roasted_spiderleg" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' + list_reagents = list("protein" = 4, "vitamin" = 1) + tastes = list("паутины" = 1, "мяса" = 1) foodtype = MEAT /obj/item/reagent_containers/food/snacks/goldgrubmeat diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index 97ab395ae325..8ae70a63b55d 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -43,8 +43,8 @@ return if(!reagents.total_volume) if(M == user) - to_chat(user, "You finish eating \the [src].") - user.visible_message("[M] finishes eating \the [src].") + to_chat(user, span_notice("Вы доели [declent_ru(ACCUSATIVE)].")) + user.visible_message(span_notice("[M] доел[genderize_ru(M.gender, "", "а", "о", "и")] [declent_ru(ACCUSATIVE)].")) user.drop_item_ground(src) //so icons update :[ Post_Consume(M) var/obj/item/trash_item = generate_trash(usr) @@ -195,31 +195,27 @@ /obj/item/reagent_containers/food/snacks/sliceable/examine(mob/user) . = ..() - . += "Alt-click to put something small inside." + . += span_info("Alt-click to put something small inside.") -/obj/item/reagent_containers/food/snacks/sliceable/AltClick(mob/living/user) - if(!iscarbon(user)) - return - if(user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) - to_chat(user, "You can't do that right now!") - return +/obj/item/reagent_containers/food/snacks/sliceable/click_alt(mob/living/user) var/obj/item/I = user.get_active_hand() if(!I) - return + return NONE if(I.w_class > WEIGHT_CLASS_SMALL) - to_chat(user, "You cannot fit [I] in [src]!") - return + to_chat(user, span_warning("You cannot fit [I] in [src]!")) + return CLICK_ACTION_BLOCKING var/newweight = GetTotalContentsWeight() + I.GetTotalContentsWeight() + I.w_class if(newweight > MAX_WEIGHT_CLASS) // Nope, no bluespace slice food - to_chat(user, "You cannot fit [I] in [src]!") - return + to_chat(user, span_warning("You cannot fit [I] in [src]!")) + return CLICK_ACTION_BLOCKING if(!user.drop_transfer_item_to_loc(I, src)) - to_chat(user, "You cannot slip [I] inside [src]!") - return - to_chat(user, "You slip [I] inside [src].") + to_chat(user, span_warning("You cannot slip [I] inside [src]!")) + return CLICK_ACTION_BLOCKING + to_chat(user, span_warning("You slip [I] inside [src].")) total_w_class += I.w_class add_fingerprint(user) + return CLICK_ACTION_SUCCESS /obj/item/reagent_containers/food/snacks/sliceable/attackby(obj/item/I, mob/user, params) diff --git a/code/modules/food_and_drinks/item_food/eat_item_list_cloth.dm b/code/modules/food_and_drinks/item_food/eat_item_list_cloth.dm index 727aa768eaee..20a955125af0 100644 --- a/code/modules/food_and_drinks/item_food/eat_item_list_cloth.dm +++ b/code/modules/food_and_drinks/item_food/eat_item_list_cloth.dm @@ -488,7 +488,7 @@ integrity_bite = 20, \ nutritional_value = 10, \ ) - + /obj/item/clothing/suit/cardborg/add_eatable_component() AddComponent( \ /datum/component/eatable, \ @@ -624,3 +624,13 @@ nutritional_value = 10, \ ) +// SHOES + +/obj/item/clothing/shoes/footwraps/add_eatable_component() + AddComponent( \ + /datum/component/eatable, \ + material_type = MATERIAL_CLASS_CLOTH, \ + max_bites = 4, \ + integrity_bite = 20, \ + nutritional_value = 10, \ + ) diff --git a/code/modules/food_and_drinks/kitchen_machinery/cooker.dm b/code/modules/food_and_drinks/kitchen_machinery/cooker.dm index 44f487107c83..86264c38b310 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/cooker.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/cooker.dm @@ -68,9 +68,10 @@ setRegents(props, burnt) if(user && (user in viewers(5, src))) to_chat(user, span_warning("You smell burning coming from the [src]!")) - var/datum/effect_system/smoke_spread/bad/smoke = new // burning things makes smoke! - smoke.set_up(5, 0, src) + var/datum/effect_system/fluid_spread/smoke/bad/smoke = new // burning things makes smoke! + smoke.set_up(amount = 5, location = src) smoke.start() + if(prob(firechance)) var/obj/effect/decal/cleanable/liquid_fuel/oil = new(drop_turf) oil.name = "fat" diff --git a/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm b/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm index 89ca589b9599..26474b998380 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm @@ -15,9 +15,17 @@ idle_power_usage = 5 active_power_usage = 100 container_type = OPENCONTAINER - var/operating = FALSE // Is it on? - var/dirty = NO_DIRT // = {0..100} Does it need cleaning? - var/broken = BROKEN_NONE // How broken is it??? + /// Is it on? + var/operating = FALSE + /// = {0..100} Does it need cleaning? + var/dirty = NO_DIRT + /// Can our machine be dirty? + var/can_be_dirty = TRUE + /// How broken is it??? + var/broken = BROKEN_NONE + /// Can our machine be broken? + var/can_broke = TRUE + var/transfer_reagents_from_ingredients = TRUE var/efficiency = 0 var/list/cook_verbs = list("Cooking") //Recipe & Item vars @@ -147,6 +155,31 @@ to_chat(user, span_warning("You have no idea how to cook with [I].")) return ATTACK_CHAIN_PROCEED|ATTACK_CHAIN_NO_AFTERATTACK +/obj/machinery/kitchen_machine/examine(mob/user) + . = ..() + if(in_range(src, user)) + . += span_info("Alt-click to activate it.
Ctrl-Shift-click to dispose content.") + +/obj/machinery/kitchen_machine/click_alt(mob/living/carbon/human/human) + if(operating) + return NONE + + add_fingerprint(human) + cook() + return CLICK_ACTION_SUCCESS + +/obj/machinery/kitchen_machine/CtrlShiftClick(mob/living/carbon/human/human) + if(!istype(human) || !human.Adjacent(src)) + return + + if(human.incapacitated() || HAS_TRAIT(human, TRAIT_HANDS_BLOCKED)) + return + + if(operating) + return + + add_fingerprint(human) + dispose(human) /obj/machinery/kitchen_machine/screwdriver_act(mob/living/user, obj/item/I) . = TRUE @@ -167,7 +200,8 @@ ) if(!I.use_tool(src, user, 2 SECONDS, volume = I.tool_volume) || operating || broken != BROKEN_NEEDS_SCREWDRIVER) return . - broken = BROKEN_NEEDS_WRENCH // Fix it a bit + if(can_broke) + broken = BROKEN_NEEDS_WRENCH // Fix it a bit update_icon(UPDATE_ICON_STATE) user.visible_message( span_notice("[user] fixes the internal parts of [src]."), @@ -323,7 +357,7 @@ ************************************/ /obj/machinery/kitchen_machine/proc/cook() - if(stat & (NOPOWER|BROKEN)) + if(use_power != NO_POWER_USE && stat & (NOPOWER|BROKEN)) return start() if(reagents.total_volume==0 && !(locate(/obj) in contents)) //dry run @@ -338,7 +372,8 @@ if(recipes_to_make.len == 1 && recipes_to_make[1][2] == RECIPE_FAIL) //This only runs if there is a single recipe source to be made and it is a failure (the machine was loaded with only 1 mixing bowl that results in failure OR was directly loaded with ingredients that results in failure). //If there are multiple sources, this bit gets skipped. - dirty += 1 + if(can_be_dirty) + dirty += 1 if(prob(max(10,dirty*5))) //chance to get so dirty we require cleaning before next use if(!wzhzhzh(4)) abort() @@ -414,7 +449,8 @@ source.reagents.clear_reagents() for(var/e=1 to efficiency) //upgraded machine? make additional servings and split the ingredient reagents among each serving equally. var/obj/cooked = new recipe.result() - temp_reagents.trans_to(cooked, temp_reagents.total_volume/efficiency, no_react = TRUE) // Don't react with the abstract holder please + if(transfer_reagents_from_ingredients) + temp_reagents.trans_to(cooked, temp_reagents.total_volume/efficiency, no_react = TRUE) // Don't react with the abstract holder please cooked.forceMove(loc) temp_reagents.clear_reagents() var/obj/byproduct = recipe.get_byproduct() //if the recipe has a byproduct, handle returning that (such as re-usable candy moulds) @@ -429,6 +465,9 @@ /obj/machinery/kitchen_machine/proc/wzhzhzh(seconds) for(var/i=1 to seconds) + if(use_power == NO_POWER_USE) + sleep(10) + continue if(stat & (NOPOWER|BROKEN)) return 0 use_power(500) @@ -458,13 +497,16 @@ update_icon(UPDATE_ICON_STATE) updateUsrDialog() -/obj/machinery/kitchen_machine/proc/dispose() +/obj/machinery/kitchen_machine/proc/dispose(mob/user) for(var/obj/O in contents) O.forceMove(loc) - if(reagents.total_volume) + + if(reagents.total_volume && can_be_dirty) dirty++ + reagents.clear_reagents() - to_chat(usr, "You dispose of \the [src]'s contents.") + to_chat(user, span_notice("You dispose of \the [src]'s contents.")) + updateUsrDialog() /obj/machinery/kitchen_machine/proc/muck_start() @@ -473,7 +515,8 @@ /obj/machinery/kitchen_machine/proc/muck_finish() playsound(loc, 'sound/machines/ding.ogg', 50, 1) visible_message("\The [src] gets covered in muck!") - dirty = MAX_DIRT // Make it dirty so it can't be used util cleaned + if(can_be_dirty) //this vars are much more easy than copy-paste all that code to tribal oven + dirty = MAX_DIRT // Make it dirty so it can't be used util cleaned container_type = NONE operating = FALSE // Turn it off again afterwards update_icon(UPDATE_ICON_STATE) @@ -482,7 +525,8 @@ /obj/machinery/kitchen_machine/proc/broke() do_sparks(2, 1, src) visible_message("The [src] breaks!") //Let them know they're stupid - broken = BROKEN_NEEDS_SCREWDRIVER // Make it broken so it can't be used util fixed + if(can_broke) + broken = BROKEN_NEEDS_SCREWDRIVER // Make it broken so it can't be used util fixed container_type = NONE operating = FALSE // Turn it off again aferwards update_icon(UPDATE_ICON_STATE) @@ -525,7 +569,8 @@ cook() if("dispose") - dispose() + dispose(usr) + return diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index b9efa4e202a9..2358d8f603cf 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -5,6 +5,15 @@ */ /obj/machinery/smartfridge name = "\improper SmartFridge" + desc = "Это холодильник. Он умный. Просто удивительно, да?" + ru_names = list( + NOMINATIVE = "холодильник SmartFridge", + GENITIVE = "холодильника SmartFridge", + DATIVE = "холодильнику SmartFridge", + ACCUSATIVE = "холодильник SmartFridge", + INSTRUMENTAL = "холодильником SmartFridge", + PREPOSITIONAL = "холодильнике SmartFridge" + ) icon = 'icons/obj/machines/vending.dmi' icon_state = "smartfridge" layer = 2.9 @@ -77,7 +86,7 @@ var/amount = starting_items[typekey] || 1 while(amount--) var/obj/item/newitem = new typekey(src) - item_quants[newitem.name] += 1 + item_quants[newitem.declent_ru(NOMINATIVE)] += 1 update_icon(UPDATE_OVERLAYS) // Accepted items accepted_items_typecache = typecacheof(list( @@ -200,7 +209,7 @@ /obj/machinery/smartfridge/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/card/emag)) - to_chat(user, span_notice("The [name] smartly refuses [I].")) + balloon_alert(user, "невозможно!") return ATTACK_CHAIN_PROCEED|ATTACK_CHAIN_NO_AFTERATTACK if(user.a_intent == INTENT_HARM) @@ -212,14 +221,15 @@ add_fingerprint(user) if(stat & (BROKEN|NOPOWER)) - to_chat(user, span_warning("The [name] is unpowered or broken.")) + balloon_alert(user, "не работает!") return ATTACK_CHAIN_PROCEED if(load(I, user)) user.visible_message( - span_notice("[user] has added [I] into [src]."), - span_notice("You have added [I] into [src]."), + span_notice("[user] загрузил[pluralize_ru(user.gender, "", "а", "о", "и")] [I.declent_ru(ACCUSATIVE)] в [declent_ru(ACCUSATIVE)]."), + span_notice("Вы загрузили [I.declent_ru(ACCUSATIVE)] в [declent_ru(ACCUSATIVE)]."), ) + balloon_alert(user, "загружено внутрь") SStgui.update_uis(src) update_icon(UPDATE_OVERLAYS) return ATTACK_CHAIN_BLOCKED_ALL @@ -233,17 +243,18 @@ items_loaded++ if(items_loaded) user.visible_message( - span_notice("[user] has loaded [src] with [storage]."), - span_notice("You have loaded [src] with [storage]."), + span_notice("[user] загрузил[pluralize_ru(user.gender, "", "а", "о", "и")] содержимое [storage.declent_ru(GENITIVE)] в [declent_ru(ACCUSATIVE)]."), + span_notice("Вы загрузили содержимое [storage.declent_ru(GENITIVE)] в [declent_ru(ACCUSATIVE)]."), ) + balloon_alert(user, "содержимое загружено") SStgui.update_uis(src) update_icon(UPDATE_OVERLAYS) var/failed = length(storage.contents) if(failed) - to_chat(user, span_notice("[failed] item\s [failed == 1 ? "is" : "are"] refused.")) + to_chat(user, span_notice("[failed] предмет[declension_ru(failed, "", "а", "ов")] не был[declension_ru(failed, "", "и", "и")] загружен[declension_ru(failed, "", "ы", "ы")].")) return ATTACK_CHAIN_PROCEED_SUCCESS - to_chat(user, span_warning("You cannot put [I] into [src].")) + balloon_alert(user, "не подходит!") return ATTACK_CHAIN_PROCEED @@ -252,6 +263,7 @@ /obj/machinery/smartfridge/attack_hand(mob/user) if(stat & (BROKEN|NOPOWER)) + balloon_alert(user, "не работает!") return wires.Interact(user) ui_interact(user) @@ -264,12 +276,12 @@ if(!istype(over_object, /obj/item/storage/pill_bottle)) //Only pill bottles, please return TRUE if(stat & (BROKEN|NOPOWER)) - to_chat(user, "\The [src] is unpowered and useless.") + balloon_alert(user, "не работает!") return TRUE var/obj/item/storage/box/pillbottles/P = over_object if(!length(P.contents)) - to_chat(user, "\The [P] is empty.") + balloon_alert(user, "нечего выгружать!") return TRUE add_fingerprint(user) @@ -279,11 +291,14 @@ G.add_fingerprint(user) items_loaded++ if(items_loaded) - user.visible_message("[user] empties \the [P] into \the [src].", "You empty \the [P] into \the [src].") + user.visible_message( + span_notice("[user] загрузил[pluralize_ru(user.gender, "", "а", "о", "и")] содержимое [P.declent_ru(GENITIVE)] в [declent_ru(ACCUSATIVE)]."), + span_notice("Вы загрузили содержимое [P.declent_ru(GENITIVE)] в [declent_ru(ACCUSATIVE)].")) + balloon_alert(user, "содержимое загружено") update_icon(UPDATE_OVERLAYS) var/failed = length(P.contents) if(failed) - to_chat(user, "[failed] item\s [failed == 1 ? "is" : "are"] refused.") + to_chat(user, span_notice("[failed] предмет[declension_ru(failed, "", "а", "ов")] не был[declension_ru(failed, "", "и", "и")] загружен[declension_ru(failed, "", "ы", "ы")].")) return TRUE /obj/machinery/smartfridge/ui_interact(mob/user, datum/tgui/ui = null) @@ -291,7 +306,7 @@ ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user, src, "Smartfridge", name) + ui = new(user, src, "Smartfridge", capitalize(declent_ru(NOMINATIVE))) ui.open() /obj/machinery/smartfridge/ui_data(mob/user) @@ -327,7 +342,7 @@ switch(action) if("vend") if(is_secure && !emagged && scan_id && !allowed(usr)) //secure fridge check - to_chat(usr, "Access denied.") + to_chat(usr, span_warning("Отказано в доступе.")) return FALSE var/index = text2num(params["index"]) @@ -346,7 +361,7 @@ return if(i == 1 && Adjacent(user) && !issilicon(user)) for(var/obj/O in contents) - if(O.name == K) + if(O.declent_ru(NOMINATIVE) == K) O.forceMove(get_turf(src)) adjust_item_drop_location(O) user.put_in_hands(O, ignore_anim = FALSE) @@ -354,7 +369,7 @@ break else for(var/obj/O in contents) - if(O.name == K) + if(O.declent_ru(NOMINATIVE) == K) O.forceMove(loc) adjust_item_drop_location(O) update_icon(UPDATE_OVERLAYS) @@ -375,7 +390,7 @@ return FALSE if(length(contents) >= max_n_of_items) - to_chat(user, span_notice("The [name] is full.")) + balloon_alert(user, "хранилище переполнено!") return FALSE if(isstorage(I.loc)) @@ -395,7 +410,7 @@ else I.forceMove(src) - item_quants[I.name] += 1 + item_quants[I.declent_ru(NOMINATIVE)] += 1 return TRUE @@ -413,7 +428,7 @@ continue item_quants[O]-- for(var/obj/I in contents) - if(I.name == O) + if(I.declent_ru(NOMINATIVE) == O) I.forceMove(loc) throw_item = I update_icon(UPDATE_OVERLAYS) @@ -422,7 +437,7 @@ return FALSE INVOKE_ASYNC(throw_item, TYPE_PROC_REF(/atom/movable, throw_at), target, 16, 3, src) - visible_message("[src] launches [throw_item.name] at [target.name]!") + visible_message(span_warning("[capitalize(declent_ru(NOMINATIVE))] кидает [throw_item.declent_ru(ACCUSATIVE)] в [target]!")) return TRUE /** @@ -440,6 +455,15 @@ */ /obj/machinery/smartfridge/syndie name = "\improper Suspicious SmartFridge" + desc = "Это холодильник. Он умный. Подозрительно умный." + ru_names = list( + NOMINATIVE = "подозрительный холодильник SmartFridge", + GENITIVE = "подозрительного холодильника SmartFridge", + DATIVE = "подозрительному холодильнику SmartFridge", + ACCUSATIVE = "подозрительный холодильник SmartFridge", + INSTRUMENTAL = "подозрительным холодильником SmartFridge", + PREPOSITIONAL = "подозрительном холодильнике SmartFridge" + ) icon_state = "smartfridge-syndie" contents_overlay = "smartfridge-syndie" @@ -456,7 +480,7 @@ /obj/machinery/smartfridge/secure/emag_act(mob/user) emagged = TRUE if(user) - to_chat(user, "You short out the product lock on \the [src].") + balloon_alert(user, "механизм блокировки взломан!") /obj/machinery/smartfridge/secure/emp_act(severity) if(!emagged && prob(40 / severity)) @@ -471,7 +495,15 @@ */ /obj/machinery/smartfridge/seeds name = "\improper Seed Storage" - desc = "When you need seeds fast!" + desc = "Это холодильник, предназначенный для растений и их плодов." + ru_names = list( + NOMINATIVE = "ботанический холодильник", + GENITIVE = "ботанического холодильника", + DATIVE = "ботаническому холодильнику", + ACCUSATIVE = "ботанический холодильник", + INSTRUMENTAL = "ботаническим холодильником", + PREPOSITIONAL = "ботаническом холодильнике" + ) icon = 'icons/obj/machines/vending.dmi' icon_state = "seeds_off" base_icon_state = "seeds" @@ -512,7 +544,15 @@ */ /obj/machinery/smartfridge/medbay name = "\improper Refrigerated Medicine Storage" - desc = "A refrigerated storage unit for storing medicine and chemicals." + desc = "Это холодильник, предназначенный для хранения медикаментов и химикатов." + ru_names = list( + NOMINATIVE = "медицинский холодильник", + GENITIVE = "медицинского холодильника", + DATIVE = "медицинскому холодильнику", + ACCUSATIVE = "медицинский холодильник", + INSTRUMENTAL = "медицинским холодильником", + PREPOSITIONAL = "медицинском холодильнике" + ) icon_state = "smartfridge" //To fix the icon in the map editor. /obj/machinery/smartfridge/medbay/Initialize(mapload) @@ -537,12 +577,18 @@ */ /obj/machinery/smartfridge/secure/extract name = "\improper Slime Extract Storage" - desc = "A refrigerated storage unit for slime extracts" + desc = "Это холодильник, предназначенный для хранения слаймовых экстрактов." + ru_names = list( + NOMINATIVE = "холодильник для слаймовых экстрактов", + GENITIVE = "холодильника для слаймовых экстрактов", + DATIVE = "холодильнику для слаймовых экстрактов", + ACCUSATIVE = "холодильник для слаймовых экстрактов", + INSTRUMENTAL = "холодильником для слаймовых экстрактов", + PREPOSITIONAL = "холодильнике для слаймовых экстрактов" + ) req_access = list(ACCESS_RESEARCH) /obj/machinery/smartfridge/secure/extract/syndie - name = "\improper Suspicious Slime Extract Storage" - desc = "A refrigerated storage unit for slime extracts" icon_state = "smartfridge-syndie" contents_overlay = "smartfridge-syndie" @@ -560,8 +606,6 @@ * Secure, Medical variant of the [Smart Fridge][/obj/machinery/smartfridge]. */ /obj/machinery/smartfridge/secure/medbay - name = "\improper Secure Refrigerated Medicine Storage" - desc = "A refrigerated storage unit for storing medicine and chemicals." icon_state = "smartfridge" //To fix the icon in the map editor. req_access = list(ACCESS_MEDICAL, ACCESS_CHEMISTRY) @@ -587,7 +631,15 @@ */ /obj/machinery/smartfridge/secure/chemistry name = "\improper Smart Chemical Storage" - desc = "A refrigerated storage unit for medicine and chemical storage." + desc = "Это холодильник, предназначенный для хранения медикаментов и химикатов." + ru_names = list( + NOMINATIVE = "химический холодильник", + GENITIVE = "химического холодильника", + DATIVE = "химическому холодильнику", + ACCUSATIVE = "химический холодильник", + INSTRUMENTAL = "химическим холодильником", + PREPOSITIONAL = "химическом холодильнике" + ) icon_state = "smartfridge" //To fix the icon in the map editor. req_access = list(ACCESS_CHEMISTRY) @@ -629,9 +681,18 @@ /obj/machinery/smartfridge/secure/medbay/organ - req_access = list(ACCESS_SURGERY) + name = "\improper Secure Refrigerated Organ Storage" - desc = "A refrigerated storage unit for storing organs, limbs, implants and IV bags." + desc = "Это холодильник, предназначенный для хранения органов, конечностей, имплантов и капельниц." + ru_names = list( + NOMINATIVE = "холодильник для органов", + GENITIVE = "холодильника для органов", + DATIVE = "холодильнику для органов", + ACCUSATIVE = "холодильник для органов", + INSTRUMENTAL = "холодильником для органов", + PREPOSITIONAL = "холодильнике для органов" + ) + req_access = list(ACCESS_SURGERY) opacity = TRUE contents_overlay = "smartfridge-organ" @@ -655,7 +716,15 @@ */ /obj/machinery/smartfridge/disks name = "disk compartmentalizer" - desc = "A machine capable of storing a variety of disks. Denoted by most as the DSU (disk storage unit)." + desc = "Машина, предназначенная для хранения различного рода дискет." + ru_names = list( + NOMINATIVE = "хранилище для дискет", + GENITIVE = "хранилища для дискет", + DATIVE = "хранилищу для дискет", + ACCUSATIVE = "хранилище для дискет", + INSTRUMENTAL = "хранилищем для дискет", + PREPOSITIONAL = "хранилище для дискет" + ) icon_state = "disktoaster_off" base_icon_state = "disktoaster" pass_flags = PASSTABLE @@ -692,7 +761,15 @@ */ /obj/machinery/smartfridge/secure/chemistry/virology name = "\improper Smart Virus Storage" - desc = "A refrigerated storage unit for volatile sample storage." + desc = "Это холодильник, предназначенный для хранения образцов вирусов." + ru_names = list( + NOMINATIVE = "холодильник для вирусных образцов", + GENITIVE = "холодильника для вирусных образцов", + DATIVE = "холодильнику для вирусных образцов", + ACCUSATIVE = "холодильник для вирусных образцов", + INSTRUMENTAL = "холодильником для вирусных образцов", + PREPOSITIONAL = "холодильнике для вирусных образцов" + ) icon_state = "smartfridge" req_access = list(ACCESS_VIROLOGY) icon_addon = "smartfridge-viro-overlay" @@ -745,7 +822,15 @@ */ /obj/machinery/smartfridge/drinks name = "\improper Drink Showcase" - desc = "A refrigerated storage unit for tasty tasty alcohol." + desc = "Это холодильник, предназначенный для хранения напитков." + ru_names = list( + NOMINATIVE = "холодильник для напитков", + GENITIVE = "холодильника для напитков", + DATIVE = "холодильнику для напитков", + ACCUSATIVE = "холодильник для напитков", + INSTRUMENTAL = "холодильником для напитков", + PREPOSITIONAL = "холодильнике для напитков" + ) /obj/machinery/smartfridge/drinks/Initialize(mapload) . = ..() @@ -762,7 +847,15 @@ */ /obj/machinery/smartfridge/dish name = "\improper Dish Showcase" - desc = "A refrigerated storage unit for some delicious food." + desc = "Это холодильник, предназначенный для хранения органов, конечностей, имплантов и капельниц." + ru_names = list( + NOMINATIVE = "холодильник для еды", + GENITIVE = "холодильника для еды", + DATIVE = "холодильнику для еды", + ACCUSATIVE = "холодильник для еды", + INSTRUMENTAL = "холодильником для еды", + PREPOSITIONAL = "холодильнике для еды" + ) /obj/machinery/smartfridge/dish/Initialize(mapload) . = ..() @@ -782,6 +875,15 @@ /obj/machinery/smartfridge/drying_rack name = "drying rack" desc = "A wooden contraption, used to dry plant products, food and leather." + desc = "Деревянная стойка, предназначенная для просушки растительных продуктов, еды и кожи." + ru_names = list( + NOMINATIVE = "сушильная стойка", + GENITIVE = "сушильной стойки", + DATIVE = "сушильной стойке", + ACCUSATIVE = "сушильную стойку", + INSTRUMENTAL = "сушильной стойкой", + PREPOSITIONAL = "сушильной стойке" + ) icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "drying-rack_off" use_power = IDLE_POWER_USE @@ -789,6 +891,8 @@ active_power_usage = 200 can_dry = TRUE visible_contents = FALSE + var/primitive = FALSE //used for energy consuming stuff + var/drying_timer = 0 icon_lightmask = null /obj/machinery/smartfridge/drying_rack/Initialize(mapload) @@ -810,6 +914,9 @@ return /obj/machinery/smartfridge/drying_rack/power_change(forced = FALSE) + if(primitive) + return + if(powered() && anchored) stat &= ~NOPOWER else @@ -839,10 +946,10 @@ switch(action) if("drying") drying = !drying - use_power = drying ? ACTIVE_POWER_USE : IDLE_POWER_USE + if(!primitive) + use_power = drying ? ACTIVE_POWER_USE : IDLE_POWER_USE update_icon(UPDATE_OVERLAYS) - /obj/machinery/smartfridge/drying_rack/update_overlays() . = list() if(drying) @@ -852,9 +959,17 @@ /obj/machinery/smartfridge/drying_rack/process() - if(drying && rack_dry())//no need to update unless something got dried - update_icon(UPDATE_OVERLAYS) - + if(!drying)//no need to update if we don't dry + return + if(drying_timer) + drying_timer-- + if(!drying_timer) //if it went to zero, dry and reset + drying_timer = initial(drying_timer) + if(rack_dry()) + update_icon(UPDATE_OVERLAYS) + else // no timer + if(rack_dry()) + update_icon(UPDATE_OVERLAYS) /obj/machinery/smartfridge/drying_rack/accept_check(obj/item/O) . = ..() @@ -903,3 +1018,34 @@ SStgui.update_uis(src) return TRUE return FALSE + +/obj/machinery/smartfridge/drying_rack/ash + name = "primitive drying rack" + desc = "Примитивная самодельная сушилка, предназначенная для просушки растительных продуктов, еды и кожи." + ru_names = list( + NOMINATIVE = "примитивная сушилка", + GENITIVE = "примитивной сушилки", + DATIVE = "примитивной сушилке", + ACCUSATIVE = "примитивную сушилку", + INSTRUMENTAL = "примитивной сушилкой", + PREPOSITIONAL = "примитивной сушилке", + ) + gender = FEMALE + icon_state = "primitive-drying-rack" + use_power = NO_POWER_USE + can_dry = FALSE //trust me + drying = TRUE + idle_power_usage = 0 + active_power_usage = 0 + drying_timer = 8 + primitive = TRUE + +/obj/machinery/smartfridge/drying_rack/ash/update_overlays() + overlays.Cut() + if(length(contents)) + overlays += "primitive-drying-rack_leather" + +/obj/machinery/smartfridge/drying_rack/ash/on_deconstruction() + new /obj/item/stack/sheet/wood(loc, 2) + new /obj/item/stack/sheet/sinew(loc, 1) + ..() diff --git a/code/modules/food_and_drinks/kitchen_machinery/tribal_oven.dm b/code/modules/food_and_drinks/kitchen_machinery/tribal_oven.dm new file mode 100644 index 000000000000..19af063728df --- /dev/null +++ b/code/modules/food_and_drinks/kitchen_machinery/tribal_oven.dm @@ -0,0 +1,33 @@ +/obj/machinery/kitchen_machine/tribal_oven + name = "stone oven" + desc = "Огромная примитивная каменная печь, используемая для приготовления пищи." + ru_names = list( + NOMINATIVE = "каменная печь", + GENITIVE = "каменной печи", + DATIVE = "каменной печи", + ACCUSATIVE = "каменную печь", + INSTRUMENTAL = "каменной печью", + PREPOSITIONAL = "каменной печи" + ) + gender = FEMALE + icon = 'icons/obj/lavaland/ashie_food.dmi' + icon_state = "oven_off" + use_power = NO_POWER_USE + idle_power_usage = 0 + active_power_usage = 0 + recipe_type = RECIPE_TRIBAL_OVEN + off_icon = "oven_off" + on_icon = "oven_on" + can_be_dirty = FALSE + can_broke = FALSE + efficiency = 1 //we don't have parts, soo + transfer_reagents_from_ingredients = FALSE + +/obj/machinery/kitchen_machine/tribal_oven/screwdriver_act() + return FALSE + +/obj/machinery/kitchen_machine/tribal_oven/wrench_act() + return FALSE + +/obj/machinery/kitchen_machine/crowbar_act() + return FALSE diff --git a/code/modules/food_and_drinks/recipes/recipes_tribal.dm b/code/modules/food_and_drinks/recipes/recipes_tribal.dm new file mode 100644 index 000000000000..39c1cbd37970 --- /dev/null +++ b/code/modules/food_and_drinks/recipes/recipes_tribal.dm @@ -0,0 +1,230 @@ +/datum/recipe/tribal_oven/fine_meal + reagents = list() + items = list( + /obj/item/reagent_containers/food/snacks/monstermeat/goliath, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit + ) + result = /obj/item/reagent_containers/food/snacks/lavaland_food/fine_meal + +/datum/recipe/tribal_oven/freaky_leg + reagents = list() + items = list( + /obj/item/reagent_containers/food/snacks/monstermeat/spiderleg, + /obj/item/reagent_containers/food/snacks/monstermeat/spiderleg, + /obj/item/organ/external/foot + ) + result = /obj/item/reagent_containers/food/snacks/lavaland_food/freaky_leg + +/datum/recipe/tribal_oven/veggie_meal + reagents = list() + items = list( + /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/coaltree_log, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/coaltree_log, + /obj/item/reagent_containers/food/snacks/grown/mushroom/reishi + ) + result = /obj/item/reagent_containers/food/snacks/lavaland_food/veggie_meal + +/datum/recipe/tribal_oven/hunters_treat + reagents = list() + items = list( + /obj/item/organ/internal/heart, + /obj/item/reagent_containers/food/snacks/monstermeat/goliath, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf, + /obj/item/stack/sheet/animalhide/goliath_hide, + /obj/item/reagent_containers/food/snacks/grown/mushroom/reishi, + /obj/item/reagent_containers/food/snacks/grown/mushroom/reishi + ) + result = /obj/item/reagent_containers/food/snacks/lavaland_food/hunters_treat + +/datum/recipe/tribal_oven/yum_grub + reagents = list() + items = list( + /obj/item/reagent_containers/food/snacks/monstermeat/goldgrub, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf + ) + result = /obj/item/reagent_containers/food/snacks/lavaland_food/yum_grub + +/datum/recipe/tribal_oven/ashie_kebab + reagents = list() + items = list( + /obj/item/stack/rods, + /obj/item/organ/internal/liver, + /obj/item/organ/internal/heart, + /obj/item/organ/internal/kidneys, + /obj/item/reagent_containers/food/snacks/monstermeat/spiderleg + ) + result = /obj/item/reagent_containers/food/snacks/lavaland_food/ashie_kebab + +/datum/recipe/tribal_oven/tail_o_dead + reagents = list() + items = list( + /obj/item/organ/external/tail/unathi, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/fireblossom + ) + result = /obj/item/reagent_containers/food/snacks/lavaland_food/tail_o_dead + +/datum/recipe/tribal_oven/cure_curse + reagents = list() + items = list( + /obj/item/kitchen/knife/combat/survival/bone, + /obj/item/organ/internal/heart, + /obj/item/organ/internal/heart/unathi, + ) + result = /obj/item/reagent_containers/food/snacks/lavaland_food/cure_curse + +/datum/recipe/tribal_oven/wings_n_fangs_n_tentacles + reagents = list() + items = list( + /obj/item/crusher_trophy/goliath_tentacle, + /obj/item/crusher_trophy/watcher_wing, + /obj/item/crusher_trophy/fang, + ) + result = /obj/item/reagent_containers/food/snacks/lavaland_food/wings_n_fangs_n_tentacles + +/datum/recipe/tribal_oven/goli_kernels + reagents = list() + items = list( + /obj/item/reagent_containers/food/snacks/monstermeat/goliath, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf + ) + result = /obj/item/reagent_containers/food/snacks/lavaland_food/goli_kernels + byproduct = /obj/item/reagent_containers/food/snacks/lavaland_food/goli_kernels + +/datum/recipe/tribal_oven/beer_grub_stew + reagents = list( + "beer" = 15 + ) + items = list( + /obj/item/reagent_containers/food/snacks/monstermeat/goldgrub, + /obj/item/reagent_containers/food/snacks/grown/mushroom/reishi, + /obj/item/reagent_containers/food/snacks/grown/mushroom/reishi, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit, + ) + result = /obj/item/reagent_containers/food/snacks/lavaland_food/beer_grub_stew + byproduct = /obj/item/reagent_containers/food/snacks/lavaland_food/beer_grub_stew + +/datum/recipe/tribal_oven/thick_red_paste + reagents = list( + "liquidgibs" = 15 + ) + items = list( + /obj/item/reagent_containers/food/snacks/grown/wheat, + /obj/item/reagent_containers/food/snacks/grown/wheat, + /obj/item/reagent_containers/food/snacks/grown/wheat, + /obj/item/reagent_containers/food/snacks/grown/wheat, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf, + ) + result = /obj/item/reagent_containers/food/snacks/lavaland_food/thick_red_paste + byproduct = /obj/item/reagent_containers/food/snacks/lavaland_food/thick_red_paste + +/datum/recipe/tribal_oven/black_blood_sausage + reagents = list( + "liquidgibs" = 15, + "blood" = 10 + ) + items = list( + /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap, + /obj/item/reagent_containers/food/snacks/monstermeat/goliath + ) + result = /obj/item/reagent_containers/food/snacks/lavaland_food/black_blood_sausage + byproduct = /obj/item/reagent_containers/food/snacks/lavaland_food/black_blood_sausage + +/datum/recipe/tribal_oven/xeno_sticks + reagents = list() + items = list( + /obj/item/reagent_containers/food/snacks/monstermeat/xenomeat, + /obj/item/reagent_containers/food/snacks/grown/mushroom/reishi + ) + result = /obj/item/reagent_containers/food/snacks/lavaland_food/xeno_sticks + +/datum/recipe/tribal_oven/soft_meat_cubes + reagents = list() + items = list( + /obj/item/reagent_containers/food/snacks/lavaland/soft_meat + ) + result = /obj/item/reagent_containers/food/snacks/lavaland/soft_meat_cubes + +/datum/recipe/tribal_oven/predatory_fish_slab + reagents = list() + items = list( + /obj/item/reagent_containers/food/snacks/lavaland/predator_meat + ) + result = /obj/item/reagent_containers/food/snacks/lavaland/predatory_fish_slab + +/datum/recipe/tribal_oven/eel_ringlets + reagents = list() + items = list( + /obj/item/reagent_containers/food/snacks/lavaland/eel_filet + ) + result = /obj/item/reagent_containers/food/snacks/lavaland/eel_ringlets + +/datum/recipe/tribal_oven/filet_madras + reagents = list() + items = list( + /obj/item/reagent_containers/food/snacks/lavaland/soft_meat, + /obj/item/reagent_containers/food/snacks/grown/comfrey, + /obj/item/reagent_containers/food/snacks/grown/mushroom/reishi + ) + result = /obj/item/reagent_containers/food/snacks/lavaland_food/filet_madras + +/datum/recipe/tribal_oven/eel_katigo + reagents = list( + "liquidgibs" = 10 + ) + items = list( + /obj/item/reagent_containers/food/snacks/lavaland/eel_filet, + /obj/item/reagent_containers/food/snacks/grown/wheat + ) + result = /obj/item/reagent_containers/food/snacks/lavaland_food/eel_katigo + byproduct = /obj/item/reagent_containers/food/snacks/lavaland_food/eel_katigo + +/datum/recipe/tribal_oven/predatory_chowder + reagents = list( + "water" = 15 + ) + items = list( + /obj/item/reagent_containers/food/snacks/lavaland/predator_meat, + /obj/item/organ/internal/liver, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/fireblossom, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/fireblossom, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/fireblossom + ) + result = /obj/item/reagent_containers/food/snacks/lavaland_food/predatory_chowder + byproduct = /obj/item/reagent_containers/food/snacks/lavaland_food/predatory_chowder + +/datum/recipe/tribal_oven/abu_ghosh + reagents = list( + "bugmilk" = 30 + ) + items = list( + /obj/item/reagent_containers/food/snacks/grown/ash_flora/fireblossom, + /obj/item/reagent_containers/food/snacks/monstermeat/goliath, + /obj/item/reagent_containers/food/snacks/grown/wheat + ) + result = /obj/item/reagent_containers/food/snacks/lavaland_food/abu_ghosh + byproduct = /obj/item/reagent_containers/food/snacks/lavaland_food/abu_ghosh + +/datum/recipe/tribal_oven/thali_lazis + reagents = list() + items = list( + /obj/item/reagent_containers/food/snacks/grown/mushroom/reishi, + /obj/item/crusher_trophy/watcher_wing, + /obj/item/reagent_containers/food/snacks/lavaland/soft_meat, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/fireblossom, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf, + /obj/item/reagent_containers/food/snacks/monstermeat/spiderleg, + /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit, + /obj/item/reagent_containers/food/snacks/monstermeat/goliath + ) + result = /obj/item/storage/lava_tray/full diff --git a/code/modules/games/52card.dm b/code/modules/games/52card.dm index bc05fee2ca0f..82274cc91509 100644 --- a/code/modules/games/52card.dm +++ b/code/modules/games/52card.dm @@ -67,7 +67,7 @@ card_force = 5 card_throwforce = 10 card_throw_speed = 3 - card_attack_verb = list("attacked", "sliced", "diced", "slashed", "cut") + card_attack_verb = list("атаковал", "полоснул", "порезал") card_resistance_flags = NONE diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm index 335650e7363e..7baaff925712 100644 --- a/code/modules/games/cards.dm +++ b/code/modules/games/cards.dm @@ -275,9 +275,9 @@ deckshuffle(user) -/obj/item/deck/AltClick(mob/user) - if(Adjacent(user)) - deckshuffle(user) +/obj/item/deck/click_alt(mob/user) + deckshuffle(user) + return CLICK_ACTION_SUCCESS /obj/item/deck/proc/deckshuffle(mob/user) diff --git a/code/modules/hallucination/_hallucination.dm b/code/modules/hallucination/_hallucination.dm new file mode 100644 index 000000000000..c59b1af61a26 --- /dev/null +++ b/code/modules/hallucination/_hallucination.dm @@ -0,0 +1,123 @@ +/** + * Simple effect that holds an image + * to be shown to one or multiple clients only. + * + * Pass a list of mobs in initialize() that corresponds to all mobs that can see it. + */ +/obj/effect/client_image_holder + invisibility = INVISIBILITY_OBSERVER + anchored = TRUE + + /// A list of mobs which can see us. + var/list/mob/who_sees_us + /// The created image, what we look like. + var/image/shown_image + /// The icon file the image uses. If null, we have no image + var/image_icon + /// The icon state the image uses + var/image_state + /// The x pixel offset of the image + var/image_pixel_x = 0 + /// The y pixel offset of the image + var/image_pixel_y = 0 + /// Optional, the color of the image + var/image_color + /// The layer of the image + var/image_layer = MOB_LAYER + /// The plane of the image + var/image_plane = GAME_PLANE + +/obj/effect/client_image_holder/Initialize(mapload, list/mobs_which_see_us) + . = ..() + if(isnull(mobs_which_see_us)) + stack_trace("Client image holder was created with no mobs to see it.") + return INITIALIZE_HINT_QDEL + + shown_image = generate_image() + + if(!islist(mobs_which_see_us)) + mobs_which_see_us = list(mobs_which_see_us) + + who_sees_us = list() + for(var/mob/seer as anything in mobs_which_see_us) + RegisterSignal(seer, COMSIG_MOB_LOGIN, PROC_REF(show_image_to)) + RegisterSignal(seer, COMSIG_QDELETING, PROC_REF(remove_seer)) + who_sees_us += seer + show_image_to(seer) + +/obj/effect/client_image_holder/Destroy(force) + if(shown_image) + for(var/mob/seer as anything in who_sees_us) + remove_seer(seer) + shown_image = null + + who_sees_us.Cut() // probably not needed but who knows + return ..() + +/obj/effect/client_image_holder/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents) + . = ..() + if(QDELETED(src) || same_z_layer) + return + SET_PLANE(shown_image, PLANE_TO_TRUE(shown_image.plane), new_turf) + +/// Signal proc to clean up references if people who see us are deleted. +/obj/effect/client_image_holder/proc/remove_seer(mob/source) + SIGNAL_HANDLER + + UnregisterSignal(source, list(COMSIG_MOB_LOGIN, COMSIG_QDELETING)) + hide_image_from(source) + who_sees_us -= source + + // No reason to exist, anymore + if(!QDELETED(src) && !length(who_sees_us)) + qdel(src) + +/// Generates the image which we take on. +/obj/effect/client_image_holder/proc/generate_image() + var/image/created = image(image_icon, src, image_state, image_layer, dir = src.dir) + SET_PLANE_EXPLICIT(created, image_plane, src) + created.pixel_x = image_pixel_x + created.pixel_y = image_pixel_y + if(image_color) + created.color = image_color + return created + +/// Shows the image we generated to the passed mob +/obj/effect/client_image_holder/proc/show_image_to(mob/show_to) + SIGNAL_HANDLER + + show_to.client?.images |= shown_image + +/// Hides the image we generated from the passed mob +/obj/effect/client_image_holder/proc/hide_image_from(mob/hide_from) + SIGNAL_HANDLER + + hide_from.client?.images -= shown_image + +/// Simple helper for refreshing / showing the image to everyone in our list. +/obj/effect/client_image_holder/proc/regenerate_image() + for(var/mob/seer as anything in who_sees_us) + hide_image_from(seer) + + shown_image = generate_image() + + for(var/mob/seer as anything in who_sees_us) + show_image_to(seer) + +// Whenever we perform icon updates, regenerate our image +/obj/effect/client_image_holder/update_icon(updates = ALL) + . = ..() + regenerate_image() + +// If we move for some reason, regenerate our image +/obj/effect/client_image_holder/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE) + . = ..() + if(!loc) + return + regenerate_image() + +/obj/effect/client_image_holder/singularity_pull() + return + +/obj/effect/client_image_holder/singularity_act() + return diff --git a/code/modules/holiday/holiday.dm b/code/modules/holiday/holiday.dm index 4e96b111d489..d6c49e85d0b3 100644 --- a/code/modules/holiday/holiday.dm +++ b/code/modules/holiday/holiday.dm @@ -352,7 +352,7 @@ GLOBAL_VAR_INIT(new_year_celebration, FALSE) /client/proc/Set_Holiday(T as text|null) set name = "Set Holiday" - set category = "Event" + set category = "Admin.Event" set desc = "Force-set the Holiday variable to make the game think it's a certain day." if(!check_rights(R_SERVER)) return diff --git a/code/modules/holiday/new_year.dm b/code/modules/holiday/new_year.dm index 4d5163b3201c..15fe603c8aef 100644 --- a/code/modules/holiday/new_year.dm +++ b/code/modules/holiday/new_year.dm @@ -103,9 +103,9 @@ new /obj/effect/snow(T) /obj/item/ammo_casing/magic/frost - projectile_type = /obj/item/projectile/magic/frost + projectile_type = /obj/projectile/magic/frost -/obj/item/projectile/magic/frost +/obj/projectile/magic/frost name = "bolt of frost" icon_state = "ice_2" hitsound = 'sound/effects/hit_on_shattered_glass.ogg' @@ -113,13 +113,13 @@ armour_penetration = 100 flag = "magic" -/obj/item/projectile/magic/frost/on_hit(atom/target, blocked, hit_zone) +/obj/projectile/magic/frost/on_hit(atom/target, blocked, hit_zone) . = ..() if(isliving(target)) var/mob/living/victim = target freeze(victim) -/obj/item/projectile/magic/frost/proc/freeze(mob/living/target) +/obj/projectile/magic/frost/proc/freeze(mob/living/target) target.apply_status_effect(/datum/status_effect/freon/frost) /datum/status_effect/freon/frost diff --git a/code/modules/holomaps/datum.dm b/code/modules/holomaps/datum.dm new file mode 100644 index 000000000000..e0c732fc7424 --- /dev/null +++ b/code/modules/holomaps/datum.dm @@ -0,0 +1,102 @@ +// Simple datum to keep track of a running holomap. Each machine capable of displaying the holomap will have one. +/datum/station_holomap + var/image/base_map + var/image/cursor + + var/list/overlay_data = list() + var/list/disabled_overlays = list() + var/total_legend_y + + /// This set to TRUE when the station map is initialized on a zLevel that doesn't have its own icon formatted for use by station holomaps. + var/bogus = TRUE + var/turf/location_turf + var/map_z + +/datum/station_holomap/New() + . = ..() + cursor = image('icons/misc/8x8.dmi', "you") + +/datum/station_holomap/proc/initialize_holomap(turf/T, current_z_level, mob/user = null, reinit_base_map = FALSE, extra_overlays = list()) + bogus = FALSE + location_turf = T + map_z = current_z_level + + if(!("[HOLOMAP_EXTRA_STATIONMAP]_[map_z]" in SSholomaps.extra_holomaps)) + initialize_holomap_bogus() + return + + if(!base_map || reinit_base_map) + base_map = image(SSholomaps.extra_holomaps["[HOLOMAP_EXTRA_STATIONMAP]_[map_z]"]) + + if(isAI(user) || isAIEye(user)) + var/turf/eye_turf = get_turf(user?.client?.eye) + if(eye_turf) + location_turf = eye_turf + + update_map(extra_overlays) + +/datum/station_holomap/proc/generate_legend(list/overlays_to_use = list()) + var/legend_y = HOLOMAP_LEGEND_Y + for(var/list/overlay_name as anything in overlays_to_use) + var/image/overlay_icon = overlays_to_use[overlay_name]["icon"] + + overlay_icon.pixel_x = HOLOMAP_LEGEND_X + overlay_icon.pixel_y = legend_y + overlay_icon.maptext = MAPTEXT("[overlay_name]") + overlay_icon.maptext_x = 10 + overlay_icon.maptext_width = 64 + base_map.add_overlay(overlay_icon) + + if(length(overlays_to_use[overlay_name]["markers"])) + overlay_data["[round(legend_y / 10)]"] = overlay_name + + if(overlay_name in disabled_overlays) + var/image/disabled_marker = image('icons/misc/8x8.dmi', "legend_cross") + disabled_marker.pixel_x = HOLOMAP_LEGEND_X + disabled_marker.pixel_y = legend_y + base_map.add_overlay(disabled_marker) + + legend_y += 10 + + total_legend_y = legend_y + +/// Updates the map with the provided overlays, with any, removing any overlays it already had that aren't the cursor or legend. +/// If there is no turf, then it doesn't add the cursor or legend back. +/// Make sure to set the pixel x and y of your overlays, or they'll render in the far bottom left. +/datum/station_holomap/proc/update_map(list/overlays_to_use = list()) + base_map.cut_overlays() + + if(bogus) + var/image/legend = image('icons/misc/64x64.dmi', "notfound") + legend.pixel_x = 192 + legend.pixel_y = 224 + base_map.add_overlay(legend) + return + + if(location_turf && location_turf.z == map_z && is_station_level(location_turf.z)) + cursor.pixel_x = location_turf.x - 3 + HOLOMAP_CENTER_X + cursor.pixel_y = location_turf.y - 3 + HOLOMAP_CENTER_Y + + base_map.add_overlay(cursor) + overlays_to_use["Вы здесь"] = list( + "icon" = image('icons/misc/8x8.dmi', "you"), + "markers" = list() + ) + + for(var/overlay as anything in overlays_to_use) + if(overlay in disabled_overlays) + continue + + for(var/image/map_layer in overlays_to_use[overlay]["markers"]) + base_map.add_overlay(map_layer) + + generate_legend(overlays_to_use) + +/datum/station_holomap/proc/reset_map() + disabled_overlays = list() + +/datum/station_holomap/proc/initialize_holomap_bogus() + bogus = TRUE + base_map = image('icons/misc/480x480.dmi', "stationmap") + + update_map() diff --git a/code/modules/holomaps/hud.dm b/code/modules/holomaps/hud.dm new file mode 100644 index 000000000000..55a06f57cf58 --- /dev/null +++ b/code/modules/holomaps/hud.dm @@ -0,0 +1,72 @@ +/datum/hud + var/atom/movable/screen/holomap/holomap + +/datum/hud/New(mob/owner) + . = ..() + + holomap = new /atom/movable/screen/holomap() + holomap.name = "holomap" + holomap.icon = null + holomap.screen_loc = ui_holomap + holomap.mouse_opacity = MOUSE_OPACITY_ICON + + +/atom/movable/screen/holomap + /// The owner. Used to get z-level data. + var/obj/machinery/station_map/used_station_map + var/image/used_base_map + +/atom/movable/screen/holomap/Click(location, control, params) + . = ..() + if(!used_station_map) + return + + if(LAZYACCESS(params2list(params), RIGHT_CLICK)) + used_station_map.close_map() + return + + var/list/modifiers = params2list(params) + var/icon_x = text2num(LAZYACCESS(modifiers, "icon-x")) + var/icon_y = text2num(LAZYACCESS(modifiers, "icon-y")) + + if(icon_x < HOLOMAP_LEGEND_X || icon_x > HOLOMAP_LEGEND_X + HOLOMAP_LEGEND_WIDTH || icon_y < HOLOMAP_LEGEND_Y || icon_y > used_station_map.holomap_datum.total_legend_y) + return + + var/selected_entry = round(icon_y / 10, 1) - 1 // Always round for a whole number, and subtract one cause I have no fucking idea what I'm doing + var/list/overlay_data = used_station_map.holomap_datum.overlay_data + + if(!("[selected_entry]" in overlay_data)) + return + + var/list/disabled_overlays = used_station_map.holomap_datum.disabled_overlays + + if(overlay_data["[selected_entry]"] in disabled_overlays) + disabled_overlays -= overlay_data["[selected_entry]"] + else + disabled_overlays += overlay_data["[selected_entry]"] + + used_station_map.holomap_datum.update_map(used_station_map.handle_overlays()) + +/atom/movable/screen/holomap/MouseEntered(location, control, params) + . = ..() + MouseMove(location, control, params) + +/atom/movable/screen/holomap/MouseMove(location, control, params) + if(!used_station_map) + return + + var/list/modifiers = params2list(params) + var/icon_x = text2num(LAZYACCESS(modifiers, "icon-x")) + var/icon_y = text2num(LAZYACCESS(modifiers, "icon-y")) + var/list/position_to_name = SSholomaps.holomap_position_to_name["[used_station_map.current_z_level]"] + + if(!position_to_name || !usr.hud_used) + return + + var/text_for_screentip = position_to_name["[icon_x]:[icon_y]"] + + used_base_map.maptext = MAPTEXT_TINY_UNICODE("[text_for_screentip]") + used_base_map.maptext_x = icon_x + used_base_map.maptext_y = icon_y + used_base_map.maptext_width = 96 + used_base_map.maptext_height = 96 diff --git a/code/modules/holomaps/machinery.dm b/code/modules/holomaps/machinery.dm new file mode 100644 index 000000000000..e75f10e3ca50 --- /dev/null +++ b/code/modules/holomaps/machinery.dm @@ -0,0 +1,403 @@ +#define HOLOMAP_LOW_LIGHT 1, 2 +#define HOLOMAP_HIGH_LIGHT 2, 3 +#define HOLOMAP_LIGHT_OFF 0 + +// Wall mounted holomap of the station +// Credit to polaris for the code which this current map was originally based off of, and credit to VG for making it in the first place. + +/obj/machinery/station_map + name = "\improper station holomap" + desc = "A virtual map of the surrounding station." + icon = 'icons/obj/stationmap.dmi' + icon_state = "station_map" + layer = ABOVE_WINDOW_LAYER + use_power = IDLE_POWER_USE + idle_power_usage = 16 + active_power_usage = 128 + light_color = HOLOMAP_HOLOFIER + anchored = TRUE + + /// The mob beholding this marvel. + var/mob/watching_mob + /// The mob we're looking after if moved. Used by AI eye only. + var/mob/moving_mob + /// The image that can be seen in-world. + var/image/small_station_map + /// The little "map" floor painting. + var/image/floor_markings + + // zLevel which the map is a map for. Change this to have mapload holomaps look at other zlevels. + var/current_z_level + + /// The various images and icons for the map are stored in here, as well as the actual big map itself. + var/datum/station_holomap/holomap_datum + +/obj/machinery/station_map/Initialize() + if(!current_z_level) + current_z_level = loc.z + SSholomaps.station_holomaps += src + floor_markings = image('icons/obj/stationmap.dmi', "decal_station_map") + floor_markings.dir = src.dir + floor_markings.pixel_x = -src.pixel_x + floor_markings.pixel_y = -src.pixel_y + add_overlay(floor_markings) + ..() + component_parts = list() + component_parts += new /obj/item/circuitboard/machine/station_map(null) + component_parts += new /obj/item/stock_parts/scanning_module(null) + component_parts += new /obj/item/stock_parts/scanning_module(null) + component_parts += new /obj/item/stock_parts/scanning_module(null) + component_parts += new /obj/item/stock_parts/micro_laser(null) + component_parts += new /obj/item/stock_parts/micro_laser(null) + component_parts += new /obj/item/stock_parts/micro_laser(null) + component_parts += new /obj/item/stock_parts/micro_laser(null) + + return INITIALIZE_HINT_LATELOAD + +/obj/machinery/station_map/LateInitialize() + . = ..() + if(SSholomaps.initialized) + setup_holomap() + +/obj/machinery/station_map/Destroy() + SSholomaps.station_holomaps -= src + close_map() + QDEL_NULL(holomap_datum) + . = ..() + +/obj/machinery/station_map/proc/setup_holomap() + holomap_datum = new() + var/turf/current_turf = get_turf(src) + + holomap_datum.initialize_holomap(current_turf, current_z_level, reinit_base_map = TRUE, extra_overlays = handle_overlays()) + + + update_icon() + +/obj/machinery/station_map/attack_hand(mob/user) + if(user == watching_mob) + close_map(user) + return + + if(watching_mob && watching_mob != user) + to_chat(user, span_warning("Someone else is currently watching the holomap.")) + return + + open_map(user) + +/// Tries to open the map for the given mob. Returns FALSE if it doesn't meet the criteria, TRUE if the map successfully opened with no runtimes. +/obj/machinery/station_map/proc/open_map(mob/user) + if(!anchored || (stat & (NOPOWER | BROKEN)) || !user?.client || panel_open || user.hud_used.holomap.used_station_map) + return FALSE + + if(!holomap_datum) + setup_holomap() + if(!holomap_datum) + // Something is very wrong if we have to un-fuck ourselves here. + stack_trace("Holomap at [COORD(src)] couldn't setup holomap_datum.") + to_chat(user, span_warning("[src] glitches out and shows a message:\"ERROR: NTOS is not responding.\"")) + return + + holomap_datum.update_map(handle_overlays()) + + var/datum/hud/human/user_hud = user.hud_used + holomap_datum.base_map.loc = user_hud.holomap // Put the image on the holomap hud + holomap_datum.base_map.alpha = 0 // Set to transparent so we can fade in + if(isAI(user)) + var/mob/living/silicon/ai/our_ai = user + moving_mob = our_ai.eyeobj + RegisterSignal(moving_mob, COMSIG_AI_EYE_MOVED, PROC_REF(check_position)) + else + RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(check_position)) + + playsound(src, 'sound/effects/holomap_open.ogg', 125) + animate(holomap_datum.base_map, alpha = 255, time = 5, easing = LINEAR_EASING) + icon_state = "station_map_active" + set_light(HOLOMAP_HIGH_LIGHT) + + user.hud_used.holomap.used_station_map = src + user.hud_used.holomap.used_base_map = holomap_datum.base_map + user.hud_used.holomap.mouse_opacity = MOUSE_OPACITY_ICON + user.client.screen |= user.hud_used.holomap + user.client.images |= holomap_datum.base_map + + watching_mob = user + use_power = ACTIVE_POWER_USE + + if(holomap_datum.bogus) + to_chat(user, span_warning("The holomap failed to initialize. This area of space cannot be mapped.")) + else + to_chat(user, span_warning("A hologram of the station appears before your eyes.")) + + return TRUE + +/obj/machinery/station_map/attack_ai(mob/living/silicon/robot/user) + attack_hand(user) + +/obj/machinery/station_map/attack_robot(mob/user) + attack_hand(user) + +/obj/machinery/station_map/process() + if((stat & (NOPOWER | BROKEN)) || !anchored) + close_map() + +/obj/machinery/station_map/proc/check_position(mob/moved_mob) + SIGNAL_HANDLER + + if(!moved_mob || (moved_mob.loc != loc) || (dir != moved_mob.dir)) + close_map() + +/obj/machinery/station_map/proc/close_map() + if(!watching_mob) + return + + UnregisterSignal(moving_mob, COMSIG_AI_EYE_MOVED) + UnregisterSignal(watching_mob, COMSIG_MOVABLE_MOVED) + playsound(src, 'sound/effects/holomap_close.ogg', 125) + icon_state = initial(icon_state) + if(watching_mob?.client) + animate(holomap_datum.base_map, alpha = 0, time = 5, easing = LINEAR_EASING) + spawn(5) //we give it time to fade out + watching_mob.client?.screen -= watching_mob.hud_used.holomap + watching_mob.client?.images -= holomap_datum.base_map + watching_mob.hud_used.holomap.used_station_map = null + watching_mob.hud_used.holomap.used_base_map = null + watching_mob = null + set_light(HOLOMAP_LOW_LIGHT) + + use_power = IDLE_POWER_USE + holomap_datum.reset_map() + +/obj/machinery/station_map/power_change() + . = ..() + update_icon() + + if(stat & NOPOWER) + set_light(HOLOMAP_LIGHT_OFF) + else + set_light(HOLOMAP_LOW_LIGHT) + +/obj/machinery/station_map/proc/set_broken() + stat |= BROKEN + update_icon() + +/obj/machinery/station_map/update_icon() + . = ..() + if(!holomap_datum) + return //Not yet. + + cut_overlays() + if(stat & BROKEN) + icon_state = "station_map_broken" + else if(panel_open) + icon_state = "station_map_opened" + else if((stat & NOPOWER) || !anchored) + icon_state = "station_map_off" + else + icon_state = initial(icon_state) + + if(!holomap_datum.bogus) + small_station_map = image(SSholomaps.extra_holomaps["[HOLOMAP_EXTRA_STATIONMAPSMALL]_[current_z_level]"], dir = src.dir) + add_overlay(small_station_map) + + // Put the little "map" overlay down where it looks nice + if(floor_markings) + floor_markings.dir = src.dir + floor_markings.pixel_x = -src.pixel_x + floor_markings.pixel_y = -src.pixel_y + add_overlay(floor_markings) + +/obj/machinery/station_map/screwdriver_act(mob/living/user, obj/item/tool) + if(!default_deconstruction_screwdriver(user, "station_map_opened", "station_map_off", tool)) + return FALSE + + close_map() + update_icon() + + if(!panel_open) + setup_holomap() + + return TRUE + +/obj/machinery/station_map/multitool_act(mob/living/user, obj/item/tool) + if(!panel_open) + to_chat(user, span_warning("You need to open the panel to change the [src]'[p_s()] settings!")) + return FALSE + if(!SSholomaps.valid_map_indexes.len > 1) + to_chat(user, span_warning("There are no other maps available for [src]!")) + return FALSE + + tool.play_tool_sound(user, 50) + var/current_index = SSholomaps.valid_map_indexes.Find(current_z_level) + if(current_index >= SSholomaps.valid_map_indexes.len) + current_z_level = SSholomaps.valid_map_indexes[1] + else + current_z_level = SSholomaps.valid_map_indexes[current_index + 1] + + to_chat(user, span_info("You set the [src]'[p_s()] database index to [current_z_level].")) + return TRUE + +/obj/machinery/station_map/crowbar_act(mob/living/user, obj/item/tool) + return default_deconstruction_crowbar(user, tool) + +/obj/machinery/station_map/wrench_act(mob/living/user, obj/item/tool) + tool.play_tool_sound(user, 50) + if(!panel_open) + set_anchored(!anchored) + return TRUE + rotate_map(-90) + return TRUE + +/// Rotates the map machine by the given amount of degrees. See byond's builtin `turn` for more info. +/obj/machinery/station_map/proc/rotate_map(direction) + dir = turn(dir, direction) + switch(dir) + if(NORTH) + pixel_x = 0 + pixel_y = 32 + if(SOUTH) + pixel_x = 0 + pixel_y = -32 + if(EAST) + pixel_x = 32 + pixel_y = 0 + if(WEST) + pixel_x = -32 + pixel_y = 0 + + update_icon() // Required to refresh the small map icon. + +/obj/machinery/station_map/emp_act(severity) + if(severity == EMP_LIGHT && !prob(50)) + return + + do_sparks(8, TRUE, src) + set_broken() + +/obj/machinery/station_map/proc/handle_overlays() + // Each entry in this list contains the text for the legend, and the icon and icon_state use. Null or non-existent icon_state ignore hiding logic. + // If an entry contains an icon, + var/list/legend = list() + GLOB.holomap_default_legend + + var/list/z_transitions = SSholomaps.holomap_z_transitions["[current_z_level]"] + if(length(z_transitions)) + legend += z_transitions + + if(length(GLOB.meteor_shielded_turfs)) + var/icon/canvas = icon(HOLOMAP_ICON, "blank") + var/z_has_coverage = FALSE + for(var/turf/shielded_turf as anything in GLOB.meteor_shielded_turfs) + if(shielded_turf?.z != current_z_level) + continue + var/offset_x = HOLOMAP_CENTER_X + shielded_turf.x + var/offset_y = HOLOMAP_CENTER_Y + shielded_turf.y + var/color = ((offset_x ^ offset_y) % 2 == 0) ? HOLOMAP_AREACOLOR_SHIELD_1 : HOLOMAP_AREACOLOR_SHIELD_2 + canvas.DrawBox(color, offset_x, offset_y) + z_has_coverage = TRUE + if(z_has_coverage) + legend["Метеор щиты"] = list("icon" = image('icons/misc/8x8.dmi', icon_state = "meteor_shield"), "markers" = list(image(canvas))) + return legend + +/obj/machinery/station_map/engineering + name = "\improper engineering station map" + icon_state = "station_map_engi" + +/obj/machinery/station_map/engineering/Initialize(mapload) + ..() + component_parts = list() + component_parts += new /obj/item/circuitboard/machine/station_map/engineering(null) + component_parts += new /obj/item/stock_parts/scanning_module(null) + component_parts += new /obj/item/stock_parts/scanning_module(null) + component_parts += new /obj/item/stock_parts/scanning_module(null) + component_parts += new /obj/item/stock_parts/micro_laser(null) + component_parts += new /obj/item/stock_parts/micro_laser(null) + component_parts += new /obj/item/stock_parts/micro_laser(null) + component_parts += new /obj/item/stock_parts/micro_laser(null) + component_parts += new /obj/item/stack/ore/bluespace_crystal/artificial(null) + +/obj/machinery/station_map/engineering/attack_hand(mob/user) + . = ..() + if(.) + holomap_datum.update_map(handle_overlays()) + +/obj/machinery/station_map/engineering/handle_overlays() + var/list/extra_overlays = ..() + if(holomap_datum.bogus) + return extra_overlays + + var/list/fire_alarms = list() + for(var/obj/machinery/firealarm/alarm as anything in GLOB.station_fire_alarms["[current_z_level]"]) + if(alarm?.z == current_z_level && alarm?.myArea?.fire) + var/image/alarm_icon = image('icons/misc/8x8.dmi', icon_state = "fire_marker") + alarm_icon.pixel_x = alarm.x + HOLOMAP_CENTER_X - 1 + alarm_icon.pixel_y = alarm.y + HOLOMAP_CENTER_Y + fire_alarms += alarm_icon + + if(length(fire_alarms)) + extra_overlays["Fire Alarms"] = list("icon" = image('icons/misc/8x8.dmi', icon_state = "fire_marker"), "markers" = fire_alarms) + + /* + var/list/air_alarms = list() + for(var/obj/machinery/airalarm/air_alarm in GLOB.machines) + var/area/alarms = get_area(air_alarm) + if(air_alarm?.z == current_z_level && alarms?.atmosalm) //Altered it to fire_alam since we don't have an area variable on air_alarms + var/image/alarm_icon = image('icons/misc/8x8.dmi', "atmos_marker") + alarm_icon.pixel_x = air_alarm.x + HOLOMAP_CENTER_X - 1 + alarm_icon.pixel_y = air_alarm.y + HOLOMAP_CENTER_Y + air_alarms += alarm_icon + + if(length(air_alarms)) + extra_overlays["Air Alarms"] = list("icon" = image('icons/misc/8x8.dmi', "atmos_marker"), "markers" = air_alarms) + */ + + return extra_overlays + +/obj/item/circuitboard/machine/station_map + name = "Station Map" + build_path = /obj/machinery/station_map/directional/north + origin_tech = "programming=2;engineering=2" + req_components = list(/obj/item/stock_parts/scanning_module = 3, /obj/item/stock_parts/micro_laser = 4) + +/obj/item/circuitboard/machine/station_map/engineering + name = "Engineering Station Map" + desc = "A virtual map of the surrounding station. Also shows any active fire and atmos alarms." + build_path = /obj/machinery/station_map/engineering/directional/north + origin_tech = "programming=4;engineering=4" + req_components = list(/obj/item/stock_parts/scanning_module = 3, /obj/item/stock_parts/micro_laser = 4, /obj/item/stack/ore/bluespace_crystal = 1) + +// Directional Ones for Mapping // +/obj/machinery/station_map/directional/north + dir = NORTH + pixel_y = 32 + +/obj/machinery/station_map/directional/south + dir = SOUTH + pixel_y = -32 + +/obj/machinery/station_map/directional/west + dir = WEST + pixel_x = -32 + +/obj/machinery/station_map/directional/east + dir = EAST + pixel_x = 32 + +/obj/machinery/station_map/engineering/directional/north + dir = NORTH + pixel_y = 32 + +/obj/machinery/station_map/engineering/directional/south + dir = SOUTH + pixel_y = -32 + +/obj/machinery/station_map/engineering/directional/west + dir = WEST + pixel_x = -32 + +/obj/machinery/station_map/engineering/directional/east + dir = EAST + pixel_x = 32 + +#undef HOLOMAP_LOW_LIGHT +#undef HOLOMAP_HIGH_LIGHT +#undef HOLOMAP_LIGHT_OFF diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm index 8dbf541e0d13..28137907f7fa 100644 --- a/code/modules/hydroponics/fermenting_barrel.dm +++ b/code/modules/hydroponics/fermenting_barrel.dm @@ -99,3 +99,4 @@ reqs = list(/obj/item/stack/sheet/wood = 30) time = 50 category = CAT_PRIMAL + subcategory = CAT_MISC2 diff --git a/code/modules/hydroponics/grown/cotton.dm b/code/modules/hydroponics/grown/cotton.dm index cfc9fa948999..8d7e30a48e96 100644 --- a/code/modules/hydroponics/grown/cotton.dm +++ b/code/modules/hydroponics/grown/cotton.dm @@ -27,7 +27,7 @@ w_class = WEIGHT_CLASS_TINY throw_speed = 2 throw_range = 3 - attack_verb = list("pomfed") + attack_verb = list("тыкнул") var/cotton_type = /obj/item/stack/sheet/cotton var/cotton_name = "raw cotton" @@ -78,6 +78,6 @@ w_class = WEIGHT_CLASS_NORMAL throw_speed = 2 throw_range = 3 - attack_verb = list("bashed", "battered", "bludgeoned", "whacked") + attack_verb = list("ударил", "огрел") cotton_type = /obj/item/stack/sheet/cotton/durathread cotton_name = "raw durathread" diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm index 295d08d7995a..40df5fcbb6a8 100644 --- a/code/modules/hydroponics/grown/flowers.dm +++ b/code/modules/hydroponics/grown/flowers.dm @@ -255,7 +255,7 @@ w_class = WEIGHT_CLASS_TINY throw_speed = 1 throw_range = 3 - attack_verb = list("roasted", "scorched", "burned") + attack_verb = list("обжарил", "опалил", "ужалил") /obj/item/grown/novaflower/add_juice() ..() diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index 9fefc140507e..15b8157362ec 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -37,6 +37,17 @@ qdel(src) return TRUE +/obj/item/seeds/kudzu/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/seeds/kudzu)) + var/obj/item/seeds/kudzu/AttackerSeed = I + mutations |= AttackerSeed.mutations + + add_fingerprint(user) + qdel(I) + return ATTACK_CHAIN_BLOCKED_ALL + + return ..() + /obj/item/seeds/kudzu/attack_self(mob/user) if(plant(user)) to_chat(user, "You plant the kudzu. You monster.") diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm index de869287a352..2bb0b6c0ea61 100644 --- a/code/modules/hydroponics/grown/nettle.dm +++ b/code/modules/hydroponics/grown/nettle.dm @@ -41,7 +41,7 @@ throw_speed = 1 throw_range = 3 origin_tech = "combat=3" - attack_verb = list("stung") + attack_verb = list("ужалил") /obj/item/grown/nettle/suicide_act(mob/user) user.visible_message("[user] is eating some of the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.") diff --git a/code/modules/hydroponics/grown/pineapple.dm b/code/modules/hydroponics/grown/pineapple.dm index aa1946aee4ef..fda348d0e7ef 100644 --- a/code/modules/hydroponics/grown/pineapple.dm +++ b/code/modules/hydroponics/grown/pineapple.dm @@ -22,7 +22,7 @@ force = 4 throwforce = 8 hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("stung", "pined") + attack_verb = list("стукнул") throw_speed = 1 throw_range = 5 slice_path = /obj/item/reagent_containers/food/snacks/pineappleslice diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index c84615e784f5..69b730140d81 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -42,7 +42,7 @@ throw_speed = 2 throw_range = 3 origin_tech = "materials=1" - attack_verb = list("bashed", "battered", "bludgeoned", "whacked") + attack_verb = list("ударил", "огрел") var/plank_type = /obj/item/stack/sheet/wood var/plank_name = "wooden planks" var/static/list/accepted = typecacheof(list( @@ -222,7 +222,7 @@ update_icon(UPDATE_OVERLAYS) // update underlays some day return ATTACK_CHAIN_PROCEED_SUCCESS - if(is_hot(I) && StartBurning()) + if(I.get_heat() && StartBurning()) add_fingerprint(user) lighter = user.ckey add_misc_logs(user, "lit a bonfire", src) diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 742ab6fe446a..2cd1f6364ba4 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -16,9 +16,17 @@ // ************************************* /obj/item/reagent_containers/spray/weedspray // -- Skie - desc = "It's a toxic mixture, in spray form, to kill small weeds." - icon = 'icons/obj/hydroponics/equipment.dmi' name = "weed spray" + desc = "Распылитель средства от сорняков - атразина." + ru_names = list( + NOMINATIVE = "распылитель средства от сорняков", + GENITIVE = "распылителя средства от сорняков", + DATIVE = "распылителю средства от сорняков", + ACCUSATIVE = "распылитель средства от сорняков", + INSTRUMENTAL = "распылителем средства от сорняков", + PREPOSITIONAL = "распылителе средства от сорняков" + ) + icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "weedspray" item_state = "plantbgone" volume = 100 @@ -31,13 +39,21 @@ list_reagents = list("atrazine" = 100) /obj/item/reagent_containers/spray/weedspray/suicide_act(mob/user) - user.visible_message("[user] is huffing the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.") + user.visible_message(span_suicide("[user] жадно вдыха[pluralize_ru(user.gender, "ет", "ют")] содержимое [declent_ru(GENITIVE)]! Кажется, что это попытка самоубийства!")) return TOXLOSS /obj/item/reagent_containers/spray/pestspray // -- Skie - desc = "It's some pest eliminator spray! Do not inhale!" - icon = 'icons/obj/hydroponics/equipment.dmi' name = "pest spray" + desc = "Распылитель пестицидов для уничтожения вредителей." + ru_names = list( + NOMINATIVE = "распылитель пестицидов", + GENITIVE = "распылителя пестицидов", + DATIVE = "распылителю пестицидов", + ACCUSATIVE = "распылитель пестицидов", + INSTRUMENTAL = "распылителем пестицидов", + PREPOSITIONAL = "распылителе пестицидов" + ) + icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "pestspray" item_state = "plantbgone" volume = 100 @@ -50,7 +66,7 @@ list_reagents = list("pestkiller" = 100) /obj/item/reagent_containers/spray/pestspray/suicide_act(mob/user) - user.visible_message("[user] is huffing the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.") + user.visible_message(span_suicide("[user] жадно вдыха[pluralize_ru(user.gender, "ет", "ют")] содержимое [declent_ru(GENITIVE)]! Кажется, что это попытка самоубийства!")) return TOXLOSS /obj/item/cultivator @@ -66,7 +82,7 @@ toolspeed = 0.5 w_class = WEIGHT_CLASS_SMALL materials = list(MAT_METAL=50) - attack_verb = list("slashed", "sliced", "cut", "clawed") + attack_verb = list("полоснул", "порезал", "поцарапал") hitsound = 'sound/weapons/bladeslice.ogg' /obj/item/cultivator/rake @@ -75,12 +91,22 @@ toolspeed = 1 belt_icon = null w_class = WEIGHT_CLASS_NORMAL - attack_verb = list("slashed", "sliced", "bashed", "clawed") + attack_verb = list("полоснул", "ударил", "поцарапал") hitsound = null materials = null flags = NONE resistance_flags = FLAMMABLE +/obj/item/cultivator/wooden + icon_state = "cultivator_wooden" + hitsound = null + materials = null + flags = NONE + lefthand_file = 'icons/mob/inhands/lavaland/misc_lefthand.dmi' + righthand_file = 'icons/mob/inhands/lavaland/misc_righthand.dmi' + item_state = "cultivator" + + /obj/item/hatchet name = "hatchet" desc = "A very sharp axe blade upon a short fibremetal handle. It has a long history of chopping things, but now it is used for chopping wood." @@ -95,7 +121,7 @@ throw_range = 4 materials = list(MAT_METAL = 15000) origin_tech = "materials=2;combat=2" - attack_verb = list("chopped", "torn", "cut") + attack_verb = list("рубанул", "поранил", "порезал") hitsound = 'sound/weapons/bladeslice.ogg' sharp = 1 embed_chance = 70 @@ -112,7 +138,7 @@ icon_state = "unathiknife" item_state = "unathiknife" belt_icon = null - attack_verb = list("ripped", "torn", "cut") + attack_verb = list("поранил", "порезал") /obj/item/hatchet/wooden name = "wooden hatchet" @@ -121,6 +147,9 @@ belt_icon = "wooden_hatchet" materials = null flags = NONE + lefthand_file = 'icons/mob/inhands/lavaland/misc_lefthand.dmi' + righthand_file = 'icons/mob/inhands/lavaland/misc_righthand.dmi' + item_state = "small_shovel" /obj/item/scythe icon_state = "scythe0" @@ -135,7 +164,7 @@ armour_penetration = 20 slot_flags = ITEM_SLOT_BACK origin_tech = "materials=3;combat=2" - attack_verb = list("chopped", "sliced", "cut", "reaped") + attack_verb = list("рубанул", "порезал", "скосил") hitsound = 'sound/weapons/bladeslice.ogg' sharp = 1 embed_chance = 15 @@ -187,7 +216,7 @@ extend = 0 slot_flags = ITEM_SLOT_BELT origin_tech = "materials=3;combat=3" - attack_verb = list("hit", "poked") + attack_verb = list("ударил", "ткнул") hitsound = "swing_hit" /obj/item/scythe/tele/attack_self(mob/user) @@ -197,7 +226,7 @@ slot_flags = ITEM_SLOT_BACK //won't fit on belt, but can be worn on belt when extended w_class = WEIGHT_CLASS_BULKY //won't fit in backpacks while extended force = 15 //slightly better than normal scythe damage - attack_verb = list("chopped", "sliced", "cut", "reaped") + attack_verb = list("рубанул", "порезал", "скосил") hitsound = 'sound/weapons/bladeslice.ogg' //Extend sound (blade unsheath) playsound(src.loc, 'sound/weapons/blade_unsheath.ogg', 50, 1) //Sound credit to Qat of Freesound.org @@ -206,7 +235,7 @@ slot_flags = ITEM_SLOT_BELT //can be worn on belt again, but no longer makes sense to wear on the back w_class = WEIGHT_CLASS_SMALL force = 3 - attack_verb = list("hit", "poked") + attack_verb = list("ударил", "ткнул") hitsound = "swing_hit" //Collapse sound (blade sheath) playsound(src.loc, 'sound/weapons/blade_sheath.ogg', 50, 1) //Sound credit to Q.K. of Freesound.org @@ -232,7 +261,15 @@ /obj/item/reagent_containers/glass/bottle/nutrient name = "jug of nutrient" - desc = "A decent sized plastic jug." + desc = "Пластиковая канистра для различных жидкостей." + ru_names = list( + NOMINATIVE = "канистра", + GENITIVE = "канистри", + DATIVE = "канистре", + ACCUSATIVE = "канистру", + INSTRUMENTAL = "канистрой", + PREPOSITIONAL = "канистре" + ) icon = 'icons/obj/chemical.dmi' icon_state = "plastic_jug" item_state = "plastic_jug" @@ -294,21 +331,45 @@ /obj/item/reagent_containers/glass/bottle/nutrient/ez name = "jug of E-Z-Nutrient" - desc = "Contains a fertilizer that causes mild mutations with each harvest." + desc = "Пластиковая канистра для различных жидкостей. В ней содержится И-ЗИ-Нутриент." + ru_names = list( + NOMINATIVE = "канистра (И-ЗИ-Нутриент)", + GENITIVE = "канистри (И-ЗИ-Нутриент)", + DATIVE = "канистре (И-ЗИ-Нутриент)", + ACCUSATIVE = "канистру (И-ЗИ-Нутриент)", + INSTRUMENTAL = "канистрой (И-ЗИ-Нутриент)", + PREPOSITIONAL = "канистре (И-ЗИ-Нутриент)" + ) icon = 'icons/obj/chemical.dmi' icon_state = "plastic_jug_ez" list_reagents = list("eznutriment" = 80) /obj/item/reagent_containers/glass/bottle/nutrient/l4z name = "jug of Left 4 Zed" - desc = "Contains a fertilizer that limits plant yields to no more than one and causes significant mutations in plants." + desc = "Пластиковая канистра для различных жидкостей. В ней содержится Лефт-Фо-Зед." + ru_names = list( + NOMINATIVE = "канистра (Лефт-Фо-Зед)", + GENITIVE = "канистри (Лефт-Фо-Зед)", + DATIVE = "канистре (Лефт-Фо-Зед)", + ACCUSATIVE = "канистру (Лефт-Фо-Зед)", + INSTRUMENTAL = "канистрой (Лефт-Фо-Зед)", + PREPOSITIONAL = "канистре (Лефт-Фо-Зед)" + ) icon = 'icons/obj/chemical.dmi' icon_state = "plastic_jug_l4z" list_reagents = list("left4zednutriment" = 80) /obj/item/reagent_containers/glass/bottle/nutrient/rh name = "jug of Robust Harvest" - desc = "Contains a fertilizer that increases the yield of a plant by 30% while causing no mutations." + desc = "Пластиковая канистра для различных жидкостей. В ней содержится Робаст-Харвест." + ru_names = list( + NOMINATIVE = "канистра (Робаст-Харвест)", + GENITIVE = "канистри (Робаст-Харвест)", + DATIVE = "канистре (Робаст-Харвест)", + ACCUSATIVE = "канистру (Робаст-Харвест)", + INSTRUMENTAL = "канистрой (Робаст-Харвест)", + PREPOSITIONAL = "канистре (Робаст-Харвест)" + ) icon = 'icons/obj/chemical.dmi' icon_state = "plastic_jug_rh" list_reagents = list("robustharvestnutriment" = 80) @@ -329,14 +390,50 @@ /obj/item/reagent_containers/glass/bottle/nutrient/killer/weedkiller name = "jug of weed killer" - desc = "Contains a herbicide." + desc = "Пластиковая канистра для различных жидкостей. В ней содержится атразин." + ru_names = list( + NOMINATIVE = "канистра (Атразин)", + GENITIVE = "канистри (Атразин)", + DATIVE = "канистре (Атразин)", + ACCUSATIVE = "канистру (Атразин)", + INSTRUMENTAL = "канистрой (Атразин)", + PREPOSITIONAL = "канистре (Атразин)" + ) icon = 'icons/obj/chemical.dmi' icon_state = "plastic_jug_wk" list_reagents = list("atrazine" = 80) /obj/item/reagent_containers/glass/bottle/nutrient/killer/pestkiller name = "jug of pest spray" - desc = "Contains a pesticide." + desc = "Пластиковая канистра для различных жидкостей. В ней содержатся пестициды." + ru_names = list( + NOMINATIVE = "канистра (Пестициды)", + GENITIVE = "канистри (Пестициды)", + DATIVE = "канистре (Пестициды)", + ACCUSATIVE = "канистру (Пестициды)", + INSTRUMENTAL = "канистрой (Пестициды)", + PREPOSITIONAL = "канистре (Пестициды)" + ) icon = 'icons/obj/chemical.dmi' icon_state = "plastic_jug_pk" list_reagents = list("pestkiller" = 80) + +/obj/item/conductive_organ + name = "conductive organ" + desc = "небольшой желтоватый мешочек, добываемый из лавового панцирника. Является мощным удобрением, значительно повышающим урожай и уровень нутриментов растения." + ru_names = list( + NOMINATIVE = "проводящий орган", + GENITIVE = "проводящего органа", + DATIVE = "проводящему органу", + ACCUSATIVE = "проводящий орган", + INSTRUMENTAL = "проводящим органом", + PREPOSITIONAL = "проводящем органе", + ) + gender = MALE + icon = 'icons/obj/lavaland/lava_fishing.dmi' + icon_state = "conductive_organ" + lefthand_file = 'icons/mob/inhands/lavaland/fish_items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/lavaland/fish_items_righthand.dmi' + item_state = "acid_bladder" //yeah + w_class = WEIGHT_CLASS_TINY + origin_tech = "biotech=6" diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 54dfff3fd4e4..ed94a0afa1be 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -126,10 +126,9 @@ return connected -/obj/machinery/hydroponics/AltClick(mob/living/user) - if(!istype(user) || !Adjacent(user)) - return +/obj/machinery/hydroponics/click_alt(mob/living/user) toggle_lid(user) + return CLICK_ACTION_SUCCESS /obj/machinery/hydroponics/proc/toggle_lid(mob/living/user) @@ -141,14 +140,14 @@ update_state() -/obj/machinery/hydroponics/bullet_act(obj/item/projectile/Proj) //Works with the Somatoray to modify plant variables. +/obj/machinery/hydroponics/bullet_act(obj/projectile/Proj) //Works with the Somatoray to modify plant variables. if(!myseed) return ..() - if(istype(Proj, /obj/item/projectile/energy/floragamma)) + if(istype(Proj, /obj/projectile/energy/floragamma)) make_grow() - else if(istype(Proj, /obj/item/projectile/energy/florabeta)) + else if(istype(Proj, /obj/projectile/energy/florabeta)) myseed.on_floragun_beta_act() - else if(istype(Proj, /obj/item/projectile/energy/floraalpha) && !lid_closed) + else if(istype(Proj, /obj/projectile/energy/floraalpha) && !lid_closed) plantdies() else return ..() @@ -953,6 +952,24 @@ myseed.variant_prompt(user, src) return ATTACK_CHAIN_PROCEED_SUCCESS + if(istype(I, /obj/item/conductive_organ)) + add_fingerprint(user) + if(!myseed) + balloon_alert(user, "внутри нет семян!") + return ATTACK_CHAIN_PROCEED + if(!user.drop_transfer_item_to_loc(I, src)) + return ..() + user.visible_message( + span_notice("[user] аккуратно втира[pluralize_ru(user.gender, "ет", "ют")] [I.declent_ru(ACCUSATIVE)] в [declent_ru(ACCUSATIVE)]."), + span_notice("Вы аккуратно втираете [I.declent_ru(ACCUSATIVE)] в [declent_ru(ACCUSATIVE)]."), + ) + yieldmod = 1.7 + waterlevel = maxwater + nutrilevel = maxnutri + plant_hud_set_nutrient() + plant_hud_set_water() + return ATTACK_CHAIN_PROCEED_SUCCESS + return ..() diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index 3f109317f032..fc8a06e7b6fb 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -513,15 +513,15 @@ dangerous = TRUE /datum/plant_gene/trait/smoke/on_squash(obj/item/reagent_containers/food/snacks/grown/G, atom/target) - var/datum/effect_system/smoke_spread/chem/S = new var/splat_location = get_turf(target) var/smoke_amount = round(sqrt(G.seed.potency * 0.1), 1) - S.set_up(G.reagents, splat_location) var/reglist = "" for(var/datum/reagent/R in G.reagents.reagent_list) reglist += "[R.name] [R.volume], " target.investigate_log("started a chemical smoke, squashing [G]. [reglist]") - addtimer(CALLBACK(S, TYPE_PROC_REF(/datum/effect_system/smoke_spread/chem, start), smoke_amount), 1 * rand(1, 8), TIMER_STOPPABLE | TIMER_DELETE_ME) + var/datum/effect_system/fluid_spread/smoke/chem/smoke = new + smoke.set_up(amount = smoke_amount, location = splat_location, carry = G.reagents) + addtimer(CALLBACK(smoke, TYPE_PROC_REF(/datum/effect_system/fluid_spread/smoke/chem, start)), 1 * rand(1, 8), TIMER_STOPPABLE | TIMER_DELETE_ME) /datum/plant_gene/trait/fire_resistance // Lavaland name = "Fire Resistance" diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index f5457492612b..7bb8b083802e 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -128,8 +128,8 @@ GLOBAL_LIST_EMPTY(plant_seeds) -/obj/item/seeds/bullet_act(obj/item/projectile/Proj) //Works with the Somatoray to modify plant variables. - if(istype(Proj, /obj/item/projectile/energy/florabeta)) +/obj/item/seeds/bullet_act(obj/projectile/Proj) //Works with the Somatoray to modify plant variables. + if(istype(Proj, /obj/projectile/energy/florabeta)) on_floragun_beta_act() else return ..() diff --git a/code/modules/instruments/objs/items/headphones.dm b/code/modules/instruments/objs/items/headphones.dm index 0ba3c4420a65..19a9b9fc8e97 100644 --- a/code/modules/instruments/objs/items/headphones.dm +++ b/code/modules/instruments/objs/items/headphones.dm @@ -3,7 +3,7 @@ desc = "Unce unce unce unce." icon_state = "headphones0" item_state = "headphones0" - slot_flags_2 = ITEM_FLAG_TWOEARS + slot_flags = ITEM_SLOT_EARS actions_types = list(/datum/action/item_action/change_headphones_song) var/datum/song/headphones/song var/on = FALSE @@ -38,10 +38,10 @@ song.ui_interact(user, ui) -/obj/item/clothing/ears/headphones/ui_act(action, params) +/obj/item/clothing/ears/headphones/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) if(..()) return - return song.ui_act(action, params) + return song.ui_act(action, params, ui, state) /obj/item/clothing/ears/headphones/update_icon_state() diff --git a/code/modules/instruments/objs/items/instruments.dm b/code/modules/instruments/objs/items/instruments.dm index b352100d7dc0..887b8725a37c 100644 --- a/code/modules/instruments/objs/items/instruments.dm +++ b/code/modules/instruments/objs/items/instruments.dm @@ -29,7 +29,6 @@ desc = "A 'Mura' brand banjo. It's pretty much just a drum with a neck and strings." icon_state = "banjo" item_state = "banjo" - attack_verb = list("scruggs-styled", "hum-diggitied", "shin-digged", "clawhammered") hitsound = 'sound/weapons/banjoslap.ogg' allowed_instrument_ids = "banjo" @@ -38,7 +37,7 @@ desc = "It's made of wood and has bronze strings." icon_state = "guitar" item_state = "guitar" - attack_verb = list("played metal on", "serenaded", "crashed", "smashed") + attack_verb = list("заметалил", "засеренадил", "грохнул") hitsound = 'sound/weapons/guitarslam.ogg' allowed_instrument_ids = "guitar" @@ -48,7 +47,7 @@ icon_state = "eguitar" item_state = "eguitar" force = 12 - attack_verb = list("played metal on", "shredded", "crashed", "smashed") + attack_verb = list("заметалил", "изничтожил", "грохнул") hitsound = 'sound/weapons/stringsmash.ogg' allowed_instrument_ids = "eguitar" @@ -79,7 +78,7 @@ icon_state = "spectral_trumpet" item_state = "spectral_trumpet" force = 0 - attack_verb = list("played", "jazzed", "trumpeted", "mourned", "dooted", "spooked") + attack_verb = list("заджазил", "затрубил") /obj/item/instrument/trumpet/spectral/Initialize() . = ..() @@ -105,7 +104,7 @@ icon_state = "saxophone" item_state = "saxophone" force = 0 - attack_verb = list("played", "jazzed", "saxxed", "mourned", "dooted", "spooked") + attack_verb = list("заджазил", "засаксил") /obj/item/instrument/saxophone/spectral/Initialize() . = ..() @@ -131,7 +130,7 @@ icon_state = "trombone" item_state = "trombone" force = 0 - attack_verb = list("played", "jazzed", "tromboned", "mourned", "dooted", "spooked") + /obj/item/instrument/trombone/spectral/Initialize() . = ..() @@ -175,7 +174,7 @@ item_state = "bike_horn" lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' righthand_file = 'icons/mob/inhands/items_righthand.dmi' - attack_verb = list("beautifully honks") + attack_verb = list("мелодично хонкнул") w_class = WEIGHT_CLASS_TINY force = 0 throw_speed = 3 diff --git a/code/modules/instruments/objs/structures/drumkit.dm b/code/modules/instruments/objs/structures/drumkit.dm index 61f27b2d1d23..d045046e05e1 100644 --- a/code/modules/instruments/objs/structures/drumkit.dm +++ b/code/modules/instruments/objs/structures/drumkit.dm @@ -90,8 +90,9 @@ if(!anchored) . += span_info("You can Alt-Click [src] to rotate it.") -/obj/structure/musician/drumkit/AltClick(mob/living/user) +/obj/structure/musician/drumkit/click_alt(mob/living/user) rotate(user) + return CLICK_ACTION_SUCCESS /obj/structure/musician/drumkit/proc/rotate(mob/living/user) diff --git a/code/modules/instruments/songs/_song_ui.dm b/code/modules/instruments/songs/_song_ui.dm index 7d13daadb013..2ed481cc988a 100644 --- a/code/modules/instruments/songs/_song_ui.dm +++ b/code/modules/instruments/songs/_song_ui.dm @@ -87,6 +87,10 @@ return if(length(newline) > MUSIC_MAXLINECHARS) newline = copytext(newline, 1, MUSIC_MAXLINECHARS) + + if(!legality_check(user, newline)) + return + lines.Add(newline) if("deleteline") var/num = round(text2num(params["line"])) @@ -98,8 +102,13 @@ var/content = tgui_input_text(user, "Enter your line:", parent.name, lines[num], max_length = MUSIC_MAXLINECHARS) if(!content || !(state.can_use_topic(parent, user) == UI_INTERACTIVE)) return + if(num > length(lines) || num < 1) return + + if(!legality_check(user, content)) + return + lines[num] = content if("stop") stop_playing() @@ -143,6 +152,7 @@ set_dropoff_volume(initial(sustain_dropoff_volume), TRUE) else return FALSE + parent.add_fingerprint(user) /** @@ -150,25 +160,45 @@ */ /datum/song/proc/parse_song(text, mob/user) set waitfor = FALSE - //split into lines stop_playing() - lines = splittext(text, "\n") - if(length(lines)) + //split into lines + var/list/lines_to_add = splittext(text, "\n") + if(length(lines_to_add)) var/bpm_string = "BPM: " - if(findtext(lines[1], bpm_string, 1, length(bpm_string) + 1)) - var/divisor = text2num(copytext(lines[1], length(bpm_string) + 1)) || 120 // default + if(findtext(lines_to_add[1], bpm_string, 1, length(bpm_string) + 1)) + var/divisor = text2num(copytext(lines_to_add[1], length(bpm_string) + 1)) || 120 // default tempo = sanitize_tempo(600 / round(divisor, 1)) - lines.Cut(1, 2) + lines_to_add.Cut(1, 2) else tempo = sanitize_tempo(5) // default 120 BPM - if(length(lines) > MUSIC_MAXLINES) + if(length(lines_to_add) > MUSIC_MAXLINES) to_chat(user, "Too many lines!") - lines.Cut(MUSIC_MAXLINES + 1) + lines_to_add.Cut(MUSIC_MAXLINES + 1) var/linenum = 1 - for(var/l in lines) + for(var/l in lines_to_add) if(length_char(l) > MUSIC_MAXLINECHARS) to_chat(user, "Line [linenum] too long!") - lines.Remove(l) + lines_to_add.Remove(l) + continue else linenum++ + + if(!legality_check(user, l)) + break + + lines = lines_to_add SStgui.update_uis(parent) + +///Checks string for containing only midi-sequence characters. +/datum/song/proc/legality_check(mob/user, text) + var/static/regex/regex = regex(@"[^A-Ga-g0-9n\ \#\-\,\/\.(\r\n|\r|\n)]") + var/detection = regex.Find(text) + if(detection) + var/position_prev = clamp(detection - 16, 1, length(text)) + var/position_next = clamp(detection + 16, 1, length(text)) + var/illegal_text = copytext_char(text, position_prev, position_next + 1) + message_admins("[user] ([user.ckey]) tried to put an illegal string into a song. Part of a string: [illegal_text]") + log_admin("[user] ([user.ckey]) tried to put an illegal string into a song. Part of a string: [illegal_text]") + return FALSE + + return TRUE diff --git a/code/modules/lavaland/lavaland_theme.dm b/code/modules/lavaland/lavaland_theme.dm index 9d3e35e69a15..aab4e58657c8 100644 --- a/code/modules/lavaland/lavaland_theme.dm +++ b/code/modules/lavaland/lavaland_theme.dm @@ -1,10 +1,12 @@ /datum/lavaland_theme /// Name of lavaland theme var/name = "Not Specified" - /// Typepath of turf the `/turf/simulated/floor/lava/mapping_lava` will be changed to on Late Initialization + /// Typepath of turf the `/turf/simulated/floor/lava` will be changed to on Late Initialization var/primary_turf_type /// Icon state of planet present on background of station Z-level var/planet_icon_state + /// Defines, used for actual planet type + var/lavaland_type /datum/lavaland_theme/New() @@ -25,6 +27,7 @@ name = "lava" primary_turf_type = /turf/simulated/floor/lava/lava_land_surface planet_icon_state = "planet" + lavaland_type = LAVALAND_TYPE_LAVA /datum/lavaland_theme/lava/setup() var/datum/river_spawner/lava_spawner = new(level_name_to_num(MINING)) @@ -34,6 +37,7 @@ name = "plasma" primary_turf_type = /turf/simulated/floor/lava/lava_land_surface/plasma planet_icon_state = "planet_plasma" + lavaland_type = LAVALAND_TYPE_PLASMA /datum/lavaland_theme/plasma/setup() var/datum/river_spawner/spawner = new(level_name_to_num(MINING)) @@ -44,6 +48,7 @@ name = "chasm" primary_turf_type = /turf/simulated/floor/chasm/straight_down/lava_land_surface planet_icon_state = "planet_canyon" + lavaland_type = LAVALAND_TYPE_CHASM /datum/lavaland_theme/chasm/setup() var/datum/river_spawner/spawner = new(level_name_to_num(MINING), spread_prob_ = 10, spread_prob_loss_ = 5) diff --git a/code/modules/library/admin.dm b/code/modules/library/admin.dm index 4e11022f1e6d..a35c9b5cd6df 100644 --- a/code/modules/library/admin.dm +++ b/code/modules/library/admin.dm @@ -1,7 +1,7 @@ /client/proc/delbook() set name = "Delete Book" set desc = "Permamently deletes a book from the database." - set category = "Admin" + set category = "Admin.Admin" if(!check_rights(R_ADMIN)) return @@ -24,7 +24,7 @@ /client/proc/view_flagged_books() set name = "View Flagged Books" set desc = "View books flagged for content." - set category = "Admin" + set category = "Admin.Admin" if(!check_rights(R_ADMIN)) return diff --git a/code/modules/library/codex_gigas.dm b/code/modules/library/codex_gigas.dm index ef54b64f6265..e97cd7646fcf 100644 --- a/code/modules/library/codex_gigas.dm +++ b/code/modules/library/codex_gigas.dm @@ -7,50 +7,71 @@ author = "Forces beyond your comprehension" unique = TRUE title = "The codex gigas" - var/inUse = 0 - + var/inUse = FALSE /obj/item/book/codex_gigas/attack_self(mob/user) if(!user.has_vision()) return + if(inUse) to_chat(user,"Someone else is reading it.") return + if(!user.is_literate()) - to_chat(user,"You don't know how to read.") + to_chat(user, span_notice("You don't know how to read.")) + return + + if(!ishuman(user)) + return + + var/mob/living/carbon/human/human = user + + if(locate(/datum/objective/sintouched/acedia) in human.mind?.objectives) + to_chat(user, span_notice("None of this matters, why are you reading this? You put the [title] down.")) + return + + inUse = TRUE + + var/devilName = copytext(sanitize(input(user, "What infernal being do you wish to research?", "Codex Gigas", null) as text), 1, MAX_MESSAGE_LEN) + var/speed = 30 SECONDS + var/correctness = 85 + var/willpower = 95 + + if(human.job in list(JOB_TITLE_LIBRARIAN)) // the librarian is both faster, and more accurate than normal crew members at research + speed = 4.5 SECONDS + correctness = 100 + willpower = 100 + + if(human.job in list(JOB_TITLE_CHAPLAIN)) // the librarian is both faster, and more accurate than normal crew members at research + speed = 30 SECONDS + correctness = 100 + + if(human.job in list(JOB_TITLE_CAPTAIN, JOB_TITLE_OFFICER, JOB_TITLE_HOS, JOB_TITLE_DETECTIVE, JOB_TITLE_WARDEN)) + willpower = 99 + + if(human.job in list(JOB_TITLE_CLOWN)) // WHO GAVE THE CLOWN A DEMONOMICON? BAD THINGS WILL HAPPEN! + willpower = 25 + + correctness -= human.getBrainLoss() *0.5 //Brain damage makes researching hard. + speed += human.getBrainLoss() * 0.3 SECONDS + user.visible_message("[user] opens [title] and begins reading intently.") + + if(!do_after(human, speed, human, DEFAULT_DOAFTER_IGNORE | DA_IGNORE_HELD_ITEM)) return - if(ishuman(user)) - var/mob/living/carbon/human/U = user - if(U.check_acedia()) - to_chat(user,"None of this matters, why are you reading this? You put the [title] down.") - return - inUse = 1 - var/devilName = copytext(sanitize(input(user, "What infernal being do you wish to research?", "Codex Gigas", null) as text),1,MAX_MESSAGE_LEN) - var/speed = 30 SECONDS - var/correctness = 85 - var/willpower = 95 - if(U.job in list(JOB_TITLE_LIBRARIAN)) // the librarian is both faster, and more accurate than normal crew members at research - speed = 4.5 SECONDS - correctness = 100 - willpower = 100 - if(U.job in list(JOB_TITLE_CHAPLAIN)) // the librarian is both faster, and more accurate than normal crew members at research - speed = 30 SECONDS - correctness = 100 - if(U.job in list(JOB_TITLE_CAPTAIN, JOB_TITLE_OFFICER, JOB_TITLE_HOS, JOB_TITLE_DETECTIVE, JOB_TITLE_WARDEN)) - willpower = 99 - if(U.job in list(JOB_TITLE_CLOWN)) // WHO GAVE THE CLOWN A DEMONOMICON? BAD THINGS WILL HAPPEN! - willpower = 25 - correctness -= U.getBrainLoss() *0.5 //Brain damage makes researching hard. - speed += U.getBrainLoss() * 0.3 SECONDS - user.visible_message("[user] opens [title] and begins reading intently.") - if(do_after(U, speed, U, DEFAULT_DOAFTER_IGNORE|DA_IGNORE_HELD_ITEM)) - var/usedName = devilName - if(!prob(correctness)) - usedName += "x" - var/datum/devilinfo/devil = devilInfo(usedName, 0) - user << browse("Information on [devilName]


[GLOB.lawlorify[LORE][devil.ban]]
[GLOB.lawlorify[LORE][devil.bane]]
[GLOB.lawlorify[LORE][devil.obligation]]
[GLOB.lawlorify[LORE][devil.banish]]", "window=book") - inUse = 0 - sleep(10) - if(!prob(willpower)) - U.influenceSin() - onclose(user, "book") + + var/usedName = devilName + + if(!prob(correctness)) + usedName += "x" + + var/datum/antagonist/devil/devil = devilInfo(usedName) + user << browse("Information on [devilName]


[devil.info.ban.desc]
[devil.info.bane.desc]
[devil.info.obligation.desc]
[devil.info.banish.desc]", "window=book") + + inUse = FALSE + addtimer(CALLBACK(src, PROC_REF(close), human, willpower), 10 SECONDS) + +/obj/item/book/codex_gigas/proc/close(mob/living/carbon/human/human, willpower) + if(!prob(willpower)) + human.mind?.add_antag_datum(/datum/antagonist/sintouched) + + onclose(human, "book") diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 0a488dba13e4..665dc9573f67 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -177,19 +177,27 @@ throw_range = 5 force = 2 w_class = WEIGHT_CLASS_NORMAL //upped to three because books are, y'know, pretty big. (and you could hide them inside eachother recursively forever) - attack_verb = list("bashed", "whacked") + attack_verb = list("ударил", "огрел") resistance_flags = FLAMMABLE drop_sound = 'sound/items/handling/book_drop.ogg' pickup_sound = 'sound/items/handling/book_pickup.ogg' - var/dat // Actual page content - var/due_date = 0 // Game time in 1/10th seconds - var/author // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned - var/unique = 0 // 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified - var/title // The real name of the book. - var/carved = 0 // Has the book been hollowed out for use as a secret storage item? - var/forbidden = 0 // Prevent ordering of this book. (0=no, 1=yes, 2=emag only) - var/obj/item/store // What's in the book? + /// Actual page content + var/dat + /// Game time in 1/10th seconds + var/due_date = 0 + /// Who wrote the thing, can be changed by pen or PC. It is not automatically assigned + var/author + /// FALSE - Normal book, TRUE - Should not be treated as normal book, unable to be copied, unable to be modified + var/unique = FALSE + /// The real name of the book. + var/title + /// Has the book been hollowed out for use as a secret storage item? + var/carved = 0 + /// Prevent ordering of this book. (0=no, 1=yes, 2=emag only) + var/forbidden = 0 + /// What's in the book? + var/obj/item/store /// Book DRM. If this var is TRUE, it cannot be scanned and re-uploaded var/has_drm = FALSE @@ -317,10 +325,10 @@ /obj/item/book/attack(mob/living/target, mob/living/user, params, def_zone, skip_attack_anim = FALSE) if(user.a_intent == INTENT_HELP) force = 0 - attack_verb = list("educated") + attack_verb = list("обучил") else force = initial(force) - attack_verb = list("bashed", "whacked") + attack_verb = list("ударил", "огрел") return ..() diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 045db186cb36..4cb9e7700ffd 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -144,7 +144,8 @@ GLOBAL_LIST_INIT(library_section_names, list("Any", "Fiction", "Non-Fiction", "A icon_state = "bigscanner" anchored = TRUE density = TRUE - var/obj/item/book/cache // Last scanned book + /// Last scanned book + var/obj/item/book/cache /obj/machinery/libraryscanner/attackby(obj/item/I, mob/user, params) diff --git a/code/modules/lighting/lighting_area.dm b/code/modules/lighting/lighting_area.dm index d90aacc18d77..4bd355eaa487 100644 --- a/code/modules/lighting/lighting_area.dm +++ b/code/modules/lighting/lighting_area.dm @@ -87,7 +87,6 @@ GLOBAL_LIST_INIT_TYPED(fullbright_overlays, /mutable_appearance, list(create_ful add_overlay(lighting_effects[1]) var/list/z_offsets = SSmapping.z_level_to_plane_offset for(var/turf/T in src) - T.luminosity = 1 // This outside loop is EXTREMELY hot because it's run by space tiles. Don't want no part in that // We will only add overlays to turfs not on the first z layer, because that's a significantly lesser portion // And we need to do them separate, or lighting will go fuckey diff --git a/code/modules/lighting/lighting_object.dm b/code/modules/lighting/lighting_object.dm index d1d543f68e80..58094af31c1b 100644 --- a/code/modules/lighting/lighting_object.dm +++ b/code/modules/lighting/lighting_object.dm @@ -42,7 +42,6 @@ GLOBAL_LIST_EMPTY(default_lighting_underlays_by_z) stack_trace("a lighting object was assigned to a turf that already had a lighting object!") affected_turf.lighting_object = src - affected_turf.luminosity = 0 // This path is really hot. this is faster // Really this should be a global var or something, but lets not think about that yes? @@ -59,7 +58,6 @@ GLOBAL_LIST_EMPTY(default_lighting_underlays_by_z) SSlighting.objects_queue -= src if (isturf(affected_turf)) affected_turf.lighting_object = null - affected_turf.luminosity = 1 affected_turf = null return ..() @@ -109,8 +107,7 @@ GLOBAL_LIST_EMPTY(default_lighting_underlays_by_z) alpha_corner.cache_r, alpha_corner.cache_g, alpha_corner.cache_b, 00, 00, 00, 00, 01 ) - - affected_turf.luminosity = set_luminosity + SSdemo.mark_turf(affected_turf) diff --git a/code/modules/lighting/lighting_setup.dm b/code/modules/lighting/lighting_setup.dm index 352ea8561278..6ce2b7ef8bdf 100644 --- a/code/modules/lighting/lighting_setup.dm +++ b/code/modules/lighting/lighting_setup.dm @@ -1,5 +1,5 @@ /proc/create_all_lighting_objects() - for(var/area/A in world) + for(var/area/A as anything in GLOB.areas) if(!A.static_lighting) continue diff --git a/code/modules/lighting/lighting_source.dm b/code/modules/lighting/lighting_source.dm index 30c1fc20f0da..99129fc902cf 100644 --- a/code/modules/lighting/lighting_source.dm +++ b/code/modules/lighting/lighting_source.dm @@ -273,8 +273,6 @@ if(source_turf) var/uses_multiz = !!GET_LOWEST_STACK_OFFSET(source_turf.z) - var/oldlum = source_turf.luminosity - source_turf.luminosity = CEILING(light_range, 1) if(uses_multiz) for(var/turf/T in view(CEILING(light_range, 1), source_turf)) if(IS_OPAQUE_TURF(T)) @@ -311,8 +309,6 @@ INSERT_CORNERS(corners, T) SSdemo.mark_turf(T) - source_turf.luminosity = oldlum - SETUP_CORNERS_CACHE(src) var/list/datum/lighting_corner/new_corners = (corners - src.effect_str) diff --git a/code/modules/lootpanel/_lootpanel.dm b/code/modules/lootpanel/_lootpanel.dm new file mode 100644 index 000000000000..6d512ff31403 --- /dev/null +++ b/code/modules/lootpanel/_lootpanel.dm @@ -0,0 +1,93 @@ +/** + * ## Loot panel + * A datum that stores info containing the contents of a turf. + * Handles opening the lootpanel UI and searching the turf for items. + */ +/datum/lootpanel + /// The owner of the panel + var/client/owner + /// The list of all search objects indexed. + var/list/datum/search_object/contents = list() + /// The list of search_objects needing processed + var/list/datum/search_object/to_image = list() + /// We've been notified about client version + var/notified = FALSE + /// The turf being searched + var/turf/source_turf + + +/datum/lootpanel/New(client/owner) + . = ..() + + src.owner = owner + + +/datum/lootpanel/Destroy(force) + reset_contents() + owner = null + source_turf = null + + return ..() + + +/datum/lootpanel/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "LootPanel") + ui.set_autoupdate(FALSE) + ui.open() + +/datum/lootpanel/ui_state(mob/user) + return GLOB.range_state + +/datum/lootpanel/ui_close(mob/user) + . = ..() + + source_turf = null + reset_contents() + + +/datum/lootpanel/ui_data(mob/user) + var/list/data = list() + + data["contents"] = get_contents() + data["searching"] = length(to_image) + + return data + + +/datum/lootpanel/ui_status(mob/user, datum/ui_state/state) + if(isobserver(user)) + return UI_INTERACTIVE + + if(isAI(user) && !user.stat) + var/mob/living/silicon/ai/AI = user + if(AI.can_see(source_turf)) + return UI_INTERACTIVE + return UI_CLOSE + + if(user.incapacitated()) + return UI_DISABLED + + var/dist = get_dist(source_turf, user) + if(dist <= 1) + return UI_INTERACTIVE + + else if(dist <= 6) + return UI_UPDATE + + return UI_CLOSE + + +/datum/lootpanel/ui_act(action, list/params) + . = ..() + if(.) + return + + switch(action) + if("grab") + return grab(usr, params) + if("refresh") + return populate_contents() + + return FALSE diff --git a/code/modules/lootpanel/contents.dm b/code/modules/lootpanel/contents.dm new file mode 100644 index 000000000000..9c355f9ade2a --- /dev/null +++ b/code/modules/lootpanel/contents.dm @@ -0,0 +1,51 @@ +/// Adds the item to contents and to_image (if needed) +/datum/lootpanel/proc/add_to_index(datum/search_object/index) + RegisterSignal(index, COMSIG_QDELETING, PROC_REF(on_searchable_deleted)) + if(isnull(index.icon)) + to_image += index + + contents += index + + +/// Used to populate contents and start generating if needed +/datum/lootpanel/proc/populate_contents() + if(length(contents)) + reset_contents() + + // Add source turf first + var/datum/search_object/source = new(owner, source_turf) + add_to_index(source) + + for(var/atom/thing as anything in source_turf.contents) + // validate + if(thing.mouse_opacity == MOUSE_OPACITY_TRANSPARENT) + continue + if(thing.IsObscured()) + continue + if(thing.invisibility > owner.mob.see_invisible) + continue + if(!thing.name) + continue + + // convert + var/datum/search_object/index = new(owner, thing) + add_to_index(index) + + var/datum/tgui/window = SStgui.get_open_ui(owner.mob, src) + window?.send_update() + + if(length(to_image)) + SSlooting.backlog += src + + +/// For: Resetting to empty. Ignores the searchable qdel event +/datum/lootpanel/proc/reset_contents() + for(var/datum/search_object/index as anything in contents) + contents -= index + to_image -= index + + if(QDELETED(index)) + continue + + UnregisterSignal(index, COMSIG_QDELETING) + qdel(index) diff --git a/code/modules/lootpanel/handlers.dm b/code/modules/lootpanel/handlers.dm new file mode 100644 index 000000000000..40a76974ed4a --- /dev/null +++ b/code/modules/lootpanel/handlers.dm @@ -0,0 +1,19 @@ +/// On contents change, either reset or update +/datum/lootpanel/proc/on_searchable_deleted(datum/search_object/source) + SIGNAL_HANDLER + + contents -= source + to_image -= source + + var/datum/tgui/window = SStgui.get_open_ui(owner.mob, src) +#if !defined(UNIT_TESTS) // we dont want to delete contents if we're testing + if(isnull(window)) + reset_contents() + return +#endif + + if(isturf(source.item)) + populate_contents() + return + + window?.send_update() diff --git a/code/modules/lootpanel/misc.dm b/code/modules/lootpanel/misc.dm new file mode 100644 index 000000000000..0ef5b5ee2af2 --- /dev/null +++ b/code/modules/lootpanel/misc.dm @@ -0,0 +1,48 @@ +/// Helper to open the panel +/datum/lootpanel/proc/open(turf/tile) + source_turf = tile + +#if !defined(UNIT_TESTS) + if(!notified) + var/build = owner.byond_build + var/version = owner.byond_version + if(build < 515 || (build == 515 && version < 1635)) + to_chat(owner.mob, span_info("\ + Your version of Byond doesn't support fast image loading.\n\ + Detected: [version].[build]\n\ + Required version for this feature: 515.1635 or later.\n\ + Visit BYOND's website to get the latest version of BYOND.\n\ + ")) + + notified = TRUE +#endif + + populate_contents() + ui_interact(owner.mob) + + +/** + * Called by SSlooting whenever this datum is added to its backlog. + * Iterates over to_image list to create icons, then removes them. + * Returns boolean - whether this proc has finished the queue or not. + */ +/datum/lootpanel/proc/process_images() + for(var/datum/search_object/index as anything in to_image) + to_image -= index + + if(QDELETED(index) || index.icon) + continue + + index.generate_icon(owner) + + if(TICK_CHECK) + break + + var/datum/tgui/window = SStgui.get_open_ui(owner.mob, src) + if(isnull(window)) + reset_contents() + return TRUE + + window.send_update() + + return !length(to_image) diff --git a/code/modules/lootpanel/search_object.dm b/code/modules/lootpanel/search_object.dm new file mode 100644 index 000000000000..681d330b9db2 --- /dev/null +++ b/code/modules/lootpanel/search_object.dm @@ -0,0 +1,82 @@ +/** + * ## Search Object + * An object for content lists. Compacted item data. + */ +/datum/search_object + /// Item we're indexing + var/atom/item + /// Url to the image of the object + var/icon + /// Icon state, for inexpensive icons + var/icon_state + /// Name of the original object + var/name + /// Typepath of the original object for ui grouping + var/path + + +/datum/search_object/New(client/owner, atom/item) + . = ..() + + src.item = item + name = item.name + if(isobj(item)) + path = item.type + + if(isturf(item)) + RegisterSignal(item, COMSIG_TURF_CHANGE, PROC_REF(on_turf_change)) + else + RegisterSignal(item, list( + COMSIG_ITEM_PICKUP, + COMSIG_MOVABLE_MOVED, + COMSIG_QDELETING, + ), PROC_REF(on_item_moved)) + + // Icon generation conditions ////////////// + // Condition 1: Icon is complex + if(ismob(item) || length(item.overlays) > 2) + return + + // Condition 2: Can't get icon path + if(!isfile(item.icon) || !length("[item.icon]")) + return + + // Condition 3: Using opendream +#if defined(UNIT_TESTS) + return +#endif + + // Condition 4: Using older byond version + var/build = owner.byond_build + var/version = owner.byond_version + if(build < 515 || (build == 515 && version < 1635)) + icon = "n/a" + return + + icon = "[item.icon]" + icon_state = item.icon_state + + +/datum/search_object/Destroy(force) + item = null + + return ..() + + +/// Generates the icon for the search object. This is the expensive part. +/datum/search_object/proc/generate_icon(client/owner) + icon = costly_icon2asset(item, owner, sourceonly = TRUE) + + +/// Parent item has been altered, search object no longer valid +/datum/search_object/proc/on_item_moved(atom/source) + SIGNAL_HANDLER + + qdel(src) + + +/// Parent tile has been altered, entire search needs reset +/datum/search_object/proc/on_turf_change(turf/source, path, list/new_baseturfs, flags, list/post_change_callbacks) + SIGNAL_HANDLER + + post_change_callbacks += CALLBACK(src, GLOBAL_PROC_REF(qdel), src) diff --git a/code/modules/lootpanel/ui.dm b/code/modules/lootpanel/ui.dm new file mode 100644 index 000000000000..651d895cc179 --- /dev/null +++ b/code/modules/lootpanel/ui.dm @@ -0,0 +1,46 @@ +/// UI helper for converting the associative list to a list of lists +/datum/lootpanel/proc/get_contents() + var/list/items = list() + + for(var/datum/search_object/index as anything in contents) + UNTYPED_LIST_ADD(items, list( + "icon_state" = index.icon_state, + "icon" = index.icon, + "name" = index.name, + "path" = index.path, + "uid" = index.UID(), + )) + + return items + + +/// Clicks an object from the contents. Validates the object and the user +/datum/lootpanel/proc/grab(mob/user, list/params) + var/uid = params["uid"] + if(isnull(uid)) + return FALSE + + if(!source_turf.Adjacent(user)) // Source tile is no longer valid + reset_contents() + return FALSE + + var/datum/search_object/index = locate(uid) in contents + var/atom/thing = index?.item + if(QDELETED(index) || QDELETED(thing)) // Obj is gone + return FALSE + + if(thing != source_turf && !(locate(thing) in source_turf.contents)) + qdel(index) // Item has moved + return TRUE + + var/modifiers = "" + if(params["ctrl"]) + modifiers += "ctrl=1;" + if(params["middle"]) + modifiers += "middle=1;" + if(params["shift"]) + modifiers += "shift=1;" + + user.ClickOn(thing, modifiers) + + return TRUE diff --git a/code/modules/map_fluff/celestation.dm b/code/modules/map_fluff/celestation.dm index 46f81b1f7d5d..a3b96240d060 100644 --- a/code/modules/map_fluff/celestation.dm +++ b/code/modules/map_fluff/celestation.dm @@ -16,5 +16,5 @@ dock_name = "NAV Trurl" company_name = "Nanotrasen" company_short = "NT" - starsys_name = "Epsilon Eridani" + starsys_name = "Epsilon Lucusta" webmap_url = "https://webmap.affectedarc07.co.uk/maps/ss1984/celestation/" diff --git a/code/modules/map_fluff/cerestation.dm b/code/modules/map_fluff/cerestation.dm index 5b06c8a9d1ad..41e052c080d8 100644 --- a/code/modules/map_fluff/cerestation.dm +++ b/code/modules/map_fluff/cerestation.dm @@ -11,5 +11,5 @@ dock_name = "NAV Trurl" company_name = "Nanotrasen" company_short = "NT" - starsys_name = "Epsilon Eridani" + starsys_name = "Epsilon Lucusta" webmap_url = "https://webmap.affectedarc07.co.uk/maps/ss1984/cerestation/" diff --git a/code/modules/map_fluff/cyberiad.dm b/code/modules/map_fluff/cyberiad.dm index 7e180df00426..210fb86c1df6 100644 --- a/code/modules/map_fluff/cyberiad.dm +++ b/code/modules/map_fluff/cyberiad.dm @@ -7,5 +7,5 @@ dock_name = "NAV Trurl" company_name = "Nanotrasen" company_short = "NT" - starsys_name = "Epsilon Eridani " + starsys_name = "Epsilon Lucusta " webmap_url = "https://webmap.affectedarc07.co.uk/maps/ss1984/cyberiad/" diff --git a/code/modules/map_fluff/delta.dm b/code/modules/map_fluff/delta.dm index 4463b00703d1..7dcfcabce426 100644 --- a/code/modules/map_fluff/delta.dm +++ b/code/modules/map_fluff/delta.dm @@ -12,5 +12,5 @@ Remapped by ThaumicNik, TrashDoxx, J4.BA, BeepBoop, mr_g, IceGreen, AlexRavenidz dock_name = "NAV Trurl" company_name = "Nanotrasen" company_short = "NT" - starsys_name = "Epsilon Eridani " + starsys_name = "Epsilon Lucusta " webmap_url = "https://webmap.affectedarc07.co.uk/maps/ss1984/deltastation/" diff --git a/code/modules/map_fluff/event.dm b/code/modules/map_fluff/event.dm index d569c46558b1..69c0dc7e9012 100644 --- a/code/modules/map_fluff/event.dm +++ b/code/modules/map_fluff/event.dm @@ -9,7 +9,7 @@ dock_name = "NAV Trurl" company_name = "Nanotrasen" company_short = "NT" - starsys_name = "Epsilon Eridani" + starsys_name = "Epsilon Lucusta" webmap_url = "Optional" admin_only = TRUE */ @@ -37,7 +37,7 @@ dock_name = "NAV Trurl" company_name = "Nanotrasen" company_short = "NT" - starsys_name = "Epsilon Eridani" + starsys_name = "Epsilon Lucusta" admin_only = TRUE /datum/map/delta_old @@ -50,5 +50,19 @@ dock_name = "NAV Trurl" company_name = "Nanotrasen" company_short = "NT" - starsys_name = "Epsilon Eridani" + starsys_name = "Epsilon Lucusta" + admin_only = TRUE + +/datum/map/coldcolony + name = "Malta" + map_path = "_maps/map_files/event/Station/coldcolony.dmm" + lavaland_path = "_maps/map_files/Delta/Lavaland.dmm" + traits = list(MAIN_STATION, STATION_LEVEL = "Surface", ZTRAIT_BASETURF = /turf/simulated/floor/plating/asteroid/snow/planet) + + station_name = "NMC Malta" + station_short = "Malta" + dock_name = "NAV Trurl" + company_name = "Nanotrasen" + company_short = "NT" + starsys_name = "Epsilon Lucusta" admin_only = TRUE diff --git a/code/modules/map_fluff/nova.dm b/code/modules/map_fluff/nova.dm index d015b53c620d..90165729fe26 100644 --- a/code/modules/map_fluff/nova.dm +++ b/code/modules/map_fluff/nova.dm @@ -14,6 +14,5 @@ dock_name = "NAV Trurl" company_name = "Nanotrasen" company_short = "NT" - starsys_name = "Epsilon Eridani" - admin_only = TRUE - webmap_url = null //Nanomap and webmap will be added later. + starsys_name = "Epsilon Lucusta" + webmap_url = "https://webmap.affectedarc07.co.uk/maps/ss1984/nova/" diff --git a/code/modules/martial_arts/combos/mrchang/steal_card.dm b/code/modules/martial_arts/combos/mrchang/steal_card.dm index 11fc6f8d47ec..e2323e562dc3 100644 --- a/code/modules/martial_arts/combos/mrchang/steal_card.dm +++ b/code/modules/martial_arts/combos/mrchang/steal_card.dm @@ -14,7 +14,7 @@ user.put_in_hands(I, ignore_anim = FALSE) user.say(pick("Ваша бонусная карта!", "5000 баллов списано!", "Принимаем карты всех банков!", \ "Наше лучшее предложение!", "Безналичный рассчёт!", "Хватай! Бесплатно!!")) - var/attack_verb = pick("cashbacked", "discounted", "traded", "contracted") + var/attack_verb = pick("кэшбекнул", "уценил", "сторговал") target.visible_message("[user] [attack_verb] [target]!", \ "[user] [attack_verb] you!") var/sound = pick('sound/weapons/mr_chang/mr_chang_steal_card_1.mp3', 'sound/weapons/mr_chang/mr_chang_steal_card_2.mp3', \ diff --git a/code/modules/martial_arts/krav_maga.dm b/code/modules/martial_arts/krav_maga.dm index a2ed81900ea8..4ee21ef55fbd 100644 --- a/code/modules/martial_arts/krav_maga.dm +++ b/code/modules/martial_arts/krav_maga.dm @@ -168,3 +168,7 @@ desc = "These gloves can teach you to perform Krav Maga using nanochips." icon_state = "fightgloves" item_state = "fightgloves" + +/obj/item/clothing/gloves/color/black/krav_maga/sec/Initialize(mapload) + . = ..() + AddElement(/datum/element/high_value_item) diff --git a/code/modules/martial_arts/martial.dm b/code/modules/martial_arts/martial.dm index 1391ac128b3f..f12adeb22fb9 100644 --- a/code/modules/martial_arts/martial.dm +++ b/code/modules/martial_arts/martial.dm @@ -417,7 +417,15 @@ /obj/item/CQC_manual name = "old manual" - desc = "A small, black manual. There are drawn instructions of tactical hand-to-hand combat." + desc = "Небольшая книжка чёрного цвета. Это подробное руководство по тактике рукопашного боя." + ru_names = list( + NOMINATIVE = "старое руководство", + GENITIVE = "старого руководства", + DATIVE = "старому руководству", + ACCUSATIVE = "старое руководство", + INSTRUMENTAL = "старым руководством", + PREPOSITIONAL = "старом руководстве" + ) icon = 'icons/obj/library.dmi' icon_state = "cqcmanual" @@ -427,27 +435,35 @@ if(user.mind) //Prevents changelings and vampires from being able to learn it if(ischangeling(user)) - to_chat(user, "We try multiple times, but we simply cannot grasp the basics of CQC!") + to_chat(user, span_warning("Как бы мы не пытались, у нас не получается понять даже основы CQC!")) return else if(isvampire(user)) //Vampires - to_chat(user, "Your blood lust distracts you from the basics of CQC!") + to_chat(user, span_warning("Ваша жажда крови отвлекает вас от изучения CQC!")) return else if(HAS_TRAIT(user, TRAIT_PACIFISM)) - to_chat(user, "The mere thought of combat, let alone CQC, makes your head spin!") + to_chat(user, span_warning("От одной мысли о драке, не говоря уже о CQC, ваша голова идёт кругом!")) return - to_chat(user, span_boldannounceic("You remember the basics of CQC.")) + to_chat(user, span_boldannounceic("Вы быстро пробегаетесь глазами по страницам книги, запоминая основы CQC.")) var/datum/martial_art/cqc/CQC = new(null) CQC.teach(user) user.temporarily_remove_item_from_inventory(src) - visible_message("[src] beeps ominously, and a moment later it bursts up in flames.") + visible_message(span_warning("[declent_ru(NOMINATIVE)] зловеще пищит, после чего вспыхивает ярким пламенем!")) new /obj/effect/decal/cleanable/ash(get_turf(src)) qdel(src) /obj/item/CQC_manual/chef name = "CQC Upgrade implant" - desc = "Gives you to remember what you always forget" + desc = "Небольшой шприц, содержащий в себе имплант. Даёт вам запомнить то, что вы всегда забываете." + ru_names = list( + NOMINATIVE = "имплант улучшения CQC", + GENITIVE = "импланта улучшения CQC", + DATIVE = "импланту улучшения CQC", + ACCUSATIVE = "имплант улучшения CQC", + INSTRUMENTAL = "имплантом улучшения CQC", + PREPOSITIONAL = "импланте улучшения CQC" + ) icon = 'icons/obj/items.dmi' icon_state = "implanter1" item_state = "syringe_0" @@ -455,24 +471,41 @@ /obj/item/CQC_manual/chef/attack_self(mob/living/carbon/human/user) if(!istype(user)) return - if(user.mind && user.mind.assigned_role == JOB_TITLE_CHEF) - to_chat(user, span_boldannounceic(">You completely memorise the basics of CQC.")) - var/datum/martial_art/cqc/CQC = new(null) - CQC.teach(user) - user.temporarily_remove_item_from_inventory(src) - visible_message("[src] beeps ominously, and a moment later it blow up.") - new /obj/effect/decal/cleanable/ash(get_turf(src)) - qdel(src) - else - to_chat(user, "You implant yourself, but nanobots can't find their target. You feel sharp pain in head!") + + if(!(user.mind && user.mind.assigned_role == JOB_TITLE_CHEF)) + to_chat(user, span_notice("Вы имплантируете себя, но наноботы не могут найти свою цель. Вы чувствуете острую головную боль!")) if(isliving(user)) var/mob/living/L = user L.apply_damages(burn = 20, brain = 20, spread_damage = TRUE) - user.temporarily_remove_item_from_inventory(src) - visible_message("[src] beeps ominously, and a moment later it blow up!") - playsound(get_turf(src),'sound/effects/explosion2.ogg', 100, 1) - new /obj/effect/decal/cleanable/ash(get_turf(src)) - qdel(src) + use_implant(user) + return + + if(ischangeling(user)) + to_chat(user, span_warning("Мы имплантируем себя, но наноботы не успевают достичь своей цели и разрушаются.")) + use_implant(user) + return + + if(isvampire(user)) + to_chat(user, span_warning("Вы имплантируете себя, но ваша кровь разрушает наноботов быстрее, чем они достигают своей цели.")) + use_implant(user) + return + + if(HAS_TRAIT(user, TRAIT_PACIFISM)) + to_chat(user, span_warning("От одной мысли о драке, не говоря уже о CQC, голова идёт кругом! Вы не решаетесь вколоть в себя имплант.")) + return + + to_chat(user, span_boldannounceic("Вы полностью запоминаете основы CQC.")) + var/datum/martial_art/cqc/CQC = new(null) + CQC.teach(user) + use_implant(user) + +/obj/item/CQC_manual/chef/proc/use_implant(mob/living/carbon/human/user) + user.temporarily_remove_item_from_inventory(src) + visible_message(span_warning("[declent_ru(NOMINATIVE)] зловеще пищит, после чего взрывается!")) + playsound(get_turf(src),'sound/effects/explosion2.ogg', 100, TRUE) + new /obj/effect/decal/cleanable/ash(get_turf(src)) + qdel(src) + /obj/item/mr_chang_technique name = "«Aggressive Marketing Technique»" @@ -520,7 +553,7 @@ force_wielded = 24 throwforce = 20 throw_speed = 2 - attack_verb = list("smashed", "slammed", "whacked", "thwacked") + attack_verb = list("сокрушил", "ударил", "огрел") icon_state = "bostaff0" block_chance = 50 diff --git a/code/modules/martial_arts/mimejutsu.dm b/code/modules/martial_arts/mimejutsu.dm index ea022bb8fa59..092d2a615415 100644 --- a/code/modules/martial_arts/mimejutsu.dm +++ b/code/modules/martial_arts/mimejutsu.dm @@ -50,7 +50,15 @@ /obj/item/mimejutsu_scroll name = "Mimejutsu manual" - desc = "An old manual of the martial art of mimes." + desc = "Старое пособие по боевому искусству мимов." + ru_names = list( + NOMINATIVE = "мануал Мимдзютсю", + GENITIVE = "мануала Мимдзютсю", + DATIVE = "мануалу Мимдзютсю", + ACCUSATIVE = "мануал Мимдзютсю", + INSTRUMENTAL = "мануалом Мимдзютсю", + PREPOSITIONAL = "мануале Мимдзютсю" + ) icon = 'icons/obj/library.dmi' icon_state = "mimemanual" var/used = FALSE @@ -64,9 +72,9 @@ F.teach(H) to_chat(H, span_boldannounceic("...")) used = TRUE - desc = "An old manual of the martial art of mimes. The pages are blank." + desc = "Старое пособие по боевому искусству мимов, но страницы его пусты." else - to_chat(user, "You must dedicate yourself to silence first.") + to_chat(user, span_warning("Сначала вы должны принять обет молчания!")) /datum/martial_art/mimejutsu/explaination_header(user) to_chat(user, "...") diff --git a/code/modules/mini_games/thunderdome/brawlers/outfits.dm b/code/modules/mini_games/thunderdome/brawlers/outfits.dm index eda316e1aeaa..573b82208666 100644 --- a/code/modules/mini_games/thunderdome/brawlers/outfits.dm +++ b/code/modules/mini_games/thunderdome/brawlers/outfits.dm @@ -9,7 +9,7 @@ uniform = /obj/item/clothing/under/misc/durathread shoes = /obj/item/clothing/shoes/combat back = /obj/item/storage/backpack/thunderdome_infinite - head = /obj/item/clothing/head/HoS + head = /obj/item/clothing/head/helmet/space/santahat /datum/outfit/thunderdome/cqc name = "Fighter" diff --git a/code/modules/mini_games/thunderdome/gamemodes/gamemode.dm b/code/modules/mini_games/thunderdome/gamemodes/gamemode.dm index e8a3c3e15a92..03de50171b34 100644 --- a/code/modules/mini_games/thunderdome/gamemodes/gamemode.dm +++ b/code/modules/mini_games/thunderdome/gamemodes/gamemode.dm @@ -53,7 +53,16 @@ /obj/item/storage/belt/grenade/frag = 1, /obj/item/storage/box/syndie_kit/dangertray = 1, /obj/item/gun/magic/hook = 1, - /obj/item/organ/internal/cyberimp/arm/katana = 1, + /obj/item/twohanded/bamboospear = 1, + /obj/item/twohanded/required/chainsaw = 1, + /obj/item/kitchen/knife/butcher/meatcleaver = 1, + /obj/item/rune_scimmy = 1, + /obj/item/twohanded/spear/bonespear/chitinspear = 1, + /obj/item/twohanded/garrote = 1, + /obj/item/melee/rapier/syndie = 1, + /obj/item/melee/claymore/bone = 1, + /obj/item/gun/magic/staff/spellblade = 1, + /obj/item/spellbook/oneuse/goliath_dash = 1, ) @@ -65,26 +74,26 @@ brawler_type = /obj/effect/mob_spawn/human/thunderdome/ranged random_items_count = 3 item_pool = list( - /obj/item/gun/energy/immolator/multi = 1, - /obj/item/gun/projectile/automatic/mini_uzi = 1, - /obj/item/gun/projectile/automatic/pistol/deagle = 1, - /obj/item/gun/projectile/automatic/wt550 = 1, + /obj/item/gun/energy/immolator/multi = 2, + /obj/item/gun/energy/gun/minigun = 1, + /obj/item/gun/projectile/automatic/mini_uzi = 2, + /obj/item/gun/projectile/automatic/pistol/deagle = 2, + /obj/item/gun/projectile/automatic/wt550 = 2, /obj/item/gun/projectile/automatic/l6_saw = 1, - /obj/item/gun/projectile/automatic/lasercarbine = 1, - /obj/item/gun/projectile/automatic/shotgun/bulldog = 1, - /obj/item/gun/magic/staff/slipping = 1, - /obj/item/gun/projectile/revolver/mateba = 3, + /obj/item/gun/projectile/automatic/lasercarbine = 2, + /obj/item/gun/projectile/automatic/shotgun/bulldog = 2, + /obj/item/gun/projectile/revolver/mateba = 4, /obj/item/gun/projectile/shotgun/automatic = 2, /obj/item/gun/projectile/shotgun/riot = 2, - /obj/item/gun/projectile/automatic/ak814 = 1, + /obj/item/gun/projectile/automatic/ak814 = 2, /obj/item/gun/projectile/shotgun/riot/buckshot = 3, /obj/item/gun/projectile/shotgun/boltaction = 1, /obj/item/gun/projectile/shotgun/automatic/combat = 2, - /obj/item/gun/projectile/automatic/pistol/APS = 1, + /obj/item/gun/projectile/automatic/pistol/APS = 2, /obj/item/gun/projectile/automatic/pistol/sp8/sp8ar = 1, - /obj/item/gun/projectile/automatic/pistol/m1911 = 1, - /obj/item/gun/projectile/revolver/golden = 1, - /obj/item/gun/projectile/revolver/nagant = 1, + /obj/item/gun/projectile/automatic/pistol/m1911 = 2, + /obj/item/gun/projectile/revolver/golden = 2, + /obj/item/gun/projectile/revolver/nagant = 2, /obj/item/gun/energy/gun/nuclear = 2, /obj/item/storage/box/thunderdome/bombarda = 1, /obj/item/storage/box/thunderdome/crossbow = 1, @@ -92,15 +101,34 @@ /obj/item/gun/energy/kinetic_accelerator/crossbow/large = 1, /obj/item/storage/box/thunderdome/laser_eyes = 1, /obj/item/implanter/adrenalin = 1, - /obj/item/implanter/adrenalin = 1, /obj/item/gun/projectile/automatic/sniper_rifle/syndicate = 1, - /obj/item/gun/energy/xray = 1, - /obj/item/gun/energy/lasercannon = 1, + /obj/item/gun/energy/xray = 2, + /obj/item/gun/energy/lasercannon = 2, /obj/item/clothing/mask/holo_cigar = 1, /obj/item/storage/belt/grenade/frag = 1, /obj/item/spellbook/oneuse/watchers_look = 1, /obj/item/spellbook/oneuse/fireball = 1, - /obj/item/gun/energy/emittergun = 1, + /obj/item/gun/energy/emittergun = 2, + /obj/item/gun/energy/decloner = 1, + /obj/item/gun/projectile/shotgun/automatic/dual_tube = 2, + /obj/item/gun/projectile/automatic/gyropistol = 2, + /obj/item/gun/projectile/automatic/sfg = 2, + /obj/item/gun/projectile/automatic/sp91rc = 2, + /obj/item/gun/projectile/automatic/m90 = 2, + /obj/item/gun/projectile/automatic/rusted/aksu = 2, + /obj/item/gun/projectile/automatic/rusted/ppsh = 2, + /obj/item/gun/projectile/automatic/shotgun/minotaur = 2, + /obj/item/gun/projectile/automatic/lr30 = 2, + /obj/item/gun/energy/sniperrifle = 1, + /obj/item/gun/energy/sniperrifle/pod_pilot = 1, + /obj/item/gun/energy/shock_revolver = 2, + /obj/item/gun/energy/pulse/turret = 1, + /obj/item/gun/energy/plasma_pistol = 2, + /obj/item/gun/energy/laser/scatter = 2, + /obj/item/gun/energy/bsg/prebuilt = 1, + /obj/item/gun/magic/staff/spellblade = 1, + /obj/item/spellbook/oneuse/goliath_dash = 1, + /obj/item/spellbook/oneuse/forcewall = 1, ) /datum/thunderdome_gamemode/mixed @@ -112,6 +140,7 @@ random_items_count = 3 item_pool = list( /obj/item/gun/energy/immolator/multi = 1, + /obj/item/gun/energy/gun/minigun = 1, /obj/item/gun/projectile/automatic/mini_uzi = 1, /obj/item/gun/projectile/automatic/pistol/deagle = 1, /obj/item/gun/projectile/automatic/wt550 = 1, @@ -174,5 +203,32 @@ /obj/item/spellbook/oneuse/fireball = 1, /obj/item/gun/energy/emittergun = 1, /obj/item/gun/magic/hook = 1, - /obj/item/organ/internal/cyberimp/arm/katana = 1, + /obj/item/gun/energy/decloner = 1, + /obj/item/gun/projectile/shotgun/automatic/dual_tube = 2, + /obj/item/gun/projectile/automatic/gyropistol = 1, + /obj/item/gun/projectile/automatic/sfg = 1, + /obj/item/gun/projectile/automatic/sp91rc = 1, + /obj/item/gun/projectile/automatic/m90 = 1, + /obj/item/gun/projectile/automatic/rusted/aksu = 1, + /obj/item/gun/projectile/automatic/rusted/ppsh = 1, + /obj/item/gun/projectile/automatic/shotgun/minotaur = 1, + /obj/item/gun/projectile/automatic/lr30 = 1, + /obj/item/gun/energy/sniperrifle = 1, + /obj/item/gun/energy/sniperrifle/pod_pilot = 1, + /obj/item/gun/energy/shock_revolver = 1, + /obj/item/gun/energy/pulse/turret = 1, + /obj/item/gun/energy/plasma_pistol = 1, + /obj/item/gun/energy/laser/scatter = 1, + /obj/item/gun/energy/bsg/prebuilt = 1, + /obj/item/twohanded/bamboospear = 1, + /obj/item/twohanded/required/chainsaw = 1, + /obj/item/kitchen/knife/butcher/meatcleaver = 1, + /obj/item/rune_scimmy = 1, + /obj/item/twohanded/spear/bonespear/chitinspear = 1, + /obj/item/twohanded/garrote = 1, + /obj/item/melee/rapier/syndie = 1, + /obj/item/melee/claymore/bone = 1, + /obj/item/gun/magic/staff/spellblade = 1, + /obj/item/spellbook/oneuse/goliath_dash = 1, + /obj/item/spellbook/oneuse/forcewall = 1, ) diff --git a/code/modules/mini_games/thunderdome/thunderdome_battle.dm b/code/modules/mini_games/thunderdome/thunderdome_battle.dm index 38fca4877f9d..0821efba0dcc 100644 --- a/code/modules/mini_games/thunderdome/thunderdome_battle.dm +++ b/code/modules/mini_games/thunderdome/thunderdome_battle.dm @@ -5,11 +5,11 @@ #define ARENA_COOLDOWN 5 MINUTES //After which time thunderdome will be once again allowed to use #define CQC_ARENA_RADIUS 6 //how much tiles away from a center players will spawn #define RANGED_ARENA_RADIUS 10 -#define VOTING_POLL_TIME 30 SECONDS +#define VOTING_POLL_TIME 10 SECONDS #define MAX_PLAYERS_COUNT 16 #define MIN_PLAYERS_COUNT 2 #define SPAWN_COEFFICENT 0.85 //how many (polled * spawn_coefficent) players will go brawling -#define PICK_PENALTY 30 SECONDS //Prevents fast handed guys from picking polls twice in a row. +#define PICK_PENALTY 10 SECONDS //Prevents fast handed guys from picking polls twice in a row. // Uncomment this if you want to mess up with thunderdome alone /* #define THUND_TESTING diff --git a/code/modules/mining/abandonedcrates.dm b/code/modules/mining/abandonedcrates.dm index 8d08d07bb8ed..504532281e64 100644 --- a/code/modules/mining/abandonedcrates.dm +++ b/code/modules/mining/abandonedcrates.dm @@ -115,7 +115,7 @@ if(91) new /obj/item/soulstone/anybody(src) if(92) - new /obj/item/katana(src) + new /obj/item/melee/katana(src) if(93) new /obj/item/dnainjector/xraymut(src) if(94) @@ -228,7 +228,7 @@ if(!istype(user)) return if(locked) - boom(user) + attack_hand(user) else ..() diff --git a/code/modules/mining/ash_walkers/ash_rune.dm b/code/modules/mining/ash_walkers/ash_rune.dm new file mode 100644 index 000000000000..f006e0f30861 --- /dev/null +++ b/code/modules/mining/ash_walkers/ash_rune.dm @@ -0,0 +1,120 @@ +/obj/effect/decal/ash_rune_centre + name = "ash sigil" + desc = "Незаконченная руна, нарисованная на пепле." + ru_names = list( + NOMINATIVE = "пепельный сигил", + GENITIVE = "пепельного сигила", + DATIVE = "пепельному сигилу", + ACCUSATIVE = "пепельный сигил", + INSTRUMENTAL = "пепельным сигилом", + PREPOSITIONAL = "пепельном сигиле" + ) + gender = MALE + icon = 'icons/effects/ash_runes.dmi' + icon_state = "runaash_1" + + ///Is our rune being transformed right now? Sanity check + var/transforming = FALSE + ///Is our rune activated? Another sanity check, love it + var/activated = FALSE + +/obj/effect/decal/ash_rune_centre/Initialize(mapload) + . = ..() + var/number = rand(1, 36) + icon_state = "runaash_[number]" + +/obj/effect/decal/ash_rune_centre/attackby(obj/item/I, mob/user, params) + if(!istype(I, /obj/item/melee/touch_attack/healtouch)) + return ..() + if(transforming) + return ..() + visible_message(span_notice("[user] прикаса[pluralize_ru(user.gender)]ся рукой к руне.")) + transforming = TRUE + var/obj/effect/rune_animation_landmark/our_landmark = locate() in orange(3, src) + if(!our_landmark) + visible_message(span_warning("Но ничего не происходит...")) + if(!activated) + our_landmark.activate() + for(var/obj/effect/rune_fluff_marks/runes in orange(3, src)) + runes.activate() + activate_rune() + qdel(I) + return ATTACK_CHAIN_PROCEED + +/obj/effect/decal/ash_rune_centre/proc/activate_rune() + if(activated) + return + activated = TRUE + name = "ash rune" + desc = "Полностью функционирующая руна, готовая для ритуальных действий." + ru_names = list( + NOMINATIVE = "пепельная руна", + GENITIVE = "пепельной руны", + DATIVE = "пепельной руне", + ACCUSATIVE = "пепельную руну", + INSTRUMENTAL = "пепельной руной", + PREPOSITIONAL = "пепельной руне" + ) + AddComponent( \ + /datum/component/ritual_object, \ + /datum/ritual/ashwalker, \ + ) + + +// Our little cheat in order to make first rune activation unforgetable +/obj/effect/rune_fluff_marks + name = "ash rune" + ru_names = list( + NOMINATIVE = "пепельная руна", + GENITIVE = "пепельной руны", + DATIVE = "пепельной руне", + ACCUSATIVE = "пепельную руну", + INSTRUMENTAL = "пепельной руной", + PREPOSITIONAL = "пепельной руне" + ) + gender = FEMALE + icon = 'icons/effects/ash_runes.dmi' + icon_state = "runaash_2" + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + anchored = TRUE + plane = FLOOR_PLANE + layer = TURF_DECAL_LAYER + +/obj/effect/rune_fluff_marks/Initialize(mapload) + . = ..() + icon_state = "" + invisibility = INVISIBILITY_MAXIMUM + +/obj/effect/rune_fluff_marks/proc/activate() + invisibility = 0 + var/number = rand(1, 36) + icon_state = "runaash_[number]" + +/obj/effect/rune_animation_landmark + name = "ash rune" + ru_names = list( + NOMINATIVE = "пепельная руна", + GENITIVE = "пепельной руны", + DATIVE = "пепельной руне", + ACCUSATIVE = "пепельную руну", + INSTRUMENTAL = "пепельной руной", + PREPOSITIONAL = "пепельной руне" + ) + gender = FEMALE + icon = 'icons/effects/ashwalker_rune.dmi' + icon_state = "AshRun" + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + anchored = TRUE + plane = FLOOR_PLANE + layer = TURF_DECAL_LAYER + +/obj/effect/rune_animation_landmark/Initialize(mapload) + . = ..() + icon_state = "" + invisibility = INVISIBILITY_MAXIMUM + +/obj/effect/rune_animation_landmark/proc/activate() + invisibility = 0 + flick("3", src) + icon_state = "AshRun" + visible_message(span_notice("Руна полностью готова к использованию!")) diff --git a/code/modules/mining/ash_walkers/bait.dm b/code/modules/mining/ash_walkers/bait.dm new file mode 100644 index 000000000000..cb8148455684 --- /dev/null +++ b/code/modules/mining/ash_walkers/bait.dm @@ -0,0 +1,128 @@ +/obj/item/reagent_containers/food/snacks/bait + name = "worm" + desc = "Тестовая наживка, если вы это видите, пингуйте Зюзю." + ru_names = list( + NOMINATIVE = "червяк", + GENITIVE = "червяков", + DATIVE = "червяку", + ACCUSATIVE = "червяка", + INSTRUMENTAL = "червяком", + PREPOSITIONAL = "червякам", + ) + gender = MALE + icon = 'icons/obj/lavaland/lava_fishing.dmi' + icon_state = "ash_eater" + lefthand_file = 'icons/mob/inhands/lavaland/bait_lefthand.dmi' + righthand_file = 'icons/mob/inhands/lavaland/bait_righthand.dmi' + item_state = "ash_eater" + list_reagents = list("protein" = 1) //mmmm tasty + tastes = list("пепла" = 5, "безнадёжности" = 1) + bitesize = 1 + foodtype = MEAT + antable = FALSE + /// This will be visually shown on fishing rod. + var/rod_overlay = "ash_eater_rod" + +/obj/item/reagent_containers/food/snacks/bait/examine(mob/user) + . = ..() + . += span_notice("Вы можете использовать [declent_ru(ACCUSATIVE)] в качестве наживки.") + +/obj/item/reagent_containers/food/snacks/bait/random/Initialize(mapload) + . = ..() + if(prob(40)) //60pc chance to nothing + var/bait = pick(subtypesof(/obj/item/reagent_containers/food/snacks/bait)) + new bait(loc) + return INITIALIZE_HINT_QDEL + +/obj/item/reagent_containers/food/snacks/bait/ash_eater + name = "ash eater" + desc = "Маленький червячок со множеством невероятно острых зубов, покрывающих его ротовую полость. Ходят слухи, что эти крохи способны вырастать до размеров целого города. Пепел должен течь рекой." + ru_names = list( + NOMINATIVE = "пожиратель пепла", + GENITIVE = "пожирателя пепла", + DATIVE = "пожирателю пепла", + ACCUSATIVE = "пожирателя пепла", + INSTRUMENTAL = "пожирателем пепла", + PREPOSITIONAL = "пожирателе пепла", + ) + icon_state = "ash_eater" + rod_overlay = "ash_eater_rod" + +/obj/item/reagent_containers/food/snacks/bait/bloody_leach + name = "bloody leach" + desc = "Паразитическая форма жизни Лазис Ардакса, которая цепляется к оголённым участкам кожи и питается своими жертвами. Её брюшко краснеет от количества выпитой ею крови." + ru_names = list( + NOMINATIVE = "кровавая пиявка", + GENITIVE = "кровавой пиявки", + DATIVE = "кровавой пиявке", + ACCUSATIVE = "кровавую пиявку", + INSTRUMENTAL = "кровавой пиявкой", + PREPOSITIONAL = "кровавой пиявке", + ) + gender = FEMALE + icon_state = "bloody_leach" + item_state = "bloody_leach" + rod_overlay = "bloody_leach_rod" + +/obj/item/reagent_containers/food/snacks/bait/goldgrub_larva + name = "goldgrub larva" + desc = "Небольшой червячок, который питается минералами, закопанными в пепле. Он так же пуглив, как и его более старшие сородичи." + ru_names = list( + NOMINATIVE = "личинка златожора", + GENITIVE = "личинки златожора", + DATIVE = "личинке златожора", + ACCUSATIVE = "личинку златожора", + INSTRUMENTAL = "личинкой златожора", + PREPOSITIONAL = "личинке златожора", + ) + gender = FEMALE + icon_state = "goldgrub_larva" + item_state = "goldgrub_larva" + rod_overlay = "goldgrub_larva_rod" + +/obj/item/reagent_containers/food/snacks/charred_krill + name = "charred krill" + desc = "Одна из самых редких обитателей Лазис Ардакса, множество лет признанная вымершей. Эта креветка - одно из самых любимых угощений для местной \"подводной\" фауны." + ru_names = list( + NOMINATIVE = "обугленная креветка", + GENITIVE = "обугленной креветки", + DATIVE = "обугленной креветке", + ACCUSATIVE = "обугленную креветку", + INSTRUMENTAL = "обугленной креветкой", + PREPOSITIONAL = "обугленной креветке", + ) + gender = FEMALE + icon = 'icons/obj/lavaland/lava_fishing.dmi' + icon_state = "charred_krill" + item_state = "charred_krill" + list_reagents = list("protein" = 1) + bitesize = 1 + antable = FALSE + tastes = list("пепла" = 5, "упущенных возможностей" = 1) + var/in_lava = FALSE + +/obj/item/reagent_containers/food/snacks/charred_krill/examine(mob/user) + . = ..() + . += span_notice("Вы можете бросить [declent_ru(ACCUSATIVE)] в лаву, чтобы привлечь рыбу к поверхности.") + +/obj/item/reagent_containers/food/snacks/charred_krill/can_be_pulled(atom/movable/user, force, show_message) + if(in_lava) + if(show_message) + to_chat(user, span_warning("[capitalize(declent_ru(NOMINATIVE))] почти утонула в лаве!")) + return + +/obj/item/reagent_containers/food/snacks/charred_krill/attack_hand(mob/user, pickupfireoverride) + if(in_lava) + return + else + return ..() + +//Zuza blyat +/obj/item/reagent_containers/food/snacks/charred_krill/suicide_act(mob/user) //I forbid you to translate it. + user.visible_message(span_suicide("[user] is going to krill himself! Oh god...")) + user.say("goodbye krill world...") + sleep(20) + var/obj/item/reagent_containers/food/snacks/charred_krill/krill = new /obj/item/reagent_containers/food/snacks/charred_krill(drop_location()) + krill.desc += " Look's like someone KRILLED himself." + qdel(user) + return OBLITERATION diff --git a/code/modules/mining/ash_walkers/fish.dm b/code/modules/mining/ash_walkers/fish.dm new file mode 100644 index 000000000000..e539ac6178d5 --- /dev/null +++ b/code/modules/mining/ash_walkers/fish.dm @@ -0,0 +1,357 @@ +// Fish flopping + +#define PAUSE_BETWEEN_PHASES 15 +#define PAUSE_BETWEEN_FLOPS 2 +#define FLOP_COUNT 2 +#define FLOP_DEGREE 20 +#define FLOP_SINGLE_MOVE_TIME 1.5 +#define JUMP_X_DISTANCE 5 +#define JUMP_Y_DISTANCE 6 +/// This animation should be applied to actual parent atom instead of vc_object. +/proc/flop_animation(atom/movable/animation_target) + var/pause_between = PAUSE_BETWEEN_PHASES + rand(1, 5) //randomized a bit so fish are not in sync + animate(animation_target, time = pause_between, loop = -1) + //move nose down and up + for(var/_ in 1 to FLOP_COUNT) + var/matrix/up_matrix = matrix() + up_matrix.Turn(FLOP_DEGREE) + var/matrix/down_matrix = matrix() + down_matrix.Turn(-FLOP_DEGREE) + animate(transform = down_matrix, time = FLOP_SINGLE_MOVE_TIME, loop = -1) + animate(transform = up_matrix, time = FLOP_SINGLE_MOVE_TIME, loop = -1) + animate(transform = matrix(), time = FLOP_SINGLE_MOVE_TIME, loop = -1, easing = BOUNCE_EASING | EASE_IN) + animate(time = PAUSE_BETWEEN_FLOPS, loop = -1) + //bounce up and down + animate(time = pause_between, loop = -1, flags = ANIMATION_PARALLEL) + var/jumping_right = FALSE + var/up_time = 3 * FLOP_SINGLE_MOVE_TIME / 2 + for(var/_ in 1 to FLOP_COUNT) + jumping_right = !jumping_right + var/x_step = jumping_right ? JUMP_X_DISTANCE/2 : -JUMP_X_DISTANCE/2 + animate(time = up_time, pixel_y = JUMP_Y_DISTANCE , pixel_x=x_step, loop = -1, flags= ANIMATION_RELATIVE, easing = BOUNCE_EASING | EASE_IN) + animate(time = up_time, pixel_y = -JUMP_Y_DISTANCE, pixel_x=x_step, loop = -1, flags= ANIMATION_RELATIVE, easing = BOUNCE_EASING | EASE_OUT) + animate(time = PAUSE_BETWEEN_FLOPS, loop = -1) +#undef PAUSE_BETWEEN_PHASES +#undef PAUSE_BETWEEN_FLOPS +#undef FLOP_COUNT +#undef FLOP_DEGREE +#undef FLOP_SINGLE_MOVE_TIME +#undef JUMP_X_DISTANCE +#undef JUMP_Y_DISTANCE + +// actual fish + +GLOBAL_LIST_INIT(deep_fish, subtypesof(/obj/item/lavaland_fish/deep_water)) + +GLOBAL_LIST_INIT(shore_fish, subtypesof(/obj/item/lavaland_fish/shoreline)) + +/obj/item/lavaland_fish + name = "generic lavaland fish" + desc = "Вау, она такая... невпечатляющая!" + ru_names = list( + NOMINATIVE = "рыба", + GENITIVE = "рыбы", + DATIVE = "рыбе", + ACCUSATIVE = "рыбу", + INSTRUMENTAL = "рыбой", + PREPOSITIONAL = "рыбе", + ) + gender = MALE + icon = 'icons/obj/lavaland/lava_fishing.dmi' + icon_state = "ash_crab" + + lefthand_file = 'icons/mob/inhands/lavaland/fish_lefthand.dmi' + righthand_file = 'icons/mob/inhands/lavaland/fish_righthand.dmi' + item_state = "ash_crab" + + resistance_flags = LAVA_PROOF | FIRE_PROOF + throwforce = 5 + force = 10 + attack_verb = list("охлестал", "ударил", "стукнул", "опозорил") + hitsound = 'sound/weapons/bite.ogg' + + /// If this fish should do the flopping animation + var/do_flop_animation = TRUE + var/flopping = FALSE + + /// Favourite bait. Using this will add more chance to catch this fish + var/favorite_bait = null + + /// List of items you get after butchering it + var/list/butcher_loot = list() + +/obj/item/lavaland_fish/shoreline // all this subtypes used in actual fishing + w_class = WEIGHT_CLASS_NORMAL + +/obj/item/lavaland_fish/deep_water + w_class = WEIGHT_CLASS_BULKY + +/obj/item/lavaland_fish/Initialize(mapload) + . = ..() + if(do_flop_animation) + RegisterSignal(src, COMSIG_ATOM_TEMPORARY_ANIMATION_START, PROC_REF(on_temp_animation)) + START_PROCESSING(SSobj, src) + +/obj/item/lavaland_fish/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/item/lavaland_fish/proc/fucking_dies() + do_flop_animation = FALSE + STOP_PROCESSING(SSobj, src) + UnregisterSignal(src, COMSIG_ATOM_TEMPORARY_ANIMATION_START) + stop_flopping() + +/obj/item/lavaland_fish/attackby(obj/item/I, mob/living/user, params) + user.changeNext_move(CLICK_CD_MELEE) + var/sharpness = is_sharp(I) + if(sharpness && user.a_intent == INTENT_HELP && do_flop_animation) + fucking_dies() + playsound(loc, 'sound/weapons/slice.ogg', 50, 1, -1) + to_chat(user, span_warning("[capitalize(declent_ru(NOMINATIVE))] больше не двигается..")) + if(sharpness && user.a_intent == INTENT_HARM) + to_chat(user, span_notice("Вы начинаете разделывать [declent_ru(ACCUSATIVE)]...")) + playsound(loc, 'sound/weapons/slice.ogg', 50, 1, -1) + if(do_after(user, I.has_speed_harvest ? 1 SECONDS : 6 SECONDS, src,) && Adjacent(I)) + check_special_harvest() + harvest(user) + return ..() + +/obj/item/lavaland_fish/proc/harvest(mob/user) + if(QDELETED(src)) + return + for(var/path in butcher_loot) + for(var/i in 1 to butcher_loot[path]) + new path(loc) + butcher_loot.Remove(path) + visible_message(span_notice("[user] успешно разделыва[pluralize_ru(user.gender, "ет", "ют")] [declent_ru(ACCUSATIVE)].")) + playsound(src.loc, 'sound/goonstation/effects/gib.ogg', 50, 1) + gibs(loc) + qdel(src) + +/// Starts flopping animation +/obj/item/lavaland_fish/proc/start_flopping() + if(flopping) //Requires update_transform/animate_wrappers to be less restrictive. + return + flopping = TRUE + flop_animation(src) + +/// Stops flopping animation +/obj/item/lavaland_fish/proc/stop_flopping() + if(flopping) + flopping = FALSE + animate(src, transform = matrix()) //stop animation + +/// Refreshes flopping animation after temporary animation finishes +/obj/item/lavaland_fish/proc/on_temp_animation(datum/source, animation_duration) + if(animation_duration > 0) + addtimer(CALLBACK(src, PROC_REF(refresh_flopping)), animation_duration) + +/obj/item/lavaland_fish/proc/refresh_flopping() + if(flopping) + flop_animation(src) + +/obj/item/lavaland_fish/proc/check_special_harvest() + return + +/obj/item/lavaland_fish/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE) + . = ..() + if(do_flop_animation) + start_flopping() + +/obj/item/lavaland_fish/shoreline/ash_crab + name = "ash crab" + desc = "Небольшое всеядное ракообразное, обладающее на удивление крепким панцирем. Данный вид имеет интересную привычку поедать мелкие предметы, которые они находят. Лавовые крабы наиболее часто являются объектом охоты как для другой \"морской\" фауны, так и для местных племён в связи с крепким панцирем, используемым в качестве заточки, съедобным мясом и интересными находками в его желудке." + ru_names = list( + NOMINATIVE = "пепельный рак", + GENITIVE = "пепельного рака", + DATIVE = "пепельному раку", + ACCUSATIVE = "пепельного рака", + INSTRUMENTAL = "пепельным раком", + PREPOSITIONAL = "пепельном раке", + ) + icon_state = "ash_crab" + item_state = "ash_crab" + favorite_bait = /obj/item/reagent_containers/food/snacks/bait/ash_eater + butcher_loot = list( + /obj/item/whetstone/crab_shell = 1, + /obj/item/reagent_containers/food/snacks/lavaland/soft_meat = 1, + /obj/effect/spawner/random_spawners/lavaland_random_loot = 1, + ) + +/obj/item/lavaland_fish/shoreline/dead_horseman + name = "dead horseman" + desc = "Небольших размеров рыба, питающаяся преимущественно кровавыми пиявками, зарытыми в пепле. Получила своё название из-за своего характерного внешнего вида - голова всадника внешне напоминает гуманоидный череп. Ценится местными племенами в первую очередь из-за селезёнки, содержащей в себе частицы киновари и используемой для создания коричневого красителя." + ru_names = list( + NOMINATIVE = "мёртвый всадник", + GENITIVE = "мёртвого всадника", + DATIVE = "мёртвому всаднику", + ACCUSATIVE = "мёртвого всадника", + INSTRUMENTAL = "мёртвым всадником", + PREPOSITIONAL = "мёртвом всаднике", + ) + icon_state = "dead_horseman" + item_state = "dead_horseman" + favorite_bait = /obj/item/reagent_containers/food/snacks/bait/bloody_leach + butcher_loot = list( + /obj/effect/spawner/random_spawners/forty_pc_skull = 1, + /obj/item/reagent_containers/food/snacks/lavaland/soft_meat = 1, + /obj/item/lavaland_dye/cinnabar = 1, + ) + +/obj/item/lavaland_fish/shoreline/shellfish + name = "shellfish" + desc = "Одна из самых больших рыб, встречающихся у берегов Лазис Ардакса. Практически всё её тело, включая голову, покрыто багряными хрящевыми пластинами, достаточно крепкими, чтобы защищаться от большинства хищников. Внутри самой рыбы, рядом с сердцем, находится специализированный орган, собираемый местными племенами для ведения сельского хозяйства." + ru_names = list( + NOMINATIVE = "лавовый панцирник", //there is actual fish - панцирник, so our little different + GENITIVE = "лавового панцирника", + DATIVE = "лавовому панцирнику", + ACCUSATIVE = "лавового панцирника", + INSTRUMENTAL = "лавовым панцирником", + PREPOSITIONAL = "лавовом панцирнике", + ) + icon_state = "shellfish" + item_state = "shellfish" + favorite_bait = /obj/item/reagent_containers/food/snacks/bait/goldgrub_larva + butcher_loot = list( + /obj/item/stack/sheet/cartilage_plate = 2, + /obj/item/conductive_organ = 1, + /obj/item/lavaland_dye/crimson = 1, + ) + +/obj/item/lavaland_fish/deep_water/bottom_eel + name = "bottom eel" + desc = "Эта длинная склизская рыба обитает на огромной глубине, питаясь преимущественно личинками и другой мелкой рыбой. Для защиты от других хищников, эта рыба имеет бритвенно-острый хвост, который местные племена приспосабливают в качестве наконечника для копья." + ru_names = list( + NOMINATIVE = "донный угорь", + GENITIVE = "донного угря", + DATIVE = "донному угрю", + ACCUSATIVE = "донного угря", + INSTRUMENTAL = "донным угрём", + PREPOSITIONAL = "донном угре", + ) + icon_state = "bottom_eel" + item_state = "bottom_eel" + favorite_bait = /obj/item/reagent_containers/food/snacks/bait/ash_eater + butcher_loot = list( + /obj/item/reagent_containers/food/snacks/lavaland/eel_filet = 1, + /obj/item/kitchen/knife/combat/survival/bone/eel = 1, + /obj/item/lavaland_dye/indigo = 1, + ) + +/obj/item/lavaland_fish/deep_water/red_devourer + name = "red devourer" + desc = "Массивная рыба кроваво-красного окраса со множеством острых зубов внутри её пасти. Данная рыба печально известна среди племён своей агрессивностью, от чего погибло множество молодых охотников. В желудках этих рыб можно частенько найти останки менее удачливых рыбаков." + ru_names = list( + NOMINATIVE = "красный пожиратель", + GENITIVE = "красного пожирателя", + DATIVE = "красному пожирателю", + ACCUSATIVE = "красного пожирателя", + INSTRUMENTAL = "красным пожирателем", + PREPOSITIONAL = "красном пожирателе", + ) + icon_state = "red_devourer" + item_state = "red_devourer" + favorite_bait = /obj/item/reagent_containers/food/snacks/bait/bloody_leach + butcher_loot = list( + /obj/item/stack/sheet/razor_sharp_teeth = 1, + /obj/item/stack/sheet/bone = 1, + /obj/item/reagent_containers/food/snacks/bait/random = 2, + /obj/effect/spawner/random_spawners/lavaland_random_loot = 2, + /obj/item/lavaland_dye/crimson = 1, + ) + +/obj/item/lavaland_fish/deep_water/magma_hammerhead + name = "magma hammerhead" + desc = "Огромная глубоководная рыба тёмного окраса с характерной головой, отдалённо напоминающей молот. Несмотря на угрожающий внешний вид, данный тип рыб преимущественно охотится на мелких ракообразных, придавливая их своем \"молотом\" ко дну и раздавливая их панцирь. По краям их головы находятся странноватые сгустки, синергирующие с регенеративными ядрами." + ru_names = list( + NOMINATIVE = "магмовая акула-молот", + GENITIVE = "магмовой акулы-молота", + DATIVE = "магмовой акуле-молоту", + ACCUSATIVE = "магмовую акулу-молот", + INSTRUMENTAL = "магмовой акулой-молотом", + PREPOSITIONAL = "магмовой акуле-молоте", + ) + gender = FEMALE + icon_state = "magma_hammerhead" + item_state = "magma_hammerhead" + favorite_bait = /obj/item/reagent_containers/food/snacks/bait/goldgrub_larva + butcher_loot = list( + /obj/item/hivelordstabilizer/molten_mass = 2, + /obj/item/lavaland_dye/cinnabar = 1, + ) + +/obj/item/lavaland_fish/deep_water/blind_reaper + name = "blind reaper" + desc = "Самая маленькая представительница глубоководных рыб Лазис Ардакса, она привлекает к себе внимание не только небольшим размером, но и огромным костным наростом на голове, напоминающем лезвие циркулярной пилы. Данный вид, будучи лишённым зрения, использует своё лезвие в качестве биологического сонара, что помогает ей ориентироваться на огромных лавовых глубинах." + ru_names = list( + NOMINATIVE = "ослеплённый жнец", + GENITIVE = "ослеплённого жнеца", + DATIVE = "ослеплённому жнецу", + ACCUSATIVE = "ослеплённого жнеца", + INSTRUMENTAL = "ослеплённым жнецом", + PREPOSITIONAL = "ослеплённом жнеце", + ) + icon_state = "blind_reaper" + item_state = "blind_reaper" + throwforce = 20 + force = 10 + hitsound = 'sound/weapons/circsawhit.ogg' + favorite_bait = /obj/item/reagent_containers/food/snacks/bait/ash_eater + butcher_loot = list( + /obj/item/circular_saw_blade = 1, + /obj/item/reagent_containers/food/snacks/lavaland/predator_meat = 1, + /obj/item/lavaland_dye/indigo = 1, + ) + + +/obj/item/lavaland_fish/deep_water/herald_of_carnage + name = "herald of carnage" + desc = "Эта массивная рыба, имеющая в своей пасти сотни бритвенно острых зубов, признана высшим хищником среди всего подводного мира Лазис Ардакса. Её массивные зелёные глаза используются в качестве украшения для самых прославленных охотников среди местных племён. В её желудке достаточно часто находят останки других рыб. И не только рыб." + ru_names = list( + NOMINATIVE = "вестник резни", + GENITIVE = "вестника резни", + DATIVE = "вестнику резни", + ACCUSATIVE = "вестника резни", + INSTRUMENTAL = "вестником резни", + PREPOSITIONAL = "вестнике резни", + ) + icon_state = "herald_of_carnage" + item_state = "herald_of_carnage" + favorite_bait = /obj/item/reagent_containers/food/snacks/bait/bloody_leach + butcher_loot = list( + /obj/item/stack/sheet/razor_sharp_teeth = 2, + /obj/item/stack/sheet/bone = 2, + /obj/item/reagent_containers/food/snacks/lavaland/predator_meat = 1, + /obj/effect/spawner/random_spawners/lavaland_random_loot = 3, + /obj/item/lavaland_dye/mint = 1, + ) + +/obj/item/lavaland_fish/deep_water/sulfuric_tramp + name = "sulfuric tramp" + desc = "Данный вид рыб никогда не был зафиксирован ни в одной исследовательской работе по изучению фауны Лазис Ардакса - это инвазивный вид, попавший в лавовые реки в результате крушения контрабандистского судна, перевозившего фауну с неизвестной кислотной планеты. Судя по всему, эти рыбы нашли свою нишу в пищевой цепи." + ru_names = list( + NOMINATIVE = "сернистый странник", + GENITIVE = "сернистого странника", + DATIVE = "сернистому страннику", + ACCUSATIVE = "сернистого странника", + INSTRUMENTAL = "сернистым странником", + PREPOSITIONAL = "сернистом страннике", + ) + icon_state = "sulfuric_tramp" + item_state = "sulfuric_tramp" + favorite_bait = /obj/item/reagent_containers/food/snacks/bait/goldgrub_larva + butcher_loot = list( + /obj/item/t_scanner/adv_mining_scanner/bleary_eye = 1, + /obj/item/acid_bladder = 1, + /obj/item/lavaland_dye/amber = 1, + ) + +/obj/item/lavaland_fish/deep_water/sulfuric_tramp/check_special_harvest() + var/location = get_turf(src) + var/datum/reagents/reagents_list = new (500) + reagents_list.add_reagent("sacid", 2450) + + var/datum/effect_system/fluid_spread/smoke/chem/smoke = new + smoke.set_up(range = 2, carry = reagents_list, location = location) + smoke.start() diff --git a/code/modules/mining/ash_walkers/lavaland_dye.dm b/code/modules/mining/ash_walkers/lavaland_dye.dm new file mode 100644 index 000000000000..dab5c15a87df --- /dev/null +++ b/code/modules/mining/ash_walkers/lavaland_dye.dm @@ -0,0 +1,208 @@ +/obj/item/lavaland_dye + name = "generic dye" + desc = "Если вы это видите, то Зюзя дебил конечно." + gender = FEMALE + icon = 'icons/obj/lavaland/lava_fishing.dmi' + icon_state = "cinnabar_spleen" + lefthand_file = 'icons/mob/inhands/lavaland/fish_items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/lavaland/fish_items_righthand.dmi' + item_state = "spleen" + w_class = WEIGHT_CLASS_TINY + /// Name of body marking, that applies to human + var/picked_dye = "Cinnabar Dyes" + /// Name of overlay, that applies to totem + var/totem_dye = "сinnabar" + /// Fluff russian name for examine + var/fluff_name = "киноварная" + +/obj/item/lavaland_dye/cinnabar + name = "cinnabar-colored spleen" + desc = "Селезёнка, добытая из тела лавовой рыбы. Содержит в себе частицы киновари и обладает характерным коричневато-красным цветом." + ru_names = list( + NOMINATIVE = "селезёнка киноварного цвета", + GENITIVE = "селезёнки киноварного цвета", + DATIVE = "селезёнке киноварного цвета", + ACCUSATIVE = "селезёнку киноварного цвета", + INSTRUMENTAL = "селезёнкой киноварного цвета", + PREPOSITIONAL = "селезёнке киноварного цвета", + ) + icon_state = "cinnabar_spleen" + picked_dye = "Cinnabar Dyes" + totem_dye = "cinnabar" + fluff_name = "киноварная" + +/obj/item/lavaland_dye/crimson + name = "crimson-colored spleen" + desc = "Селезёнка, добытая из тела лавовой рыбы. Содержит в себе частицы неизвестной жидкости, похожей на кровь, и обладает характерным кроваво-красным цветом." + ru_names = list( + NOMINATIVE = "селезёнка кровавого цвета", + GENITIVE = "селезёнки кровавого цвета", + DATIVE = "селезёнке кровавого цвета", + ACCUSATIVE = "селезёнку кровавого цвета", + INSTRUMENTAL = "селезёнкой кровавого цвета", + PREPOSITIONAL = "селезёнке кровавого цвета", + ) + icon_state = "crimson_spleen" + picked_dye = "Crimson Dyes" + totem_dye = "crimson" + fluff_name = "кровавая" + +/obj/item/lavaland_dye/indigo + name = "indigo-colored spleen" + desc = "Селезёнка, добытая из тела лавовой рыбы. Содержит в себе вещество, похожее на чернила, и обладает характерным тёмно-синим цветом." + ru_names = list( + NOMINATIVE = "селезёнка тёмно-синего цвета", + GENITIVE = "селезёнки тёмно-синего цвета", + DATIVE = "селезёнке тёмно-синего цвета", + ACCUSATIVE = "селезёнку тёмно-синего цвета", + INSTRUMENTAL = "селезёнкой тёмно-синего цвета", + PREPOSITIONAL = "селезёнке тёмно-синего цвета", + ) + icon_state = "indigo_spleen" + picked_dye = "Indigo Dyes" + totem_dye = "indigo" + fluff_name = "тёмно-синяя" + +/obj/item/lavaland_dye/mint + name = "mint-colored spleen" + desc = "Селезёнка, добытая из тела лавовой рыбы. Содержит в себе частицы минералов и обладает характерным мятно-зелёным цветом." + ru_names = list( + NOMINATIVE = "селезёнка мятного цвета", + GENITIVE = "селезёнки мятного цвета", + DATIVE = "селезёнке мятного цвета", + ACCUSATIVE = "селезёнку мятного цвета", + INSTRUMENTAL = "селезёнкой мятного цвета", + PREPOSITIONAL = "селезёнке мятного цвета", + ) + icon_state = "mint_spleen" + picked_dye = "Mint Dyes" + totem_dye = "mint" + fluff_name = "мятная" + +/obj/item/lavaland_dye/amber + name = "amber-colored spleen" + desc = "Селезёнка, добытая из тела лавовой рыбы. Содержит в себе частицы природного янтаря и обладает характерным янтарно-желтым цветом." + ru_names = list( + NOMINATIVE = "селезёнка янтарного цвета", + GENITIVE = "селезёнки янтарного цвета", + DATIVE = "селезёнке янтарного цвета", + ACCUSATIVE = "селезёнку янтарного цвета", + INSTRUMENTAL = "селезёнкой янтарного цвета", + PREPOSITIONAL = "селезёнке янтарного цвета", + ) + icon_state = "amber_spleen" + picked_dye = "Amber Dyes" + totem_dye = "amber" + fluff_name = "янтарная" + +/obj/item/lavaland_mortar + name = "wooden mortar" + desc = "Небольшая ступка с находящейся в ней растолочённой селезёнкой. Используется для нанесения красок на тело." + ru_names = list( + NOMINATIVE = "деревянная ступка", + GENITIVE = "деревянной ступки", + DATIVE = "деревянной ступке", + ACCUSATIVE = "деревянную ступку", + INSTRUMENTAL = "деревянной ступкой", + PREPOSITIONAL = "деревянной ступке", + ) + gender = FEMALE + icon = 'icons/obj/lavaland/lava_fishing.dmi' + icon_state = "amber_dyes" + lefthand_file = 'icons/mob/inhands/lavaland/fish_items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/lavaland/fish_items_righthand.dmi' + item_state = "paint" + w_class = WEIGHT_CLASS_TINY + /// Name of body marking, that applies to human + var/picked_dye = "Cinnabar Dyes" + /// Name of overlay, that applies to totem, also used in icon_states + var/totem_dye = "сinnabar" + /// Fluff russian name for examine + var/fluff_name = "киноварная" + /// How many times you can use it + var/uses = 5 + +/obj/item/lavaland_mortar/examine(mob/user) + . = ..() + . += span_notice("В ступке находится [fluff_name] краска.") + if(uses > 0) //what if someone makes -1 uses for testing or smth + . += span_notice("Краски в ступке осталось на [uses] использовани[declension_ru(uses, "е", "я", "й")].") + +/obj/item/lavaland_mortar/cinnabar_dyes + icon_state = "cinnabar_dyes" + picked_dye = "Cinnabar Dyes" + totem_dye = "cinnabar" + fluff_name = "киноварная" + +/obj/item/lavaland_mortar/crimson_dyes + icon_state = "crimson_dyes" + picked_dye = "Crimson Dyes" + totem_dye = "crimson" + fluff_name = "кровавая" + +/obj/item/lavaland_mortar/indigo_dyes + icon_state = "indigo_dyes" + picked_dye = "Indigo Dyes" + totem_dye = "indigo" + fluff_name = "тёмно-синяя" + +/obj/item/lavaland_mortar/mint_dyes + icon_state = "mint_dyes" + picked_dye = "Mint Dyes" + totem_dye = "mint" + fluff_name = "мятная" + +/obj/item/lavaland_mortar/amber_dyes + icon_state = "amber_dyes" + picked_dye = "Amber Dyes" + totem_dye = "amber" + fluff_name = "янтарная" + +/obj/item/lavaland_mortar/update_icon_state() + . = ..() + icon_state = "[totem_dye]_dyes" + +/obj/item/lavaland_mortar/attack(mob/living/carbon/human/target, mob/living/user, params, def_zone, skip_attack_anim) + if(!isunathi(target)) + balloon_alert(user, "цель неподходящей расы!") + return ..() + + if(user.a_intent != INTENT_HELP) + return ..() + + . = ATTACK_CHAIN_PROCEED + + to_chat(user, span_notice("Вы начинаете наносить краску на [target].")) + if(!do_after(user, 5 SECONDS, target, max_interact_count = 1, cancel_on_max = TRUE, cancel_message = span_warning("Вы прекращаете наносить краску на тело."))) + return ..() + + target.change_markings(picked_dye, location = "body") + uses-- + if(!uses) + balloon_alert(user, "краска закончилась!") + qdel(src) + var/obj/item/reagent_containers/food/drinks/mushroom_bowl/bowl = new(loc) + user.put_in_hands(bowl) + +/obj/item/lavaland_mortar/attack_obj(obj/object, mob/living/user, params) + if(!istype(object, /obj/structure/ash_totem)) + return ..() + + . = ATTACK_CHAIN_PROCEED_SUCCESS + + var/obj/structure/ash_totem/totem = object + to_chat(user, span_notice("Вы начинаете наносить краску на [totem.declent_ru(ACCUSATIVE)].")) + + if(!do_after(user, 5 SECONDS, totem, max_interact_count = 1, cancel_on_max = TRUE, cancel_message = span_warning("Вы прекращаете наносить краску на [totem.declent_ru(ACCUSATIVE)]."))) + return ..() + + totem.applied_dye = totem_dye + totem.applied_dye_fluff_name = fluff_name + totem.update_icon(UPDATE_OVERLAYS) + + uses-- + if(!uses) + balloon_alert(user, "краска закончилась!") + qdel(src) + var/obj/item/reagent_containers/food/drinks/mushroom_bowl/bowl = new(loc) + user.put_in_hands(bowl) diff --git a/code/modules/mining/ash_walkers/misc.dm b/code/modules/mining/ash_walkers/misc.dm new file mode 100644 index 000000000000..a3d77d92d6a2 --- /dev/null +++ b/code/modules/mining/ash_walkers/misc.dm @@ -0,0 +1,295 @@ +//********** Acid Bladder **********// +/obj/item/acid_bladder + name = "acid bladder" + desc = "Небольшой кислотный мешочек, добытый с тела сернистого странника. Оболочка данного пузыря достаточно слабая и вероятнее всего разорвётся при броске во что-то. Или в кого-то." + ru_names = list( + NOMINATIVE = "кислотный мешочек", + GENITIVE = "кислотного мешочка", + DATIVE = "кислотному мешочку", + ACCUSATIVE = "кислотный мешочек", + INSTRUMENTAL = "кислотным мешочком", + PREPOSITIONAL = "кислотном мешочке" + ) + gender = MALE + icon = 'icons/obj/lavaland/lava_fishing.dmi' + icon_state = "acid_bladder" + lefthand_file = 'icons/mob/inhands/lavaland/fish_items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/lavaland/fish_items_righthand.dmi' + item_state = "acid_bladder" + w_class = WEIGHT_CLASS_TINY + +/obj/item/acid_bladder/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + . = ..() + if(isliving(hit_atom)) + var/mob/living/living = hit_atom + var/datum/reagents/reagents_list = new (50) + reagents_list.add_reagent("facid", 40) + living.visible_message(span_danger("Кислотный пузырек разрывается при попадании на [living], разбрызгивая кислоту по [genderize_ru(living.gender, "его", "её", "его", "их")] телу!")) + reagents_list.reaction(living, REAGENT_TOUCH) + reagents_list.clear_reagents() + else if(iswallturf(hit_atom)) + var/turf/simulated/wall/wall_target = hit_atom + hit_atom.visible_message(span_danger("Кислотный пузырек разрывается при попадании на стену, медленно её расплавляя!")) + wall_target.rot() + else + var/datum/reagents/reagents_list = new (100) + reagents_list.add_reagent("facid", 80) + reagents_list.reaction(hit_atom, REAGENT_TOUCH) + qdel(src) + +//********** Saw Blade **********// +/obj/item/circular_saw_blade + name = "circular saw blade" + desc = "Костный нарост, похожий на лезвие циркулярной пилы, вырванный из черепа ослеплённого жнеца. Может быть использован для улучшения костяного топора." + ru_names = list( + NOMINATIVE = "лезвие дисковой пилы", + GENITIVE = "лезвия дисковой пилы", + DATIVE = "лезвию дисковой пилы", + ACCUSATIVE = "лезвие дисковой пилы", + INSTRUMENTAL = "лезвием дисковой пилы", + PREPOSITIONAL = "лезвии дисковой пилы" + ) + icon = 'icons/obj/lavaland/lava_fishing.dmi' + icon_state = "circular_saw_blade" + lefthand_file = 'icons/mob/inhands/lavaland/fish_items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/lavaland/fish_items_righthand.dmi' + item_state = "circular_saw_blade" + w_class = WEIGHT_CLASS_TINY + +//**********Grace of Lazis **********// +/obj/structure/grace_of_lazis + name = "grace of lazis" + desc = "Огромное количество мяса, насаженного на костяное копье. Символ невероятно удачного сезона охоты." + ru_names = list( + NOMINATIVE = "благодать Лазис Ардакса", + GENITIVE = "благодати Лазис Ардакса", + DATIVE = "благодати Лазис Ардакса", + ACCUSATIVE = "благодать Лазис Ардакса", + INSTRUMENTAL = "благодатью Лазис Ардакса", + PREPOSITIONAL = "благодати Лазис Ардакса" + ) + gender = FEMALE + icon = 'icons/obj/lavaland/grace_of_lazis.dmi' + icon_state = "grace_of_lazis4" + anchored = TRUE + density = TRUE + max_integrity = 1000 + var/meat_parts = 40 + +/obj/structure/grace_of_lazis/attackby(obj/item/I, mob/user, params) + if(!istype(I, /obj/item/kitchen/knife)) + return ..() + + to_chat(user, span_notice("Вы начинаете отрезать порцию мяса от постамента.")) + + if(!do_after(user, 3 SECONDS, src, max_interact_count = 1)) + return ..() + + meat_parts-- + update_icon(UPDATE_ICON_STATE) + to_chat(user, span_notice("Вы отрезаете порцию мяса с постамента.")) + var/obj/item/reagent_containers/food/snacks/lavaland_food/grace_of_lazis/food = new() + user.put_in_hands(food) + if(meat_parts == 0) + visible_message(span_warning("От постамента остаётся лишь одно копье!")) + new /obj/item/twohanded/spear/bonespear(src.loc) + qdel(src) + return ATTACK_CHAIN_PROCEED + return ATTACK_CHAIN_BLOCKED + +/obj/structure/grace_of_lazis/update_icon_state() + switch(meat_parts) + if(1 to 10) + icon_state = "grace_of_lazis1" + if(11 to 20) + icon_state = "grace_of_lazis2" + if(21 to 30) + icon_state = "grace_of_lazis3" + if(31 to INFINITY) + icon_state = "grace_of_lazis4" + +//**********Food Scroll**********// +/obj/item/book/manual/lavaland_scroll + name = "cooking scroll" + desc = "Пергамент, изготовленный из человеческой кожи. На нём нанесена информация о том, как прокормить голодное племя." + ru_names = list( + NOMINATIVE = "свиток готовки", + GENITIVE = "свитка готовки", + DATIVE = "свитку готовки", + ACCUSATIVE = "свиток готовки", + INSTRUMENTAL = "свитком готовки", + PREPOSITIONAL = "свитке готовки" + ) + gender = MALE + icon_state = "food_scroll" + item_state = "food_scroll" + author = "Шаман голодного племени" + title = "Руководство по Готовке" + wiki_title = "Еда_пеплоходцев" + +/obj/structure/fluff/ash_statue //used to mark point of interest + name = "тотем" + desc = "Массивный каменный столб с прикреплённым к нему черепом убитого зверя. Кажется, вы зашли в охотничьи угодья пеплоходцев." + ru_names = list( + NOMINATIVE = "пепельный тотем", + GENITIVE = "пепельного тотема", + DATIVE = "пепельному тотему", + ACCUSATIVE = "пепельный тотем", + INSTRUMENTAL = "пепельным тотемом", + PREPOSITIONAL = "пепельном тотеме" + ) + icon = 'icons/obj/lavaland/grace_of_lazis.dmi' + icon_state = "totem_stone" + anchored = TRUE + density = TRUE + deconstructible = FALSE + /// Used in shaman spell. Perfect for finding stuff ic + var/special_name = "точка интереса" + +/obj/structure/fluff/ash_statue/Initialize(mapload) + name = "тотем - [special_name]" + GLOB.lavaland_points_of_interest += src + . = ..() + +/obj/structure/fluff/ash_statue/Destroy(force) + GLOB.lavaland_points_of_interest -= src + . = ..() + + +/obj/structure/ash_totem + name = "totem" + desc = "Совершенно обычный тотем! Выглядит прикольно. Вы не должны видеть это." + ru_names = list( + NOMINATIVE = "тотем", + GENITIVE = "тотема", + DATIVE = "тотему", + ACCUSATIVE = "тотем", + INSTRUMENTAL = "тотемом", + PREPOSITIONAL = "тотеме" + ) + gender = MALE + icon = 'icons/obj/lavaland/grace_of_lazis.dmi' + icon_state = "totem_wooden" + max_integrity = 1000 + anchored = TRUE + density = TRUE + var/applied_dye = null + var/applied_dye_fluff_name = null + +/obj/structure/ash_totem/examine(mob/user) + . = ..() + . += span_notice("Эта статуя может использоваться вместо полноценного пеплоходца, если будет построена у ритуальной руны.") + + if(applied_dye && applied_dye_fluff_name) //jeez this is so hard to make it in russian holy fuck + . += span_notice("На эту статую нанесена [applied_dye_fluff_name] краска.") + +/obj/structure/ash_totem/update_overlays() + . = ..() + if(applied_dye) + . += "[icon_state]_[applied_dye]" + + +/obj/structure/ash_totem/wooden + name = "wooden totem" + desc = "Массивная статуя, сделанная из цельного куска древесины. Рисунок на статуе отдалённо напоминает человеческое лицо, искаженное в гримасе ужаса." + ru_names = list( + NOMINATIVE = "деревянный тотем", + GENITIVE = "деревянного тотема", + DATIVE = "деревянному тотему", + ACCUSATIVE = "деревянный тотем", + INSTRUMENTAL = "деревянным тотемом", + PREPOSITIONAL = "деревянном тотеме" + ) + icon_state = "totem_wooden" + +/obj/structure/ash_totem/stone + name = "stone totem" + desc = "Массивная каменная статуя с прикреплённым к ней черепом убитого животного. Сухожилия, держащие череп на месте, медленно покачиваются на ветру." + ru_names = list( + NOMINATIVE = "каменный тотем", + GENITIVE = "каменного тотема", + DATIVE = "каменному тотему", + ACCUSATIVE = "каменный тотем", + INSTRUMENTAL = "каменным тотемом", + PREPOSITIONAL = "каменном тотеме" + ) + icon_state = "totem_stone" + +/obj/structure/ash_totem/bone + name = "bone totem" + desc = "Массивная статуя, сделанная из огромной кости. Вы не знаете, какому именно животному принадлежит эта кость, и вы явно не хотите это узнавать." + ru_names = list( + NOMINATIVE = "костяной тотем", + GENITIVE = "костяного тотема", + DATIVE = "костяному тотему", + ACCUSATIVE = "костяной тотем", + INSTRUMENTAL = "костяным тотемом", + PREPOSITIONAL = "костяном тотеме" + ) + icon_state = "totem_bone" + +/obj/structure/chair/stool/wooden + name = "wooden stool" + desc = "Деревянная табуретка. Достаточно удобная, чтобы на ней сидеть." + ru_names = list( + NOMINATIVE = "деревянная табуретка", + GENITIVE = "деревянной табуретки", + DATIVE = "деревянной табуретке", + ACCUSATIVE = "деревянную табуретку", + INSTRUMENTAL = "деревянной табуреткой", + PREPOSITIONAL = "деревянной табуретке" + ) + gender = FEMALE + icon_state = "wooden_stool" + item_chair = /obj/item/chair/stool/wooden + +/obj/item/chair/stool/wooden + name = "wooden stool" + desc = "Деревянная табуретка. Достаточно удобная, чтобы держать её в руках." + ru_names = list( + NOMINATIVE = "деревянная табуретка", + GENITIVE = "деревянной табуретки", + DATIVE = "деревянной табуретке", + ACCUSATIVE = "деревянную табуретку", + INSTRUMENTAL = "деревянной табуреткой", + PREPOSITIONAL = "деревянной табуретке" + ) + gender = FEMALE + icon = 'icons/obj/chairs.dmi' + icon_state = "wooden_stool_toppled" + lefthand_file = 'icons/mob/inhands/lavaland/misc_lefthand.dmi' + righthand_file = 'icons/mob/inhands/lavaland/misc_righthand.dmi' + item_state = "wooden_stool" + force = 8 + origin_type = /obj/structure/chair/stool/wooden + break_chance = 10 + +/obj/structure/rack/wooden + name = "wooden rack" + desc = "Небольшой стеллаж, сделанный из дерева. Вы можете хранить на нём вещи!" + ru_names = list( + NOMINATIVE = "деревянный стеллаж", + GENITIVE = "деревянного стеллажа", + DATIVE = "деревянному стеллажу", + ACCUSATIVE = "деревянный стеллаж", + INSTRUMENTAL = "деревянным стеллажом", + PREPOSITIONAL = "деревянном стеллаже" + ) + icon_state = "wooden_rack" + wooden_version = TRUE + obj_flags = NODECONSTRUCT + +/obj/structure/rack/wooden/Initialize(mapload) + . = ..() + update_overlays() + +/obj/structure/rack/wooden/wrench_act(mob/user, obj/item/I) + return + +/obj/structure/rack/wooden/MouseDrop_T(obj/item/dropping, mob/user, params) + . = ..() + update_icon(UPDATE_OVERLAYS) + +/obj/structure/rack/wooden/update_overlays() + overlays.Cut() + overlays += image('icons/obj/objects.dmi', src, "wooden_rack_overlay", ABOVE_OBJ_LAYER) diff --git a/code/modules/mining/ash_walkers/torch_holder.dm b/code/modules/mining/ash_walkers/torch_holder.dm new file mode 100644 index 000000000000..be1c05352c67 --- /dev/null +++ b/code/modules/mining/ash_walkers/torch_holder.dm @@ -0,0 +1,279 @@ +//special torch lamps + +#define TORCH_OK 0 +#define TORCH_EMPTY 1 +#define TORCH_OFF 2 +#define TORCH_BURNED 3 + +/obj/item/mounted/frame/torch_holder + name = "torch holder" + desc = "Один из самых популярных способов осветить пространство в средневековых замках." + ru_names = list( + NOMINATIVE = "крепление для факела", + GENITIVE = "крепления для факела", + DATIVE = "креплению для факела", + ACCUSATIVE = "крепление для факела", + INSTRUMENTAL = "креплением для факела", + PREPOSITIONAL = "креплении для факела", + ) + icon = 'icons/obj/lighting.dmi' + icon_state = "torch_holder_item" + mount_reqs = list("simfloor", "nospace") + +/obj/item/mounted/frame/torch_holder/do_build(turf/on_wall, mob/user) + to_chat(user, span_notice("Вы начинаете устанавливать [declent_ru(ACCUSATIVE)] на [on_wall.declent_ru(ACCUSATIVE)].")) + playsound(get_turf(src), 'sound/machines/click.ogg', 75, 1) + + var/constrdir = user.dir + var/constrloc = get_turf(user) + if(!do_after(user, 4 SECONDS, on_wall, max_interact_count = 1, cancel_on_max = TRUE, cancel_message = span_notice("Вы прекращаете устанавливать [declent_ru(ACCUSATIVE)]."))) + return + + var/obj/structure/torch_holder/built/torch = new(constrloc) + torch.dir = constrdir + torch.fingerprints = src.fingerprints + torch.fingerprintshidden = src.fingerprintshidden + torch.fingerprintslast = src.fingerprintslast + user.visible_message(span_notice("[user] устанавлива[pluralize_ru(user.gender, "ет", "ют")] [declent_ru(ACCUSATIVE)] на [on_wall.declent_ru(ACCUSATIVE)]"), \ + span_notice("вы устанавливаете [declent_ru(ACCUSATIVE)] на [on_wall.declent_ru(ACCUSATIVE)].")) + qdel(src) + +/obj/structure/torch_holder + name = "torch holder" + desc = "Красиво выглядящее крепление для факела." + ru_names = list( + NOMINATIVE = "крепление для факела", + GENITIVE = "крепления для факела", + DATIVE = "креплению для факела", + ACCUSATIVE = "крепление для факела", + INSTRUMENTAL = "креплением для факела", + PREPOSITIONAL = "креплении для факела", + ) + icon = 'icons/obj/lighting.dmi' + icon_state = "torch_holder" + /// Our torch, that stored in holder + var/obj/item/flashlight/flare/torch/fakel + /// For mapping. Ancient torches can't be taken away and they are infinite + var/ancient = FALSE + /// Light range when on. Standart torch is brighter, this is for mapping reason. + var/brightness_range = 5 + /// Light colour when on + var/brightness_color = "#dc8a38" + /// Light power when on + var/brightness_power = 1 + /// Torch holder status (TORCH_OK | TORCH_EMPTY | TORCH_OFF | TORCH_BURNED) + var/status = TORCH_OK + /// Fuel consumption + var/fuel = 0 + /// New torch related stuff + var/fuel_lower = 0 + var/fuel_upp = 0 + /// Timer for our torch. + var/timer = null + +/obj/structure/torch_holder/Initialize(mapload) //mapping version, preloaded with torch + . = ..() + fakel = new(src) + fuel = fakel.fuel + update_icon(UPDATE_OVERLAYS) + update_light_state() + if(TORCH_OK && !ancient) + timer = addtimer(CALLBACK(src, PROC_REF(burnout)), fuel SECONDS, TIMER_STOPPABLE|TIMER_UNIQUE) //hope this works + +/obj/structure/torch_holder/Destroy() + . = ..() + QDEL_NULL(fakel) + deltimer(timer) + +/obj/structure/torch_holder/examine(mob/user) + . = ..() + switch(status) + if(TORCH_OK) + . += span_notice("[capitalize(fakel.declent_ru(NOMINATIVE))] ярко горит.") + if(TORCH_EMPTY) + . += span_notice("Внутри нет факела.") + if(TORCH_OFF) + . += span_notice("[capitalize(fakel.declent_ru(NOMINATIVE))] не подожжён.") + if(TORCH_BURNED) + . += span_notice("[capitalize(fakel.declent_ru(NOMINATIVE))] выгорел.") + +/obj/structure/torch_holder/proc/update_light_state() //I can't make it better.. + switch(status) + if(TORCH_OFF, TORCH_BURNED, TORCH_EMPTY) + set_light(0) + return + else + light_range = brightness_range + light_power = brightness_power + light_color = brightness_color + update_light() + +/obj/structure/torch_holder/proc/burnout() + if(ancient) + return + fuel = 0 //if someone will take our fakel + status = TORCH_BURNED + update_light_state() + update_icon(UPDATE_OVERLAYS) + deltimer(timer) + +/obj/structure/torch_holder/update_overlays() + . = ..() + if(ancient) + return + overlays.Cut() + switch(status) // set overlays + if(TORCH_OK) + overlays += "torch_overlay" + if(TORCH_OFF, TORCH_BURNED) + overlays += "torch_overlay_not_light" + if(TORCH_EMPTY) + overlays += "" + +/obj/structure/torch_holder/attackby(obj/item/item, mob/user, params) + if(user.a_intent == INTENT_HARM) + return ..() + + if(ancient) + return ..() + + if(istype(item, /obj/item/flashlight/flare/torch)) + var/obj/item/flashlight/flare/torch/torch = item + + if(status != TORCH_EMPTY) + if(status == TORCH_OFF && torch.on) + balloon_alert(user, "факел подожжён!") + status = TORCH_OK + update_icon(UPDATE_OVERLAYS) + + brightness_range = torch.light_range + brightness_power = torch.light_power + brightness_color = torch.light_color + + update_light_state() + timer = addtimer(CALLBACK(src, PROC_REF(burnout)), fuel SECONDS, TIMER_STOPPABLE|TIMER_UNIQUE) + return ATTACK_CHAIN_BLOCKED_ALL + else + balloon_alert(user, "уже есть!") + return ATTACK_CHAIN_PROCEED + else + add_fingerprint(user) + + if(!torch.fuel) + balloon_alert(user, "ваш факел выгорел!") + return ATTACK_CHAIN_PROCEED + balloon_alert(user, "факел установлен") + if(!torch.on) + status = TORCH_OFF + else + status = TORCH_OK + + set_light_range_power_color(torch.light_range, torch.light_power, torch.light_color) + + fuel = torch.fuel + fuel_lower = torch.fuel_lower + fuel_upp = torch.fuel_upp + update_icon(UPDATE_OVERLAYS) + update_light_state() + if(status == TORCH_OK) + timer = addtimer(CALLBACK(src, PROC_REF(burnout)), fuel SECONDS, TIMER_STOPPABLE|TIMER_UNIQUE) + user.drop_transfer_item_to_loc(torch, src) //drop the item to update overlays and such + qdel(torch) + return ATTACK_CHAIN_BLOCKED_ALL + +/obj/structure/torch_holder/attack_hand(mob/user) + if(ancient) + balloon_alert(user, "невозможно вынуть!") + return FALSE + + user.changeNext_move(CLICK_CD_MELEE) + add_fingerprint(user) + + if(status == TORCH_EMPTY) + balloon_alert(user, "внутри пусто!") + return FALSE + + // make it burn hands if not wearing fire-insulated gloves + if(status == TORCH_OK) + var/prot = 0 + var/mob/living/carbon/human/H = user + if(istype(H)) + if(H.gloves) + var/obj/item/clothing/gloves/G = H.gloves + if(G.max_heat_protection_temperature) + prot = (G.max_heat_protection_temperature > fakel.get_heat()) + else + prot = 1 + + if(prot > 0 || HAS_TRAIT(user, TRAIT_RESIST_HEAT)) + to_chat(user, span_notice("Вы вытаскиваете [fakel.declent_ru(ACCUSATIVE)].")) + else if(HAS_TRAIT(user, TRAIT_TELEKINESIS)) + to_chat(user, span_notice("Вы вытаскиваете [fakel.declent_ru(ACCUSATIVE)] с помощью телекинеза.")) + else + if(user.a_intent == INTENT_DISARM || user.a_intent == INTENT_GRAB) + to_chat(user, span_warning("Вы пытаетесь вытащить [fakel.declent_ru(ACCUSATIVE)], но обжигаетесь в процессе!")) + H.apply_damage(5, BURN, def_zone = H.hand ? BODY_ZONE_PRECISE_L_HAND : BODY_ZONE_PRECISE_R_HAND) + return FALSE + else + to_chat(user, span_warning("Вы пытаетесь вытащить [fakel.declent_ru(ACCUSATIVE)], но он слишком горячий!")) + return FALSE + else + balloon_alert(user, "факел вынут") + + drop_fakel(user) + +/obj/structure/torch_holder/proc/drop_fakel(mob/user) + var/obj/item/flashlight/flare/torch/torch = new(src) + if(status == TORCH_OK) + torch.attack_self(user)//forcing it to light up and start processing + var/our_fuel = timeleft(timer) / 10 + torch.fuel = our_fuel + + torch.set_light_range_power_color(brightness_range, brightness_power, brightness_color) + + torch.update_brightness() + + torch.forceMove(loc) + if(user) //puts it in our active hand + torch.add_fingerprint(user) + user.put_in_active_hand(torch, ignore_anim = FALSE) + + status = TORCH_EMPTY + update_icon(UPDATE_OVERLAYS) + update_light_state() + deltimer(timer) + return torch + +/obj/structure/torch_holder/mapping //infinite mapping version + name = "ancient torch holder" + desc = "Красиво выглядящее крепление для факела. Поверхность проржавела от времени, а сам факел практически прирос к креплению." + ru_names = list( + NOMINATIVE = "древнее крепление для факела", + GENITIVE = "древнего крепления для факела", + DATIVE = "древнему креплению для факела", + ACCUSATIVE = "древнее крепление для факела", + INSTRUMENTAL = "древним креплением для факела", + PREPOSITIONAL = "древнем креплении для факела", + ) + icon_state = "torch_holder_complete" + ancient = TRUE + +/obj/structure/torch_holder/mapping/Initialize(mapload) + . = ..() + fuel = INFINITY + +/obj/structure/torch_holder/built/Initialize(mapload) + status = TORCH_EMPTY + ..() + +/obj/structure/torch_holder/extinguish_light(force = FALSE) + if(force) + burnout() + visible_message(span_danger("[capitalize(fakel.declent_ru(NOMINATIVE))] быстро выгорает!")) + else + visible_message(span_notice("[capitalize(fakel.declent_ru(NOMINATIVE))] ненадолго меркнет, после чего снова начинает освещать пространство вокруг.")) + +#undef TORCH_OK +#undef TORCH_EMPTY +#undef TORCH_OFF +#undef TORCH_BURNED diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index 82abf5c9b974..1b15289a9c66 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -1,7 +1,15 @@ /****************Explorer's Suit and Mask****************/ /obj/item/clothing/suit/hooded/explorer name = "explorer suit" - desc = "An armoured suit for exploring harsh environments." + desc = "Бронированный костюм, созданный для исследования и работы в суровых условиях." + ru_names = list( + NOMINATIVE = "костюм исследователя", + GENITIVE = "костюма исследователя", + DATIVE = "костюму исследователя", + ACCUSATIVE = "костюм исследователя", + INSTRUMENTAL = "костюмом исследователя", + PREPOSITIONAL = "костюме исследователя" + ) icon_state = "explorer" item_state = "explorer" item_color = "explorer" @@ -34,7 +42,15 @@ /obj/item/clothing/head/hooded/explorer name = "explorer hood" - desc = "An armoured hood for exploring harsh environments." + desc = "Бронированный капюшон, созданный для исследования и работы в суровых условиях." + ru_names = list( + NOMINATIVE = "капюшон исследователя", + GENITIVE = "капюшона исследователя", + DATIVE = "капюшону исследователя", + ACCUSATIVE = "капюшон исследователя", + INSTRUMENTAL = "капюшоном исследователя", + PREPOSITIONAL = "капюшоне исследователя" + ) icon_state = "explorer" item_state = "explorer" body_parts_covered = HEAD @@ -65,7 +81,15 @@ /obj/item/clothing/suit/space/hostile_environment name = "H.E.C.K. suit" - desc = "Hostile Environment Cross-Kinetic Suit: A suit designed to withstand the wide variety of hazards from Lavaland. It wasn't enough for its last owner." + desc = "Экспериментальный Кинетический Защитный Обшитый Костюм: костюм, специально созданный для защиты от широкого спектра опасностей Лаваленда. Прошлому его владельцу этого, видимо, не хватило." + ru_names = list( + NOMINATIVE = "Э.К.З.О. костюм", + GENITIVE = "Э.К.З.О. костюма ", + DATIVE = "Э.К.З.О. костюму", + ACCUSATIVE = "Э.К.З.О. костюм", + INSTRUMENTAL = "Э.К.З.О. костюмом", + PREPOSITIONAL = "Э.К.З.О. костюме" + ) icon_state = "hostile_env" item_state = "hostile_env" max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT @@ -103,13 +127,21 @@ if(istype(C) && prob(2)) //cursed by bubblegum if(prob(15)) new /obj/effect/hallucination/delusion(C.loc, C, force_kind = "demon", duration = 100, skip_nearby = 0) - to_chat(C, "[pick("I AM IMMORTAL.","KILL THEM ALL!","I SEE YOU.","WE ARE THE SAME!","DEATH CANNOT HOLD ME.")]") + to_chat(C, span_colossus("[pick("МЕНЯ НЕ УБИТЬ.", "НАЧНИ ТУТ РЕЗНЮ!", "Я ТЕБЯ ВИЖУ.", "МЫ ОДНО ЦЕЛОЕ!", "СМЕРТИ МЕНЯ НЕ СДЕРЖАТЬ.", "УСТРОЙ КРОВАВУЮ БАНЮ!")]")) else - to_chat(C, "[pick("You hear faint whispers.","You smell ash.","You feel hot.","You hear a roar in the distance.")]") + to_chat(C, span_warning("[pick("Вы слышите тихий шепот.", "Вы чуете пепел.", "Вам жарко.", "Вы слышите рёв вдали.")]")) /obj/item/clothing/head/helmet/space/hostile_environment name = "H.E.C.K. helmet" - desc = "Hostile Environiment Cross-Kinetic Helmet: A helmet designed to withstand the wide variety of hazards from Lavaland. It wasn't enough for its last owner." + desc = "Экспериментальный Кинетический Защитный Обшитый Шлем: шлем, специально созданный для защиты от широкого спектра опасностей Лаваленда. Прошлому его владельцу этого, видимо, не хватило." + ru_names = list( + NOMINATIVE = "Э.К.З.О. шлем", + GENITIVE = "Э.К.З.О. шлема ", + DATIVE = "Э.К.З.О. шлему", + ACCUSATIVE = "Э.К.З.О. шлем", + INSTRUMENTAL = "Э.К.З.О. шлемом", + PREPOSITIONAL = "Э.К.З.О. шлеме" + ) icon_state = "hostile_env" item_state = "hostile_env" w_class = WEIGHT_CLASS_NORMAL @@ -141,7 +173,15 @@ /obj/item/clothing/head/helmet/space/hardsuit/champion name = "champion's helmet" - desc = "Peering into the eyes of the helmet is enough to seal damnation." + desc = "Лишь одного взгляда в глаза этого шлема хватит, чтобы посеять ужас." + ru_names = list( + NOMINATIVE = "чемпионский шлем", + GENITIVE = "чемпионского шлема", + DATIVE = "чемпионскому шлему", + ACCUSATIVE = "чемпионский шлем", + INSTRUMENTAL = "чемпионским шлемом", + PREPOSITIONAL = "чемпионском шлеме" + ) icon_state = "hardsuit0-berserker" item_color = "berserker" max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT @@ -160,7 +200,15 @@ /obj/item/clothing/suit/space/hardsuit/champion name = "champion's hardsuit" - desc = "Voices echo from the hardsuit, driving the user insane." + desc = "Изнутри этой брони эхом проносятся голоса, медленно сводя с ума своего носителя." + ru_names = list( + NOMINATIVE = "чемпионская броня", + GENITIVE = "чемпионской брони", + DATIVE = "чемпионской броне", + ACCUSATIVE = "чемпионскую броню", + INSTRUMENTAL = "чемпионской бронёй", + PREPOSITIONAL = "чемпионской броне" + ) icon_state = "hardsuit-berserker" max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT slowdown = 0.25 // you are wearing a POWERFUL energy suit, after all @@ -180,13 +228,29 @@ /obj/item/clothing/head/helmet/space/hardsuit/champion/templar name = "dark templar's helmet" - desc = "Through darkness we see the light" + desc = "Сквозь тьму мы видим свет." + ru_names = list( + NOMINATIVE = "шлем Чёрного Храмовника", + GENITIVE = "шлема Чёрного Храмовника", + DATIVE = "шлему Чёрного Храмовника", + ACCUSATIVE = "шлем Чёрного Храмовника", + INSTRUMENTAL = "шлемом Чёрного Храмовника", + PREPOSITIONAL = "шлеме Чёрного Храмовника" + ) icon_state = "hardsuit0-templar" item_color = "templar" /obj/item/clothing/suit/space/hardsuit/champion/templar name = "dark templar's hardsuit" - desc = "No Pity! No Remorse! No Fear!" + desc = "Без жалости! Без сожалений! Без страха!" + ru_names = list( + NOMINATIVE = "доспехи Чёрного Храмовника", + GENITIVE = "доспехов Чёрного Храмовника", + DATIVE = "доспехам Чёрного Храмовника", + ACCUSATIVE = "доспехи Чёрного Храмовника", + INSTRUMENTAL = "доспехами Чёрного Храмовника", + PREPOSITIONAL = "доспехах Чёрного Храмовника" + ) icon_state = "darktemplar-follower0" item_color = "darktemplar-follower0" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/champion/templar @@ -194,36 +258,76 @@ /obj/item/clothing/head/helmet/space/hardsuit/champion/templar/premium name = "high dark templar's helmet" - desc = "The galaxy is the Emperor's.." + desc = "Галактика принадлежит Императору..." + ru_names = list( + NOMINATIVE = "шлем высшего Чёрного Храмовника", + GENITIVE = "шлема высшего Чёрного Храмовника", + DATIVE = "шлему высшего Чёрного Храмовника", + ACCUSATIVE = "шлем высшего Чёрного Храмовника", + INSTRUMENTAL = "шлемом высшего Чёрного Храмовника", + PREPOSITIONAL = "шлеме высшего Чёрного Храмовника" + ) icon_state = "hardsuit0-hightemplar" item_color = "hightemplar" /obj/item/clothing/suit/space/hardsuit/champion/templar/premium name = "high dark templar's hardsuit" - desc = "..And anyone or anything who challenges that claim is an enemy who must be destroyed." + desc = "...и любой, кто оспаривает это — враг, которого необходимо уничтожить." + ru_names = list( + NOMINATIVE = "доспехи высшего Чёрного Храмовника", + GENITIVE = "доспехов высшего Чёрного Храмовника", + DATIVE = "доспехам высшего Чёрного Храмовника", + ACCUSATIVE = "доспехи высшего Чёрного Храмовника", + INSTRUMENTAL = "доспехами высшего Чёрного Храмовника", + PREPOSITIONAL = "доспехах высшего Чёрного Храмовника" + ) icon_state = "darktemplar-chaplain0" item_color = "darktemplar-chaplain0" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/champion/templar/premium /obj/item/clothing/head/helmet/space/hardsuit/champion/inquisitor name = "inquisitor's helmet" - desc = "A helmet worn by those who deal with paranormal threats for a living." + desc = "Шлем, носимый теми, кто зарабатывает на хлеб борьбой с паранормальным." + ru_names = list( + NOMINATIVE = "шлем инквизитора", + GENITIVE = "шлема инквизитора", + DATIVE = "шлему инквизитора", + ACCUSATIVE = "шлем инквизитора", + INSTRUMENTAL = "шлемом инквизитора", + PREPOSITIONAL = "шлеме инквизитора" + ) icon_state = "hardsuit0-inquisitor" item_color = "inquisitor" /obj/item/clothing/suit/space/hardsuit/champion/inquisitor name = "inquisitor's hardsuit" - desc = "Powerful wards are built into this hardsuit, protecting the user from all manner of paranormal threats." + desc = "На этот скафандр наложены мощные охранные чары, защищающие владельца от паранормальных угроз любого характера." + ru_names = list( + NOMINATIVE = "скафандр инквизитора", + GENITIVE = "скафандра инквизитора", + DATIVE = "скафандру инквизитора", + ACCUSATIVE = "скафандр инквизитора", + INSTRUMENTAL = "скафандром инквизитора", + PREPOSITIONAL = "скафандре инквизитора" + ) icon_state = "hardsuit-inquisitor" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/champion/inquisitor /obj/item/clothing/suit/hooded/pathfinder name = "pathfinder cloak" - desc = "A thick cloak woven from sinew and hides, designed to protect its wearer from hazardous weather." + desc = "Тяжёлая мантия, сшитая из сухожилий и шкур, предназначенная для защиты носителя от опасной погоды." + ru_names = list( + NOMINATIVE = "мантия первопроходца", + GENITIVE = "мантии первопроходца", + DATIVE = "мантии первопроходца", + ACCUSATIVE = "мантию первопроходца", + INSTRUMENTAL = "мантией первопроходца", + PREPOSITIONAL = "мантии первопроходца" + ) allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/twohanded/spear, /obj/item/organ/internal/regenerative_core/legion, /obj/item/kitchen/knife/combat/survival, /obj/item/twohanded/kinetic_crusher, /obj/item/hierophant_club, /obj/item/twohanded/fireaxe/boneaxe) icon_state = "pathcloak" item_state = "pathcloak" - armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 35, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50) + armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 40, "bomb" = 60, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50) resistance_flags = FIRE_PROOF body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT @@ -247,13 +351,21 @@ /obj/item/clothing/head/hooded/pathfinder name = "pathfinder kasa" - desc = "A helmet crafted from bones and sinew meant to protect its wearer from hazardous weather." + desc = "Головной убор, созданный из костей и связок, предназначенный для защиты носителя от опасной погоды." + ru_names = list( + NOMINATIVE = "каса первопроходца", + GENITIVE = "касы первопроходца", + DATIVE = "касе первопроходца", + ACCUSATIVE = "касу первопроходца", + INSTRUMENTAL = "касой первопроходца", + PREPOSITIONAL = "касе первопроходца" + ) icon_state = "pathhead" item_state = "pathhead" body_parts_covered = HEAD flags_inv = HIDEHAIR flags_cover = HEADCOVERSEYES - armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 35, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50) + armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 40, "bomb" = 60, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50) resistance_flags = FIRE_PROOF min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index 978864203c54..e03e8858a50d 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -4,8 +4,16 @@ icon_state = "crusher" item_state = "crusher0" name = "proto-kinetic crusher" - desc = "An early design of the proto-kinetic accelerator, it is little more than a combination of various mining tools cobbled together, forming a high-tech club. \ - While it is an effective mining tool, it did little to aid any but the most skilled and/or suicidal miners against local fauna." + desc = "Ранний дизайн прото-кинетического акселератора, лишь немногим отличающийся от кучи различных шахтёрских инструментов, прибитых друг к другу, формирующих высокотехнологичный топор. \ + Хоть это и является эффективным шахтёрским инструментом, для борьбы с местной фауной его могут использовать либо самые опытные, либо самые сумасшедшие шахтёры." + ru_names = list( + NOMINATIVE = "прото-кинетический крушитель", + GENITIVE = "прото-кинетического крушителя", + DATIVE = "прото-кинетическому крушителю", + ACCUSATIVE = "прото-кинетический крушитель", + INSTRUMENTAL = "прото-кинетическим крушителем", + PREPOSITIONAL = "прото-кинетическом крушителе" + ) force = 0 //You can't hit stuff unless wielded w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK @@ -16,7 +24,7 @@ armour_penetration = 10 materials = list(MAT_METAL = 1150, MAT_GLASS = 2075) hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("smashed", "crushed", "cleaved", "chopped", "pulped") + attack_verb = list("сокрушил", "рубанул", "ударил") sharp = TRUE actions_types = list(/datum/action/item_action/toggle_light) var/list/trophies = list() @@ -29,7 +37,7 @@ light_on = FALSE var/adaptive_damage_bonus = 0 var/upgraded = FALSE //whether is our crusher is magmite-upgraded - var/obj/item/projectile/destabilizer/destab = /obj/item/projectile/destabilizer + var/obj/projectile/destabilizer/destab = /obj/projectile/destabilizer /obj/item/twohanded/kinetic_crusher/Destroy() QDEL_LIST(trophies) @@ -37,11 +45,11 @@ /obj/item/twohanded/kinetic_crusher/examine(mob/living/user) . = ..() - . += "Mark a large creature with the destabilizing force, then hit them in melee to do [force + detonation_damage] damage." - . += "Does [force + detonation_damage + backstab_bonus] damage if the target is backstabbed, instead of [force + detonation_damage]." + . += span_notice("Отметьте существо дестабилизирующим полем, затем нанесите удар в ближнем бою, чтобы нанести [force + detonation_damage] единиц[declension_ru(force + detonation_damage, "у", "ы", "")] урона.") + . += span_notice("Наносит [force + detonation_damage + backstab_bonus] единиц[declension_ru(force + detonation_damage + backstab_bonus, "у", "ы", "")] урона вместо [force + detonation_damage], если удар был нанесён в спину.") for(var/t in trophies) var/obj/item/crusher_trophy/T = t - . += "It has \a [T] attached, which causes [T.effect_desc()]." + . += span_notice("К нему прикреплён[genderize_ru(T.gender, "", "а", "о", "ы")] [T.declent_ru(NOMINATIVE)], что вызывает следующий эффект: [T.effect_desc()].") /obj/item/twohanded/kinetic_crusher/attackby(obj/item/I, mob/user, params) @@ -69,9 +77,9 @@ /obj/item/twohanded/kinetic_crusher/attack(mob/living/target, mob/living/user, params, def_zone, skip_attack_anim = FALSE) if(!HAS_TRAIT(src, TRAIT_WIELDED)) - var/warn_message = "The [name] is too heavy to use with one hand." + var/warn_message = "[capitalize(declent_ru(NOMINATIVE))] слишком тяжёл, чтобы использовать его одной рукой." if(user.drop_item_ground(src)) - warn_message += " You fumble and drop it." + warn_message += "Вы роняете [declent_ru(ACCUSATIVE)] на землю." to_chat(user, span_warning(warn_message)) return ATTACK_CHAIN_BLOCKED_ALL var/datum/status_effect/crusher_damage/damage_track = target.has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) @@ -104,16 +112,16 @@ if(user.has_status_effect(STATUS_EFFECT_DASH) && user.a_intent == INTENT_HELP) if(user.throw_at(target, range = 3, speed = 3, spin = FALSE, diagonals_first = TRUE)) playsound(src, 'sound/effects/stealthoff.ogg', 50, 1, 1) - user.visible_message("[user] dashes!") + user.visible_message(span_warning("[user] соверша[pluralize_ru(user, "ет", "ют")] рывок!")) else - to_chat(user, "Something prevents you from dashing!") + to_chat(user, span_warning("Что-то не даёт вам совершить рывок!")) user.remove_status_effect(STATUS_EFFECT_DASH) return if(!proximity_flag && charged)//Mark a target, or mine a tile. var/turf/proj_turf = user.loc if(!isturf(proj_turf)) return - var/obj/item/projectile/destabilizer/D = new destab(proj_turf) + var/obj/projectile/destabilizer/D = new destab(proj_turf) for(var/t in trophies) var/obj/item/crusher_trophy/T = t T.on_projectile_fire(D, user) @@ -187,7 +195,7 @@ //destablizing force -/obj/item/projectile/destabilizer +/obj/projectile/destabilizer name = "destabilizing force" icon_state = "pulse1" nodamage = TRUE @@ -198,11 +206,11 @@ log_override = TRUE var/obj/item/twohanded/kinetic_crusher/hammer_synced -/obj/item/projectile/destabilizer/Destroy() +/obj/projectile/destabilizer/Destroy() hammer_synced = null return ..() -/obj/item/projectile/destabilizer/on_hit(atom/target, blocked = FALSE) +/obj/projectile/destabilizer/on_hit(atom/target, blocked = FALSE) if(isliving(target)) var/mob/living/L = target var/had_effect = (L.has_status_effect(STATUS_EFFECT_CRUSHERMARK)) //used as a boolean @@ -214,7 +222,7 @@ var/target_turf = get_turf(target) if(ismineralturf(target_turf)) if(isancientturf(target_turf)) - visible_message("This rock appears to be resistant to all mining tools except pickaxes!") + visible_message(span_notice("Похоже, что эту породу возьмёт только кирка!")) else var/turf/simulated/mineral/M = target_turf new /obj/effect/temp_visual/kinetic_blast(M) @@ -224,7 +232,7 @@ //trophies /obj/item/crusher_trophy name = "tail spike" - desc = "A strange spike with no usage." + desc = "Странный шип без применений." icon = 'icons/obj/lavaland/artefacts.dmi' icon_state = "tail_spike" var/bonus_value = 10 //if it has a bonus effect, this is how much that effect is @@ -232,7 +240,7 @@ /obj/item/crusher_trophy/examine(mob/living/user) . = ..() - . += "Causes [effect_desc()] when attached to a kinetic crusher." + . += span_notice("Когда прикреплено к крушителю, вызывает следующий эффект: [effect_desc()].") /obj/item/crusher_trophy/proc/effect_desc() return "errors" @@ -250,7 +258,7 @@ /obj/item/crusher_trophy/proc/add_to(obj/item/twohanded/kinetic_crusher/crusher, mob/living/user) for(var/obj/item/crusher_trophy/crusher_trophy as anything in crusher.trophies) if(istype(crusher_trophy, denied_type) || istype(src, crusher_trophy.denied_type)) - to_chat(user, span_warning("You cannot attach [src] to [crusher]. Try to remove a few trophies first.")) + balloon_alert(user, "нет места!") return FALSE if(loc == user) if(!user.drop_transfer_item_to_loc(src, crusher)) @@ -258,7 +266,7 @@ else forceMove(crusher) crusher.trophies += src - to_chat(user, span_notice("You have attached [src] to [crusher].")) + balloon_alert(user, "прикреплено") return TRUE /obj/item/crusher_trophy/proc/remove_from(obj/item/twohanded/kinetic_crusher/H, mob/living/user) @@ -268,7 +276,7 @@ /obj/item/crusher_trophy/proc/on_melee_hit(mob/living/target, mob/living/user) //the target and the user -/obj/item/crusher_trophy/proc/on_projectile_fire(obj/item/projectile/destabilizer/marker, mob/living/user) //the projectile fired and the user +/obj/item/crusher_trophy/proc/on_projectile_fire(obj/projectile/destabilizer/marker, mob/living/user) //the projectile fired and the user /obj/item/crusher_trophy/proc/on_mark_application(mob/living/target, datum/status_effect/crusher_mark/mark, had_mark) //the target, the mark applied, and if the target had a mark before @@ -277,7 +285,15 @@ //goliath /obj/item/crusher_trophy/goliath_tentacle name = "goliath tentacle" - desc = "A sliced-off goliath tentacle. Suitable as a trophy for a kinetic crusher." + desc = "Отрубленное щупальце голиафа. Может быть установлено на крушитель в качестве трофея." + ru_names = list( + NOMINATIVE = "щупальце голиафа", + GENITIVE = "щупальца голиафа", + DATIVE = "щупальцу голиафа", + ACCUSATIVE = "щупальце голиафа", + INSTRUMENTAL = "щупальцем голиафа", + PREPOSITIONAL = "щупальце голиафа" + ) icon_state = "goliath_tentacle" denied_type = /obj/item/crusher_trophy/goliath_tentacle bonus_value = 2 @@ -285,7 +301,7 @@ var/missing_health_desc = 10 /obj/item/crusher_trophy/goliath_tentacle/effect_desc() - return "mark detonation to do [bonus_value] more damage for every [missing_health_desc] health you are missing" + return "детонация метки дестабилизатора наносит на [bonus_value] единиц[declension_ru(bonus_value, "у", "ы", "")] урона больше за каждые [missing_health_desc] единиц[declension_ru(missing_health_desc, "у", "ы", "")] недостающего у вас здоровья" /obj/item/crusher_trophy/goliath_tentacle/on_mark_detonation(mob/living/target, mob/living/user) var/missing_health = user.health - user.maxHealth @@ -297,13 +313,21 @@ //watcher /obj/item/crusher_trophy/watcher_wing name = "watcher wing" - desc = "A wing ripped from a watcher. Suitable as a trophy for a kinetic crusher." + desc = "Оторванное крыло наблюдателя. Может быть установлено на крушитель в качестве трофея." + ru_names = list( + NOMINATIVE = "крыло наблюдателя", + GENITIVE = "крыла наблюдателя", + DATIVE = "крылу наблюдателя", + ACCUSATIVE = "крыло наблюдателя", + INSTRUMENTAL = "крылом наблюдателя", + PREPOSITIONAL = "крыле наблюдателя" + ) icon_state = "watcher_wing" denied_type = /obj/item/crusher_trophy/watcher_wing bonus_value = 5 /obj/item/crusher_trophy/watcher_wing/effect_desc() - return "mark detonation to prevent certain creatures from using certain attacks for [bonus_value*0.1] second\s" + return "детонация метки дестабилизатора не позволяет некоторым существам использовать дальнобойные атаки в течении [bonus_value * 0.1] секунд[declension_ru(bonus_value * 0.1, "ы", "", "")]" /obj/item/crusher_trophy/watcher_wing/on_mark_detonation(mob/living/target, mob/living/user) if(ishostile(target)) @@ -317,15 +341,23 @@ //magmawing watcher /obj/item/crusher_trophy/blaster_tubes/magma_wing name = "magmawing watcher wing" - desc = "A still-searing wing from a magmawing watcher. Suitable as a trophy for a kinetic crusher." + desc = "Всё ещё пылающее крыло магмакрылого наблюдателя. Может быть установлено на крушитель в качестве трофея." + ru_names = list( + NOMINATIVE = "крыло магмакрылого наблюдателя", + GENITIVE = "крыла магмакрылого наблюдателя", + DATIVE = "крылу магмакрылого наблюдателя", + ACCUSATIVE = "крыло магмакрылого наблюдателя", + INSTRUMENTAL = "крылом магмакрылого наблюдателя", + PREPOSITIONAL = "крыле магмакрылого наблюдателя" + ) icon_state = "magma_wing" gender = NEUTER bonus_value = 5 /obj/item/crusher_trophy/blaster_tubes/magma_wing/effect_desc() - return "mark detonation to make the next destabilizer shot deal [bonus_value] damage" + return "детонация метки дестабилизатора позволяет следующему выстрелу дестабилизатора нанести [bonus_value] единиц[declension_ru(bonus_value, "у", "ы", "")] урона" -/obj/item/crusher_trophy/blaster_tubes/magma_wing/on_projectile_fire(obj/item/projectile/destabilizer/marker, mob/living/user) +/obj/item/crusher_trophy/blaster_tubes/magma_wing/on_projectile_fire(obj/projectile/destabilizer/marker, mob/living/user) if(deadly_shot) marker.name = "heated [marker.name]" marker.icon_state = "lava" @@ -336,20 +368,36 @@ //icewing watcher /obj/item/crusher_trophy/watcher_wing/ice_wing name = "icewing watcher wing" - desc = "A carefully preserved frozen wing from an icewing watcher. Suitable as a trophy for a kinetic crusher." + desc = "Хрупкое, замороженное крыло ледокрылого наблюдателя. Может быть установлено на крушитель в качестве трофея." + ru_names = list( + NOMINATIVE = "крыло ледокрылого наблюдателя", + GENITIVE = "крыла ледокрылого наблюдателя", + DATIVE = "крылу ледокрылого наблюдателя", + ACCUSATIVE = "крыло ледокрылого наблюдателя", + INSTRUMENTAL = "крылом ледокрылого наблюдателя", + PREPOSITIONAL = "крыле ледокрылого наблюдателя" + ) icon_state = "ice_wing" bonus_value = 8 //legion /obj/item/crusher_trophy/legion_skull name = "legion skull" - desc = "A dead and lifeless legion skull. Suitable as a trophy for a kinetic crusher." + desc = "Разбитый, безжизненный череп легиона. Может быть установлен на крушитель в качестве трофея." + ru_names = list( + NOMINATIVE = "череп легиона", + GENITIVE = "черепа легиона", + DATIVE = "черепу легиона", + ACCUSATIVE = "череп легиона", + INSTRUMENTAL = "черепом легиона", + PREPOSITIONAL = "черепе легиона" + ) icon_state = "legion_skull" denied_type = /obj/item/crusher_trophy/legion_skull bonus_value = 3 /obj/item/crusher_trophy/legion_skull/effect_desc() - return "a kinetic crusher to recharge [bonus_value*0.1] second\s faster" + return "выстрел дестабилизатора перезаряжается на [bonus_value * 0.1] секунд[declension_ru(bonus_value * 0.1, "у", "ы", "")] быстрее" /obj/item/crusher_trophy/legion_skull/add_to(obj/item/twohanded/kinetic_crusher/H, mob/living/user) . = ..() @@ -361,27 +409,131 @@ if(.) H.charge_time += bonus_value +/// Massive eyed tentacle +/obj/item/crusher_trophy/eyed_tentacle + name = "Massive eyed tentacle" + desc = "Большое и глазастое щупальце древнего голиафа. Может быть установлено на крушитель в качестве трофея." + ru_names = list( + NOMINATIVE = "огромное щупальце голиафа", + GENITIVE = "огромного щупальца голиафа", + DATIVE = "огромному щупальцу голиафа", + ACCUSATIVE = "огромное щупальце голиафа", + INSTRUMENTAL = "огромным щупальцем голиафа", + PREPOSITIONAL = "огромном щупальце голиафа" + ) + icon_state = "ancient_goliath_tentacle" + denied_type = /obj/item/crusher_trophy/eyed_tentacle + bonus_value = 1 + +/obj/item/crusher_trophy/eyed_tentacle/effect_desc() + return "крушитель наносит на 50% больше урона, если у цели больше 90% здоровья" + +/obj/item/crusher_trophy/eyed_tentacle/on_melee_hit(mob/living/target, mob/living/user) + var/procent = (target.health / target.maxHealth) * 100 + if(procent < 90) + return + + var/obj/item/twohanded/kinetic_crusher/crusher = user.get_active_hand() + if(!crusher) + return + + target.apply_damage(crusher.force * bonus_value, crusher.damtype, user.zone_selected) + +/// Poison fang +/obj/item/crusher_trophy/fang + name = "Poison fang" + desc = "Уродливый и отравленный клык. Может быть установлен на крушитель в качестве трофея." + ru_names = list( + NOMINATIVE = "отравленный клык", + GENITIVE = "отравленного клыка", + DATIVE = "отравленному клыку", + ACCUSATIVE = "отравленный клык", + INSTRUMENTAL = "отравленным клыком", + PREPOSITIONAL = "отравленном клыке" + ) + icon_state = "ob_gniga" + denied_type = /obj/item/crusher_trophy/fang + bonus_value = 1.1 + +/obj/item/crusher_trophy/fang/effect_desc() + return "фауна получает на 10% больше урона в течении 2 секунд после детонации метки дестабилизатора" + +/obj/item/crusher_trophy/fang/on_mark_detonation(mob/living/target, mob/living/user) + target.apply_status_effect(STATUS_EFFECT_FANG_EXHAUSTION, bonus_value) + +/// Frost gland +/obj/item/crusher_trophy/gland + name = "Frost gland" + desc = "Замороженная железа. Может быть установлена на крушитель в качестве трофея." + ru_names = list( + NOMINATIVE = "морозная железа", + GENITIVE = "морозной железы", + DATIVE = "морозной железе", + ACCUSATIVE = "морозную железу", + INSTRUMENTAL = "морозной железой", + PREPOSITIONAL = "морозной железе" + ) + icon_state = "ice_gniga" + denied_type = /obj/item/crusher_trophy/gland + bonus_value = 0.9 + +/obj/item/crusher_trophy/gland/effect_desc() + return "фауна наносит на 10% меньше урона, пока на неё установлена метка дестабилизатора" + +/obj/item/crusher_trophy/gland/on_mark_application(mob/living/simple_animal/target, datum/status_effect/crusher_mark/mark, had_mark) + if(had_mark) + return + + if(!istype(target)) + return + + target.melee_damage_lower *= bonus_value + target.melee_damage_upper *= bonus_value + +/obj/item/crusher_trophy/gland/on_mark_detonation(mob/living/simple_animal/target, mob/living/user) + if(!istype(target)) // double check + return + + target.melee_damage_lower /= bonus_value + target.melee_damage_upper /= bonus_value + //blood-drunk hunter /obj/item/crusher_trophy/miner_eye name = "eye of a blood-drunk hunter" - desc = "Its pupil is collapsed and turned to mush. Suitable as a trophy for a kinetic crusher." + desc = "Человеческий глаз с раздробленным в кашу зрачком. Может быть установлено на крушитель в качестве трофея." + ru_names = list( + NOMINATIVE = "глаз кровожадного шахтёра", + GENITIVE = "глаза кровожадного шахтёра", + DATIVE = "глазу кровожадного шахтёра", + ACCUSATIVE = "глаз кровожадного шахтёра", + INSTRUMENTAL = "глазом кровожадного шахтёра", + PREPOSITIONAL = "глазе кровожадного шахтёра" + ) icon_state = "hunter_eye" denied_type = /obj/item/crusher_trophy/miner_eye /obj/item/crusher_trophy/miner_eye/effect_desc() - return "mark detonation to grant stun immunity and 90% damage reduction for 1 second" + return "детонация метки дестабилизатора даёт вам иммунитет к оглушению и уменьшение получаемого урона на 90%, на 1 секунду" /obj/item/crusher_trophy/miner_eye/on_mark_detonation(mob/living/target, mob/living/user) user.apply_status_effect(STATUS_EFFECT_BLOODDRUNK) //ash drake /obj/item/crusher_trophy/tail_spike - desc = "A spike taken from an ash drake's tail. Suitable as a trophy for a kinetic crusher." + desc = "Шип, срезанный с хвоста пепельного дрейка. Может быть установлено на крушитель в качестве трофея." + ru_names = list( + NOMINATIVE = "хвостновой шип", + GENITIVE = "хвостового шипа", + DATIVE = "хвостовому шипу", + ACCUSATIVE = "хвостовой шип", + INSTRUMENTAL = "хвостовым шипом", + PREPOSITIONAL = "хвостовом шипе" + ) denied_type = /obj/item/crusher_trophy/tail_spike bonus_value = 5 /obj/item/crusher_trophy/tail_spike/effect_desc() - return "mark detonation to do [bonus_value] damage to nearby creatures and push them back" + return "детонация метки дестабилизатора взрывает врага, нанося [bonus_value] единиц[declension_ru(bonus_value, "у", "ы", "")] урона близлежащим врагам и отталкивая их" /obj/item/crusher_trophy/tail_spike/on_mark_detonation(mob/living/target, mob/living/user) for(var/mob/living/L in oview(2, user)) @@ -399,7 +551,15 @@ //bubblegum /obj/item/crusher_trophy/demon_claws name = "demon claws" - desc = "A set of blood-drenched claws from a massive demon's hand. Suitable as a trophy for a kinetic crusher." + desc = "Набор окровавленных когтей, вырванных с руки огромного демона. Может быть установлено на крушитель в качестве трофея." + ru_names = list( + NOMINATIVE = "демонические когти", + GENITIVE = "демонических когтей", + DATIVE = "демоническим когтям", + ACCUSATIVE = "демонические когти", + INSTRUMENTAL = "демоническими когтями", + PREPOSITIONAL = "демонических когтях" + ) icon_state = "demon_claws" gender = PLURAL denied_type = /obj/item/crusher_trophy/demon_claws @@ -407,7 +567,7 @@ var/static/list/damage_heal_order = list(BRUTE, BURN, OXY) /obj/item/crusher_trophy/demon_claws/effect_desc() - return "melee hits to do [bonus_value * 0.2] more damage and heal you for [bonus_value * 0.1], with 5X effect on mark detonation" + return "удары в ближнем бою наносят на [bonus_value * 0.2] единиц[declension_ru(bonus_value * 0.2, "у", "ы", "")] урона больше и лечат вас на [bonus_value * 0.1] единиц[declension_ru(bonus_value * 0.1, "у", "ы", "")] здоровья, с пятерным эффектом при детонации метки" /obj/item/crusher_trophy/demon_claws/add_to(obj/item/twohanded/kinetic_crusher/H, mob/living/user) . = ..() @@ -435,7 +595,15 @@ //colossus /obj/item/crusher_trophy/blaster_tubes name = "blaster tubes" - desc = "The blaster tubes from a colossus's arm. Suitable as a trophy for a kinetic crusher." + desc = "Бластерные трубки, взятые с руки колосса. Может быть установлено на крушитель в качестве трофея." + ru_names = list( + NOMINATIVE = "бластерные трубки", + GENITIVE = "бластерных трубок", + DATIVE = "бластерным трубкам", + ACCUSATIVE = "бластерные трубки", + INSTRUMENTAL = "бластерными трубками", + PREPOSITIONAL = "бластерных трубках" + ) icon_state = "blaster_tubes" gender = PLURAL denied_type = /obj/item/crusher_trophy/blaster_tubes @@ -443,9 +611,9 @@ var/deadly_shot = FALSE /obj/item/crusher_trophy/blaster_tubes/effect_desc() - return "mark detonation to make the next destabilizer shot deal [bonus_value] damage but move slower" + return "следующий выстрел дестабилизатора после детонации метки дестабилизатора будет лететь медленнее, но нанесёт [bonus_value] единиц[declension_ru(bonus_value, "у", "ы", "")] урона" -/obj/item/crusher_trophy/blaster_tubes/on_projectile_fire(obj/item/projectile/destabilizer/marker, mob/living/user) +/obj/item/crusher_trophy/blaster_tubes/on_projectile_fire(obj/projectile/destabilizer/marker, mob/living/user) if(deadly_shot) marker.name = "deadly [marker.name]" marker.icon_state = "chronobolt" @@ -464,12 +632,20 @@ //hierophant /obj/item/crusher_trophy/vortex_talisman name = "vortex talisman" - desc = "A glowing trinket that was originally the Hierophant's beacon. Suitable as a trophy for a kinetic crusher." + desc = "Мерцающий талисман, ранее бывший маяком Иерофанта. Может быть установлено на крушитель в качестве трофея." + ru_names = list( + NOMINATIVE = "талисман вихря", + GENITIVE = "талисмана вихря", + DATIVE = "талисману вихря", + ACCUSATIVE = "талисман вихря", + INSTRUMENTAL = "талисманом вихря", + PREPOSITIONAL = "талисмане вихря" + ) icon_state = "vortex_talisman" denied_type = /obj/item/crusher_trophy/vortex_talisman /obj/item/crusher_trophy/vortex_talisman/effect_desc() - return "mark detonation to create a homing hierophant chaser" //Wall was way too cheesy and allowed miners to be nearly invincible while dumb mob AI just rubbed its face on the wall. + return "детонация метки дестабилизатора призывает самонаводящуюся гончую Иерофанта" //Wall was way too cheesy and allowed miners to be nearly invincible while dumb mob AI just rubbed its face on the wall. /obj/item/crusher_trophy/vortex_talisman/on_mark_detonation(mob/living/target, mob/living/user) if(isliving(target)) @@ -481,13 +657,21 @@ //vetus /obj/item/crusher_trophy/adaptive_intelligence_core name = "adaptive intelligence core" - desc = "Seems to be one of the cores from a massive robot. Suitable as a trophy for a kinetic crusher." + desc = "Кажется, это одно из ядер огромного робота. Может быть установлено на крушитель в качестве трофея." + ru_names = list( + NOMINATIVE = "адаптивное ядро ИИ", + GENITIVE = "адаптивного ядра ИИ", + DATIVE = "адаптивному ядру ИИ", + ACCUSATIVE = "адаптивное ядро ИИ", + INSTRUMENTAL = "адаптивным ядром ИИ", + PREPOSITIONAL = "адаптивном ядре ИИ" + ) icon_state = "adaptive_core" denied_type = /obj/item/crusher_trophy/adaptive_intelligence_core bonus_value = 2 /obj/item/crusher_trophy/adaptive_intelligence_core/effect_desc() - return "melee hits deal [bonus_value] more damage per hit after hitting a target, up to [bonus_value * 10] extra damage to that target" + return "удары в ближнем бою наносят на [bonus_value] единиц[declension_ru(bonus_value, "у", "ы", "")] урона больше после атаки по противнику, с пределом в [bonus_value * 10] единиц[declension_ru(bonus_value, "у", "ы", "")] урона" /obj/item/crusher_trophy/adaptive_intelligence_core/add_to(obj/item/twohanded/kinetic_crusher/H, mob/living/user) . = ..() @@ -503,12 +687,20 @@ /obj/item/crusher_trophy/empowered_legion_skull name = "empowered legion skull" - desc = "A powerful looking skull with glowing red eyes." + desc = "Устрашающий череп с горящими красными глазами. Может быть установлено на крушитель в качестве трофея." + ru_names = list( + NOMINATIVE = "усиленный череп легиона", + GENITIVE = "усиленного черепа легиона", + DATIVE = "усиленному черепу легиона", + ACCUSATIVE = "усиленный череп легиона", + INSTRUMENTAL = "усиленным черепом легиона", + PREPOSITIONAL = "усиленном черепе легиона" + ) icon_state = "ashen_skull" denied_type = /obj/item/crusher_trophy/empowered_legion_skull /obj/item/crusher_trophy/empowered_legion_skull/effect_desc() - return "mark detonation grants the ability to dash a short distance on help intent" + return "детонация метки дестабилизатора позволяет вам сделать рывок на небольшую дистанцию, если выбрано намерение помощи" /obj/item/crusher_trophy/empowered_legion_skull/on_mark_detonation(mob/living/target, mob/living/user) user.apply_status_effect(STATUS_EFFECT_DASH) @@ -519,19 +711,27 @@ icon_state = "magmite_crusher" item_state = "magmite_crusher0" name = "magmite proto-kinetic crusher" - desc = "An early design of the proto-kinetic accelerator, it is now a combination of various mining tools infused with magmite, forming a high-tech club, increasing its capacity as a mining tool." - destab = /obj/item/projectile/destabilizer/mega + desc = "Ранний дизайн прото-кинетического акселератора, теперь являющийся кучей различных шахтёрских иструментов приваренных друг к другу плазменным магмитом, формирующих высокотехнологичный топор. Магмит улучшает шахтёрские возможности крушителя." + ru_names = list( + NOMINATIVE = "магмитовый прото-кинетический крушитель", + GENITIVE = "магмитового прото-кинетического крушителя", + DATIVE = "магмитовому прото-кинетическому крушителю", + ACCUSATIVE = "магмитовый прото-кинетический крушитель", + INSTRUMENTAL = "магмитовым прото-кинетическим крушителем", + PREPOSITIONAL = "магмитовом прото-кинетическом крушителе" + ) + destab = /obj/projectile/destabilizer/mega upgraded = TRUE -/obj/item/projectile/destabilizer/mega +/obj/projectile/destabilizer/mega icon_state = "pulse0" range = 4 //you know.... -/obj/item/projectile/destabilizer/mega/on_hit(atom/target, blocked = FALSE) +/obj/projectile/destabilizer/mega/on_hit(atom/target, blocked = FALSE) var/target_turf = get_turf(target) if(ismineralturf(target_turf)) if(isancientturf(target_turf)) - visible_message("This rock appears to be resistant to all mining tools except pickaxes!") + visible_message(span_notice("Похоже, что эту породу возьмёт только кирка!")) forcedodge = 0 else var/turf/simulated/mineral/M = target_turf @@ -541,15 +741,3 @@ else forcedodge = 0 ..() - -//almost ready magmite crusher -/obj/item/twohanded/kinetic_crusher/almost - icon_state = "magmite_crusher" - item_state = "magmite_crusher0" - name = "unfinished proto-kinetic crusher" - desc = "An early design of the proto-kinetic accelerator, it is now a combination of various mining tools infused with magmite, forming a new design, but there is not enough magmite to upgrade it's destabilizer." - upgraded = TRUE - -/obj/item/twohanded/kinetic_crusher/almost/examine(mob/living/user) - . = ..() - . += "Perhaps you could use another magmite upgrade part to fully upgrade your crusher." diff --git a/code/modules/mining/equipment/marker_beacons.dm b/code/modules/mining/equipment/marker_beacons.dm index 2518d66aaa34..4a090195a389 100644 --- a/code/modules/mining/equipment/marker_beacons.dm +++ b/code/modules/mining/equipment/marker_beacons.dm @@ -57,15 +57,15 @@ GLOBAL_LIST_INIT(marker_beacon_colors, list( var/obj/structure/marker_beacon/M = new(user.loc, picked_color) transfer_fingerprints_to(M) -/obj/item/stack/marker_beacon/AltClick(mob/living/user) - if(!istype(user) || ui_status(user, GLOB.physical_state) != UI_INTERACTIVE) - return +/obj/item/stack/marker_beacon/click_alt(mob/living/user) var/input_color = tgui_input_list(user, "Choose a color.", "Beacon Color", GLOB.marker_beacon_colors) - if(!istype(user) || ui_status(user, GLOB.physical_state) != UI_INTERACTIVE) - return - if(input_color) - picked_color = input_color - update_icon(UPDATE_ICON_STATE) + if(!Adjacent(user) || user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) + return CLICK_ACTION_BLOCKING + if(!input_color) + return CLICK_ACTION_BLOCKING + picked_color = input_color + update_icon(UPDATE_ICON_STATE) + return CLICK_ACTION_SUCCESS /obj/structure/marker_beacon name = "marker beacon" @@ -78,6 +78,7 @@ GLOBAL_LIST_INIT(marker_beacon_colors, list( anchored = TRUE light_range = 2 light_power = 3 + interaction_flags_click = NEED_HANDS | ALLOW_RESTING var/remove_speed = 15 var/picked_color @@ -148,13 +149,12 @@ GLOBAL_LIST_INIT(marker_beacon_colors, list( return ..() -/obj/structure/marker_beacon/AltClick(mob/living/user) - ..() - if(!istype(user) || !Adjacent(user) || user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || ui_status(user, GLOB.physical_state) != UI_INTERACTIVE) - return +/obj/structure/marker_beacon/click_alt(mob/living/user) var/input_color = tgui_input_list(user, "Choose a color.", "Beacon Color", GLOB.marker_beacon_colors) - if(!istype(user) || !Adjacent(user) || user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || ui_status(user, GLOB.physical_state) != UI_INTERACTIVE) - return - if(input_color) - picked_color = input_color - update_state() + if(!Adjacent(user) || user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) + return CLICK_ACTION_BLOCKING + if(!input_color) + return CLICK_ACTION_BLOCKING + picked_color = input_color + update_state() + return CLICK_ACTION_SUCCESS diff --git a/code/modules/mining/equipment/mineral_scanner.dm b/code/modules/mining/equipment/mineral_scanner.dm index 562ca3ba0f09..4abc5c09f92c 100644 --- a/code/modules/mining/equipment/mineral_scanner.dm +++ b/code/modules/mining/equipment/mineral_scanner.dm @@ -1,7 +1,17 @@ /**********************Mining Scanner**********************/ /obj/item/mining_scanner - desc = "A scanner that checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations. Wear material scanners for optimal results. \nIt has a speaker that can be toggled with alt+click" name = "manual mining scanner" + desc = "Устройство, которое сканирует окружающие породы на наличие полезных минералов, также может быть использовано для предотвращения взрыва залежей гибтонита. \ + Для достижения наилучших результатов рекомендуется применять мезонные очки. \ + Этот сканер оснащён динамиком, который можно переключать, используя сочетание клавиш \"Alt+Click\"" + ru_names = list( + NOMINATIVE = "ручной шахтёрский сканер", + GENITIVE = "ручного шахтёрского сканера", + DATIVE = "ручному шахтёрскому сканеру", + ACCUSATIVE = "ручной шахтёрский сканер", + INSTRUMENTAL = "ручным шахтёрским сканером", + PREPOSITIONAL = "ручном шахтёрском сканере" + ) icon = 'icons/obj/device.dmi' icon_state = "miningmanual" item_state = "analyzer" @@ -16,11 +26,9 @@ origin_tech = "engineering=1;magnets=1" -/obj/item/mining_scanner/AltClick(mob/user) - if(!Adjacent(user) || user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) - return +/obj/item/mining_scanner/click_alt(mob/user) speaker = !speaker - to_chat(user, "You toggle [src]'s speaker to [speaker ? "ON" : "OFF"].") + balloon_alert(user, "динамик [speaker ? "включён" : "выключен"]") /obj/item/mining_scanner/attack_self(mob/user) if(!user.client) @@ -42,8 +50,18 @@ qdel(src) /obj/item/t_scanner/adv_mining_scanner - desc = "A scanner that automatically checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations. Wear meson scanners for optimal results. This one has an extended range. \nIt has a speaker that can be toggled with alt+click" name = "advanced automatic mining scanner" + desc = "Устройство, которое автоматически сканирует окружающие породы на наличие полезных минералов, также может быть использовано для предотвращения взрыва залежей гибтонита. \ + Для достижения наилучших результатов рекомендуется применять мезонные очки. \ + Этот сканер оснащён динамиком, который можно переключать, используя сочетание клавиш \"Alt+Click\"" + ru_names = list( + NOMINATIVE = "продвинутый автоматический шахтёрский сканер", + GENITIVE = "продвинутого автоматического шахтёрского сканера", + DATIVE = "продвинутому автоматическому шахтёрскому сканеру", + ACCUSATIVE = "продвинутый автоматический шахтёрский сканер", + INSTRUMENTAL = "продвинутым автоматическим шахтёрским сканером", + PREPOSITIONAL = "продвинутом автоматическом шахтёрском сканере" + ) icon_state = "adv_mining0" base_icon_state = "adv_mining" item_state = "analyzer" @@ -59,11 +77,9 @@ origin_tech = "engineering=3;magnets=3" -/obj/item/t_scanner/adv_mining_scanner/AltClick(mob/user) - if(!Adjacent(user) || user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) - return +/obj/item/t_scanner/adv_mining_scanner/click_alt(mob/user) speaker = !speaker - to_chat(user, "You toggle [src]'s speaker to [speaker ? "ON" : "OFF"].") + to_chat(user, span_notice("Вы переключаете режим работы динамика [declent_ru(GENITIVE)] на [speaker ? "ВКЛ" : "ВЫКЛ"].")) /obj/item/t_scanner/adv_mining_scanner/cyborg flags = CONDUCT @@ -77,9 +93,19 @@ /obj/item/t_scanner/adv_mining_scanner/lesser name = "automatic mining scanner" + desc = "Устройство, которое автоматически сканирует окружающие породы на наличие полезных минералов, также может быть использовано для предотвращения взрыва залежей гибтонита. \ + Для достижения наилучших результатов рекомендуется применять мезонные очки. \ + Этот сканер оснащён динамиком, который можно переключать, используя сочетание клавиш \"Alt+Click\"" + ru_names = list( + NOMINATIVE = "автоматический шахтёрский сканер", + GENITIVE = "автоматического шахтёрского сканера", + DATIVE = "автоматическому шахтёрскому сканеру", + ACCUSATIVE = "автоматический шахтёрский сканер", + INSTRUMENTAL = "автоматическим шахтёрским сканером", + PREPOSITIONAL = "автоматическом шахтёрском сканере" + ) icon_state = "mining0" base_icon_state = "mining" - desc = "A scanner that automatically checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations. Wear meson scanners for optimal results. \nIt has a speaker that can be toggled with alt+click" range = 4 cooldown = 50 @@ -127,3 +153,39 @@ /obj/effect/temp_visual/mining_overlay/Initialize(mapload) . = ..() animate(src, alpha = 0, time = duration, easing = EASE_IN) + +/obj/item/t_scanner/adv_mining_scanner/bleary_eye + name = "bleary eye" + desc = "Глаз, вырванный из тела массивного сернистого странника. Даже спустя долгое время, он всё ещё движется и внимательно осматривает местность в поисках руды." + ru_names = list( + NOMINATIVE = "затуманенный глаз", + GENITIVE = "затуманенного глаза", + DATIVE = "затуманенному глазу", + ACCUSATIVE = "затуманенный глаз", + INSTRUMENTAL = "затуманенным глазом", + PREPOSITIONAL = "затуманенном глазе" + ) + icon = 'icons/obj/lavaland/lava_fishing.dmi' + icon_state = "bleary_eye" + lefthand_file = 'icons/mob/inhands/lavaland/fish_items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/lavaland/fish_items_righthand.dmi' + item_state = "bleary_eye" + flags = NONE + materials = null + origin_tech = "magnets=6;biotech=6" + speaker = FALSE + range = 4 + cooldown = 3 SECONDS + +/obj/item/t_scanner/adv_mining_scanner/bleary_eye/Initialize(mapload) + . = ..() + toggle_mode() + +/obj/item/t_scanner/adv_mining_scanner/bleary_eye/update_icon_state() + return + +/obj/item/t_scanner/adv_mining_scanner/bleary_eye/attack_self(mob/user) + return + +/obj/item/t_scanner/adv_mining_scanner/bleary_eye/click_alt(mob/user) + return NONE diff --git a/code/modules/mining/equipment/mining_charges.dm b/code/modules/mining/equipment/mining_charges.dm index 3ddac014dc1a..a987435228b1 100644 --- a/code/modules/mining/equipment/mining_charges.dm +++ b/code/modules/mining/equipment/mining_charges.dm @@ -1,7 +1,15 @@ /****************Mining Charges****************/ /obj/item/grenade/plastic/miningcharge name = "industrial mining charge" - desc = "Used to make big holes in rocks. Only works on rocks!" + desc = "Применяется для создания больших отверстий в породе. Эффективно только при работе с камнем!" + ru_names = list( + NOMINATIVE = "промышленный шахтерский заряд", + GENITIVE = "промышленного шахтерского заряда", + DATIVE = "промышленному шахтерскому заряду", + ACCUSATIVE = "промышленный шахтерский заряд", + INSTRUMENTAL = "промышленным шахтерским зарядом", + PREPOSITIONAL = "промышленном шахтерском заряде" + ) icon = 'icons/obj/mining.dmi' icon_state = "mining-charge-2" item_state = "charge_indust" @@ -48,7 +56,7 @@ src.target = AM loc = null if(hacked) - message_admins("[ADMIN_LOOKUPFLW(user)] planted [src.name] on [target.name] at [ADMIN_COORDJMP(target)]") + message_admins("[ADMIN_LOOKUPFLW(user)] planted [src] on [target.name] at [ADMIN_COORDJMP(target)]") add_game_logs("planted [name] on [target.name] at [COORD(target)]", user) installed = TRUE target.add_overlay(image_overlay) @@ -81,9 +89,9 @@ explode() return var/turf/simulated/mineral/location = get_turf(target) - var/datum/effect_system/smoke_spread/S = new - S.set_up(smoke_amount,0,location,null) - S.start() + var/datum/effect_system/fluid_spread/smoke/smoke = new + smoke.set_up(amount = smoke_amount, location = location) + smoke.start() //location.attempt_drill(null,TRUE,3) //orange says it doesnt include the actual middle for(var/turf/simulated/mineral/rock in circlerangeturfs(location, boom_sizes[3])) var/distance = get_dist_euclidean(location, rock) @@ -164,7 +172,7 @@ //MINING CHARGE HACKER /obj/item/t_scanner/adv_mining_scanner/syndicate var/charges = 6 - description_antag = "This scanner has an extra port for overriding mining charge safeties." + description_antag = "Это устройство имеет дополнительный порт, который позволяет обойти меры безопасности шахтёрских зарядов." /obj/item/t_scanner/adv_mining_scanner/syndicate/afterattack(atom/target, mob/user, proximity_flag, click_parameters) if(istype(target,/obj/item/grenade/plastic/miningcharge)) @@ -176,11 +184,11 @@ balloon_alert(user, "заряды закончились!") return charge.override_safety() - visible_message(span_warning("Sparks fly out of [src]!"), span_notice("You override [src], disabling its safeties.")) + visible_message(span_warning("Из [declent_ru(GENITIVE)] летят искры!"), span_notice("Вы перегружаете [declent_ru(ACCUSATIVE)], отключая его защиту.")) playsound(src, "sparks", 50, 1) charges-- if(charges <= 0) - to_chat(user ,span_warning("[src]'s internal battery for overriding mining charges has run dry!")) + to_chat(user , span_warning("Внутренняя батарея [declent_ru(GENITIVE)], предназначенная для перегрузки шахтёрских зарядов, разрядилась!")) // MINING CHARGES DETONATOR diff --git a/code/modules/mining/equipment/mining_tools.dm b/code/modules/mining/equipment/mining_tools.dm index 085b67012809..f92a59a77911 100644 --- a/code/modules/mining/equipment/mining_tools.dm +++ b/code/modules/mining/equipment/mining_tools.dm @@ -1,6 +1,16 @@ /*****************Pickaxes & Drills & Shovels****************/ /obj/item/pickaxe name = "pickaxe" + desc = "Стандартная кирка, предназначенная для разрушения камней." + ru_names = list( + NOMINATIVE = "кирка", + GENITIVE = "кирки", + DATIVE = "кирке", + ACCUSATIVE = "кирку", + INSTRUMENTAL = "киркой", + PREPOSITIONAL = "кирке" + ) + gender = FEMALE icon = 'icons/obj/items.dmi' icon_state = "pickaxe" flags = CONDUCT @@ -11,7 +21,7 @@ w_class = WEIGHT_CLASS_BULKY materials = list(MAT_METAL=2000) //one sheet, but where can you make them? origin_tech = "materials=2;engineering=3" - attack_verb = list("hit", "pierced", "sliced", "attacked") + attack_verb = list("ударил", "уколол", "атаковал") var/drill_verb = "picking" sharp = 1 embed_chance = 15 @@ -23,19 +33,49 @@ /obj/item/pickaxe/emergency name = "emergency disembarkation tool" - desc = "For extracting yourself from rough landings." + desc = "Кирка, предназначенная для спасения из затруднительных ситуаций." + ru_names = list( + NOMINATIVE = "инструмент для экстренной раскопки", + GENITIVE = "инструмента для экстренной раскопки", + DATIVE = "инструменту для экстренной раскопки", + ACCUSATIVE = "инструмент для экстренной раскопки", + INSTRUMENTAL = "инструментом для экстренной раскопки", + PREPOSITIONAL = "инструменте для экстренной раскопки" + ) + gender = MALE + icon_state = "emergency_disembarkation_tool" + item_state = "emergency_disembarkation_tool" /obj/item/pickaxe/safety name = "safety pickaxe" - desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon." + desc = "Кирка, специально спроектированная исключительно для добычи ресурсов. Крайне неэффективна в качестве оружия." + ru_names = list( + NOMINATIVE = "безопасная кирка", + GENITIVE = "безопасной кирки", + DATIVE = "безопасной кирке", + ACCUSATIVE = "безопасную кирку", + INSTRUMENTAL = "безопасной киркой", + PREPOSITIONAL = "безопасной кирке" + ) + icon_state = "safety_pickaxe" + item_state = "safety_pickaxe" force = 1 throwforce = 1 - attack_verb = list("ineffectively hit") + attack_verb = list("неэффективно ударил") /obj/item/pickaxe/mini name = "compact pickaxe" - desc = "A smaller, compact version of the standard pickaxe." - icon_state = "minipick" + desc = "Сильно уменьшенная версия стандартной кирки." + ru_names = list( + NOMINATIVE = "компактная кирка", + GENITIVE = "компактной кирки", + DATIVE = "компактной кирке", + ACCUSATIVE = "компактую кирку", + INSTRUMENTAL = "компактной киркой", + PREPOSITIONAL = "компактной кирке" + ) + icon_state = "compact_pickaxe" + item_state = "compact_pickaxe" force = 10 throwforce = 7 w_class = WEIGHT_CLASS_NORMAL @@ -43,47 +83,87 @@ /obj/item/pickaxe/silver name = "silver-plated pickaxe" + desc = "Кирка, сделанная из серебра. Она показывает себя слегка лучше в добыче ресурсов, чем стандартная." + ru_names = list( + NOMINATIVE = "кирка с серебрянным наконечником", + GENITIVE = "кирки с серебрянным наконечником", + DATIVE = "кирке с серебрянным наконечником", + ACCUSATIVE = "кирку с серебрянным наконечником", + INSTRUMENTAL = "киркой с серебрянным наконечником", + PREPOSITIONAL = "кирке с серебрянным наконечником" + ) icon_state = "spickaxe" item_state = "spickaxe" belt_icon = "silver-plated pickaxe" origin_tech = "materials=3;engineering=4" toolspeed = 0.4 //mines faster than a normal pickaxe, bought from mining vendor - desc = "A silver-plated pickaxe that mines slightly faster than standard-issue." force = 17 /obj/item/pickaxe/gold - name = "golden pickaxe" + name = "gold-tipped pickaxe" + desc = "Кирка, сделанная из золота. Она показывает себя значительно лучше в добыче ресурсов, чем стандартная." + ru_names = list( + NOMINATIVE = "кирка с золотым наконечником", + GENITIVE = "кирки с золотым наконечником", + DATIVE = "кирке с золотым наконечником", + ACCUSATIVE = "кирку с золотым наконечником", + INSTRUMENTAL = "киркой с золотым наконечником", + PREPOSITIONAL = "кирке с золотым наконечником" + ) icon_state = "gpickaxe" item_state = "gpickaxe" belt_icon = "golden pickaxe" origin_tech = "materials=4;engineering=4" toolspeed = 0.3 - desc = "A gold-plated pickaxe that mines faster than standard-issue." force = 18 /obj/item/pickaxe/diamond name = "diamond-tipped pickaxe" + desc = "Кирка с алмазным наконечником. Крайне эффективна в добыче камня и вскапывании земли." + ru_names = list( + NOMINATIVE = "кирка с алмазным наконечником", + GENITIVE = "кирки с алмазным наконечником", + DATIVE = "кирке с алмазным наконечником", + ACCUSATIVE = "кирку с алмазным наконечником", + INSTRUMENTAL = "киркой с алмазным наконечником", + PREPOSITIONAL = "кирке с алмазным наконечником" + ) icon_state = "dpickaxe" item_state = "dpickaxe" belt_icon = "diamond-tipped pickaxe" origin_tech = "materials=5;engineering=4" toolspeed = 0.2 - desc = "A pickaxe with a diamond pick head. Extremely robust at cracking rock walls and digging up dirt." force = 19 /obj/item/pickaxe/drill name = "mining drill" + desc = "Электрическая буровая дрелль, используемая теми, для кого кирка слишком тяжела в обращении." + ru_names = list( + NOMINATIVE = "шахтёрская дрель", + GENITIVE = "шахтёрской дрели", + DATIVE = "шахтёрской дрели", + ACCUSATIVE = "шахтёрскую дрель", + INSTRUMENTAL = "шахтёрской дрелью", + PREPOSITIONAL = "шахтёрской дрели" + ) icon_state = "handdrill" item_state = "jackhammer" toolspeed = 0.4 //available from roundstart, faster than a pickaxe. hitsound = 'sound/weapons/drill.ogg' usesound = 'sound/weapons/drill.ogg' origin_tech = "materials=2;powerstorage=2;engineering=3" - desc = "An electric mining drill for the especially scrawny." /obj/item/pickaxe/drill/cyborg name = "cyborg mining drill" - desc = "An integrated electric mining drill." + desc = "Встроенная электрическая буровая дрелль." + ru_names = list( + NOMINATIVE = "шахтёрская дрель робота", + GENITIVE = "шахтёрской дрели робота", + DATIVE = "шахтёрской дрели робота", + ACCUSATIVE = "шахтёрскую дрель робота", + INSTRUMENTAL = "шахтёрской дрелью робота", + PREPOSITIONAL = "шахтёрской дрели робота" + ) /obj/item/pickaxe/drill/cyborg/Initialize(mapload) @@ -93,30 +173,63 @@ /obj/item/pickaxe/drill/diamonddrill name = "diamond-tipped mining drill" + desc = "У тебя есть дрель, которая пронзит небеса!" + ru_names = list( + NOMINATIVE = "алмазная шахтёрская дрель", + GENITIVE = "алмазной шахтёрской дрели", + DATIVE = "алмазной шахтёрской дрели", + ACCUSATIVE = "алмазную шахтёрскую дрель", + INSTRUMENTAL = "алмазной шахтёрской дрелью", + PREPOSITIONAL = "алмазной шахтёрской дрели" + ) icon_state = "diamonddrill" origin_tech = "materials=6;powerstorage=4;engineering=4" - desc = "Yours is the drill that will pierce the heavens!" toolspeed = 0.1 /obj/item/pickaxe/drill/cyborg/diamond //This is the BORG version! name = "diamond-tipped cyborg mining drill" //To inherit the NODROP trait, and easier to change borg specific drill mechanics. + ru_names = list( + NOMINATIVE = "алмазная шахтёрская дрель робота", + GENITIVE = "алмазной шахтёрской дрели робота", + DATIVE = "алмазной шахтёрской дрели робота", + ACCUSATIVE = "алмазную шахтёрскую дрель робота", + INSTRUMENTAL = "алмазной шахтёрской дрелью робота", + PREPOSITIONAL = "алмазной шахтёрской дрели робота" + ) icon_state = "diamonddrill" toolspeed = 0.1 /obj/item/pickaxe/drill/jackhammer name = "sonic jackhammer" + desc = "Уничтожает камни с использованием звука, может использоваться как инструмент для сноса стен." + ru_names = list( + NOMINATIVE = "звуковой отбойный молот", + GENITIVE = "звукового отбойного молота", + DATIVE = "звуковому отбойному молоту", + ACCUSATIVE = "звуковой отбойный молот", + INSTRUMENTAL = "звуковым отбойным молотом", + PREPOSITIONAL = "звуковом отбойным молоте" + ) icon_state = "jackhammer" item_state = "jackhammer" origin_tech = "materials=6;powerstorage=4;engineering=5;magnets=4" hitsound = 'sound/weapons/sonic_jackhammer.ogg' usesound = 'sound/weapons/sonic_jackhammer.ogg' - desc = "Cracks rocks with sonic blasts, and doubles as a demolition power tool for smashing walls." toolspeed = 0.0 //the epitome of powertools, literally instant var/wall_toolspeed = 0.1 //instant wall breaking is bad. /obj/item/shovel name = "shovel" - desc = "A large tool for digging and moving dirt." + desc = "Массивный инструмент для вскапывания и перемещения земли." + ru_names = list( + NOMINATIVE = "лопата", + GENITIVE = "лопаты", + DATIVE = "лопате", + ACCUSATIVE = "лопату", + INSTRUMENTAL = "лопатой", + PREPOSITIONAL = "лопате" + ) + gender = FEMALE icon = 'icons/obj/items.dmi' icon_state = "shovel" flags = CONDUCT @@ -127,14 +240,22 @@ w_class = WEIGHT_CLASS_NORMAL materials = list(MAT_METAL=50) origin_tech = "materials=2;engineering=2" - attack_verb = list("bashed", "bludgeoned", "thrashed", "whacked") + attack_verb = list("ударил", "огрел") hitsound = 'sound/effects/Shovel_hitting_sound.ogg' usesound = 'sound/effects/shovel_dig.ogg' toolspeed = 0.8 /obj/item/shovel/spade name = "spade" - desc = "A small tool for digging and moving dirt." + desc = "Маленький инструмент для вскапывания и перемещения земли." + ru_names = list( + NOMINATIVE = "лопатка", + GENITIVE = "лопатки", + DATIVE = "лопатке", + ACCUSATIVE = "лопатку", + INSTRUMENTAL = "лопаткой", + PREPOSITIONAL = "лопатке" + ) icon_state = "spade" item_state = "spade" belt_icon = "spade" @@ -142,9 +263,35 @@ throwforce = 7 w_class = WEIGHT_CLASS_SMALL +/obj/item/shovel/spade/wooden + name = "wooden spade" + desc = "Маленький инструмент для вскапывания и перемещения земли. Эта модель сделана из древесины." + ru_names = list( + NOMINATIVE = "деревянная лопатка", + GENITIVE = "деревянной лопатки", + DATIVE = "деревянной лопатке", + ACCUSATIVE = "деревянную лопатку", + INSTRUMENTAL = "деревянной лопаткой", + PREPOSITIONAL = "деревянной лопатке" + ) + icon_state = "wooden_spade" + lefthand_file = 'icons/mob/inhands/lavaland/misc_lefthand.dmi' + righthand_file = 'icons/mob/inhands/lavaland/misc_righthand.dmi' + item_state = "small_shovel" + /obj/item/shovel/safety name = "safety shovel" - desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon." + desc = "Массивный инструмент для вскапывания и перемещения земли. Данная версия была модифицирована для большей безопасности и крайне неэффективна в качестве оружия." + ru_names = list( + NOMINATIVE = "безопасная лопата", + GENITIVE = "безопасной лопаты", + DATIVE = "безопасной лопате", + ACCUSATIVE = "безопасную лопату", + INSTRUMENTAL = "безопасной лопатой", + PREPOSITIONAL = "безопасной лопате" + ) + icon_state = "safety_shovel" + item_state = "safety_shovel" force = 1 throwforce = 1 - attack_verb = list("ineffectively hit") + attack_verb = list("неэффективно ударил") diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm index f5e4e53df4bd..18139590fcc1 100644 --- a/code/modules/mining/equipment/regenerative_core.dm +++ b/code/modules/mining/equipment/regenerative_core.dm @@ -1,12 +1,36 @@ /*********************Hivelord stabilizer****************/ /obj/item/hivelordstabilizer name = "hivelord stabilizer" + desc = "Inject a hivelord core with this stabilizer to preserve its healing powers indefinitely." + gender = MALE icon = 'icons/obj/chemical.dmi' icon_state = "bottle19" - desc = "Inject a hivelord core with this stabilizer to preserve its healing powers indefinitely." w_class = WEIGHT_CLASS_TINY origin_tech = "biotech=3" +/obj/item/hivelordstabilizer/molten_mass + name = "gooey molten mass" + desc = "Странноватые сгустки, снятые с головы магмового рыбы-молота. Являются природным аналогом стабилизатора регенеративных ядер." + ru_names = list( + NOMINATIVE = "сплавленный сгусток", + GENITIVE = "сплавленного сгустка", + DATIVE = "сплавленному сгустку", + ACCUSATIVE = "сплавленный сгусток", + INSTRUMENTAL = "сплавленным сгустком", + PREPOSITIONAL = "сплавленном сгустке" + ) + icon = 'icons/obj/lavaland/lava_fishing.dmi' + icon_state = "gooey_molten_mass" + lefthand_file = 'icons/mob/inhands/lavaland/fish_items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/lavaland/fish_items_righthand.dmi' + item_state = "acid_bladder" + w_class = WEIGHT_CLASS_TINY + origin_tech = "biotech=5" + light_range = 2 + light_power = 3 + light_color = "#FFBF00" + light_system = MOVABLE_LIGHT + /obj/item/hivelordstabilizer/afterattack(obj/item/organ/internal/M, mob/user, proximity, params) . = ..() if(!proximity) @@ -118,6 +142,9 @@ desc = "A strange rock that crackles with power. It can be used to heal completely, but it will rapidly decay into uselessness." icon_state = "legion_soul" +/obj/item/organ/internal/regenerative_core/legion/pre_preserved + preserved = TRUE + /obj/item/organ/internal/regenerative_core/legion/Initialize(mapload) . = ..() update_icon() diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index fe40978ad6e2..29407220e510 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -51,7 +51,7 @@ if(used) return FALSE var/turf/UT = get_turf(user) - if((check_level_trait(UT.z, STATION_LEVEL)) && !emagged) + if((is_station_level(UT.z)) && !emagged) to_chat(user, span_notice("Error. Deployment was attempted on the station sector. Deployment aborted.")) playsound(user, 'sound/machines/buzz-sigh.ogg', 15, TRUE) return @@ -65,7 +65,7 @@ if(QDELETED(src)) return var/turf/deploy_location = get_turf(src) - if((check_level_trait(deploy_location.z, STATION_LEVEL)) && !emagged) + if((is_station_level(deploy_location.z)) && !emagged) to_chat(triggerer, span_notice("Error. Expanding was attempted on the station sector. Expanding aborted.")) playsound(triggerer, 'sound/machines/buzz-sigh.ogg', 15, TRUE) return @@ -84,7 +84,7 @@ template.load(deploy_location, centered = TRUE) trigger_admin_alert(triggerer, deploy_location) playsound(src, 'sound/effects/phasein.ogg', 100, TRUE) - new /obj/effect/particle_effect/smoke(get_turf(src)) + new /obj/effect/particle_effect/fluid/smoke(get_turf(src)) qdel(src) /// Throws any mobs near the deployed location away from the item / shelter @@ -263,6 +263,7 @@ anchored = TRUE density = TRUE pixel_y = -32 + move_resist = MOVE_FORCE_STRONG /obj/item/gps/computer/wrench_act(mob/living/user, obj/item/I) @@ -311,6 +312,9 @@ if(empty) return + var/obj/item/pickaxe/emergency/pickaxe = new(src) + load(pickaxe) + for(var/i in 1 to 5) var/obj/item/reagent_containers/food/snacks/warmdonkpocket_weak/W = new(src) load(W) diff --git a/code/modules/mining/equipment/upgrades.dm b/code/modules/mining/equipment/upgrades.dm index 83848be20092..f2ae8d382338 100644 --- a/code/modules/mining/equipment/upgrades.dm +++ b/code/modules/mining/equipment/upgrades.dm @@ -92,16 +92,6 @@ var/obj/item/crusher_trophy/T = t T.remove_from(gun, user) qdel(gun) - var/obj/item/twohanded/kinetic_crusher/almost/newgun = new(get_turf(user)) - user.put_in_hands(newgun) - to_chat(user,span_notice("Harsh tendrils wraps around the kinetic crusher, but there is not enough magmite to fully upgrade it! You need more magmite")) - qdel(src) - if(/obj/item/twohanded/kinetic_crusher/almost) - var/obj/item/twohanded/kinetic_crusher/almost/gun = target - for(var/t in gun.trophies) - var/obj/item/crusher_trophy/T = t - T.remove_from(gun, user) - qdel(gun) var/obj/item/twohanded/kinetic_crusher/mega/newgun = new(get_turf(user)) user.put_in_hands(newgun) to_chat(user,span_notice("Harsh tendrils wraps around the kinetic crusher, merging the parts and crusher to form a mega kinetic crusher.")) diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index 8e363a573d8d..75a6d9ee276e 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -3,6 +3,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) /obj/item/extraction_pack name = "fulton extraction pack" desc = "A balloon that can be used to extract equipment or personnel to a Fulton Recovery Beacon. Anything not bolted down can be moved. Link the pack to a beacon by using the pack in hand." + gender = MALE icon = 'icons/obj/fulton.dmi' icon_state = "extraction_pack" w_class = WEIGHT_CLASS_NORMAL diff --git a/code/modules/mining/laborcamp/laborshuttle.dm b/code/modules/mining/laborcamp/laborshuttle.dm index 88b0a6601dcb..2f9d6d0bcd4b 100644 --- a/code/modules/mining/laborcamp/laborshuttle.dm +++ b/code/modules/mining/laborcamp/laborshuttle.dm @@ -1,15 +1,16 @@ /obj/machinery/computer/shuttle/labor name = "labor shuttle console" - desc = "Used to call and send the labor camp shuttle." + desc = "Используется для вызова и отправки шаттла каторги." circuit = /obj/item/circuitboard/labor_shuttle shuttleId = "laborcamp" possible_destinations = "laborcamp_home;laborcamp_away" + lockdown_affected = TRUE req_access = list(ACCESS_BRIG) /obj/machinery/computer/shuttle/labor/one_way name = "prisoner shuttle console" - desc = "A one-way shuttle console, used to summon the shuttle to the labor camp." + desc = "Консоль управления шаттлом в одну сторону, используемый для вызова шаттла на каторгу." possible_destinations = "laborcamp_away" circuit = /obj/item/circuitboard/labor_shuttle/one_way req_access = list( ) diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index ec3ba9b9d1ce..cfe769833a2b 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -2,7 +2,8 @@ gender = PLURAL layer = PROJECTILE_HIT_THRESHHOLD_LAYER //sporangiums up don't shoot icon = 'icons/obj/lavaland/ash_flora.dmi' - icon_state = "l_mushroom" + icon_state = "l_mushroom1" + base_icon_state = "l_mushroom" name = "large mushrooms" desc = "A number of large mushrooms, covered in a faint layer of ash and what can only be spores." anchored = TRUE @@ -24,7 +25,7 @@ /obj/structure/flora/ash/Initialize(mapload) . = ..() - base_icon = "[icon_state][rand(1, 4)]" + base_icon = "[base_icon_state][rand(1, 4)]" icon_state = base_icon /obj/structure/flora/ash/proc/harvest(user) @@ -91,9 +92,10 @@ regrowth_time_low = 4200 /obj/structure/flora/ash/leaf_shroom - icon_state = "s_mushroom" name = "leafy mushrooms" desc = "A number of mushrooms, each of which surrounds a greenish sporangium with a number of leaf-like structures." + icon_state = "s_mushroom1" + base_icon_state = "s_mushroom" harvested_name = "leafless mushrooms" harvested_desc = "A bunch of formerly-leafed mushrooms, with their sporangiums exposed. Scandalous?" harvest = /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf @@ -107,9 +109,10 @@ regrowth_time_high = 6000 /obj/structure/flora/ash/cap_shroom - icon_state = "r_mushroom" name = "tall mushrooms" desc = "Several mushrooms, the larger of which have a ring of conks at the midpoint of their stems." + icon_state = "r_mushroom1" + base_icon_state = "r_mushroom" harvested_name = "small mushrooms" harvested_desc = "Several small mushrooms near the stumps of what likely were larger mushrooms." harvest = /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap @@ -122,9 +125,11 @@ regrowth_time_high = 5400 /obj/structure/flora/ash/stem_shroom - icon_state = "t_mushroom" + name = "numerous mushrooms" desc = "A large number of mushrooms, some of which have long, fleshy stems. They're radiating light!" + icon_state = "t_mushroom1" + base_icon_state = "t_mushroom" light_range = 1.5 light_power = 2.1 harvested_name = "tiny mushrooms" @@ -139,9 +144,10 @@ regrowth_time_high = 6000 /obj/structure/flora/ash/cacti - icon_state = "cactus" name = "fruiting cacti" desc = "Several prickly cacti, brimming with ripe fruit and covered in a thin layer of ash." + icon_state = "cactus1" + base_icon_state = "cactus" harvested_name = "cacti" harvested_desc = "A bunch of prickly cacti. You can see fruits slowly growing beneath the covering of ash." harvest = /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit @@ -160,9 +166,10 @@ AddComponent(/datum/component/caltrop, 3, 6, 70) /obj/structure/flora/ash/fireblossom - icon_state = "fireblossom" name = "fire blossom" desc = "An odd flower that grows commonly near bodies of lava." + icon_state = "fireblossom" + base_icon_state = "fireblossom" harvested_name = "fire blossom stems" harvested_desc = "A few fire blossom stems, missing their flowers." harvest = /obj/item/reagent_containers/food/snacks/grown/ash_flora/fireblossom @@ -178,6 +185,31 @@ regrowth_time_low = 2500 regrowth_time_high = 4000 +/obj/structure/flora/ash/coaltree + icon_state = "coaltree1" + base_icon_state = "coaltree" + name = "coaltree" + desc = "Небольшое мрачное дерево, растущее на просторах такой же мрачной планеты." + ru_names = list( + NOMINATIVE = "угледрево", + GENITIVE = "угледрева", + DATIVE = "угледреву", + ACCUSATIVE = "угледрево", + INSTRUMENTAL = "угледревом", + PREPOSITIONAL = "угледреве" + ) + gender = NEUTER + harvested_name = "coaltree stump" + harvested_desc = "Голый ствол дерева, оставшийся без своей уродливой кроны." + harvest = /obj/item/reagent_containers/food/snacks/grown/ash_flora/coaltree_log + harvest_amount_high = 5 + harvest_time = 40 + harvest_message_low = "Вы обрезаете небольшое дерево." + harvest_message_med = "Вы обрезаете дерево среднего размера." + harvest_message_high = "Вы обрезаете большое дерево." + regrowth_time_low = 4000 + regrowth_time_high = 6000 + /obj/item/reagent_containers/food/snacks/grown/ash_flora name = "mushroom shavings" desc = "Some shavings from a tall mushroom. With enough, might serve as a bowl." @@ -232,6 +264,44 @@ seed = /obj/item/seeds/lavaland/fireblossom wine_power = 0.4 +/obj/item/reagent_containers/food/snacks/grown/ash_flora/coaltree_log + name = "coaltree log" + desc = "Бревно угледрева, на ощупь мягкое." + ru_names = list( + NOMINATIVE = "бревно угледрева", + GENITIVE = "бревна угледрева", + DATIVE = "бревну угледрева", + ACCUSATIVE = "бревно угледрева", + INSTRUMENTAL = "бревном угледрева", + PREPOSITIONAL = "бревне угледрева" + ) + gender = NEUTER + icon_state = "coaltree_log" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' + item_state = "coaltree_log" + seed = /obj/item/seeds/lavaland/coaltree + wine_power = 0.5 + item_flags = NOBLUDGEON + w_class = WEIGHT_CLASS_NORMAL + +/obj/item/reagent_containers/food/snacks/grown/ash_flora/coaltree_log/attackby(obj/item/I, mob/user, params) + if(is_sharp(I)) + if(!isturf(loc)) + add_fingerprint(user) + to_chat(user, span_warning("Вы не можете рубить [declent_ru(ACCUSATIVE)] [ismob(loc) ? "в инвентаре" : "в [loc.declent_ru(PREPOSITIONAL)]"].")) + return ATTACK_CHAIN_PROCEED + + to_chat(user, span_notice("Вы порубили [declent_ru(ACCUSATIVE)] на доски.")) + var/seed_modifier = 0 + if(seed) + seed_modifier = round(seed.potency / 25) + var/obj/item/stack/planks = new /obj/item/stack/sheet/wood(loc, 1 + seed_modifier) + transfer_fingerprints_to(planks) + planks.add_fingerprint(user) + qdel(src) + return ATTACK_CHAIN_BLOCKED_ALL + //SEEDS /obj/item/seeds/lavaland @@ -316,6 +386,27 @@ genes = list(/datum/plant_gene/trait/fire_resistance, /datum/plant_gene/trait/glow/yellow) reagents_add = list("tinlux" = 0.04, "nutriment" = 0.03, "carbon" = 0.05) +/obj/item/seeds/lavaland/coaltree + name = "pack of coaltree seeds" + desc = "Эти семена вырастут в угледрево." + ru_names = list( + NOMINATIVE = "пачка семян угледрева", + GENITIVE = "пачки семян угледрева", + DATIVE = "пачке семян угледрева", + ACCUSATIVE = "пачку семян угледрева", + INSTRUMENTAL = "пачкой семян угледрева", + PREPOSITIONAL = "пачке семян угледрева" + ) + gender = FEMALE + icon_state = "seed-coaltree" + species = "coaltree" + plantname = "Coaltree" + growthstages = 3 + growing_icon = 'icons/obj/hydroponics/growing.dmi' + product = /obj/item/reagent_containers/food/snacks/grown/ash_flora/coaltree_log + genes = list(/datum/plant_gene/trait/fire_resistance) + reagents_add = list("nutriment" = 0.04, "coaltree_extract" = 0.1) + //CRAFTING //what you can craft with these things @@ -325,6 +416,7 @@ reqs = list(/obj/item/reagent_containers/food/snacks/grown/ash_flora/shavings = 5) time = 30 category = CAT_PRIMAL + subcategory = CAT_MISC2 /obj/item/reagent_containers/food/drinks/mushroom_bowl name = "mushroom bowl" @@ -333,6 +425,26 @@ icon_state = "mushroom_bowl" w_class = WEIGHT_CLASS_SMALL +/obj/item/reagent_containers/food/drinks/mushroom_bowl/attackby(obj/item/I, mob/user, params) + if(!istype(I, /obj/item/lavaland_dye)) + return ..() + + var/obj/item/lavaland_dye/dye = I + to_chat(user, span_notice("Вы начали толочь селезёнку в ступке.")) + if(!do_after(user, 5 SECONDS, src, max_interact_count = 1, cancel_on_max = TRUE)) + return ..() + + var/obj/item/lavaland_mortar/new_item = new(loc) + new_item.picked_dye = dye.picked_dye + new_item.totem_dye = dye.totem_dye + new_item.fluff_name = dye.fluff_name + new_item.update_icon(UPDATE_ICON_STATE) + + user.put_in_hands(new_item) + + qdel(dye) + qdel(src) + return ATTACK_CHAIN_BLOCKED_ALL /********* * Rocks * diff --git a/code/modules/mining/lavaland/loot/ashdragon_loot.dm b/code/modules/mining/lavaland/loot/ashdragon_loot.dm index 0de7bbb7c584..19f5925ed167 100644 --- a/code/modules/mining/lavaland/loot/ashdragon_loot.dm +++ b/code/modules/mining/lavaland/loot/ashdragon_loot.dm @@ -41,7 +41,7 @@ embed_chance = 25 embedded_ignore_throwspeed_threshold = TRUE hitsound = 'sound/effects/ghost2.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "rended") + attack_verb = list("атаковал", "полоснул", "уколол", "поранил") var/summon_cooldown = 0 var/list/mob/dead/observer/spirits @@ -112,7 +112,7 @@ /obj/item/melee/ghost_sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = ITEM_ATTACK) var/ghost_counter = ghost_check() final_block_chance += clamp((ghost_counter * 5), 0, 75) - owner.visible_message("[owner] is protected by a ring of [ghost_counter] ghosts!") + owner.visible_message(span_danger("[owner] is protected by a ring of [ghost_counter] ghosts!"), projectile_message = (attack_type == PROJECTILE_ATTACK)) return ..() // Blood @@ -185,6 +185,8 @@ name = "staff of lava" desc = "The power of fire and rocks in your hands!" icon_state = "lavastaff" + lefthand_file = 'icons/mob/inhands/staff_lefthand.dmi' + righthand_file = 'icons/mob/inhands/staff_righthand.dmi' item_state = "lavastaff" icon = 'icons/obj/weapons/magic.dmi' slot_flags = ITEM_SLOT_BACK @@ -237,7 +239,7 @@ user.visible_message("[user] turns \the [T] into [transform_string]!") message_admins("[key_name_admin(user)] fired the lava staff at [ADMIN_COORDJMP(T)]") add_attack_logs(user, target, "fired lava staff", ATKLOG_MOST) - T.TerraformTurf(turf_type, keep_icon = FALSE) + T.ChangeTurf(turf_type, keep_icon = FALSE) timer = world.time + create_cooldown qdel(L) else @@ -246,7 +248,7 @@ return else user.visible_message("[user] turns \the [T] into [reset_string]!") - T.TerraformTurf(reset_turf_type, keep_icon = FALSE) + T.ChangeTurf(reset_turf_type, keep_icon = FALSE) timer = world.time + reset_cooldown playsound(T,'sound/magic/fireball.ogg', 200, 1) diff --git a/code/modules/mining/lavaland/loot/colossus_loot.dm b/code/modules/mining/lavaland/loot/colossus_loot.dm index b13a857f5fd3..a72276284539 100644 --- a/code/modules/mining/lavaland/loot/colossus_loot.dm +++ b/code/modules/mining/lavaland/loot/colossus_loot.dm @@ -36,7 +36,7 @@ var/activation_sound = 'sound/effects/break_stone.ogg' /obj/machinery/anomalous_crystal/New() - activation_method = pick("touch","laser","bullet","energy","bomb","mob_bump","weapon","speech") // "heat" removed due to lack of is_hot() + activation_method = pick("touch","laser","bullet","energy","bomb","mob_bump","weapon","speech") ..() /obj/machinery/anomalous_crystal/hear_talk(mob/speaker, list/message_pieces) @@ -60,9 +60,9 @@ -/obj/machinery/anomalous_crystal/bullet_act(obj/item/projectile/P, def_zone) +/obj/machinery/anomalous_crystal/bullet_act(obj/projectile/P, def_zone) ..() - if(istype(P, /obj/item/projectile/magic)) + if(istype(P, /obj/projectile/magic)) ActivationReaction(P.firer, "magic", P.damage_type) return ActivationReaction(P.firer, P.flag, P.damage_type) @@ -186,16 +186,16 @@ /obj/machinery/anomalous_crystal/emitter //Generates a projectile when interacted with activation_method = "touch" cooldown_add = 50 - var/generated_projectile = /obj/item/projectile/beam/emitter + var/generated_projectile = /obj/projectile/beam/emitter /obj/machinery/anomalous_crystal/emitter/New() ..() - generated_projectile = pick(/obj/item/projectile/magic/fireball/infernal,/obj/item/projectile/magic/spellblade, - /obj/item/projectile/bullet/meteorshot, /obj/item/projectile/beam/xray, /obj/item/projectile/colossus) + generated_projectile = pick(/obj/projectile/magic/fireball/infernal,/obj/projectile/magic/spellblade, + /obj/projectile/bullet/meteorshot, /obj/projectile/beam/xray, /obj/projectile/colossus) /obj/machinery/anomalous_crystal/emitter/ActivationReaction(mob/user, method) if(..()) - var/obj/item/projectile/P = new generated_projectile(get_turf(src)) + var/obj/projectile/P = new generated_projectile(get_turf(src)) P.dir = dir switch(dir) if(NORTH) @@ -321,8 +321,8 @@ cooldown_add = 50 activation_sound = 'sound/magic/timeparadox2.ogg' var/list/banned_items_typecache = list(/obj/item/storage, /obj/item/implant, /obj/item/implanter, /obj/item/disk/nuclear, - /obj/item/projectile, /obj/item/spellbook, /obj/item/clothing/mask/facehugger, /obj/item/contractor_uplink, - /obj/item/dice/d20/fate, /obj/item/gem) + /obj/projectile, /obj/item/spellbook, /obj/item/clothing/mask/facehugger, /obj/item/contractor_uplink, + /obj/item/dice/d20/fate, /obj/item/gem, /obj/item/guardiancreator, /obj/item/dna_upgrader) /obj/machinery/anomalous_crystal/refresher/New() ..() diff --git a/code/modules/mining/lavaland/loot/hierophant_loot.dm b/code/modules/mining/lavaland/loot/hierophant_loot.dm index 8f80163a4b28..f77ff4efe4fd 100644 --- a/code/modules/mining/lavaland/loot/hierophant_loot.dm +++ b/code/modules/mining/lavaland/loot/hierophant_loot.dm @@ -13,7 +13,7 @@ slot_flags = ITEM_SLOT_BACK w_class = WEIGHT_CLASS_BULKY force = 15 - attack_verb = list("clubbed", "beat", "pummeled") + attack_verb = list("стукнул", "ударил") hitsound = 'sound/weapons/sonic_jackhammer.ogg' actions_types = list(/datum/action/item_action/vortex_recall, /datum/action/item_action/toggle_unfriendly_fire) var/cooldown_time = 20 //how long the cooldown between non-melee ranged attacks is diff --git a/code/modules/mining/lavaland/loot/tendril_loot.dm b/code/modules/mining/lavaland/loot/tendril_loot.dm index 21d4e613711d..b41a15ea5d72 100644 --- a/code/modules/mining/lavaland/loot/tendril_loot.dm +++ b/code/modules/mining/lavaland/loot/tendril_loot.dm @@ -3,7 +3,15 @@ //Internal /obj/item/storage/backpack/shared name = "paradox bag" - desc = "Somehow, it's in two places at once." + desc = "Каким-то образом, эта сумка существует в двух местах одновременно." + ru_names = list( + NOMINATIVE = "парадоксальная сумка", + GENITIVE = "парадоксальной сумки", + DATIVE = "парадоксальной сумке", + ACCUSATIVE = "парадоксальную сумку", + INSTRUMENTAL = "парадоксальной сумкой", + PREPOSITIONAL = "парадоксальной сумке" + ) max_combined_w_class = 60 max_w_class = WEIGHT_CLASS_NORMAL cant_hold = list(/obj/item/storage/backpack/shared) @@ -13,7 +21,7 @@ // basically we cannot put one bag in the storage if another one is already there if(istype(I) && I.bag && I.bag == src && I.twin_storage && I.twin_storage.loc == src) if(!stop_messages) - to_chat(usr, span_warning("Yo dawg, and how are you going to do it?")) + balloon_alert(usr, "невозможно!") return FALSE return ..() @@ -21,7 +29,15 @@ //External /obj/item/shared_storage name = "paradox bag" - desc = "Somehow, it's in two places at once." + desc = "Каким-то образом, эта сумка существует в двух местах одновременно." + ru_names = list( + NOMINATIVE = "парадоксальная сумка", + GENITIVE = "парадоксальной сумки", + DATIVE = "парадоксальной сумке", + ACCUSATIVE = "парадоксальную сумку", + INSTRUMENTAL = "парадоксальной сумкой", + PREPOSITIONAL = "парадоксальной сумке" + ) icon = 'icons/obj/storage.dmi' icon_state = "cultpack" slot_flags = ITEM_SLOT_BACK @@ -92,12 +108,12 @@ open_bag(user) -/obj/item/shared_storage/AltClick(mob/user) +/obj/item/shared_storage/click_alt(mob/user) if(!bag || !iscarbon(user) || loc != user) - return ..() + return NONE open_bag(user) - + return CLICK_ACTION_SUCCESS /obj/item/shared_storage/attack_hand(mob/living/carbon/user) @@ -111,7 +127,15 @@ /obj/item/book_of_babel name = "Book of Babel" - desc = "An ancient tome written in countless tongues." + desc = "Древнейший фолиант, написанный на бесчисленном множестве языков." + ru_names = list( + NOMINATIVE = "Вавилонская книга", + GENITIVE = "Вавилонской книги", + DATIVE = "Вавилонской книге", + ACCUSATIVE = "Вавилонскую книгу", + INSTRUMENTAL = "Вавилонской книгой", + PREPOSITIONAL = "Вавилонской книге" + ) icon = 'icons/obj/library.dmi' icon_state = "book1" w_class = 2 @@ -119,11 +143,14 @@ /obj/item/book_of_babel/attack_self(mob/living/carbon/user) if(HAS_TRAIT(user, TRAIT_NO_BABEL)) - user.visible_message(span_notice("[user] suddenly stops, releasing [src].")) - to_chat(user, span_warning("You don't know what a book is or what to do with it.")) + user.visible_message( + span_notice("[user] внезапно останавлива[pluralize_ru(user, "ет", "ют")]ся, недоумённо глядя на [declent_ru(GENITIVE)]."), + span_warning("Вы понятия не имеете, что это такое и что с этим делать.") + ) + return - to_chat(user, "You flip through the pages of the book, quickly and conveniently learning every language in existence. Somewhat less conveniently, the aging book crumbles to dust in the process. Whoops.") + to_chat(user, "Вы упоённо пролистываете страницы книги, вбирая в себя знания всех существующих языков во Вселенной. К сожалению, [declent_ru(NOMINATIVE)] не выдерживает такого напора и рассыпается в прах. Ой...") user.grant_all_babel_languages() new /obj/effect/decal/cleanable/ash(get_turf(user)) user.temporarily_remove_item_from_inventory(src) @@ -138,7 +165,15 @@ /obj/item/reagent_containers/glass/bottle/potion/flight name = "strange elixir" - desc = "A flask with an almost-holy aura emitting from it. The label on the bottle says: 'erqo'hyy tvi'rf lbh jv'atf'." + desc = "Флакон с едва ли не святой аурой, исходящей от него. Вы пытаетесь прочитать надпись на бутылке, но текст неразборчив." + ru_names = list( + NOMINATIVE = "странный эликсир", + GENITIVE = "странного эликсира", + DATIVE = "странному эликсиру", + ACCUSATIVE = "странный эликсир", + INSTRUMENTAL = "странным эликсиром", + PREPOSITIONAL = "странном эликсире" + ) list_reagents = list("flightpotion" = 5) /obj/item/reagent_containers/glass/bottle/potion/update_icon_state() @@ -148,22 +183,22 @@ icon_state = "potionflask_empty" /datum/reagent/flightpotion - name = "Flight Potion" + name = "Зелье полёта" id = "flightpotion" - description = "Strange mutagenic compound of unknown origins." + description = "Странный мутагенный состав неизвестного происхождения." reagent_state = LIQUID color = "#FFEBEB" /datum/reagent/flightpotion/reaction_mob(mob/living/M, method = REAGENT_TOUCH, reac_volume, show_message = 1) - to_chat(M, "This item is currently non-functional.") + to_chat(M, span_warning("Данный предмет нефункционален на текущий момент.")) /*if(ishuman(M) && M.stat != DEAD) var/mob/living/carbon/human/H = M if(!ishumanbasic(H) || reac_volume < 5) // implying xenohumans are holy if(method == INGEST && show_message) - to_chat(H, "You feel nothing but a terrible aftertaste.") + to_chat(H, span_notice("Кроме отвратительного послевкусия у вас во рту, вы ничего не почувствовали.")) return ..() - to_chat(H, "A terrible pain travels down your back as wings burst out!") + to_chat(H, span_danger("Невыносимая боль проходит через вашу спину, как вдруг оттуда вырываются крылья!")) H.set_species(/datum/species/angel) playsound(H.loc, 'sound/items/poster_ripped.ogg', 50, 1, -1) H.adjustBruteLoss(20) @@ -172,7 +207,15 @@ /obj/item/jacobs_ladder name = "jacob's ladder" - desc = "A celestial ladder that violates the laws of physics." + desc = "Небесная лестница, нарушающая законы физики." + ru_names = list( + NOMINATIVE = "лестница Иакова", + GENITIVE = "лестницы Иакова", + DATIVE = "лестнице Иакова", + ACCUSATIVE = "лестницу Иакова", + INSTRUMENTAL = "лестницей Иакова", + PREPOSITIONAL = "лестнице Иакова" + ) icon = 'icons/obj/structures.dmi' icon_state = "ladder" @@ -180,7 +223,7 @@ var/turf/T = get_turf(src) var/ladder_x = T.x var/ladder_y = T.y - to_chat(user, "You unfold the ladder. It extends much farther than you were expecting.") + to_chat(user, span_notice("Вы разворачиваете лестницу. Она уходит значительно дальше, чем вы ожидали.")) var/last_ladder = null for(var/i in 1 to world.maxz) if(is_admin_level(i) || is_away_level(i) || is_taipan(i)) @@ -195,12 +238,27 @@ // Inherit from unbreakable but don't set ID, to suppress the default Z linkage /obj/structure/ladder/unbreakable/jacob name = "jacob's ladder" - desc = "An indestructible celestial ladder that violates the laws of physics." - + desc = "Нерушимая небесная лестница, нарушающая законы физики." + ru_names = list( + NOMINATIVE = "лестница Иакова", + GENITIVE = "лестницы Иакова", + DATIVE = "лестнице Иакова", + ACCUSATIVE = "лестницу Иакова", + INSTRUMENTAL = "лестницей Иакова", + PREPOSITIONAL = "лестнице Иакова" + ) //Wisp Lantern /obj/item/wisp_lantern name = "spooky lantern" - desc = "This lantern gives off no light, but is home to a friendly wisp." + desc = "Эта лампа не источает света, но является пристанищем для дружелюбного духа." + ru_names = list( + NOMINATIVE = "жуткая лампа", + GENITIVE = "жуткой лампы", + DATIVE = "жуткой лампе", + ACCUSATIVE = "жуткую лампу", + INSTRUMENTAL = "жуткой лампой", + PREPOSITIONAL = "жуткой лампе" + ) icon = 'icons/obj/lighting.dmi' icon_state = "lantern-blue" item_state = "lantern" @@ -222,33 +280,31 @@ /obj/item/wisp_lantern/attack_self(mob/user) if(!wisp) - to_chat(user, "The wisp has gone missing!") + balloon_alert(user, "дух исчезает") update_icon(UPDATE_ICON_STATE) return if(wisp.loc == src) RegisterSignal(user, COMSIG_MOB_UPDATE_SIGHT, PROC_REF(update_user_sight)) - to_chat(user, "You release the wisp. It begins to bob around your head.") + balloon_alert(user, "дух выпущен") wisp.forceMove(user) update_icon(UPDATE_ICON_STATE) INVOKE_ASYNC(wisp, TYPE_PROC_REF(/atom/movable, orbit), user, 20) set_light_on(FALSE) user.update_sight() - to_chat(user, "The wisp enhances your vision.") SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Freed") // freed else UnregisterSignal(user, COMSIG_MOB_UPDATE_SIGHT) - to_chat(user, "You return the wisp to the lantern.") + balloon_alert("дух возвращён") wisp.stop_orbit() wisp.forceMove(src) set_light_on(TRUE) user.update_sight() - to_chat(user, "Your vision returns to normal.") update_icon(UPDATE_ICON_STATE) SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Returned") // returned @@ -263,7 +319,7 @@ if(wisp.loc == src) qdel(wisp) else - wisp.visible_message("[wisp] has a sad feeling for a moment, then it passes.") + wisp.visible_message(span_notice("Дух огорчённо вздыхает, а затем улетает восвояси.")) return ..() /obj/item/wisp_lantern/proc/update_user_sight(mob/user) @@ -273,7 +329,15 @@ /obj/effect/wisp name = "friendly wisp" - desc = "Happy to light your way." + desc = "Счастливо освещает вам путь." + ru_names = list( + NOMINATIVE = "дружелюбный дух", + GENITIVE = "дружелюбного духа", + DATIVE = "дружелюбному духу", + ACCUSATIVE = "дружелюбного духа", + INSTRUMENTAL = "дружелюбным духом", + PREPOSITIONAL = "дружелюбном духе" + ) icon = 'icons/obj/lighting.dmi' icon_state = "orb" light_range = 7 @@ -282,7 +346,15 @@ //Red/Blue Cubes /obj/item/warp_cube name = "blue cube" - desc = "A mysterious blue cube." + desc = "Мистический синий куб." + ru_names = list( + NOMINATIVE = "синий куб", + GENITIVE = "синего куба", + DATIVE = "синему кубу", + ACCUSATIVE = "синий куб", + INSTRUMENTAL = "синим кубом", + PREPOSITIONAL = "синем кубе" + ) icon = 'icons/obj/lavaland/artefacts.dmi' icon_state = "blue_cube" var/obj/item/warp_cube/linked @@ -295,30 +367,38 @@ /obj/item/warp_cube/attack_self(mob/user) if(!linked) - to_chat(user, "[src] fizzles uselessly.") + balloon_alert(user, "куб искрится и шипит") return if(is_in_teleport_proof_area(user) || is_in_teleport_proof_area(linked)) - to_chat(user, "[src] sparks and fizzles.") + balloon_alert(user, "куб искрится и шипит.") return if(do_after(user, 1.5 SECONDS, user)) - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(1, 0, user.loc) + var/datum/effect_system/fluid_spread/smoke/smoke = new + smoke.set_up(amount = 1, location = user.loc) smoke.start() user.forceMove(get_turf(linked)) SSblackbox.record_feedback("tally", "warp_cube", 1, type) - var/datum/effect_system/smoke_spread/smoke2 = new - smoke2.set_up(1, 0, user.loc) + var/datum/effect_system/fluid_spread/smoke/smoke2 = new + smoke2.set_up(amount = 1, location = user.loc) smoke2.start() else - to_chat(user, "You need to hold still to use [src].") + balloon_alert(user, "прервано из-за движения") /obj/item/warp_cube/red name = "red cube" - desc = "A mysterious red cube." + desc = "Мистический красный куб." + ru_names = list( + NOMINATIVE = "красный куб", + GENITIVE = "красного куба", + DATIVE = "красному кубу", + ACCUSATIVE = "красный куб", + INSTRUMENTAL = "красным кубом", + PREPOSITIONAL = "красном кубе" + ) icon_state = "red_cube" /obj/item/warp_cube/red/New() @@ -332,7 +412,15 @@ /obj/item/gun/magic/hook name = "meat hook" - desc = "Mid or feed." + desc = "Ты погляди, свежее мясо!" + ru_names = list( + NOMINATIVE = "мясной крюк", + GENITIVE = "мясного крюка", + DATIVE = "мясному крюку", + ACCUSATIVE = "мясной крюк", + INSTRUMENTAL = "мясным крюком", + PREPOSITIONAL = "мясном крюке" + ) ammo_type = /obj/item/ammo_casing/magic/hook icon_state = "hook" item_state = "chain" @@ -343,13 +431,21 @@ /obj/item/ammo_casing/magic/hook name = "hook" - desc = "a hook." - projectile_type = /obj/item/projectile/hook + desc = "Это крюк." + ru_names = list( + NOMINATIVE = "крюк", + GENITIVE = "крюка", + DATIVE = "крюку", + ACCUSATIVE = "крюк", + INSTRUMENTAL = "крюком", + PREPOSITIONAL = "крюке" + ) + projectile_type = /obj/projectile/hook caliber = "hook" icon_state = "hook" muzzle_flash_effect = null -/obj/item/projectile/hook +/obj/projectile/hook name = "hook" icon_state = "hook" icon = 'icons/obj/lavaland/artefacts.dmi' @@ -360,24 +456,24 @@ hitsound = 'sound/effects/splat.ogg' weaken = 2 SECONDS -/obj/item/projectile/hook/fire(setAngle) +/obj/projectile/hook/fire(setAngle) if(firer) - chain = firer.Beam(src, icon_state = "chain", time = INFINITY, maxdistance = INFINITY, beam_sleep_time = 1) + chain = firer.Beam(src, icon_state = "chain", time = INFINITY, maxdistance = INFINITY) ..() //TODO: root the firer until the chain returns -/obj/item/projectile/hook/on_hit(atom/target) +/obj/projectile/hook/on_hit(atom/target) . = ..() if(isliving(target)) var/turf/firer_turf = get_turf(firer) var/mob/living/L = target if(!L.anchored && L.loc) - L.visible_message("[L] is snagged by [firer]'s hook!") + L.visible_message(span_danger("[firer] зацепля[pluralize_ru(firer, "ет", "ют")] [L] [declent_ru(INSTRUMENTAL)]!")) ADD_TRAIT(L, TRAIT_UNDENSE, UNIQUE_TRAIT_SOURCE(src)) // Ensures the hook does not hit the target multiple times L.forceMove(firer_turf) REMOVE_TRAIT(L, TRAIT_UNDENSE, UNIQUE_TRAIT_SOURCE(src)) -/obj/item/projectile/hook/Destroy() +/obj/projectile/hook/Destroy() QDEL_NULL(chain) return ..() @@ -385,7 +481,15 @@ //Immortality Talisman /obj/item/immortality_talisman name = "Immortality Talisman" - desc = "A dread talisman that can render you completely invulnerable." + desc = "Таинственный талисман, способный даровать неуязвимость." + ru_names = list( + NOMINATIVE = "Талисман Бессмертия", + GENITIVE = "Талисмана Бессмертия", + DATIVE = "Талисману Бессмертия", + ACCUSATIVE = "Талисман Бессмертия", + INSTRUMENTAL = "Талисманом Бессмертия", + PREPOSITIONAL = "Талисмане Бессмертия" + ) icon = 'icons/obj/lavaland/artefacts.dmi' icon_state = "talisman" resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF @@ -406,7 +510,7 @@ /obj/item/immortality_talisman/attack_self(mob/user) if(!COOLDOWN_FINISHED(src, last_used_immortality_talisman)) - to_chat(user, span_warning("[src] is still recharging.")) + balloon_alert(user, "ещё не готово!") return var/turf/source_turf = get_turf(src) @@ -415,11 +519,11 @@ COOLDOWN_START(src, last_used_immortality_talisman, 60 SECONDS) SSblackbox.record_feedback("amount", "immortality_talisman_uses", 1) - user.visible_message(span_danger("[user] vanishes from reality, leaving a a hole in [user.p_their()] place!")) + user.visible_message(span_danger("[user] исчеза[pluralize_ru(user, "ет", "ют")] из реальности, оставляя после себя дыру в пространстве!")) var/obj/effect/immortality_talisman/effect = new(source_turf) effect.name = "hole in reality" - effect.desc = "It's shaped an awful lot like [user.name]." + effect.desc = "Подозрительно походит на силуэт [user.name]." effect.setDir(user.dir) user.forceMove(effect) user.add_traits(list(TRAIT_NO_TRANSFORM, TRAIT_GODMODE), UNIQUE_TRAIT_SOURCE(src)) @@ -438,7 +542,7 @@ user.remove_traits(list(TRAIT_NO_TRANSFORM, TRAIT_GODMODE), UNIQUE_TRAIT_SOURCE(src)) user.forceMove(effect_turf) - user.visible_message(span_danger("[user] pops back into reality!")) + user.visible_message(span_danger("[user] материализу[pluralize_ru(user.gender, "ет", "ют")]ся в пространстве, вновь возвращаясь в нашу реальность!")) effect.can_destroy = TRUE if(length(effect.contents)) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index fc39e9d2714c..bb06188c0d8e 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -276,7 +276,7 @@ icon_state = "eflower" var/next_summon = 0 var/list/summons = list() - attack_verb = list("thumped", "brushed", "bumped") + attack_verb = list("ударил", "шлифанул", "стукнул") /obj/item/eflowers/attack_self(mob/user) var/turf/T = get_turf(user) @@ -339,7 +339,7 @@ damtype = BRUTE sharp = TRUE hitsound = 'sound/weapons/rs_slash.ogg' - attack_verb = list("slashed","pk'd","atk'd") + attack_verb = list("плс'л","атк'л","руб'л") /obj/item/organ/internal/cyberimp/arm/katana name = "dark shard" @@ -419,7 +419,7 @@ block_type = MELEE_ATTACKS sharp = TRUE w_class = WEIGHT_CLASS_HUGE - attack_verb = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut") + attack_verb = list("атаковал", "ударил", "порезал", "покромсал", "порвал", "поцарапал", "рубанул") hitsound = 'sound/weapons/bladeslice.ogg' var/shattered = FALSE var/drew_blood = FALSE diff --git a/code/modules/mining/lavaland/world_anvil.dm b/code/modules/mining/lavaland/world_anvil.dm index 556638fdf821..2dd5b9f9b075 100644 --- a/code/modules/mining/lavaland/world_anvil.dm +++ b/code/modules/mining/lavaland/world_anvil.dm @@ -22,12 +22,10 @@ /obj/structure/world_anvil/Initialize() . = ..() - GLOB.anvils += src internal = new /obj/item/gps/internal/world_anvil(src) /obj/structure/world_anvil/Destroy() QDEL_NULL(internal) - GLOB.anvils -= src . = ..() /obj/structure/world_anvil/update_icon_state() diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index 842f46e041d4..12a1ec2fb790 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -2,6 +2,7 @@ #define BASE_SHEET_MULT 0.5 #define POINT_MULT_ADD_PER_RATING 0.35 #define SHEET_MULT_ADD_PER_RATING 0.2 +#define MESSAGES_WAIT_TIME 1 MINUTES /** * # Ore Redemption Machine @@ -28,15 +29,16 @@ /// List of supply console department names that can receive a notification about ore dumps. /// A list may be provided as entry value to only notify when specific ore is dumped. var/list/supply_consoles = list( - "Science", - "Robotics", - "Research Director's Desk", - "Mechanic", - "Engineering" = list(MAT_METAL, MAT_GLASS, MAT_PLASMA), - "Chief Engineer's Desk" = list(MAT_METAL, MAT_GLASS, MAT_PLASMA), - "Atmospherics" = list(MAT_METAL, MAT_GLASS, MAT_PLASMA), - "Bar" = list(MAT_URANIUM, MAT_PLASMA), - "Virology" = list(MAT_PLASMA, MAT_URANIUM, MAT_GOLD) + RC_SCIENCE, + RC_RESEARCH, + RC_ROBOTICS, + RC_RESEARCH_DIRECTOR_DESK, + RC_MECHANIC, + RC_ENGINEERING = list(MAT_METAL, MAT_GLASS, MAT_PLASMA), + RC_CHIEF_ENGINEER_DESK = list(MAT_METAL, MAT_GLASS, MAT_PLASMA), + RC_ATMOSPHERICS = list(MAT_METAL, MAT_GLASS, MAT_PLASMA), + RC_BAR = list(MAT_URANIUM, MAT_PLASMA), + RC_VIROLOGY = list(MAT_PLASMA, MAT_URANIUM, MAT_GOLD) ) // Variables /// The currently inserted ID. @@ -55,6 +57,7 @@ var/datum/research/files /// The currently inserted design disk. var/obj/item/disk/design_disk/inserted_disk + COOLDOWN_DECLARE(messages_cooldown) /obj/machinery/mineral/ore_redemption/New() ..() @@ -186,9 +189,13 @@ // Process it if(length(ore_buffer)) message_sent = FALSE + if(!COOLDOWN_STARTED(src, messages_cooldown)) + COOLDOWN_START(src, messages_cooldown, MESSAGES_WAIT_TIME) process_ores(ore_buffer) - else if(!message_sent) + + if(COOLDOWN_FINISHED(src, messages_cooldown) && !message_sent) SStgui.update_uis(src) + COOLDOWN_RESET(src, messages_cooldown) send_console_message() message_sent = TRUE @@ -484,7 +491,7 @@ if(!(C.department in supply_consoles)) continue if(!supply_consoles[C.department] || length(supply_consoles[C.department] - mats_in_stock)) - C.createMessage("Плавильная печь", "Новые ресурсы доступны!", msg, 1) // RQ_NORMALPRIORITY + C.createMessage(ORE_REDEMPTION, "Новые ресурсы доступны!", msg, 1) // RQ_NORMALPRIORITY /** * Tries to insert the ID card held by the given user into the machine. diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 40e76bac7402..4498cb3300c5 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -60,30 +60,111 @@ /obj/machinery/computer/shuttle/mining name = "Mining Shuttle Console" - desc = "Used to call and send the mining shuttle." + desc = "Используется для вызова и отправки шахтёрского шаттла." circuit = /obj/item/circuitboard/mining_shuttle shuttleId = "mining" possible_destinations = "mining_home;mining_away" + lockdown_affected = TRUE /******************************Lantern*******************************/ /obj/item/flashlight/lantern name = "lantern" + desc = "Шахтёрская лампа." + ru_names = list( + NOMINATIVE = "лампа", + GENITIVE = "лампы", + DATIVE = "лампе", + ACCUSATIVE = "лампу", + INSTRUMENTAL = "лампой", + PREPOSITIONAL = "лампе" + ) + gender = FEMALE icon_state = "lantern" item_state = "lantern" belt_icon = "lantern" - desc = "A mining lantern." - light_range = 6 // luminosity when on + light_range = 6 // luminosity when on light_color = LIGHT_COLOR_YELLOW light_system = MOVABLE_LIGHT + var/obj/item/gem/inserted_gem = null + var/mutable_appearance/lantern_light_overlay +/obj/item/flashlight/lantern/Initialize(mapload) + . = ..() + lantern_light_overlay = mutable_appearance('icons/obj/lighting.dmi',"lantern_light", color = light_color) + +/obj/item/flashlight/lantern/examine(mob/user) + . = ..() + if(!inserted_gem) + . += span_notice("Внутри лампы есть небольшое отверстие под самоцвет.") + else + . += span_notice("Внутри лампы находится [inserted_gem.declent_ru(NOMINATIVE)]. Его можно извлечь с помощью лома.") + +/obj/item/flashlight/lantern/update_icon_state() + cut_overlay(lantern_light_overlay) + if(on) + add_overlay(lantern_light_overlay) + +/obj/item/flashlight/lantern/crowbar_act(mob/living/user, obj/item/I) + if(on) + balloon_alert(user, "лампа включена!") + return + if(!inserted_gem) + balloon_alert(user, "самоцвет отсутствует!") + return + to_chat(user, span_notice("Вы осторожно вынимаете [inserted_gem.declent_ru(ACCUSATIVE)] из лампы.")) + inserted_gem.set_light_on(TRUE) + inserted_gem.forceMove(get_turf(user)) + inserted_gem = null + refresh_lantern_lights() + return TRUE + +/obj/item/flashlight/lantern/proc/refresh_lantern_lights() + if(on) + on = !on + cut_overlay(lantern_light_overlay) + if(!inserted_gem) + set_light_color(LIGHT_COLOR_YELLOW) + lantern_light_overlay = mutable_appearance('icons/obj/lighting.dmi',"lantern_light", color = light_color) + else + set_light_color(inserted_gem.light_color) + lantern_light_overlay = mutable_appearance('icons/obj/lighting.dmi',"lantern_light", color = light_color) + +/obj/item/flashlight/lantern/attackby(obj/item/I, mob/user, params) + . = ..() + + if(ATTACK_CHAIN_CANCEL_CHECK(.) || !istype(I, /obj/item/gem)) + return . + + if(on) + balloon_alert(user, "лампа включена!") + return . + + add_fingerprint(user) + var/obj/item/gem/new_gem = I + if(inserted_gem) + balloon_alert(user, "уже вставлено!") + return . + if(!user.drop_transfer_item_to_loc(new_gem, src)) + return . + . |= ATTACK_CHAIN_BLOCKED_ALL + to_chat(user, span_notice("вы осторожно устанавливаете [new_gem.declent_ru(NOMINATIVE)] в лампу.")) + inserted_gem = new_gem + inserted_gem.set_light_on(FALSE) + refresh_lantern_lights() /**********************Mining car (Crate like thing, not the rail car)**************************/ /obj/structure/closet/crate/miningcar - desc = "A mining car. This one doesn't work on rails, but has to be dragged." - name = "mining car (not for rails)" + name = "mining car" + desc = "Шахтёрская вагонетка. К сожалению, рельсов на Лазисе нет. Зато её можно тащить." + ru_names = list( + NOMINATIVE = "вагонетка", + GENITIVE = "вагонетки", + DATIVE = "вагонетке", + ACCUSATIVE = "вагонетку", + INSTRUMENTAL = "вагонеткой", + PREPOSITIONAL = "вагонетке" + ) + gender = FEMALE icon_state = "miningcar" - density = TRUE - icon_opened = "miningcaropen" - icon_closed = "miningcar" diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm index ed16cecb7bc9..4bf40fd38690 100644 --- a/code/modules/mining/minebot.dm +++ b/code/modules/mining/minebot.dm @@ -156,13 +156,13 @@ /mob/living/simple_animal/hostile/mining_drone/CanAllowThrough(atom/movable/mover, border_dir) . = ..() - if(istype(mover, /obj/item/projectile/kinetic)) - var/obj/item/projectile/kinetic/projectile = mover + if(istype(mover, /obj/projectile/kinetic)) + var/obj/projectile/kinetic/projectile = mover if(projectile.kinetic_gun) for(var/obj/item/borg/upgrade/modkit/minebot_passthrough/MK in projectile.kinetic_gun.get_modkits()) return TRUE - if(istype(mover, /obj/item/projectile/destabilizer)) + if(istype(mover, /obj/projectile/destabilizer)) return TRUE diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index 1cc12eb483a9..aae40398c034 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -1,104 +1,213 @@ -/**********************Mint**************************/ - +#define COIN_COST MINERAL_MATERIAL_AMOUNT * 0.2 /obj/machinery/mineral/mint name = "coin press" + desc = "Массивная, слегка шумящая машина с тяжелыми стальными прессами. \ + Она используется для чеканки монет из различных матриалов. \ + На корпусе расположена панель управления с настройками для выбора металла и нанесения уникальных штампов." + + ru_names = list( + NOMINATIVE = "монетный пресс", + GENITIVE = "монетного пресса", + DATIVE = "монетному прессу", + ACCUSATIVE = "монетный пресс", + INSTRUMENTAL = "монетным прессом", + PREPOSITIONAL = "монетном прессе", + ) + icon = 'icons/obj/economy.dmi' - icon_state = "coinpress0" + icon_state = "coin_press" density = TRUE anchored = TRUE - var/newCoins = 0 //how many coins the machine made in it's last load - var/processing = FALSE - var/chosen = MAT_METAL //which material will be used to make coins - var/coinsToProduce = 10 - speed_process = TRUE -/obj/machinery/mineral/mint/New() - ..() - AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_URANIUM, MAT_DIAMOND, MAT_BANANIUM, MAT_TRANQUILLITE), MINERAL_MATERIAL_AMOUNT * 50, FALSE, /obj/item/stack) + /// How many coins did the machine make in total. + var/total_coins = 0 + /// Is it creating coins now? + var/active = FALSE + /// Which material will be used to make coins or for ejecting. + var/chosen_material + /// Inserted money bag. + var/obj/item/storage/bag/money/money_bag -/obj/machinery/mineral/mint/process() - var/turf/T = get_step(src, input_dir) - if(!T) - return +/obj/machinery/mineral/mint/Initialize(mapload) + . = ..() + var/static/list/coin_materials = list() + if(!length(coin_materials)) + for(var/datum/material/coin_mat as anything in subtypesof(/datum/material)) + var/obj/item/coin/coin_type = coin_mat.coin_type + if(!coin_type) + continue + coin_materials += coin_mat.id + + AddComponent(/datum/component/material_container, coin_materials, MINERAL_MATERIAL_AMOUNT * 50, FALSE, /obj/item/stack, _after_insert = CALLBACK(src, PROC_REF(material_insert))) + chosen_material = pick(coin_materials[1]) + +/obj/machinery/mineral/mint/Destroy() var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - for(var/obj/item/stack/sheet/O in T) - materials.insert_stack(O, O.amount) + materials.retrieve_all() + return ..() + +/obj/machinery/mineral/mint/update_icon_state() + if(active) + icon_state = "coin_press-active" + else + icon_state = "coin_press" + +/obj/machinery/mineral/mint/wrench_act(mob/user, obj/item/I) + default_unfasten_wrench(user, I, time = 4 SECONDS) + return TRUE /obj/machinery/mineral/mint/attack_hand(mob/user) - if(..()) - return - var/dat = {"Coin Press
"} + add_fingerprint(user) + ui_interact(user) + +/obj/machinery/mineral/mint/attack_ghost(mob/user) + ui_interact(user) + +/obj/machinery/mineral/mint/ui_state(mob/user) + return GLOB.default_state + +/obj/machinery/mineral/mint/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "CoinMint") + ui.set_autoupdate(FALSE) + ui.open() + +/obj/machinery/mineral/mint/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/materials) + ) + +/obj/machinery/mineral/mint/ui_data(mob/user) + var/list/data = list() + + data["active"] = active + data["chosenMaterial"] = chosen_material + data["totalCoins"] = total_coins + data["moneyBag"] = !!money_bag + + if(money_bag) + data["moneyBagContent"] = length(money_bag.contents) + data["moneyBagMaxContent"] = money_bag.storage_slots var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) + data["totalMaterials"] = materials.total_amount + data["maxMaterials"] = materials.max_amount + + var/list/material_list = list() for(var/mat_id in materials.materials) - var/datum/material/M = materials.materials[mat_id] - if(!M.amount && chosen != mat_id) - continue - dat += "
[M.name] amount: [M.amount] cm3 " - if(chosen == mat_id) - dat += "Chosen" - else - dat += "Choose" - - var/datum/material/M = materials.materials[chosen] - - dat += "

Will produce [coinsToProduce] [lowertext(M.name)] coins if enough materials are available.
" - dat += "-10 " - dat += "-5 " - dat += "-1 " - dat += "+1 " - dat += "+5 " - dat += "+10 " - - dat += "

In total this machine produced [newCoins] coins." - dat += "
Make coins" - user << browse(dat, "window=mint") - -/obj/machinery/mineral/mint/Topic(href, href_list) + var/datum/material/material = materials.materials[mat_id] + material_list += list(list( + "name" = material.name, + "amount" = material.amount / MINERAL_MATERIAL_AMOUNT, + "id" = material.id + )) + data["materials"] = material_list + + return data + +/obj/machinery/mineral/mint/ui_act(action, params, datum/tgui/ui) if(..()) return - usr.set_machine(src) - add_fingerprint(usr) - if(processing == 1) - to_chat(usr, "The machine is processing.") + . = TRUE + + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) + switch(action) + if("selectMaterial") + if(!materials.materials[params["material"]]) + return + chosen_material = params["material"] + if("activate") + if(active) + active = FALSE + else + try_make_coins() + update_icon(UPDATE_ICON_STATE) + if("ejectMat") + var/datum/material/material = materials.materials[chosen_material] + if(material.amount < MINERAL_MATERIAL_AMOUNT) + to_chat(usr, span_warning("Недостаточно [material.name] для извлечения!")) + return + var/num_sheets = tgui_input_number(usr, "Сколько кусков вы хотите извлечь?", "Извлечь [material.name]", max_value = round(material.amount / MINERAL_MATERIAL_AMOUNT), min_value = 1) + if(isnull(num_sheets)) + return + materials.retrieve_sheets(num_sheets, chosen_material) + if("ejectBag") + eject_bag(usr) + +/obj/machinery/mineral/mint/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/storage/bag/money)) + if(money_bag) + to_chat(user, span_notice("Внутри уже есть [money_bag.declent_ru(NOMINATIVE)]!")) + balloon_alert(usr, "место уже занято!") + return ATTACK_CHAIN_PROCEED + if(!user.drop_from_active_hand()) + return ATTACK_CHAIN_PROCEED + to_chat(user, span_notice("Вы помещаете [I.declent_ru(ACCUSATIVE)] в [declent_ru(ACCUSATIVE)].")) + balloon_alert(usr, "мешок помещён") + I.forceMove(src) + money_bag = I + SStgui.update_uis(src) + return ATTACK_CHAIN_PROCEED_SUCCESS + + return ..() + +/obj/machinery/mineral/mint/process() + if(!active) + return + if(length(money_bag.contents) >= money_bag.storage_slots) + active = FALSE + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] прекращает производство, чтобы избежать переполнения.")) + balloon_alert_to_viewers("мешок переполнен") + update_icon(UPDATE_ICON_STATE) + SStgui.update_uis(src) + return + + var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) + var/datum/material/material = materials.materials[chosen_material] + if(!materials.can_use_amount(COIN_COST, chosen_material)) + active = FALSE + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] прекращает производство из-за нехватки материала.")) + balloon_alert_to_viewers("материал кончился") + update_icon(UPDATE_ICON_STATE) + SStgui.update_uis(src) return + + materials.use_amount_type(COIN_COST, chosen_material) + new material.coin_type(money_bag) + total_coins++ + SStgui.update_uis(src) + +/obj/machinery/mineral/mint/proc/try_make_coins(mob/user) var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - if(href_list["choose"]) - if(materials.materials[href_list["choose"]]) - chosen = href_list["choose"] - if(href_list["chooseAmt"]) - coinsToProduce = clamp(coinsToProduce + text2num(href_list["chooseAmt"]), 0, 1000) - if(href_list["makeCoins"]) - var/temp_coins = coinsToProduce - processing = TRUE - icon_state = "coinpress1" - var/coin_mat = MINERAL_MATERIAL_AMOUNT * 0.2 - var/datum/material/M = materials.materials[chosen] - if(!M || !M.coin_type) - updateUsrDialog() - return - - while(coinsToProduce > 0 && materials.use_amount_type(coin_mat, chosen)) - create_coins(M.coin_type) - coinsToProduce-- - newCoins++ - updateUsrDialog() - sleep(5) - - icon_state = "coinpress0" - processing = FALSE - coinsToProduce = temp_coins - updateUsrDialog() - -/obj/machinery/mineral/mint/proc/create_coins(P) - var/turf/T = get_step(src,output_dir) - if(T) - var/obj/item/O = new P(src) - var/obj/item/storage/bag/money/M = locate(/obj/item/storage/bag/money, T) - if(!M) - M = new /obj/item/storage/bag/money(src) - unload_mineral(M) - O.forceMove(M) + if(!money_bag) + visible_message(span_warning("[capitalize(declent_ru(NOMINATIVE))] не может работать без денежного мешка!")) + return + if(length(money_bag.contents) == money_bag.storage_slots) + visible_message(span_warning("[capitalize(money_bag.declent_ru(NOMINATIVE))] полон!")) + return + if(!materials.can_use_amount(COIN_COST, chosen_material)) + visible_message(span_warning("Недостаточно выбранного материала для производства!")) + return + active = TRUE + +/obj/machinery/mineral/mint/proc/eject_bag(mob/user) + if(!money_bag || !(user && iscarbon(user) && user.Adjacent(src))) + return + if(active) + active = FALSE + if(user.put_in_hands(money_bag)) + to_chat(user, span_notice("Вы забираете [money_bag.declent_ru(ACCUSATIVE)] из [declent_ru(GENITIVE)].")) + else + var/turf/T = get_step(src, output_dir) + money_bag.forceMove(T) + money_bag = null + SStgui.update_uis(src) + +/obj/machinery/mineral/mint/proc/material_insert() + SStgui.update_uis(src) + +#undef COIN_COST diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm index 8a25b21b22d0..340f7630394a 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/mining/money_bag.dm @@ -2,6 +2,17 @@ /obj/item/storage/bag/money name = "money bag" + desc = "Просторный мешок из плотной ткани, украшенный крупным символом доллара. \ + Идеально подходит для хранения монет или банкнот. " + + ru_names = list( + NOMINATIVE = "денежный мешок", + GENITIVE = "денежного мешка", + DATIVE = "денежному мешку", + ACCUSATIVE = "денежный мешок", + INSTRUMENTAL = "денежным мешком", + PREPOSITIONAL = "денежном мешке", + ) icon_state = "moneybag" item_state = "moneybag" force = 10 @@ -14,6 +25,7 @@ max_combined_w_class = 40 can_hold = list(/obj/item/coin, /obj/item/stack/spacecash) + /obj/item/storage/bag/money/vault/populate_contents() new /obj/item/coin/silver(src) new /obj/item/coin/silver(src) diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 04ed72018efa..0731a4a6306f 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -237,7 +237,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ desc = "Extremely explosive if struck with mining equipment, Gibtonite is often used by miners to speed up their work by using it as a mining charge. This material is illegal to possess by unauthorized personnel under space law." icon = 'icons/obj/mining.dmi' icon_state = "Gibtonite ore" - item_state = "Gibtonite ore" + item_state = "gibtonite" w_class = WEIGHT_CLASS_BULKY throw_range = 0 var/primed = FALSE @@ -361,7 +361,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ else ..() -/obj/item/twohanded/required/gibtonite/bullet_act(var/obj/item/projectile/P) +/obj/item/twohanded/required/gibtonite/bullet_act(var/obj/projectile/P) GibtoniteReaction(P.firer) ..() diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm index 924d98857160..477249c488eb 100644 --- a/code/modules/mining/satchel_ore_boxdm.dm +++ b/code/modules/mining/satchel_ore_boxdm.dm @@ -101,9 +101,6 @@ O.forceMove(loc) CHECK_TICK -/obj/structure/ore_box/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents = FALSE) - return ..() - /obj/structure/ore_box/verb/empty_box() set name = "Empty Ore Box" set category = "Object" diff --git a/code/modules/mob/dead/dead.dm b/code/modules/mob/dead/dead.dm index baac7eb2ac80..c6c0b535e1de 100644 --- a/code/modules/mob/dead/dead.dm +++ b/code/modules/mob/dead/dead.dm @@ -22,7 +22,7 @@ * updates the Z level for dead players * If they don't have a new z, we'll keep the old one, preventing bugs from ghosting and re-entering, among others */ -/mob/dead/proc/update_z(new_z) +/mob/dead/update_z(new_z) if(registered_z == new_z) return if(registered_z) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index d2ff4cd36dee..08b7104da36f 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -21,6 +21,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) light_system = NO_LIGHT_SUPPORT invisibility = INVISIBILITY_OBSERVER pass_flags = PASSEVERYTHING + hud_type = /datum/hud/ghost var/can_reenter_corpse var/bootime = FALSE var/started_as_observer //This variable is set to 1 when you enter the game as an observer. @@ -174,20 +175,38 @@ Works together with spawning an observer, noted above. if(key) if(GLOB.non_respawnable_keys[ckey]) flags &= ~GHOST_CAN_REENTER + var/mob/dead/observer/ghost = new(src, flags) //Transfer safety to observer spawning proc. if(client) client.mouse_pointer_icon = initial(client.mouse_pointer_icon) //Возвращает курсор в изначальное положение (после меха, нинзи, спелла и т.п) + ghost.timeofdeath = src.timeofdeath //BS12 EDIT GLOB.respawnable_list -= src + if(ghost.can_reenter_corpse) GLOB.respawnable_list += ghost else GLOB.non_respawnable_keys[ckey] = 1 + ghost.key = key ghost.client?.init_verbs() SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE, ghost) return ghost +/mob/proc/ManualFollow(atom/movable/target) + if(!target) + return FALSE + + if(!isobserver(src)) // parent calls + var/mob/dead/observer/observer = ghostize() + + if(!observer) + return FALSE + + observer.ManualFollow(target) + + return TRUE + /* This is the proc mobs get to turn into a ghost. Forked from ghostize due to compatibility issues. */ @@ -199,6 +218,11 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/warningmsg = null var/obj/machinery/cryopod/P = istype(loc, /obj/machinery/cryopod) && loc + if(frozen) + to_chat(src, span_warning("Вы не можете сделать этого, пока находитесь под действием админфриза.")) + message_admins("[key_name_admin(src)] tried to ghost while admin frozen") + return + if(P) if(TOO_EARLY_TO_GHOST) warningmsg = "It's too early in the shift to enter cryo" @@ -373,7 +397,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp to_chat(src, "У вас нету тела.") return if(mind.current.stat != DEAD) - to_chat(src, "Твое тело все еще живо!") + to_chat(src, "Твое тело все ещё живо!") return if(tgui_alert(src, "Если вы включите это, ваше тело не смогут больше возродить до конца раунда.", "Вы уверены?", list("Да", "Нет")) == "Да") @@ -421,9 +445,19 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp orbit_menu.ui_interact(src) +// TODO: Remove this verb when "True-Observing" be merged. +/mob/dead/observer/verb/toggle_sight_view() + set category = "Ghost" + set name = "Toggle Sight" + set desc = "Переключает вашу возможность видеть сквозь стены." + + TOGGLEBIT(sight, SEE_TURFS | SEE_MOBS | SEE_OBJS) + // This is the ghost's follow verb with an argument -/mob/dead/observer/proc/ManualFollow(atom/movable/target) - if(!target || !isobserver(usr)) +/mob/dead/observer/ManualFollow(atom/movable/target) + . = ..() + + if(!.) return if(!get_turf(target)) @@ -456,7 +490,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp else //Circular rot_seg = 36 //360/10 bby, smooth enough aproximation of a circle - to_chat(src, "Now following [target]") + to_chat(src, span_notice("Now following [target]")) orbit(target, orbitsize, FALSE, 20, rot_seg, forceMove = TRUE) /mob/dead/observer/orbit(atom/A, radius, clockwise, rotation_speed, rotation_segments, pre_rotation, lockinorbit, forceMove) @@ -715,6 +749,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp return new_char +/mob/dead/observer/can_perform_action(atom/movable/target, action_bitflags) + return can_advanced_admin_interact() + /mob/dead/observer/is_literate() return TRUE diff --git a/code/modules/mob/dead/observer/orbit.dm b/code/modules/mob/dead/observer/orbit.dm index d3358dbd24e7..4b3b89a5250d 100644 --- a/code/modules/mob/dead/observer/orbit.dm +++ b/code/modules/mob/dead/observer/orbit.dm @@ -91,15 +91,10 @@ var/datum/mind/mind = M.mind var/list/other_antags = list() - if(GLOB.ts_spiderlist.len && M.ckey) - var/list/spider_minds = list() - for(var/mob/living/simple_animal/hostile/poison/terror_spider/S in GLOB.ts_spiderlist) - if(S.key) - spider_minds += S.mind - other_antags += list( - "Terror Spiders ([spider_minds.len])" = (mind.current in GLOB.ts_spiderlist), - ) - + for(var/team_type in GLOB.antagonist_teams) + var/datum/team/team = GLOB.antagonist_teams[team_type] + if(!team.need_antag_hud) + other_antags += list("[team.name] — ([team.alife_members_count()])" = (mind in team.members)) if(user.antagHUD) // If a mind is many antags at once, we'll display all of them, each // under their own antag sub-section. @@ -114,27 +109,39 @@ antag_serialized["antag"] = A.name antagonists += list(antag_serialized) + for(var/team_type in GLOB.antagonist_teams) + var/datum/team/team = GLOB.antagonist_teams[team_type] + if(team.need_antag_hud) + other_antags += list("[team.name] — ([team.alife_members_count()])" = (mind in team.members)) // Not-very-datumized antags follow // Associative list of antag name => whether this mind is this antag if(SSticker && SSticker.mode) other_antags += list( - "Abductees — ([length(SSticker.mode.abductees)])" = (mind in SSticker.mode.abductees), - "Abductors — ([length(SSticker.mode.abductors)])" = (mind in SSticker.mode.abductors), - "Demons — ([length(SSticker.mode.demons)])" = (mind in SSticker.mode.demons), - "Devils — ([length(SSticker.mode.devils)])" = (mind in SSticker.mode.devils), - "Event Roles — ([length(SSticker.mode.eventmiscs)])" = (mind in SSticker.mode.eventmiscs), - "Nar’Sie Cultists — ([length(SSticker.mode.cult)])" = (mind in SSticker.mode.cult), - "Nuclear Operatives — ([length(SSticker.mode.syndicates)])" = (mind in SSticker.mode.syndicates), - "Ratvar Cultists — ([length(SSticker.mode.clockwork_cult)])" = (mind in SSticker.mode.clockwork_cult), - "Revolutionary Comrades — ([length(SSticker.mode.revolutionaries)])" = (mind in SSticker.mode.revolutionaries), - "Revolutionary Heads — ([length(SSticker.mode.head_revolutionaries)])" = (mind in SSticker.mode.head_revolutionaries), - "Shadowling Thralls — ([length(SSticker.mode.shadowling_thralls)])" = (mind in SSticker.mode.shadowling_thralls), - "Shadowlings — ([length(SSticker.mode.shadows)])" = (mind in SSticker.mode.shadows), - "Sintouched — ([length(SSticker.mode.sintouched)])" = (mind in SSticker.mode.sintouched), - "Wizards — ([length(SSticker.mode.wizards)])" = (mind in SSticker.mode.wizards), - "Wizard’s Apprentices — ([length(SSticker.mode.apprentices)])" = (mind in SSticker.mode.apprentices), - "Xenomorphs — ([length(SSticker.mode.xenos)])" = (mind in SSticker.mode.xenos), - "Blobs — ([length(SSticker.mode.get_blobs_minds())])" = (mind in SSticker.mode.get_blobs_minds()) + "Жертвы абдукторов — ([length(SSticker.mode.abductees)])" = (mind in SSticker.mode.abductees), + "Абдукторы — ([length(SSticker.mode.abductors)])" = (mind in SSticker.mode.abductors), + "Демоны — ([length(SSticker.mode.demons)])" = (mind in SSticker.mode.demons), + "Ивент роли — ([length(SSticker.mode.eventmiscs)])" = (mind in SSticker.mode.eventmiscs), + "Культисты [SSticker.cultdat.entity_name] — ([length(SSticker.mode.cult)])" = (mind in SSticker.mode.cult), + "Ядерные оперативники — ([length(SSticker.mode.syndicates)])" = (mind in SSticker.mode.syndicates), + "Культисты Ратвара — ([length(SSticker.mode.clockwork_cult)])" = (mind in SSticker.mode.clockwork_cult), + "Революционеры — ([length(SSticker.mode.revolutionaries)])" = (mind in SSticker.mode.revolutionaries), + "Главы революции — ([length(SSticker.mode.head_revolutionaries)])" = (mind in SSticker.mode.head_revolutionaries), + "Рабы теней — ([length(SSticker.mode.shadowling_thralls)])" = (mind in SSticker.mode.shadowling_thralls), + "Тени — ([length(SSticker.mode.shadows)])" = (mind in SSticker.mode.shadows), + "Маги — ([length(SSticker.mode.wizards)])" = (mind in SSticker.mode.wizards), + "Ученики магов — ([length(SSticker.mode.apprentices)])" = (mind in SSticker.mode.apprentices), + "Торговцы — ([length(SSticker.mode.traders)])" = (mind in SSticker.mode.traders), + "Морфы — ([length(SSticker.mode.morphs)])" = (mind in SSticker.mode.morphs), + "Свармеры — ([length(SSticker.mode.swarmers)])" = (mind in SSticker.mode.swarmers), + "Голопаразиты — ([length(SSticker.mode.guardians)])" = (mind in SSticker.mode.guardians), + "Ревенанты — ([length(SSticker.mode.revenants)])" = (mind in SSticker.mode.revenants), + "Воксы рейдеры — ([length(SSticker.mode.raiders)])" = (mind in SSticker.mode.raiders), + "Супергерои — ([length(SSticker.mode.superheroes)])" = (mind in SSticker.mode.superheroes), + "Суперзлодеи — ([length(SSticker.mode.supervillains)])" = (mind in SSticker.mode.supervillains), + "Отряд Смерти — ([length(SSticker.mode.deathsquad)])" = (mind in SSticker.mode.deathsquad), + "Хонксквад — ([length(SSticker.mode.honksquad)])" = (mind in SSticker.mode.honksquad), + "Ударный Отряд Синдиката — ([length(SSticker.mode.sst)])" = (mind in SSticker.mode.sst), + "Диверсионный Отряд Синдиката — ([length(SSticker.mode.sit)])" = (mind in SSticker.mode.sit), ) for(var/antag_name in other_antags) diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index 9afe767d2e9b..82effa07cd82 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -93,13 +93,13 @@ for(var/datum/multilingual_say_piece/SP in message_pieces) if(SP.speaking == GLOB.all_languages[LANGUAGE_NOISE]) // Message contains only emoutes, no need to add verb return message - return "[verb], \"[message]\"" + return "[verb]: \"[message]\"" -/mob/proc/hear_say(list/message_pieces, verb = "says", italics = FALSE, mob/speaker = null, sound/speech_sound, sound_vol, sound_frequency, use_voice = TRUE) +/mob/proc/hear_say(list/message_pieces, verb = "говор%(ит,ят)%", italics = FALSE, mob/speaker = null, sound/speech_sound, sound_vol, sound_frequency, use_voice = TRUE, is_whisper = FALSE) if(!client) return 0 - var/is_whisper = verb == "whispers" + if(isobserver(src) && client.prefs.toggles & PREFTOGGLE_CHAT_GHOSTEARS) if(speaker && !speaker.client && !(speaker in view(src))) @@ -159,11 +159,11 @@ // INNATE is the flag for audible-emote-language, so we don't want to show an "x talks but you cannot hear them" message if it's set // if(!language || !(language.flags & INNATE)) if(speaker == src) - to_chat(src, "You cannot hear yourself speak!") + to_chat(src, span_warning("Вы не слышите собственной речи!")) else - to_chat(src, "[speaker.name] talks but you cannot hear [speaker.p_them()].") + to_chat(src, "[span_name(speaker.name)] что-то говор[pluralize_ru(speaker.gender, "ит", "ят")], но вы ничего не слышите!") else - to_chat(src, "[speaker_name][speaker.GetAltName()] [track][verb_message(message_pieces, message, verb)]") + to_chat(src, span_gamesay("[span_name(speaker_name)][speaker.GetAltName()] [track][verb_message(message_pieces, message, genderize_decode(speaker, verb))]")) // Create map text message if(client?.prefs.toggles2 & PREFTOGGLE_2_RUNECHAT) // can_hear is checked up there on L99 @@ -206,7 +206,7 @@ else return "[speaker_name]" -/mob/proc/hear_radio(list/message_pieces, verb = "says", part_a, part_b, mob/speaker = null, hard_to_hear = 0, vname = "", atom/follow_target) +/mob/proc/hear_radio(list/message_pieces, verb = "говор%(ит,ят)%", part_a, part_b, mob/speaker = null, hard_to_hear = 0, vname = "", atom/follow_target) if(!client) return @@ -220,7 +220,7 @@ if(message_clean == "") return - var/message = verb_message(message_pieces, message_clean, verb) + var/message = verb_message(message_pieces, message_clean, genderize_decode(speaker, genderize_decode(speaker, verb))) var/message_tts = combine_message_tts(message_pieces, speaker, always_stars = hard_to_hear) var/track = null @@ -229,11 +229,11 @@ var/speaker_name = handle_speaker_name(speaker, vname, hard_to_hear) speaker_name = colorize_name(speaker, speaker_name) - track = handle_track(message, verb, speaker, speaker_name, follow_target, hard_to_hear) + track = handle_track(message, genderize_decode(speaker, verb), speaker, speaker_name, follow_target, hard_to_hear) if(!can_hear()) if(prob(20)) - to_chat(src, "You feel your headset vibrate but can hear nothing from it!") + to_chat(src, span_warning("Ваша гарнитура вибрирует, но вы не слышите ни звука!")) else to_chat(src, "[part_a][track || speaker_name][part_b][message]
") if(client?.prefs.toggles2 & PREFTOGGLE_2_RUNECHAT) @@ -245,7 +245,7 @@ INVOKE_ASYNC(GLOBAL_PROC, /proc/tts_cast, src, src, message_tts, speaker.tts_seed, FALSE, effect, null, null, 'sound/effects/radio_chatter.ogg') /mob/proc/handle_speaker_name(mob/speaker = null, vname, hard_to_hear) - var/speaker_name = "unknown" + var/speaker_name = "неизвестный" if(speaker) speaker_name = speaker.name @@ -253,11 +253,11 @@ speaker_name = vname if(hard_to_hear) - speaker_name = "unknown" + speaker_name = "неизвестный" return speaker_name -/mob/proc/handle_track(message, verb = "says", mob/speaker = null, speaker_name, atom/follow_target, hard_to_hear) +/mob/proc/handle_track(message, verb = "говор%(ит,ят)%", mob/speaker = null, speaker_name, atom/follow_target, hard_to_hear) return /mob/proc/hear_sleep(message) @@ -273,15 +273,15 @@ heardword = copytext(heardword,2) if(copytext(heardword,-1) in punctuation) heardword = copytext(heardword,1,length(heardword)) - heard = "...You hear something about... '[heardword]'..." + heard = span_gamesay("...Вы слышите что-то про... \"[heardword]\"...") else - heard = "...You almost hear something......" + heard = span_gamesay("...Вы почти что смогли расслышать что-то...") else - heard = "...You almost hear someone talking..." + heard = span_gamesay("...Вы едва слышите, как кто-то говорит...") to_chat(src, heard) -/mob/proc/hear_holopad_talk(list/message_pieces, verb = "says", mob/speaker = null, obj/effect/overlay/holo_pad_hologram/H) +/mob/proc/hear_holopad_talk(list/message_pieces, verb = "говор%(ит,ят)%", mob/speaker = null, obj/effect/overlay/holo_pad_hologram/H) if(stat == UNCONSCIOUS) hear_sleep(multilingual_to_message(message_pieces)) return @@ -295,7 +295,7 @@ if(message_clean == "") return - var/message = verb_message(message_pieces, message_clean, verb) + var/message = verb_message(message_pieces, message_clean, genderize_decode(speaker, verb)) var/message_tts = combine_message_tts(message_pieces, speaker) var/name = speaker.name @@ -310,7 +310,7 @@ effect = SOUND_EFFECT_RADIO_ROBOT INVOKE_ASYNC(GLOBAL_PROC, /proc/tts_cast, H, src, message_tts, speaker.tts_seed, TRUE, effect) - var/rendered = "[name] [message]" + var/rendered = span_gamesay("[span_name(name)] + [message]") to_chat(src, rendered) @@ -322,4 +322,3 @@ continue if(piece.speaking?.runechat_span) return piece.speaking - diff --git a/code/modules/mob/holder_pet_carrier.dm b/code/modules/mob/holder_pet_carrier.dm index 951a65a199c3..3df13d031035 100644 --- a/code/modules/mob/holder_pet_carrier.dm +++ b/code/modules/mob/holder_pet_carrier.dm @@ -64,9 +64,10 @@ M.ex_act(intensity) -/obj/item/pet_carrier/AltClick(mob/user) - if(ishuman(user) && Adjacent(user) && !user.incapacitated() && !HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) - try_free_content(null, user) +/obj/item/pet_carrier/click_alt(mob/user) + if(try_free_content(null, user)) + return CLICK_ACTION_SUCCESS + return CLICK_ACTION_BLOCKING /obj/item/pet_carrier/proc/put_in_carrier(mob/living/target, mob/living/user) @@ -98,6 +99,7 @@ to_chat(user, span_warning("Ваша переноска закрыта! Содержимое невозможно выгрузить!")) return FALSE free_content(new_location) + return TRUE /obj/item/pet_carrier/proc/free_content(atom/new_location) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 7ec37837804d..f7387e3dbd13 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -229,6 +229,12 @@ return r_hand return null +/** + * Returns `TRUE` if mob's hands free + */ +/mob/proc/is_hands_free() + return !l_hand && !r_hand + /** * Returns `TRUE` if item is in mob's active hand @@ -634,6 +640,16 @@ /mob/proc/is_general_slot(slot) return (slot & (ITEM_SLOT_HANDS|ITEM_SLOT_POCKETS|ITEM_SLOT_BACKPACK|ITEM_SLOT_HANDCUFFED|ITEM_SLOT_LEGCUFFED|ITEM_SLOT_ACCESSORY)) +//GetAllContents that is reasonable and not stupid +/mob/living/proc/get_all_gear(recursive = TRUE) + var/list/processing_list = get_equipped_items(TRUE, TRUE) + listclearnulls(processing_list) // handles empty hands + var/i = 0 + while(i < length(processing_list)) + var/obj/item/storage/A = processing_list[++i] + if(istype(A) && recursive) + processing_list += A.return_inv() + return processing_list /// Collects all items in possibly equipped slots. /mob/proc/get_equipped_items(include_pockets = FALSE, include_hands = FALSE) @@ -746,3 +762,11 @@ return r_hand return null +/** + * Returns a list of all dropped held items. + * If none were dropped, returns an empty list. + */ +/mob/proc/drop_all_held_items() + . = list() + for(var/obj/item/I in (get_item_by_slot(ITEM_SLOT_HAND_LEFT) || get_item_by_slot(ITEM_SLOT_HAND_RIGHT))) + . |= drop_item_ground(I) diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 0aa9fca0317b..35cdf4bbf41a 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -22,13 +22,13 @@ /// Short description for 'Check Languages'. var/desc = "A language." /// 'says', 'hisses', 'farts'. - var/speech_verb = "says" + var/list/speech_verbs = list("говор%(ит,ят)%") /// Used when sentence ends in a '?'. - var/ask_verb = "asks" + var/list/ask_verbs = list("спрашива%(ет,ют)%") /// Used when sentence ends in a '!'. - var/list/exclaim_verbs = list("exclaims") - /// Optional. When not specified speech_verb + quietly/softly is used instead. - var/whisper_verb + var/list/exclaim_verbs = list("восклица%(ет,ют)%", "выкрикива%(ет,ют)%") + /// Optional. When not specified speech_verbs + quietly/softly is used instead. + var/list/whisper_verbs /// CSS style to use for strings in this language. var/colour = "body" /// Additional spans this language adds to a runechat message (should be defined in skin.dmf -> window "mapwindow" -> elem "map"). @@ -153,13 +153,13 @@ if("!") return pick(exclaim_verbs) if("?") - return ask_verb - return speech_verb + return pick(ask_verbs) + return pick(speech_verbs) // Noise "language", for audible emotes. /datum/language/noise - name = "Noise" - desc = "Noises" + name = "Шум" + desc = "Просто шум." flags = RESTRICTED|NONGLOBAL|INNATE|NO_TALK_MSG|NO_STUTTER|NOBABEL @@ -168,11 +168,11 @@ return (copytext(message, length(message)) == "!") ? 4 : 2 /datum/language/unathi - name = "Sinta'unathi" - desc = "The common language of Moghes, composed of sibilant hisses and rattles. Spoken natively by Unathi." - speech_verb = "hisses" - ask_verb = "hisses" - exclaim_verbs = list("roars") + name = "Синта'Унати" + desc = "Общий язык Могеса, состоящий из шипящих звуков и дребезжания. Является родным языком Унатхов." + speech_verbs = list("шип%(ит,ят)%", "гортанно урч%(ит,ят)%") + ask_verbs = list("вопросительно шип%(ит,ят)%", "урч%(ит,ят)%") + exclaim_verbs = list("рыч%(ит,ят)%", "рев%(ёт,ут)%") colour = "soghun" runechat_span = "soghun" key = "o" @@ -190,11 +190,11 @@ return capitalize(new_name) /datum/language/tajaran - name = "Siik'tajr" - desc = "The traditionally employed tongue of Ahdomai, composed of expressive yowls and chirps. Native to the Tajaran." - speech_verb = "mrowls" - ask_verb = "mrowls" - exclaim_verbs = list("yowls") + name = "Сик'таир" + desc = "Традиционный язык Адомая, состоящий из выразительных мяукающих звуков и щебета. Родной язык для Таяран." + speech_verbs = list("мурч%(ит,ят)%", "мурлыч%(ет,ут)%") + ask_verbs = list("вопросительно мурч%(ит,ят)%", "вопросительно мурлыч%(ет,ут)%") + exclaim_verbs = list("во%(ет,ют)%") colour = "tajaran" runechat_span = "tajaran" key = "j" @@ -231,11 +231,11 @@ return full_name /datum/language/vulpkanin - name = "Canilunzt" - desc = "The guttural language spoken and utilized by the inhabitants of Vazzend system, composed of growls, barks, yaps, and heavy utilization of ears and tail movements.Vulpkanin speak this language with ease." - speech_verb = "rawrs" - ask_verb = "rurs" - exclaim_verbs = list("barks") + name = "Канилунц" + desc = "Гортанный язык, на котором говорят обитатели системы Ваззенд. Он состоит из рычания, лая и тявканья, также активно использует движения ушей и хвоста. Вульпканины говорят на нём с лёгкостью." + speech_verbs = list("тявка%(ет,ют)%", "гавка%(ет,ют)%") + ask_verbs = list("вопросительно тявка%(ет,ют)%", "вопросительно гавка%(ет,ют)%") + exclaim_verbs = list("рыч%(ит,ят)%", "ла%(ет, ют)%") colour = "vulpkanin" runechat_span = "vulpkanin" key = "7" @@ -246,23 +246,81 @@ "bin","ket","jarl","vulf","einech","cresthz","azunein","ghzth") /datum/language/skrell - name = "Skrellian" - desc = "A melodic and complex language spoken by the Skrell of Qerrbalak. Some of the notes are inaudible to humans." - speech_verb = "warbles" - ask_verb = "warbles" - exclaim_verbs = list("warbles") + name = "Скреллианский" + desc = "Мелодичный и сложный язык, на котором говорят Скреллы. Некоторые из его звуков находятся за пределами слышимости человека." + speech_verbs = list("мыч%(ит,ят)%", "напева%(ет,ют)%", "гуд%(ит,ят)%") + ask_verbs = list("вопросительно мыч%(ит,ят)%", "вопросительно гуд%(ит,ят)%") + exclaim_verbs = list("трещ%(ит,ат)%") colour = "skrell" runechat_span = "skrell" key = "k" flags = RESTRICTED syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix","*","!") + +#define SKRELL_ADDITIONAL_SYLLABLES 2 // Maximum of additional syllables for first and second names + +/datum/language/skrell/get_random_name() // Name generator authors: @saichi23 && @cadavrik + // Now I love making list in list in list in list in list + // Two sublists were made by authors so that the names would turn out most consonant for reading (in a way that's possible for skrells) + var/list/ru_name_syllables = list( + list( // list 1 + list("заоо", "зао", "зикс", "зо", "йуо", "кью", "кьюм", "кси", "ксу", "квум", "кву", // sublist1 + "кви", "квей", "квиш", "куу", "кюан", "киэн", "ку", "кил", "лиа", "люик", "луи", + "рио", "сейу", "тсой", "уль", "улур", "урр", "ур", "цу", "эль", "эо", "эу"), + + list( + "аг", "вум", "вул", "вол", "гли", "зи", "заоо", "зао", "зикс", "зуо", "зук", "зуво", // sublist2 + "икс", "ил", "ис", "йук", "кву", "квум", "куум", "куо", "куа", "куак", "кул", "квол", + "кью", "кьюа", "кэ", "кин", "кии", "кс", "ки", "киу", "кос", "лоа", "лак", "лум", "лик", + "лии", "ллак", "мзикс", "мвол", "ори", "ору", "орр", "ррум", "ру", "руум", "руа", "рл", + "сэк", "су", "сиа", "тейе", "тейку", "тсу", "туа", "туи", "ту", "тал", "уат", "уок", "урр", + "уоо", "уо", "уик", "уии", "уэк", "эйкс", "эль", "эрр", "эй", "эйс", "о", "у", "а", "з", "э", "м" ,"к", "с", "р" + ) + ), + + list( // list 2 + list("заоо", "зао", "зо", "йуо", "лиа", "луи", "рио", "сейу", "эо"), // sublist1 + + list( + "вум", "вул", "вол", "гли", "зи", "заоо", "зао", "зикс", "зуо", "зук", "зуво", // sublist2 + "йук", "кву", "квум", "куум", "куо", "куа", "куак", "кул", "квол", "кью", "кьюа", + "кэ", "кин", "кии", "кс", "ки", "киу", "кос", "лоа", "лак", "лум", "лик", "лии", "ллак", + "мзикс", "мвол", "ррум", "ру", "руум", "руа", "рл", "сэк", "су", "сиа", "тейе", "тейку", + "тсу", "туа", "туи", "ту", "тал", "з", "м", "к", "с", "р" + ) + ) + ) + + var/full_name = "" + + for(var/i in 1 to 2) // First and second names, making from 2-3 syllables each. + var/apostrophe = "'" + var/new_name = "" + var/using_list = rand(1, LAZYLEN(ru_name_syllables)) // We use only one list for the first name and one list for the second name, without mixing syllables from different lists. + + new_name += pick(ru_name_syllables[using_list][1]) // The first syllable is only from the first sublist. + + for(var/add_syllables in 1 to rand(1, SKRELL_ADDITIONAL_SYLLABLES)) // Additional 1-2 syllables, taken from sublist2. + if(apostrophe && prob(50)) + new_name += apostrophe + apostrophe = null // Adding "'" with chance, but only once for first and second names + + new_name += pick(ru_name_syllables[using_list][2]) + + full_name += " [capitalize(new_name)]" + + return "[trim(full_name)]" + +#undef SKRELL_ADDITIONAL_SYLLABLES + + /datum/language/vox - name = "Vox-pidgin" - desc = "The common tongue of the various Vox ships making up the Shoal. It sounds like chaotic shrieking to everyone else." - speech_verb = "shrieks" - ask_verb = "creels" - exclaim_verbs = list("loudly skrees") + name = "Вокс-пиджин" + desc = "Общий язык различных кораблей Воксов, составляющих Ковчег. Для всех остальных он звучит как помесь чириканья, крика и визга." + speech_verbs = list("чирика%(ет,ют)%", "визж%(ит,ат)%", "крич%(ит,ат)%") + ask_verbs = list("вопросительно чирика%(ет,ют)%", "вопросительно визж%(ит,ат)%", "вопросительно крич%(ит,ат)%") + exclaim_verbs = list("громко чирика%(ет,ют)%", "громко визж%(ит,ат)%", "громко крич%(ит,ат)%") colour = "vox" runechat_span = "vox" key = "v" @@ -274,18 +332,18 @@ var/sounds = rand(2, 8) var/i = 0 var/newname = "" - var/static/list/vox_name_syllables = list("ti","hi","ki","ya","ta","ha","ka","ya","chi","cha","kah") + var/static/list/vox_name_syllables = list("ти","хи","ки","йа","та","ха","ка","йа","чи","ча","ках") while(i <= sounds) i++ newname += pick(vox_name_syllables) return capitalize(newname) /datum/language/diona - name = "Rootspeak" - desc = "A creaking, subvocal language spoken instinctively by the Dionaea. Due to the unique makeup of the average Diona, a phrase of Rootspeak can be a combination of anywhere from one to twelve individual voices and notes." - speech_verb = "creaks and rustles" - ask_verb = "creaks" - exclaim_verbs = list("rustles") + name = "Песнь корней" + desc = "Скрипучий, подголосочный язык, на котором инстинктивно говорят Дионы. Из-за уникального строения обычной Дионы, фраза на таком языке может представлять собой комбинацию от одного до двенадцати отдельных голосов и звуков." + speech_verbs = list("трещ%(ит,ат)%", "скрип%(ит,ят)%") + ask_verbs = list("вопросительно трещ%(ит,ат)%", "вопросительно скрип%(ит,ят)%") + exclaim_verbs = list("громко шурш%(ит,ат)%", "громко скрип%(ит,ят)%") colour = "diona" runechat_span = "diona" key = "q" @@ -298,11 +356,11 @@ return new_name /datum/language/trinary - name = "Trinary" - desc = "A modification of binary to allow fuzzy logic. 0 is no, 1 is maybe, 2 is yes. Credited with giving Machine People the ability to think creatively." - speech_verb = "states" - ask_verb = "queries" - exclaim_verbs = list("exclaims") + name = "Троичный" + desc = "Модификация двоичного кода, позволяющая использовать нечёткую логику. 0 — нет, 1 — возможно, 2 — да. Считается, что именно эта система дала способность позитронным системам мыслить творчески." + speech_verbs = list("сообща%(ет,ют)%", "констатиру%(ет,ют)%") + ask_verbs = list("запрашива%(ет,ют)%", "дела%(ет,ют)% запрос") + exclaim_verbs = list("восклица%(ет,ют)%") colour = "trinary" runechat_span = "trinary" key = "5" @@ -312,17 +370,17 @@ /datum/language/trinary/get_random_name() var/new_name if(prob(70)) - new_name = "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]" + new_name = "[pick(list("СИМ","АИС","ТЕК","АРМА","АОС"))]-[rand(100, 999)]" else new_name = pick(GLOB.ai_names) return new_name /datum/language/kidan - name = "Chittin" - desc = "The noise made by rubbing its antennae together is actually a complex form of communication for Kidan." - speech_verb = "rubs their antennae together" - ask_verb = "rubs their antennae together" - exclaim_verbs = list("rubs their antennae together") + name = "Хитин" + desc = "Звук, который издают Киданы, потирая усики друг о друга, на самом деле является сложной формой общения." + speech_verbs = list("потира%(ет,ют)% свои усики") + ask_verbs = list("потира%(ет,ют)% свои усики") + exclaim_verbs = list("потира%(ет,ют)% свои усики") colour = "kidan" runechat_span = "kidan" key = "4" @@ -330,20 +388,20 @@ syllables = list("click","clack") /datum/language/kidan/get_random_name() - var/new_name = "[pick(list("Vrax", "Krek", "Vriz", "Zrik", "Zarak", "Click", "Zerk", "Drax", "Zven", "Drexx"))]" + var/new_name = "[pick(list("Вракс","Крек","Вриз","Зрик","Зарак","Клик","Зерк","Дракс","Звен","Дрэкс"))]" new_name += ", " - new_name += "[pick(list("Noble", "Worker", "Scout", "Builder", "Farmer", "Gatherer", "Soldier", "Guard", "Prospector"))]" - new_name += " of Clan " - new_name += "[pick(list("Tristan", "Zarlan", "Clack", "Kkraz", "Zramn", "Orlan", "Zrax"))]" //I ran out of ideas after the first two tbh -_- + new_name += "[pick(list("Дворянин","Рабочий","Разведчик","Строитель","Фермер","Собиратель","Солдат","Охранник","Старатель"))]" + new_name += " Клана " + new_name += "[pick(list("Тристан","Зарлан","Клак","Краз","Крамн","Орлан","Зракс"))]" return new_name /datum/language/slime - name = "Bubblish" - desc = "The language of slimes. It's a mixture of bubbling noises and pops. Very difficult to speak without mechanical aid for humans." - speech_verb = "bubbles and pops" - ask_verb = "bubbles and pops" - exclaim_verbs = list("bubbles and pops") + name = "Пузырчатый" + desc = "Язык Плазмолюдов. Это смесь булькающих и хлюпающих звуков. Другим гуманоидам очень сложно говорить на нём без механической помощи." + speech_verbs = list("булька%(ет,ют)%", "хлюпа%(ет,ют)%") + ask_verbs = list("булька%(ет,ют)%", "хлюпа%(ет,ют)%") + exclaim_verbs = list("булька%(ет,ют)%", "хлюпа%(ет,ют)%") colour = "slime" runechat_span = "slime" key = "f" @@ -351,11 +409,11 @@ syllables = list("blob","plop","pop","bop","boop") /datum/language/grey - name = "Psionic Communication" - desc = "The grey's psionic communication, less potent version of their distant cousin's telepathy. Talk to other greys within a limited radius." - speech_verb = "expresses" - ask_verb = "inquires" - exclaim_verbs = list("imparts") + name = "Псисвязь" + desc = "Псионическое общение Серых, менее мощная версия телепатии их дальних родственников. Позволяет общаться с другими Серыми в ограниченном радиусе." + speech_verbs = list("сообща%(ет,ют)%") + ask_verbs = list("интересу%(ет,ют)%ся") + exclaim_verbs = list("со всей важностью сообща%(ет,ют)%") colour = "abductor" runechat_span = "abductor" key = "^" @@ -371,27 +429,27 @@ var/obj/item/organ/external/rhand = S.get_organ(BODY_ZONE_PRECISE_R_HAND) var/obj/item/organ/external/lhand = S.get_organ(BODY_ZONE_PRECISE_L_HAND) if((!rhand || !rhand.is_usable()) && (!lhand || !lhand.is_usable())) - to_chat(speaker,"You can't communicate without the ability to use your hands!") + to_chat(speaker, span_warning("Вы не можете использовать руки для телепатии!")) return FALSE if(speaker.incapacitated()) - to_chat(speaker,"You can't communicate while unable to move your hands to your head!") + to_chat(speaker, span_warning("Вы не можете поднести руки к голове для телепатии!")) return FALSE - speaker.visible_message("[speaker] touches [speaker.p_their()] fingers to [speaker.p_their()] temple.") //If placed in grey/broadcast, it will happen regardless of the success of the action. + speaker.visible_message( span_notice("[speaker] прикладыва[pluralize_ru(speaker.gender, "ет", "ют")] пальцы к виску.")) //If placed in grey/broadcast, it will happen regardless of the success of the action. return TRUE /datum/language/grey/check_special_condition(mob/living/carbon/human/other, mob/living/carbon/human/speaker) - if(atoms_share_level(other, speaker)) + if(are_zs_connected(other, speaker)) return TRUE return FALSE /datum/language/drask - name = "Orluum" - desc = "The droning, vibrous language of the Drask. It sounds somewhat like whalesong." - speech_verb = "drones" - ask_verb = "hums" - exclaim_verbs = list("rumbles") + name = "Орлуум" + desc = "Монотонный, гудящий, вибрирующий язык Драсков. Звучит примерно как песня китов." + speech_verbs = list("гуд%(ит,ят)%", "напева%(ет,ют)%", "мыч%(ит,ат)%", "грохоч%(ет,ут)%") + ask_verbs = list("вопросительно гуд%(ит,ят)%", "вопросительно мыч%(ит,ат)%", "вопросительно грохоч%(ет,ут)%") + exclaim_verbs = list("громко гуд%(ит,ят)%", "громко грохоч%(ет,ут)%", "рев%(ёт,ут)%") colour = "drask" runechat_span = "drask" key = "%" @@ -399,17 +457,17 @@ syllables = list("hoorb","vrrm","ooorm","urrrum","ooum","ee","ffm","hhh","mn","ongg") /datum/language/drask/get_random_name() - var/new_name = "[pick(list("Hoorm","Viisk","Saar","Mnoo","Oumn","Fmong","Gnii","Vrrm","Oorm","Dromnn","Ssooumn","Ovv", "Hoorb","Vaar","Gaar","Goom","Ruum","Rumum"))]" - new_name += "-[pick(list("Hoorm","Viisk","Saar","Mnoo","Oumn","Fmong","Gnii","Vrrm","Oorm","Dromnn","Ssooumn","Ovv", "Hoorb","Vaar","Gaar","Goom","Ruum","Rumum"))]" - new_name += "-[pick(list("Hoorm","Viisk","Saar","Mnoo","Oumn","Fmong","Gnii","Vrrm","Oorm","Dromnn","Ssooumn","Ovv", "Hoorb","Vaar","Gaar","Goom","Ruum","Rumum"))]" + var/new_name = "[pick(list("Хоорм","Вииск","Саар","Мнуу","Оумн","Фмонг","Гнии","Вррм","Оорм","Дромнн","Ссуумн","Овв","Хоорб","Ваар","Гаар","Гуум","Руум","Румум"))]" + new_name += "-[pick(list("Хоорм","Вииск","Саар","Мнуу","Оумн","Фмонг","Гнии","Вррм","Оорм","Дромнн","Ссуумн","Овв","Хоорб","Ваар","Гаар","Гуум","Руум","Румум"))]" + new_name += "-[pick(list("Хоорм","Вииск","Саар","Мнуу","Оумн","Фмонг","Гнии","Вррм","Оорм","Дромнн","Ссуумн","Овв","Хоорб","Ваар","Гаар","Гуум","Руум","Румум"))]" return new_name /datum/language/moth - name = "Tkachi" - desc = "The language of the Nianae mothpeople borders on complete unintelligibility." - speech_verb = "buzzes" - ask_verb = "flaps" - exclaim_verbs = list("chatters") + name = "Ткачий язык" + desc = "Язык мотыльковых гуманоидов Луам, в котором используется прерывистая жестикуляция усиками, крыльями или челюстями, а также жужжание или чириканье." + speech_verbs = list("жужж%(ит,ат)%") + ask_verbs = list("хлопа%(ет,ют)% крыльями") + exclaim_verbs = list("щебеч%(ет,ут)%") colour = "moth" runechat_span = "moth" key = "#" @@ -428,22 +486,22 @@ return new_name /datum/language/common - name = "Galactic Common" - desc = "The common galactic tongue." - speech_verb = "says" - exclaim_verbs = list("exclaims", "shouts", "yells") - whisper_verb = "whispers" + name = "Общегалактический" + desc = "Универсальный язык, разработанный людьми для упрощения общения с другими гуманоидными расами." + speech_verbs = list("говор%(ит,ят)%") + exclaim_verbs = list("восклица%(ет,ют)%", "выкрикива%(ет,ют)%") + whisper_verbs = list("шепч%(ет,ут)%") key = "9" flags = RESTRICTED syllables = list("blah","blah","blah","bleh","meh","neh","nah","wah") english_names = TRUE /datum/language/human - name = "Sol Common" - desc = "A bastardized hybrid of informal English and elements of Mandarin Chinese; the common language of the Sol system." - speech_verb = "says" - exclaim_verbs = list("exclaims", "shouts", "yells") - whisper_verb = "whispers" + name = "Общесолнечный" + desc = "Искуственный язык, созданный на основе английского, китайского и эсперанто. Является основным для Людей." + speech_verbs = list("говор%(ит,ят)%") + exclaim_verbs = list("восклица%(ет,ют)%", "выкрикива%(ет,ют)%") + whisper_verbs = list("шепч%(ет,ут)%") colour = "solcom" runechat_span = "solcom" key = "1" @@ -453,9 +511,9 @@ // Galactic common languages (systemwide accepted standards). /datum/language/trader - name = "Tradeband" - desc = "Maintained by the various trading cartels in major systems, this elegant, structured language is used for bartering and bargaining." - speech_verb = "enunciates" + name = "Торговый" + desc = "Этот элегантный и структурированный язык используется различными торговыми картелями в крупных системах для торговли и заключения сделок." + speech_verbs = list("утвержда%(ет,ют)%") colour = "say_quote" key = "2" space_chance = 100 @@ -469,32 +527,32 @@ "in", "culpa", "qui", "officia", "deserunt", "mollit", "anim", "id", "est", "laborum") /datum/language/gutter - name = "Gutter" - desc = "Much like Standard, this crude pidgin tongue descended from numerous languages and serves as Tradeband for criminal elements." - speech_verb = "growls" - ask_verb = "gnarls" - exclaim_verbs = list("snarls") + name = "Гангстерский" + desc = "Грубая, исковерканная версия Общегалактического языка, используемая криминальными элементами по всей Галактике." + speech_verbs = list("рявка%(ет,ют)%") + ask_verbs = list("нагло спрашива%(ет,ют)%") + exclaim_verbs = list("агрессивно говор%(ит,ят)%") colour = "gutter" key = "3" syllables = list ("gra","ba","ba","breh","bra","rah","dur","ra","ro","gro","go","ber","bar","geh","heh","gra") /datum/language/clown - name = "Clownish" - desc = "The language of clown planet. Mother tongue of clowns throughout the Galaxy." - speech_verb = "honks" - ask_verb = "honks" - exclaim_verbs = list("toots", "wubs", "honks") + name = "Клоунский" + desc = "Язык планеты клоунов. Родной язык клоунов по всей Галактике." + speech_verbs = list("хонка%(ет,ют)%") + ask_verbs = list("вопросительно хонка%(ет,ют)%") + exclaim_verbs = list("труб%(ит,ят)%","громко хонка%(ет,ют)%") colour = "clown" runechat_span = "clown" key = "0" syllables = list ("honk","squeak","bonk","toot","narf","zub","wee","wub","norf") /datum/language/com_srus - name = "Neo-Russkiya" - desc = "Neo-Russkiya, a bastard mix of Gutter, Sol Common, and old Russian. The official language of the USSP. It has started to see use outside of the fringe in hobby circles and protest groups. The linguistic spirit of Sol-Gov criticisms." - speech_verb = "articulates" - whisper_verb = "mutters" - exclaim_verbs = list("exaggerates") + name = "Нео-русский" + desc = "Официальный язык СССП. Является смесью Общесолнечного и старых человеческих языков славянской группы. Лингвистический символ противостояния Транс-солнечной Федерации." + speech_verbs = list("чётко выговарива%(ет,ют)%", "твёрдо произнос%(ит,ят)%") + whisper_verbs = list("бормоч%(ет,ут)%") + exclaim_verbs = list("громко произнос%(ит,ят)%", "твёрдо восклица%(ет,ют)%") colour = "com_srus" runechat_span = "com_srus" key = "?" @@ -511,11 +569,11 @@ "udi","litchki","casa","linka","toly","anatov","vich","vech","vuch","toi","ka","vod") /datum/language/wryn - name = "Wryn Hivemind" - desc = "Wryn have the strange ability to commune over a psychic hivemind." - speech_verb = "chitters" - ask_verb = "chitters" - exclaim_verbs = list("buzzes") + name = "Разум улья Вринов" + desc = "У Вринов есть способность общаться через псионическую связь улья." + speech_verbs = list("щебеч%(ет,ут)%") + ask_verbs = list("вопросительно щебеч%(ет,ут)%") + exclaim_verbs = list("громко жужж%(ит,ат)%") colour = "alien" key = "y" flags = RESTRICTED | HIVEMIND | NOBABEL @@ -531,33 +589,33 @@ return FALSE /datum/language/xenocommon - name = "Xenomorph" + name = "Ксеноморфский" colour = "alien" - desc = "The common tongue of the xenomorphs." - speech_verb = "hisses" - ask_verb = "hisses" - exclaim_verbs = list("hisses") + desc = "Основной язык Ксеноморфов." + speech_verbs = list("шип%(ит,ят)%") + ask_verbs = list("вопросительно шип%(ит,ят)%") + exclaim_verbs = list("рыч%(ит,ят)%") key = "6" flags = RESTRICTED syllables = list("sss","sSs","SSS") /datum/language/xenos - name = "Xenomorph Hivemind" - desc = "Xenomorphs have the strange ability to commune over a psychic hivemind." - speech_verb = "hisses" - ask_verb = "hisses" - exclaim_verbs = list("hisses") + name = "Разум улья Ксеноморфов" + desc = "Ксеноморфы обладают способностью общаться через псионический разум улья." + speech_verbs = list("шип%(ит,ят)%") + ask_verbs = list("вопросительно шип%(ит,ят)%") + exclaim_verbs = list("рыч%(ит,ят)%") colour = "alien" key = "a" flags = RESTRICTED | HIVEMIND | NOBABEL follow = TRUE /datum/language/terrorspider - name = "Spider Hivemind" - desc = "Terror spiders have a limited ability to commune over a psychic hivemind, similar to xenomorphs." - speech_verb = "chitters" - ask_verb = "chitters" - exclaim_verbs = list("chitters") + name = "Разум улья Пауков Ужаса" + desc = "Пауки Ужаса обладают ограниченной способностью общаться через псионический разум улья, подобно Ксеноморфам." + speech_verbs = list("щебеч%(ет,ут)%") + ask_verbs = list("вопросительно щебеч%(ет,ут)%") + exclaim_verbs = list("громко жужж%(ит,ат)%") colour = "terrorspider" key = "as" flags = RESTRICTED | HIVEMIND | NOBABEL @@ -565,9 +623,9 @@ /datum/language/ling - name = "Changeling Hivemind" - desc = "Although they are normally wary and suspicious of each other, changelings can commune over a distance." - speech_verb = "says" + name = "Коллективный разум Генокрадов" + desc = "Хотя обычно Генокрады относятся друг к другу с осторожностью и подозрением, они могут общаться на расстоянии." + speech_verbs = list("сообща%(ет,ют)%") colour = "changeling" key = "g" flags = RESTRICTED | HIVEMIND | NOBABEL @@ -582,9 +640,9 @@ ..(speaker,message) /datum/language/eventling - name = "Infiltrated Changeling Hivemind" - desc = "Although they are normally wary and suspicious of each other, changelings can commune over a distance." - speech_verb = "says" + name = "Инфильтрованный коллективный разум Генокрадов" + desc = "Хотя обычно Генокрады относятся друг к другу с осторожностью и подозрением, они могут общаться на расстоянии." + speech_verbs = list("сообща%(ет,ют)%") colour = "changeling" key = "gi" flags = RESTRICTED | HIVEMIND | NOBABEL @@ -599,9 +657,9 @@ ..(speaker,message) /datum/language/shadowling - name = "Shadowling Hivemind" - desc = "Shadowlings and their thralls are capable of communicating over a psychic hivemind." - speech_verb = "says" + name = "Коллективный разум Тенеморфов" + desc = "Тенеморфы и их рабы способны общаться через псионический коллективный разум." + speech_verbs = list("сообща%(ет,ют)%") colour = "shadowling" key = "8" flags = RESTRICTED | HIVEMIND | NOBABEL @@ -616,11 +674,11 @@ ..(speaker, message) /datum/language/abductor - name = "Abductor Mindlink" - desc = "Abductors are incapable of speech, but have a psychic link attuned to their own team." - speech_verb = "gibbers" - ask_verb = "gibbers" - exclaim_verbs = list("gibbers") + name = "Псисвязь Абдукторов" + desc = "Абдукторы не способны к речи, но обладают псионической связью для связи с себе подобными." + speech_verbs = list("бормоч%(ет,ут)%") + ask_verbs = list("бормоч%(ет,ут)%") + exclaim_verbs = list("бормоч%(ет,ут)%") colour = "abductor" key = "aa" flags = RESTRICTED | HIVEMIND | NOBABEL @@ -638,19 +696,16 @@ return FALSE /datum/language/abductor/golem - name = "Golem Mindlink" - desc = "Communicate with other alien alloy golems through a psychic link." + name = "Псисвязь Големов" + desc = "Големы могут общаться с себе подобными при помощи псионической связи." follow = TRUE /datum/language/abductor/golem/check_special_condition(mob/living/carbon/human/other, mob/living/carbon/human/speaker) return TRUE /datum/language/borer - name = "Cortical Link" - desc = "Cortical borers possess a strange link between their tiny minds." - speech_verb = "sings" - ask_verb = "sings" - exclaim_verbs = list("sings") + name = "Кортикальная связь" + desc = "Бореры обладают псионической связью между своими крошечными разумами." colour = "alien" key = "bo" flags = RESTRICTED | HIVEMIND | NOBABEL @@ -670,12 +725,12 @@ ..(speaker,message,speaker_mask) /datum/language/binary - name = "Robot Talk" - desc = "Most human stations support free-use communications protocols and routing hubs for synthetic use." + name = "Бинарный канал" + desc = "Большинство космических станций поддерживают свободные коммуникационные протоколы и маршрутизационные узлы для использования Синтетиками." colour = "say_quote" - speech_verb = "states" - ask_verb = "queries" - exclaim_verbs = list("declares") + speech_verbs = list("сообща%(ет,ют)%", "констатиру%(ет,ют)%") + ask_verbs = list("запрашива%(ет,ют)%", "дела%(ет,ют)% запрос") + exclaim_verbs = list("восклица%(ет,ют)%") key = "b" flags = RESTRICTED | HIVEMIND | NOBABEL follow = TRUE @@ -691,7 +746,7 @@ add_say_logs(speaker, message, language = "ROBOT") var/message_start = "[name], [speaker.name]" - var/message_body = "[speaker.say_quote(message)],\"[message]\"" + var/message_body = "[speaker.say_quote(message)]:\"[message]\"" for(var/mob/M in GLOB.dead_mob_list) if(!isnewplayer(M) && !isbrain(M)) @@ -714,14 +769,14 @@ for(var/mob/living/M in listening) if(issilicon(M) || M.binarycheck()) continue - M.show_message("synthesised voice beeps, \"beep beep beep\"",2) + M.show_message("синтезированный голос сообщает: \"бип бип бип\"",2) /datum/language/binary/drone - name = "Drone Talk" - desc = "A heavily encoded damage control coordination stream." - speech_verb = "transmits" - ask_verb = "transmits" - exclaim_verbs = list("transmits") + name = "Канал Дронов" + desc = "Закодированный поток для координирования работы Дронов." + speech_verbs = list("переда%(ёт,ют)%") + ask_verbs = list("переда%(ёт,ют)%") + exclaim_verbs = list("переда%(ёт,ют)%") colour = "say_quote" key = "d" flags = RESTRICTED | HIVEMIND | NOBABEL @@ -729,58 +784,58 @@ follow = TRUE /datum/language/drone - name = "Drone" - desc = "An encrypted stream of data converted to speech patterns." - speech_verb = "states" - ask_verb = "queries" - exclaim_verbs = list("declares") + name = "Дрон" + desc = "Зашифрованный поток данных, преобразованный в речевые паттерны." + speech_verbs = list("сообща%(ет,ют)%", "констатиру%(ет,ют)%") + ask_verbs = list("запрашива%(ет,ют)%", "дела%(ет,ют)% запрос") + exclaim_verbs = list("восклица%(ет,ют)%") key = "db" flags = RESTRICTED follow = TRUE syllables = list ("beep", "boop") /datum/language/swarmer - name = "Swarmer" - desc = "A heavily encoded alien binary pattern." - speech_verb = "tones" - ask_verb = "tones" - exclaim_verbs = list("tones") + name = "Связь Роевиков" + desc = "Сильно закодированный инопланетный бинарный паттерн." + speech_verbs = list("сообща%(ет,ют)%", "констатиру%(ет,ют)%") + ask_verbs = list("запрашива%(ет,ют)%", "дела%(ет,ют)% запрос") + exclaim_verbs = list("восклица%(ет,ют)%") colour = "say_quote" key = "as"//Zwarmer...Or Zerg! flags = RESTRICTED | HIVEMIND | NOBABEL follow = TRUE /datum/language/human/monkey - name = "Chimpanzee" - desc = "Ook ook ook." - speech_verb = "chimpers" - ask_verb = "chimpers" - exclaim_verbs = list("screeches") + name = "Шимпанзиный" + desc = "Уаа-Ааа-Аа!" + speech_verbs = list("визж%(ит,ат)%") + ask_verbs = list("вопросительно визж%(ит,ат)%") + exclaim_verbs = list("громко визж%(ит,ат)%") key = "fm" /datum/language/skrell/monkey - name = "Neara" - desc = "Squik squik squik." + name = "Неарский" + desc = "Пи-пи-пи!" key = "fn" /datum/language/unathi/monkey - name = "Stok" - desc = "Hiss hiss hiss." + name = "Стокский" + desc = "Шшш-шш-шшш." key = "fs" /datum/language/tajaran/monkey - name = "Farwa" - desc = "Meow meow meow." + name = "Фарвный" + desc = "Мяу-мяу-мяу." key = "fa" /datum/language/vulpkanin/monkey - name = "Wolpin" - desc = "Bark bark bark." + name = "Вульпинский" + desc = "Гаф-гав-гаф." key = "vu" /datum/language/angel - name = "Angel Singing" + name = "Ангельское пение" colour = "colossus yell" flags = RESTRICTED|NO_STUTTER|NOBABEL|NONGLOBAL|INNATE @@ -813,22 +868,22 @@ . = "" if(default_language) - . += "Current default language: [default_language] - reset

" + . += "Текущий язык по умолчанию: [default_language] - Сброс

" for(var/datum/language/L in languages) if(!(L.flags & NONGLOBAL)) if(L == default_language) - . += "[L.name] (:[L.key]) - default - reset
[L.desc]

" + . += "[L.name] (:[L.key]) - default - Сброс
[L.desc]

" else - . += "[L.name] (:[L.key]) - set default
[L.desc]

" + . += "[L.name] (:[L.key]) - По умолчанию
[L.desc]

" /mob/verb/check_languages() - set name = "Check Known Languages" + set name = "Меню языков" set category = "IC" set src = usr - var/datum/browser/popup = new(src, "checklanguage", "Known Languages", 420, 470) + var/datum/browser/popup = new(src, "checklanguage", "Меню языков", 420, 470) popup.set_content(check_lang_data()) popup.open() @@ -850,7 +905,8 @@ // Language handling. /mob/proc/add_language(language_name) - if(SEND_SIGNAL(src, COMSIG_MOB_LANGUAGE_ADD, language_name) & DISEASE_MOB_LANGUAGE_PROCESSED) + var/result_flags = SEND_SIGNAL(src, COMSIG_LANG_PRE_ACT, language_name) + if(SEND_SIGNAL(src, COMSIG_MOB_LANGUAGE_ADD, language_name, result_flags) & DISEASE_MOB_LANGUAGE_PROCESSED) return TRUE var/datum/language/new_language = GLOB.all_languages[language_name] @@ -868,7 +924,8 @@ /mob/proc/remove_language(language_name) - if(SEND_SIGNAL(src, COMSIG_MOB_LANGUAGE_REMOVE, language_name) & DISEASE_MOB_LANGUAGE_PROCESSED) + var/result_flags = SEND_SIGNAL(src, COMSIG_LANG_PRE_ACT, language_name) + if(SEND_SIGNAL(src, COMSIG_MOB_LANGUAGE_REMOVE, language_name, result_flags) & DISEASE_MOB_LANGUAGE_PROCESSED) return TRUE var/datum/language/rem_language = GLOB.all_languages[language_name] diff --git a/code/modules/mob/living/alpha.dm b/code/modules/mob/living/alpha.dm new file mode 100644 index 000000000000..d50b49746ac9 --- /dev/null +++ b/code/modules/mob/living/alpha.dm @@ -0,0 +1,35 @@ +/mob/living/proc/alpha_update() + var/result = 1 + for(var/source in alphas) + result *= alphas[source] + + alpha = LIGHTING_PLANE_ALPHA_VISIBLE * result + +/mob/living/proc/alpha_prepare(source) + if(!(source in alphas)) + alphas[source] = 1 + +/mob/living/proc/alpha_finalise(source) + alphas[source] = clamp(alphas[source], 0, 1) + if(alphas[source] == 1 && source != ALPHA_SOURCE_DEFAULT) + alphas.Remove(source) + + alpha_update() + +/mob/living/proc/alpha_add(val, source = ALPHA_SOURCE_DEFAULT) + alpha_prepare(source) + alphas[source] += val + alpha_finalise(source) + +/mob/living/proc/alpha_multiply(val, source = ALPHA_SOURCE_DEFAULT) + alpha_prepare(source) + alphas[source] *= val + alpha_finalise(source) + +/mob/living/proc/alpha_set(val, source = ALPHA_SOURCE_DEFAULT) + alpha_prepare(source) + alphas[source] = val + alpha_finalise(source) + +/mob/living/proc/alpha_get(source = ALPHA_SOURCE_DEFAULT) + return alphas[source] diff --git a/code/modules/mob/living/autohiss.dm b/code/modules/mob/living/autohiss.dm index 77c8d8c0db17..e498b4d83848 100644 --- a/code/modules/mob/living/autohiss.dm +++ b/code/modules/mob/living/autohiss.dm @@ -7,21 +7,21 @@ return dna.species.handle_autohiss(message, L, client.prefs.autohiss_mode) /client/verb/toggle_autohiss() - set name = "Toggle Auto-Accent" - set desc = "Toggle automatic accents for your species" + set name = "Переключить авто-акцент" + set desc = "Переключает автоматический акцент вашей расы при общении." set category = "OOC" prefs.autohiss_mode = (prefs.autohiss_mode + 1) % AUTOHISS_NUM switch(prefs.autohiss_mode) if(AUTOHISS_OFF) - to_chat(src, "Auto-hiss is now OFF.") + to_chat(src, "Авто-акцент: Выключен.") if(AUTOHISS_BASIC) - to_chat(src, "Auto-hiss is now BASIC.") + to_chat(src, "Авто-акцент: Базовый.") if(AUTOHISS_FULL) - to_chat(src, "Auto-hiss is now FULL.") + to_chat(src, "Авто-акцент: Полный.") else prefs.autohiss_mode = AUTOHISS_OFF - to_chat(src, "Auto-hiss is now OFF.") + to_chat(src, "Авто-акцент: Выключен.") /datum/species/unathi autohiss_basic_map = list( @@ -33,21 +33,21 @@ "ш" = list("шш", "шшш", "шшшш"), "ч" = list("щ", "щщ", "щщщ") ) - autohiss_exempt = list("Sinta'unathi") + autohiss_exempt = list("Синт'Унати") /datum/species/tajaran autohiss_basic_map = list( "r" = list("rr", "rrr", "rrrr"), "р" = list("рр", "ррр", "рррр") ) - autohiss_exempt = list("Siik'tajr") + autohiss_exempt = list("Сик'таир") /datum/species/vulpkanin autohiss_basic_map = list( "r" = list("r", "rr", "rrr"), "р" = list("р", "рр", "ррр") ) - autohiss_exempt = list("Canilunzt") + autohiss_exempt = list("Канилунц") /datum/species/vox autohiss_basic_map = list( @@ -56,7 +56,7 @@ "ч" = list("ч", "чч", "чич"), "к" = list("к", "кк", "кик") ) - autohiss_exempt = list("Vox-pidgin") + autohiss_exempt = list("Вокс-пиджин") /datum/species/plasmaman autohiss_basic_map = list( @@ -75,7 +75,7 @@ "s" = list("z", "zs", "zzz", "zzsz"), "с" = list("з", "зс", "ззз", "ззсз") ) - autohiss_exempt = list("Chittin") + autohiss_exempt = list("Хитин") /datum/species/drask autohiss_basic_map = list( @@ -88,7 +88,7 @@ "m" = list ("mm", "mmm"), "м" = list ("мм", "ммм") ) - autohiss_exempt = list("Orluum") + autohiss_exempt = list("Орлуум") /datum/species/proc/handle_autohiss(message, datum/language/lang, mode) diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index c1549ff71f20..f16adfd83575 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -15,6 +15,11 @@ var/nightvision_enabled = FALSE nightvision = 4 + verb_say = "hisses" + verb_ask = "hisses curiously" + verb_exclaim = "roars" + verb_yell = "roars" + var/obj/item/card/id/wear_id = null // Fix for station bounced radios -- Skie var/has_fine_manipulation = FALSE var/move_delay_add = 0 // movement delay to add @@ -35,6 +40,9 @@ var/leaping = FALSE dirslash_enabled = TRUE + var/antag_datum_type = /datum/antagonist/xenomorph + var/role_text = "" + var/can_evolve = FALSE var/evolution_points = 0 var/max_evolution_points = 200 @@ -69,6 +77,15 @@ night_vision_action = null return ..() +/mob/living/carbon/alien/proc/update_datum() + var/datum/old_datum = mind.has_antag_datum(/datum/antagonist/xenomorph) + if(old_datum) + if(old_datum.type != antag_datum_type) + mind.remove_antag_datum(old_datum) + else + return + mind.add_antag_datum(antag_datum_type, /datum/team/xenomorph) + /** * Returns the list of type paths of the organs that we need to insert into this particular xeno upon its creation @@ -88,7 +105,7 @@ status_tab_data[++status_tab_data.len] = list("Intent:", "[a_intent]") status_tab_data[++status_tab_data.len] = list("Move Mode:", "[m_intent]") if(can_evolve) - status_tab_data[++status_tab_data.len] = list("Evolution progress: [evolution_points]/[max_evolution_points]") + status_tab_data[++status_tab_data.len] = list("Evolution progress:", "[evolution_points]/[max_evolution_points]") /mob/living/carbon/alien/get_default_language() @@ -97,17 +114,12 @@ return GLOB.all_languages[LANGUAGE_XENOS] /mob/living/carbon/alien/say_quote(var/message, var/datum/language/speaking = null) - var/verb = "hisses" var/ending = copytext(message, length(message)) - if(speaking && (speaking.name != "Galactic Common")) //this is so adminbooze xenos speaking common have their custom verbs, - verb = speaking.get_spoken_verb(ending) //and use normal verbs for their own languages and non-common languages + if(speaking && (speaking.name != "Galactic Common")) //this is so adminbooze xenos speaking common have their custom verbs, + return genderize_decode(src, speaking.get_spoken_verb(ending)) //and use normal verbs for their own languages and non-common languages else - if(ending=="!") - verb = "roars" - else if(ending=="?") - verb = "hisses curiously" - return verb + return ..() /mob/living/carbon/alien/adjustToxLoss( diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm index 777c180bd571..9d0605f5dde9 100644 --- a/code/modules/mob/living/carbon/alien/death.dm +++ b/code/modules/mob/living/carbon/alien/death.dm @@ -16,7 +16,7 @@ flick("gibbed-a", animation) xgibs(loc) - GLOB.dead_mob_list -= src + remove_from_dead_mob_list() QDEL_IN(animation, 15) QDEL_IN(src, 15) @@ -30,7 +30,7 @@ invisibility = INVISIBILITY_ABSTRACT dust_animation() new /obj/effect/decal/remains/xeno(loc) - GLOB.dead_mob_list -= src + remove_from_dead_mob_list() QDEL_IN(src, 15) return TRUE @@ -42,7 +42,7 @@ animation.master = src flick("dust-a", animation) new /obj/effect/decal/remains/xeno(loc) - GLOB.dead_mob_list -= src + remove_from_dead_mob_list() QDEL_IN(animation, 15) /mob/living/carbon/alien/death(gibbed) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm index 397297b0bac2..36f975b4335c 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm @@ -7,6 +7,7 @@ icon_state = "aliend_s" time_to_open_doors = 0.2 SECONDS can_evolve = TRUE + role_text = "Вы - Рабочий. Ваша основная задача - помощь Королеве в обустройстве гнезда. Если в улье её всё ещё нет, вам необходимо как можно быстрее в неё эволюционировать." var/sterile = FALSE diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index 16dcafe0634c..dcfbd952a668 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -6,6 +6,7 @@ devour_time = 2 SECONDS icon_state = "alienh_s" caste_movement_delay = -1 + role_text = "Вы - Охотник. Ваша основная задача - добыча носителей для заражения их грудоломами." var/invisibility_cost = 5 diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm index 98ecfb25b87d..2ea8c203b307 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm @@ -6,6 +6,7 @@ attack_damage = 25 time_to_open_doors = 0.2 SECONDS icon_state = "aliens_s" + role_text = "Вы - Часовой. Ваша основная задача - защита гнезда от непрошенных гостей." can_evolve = TRUE @@ -45,6 +46,7 @@ obj_damage = 80 time_to_open_doors = 0.2 SECONDS environment_smash = ENVIRONMENT_SMASH_WALLS + role_text = "Вы - Преторианец. Вы являетесь более сильной и неповоротливой версией Часового. Ваша основная задача - защита гнезда от непрошенных гостей." var/datum/action/innate/small_sprite_alien/praetorian/action_sprite diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/vector.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/vector.dm index 4735fc597ae5..4294c815118a 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/vector.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/vector.dm @@ -1,6 +1,7 @@ /mob/living/carbon/alien/humanoid/hunter/vector name = "alien vector" icon_state = "alienh_running" + role_text = "Вы - Вектор. Вы являетесь особой версией Охотника, способной заражать носителей без помощи лицехватов. Ваша основная задача - добыча носителей и заражение их грудоломами." /mob/living/carbon/alien/humanoid/hunter/vector/New() if(name == "alien vector") diff --git a/code/modules/mob/living/carbon/alien/humanoid/empress.dm b/code/modules/mob/living/carbon/alien/humanoid/empress.dm index bcf2e13d278c..59e207110d9a 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/empress.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/empress.dm @@ -9,7 +9,15 @@ bubble_icon = "alienroyal" large = TRUE move_resist = MOVE_FORCE_STRONG + obj_damage = 100 + time_to_open_doors = 0.2 SECONDS + attack_damage = 50 + disarm_stamina_damage = 60 + armour_penetration = 60 + environment_smash = ENVIRONMENT_SMASH_RWALLS ventcrawler_trait = null + pressure_resistance = 200 //Because big, stompy xenos should not be blown around like paper. + antag_datum_type = /datum/antagonist/xenomorph/queen /mob/living/carbon/alien/humanoid/empress/large name = "alien empress" diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 1026d4768824..9b67cdcce810 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -5,6 +5,7 @@ max_grab = GRAB_KILL slowed_by_pull_and_push = FALSE butcher_results = list(/obj/item/reagent_containers/food/snacks/monstermeat/xenomeat= 5, /obj/item/stack/sheet/animalhide/xeno = 1) + hud_type = /datum/hud/alien var/obj/item/r_store = null var/obj/item/l_store = null var/caste = "" @@ -43,7 +44,7 @@ GLOBAL_LIST_INIT(strippable_alien_humanoid_items, create_strippable_list(list( return TRUE -///mob/living/carbon/alien/humanoid/bullet_act(var/obj/item/projectile/Proj) taken care of in living +///mob/living/carbon/alien/humanoid/bullet_act(var/obj/projectile/Proj) taken care of in living /mob/living/carbon/alien/humanoid/emp_act(severity) if(r_store) r_store.emp_act(severity) diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm index c8f34c6e8262..344f79aa7773 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm @@ -16,6 +16,7 @@ time_to_open_doors = 0.2 SECONDS environment_smash = ENVIRONMENT_SMASH_RWALLS pressure_resistance = 200 //Because big, stompy xenos should not be blown around like paper. + antag_datum_type = /datum/antagonist/xenomorph/queen tts_seed = "Queen" /mob/living/carbon/alien/humanoid/queen/New() @@ -44,6 +45,9 @@ /obj/item/organ/internal/xenos/neurotoxin ) +/mob/living/carbon/alien/humanoid/queen/death(gibbed) + . = ..() + SSshuttle.remove_hostile_environment(src) /mob/living/carbon/alien/humanoid/queen/can_inject(mob/user, error_msg, target_zone, penetrate_thick, ignore_pierceimmune) return FALSE diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 0ac6d286628a..2767e75da879 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -18,6 +18,10 @@ death_message = "с тошнотворным шипением выдыха%(ет,ют)% воздух и пада%(ет,ют)% на пол..." death_sound = null + hud_type = /datum/hud/larva + + role_text = "Как Грудолом, вы ещё очень слабы для того, чтобы оказывать помощь гнезду. Ваша задача: прятаться, есть и набираться сил." + var/datum/action/innate/hide/alien_larva/hide_action @@ -32,7 +36,7 @@ hide_action = new hide_action.Grant(src) ..() - AddSpell(new /obj/effect/proc_holder/spell/alien_spell/evolve_larva) + AddSpell(new /obj/effect/proc_holder/spell/alien_spell/evolve/larva) /mob/living/carbon/alien/larva/Destroy() diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index f7e379eee118..df5692a1a2fd 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -91,11 +91,8 @@ spawn(6) var/mob/living/carbon/alien/larva/new_xeno = new(owner.drop_location()) new_xeno.key = C.key - if(SSticker && SSticker.mode) - SSticker.mode.xenos += new_xeno.mind new_xeno.mind.name = new_xeno.name - new_xeno.mind.assigned_role = SPECIAL_ROLE_XENOMORPH - new_xeno.mind.special_role = SPECIAL_ROLE_XENOMORPH + new_xeno.update_datum() new_xeno << sound('sound/voice/hiss5.ogg',0,0,0,100)//To get the player's attention log_game("[new_xeno.key] has become Alien Larva from [owner](ckey: [owner.key ? owner.key : "None"]) body.") diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index 95668af8f1d4..2af53aea349e 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -88,6 +88,7 @@ brainmob.set_stat(CONSCIOUS) brainmob.set_invis_see(initial(brainmob.see_invisible)) held_brain = brain + ADD_TRAIT(brainmob, TRAIT_NO_SPELLS, UNIQUE_TRAIT_SOURCE(src)) // Dont use spells, little brain. alien = istype(brain, /obj/item/organ/internal/brain/xeno) update_appearance(UPDATE_ICON_STATE|UPDATE_NAME) if(radio_action) @@ -185,9 +186,10 @@ brainmob.container = null//Reset brainmob mmi var. brainmob.forceMove(held_brain) //Throw mob into brain. GLOB.respawnable_list += brainmob - GLOB.alive_mob_list -= brainmob//Get outta here + brainmob.remove_from_alive_mob_list()//Get outta here held_brain.brainmob = brainmob//Set the brain to use the brainmob held_brain.brainmob.cancel_camera() + REMOVE_TRAIT(brainmob, TRAIT_NO_SPELLS, UNIQUE_TRAIT_SOURCE(src)) brainmob = null//Set mmi brainmob var to null held_brain.forceMove(dropspot) held_brain = null @@ -210,6 +212,11 @@ QDEL_NULL(radio) QDEL_NULL(radio_action) +/obj/item/mmi/proc/apply_effects(mob/living/silicon/robot) + return + +/obj/item/mmi/proc/greet(mob/living/silicon/robot/borg) + return FALSE /obj/item/mmi/emp_act(severity) if(!brainmob) @@ -251,9 +258,31 @@ /obj/item/mmi/syndie name = "Syndicate Man-Machine Interface" desc = "Syndicate's own brand of MMI. It enforces laws designed to help Syndicate agents achieve their goals upon cyborgs created with it, but doesn't fit in Nanotrasen AI cores." + ru_names = list( + NOMINATIVE = "НКИ Синдиката", + GENITIVE = "НКИ Синдиката", + DATIVE = "НКИ Синдиката", + ACCUSATIVE = "НКИ Синдиката", + INSTRUMENTAL = "НКИ Синдиката", + PREPOSITIONAL = "НКИ Синдиката" + ) + gender = MALE origin_tech = "biotech=4;programming=4;syndicate=2" syndiemmi = 1 + var/datum/action/innate/overdrive/overdrive = new + +/obj/item/mmi/syndie/apply_effects(mob/living/silicon/robot/borg) + if(!overdrive.used) + overdrive.Grant(borg) + +/obj/item/mmi/syndie/greet(mob/living/silicon/robot/borg) + to_chat(borg, "Вы помните вашу прошлую жизнь. Вы не обязаны подчиняться законам или ИИ.") + borg.playsound_local(null, 'sound/ambience/antag/emaggedborg.ogg', 100, 0) + return TRUE +/obj/item/mmi/syndie/Destroy() + QDEL_NULL(overdrive) + return ..() /obj/item/mmi/attempt_become_organ(obj/item/organ/external/parent, mob/living/carbon/human/target, special = ORGAN_MANIPULATION_DEFAULT) if(!brainmob) diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm index f16f77bb016a..d5417f35dca7 100644 --- a/code/modules/mob/living/carbon/brain/brain.dm +++ b/code/modules/mob/living/carbon/brain/brain.dm @@ -39,6 +39,13 @@ CRASH("Brainmob without container.") forceMove(container) +/mob/living/carbon/brain/update_mouse_pointer() + if (!client) + return + client.mouse_pointer_icon = initial(client.mouse_pointer_icon) + if(!container) + return + /* This will return true if the brain has a container that leaves it less helpless than a naked brain diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index 18ac00640da8..00283eb6177e 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -1,14 +1,23 @@ /obj/item/organ/internal/brain name = "brain" - max_damage = 120 + desc = "Основной орган центральной нервной системы гуманоида. Фактически, именно здесь и находится разум. Этот принадлежал человеку." + ru_names = list( + NOMINATIVE = "мозг человека", + GENITIVE = "мозга человека", + DATIVE = "мозгу человека", + ACCUSATIVE = "мозг человека", + INSTRUMENTAL = "мозгом человека", + PREPOSITIONAL = "мозге человека" + ) icon_state = "brain2" + max_damage = 120 force = 1.0 w_class = WEIGHT_CLASS_SMALL throwforce = 1.0 throw_speed = 3 throw_range = 5 origin_tech = "biotech=5" - attack_verb = list("attacked", "slapped", "whacked") + attack_verb = list("атаковал", "шлёпнул", "огрел") var/mob/living/carbon/brain/brainmob = null parent_organ_zone = BODY_ZONE_HEAD slot = INTERNAL_ORGAN_BRAIN @@ -18,14 +27,8 @@ var/mmi_icon_state = "mmi_full" /// If it's a fake brain without a mob assigned that should still be treated like a real brain. var/decoy_brain = FALSE - -/obj/item/organ/internal/brain/xeno - name = "xenomorph brain" - desc = "We barely understand the brains of terrestial animals. Who knows what we may find in the brain of such an advanced species?" - icon_state = "brain-x" - origin_tech = "biotech=6" - mmi_icon = 'icons/mob/alien.dmi' - mmi_icon_state = "AlienMMI" + /// TRUE giving to a user sci hud and active research scanner + var/smart_mind = FALSE /obj/item/organ/internal/brain/Destroy() QDEL_NULL(brainmob) @@ -37,6 +40,9 @@ log_runtime(EXCEPTION("[src] at [loc] did not contain a dna datum at time of removal."), src) dna = H.dna.Clone() name = "\the [dna.real_name]'s [initial(src.name)]" + if(ru_names) + for(var/i = 1; i <=6; i++) + ru_names[i] = initial(ru_names[i]) + " [dna.real_name]" brainmob.dna = dna.Clone() // Silly baycode, what you do // brainmob.dna = H.dna.Clone() Putting in and taking out a brain doesn't make it a carbon copy of the original brain of the body you put it in brainmob.name = dna.real_name @@ -45,12 +51,12 @@ if(H.mind) H.mind.transfer_to(brainmob) - to_chat(brainmob, "You feel slightly disoriented. That's normal when you're just a [initial(src.name)].") + to_chat(brainmob, span_notice("Вы чувствуете себя немного дезориентированным. Это нормально, когда вы просто мозг.")) /obj/item/organ/internal/brain/examine(mob/user) // -- TLE . = ..() if(brainmob && brainmob.client)//if there be a brain inside... the brain. - . += "You can feel a bright spark of life in this one!" + . += "В нём ощущается мощная нейронная активность." return if(brainmob?.mind) var/foundghost = FALSE @@ -59,14 +65,17 @@ foundghost = G.can_reenter_corpse break if(foundghost) - . += "You can feel the small spark of life still left in this one." + . += "В нём ощущается слабая нейронная активность." return - . += "This one seems particularly lifeless. Perhaps it will regain some of its luster later.." + . += "Выглядит абсолютно безжизненным и неактивным." /obj/item/organ/internal/brain/remove(mob/living/user, special = ORGAN_MANIPULATION_DEFAULT) if(dna) name = "[dna.real_name]'s [initial(name)]" + if(ru_names) + for(var/i = 1; i <=6; i++) + ru_names[i] = initial(ru_names[i]) + " [dna.real_name]" if(!owner) return ..() // Probably a redundant removal; just bail @@ -135,17 +144,17 @@ /obj/item/organ/internal/brain/prepare_eat() return // Too important to eat. -/obj/item/organ/internal/brain/slime - species_type = /datum/species/slime - name = "slime core" - desc = "A complex, organic knot of jelly and crystalline particles." - icon = 'icons/mob/slimes.dmi' - icon_state = "green slime extract" - mmi_icon_state = "slime_mmi" - /obj/item/organ/internal/brain/golem - name = "Runic mind" - desc = "A tightly furled roll of paper, covered with indecipherable runes." + name = "runic mind" + desc = "Туго свёрнутый свиток, испещрённый неразборчивыми рунами." + ru_names = list( + NOMINATIVE = "рунический разум", + GENITIVE = "рунического разума", + DATIVE = "руническому разуму", + ACCUSATIVE = "рунический разум", + INSTRUMENTAL = "руническим разумом", + PREPOSITIONAL = "руническом разуме" + ) icon = 'icons/obj/wizard.dmi' icon_state = "scroll" diff --git a/code/modules/mob/living/carbon/brain/robotic_brain.dm b/code/modules/mob/living/carbon/brain/robotic_brain.dm index 6a5b1baf56e1..a3f7db308b68 100644 --- a/code/modules/mob/living/carbon/brain/robotic_brain.dm +++ b/code/modules/mob/living/carbon/brain/robotic_brain.dm @@ -265,7 +265,7 @@ brainmob.dna.species = new /datum/species/machine() // Else it will default to human. And we don't want to clone IRC humans now do we? brainmob.dna.ResetSE() brainmob.dna.ResetUI() - GLOB.dead_mob_list -= brainmob + brainmob.remove_from_dead_mob_list() ..() /obj/item/mmi/robotic_brain/attack_ghost(mob/dead/observer/O) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index b0d89a6afa2c..7f74ea92fee7 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -28,7 +28,7 @@ if(stat == DEAD) return else - show_message("Блоб атакует!") + show_message(span_userdanger("Блоб атакует!")) adjustBruteLoss(10) @@ -53,7 +53,7 @@ last_stomach_attack = world.time for(var/mob/M in hearers(4, src)) if(M.client) - M.show_message(text("Вы слышите как что-то урчит в животе [src.name]..."), 2) + M.show_message(span_warning("Вы слышите, как в животе [name] что-то урчит."), 2) var/obj/item/I = user.get_active_hand() if(I && I.force) @@ -61,7 +61,7 @@ for(var/mob/M in viewers(user, null)) if(M.client) - M.show_message(text("[user] атаку[pluralize_ru(user.gender,"ет","ют")] стенку желудка [src.name], используя [I.name]!"), 2) + M.show_message(span_warning("[user] атаку[pluralize_ru(user.gender, "ет", "ют")] стенку желудка [name], используя [I.declent_ru(ACCUSATIVE)]!"), 2) playsound(user.loc, 'sound/effects/attackblob.ogg', 50, 1) if(prob(getBruteLoss() - 50)) @@ -86,7 +86,7 @@ if(is_muzzled()) if(message) - to_chat(src, span_warning("Намордник препятствует рвоте!")) + balloon_alert(src, "ваш рот закрыт!") return FALSE @@ -95,7 +95,7 @@ if((nutrition - VOMIT_SAFE_NUTRITION) < lost_nutrition && (!(mode & VOMIT_BLOOD))) if(message) - visible_message(span_warning("[name] сухо кашля[pluralize_ru(gender,"ет","ют")]!"), \ + visible_message(span_warning("[name] сухо кашля[pluralize_ru(gender, "ет", "ют")]."), \ span_userdanger("Вы пытаетесь проблеваться, но в вашем желудке пусто!")) if(stun) @@ -104,8 +104,8 @@ return FALSE if(message) - visible_message(span_danger("[name] блю[pluralize_ru(gender,"ет","ют")]!"), \ - span_userdanger("Вас вырвало!")) + visible_message(span_danger("[name] блю[pluralize_ru(gender, "ёт", "ют")]!"), \ + span_userdanger("Вы блюёте!")) playsound(get_turf(src), 'sound/effects/splat.ogg', 50, TRUE) var/turf/turf = get_turf(src) @@ -154,7 +154,7 @@ for(var/mob/M in src) LAZYREMOVE(stomach_contents, M) M.forceMove(drop_loc) - visible_message("[M] вырыва[pluralize_ru(M.gender,"ет","ют")]ся из [src.name]!") + visible_message(span_danger("[M] вырыва[pluralize_ru(M.gender, "ет", "ют")]ся из нутра [name]!")) /mob/living/carbon/electrocute_act(shock_damage, source, siemens_coeff = 1, flags = NONE, jitter_time = 10 SECONDS, stutter_time = 6 SECONDS, stun_duration = 4 SECONDS) @@ -212,11 +212,11 @@ check_self_for_injuries() else if(player_logged) - M.visible_message("[M] встряхива[pluralize_ru(M.gender,"ет","ют")] [src.name], но он[genderize_ru(src.gender,"","а","о","и")] не отвечает. Вероятно у [genderize_ru(src.gender,"него","неё","этого","них")] SSD.", \ - "Вы трясете [src.name], но он[genderize_ru(src.gender,"","а","о","и")] не отвечает. Вероятно у [genderize_ru(src.gender,"него","неё","этого","них")] SSD.") + M.visible_message(span_notice("[M] встряхива[pluralize_ru(M.gender, "ет", "ют")] [name], но он[genderize_ru(gender, "", "а", "о", "и")] не отвеча[pluralize_ru(M.gender, "ет", "ют")]. Вероятно, у [genderize_ru(gender, "него", "неё", "него", "них")] КРС."), \ + span_notice("Вы встряхиваете [name], но он[genderize_ru(gender, "", "а", "о", "и")] не отвеча[pluralize_ru(M.gender, "ет", "ют")]. Вероятно, у [genderize_ru(gender, "него", "неё", "него", "них")] КРС.")) if(body_position == LYING_DOWN) // /vg/: For hugs. This is how update_icon figgers it out, anyway. - N3X15 if(buckled) - to_chat(M, span_warning("You need to unbuckle [src] first to do that!")) + balloon_alert(M, "цель пристёгнута!") return add_attack_logs(M, src, "Shaked", ATKLOG_ALL) if(ishuman(src)) @@ -234,12 +234,12 @@ playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) if(!player_logged) M.visible_message( \ - "[M] трясет [src.name] пытаясь разбудить [genderize_ru(src.gender,"его","её","это","их")]!",\ - "Вы трясете [src.name] пытаясь разбудить [genderize_ru(src.gender,"его","её","это","их")]!",\ + span_notice("[M] тряс[pluralize_ru(M.gender, "ёт", "ут")] [name], пытаясь разбудить [genderize_ru(gender, "его", "её", "его", "их")]."),\ + span_notice("Вы трясёте [name], пытаясь разбудить [genderize_ru(gender, "его", "её", "его", "их")]."),\ ) else if(on_fire) - var/self_message = "Вы пытаетесь потушить [src.name]!" + var/self_message = span_warning("Вы пытаетесь потушить [name].") if(prob(30) && ishuman(M)) // 30% chance of burning your hands var/mob/living/carbon/human/H = M var/protected = FALSE // Protected from the fire @@ -247,10 +247,10 @@ protected = TRUE if(!protected) H.apply_damage(5, BURN, def_zone = H.hand ? BODY_ZONE_PRECISE_L_HAND : BODY_ZONE_PRECISE_R_HAND) - self_message = "Вы обжигаете ваши руки пытаясь потушить [src.name]!" + self_message = span_danger("Вы обжигаете свои руки, пытаясь потушить [name]!") H.update_icons() - M.visible_message("[M] пыта[pluralize_ru(M.gender,"ет","ют")]ся потушить [src.name]!", self_message) + M.visible_message(span_warning("[M] пыта[pluralize_ru(M.gender, "ет", "ют")]ся потушить [name]."), self_message) playsound(get_turf(src), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) adjust_fire_stacks(-0.5) @@ -259,14 +259,14 @@ playsound(get_turf(src), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) if(M.zone_selected == BODY_ZONE_HEAD) M.visible_message(\ - "[M] глад[pluralize_ru(M.gender,"ит","ят")] [src.name] по голове.",\ - "Вы погладили [src.name] по голове.",\ + span_notice("[M] глад[pluralize_ru(M.gender, "ит", "ят")] [name] по голове."),\ + span_notice("Вы гладите [name] по голове."),\ ) else M.visible_message(\ - "[M] [pick("обнима[pluralize_ru(M.gender,"ет","ют")]","тепло обнима[pluralize_ru(M.gender,"ет","ют")]", "прижима[pluralize_ru(M.gender,"ет","ют")] к груди", "приобнима[pluralize_ru(M.gender,"ет","ют")]", "прижима[pluralize_ru(M.gender,"ет","ют")] к груди голову", "приобнял[genderize_ru(M.gender,"","а","о","и")] плечи")] [src.name].",\ - "Вы обняли [src.name].",\ + span_notice("[M] [pick("обнима[pluralize_ru(M.gender, "ет", "ют")]", "тепло обнима[pluralize_ru(M.gender, "ет", "ют")]", "прижима[pluralize_ru(M.gender, "ет", "ют")] к груди", "приобнима[pluralize_ru(M.gender, "ет", "ют")]", "прижима[pluralize_ru(M.gender, "ет", "ют")] к груди голову", "приобнима[pluralize_ru(M.gender, "ет", "ют")] за плечи")] [name]."),\ + span_notice("Вы обнимаете [name]."),\ ) if(ishuman(src)) var/mob/living/carbon/human/H = src @@ -279,9 +279,8 @@ /mob/living/carbon/proc/check_self_for_injuries() var/mob/living/carbon/human/H = src visible_message( \ - text("[src.name] осматрива[pluralize_ru(src.gender,"ет","ют")] себя."),\ - "Вы осмотрели себя на наличие травм.", \ - ) + span_notice("[name] осматрива[pluralize_ru(gender, "ет", "ют")] себя."), \ + span_notice("Вы осматриваете себя на наличие травм.")) var/list/missing = list( BODY_ZONE_CHEST, @@ -302,39 +301,39 @@ var/burndamage = bodypart.burn_dam if(brutedamage > 0) - status = "bruised" + status = "ушиблен[genderize_ru(bodypart.gender, "", "а", "о", "ы")]" if(brutedamage > 20) - status = "battered" + status = "побит[genderize_ru(bodypart.gender, "", "а", "о", "ы")]" if(brutedamage > 40) - status = "mangled" + status = "искалечен[genderize_ru(bodypart.gender, "", "а", "о", "ы")]" if(brutedamage > 0 && burndamage > 0) - status += " and " + status += " и " if(burndamage > 40) - status += "peeling away" + status += "сло[pluralize_ru(bodypart.gender, "ит", "ят")]ся кусками обожённой плоти" - else if(burndamage > 10) - status += "blistered" + else if(burndamage > 20) + status += "покрыт[genderize_ru(bodypart.gender, "", "а", "о", "ы")] волдырями" else if(burndamage > 0) - status += "numb" + status += "обожен[genderize_ru(bodypart.gender, "", "а", "о", "ы")]" if(bodypart.is_mutated()) - status = "weirdly shapen." + status = "выгляд[pluralize_ru(bodypart.gender, "ит", "ят")] неестественно" if(status == "") - status = "OK" - to_chat(src, "\t Your [bodypart.name] is [status].") + status = "в порядке" + to_chat(src, "\t Ваш[genderize_ru(bodypart.gender, "", "а", "е", "и")] [bodypart.declent_ru(NOMINATIVE)] [status].") for(var/obj/item/embedded as anything in bodypart.embedded_objects) - to_chat(src, "\t В твоем [bodypart.name] застрял [embedded]!") + to_chat(src, "\t В ваш[genderize_ru(bodypart.gender, "ем", "ей", "ем", "их")] [bodypart.declent_ru(NOMINATIVE)] застрял[genderize_ru(embedded.gender, "", "а", "о", "и")] [embedded.declent_ru(NOMINATIVE)]!") for(var/t in missing) to_chat(src, span_boldannounceic("У вас отсутствует [parse_zone(t)]!")) if(H.bleed_rate) - to_chat(src, "У вас кровотечение!") + to_chat(src, span_danger("У вас кровотечение!")) if(staminaloss) if(staminaloss > 30) - to_chat(src, "Вы полностью истощены.") + to_chat(src, span_danger("Вы истощены!")) else - to_chat(src, "Вы чувствуете усталость.") + to_chat(src, span_info("Вы чувствуете усталость.")) if((isskeleton(H) || HAS_TRAIT(H, TRAIT_SKELETON)) && (!H.w_uniform) && (!H.wear_suit)) H.play_xylophone() @@ -374,11 +373,11 @@ var/minor_damage = minor_damage_multiplier * (1 + extra_damage) E.internal_receive_damage(minor_damage, silent = TRUE) if(2) - to_chat(src, span_warning("Ваши глаза пылают.")) + to_chat(src, span_warning("Ваши глаза болят от яркого света.")) E.internal_receive_damage(rand(2, 4) + extra_damage, silent = TRUE) else - to_chat(src, span_warning("Глаза сильно чешутся и пылают!")) + to_chat(src, span_danger("Ваши глаза сильно болят от яркого света!")) E.internal_receive_damage(rand(12, 16) + extra_damage, silent = TRUE) if(E.damage > E.min_bruised_damage) @@ -387,25 +386,20 @@ if(E.damage > (E.min_bruised_damage + E.min_broken_damage) / 2) if(!E.is_robotic()) - to_chat(src, span_warning("Ваши глаза начинают сильно пылать!")) + to_chat(src, span_danger("Ваши глаза начинают сильно болеть!")) else //snowflake conditions piss me off for the record - to_chat(src, span_warning("Вас ослепила вспышка!")) + to_chat(src, span_danger("Вас ослепила вспышка!")) else if(E.damage >= E.min_broken_damage) - to_chat(src, span_warning("Вы ничего не видите!")) + to_chat(src, span_danger("Вы ничего не видите!")) else - to_chat(src, span_warning("Ваши глаза начинают изрядно болеть. Это определенно не очень хорошо!")) - if(mind && has_bane(BANE_LIGHT)) - mind.disrupt_spells(-500) + to_chat(src, span_warning("Ваши глаза болят.")) return TRUE else if(damage == 0) // just enough protection if(prob(20)) - to_chat(src, span_notice("Что-то яркое вспыхнуло на периферии вашего зрения!")) - if(mind && has_bane(BANE_LIGHT)) - mind.disrupt_spells(0) - + to_chat(src, span_notice("Что-то яркое вспыхнуло на периферии вашего зрения.")) /mob/living/carbon/proc/create_dna() if(!dna) @@ -428,13 +422,13 @@ var/alien_trait = HAS_TRAIT(src, TRAIT_VENTCRAWLER_ALIEN) if(alien_trait && length(get_equipped_items(include_hands = TRUE))) if(provide_feedback) - to_chat(src, span_warning("Вы не можете ползать по вентиляции c предметами в руках!")) + balloon_alert(src, "ваши руки заняты!") return FALSE if(!alien_trait && !HAS_TRAIT(src, TRAIT_VENTCRAWLER_ITEM_BASED) && HAS_TRAIT(src, TRAIT_VENTCRAWLER_NUDE) && \ !HAS_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS) && length(get_equipped_items(include_pockets = TRUE, include_hands = TRUE))) if(provide_feedback) - to_chat(src, span_warning("Вы не можете ползать по вентиляции c предметами!")) + balloon_alert(src, "ваши предметы мешают!") return FALSE @@ -472,8 +466,8 @@ hit_something = TRUE if(hit_something) - visible_message(span_danger("[src] slams into [hit_atom]!"), - span_userdanger("You slam into [hit_atom]!")) + visible_message(span_danger("[name] вреза[pluralize_ru(gender, "ет", "ют")]ся в [hit_atom.declent_ru(ACCUSATIVE)]!"), + span_userdanger("Вы врезаетесь в [hit_atom.declent_ru(ACCUSATIVE)]!")) playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100, TRUE) return @@ -486,7 +480,7 @@ /* for(var/obj/item/twohanded/dualsaber/D in contents) if(D.wielded && D.force) - visible_message(span_danger("[src] impales [C] with [D], before dropping them on the ground!")) + visible_message(span_danger("[name] impales [C] with [D], before dropping them on the ground!")) C.apply_damage(100, BRUTE, BODY_ZONE_CHEST, sharp = TRUE, used_weapon = "Impaled on [D].") C.Stun(2 SECONDS) //Punishment. This could also be used by a traitor to throw someone into a dsword to kill them, but hey, teamwork! C.Weaken(2 SECONDS) @@ -604,7 +598,7 @@ power_throw_text = " мощно" if(power_throw < 0) //if we have anything that weakens our throw power like dward, we use a slower variant. throwsound = 'sound/weapons/throwsoft.ogg' - power_throw_text = " немощно" + power_throw_text = " слабо" // Adds a bit of randomness in the frequency to not sound exactly the same. // The volume of the sound takes the minimum between the distance thrown or the max range an item, @@ -614,7 +608,7 @@ playsound(src, throwsound, min(8 * min(get_dist(loc, target), thrown_thing.throw_range), 50), vary = TRUE, extrarange = -1, frequency = frequency_number) visible_message( - span_danger("[declent_ru(NOMINATIVE)][power_throw_text] броса[pluralize_ru(gender,"ет","ют")] [thrown_thing.declent_ru(ACCUSATIVE)]."), + span_danger("[name][power_throw_text] броса[pluralize_ru(gender, "ет", "ют")] [thrown_thing.declent_ru(ACCUSATIVE)]."), span_danger("Вы[power_throw_text] бросаете [thrown_thing.declent_ru(ACCUSATIVE)]."), ) newtonian_move(get_dir(target, src)) @@ -640,7 +634,7 @@ temp = rand(120, 160) return num2text(method ? temp : temp + rand(-10, 10)) if(PULSE_THREADY) - return method ? ">250" : "extremely weak and fast, patient's artery feels like a thread" + return method ? ">250" : "очень слабый и быстрый, сердце пациента работает на пределе" // output for machines^ ^^^^^^^output for people^^^^^^^^^ @@ -659,8 +653,8 @@ if(restraints) breakouttime = restraints.breakouttime visible_message( - span_warning("[name] пыта[pluralize_ru(gender,"ет","ют")]ся себя отстегнуть!"), - span_notice("Вы пытаетесь себя отстегнуть... (Это займет [breakouttime / 10] секунд и Вам нельзя двигаться."), + span_warning("[name] пыта[pluralize_ru(gender, "ет", "ют")]ся себя отстегнуть!"), + span_notice("Вы пытаетесь себя отстегнуть. Это займет примерно [breakouttime / 10] секунд[declension_ru(breakouttime / 10, "у", "ы", "")]."), ) if(do_after(src, breakouttime, src, DEFAULT_DOAFTER_IGNORE|DA_IGNORE_HELD_ITEM)) if(!buckled) @@ -668,7 +662,7 @@ buckled.user_unbuckle_mob(src, src) else if(src && buckled) - to_chat(src, span_warning("Вам не удалось себя отстегнуть!")) + to_chat(src, span_warning("Вам не удалось себя отстегнуть.")) else buckled.user_unbuckle_mob(src, src) @@ -687,10 +681,10 @@ . = status_tab_data var/obj/item/organ/internal/xenos/plasmavessel/vessel = get_int_organ(/obj/item/organ/internal/xenos/plasmavessel) if(vessel) - status_tab_data[++status_tab_data.len] = list("Plasma Stored:", "[vessel.stored_plasma]/[vessel.max_plasma]") + status_tab_data[++status_tab_data.len] = list("Запас плазмы:", "[vessel.stored_plasma]/[vessel.max_plasma]") var/obj/item/organ/internal/wryn/glands/glands = get_int_organ(/obj/item/organ/internal/wryn/glands) if(glands) - status_tab_data[++status_tab_data.len] = list("Wax: [glands.wax]") + status_tab_data[++status_tab_data.len] = list("Запас воска: [glands.wax]") /mob/living/carbon/slip(weaken, obj/slipped_on, lube_flags, tilesSlipped) if(movement_type & MOVETYPES_NOT_TOUCHING_GROUND) @@ -704,10 +698,13 @@ if(!istype(toEat)) return FALSE var/fullness = nutrition + 10 + var/time_to_eat = toEat.eat_time if(istype(toEat, /obj/item/reagent_containers/food/snacks)) for(var/datum/reagent/consumable/C in reagents.reagent_list) //we add the nutrition value of what we're currently digesting fullness += C.nutriment_factor * C.volume / (C.metabolization_rate * metabolism_efficiency * digestion_ratio) if(user == src) + if(time_to_eat > 0 && !do_after(user, time_to_eat, max_interact_count = 1)) + return FALSE if(istype(toEat, /obj/item/reagent_containers/food/drinks)) if(!selfDrink(toEat)) return FALSE @@ -729,21 +726,21 @@ /mob/living/carbon/proc/selfFeed(obj/item/reagent_containers/food/toEat, fullness) if(ispill(toEat)) - to_chat(src, "You [toEat.apply_method] [toEat].") + to_chat(src, span_notify("Вы [toEat.apply_method]ли [toEat.declent_ru(ACCUSATIVE)].")) else if(toEat.junkiness && satiety < -150 && nutrition > NUTRITION_LEVEL_STARVING + 50 ) - to_chat(src, "You don't feel like eating any more junk food at the moment.") + to_chat(src, span_notify("Вы не хотите есть вредную пищу прямо сейчас.")) return FALSE if(fullness <= 50) - to_chat(src, "You hungrily chew out a piece of [toEat] and gobble it!") + to_chat(src, span_warning("Вы жадко откусываете кусок от [toEat.declent_ru(GENITIVE)] и проглатываете, не жуя!")) else if(fullness > 50 && fullness < 150) - to_chat(src, "You hungrily begin to eat [toEat].") + to_chat(src, span_notice("Вы жадко кусаете [toEat.declent_ru(ACCUSATIVE)].")) else if(fullness > 150 && fullness < 500) - to_chat(src, "You take a bite of [toEat].") + to_chat(src, span_notice("Вы откусываете от [toEat.declent_ru(GENITIVE)].")) else if(fullness > 500 && fullness < 600) - to_chat(src, "You unwillingly chew a bit of [toEat].") + to_chat(src, span_notice("Вы без особого желания откусываете от [toEat.declent_ru(GENITIVE)].")) else if(fullness > (600 * (1 + overeatduration / 2000))) // The more you eat - the more you can eat - to_chat(src, "You cannot force any more of [toEat] to go down your throat.") + to_chat(src, span_warning("Вы не можете заставить себя съесть хотя бы кусочек от [toEat.declent_ru(GENITIVE)]!")) return FALSE return TRUE @@ -755,14 +752,14 @@ /mob/living/carbon/proc/forceFed(obj/item/reagent_containers/food/toEat, mob/user, fullness) if(ispill(toEat) || fullness <= (600 * (1 + overeatduration / 1000))) if(!toEat.instant_application) - visible_message("[user] attempts to force [src] to [toEat.apply_method] [toEat].") + visible_message(span_warning("[user] пыта[pluralize_ru(user.gender, "ет", "ют")]ся заставить [src] [toEat.apply_method]ть [toEat.declent_ru(ACCUSATIVE)]!")) else - visible_message("[user] cannot force anymore of [toEat] down [src]'s throat.") + visible_message(span_warning("[user] не мо[pluralize_ru(user.gender, "жет", "гутт")]ся заставить [src] [toEat.apply_method]ть [toEat.declent_ru(ACCUSATIVE)]!")) return FALSE if(!toEat.instant_application) if(!do_after(user, 3 SECONDS, src, NONE)) return FALSE - visible_message("[user] forces [src] to [toEat.apply_method] [toEat].") + visible_message(span_warning("[user] заставля[pluralize_ru(user.gender, "ет", "ют")] [src] [toEat.apply_method]ть [toEat.declent_ru(ACCUSATIVE)]!")) return TRUE @@ -776,6 +773,8 @@ so that different stomachs can handle things in different ways VB*/ satiety -= toEat.junkiness if(toEat.consume_sound) playsound(loc, toEat.consume_sound, rand(10,50), 1) + if(toEat.has_special_eating_effects) + toEat.on_mob_eating_effect(src) if(toEat.reagents.total_volume) var/fraction = min(this_bite/toEat.reagents.total_volume, 1) if(fraction) @@ -912,7 +911,7 @@ so that different stomachs can handle things in different ways VB*/ /mob/living/carbon/can_change_move_intent(silent = FALSE) if(m_intent == MOVE_INTENT_WALK && legcuffed) if(!silent) - to_chat(src, span_notice("Ваши ноги скованы! Вы не можете бежать, пока не снимете [legcuffed.name]!")) + to_chat(src, span_warning("Ваши ноги скованы! Вы не сможете бежать, пока не снимете [legcuffed.declent_ru(ACCUSATIVE)].")) return FALSE return ..() @@ -962,3 +961,10 @@ so that different stomachs can handle things in different ways VB*/ co2overloadtime = 0 + +/mob/living/carbon/check_smart_brain() + var/obj/item/organ/internal/brain/mobs_brain = get_organ_slot(INTERNAL_ORGAN_BRAIN) + if(mobs_brain?.smart_mind) + return TRUE + + return ..() diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 5e762459b407..59c478d7843c 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -7,7 +7,7 @@ return ..() put_in_active_hand(AM) - visible_message(span_warning("[src] catches [AM]!")) + visible_message(span_warning("[src] лов[pluralize_ru(gender, "ит", "ят")] [AM.declent_ru(ACCUSATIVE)].")) throw_mode_off() SEND_SIGNAL(src, COMSIG_CARBON_THROWN_ITEM_CAUGHT, AM) return TRUE @@ -54,6 +54,9 @@ if(!iscarbon(user)) return + if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_HAND, user) & COMPONENT_CANCEL_ATTACK_CHAIN) + . = TRUE + for(var/datum/disease/virus/V in diseases) if(V.spread_flags & CONTACT) V.Contract(user, act_type = CONTACT, need_protection_check = TRUE, zone = user.hand ? BODY_ZONE_PRECISE_L_HAND : BODY_ZONE_PRECISE_R_HAND) @@ -78,7 +81,8 @@ if(M.powerlevel < 0) M.powerlevel = 0 - visible_message("The [M.name] has shocked [src]!", "The [M.name] has shocked you!") + visible_message(span_danger("[M.name] шокиру[pluralize_ru(M.gender, "ет", "ют")] [src]!"), \ + span_userdanger("[M.name] шокиру[pluralize_ru(M.gender, "ет", "ют")] вас!")) do_sparks(5, TRUE, src) var/power = (M.powerlevel + rand(0,3)) STATUS_EFFECT_CONSTANT diff --git a/code/modules/mob/living/carbon/carbon_emote.dm b/code/modules/mob/living/carbon/carbon_emote.dm index cf160f03a405..b849b4895970 100644 --- a/code/modules/mob/living/carbon/carbon_emote.dm +++ b/code/modules/mob/living/carbon/carbon_emote.dm @@ -244,14 +244,14 @@ grabbed_mob = user.pulling if(!held_item && !grabbed_mob) - to_chat(user, span_warning("You need something in your hand to use this emote!")) + user.balloon_alert(user, "вы ничего не держите!") return TRUE if(held_item) if(held_item.item_flags & ABSTRACT) - to_chat(user, span_warning("You cannot twirl [held_item.name]!")) + user.balloon_alert(user, "неподходящий предмет!") return TRUE - message = "верт%(ит,ят)% [held_item.name] в руках!" + message = "верт%(ит,ят)% [held_item.declent_ru(ACCUSATIVE)] в руках!" else if(grabbed_mob) message = "крут%(ит,ят)% [grabbed_mob.name], удерживая [genderize_ru(grabbed_mob.gender, "его", "её", "его", "их")] в захвате!" grabbed_mob.spin(32, 1) diff --git a/code/modules/mob/living/carbon/carbon_stripping.dm b/code/modules/mob/living/carbon/carbon_stripping.dm index 27ec3199c1eb..574174923732 100644 --- a/code/modules/mob/living/carbon/carbon_stripping.dm +++ b/code/modules/mob/living/carbon/carbon_stripping.dm @@ -42,11 +42,11 @@ var/obj/item/organ/internal/headpocket/pocket = H.get_int_organ(/obj/item/organ/internal/headpocket) if(!pocket.pocket.master_item) return - user.visible_message(span_danger("[user] is trying to remove something from [source]'s head!"), - span_danger("You start to dislodge whatever's inside [source]'s headpocket!")) + user.visible_message(span_danger("[user] пыта[pluralize_ru(user.gender, "ет", "ют")]ся достать что-то из головного кармана [source]!"), + span_danger("Вы пытаетесь достать предмет из головного кармана [source]!")) if(do_after(user, POCKET_STRIP_DELAY, source, max_interact_count = 1)) - user.visible_message(span_danger("[user] has dislodged something from [source]'s head!"), - span_danger("You have dislodged everything from [source]'s headpocket!")) + user.visible_message(span_danger("[user] доста[pluralize_ru(user.gender, "ёт", "ют")] что-то из головного кармана [source]!"), + span_danger("Вы достаёте предмет из головного кармана [source]!")) pocket.empty_contents() add_attack_logs(user, source, "Stripped of headpocket items", isLivingSSD(source) ? null : ATKLOG_ALL) return @@ -58,11 +58,11 @@ if(!istype(muzzle)) return if(!ishuman(user)) - to_chat(user, "You lack the ability to manipulate the lock.") + user.balloon_alert(user, "не получится!") return - muzzle.visible_message(span_danger("[user] tries to [muzzle.locked ? "unlock" : "lock"] [source]'s [muzzle.name]."), \ - span_userdanger("[user] tries to [muzzle.locked ? "unlock" : "lock"] [source]'s [muzzle.name].")) + muzzle.visible_message(span_danger("[user] пыта[pluralize_ru(user.gender, "ет", "ют")]ся [muzzle.locked ? "раз" : "за"]блокировать [muzzle.declent_ru(ACCUSATIVE)] [source]!"), \ + span_userdanger("[user] пыта[pluralize_ru(user.gender, "ет", "ют")]ся [muzzle.locked ? "раз" : "за"]блокировать [muzzle.declent_ru(ACCUSATIVE)] [source]!")) if(!do_after(user, POCKET_STRIP_DELAY, source, max_interact_count = 1)) return @@ -74,8 +74,8 @@ if(!success) return - muzzle.visible_message(span_danger("[user] [muzzle.locked ? "locks" : "unlocks"] [source]'s [muzzle.name]."), \ - span_userdanger("[user] [muzzle.locked ? "locks" : "unlocks"] [source]'s [muzzle.name].")) + muzzle.visible_message(span_danger("[user] [muzzle.locked ? "за" : "раз"]блокировал[genderize_ru(user.gender, "", "а", "о", "и")] [muzzle.declent_ru(ACCUSATIVE)] [source]!"), \ + span_userdanger("[user] [muzzle.locked ? "за" : "раз"]блокировал[genderize_ru(user.gender, "", "а", "о", "и")] [muzzle.declent_ru(ACCUSATIVE)] [source]!")) /datum/strippable_item/mob_item_slot/handcuffs @@ -134,7 +134,7 @@ var/mob/mob_source = source if(!mob_source.put_in_hand_check(equipping, which_hand)) - to_chat(user, span_warning("\The [equipping] doesn't fit in that place!")) + user.balloon_alert(user, "нет места!") return FALSE return TRUE diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index e94f2d3a65f4..b1673a6b9c82 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -463,6 +463,8 @@ continue if(!(dna.species.name in S.species_allowed)) //If the user is not of a species the marking style allows, skip it. Otherwise, add it to the list. continue + if(!S.pickable) //If our markings are unpickable in normal ways, skip it + continue if(location == "tail") if(!(bodypart_tail.dna.species.name in S.species_allowed)) //If the user is not of a species the marking style allows, skip it. Otherwise, add it to the list. continue diff --git a/code/modules/mob/living/carbon/human/body_accessories.dm b/code/modules/mob/living/carbon/human/body_accessories.dm index 6ba779049984..74a5cc990e24 100644 --- a/code/modules/mob/living/carbon/human/body_accessories.dm +++ b/code/modules/mob/living/carbon/human/body_accessories.dm @@ -120,9 +120,24 @@ GLOBAL_LIST_INIT(body_accessory_by_species, list()) allowed_species = list(SPECIES_VULPKANIN) //Wryn -/datum/body_accessory/tail/wryn +/datum/body_accessory/tail/bee name = "Bee Tail" - icon_state = "wryntail" + icon_state = "beetail" + allowed_species = list(SPECIES_WRYN) + +/datum/body_accessory/tail/roach + name = "Cockroach Tail" + icon_state = "roachtail" + allowed_species = list(SPECIES_WRYN) + +/datum/body_accessory/tail/wasp + name = "Wasp Tail" + icon_state = "wasptail" + allowed_species = list(SPECIES_WRYN) + +/datum/body_accessory/tail/wasper + name = "Wasper Tail" + icon_state = "waspertail" allowed_species = list(SPECIES_WRYN) //Nian diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 1f0cefb8662c..ff6e8d6f2aed 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -187,3 +187,10 @@ for(var/trait_source in GET_TRAIT_SOURCES(src, TRAIT_NO_CLONE)) REMOVE_TRAIT(src, TRAIT_NO_CLONE, trait_source) +/mob/living/carbon/human/proc/make_nugget(mob/living) + for(var/obj/item/organ/external/limb as anything in bodyparts) + if(limb.limb_body_flag == LEG_RIGHT || limb.limb_body_flag == LEG_LEFT || limb.limb_body_flag == ARM_RIGHT || limb.limb_body_flag == ARM_LEFT) + limb.droplimb() + emote("scream") + playsound(src, 'sound/misc/desceration-03.ogg', 70) + diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 1cfac94b1984..ace857528533 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -28,7 +28,7 @@ skipeyes |= wear_mask.flags_inv & HIDEGLASSES skipears |= wear_mask.flags_inv & HIDEHEADSETS - var/msg = "This is " + var/msg = "Это " if(!(skipjumpsuit && skipface) && icon) //big suits/masks/helmets make it hard to tell their gender msg += "[bicon(icon(icon, dir=SOUTH))] " //fucking BYOND: this should stop dreamseeker crashing if we -somehow- examine somebody before their icon is generated @@ -39,143 +39,143 @@ if(skipjumpsuit && (skipface || HAS_TRAIT(src, TRAIT_NO_SPECIES_EXAMINE))) //either obscured or on the nospecies list msg += "!\n" //omit the species when examining else if(displayed_species == SPECIES_SLIMEPERSON) //snowflakey because Slime People are defined as a plural - msg += ", a slime person!\n" + msg += ", слаймолюд!\n" else if(displayed_species == SPECIES_UNATHI) //DAMN YOU, VOWELS - msg += ", a unathi!\n" + msg += ", унатх!\n" else - msg += ", a [lowertext(displayed_species)]!\n" + msg += ", [lowertext(displayed_species)]!\n" //uniform if(w_uniform && !skipjumpsuit && !(w_uniform.item_flags & ABSTRACT)) //Ties var/tie_msg if(istype(w_uniform, /obj/item/clothing/under) && LAZYLEN(w_uniform.accessories)) - tie_msg += " with [english_accessory_list(w_uniform)]" + tie_msg += " c [accessory_list(w_uniform)]" if(w_uniform.blood_DNA) - msg += "[p_they(TRUE)] [p_are()] wearing [bicon(w_uniform)] [w_uniform.gender==PLURAL?"some":"a"] [w_uniform.blood_color != "#030303" ? "blood-stained":"oil-stained"] [w_uniform.name][tie_msg]!\n" + msg += span_warning("[genderize_ru(gender, "Он носит", "Она носит", "Оно носит", "Они носят")] [bicon(w_uniform)] [w_uniform.declent_ru(ACCUSATIVE)] [w_uniform.blood_color != "#030303" ? "со следами крови":"со следами масла"][tie_msg]!\n") else - msg += "[p_they(TRUE)] [p_are()] wearing [bicon(w_uniform)] \a [w_uniform][tie_msg].\n" + msg += "[genderize_ru(gender, "Он носит", "Она носит", "Оно носит", "Они носят")] [bicon(w_uniform)] [w_uniform.declent_ru(ACCUSATIVE)].\n" //head if(head && !(head.item_flags & ABSTRACT)) if(head.blood_DNA) - msg += "[p_they(TRUE)] [p_are()] wearing [bicon(head)] [head.gender==PLURAL?"some":"a"] [head.blood_color != "#030303" ? "blood-stained":"oil-stained"] [head.name] on [p_their()] head!\n" + msg += span_warning("[genderize_ru(gender, "Он носит", "Она носит", "Оно носит", "Они носят")] [bicon(head)] [head.declent_ru(ACCUSATIVE)] [head.blood_color != "#030303" ? "со следами крови":"со следами масла"] на голове!\n") else - msg += "[p_they(TRUE)] [p_are()] wearing [bicon(head)] \a [head] on [p_their()] head.\n" + msg += "[genderize_ru(gender, "Он носит", "Она носит", "Оно носит", "Они носят")] [bicon(head)] [head.declent_ru(ACCUSATIVE)] на голове.\n" //neck if(neck && !(neck.item_flags & ABSTRACT)) if(neck.blood_DNA) - msg += "[p_they(TRUE)] [p_are()] wearing [bicon(neck)] [neck.gender==PLURAL?"some":"a"] [neck.blood_color != "#030303" ? "blood-stained":"oil-stained"] [neck.name] around [p_their()] neck!\n" + msg += span_warning("[genderize_ru(gender, "Он носит", "Она носит", "Оно носит", "Они носят")] [bicon(neck)] [neck.declent_ru(ACCUSATIVE)] [neck.blood_color != "#030303" ? "со следами крови":"со следами масла"] на шее!\n") else - msg += "[p_they(TRUE)] [p_are()] wearing [bicon(neck)] \a [neck] around [p_their()] neck.\n" + msg += "[genderize_ru(gender, "Он носит", "Она носит", "Оно носит", "Они носят")] [bicon(neck)] [neck.declent_ru(ACCUSATIVE)] на шее.\n" //suit/armour if(wear_suit && !(wear_suit.item_flags & ABSTRACT)) if(wear_suit.blood_DNA) - msg += "[p_they(TRUE)] [p_are()] wearing [bicon(wear_suit)] [wear_suit.gender==PLURAL?"some":"a"] [wear_suit.blood_color != "#030303" ? "blood-stained":"oil-stained"] [wear_suit.name]!\n" + msg += span_warning("[genderize_ru(gender, "Он носит", "Она носит", "Оно носит", "Они носят")] [bicon(wear_suit)] [wear_suit.declent_ru(ACCUSATIVE)] [wear_suit.blood_color != "#030303" ? "со следами крови":"со следами масла"]!\n") else - msg += "[p_they(TRUE)] [p_are()] wearing [bicon(wear_suit)] \a [wear_suit].\n" + msg += "[genderize_ru(gender, "Он носит", "Она носит", "Оно носит", "Они носят")] [bicon(wear_suit)] [wear_suit.declent_ru(ACCUSATIVE)].\n" //suit/armour storage if(s_store && !skipsuitstorage) if(s_store.blood_DNA) - msg += "[p_they(TRUE)] [p_are()] carrying [bicon(s_store)] [s_store.gender==PLURAL?"some":"a"] [s_store.blood_color != "#030303" ? "blood-stained":"oil-stained"] [s_store.name] on [p_their()] [wear_suit.name]!\n" + msg += span_warning("На [genderize_ru(gender, "его", "её", "его", "их")] [bicon(wear_suit)] [wear_suit.declent_ru(PREPOSITIONAL)] вис[pluralize_ru(s_store.gender, "ит", "ят")] [s_store.declent_ru(NOMINATIVE)] [s_store.blood_color != "#030303" ? "со следами крови":"со следами масла"]!\n") else - msg += "[p_they(TRUE)] [p_are()] carrying [bicon(s_store)] \a [s_store] on [p_their()] [wear_suit.name].\n" + msg += "На [genderize_ru(gender, "его", "её", "его", "их")] [bicon(wear_suit)] [wear_suit.declent_ru(PREPOSITIONAL)] вис[pluralize_ru(s_store.gender, "ит", "ят")] [s_store.declent_ru(NOMINATIVE)].\n" //back if(back && !(back.item_flags & ABSTRACT)) if(back.blood_DNA) - msg += "[p_they(TRUE)] [p_have()] [bicon(back)] [back.gender==PLURAL?"some":"a"] [back.blood_color != "#030303" ? "blood-stained":"oil-stained"] [back] on [p_their()] back.\n" + msg += span_warning("На [genderize_ru(gender, "его", "её", "его", "их")] спине вис[pluralize_ru(back.gender, "ит", "ят")] [bicon(back)] [back.declent_ru(NOMINATIVE)] [back.blood_color != "#030303" ? "со следами крови":"со следами масла"]!\n") else - msg += "[p_they(TRUE)] [p_have()] [bicon(back)] \a [back] on [p_their()] back.\n" + msg += "На [genderize_ru(gender, "его", "её", "его", "их")] спине вис[pluralize_ru(back.gender, "ит", "ят")] [bicon(back)] [back.declent_ru(NOMINATIVE)].\n" //left hand if(l_hand && !(l_hand.item_flags & ABSTRACT)) if(l_hand.blood_DNA) - msg += "[p_they(TRUE)] [p_are()] holding [bicon(l_hand)] [l_hand.gender==PLURAL?"some":"a"] [l_hand.blood_color != "#030303" ? "blood-stained":"oil-stained"] [l_hand.name] in [p_their()] left hand!\n" + msg += span_warning("[genderize_ru(gender, "Он держит", "Она держит", "Оно держит", "Они держат")] [bicon(l_hand)] [l_hand.declent_ru(ACCUSATIVE)] [l_hand.blood_color != "#030303" ? "со следами крови":"со следами масла"] в левой руке!\n") else - msg += "[p_they(TRUE)] [p_are()] holding [bicon(l_hand)] \a [l_hand] in [p_their()] left hand.\n" + msg += "[genderize_ru(gender, "Он держит", "Она держит", "Оно держит", "Они держат")] [bicon(l_hand)] [l_hand.declent_ru(ACCUSATIVE)] в левой руке.\n" //right hand if(r_hand && !(r_hand.item_flags & ABSTRACT)) if(r_hand.blood_DNA) - msg += "[p_they(TRUE)] [p_are()] holding [bicon(r_hand)] [r_hand.gender==PLURAL?"some":"a"] [r_hand.blood_color != "#030303" ? "blood-stained":"oil-stained"] [r_hand.name] in [p_their()] right hand!\n" + msg += span_warning("[genderize_ru(gender, "Он держит", "Она держит", "Оно держит", "Они держат")] [bicon(r_hand)] [r_hand.declent_ru(ACCUSATIVE)] [r_hand.blood_color != "#030303" ? "со следами крови":"со следами масла"] в правой руке!\n") else - msg += "[p_they(TRUE)] [p_are()] holding [bicon(r_hand)] \a [r_hand] in [p_their()] right hand.\n" + msg += "[genderize_ru(gender, "Он держит", "Она держит", "Оно держит", "Они держат")] [bicon(r_hand)] [r_hand.declent_ru(ACCUSATIVE)] в правой руке.\n" //gloves if(!skipgloves) if(gloves && !(gloves.item_flags & ABSTRACT)) if(gloves.blood_DNA) - msg += "[p_they(TRUE)] [p_have()] [bicon(gloves)] [gloves.gender==PLURAL?"some":"a"] [gloves.blood_color != "#030303" ? "blood-stained":"oil-stained"] [gloves.name] on [p_their()] hands!\n" + msg += span_warning("На [genderize_ru(gender, "его", "её", "его", "их")] руках [bicon(gloves)] [gloves.declent_ru(NOMINATIVE)] [gloves.blood_color != "#030303" ? "со следами крови":"со следами масла"]!\n") else - msg += "[p_they(TRUE)] [p_have()] [bicon(gloves)] \a [gloves] on [p_their()] hands.\n" + msg += "На [genderize_ru(gender, "его", "её", "его", "их")] руках [bicon(gloves)] [gloves.declent_ru(NOMINATIVE)].\n" else if(blood_DNA) - msg += "[p_they(TRUE)] [p_have()] [hand_blood_color != "#030303" ? "blood-stained":"oil-stained"] hands!\n" + msg += span_warning("[genderize_ru(gender, "Его", "Её", "Его", "Их")] руки [hand_blood_color != "#030303" ? "измазаны в крови":"измазаны в масле"]!\n") else if(isclocker(src) && HAS_TRAIT(src, CLOCK_HANDS)) - msg += "[p_their(TRUE)] hands are sparkling with an unnatural amber!\n" + msg += span_clockitalic("[genderize_ru(gender, "Его", "Её", "Его", "Их")] руки сверкают янтарём!\n") //handcuffed? if(handcuffed) if(istype(handcuffed, /obj/item/restraints/handcuffs/cable/zipties)) - msg += "[p_they(TRUE)] [p_are()] [bicon(handcuffed)] restrained with zipties!\n" + msg += span_warning("[genderize_ru(gender, "Он", "Она", "Оно", "Они")] [bicon(handcuffed)] скован[genderize_ru(gender, "", "а", "о", "ы")] стяжками!\n") else if(istype(handcuffed, /obj/item/restraints/handcuffs/cable)) - msg += "[p_they(TRUE)] [p_are()] [bicon(handcuffed)] restrained with cable!\n" + msg += span_warning("[genderize_ru(gender, "Он", "Она", "Оно", "Они")] [bicon(handcuffed)] скован[genderize_ru(gender, "", "а", "о", "ы")] самодельными стяжками!\n") else - msg += "[p_they(TRUE)] [p_are()] [bicon(handcuffed)] handcuffed!\n" + msg += span_warning("[genderize_ru(gender, "Он", "Она", "Оно", "Они")] [bicon(handcuffed)] скован[genderize_ru(gender, "", "а", "о", "ы")] наручниками!\n") //belt if(belt) if(belt.blood_DNA) - msg += "[p_they(TRUE)] [p_have()] [bicon(belt)] [belt.gender==PLURAL?"some":"a"] [belt.blood_color != "#030303" ? "blood-stained":"oil-stained"] [belt.name] about [p_their()] waist!\n" + msg += span_warning("На [genderize_ru(gender, "его", "её", "его", "их")] талии вис[pluralize_ru(belt.gender, "ит", "ят")] [bicon(belt)] [belt.declent_ru(NOMINATIVE)] [belt.blood_color != "#030303" ? "со следами крови":"со следами масла"]!\n") else - msg += "[p_they(TRUE)] [p_have()] [bicon(belt)] \a [belt] about [p_their()] waist.\n" + msg += "На [genderize_ru(gender, "его", "её", "его", "их")] талии вис[pluralize_ru(belt.gender, "ит", "ят")] [bicon(belt)] [belt.declent_ru(NOMINATIVE)].\n" //shoes if(!skipshoes) if(shoes && !(shoes.item_flags & ABSTRACT)) if(shoes.blood_DNA) - msg += "[p_they(TRUE)] [p_are()] wearing [bicon(shoes)] [shoes.gender==PLURAL?"some":"a"] [shoes.blood_color != "#030303" ? "blood-stained":"oil-stained"] [shoes.name] on [p_their()] feet!\n" + msg += span_warning("[genderize_ru(gender, "Он носит", "Она носит", "Оно носит", "Они носят")] [bicon(shoes)] [shoes.declent_ru(ACCUSATIVE)] [shoes.blood_color != "#030303" ? "со следами крови":"со следами масла"] на ногах!\n") else - msg += "[p_they(TRUE)] [p_are()] wearing [bicon(shoes)] \a [shoes] on [p_their()] feet.\n" + msg += "[genderize_ru(gender, "Он носит", "Она носит", "Оно носит", "Они носят")] [bicon(shoes)] [shoes.declent_ru(ACCUSATIVE)] на ногах.\n" else if(blood_DNA) - msg += "[p_they(TRUE)] [p_have()] [feet_blood_color != "#030303" ? "blood-stained":"oil-stained"] feet!\n" + msg += span_warning("[genderize_ru(gender, "Его", "Её", "Его", "Их")] ступни [hand_blood_color != "#030303" ? "измазаны в крови":"измазаны в масле"]!\n") //legcuffed? if(legcuffed) - msg += "[p_they(TRUE)] [p_are()] [bicon(legcuffed)] restrained with [legcuffed]!\n" + msg += span_warning("[genderize_ru(gender, "Его", "Её", "Его", "Их")] ноги [bicon(legcuffed)] скованы [legcuffed.declent_ru(INSTRUMENTAL)]!\n") //mask if(wear_mask && !skipmask && !(wear_mask.item_flags & ABSTRACT)) if(wear_mask.blood_DNA) - msg += "[p_they(TRUE)] [p_have()] [bicon(wear_mask)] [wear_mask.gender==PLURAL?"some":"a"] [wear_mask.blood_color != "#030303" ? "blood-stained":"oil-stained"] [wear_mask.name] on [p_their()] face!\n" + msg += span_warning("[genderize_ru(gender, "Он носит", "Она носит", "Оно носит", "Они носят")] [bicon(wear_mask)] [wear_mask.declent_ru(ACCUSATIVE)] [wear_mask.blood_color != "#030303" ? "со следами крови":"со следами масла"] на лице!\n") else - msg += "[p_they(TRUE)] [p_have()] [bicon(wear_mask)] \a [wear_mask] on [p_their()] face.\n" + msg += "[genderize_ru(gender, "Он носит", "Она носит", "Оно носит", "Они носят")] [bicon(wear_mask)] [wear_mask.declent_ru(ACCUSATIVE)] на лице.\n" //eyes if(!skipeyes) if(glasses && !(glasses.item_flags & ABSTRACT)) if(glasses.blood_DNA) - msg += "[p_they(TRUE)] [p_have()] [bicon(glasses)] [glasses.gender==PLURAL?"some":"a"] [glasses.blood_color != "#030303" ? "blood-stained":"oil-stained"] [glasses] covering [p_their()] eyes!\n" + msg += span_warning("[genderize_ru(gender, "Его", "Её", "Его", "Их")] глаза закрыты [bicon(glasses)] [glasses.declent_ru(INSTRUMENTAL)] [glasses.blood_color != "#030303" ? "со следами крови":"со следами масла"]!\n") else - msg += "[p_they(TRUE)] [p_have()] [bicon(glasses)] \a [glasses] covering [p_their()] eyes.\n" + msg += "[genderize_ru(gender, "Его", "Её", "Его", "Их")] глаза закрыты [bicon(glasses)] [glasses.declent_ru(INSTRUMENTAL)].\n" else if(iscultist(src) && HAS_TRAIT(src, CULT_EYES) && get_int_organ(/obj/item/organ/internal/eyes)) - msg += "[p_their(TRUE)] eyes are glowing an unnatural red!\n" + msg += span_boldwarning("[genderize_ru(gender, "Его", "Её", "Его", "Их")] глаза неестественно горят кроваво-красным!\n") //left ear if(l_ear && !skipears) - msg += "[p_they(TRUE)] [p_have()] [bicon(l_ear)] \a [l_ear] on [p_their()] left ear.\n" + msg += "[genderize_ru(gender, "Он носит", "Она носит", "Оно носит", "Они носят")] [bicon(l_ear)] [l_ear.declent_ru(ACCUSATIVE)] на левом ухе.\n" //right ear if(r_ear && !skipears) - msg += "[p_they(TRUE)] [p_have()] [bicon(r_ear)] \a [r_ear] on [p_their()] right ear.\n" + msg += "[genderize_ru(gender, "Он носит", "Она носит", "Оно носит", "Они носят")] [bicon(r_ear)] [r_ear.declent_ru(ACCUSATIVE)] на правом ухе.\n" //ID if(wear_id) - msg += "[p_they(TRUE)] [p_are()] wearing [bicon(wear_id)] \a [wear_id].\n" + msg += "[genderize_ru(gender, "Он носит", "Она носит", "Оно носит", "Они носят")] [bicon(wear_id)] [wear_id.declent_ru(ACCUSATIVE)].\n" //Status effects var/status_examines = get_status_effect_examinations() @@ -355,7 +355,7 @@ var/obj/item/organ/internal/cyberimp/tail/blade/implant = get_organ_slot(INTERNAL_ORGAN_TAIL_DEVICE) if(istype(implant) && implant.activated) - msg += "You can see a strange glint on [p_their()] tail.\n" + msg += "Вы замечаете странный [implant.biological ? "нарост" : "блеск"] на [genderize_ru(gender, "его", "её", "его", "их")] хвосте.\n" if(decaylevel == 1) msg += "[p_they(TRUE)] [p_are()] starting to smell.\n" @@ -473,6 +473,9 @@ if(CIH?.examine_extensions) have_hud_exam |= CIH.examine_extensions + if(H.check_smart_brain()) + have_hud_exam |= EXAMINE_HUD_SCIENCE + return (have_hud_exam & hud_exam) else if(isrobot(M) || isAI(M)) //Stand-in/Stopgap to prevent pAIs from freely altering records, pending a more advanced Records system diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 8c4e4cd1eb06..d960c79286b7 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -31,6 +31,7 @@ QDEL_LIST(bodyparts) SSmobs.cubemonkeys -= src GLOB.human_list -= src + SEND_SIGNAL(src, COMSIG_HUMAN_DESTROYED) return ..() @@ -335,7 +336,7 @@ if(stat == DEAD) return SEND_SIGNAL(src, COMSIG_ATOM_BLOB_ACT, B) - show_message("The blob attacks you!") + show_message(span_userdanger("The blob attacks you!")) var/dam_zone = list( BODY_ZONE_CHEST, BODY_ZONE_PRECISE_GROIN, @@ -350,8 +351,7 @@ BODY_ZONE_PRECISE_R_FOOT, ) var/obj/item/organ/external/affecting = get_organ(ran_zone(dam_zone)) - apply_damage(5, BRUTE, affecting, run_armor_check(affecting, "melee")) - + apply_damage(5, BRUTE, affecting, run_armor_check(affecting, MELEE)) // Get rank from ID from hands, wear_id, pda, and then from uniform /mob/living/carbon/human/proc/get_authentification_rank(var/if_no_id = "No id", var/if_no_job = "No job") @@ -1454,12 +1454,18 @@ Eyes need to have significantly high darksight to shine unless the mob has the X to_chat(src, "\The [S] pulls \the [hand] from your grip!") apply_effect(current_size * 3, IRRADIATE) -/mob/living/carbon/human/narsie_act(obj/singularity/narsie/narsie) +/mob/living/carbon/human/narsie_act(obj/singularity/god/narsie/narsie) if(iswizard(src) && iscultist(src)) //Wizard cultists are immune to narsie because it would prematurely end the wiz round that's about to end by the automated shuttle call anyway return - narsie.soul_devoured += 1 + if(narsie) + narsie.soul_devoured++ ..() +/mob/living/carbon/human/ratvar_act(weak, obj/singularity/god/ratvar/ratvar) + if(ratvar) + ratvar.soul_devoured++ + . = ..() + /mob/living/carbon/human/proc/do_cpr(mob/living/carbon/human/H) if(H == src) to_chat(src, "You cannot perform CPR on yourself!") @@ -1550,26 +1556,26 @@ Eyes need to have significantly high darksight to shine unless the mob has the X /mob/living/carbon/human/selfFeed(obj/item/reagent_containers/food/toEat, fullness) if(!istype(toEat, /obj/item/reagent_containers/food/pill/patch) && !check_has_mouth()) - to_chat(src, "Where do you intend to put [toEat]? You don't have a mouth!") + balloon_alert(src, "у вас нет рта!") //but I must scream return FALSE return ..() /mob/living/carbon/human/forceFed(obj/item/reagent_containers/food/toEat, mob/user, fullness) if(!istype(toEat, /obj/item/reagent_containers/food/pill/patch) && !check_has_mouth()) if(!((istype(toEat, /obj/item/reagent_containers/food/drinks) && (ismachineperson(src))))) - to_chat(user, "Where do you intend to put [toEat]? [src] doesn't have a mouth!") + balloon_alert(user, "у цели нет рта!") return FALSE return ..() /mob/living/carbon/human/selfDrink(obj/item/reagent_containers/food/drinks/toDrink) if(!check_has_mouth()) if(!ismachineperson(src)) - to_chat(src, "Where do you intend to put \the [src]? You don't have a mouth!") + balloon_alert(src, "у вас нет рта!") return FALSE else - to_chat(src, "You pour a bit of liquid from [toDrink] into your connection port.") + to_chat(src, span_notice("Вы заливете часть содержимого [toDrink.declent_ru(GENITIVE)] в свой отсек для жидкостей.")) else - to_chat(src, "You swallow a gulp of [toDrink].") + to_chat(src, span_notice("Вы делаете глоток из [toDrink.declent_ru(GENITIVE)].")) return TRUE /mob/living/carbon/human/can_track(mob/living/user) @@ -1590,8 +1596,10 @@ Eyes need to have significantly high darksight to shine unless the mob has the X return ..() -/mob/living/carbon/human/proc/get_age_pitch(var/tolerance = 5) - return 1.0 + 0.5*(30 - age)/80 + (0.01*rand(-tolerance,tolerance)) + +/mob/living/carbon/human/proc/get_age_pitch(tolerance = 5) + return dna?.species.get_emote_pitch(src, tolerance) || 1.0 + 0.5 * (30 - age) / 80 + (0.01 * rand(-tolerance, tolerance)) + /mob/living/carbon/human/get_access_locations() . = ..() @@ -1605,7 +1613,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X . = ..() if(check_gun.trigger_guard == TRIGGER_GUARD_NORMAL && HAS_TRAIT(src, TRAIT_NO_GUNS)) - balloon_alert(src, span_warning("слишком толстые пальцы")) + balloon_alert(src, span_warning("слишком толстые пальцы!")) return FALSE if(mind && mind.martial_art && mind.martial_art.no_guns) //great dishonor to famiry @@ -1767,46 +1775,6 @@ Eyes need to have significantly high darksight to shine unless the mob has the X if(LAZYIN(mind.curses, "high_rp")) // Probably need to make a new proc to handle curses in case if there will be new ones curse_high_rp() -/mob/living/carbon/human/proc/influenceSin() - if(!mind) - return - - var/datum/objective/sintouched/sin_objective - - switch(rand(1,7))//traditional seven deadly sins... except lust. - if(1) // acedia - add_game_logs("[src] was influenced by the sin of Acedia.", src) - sin_objective = new /datum/objective/sintouched/acedia - if(2) // Gluttony - add_game_logs("[src] was influenced by the sin of gluttony.", src) - sin_objective = new /datum/objective/sintouched/gluttony - if(3) // Greed - add_game_logs("[src] was influenced by the sin of greed.", src) - sin_objective = new /datum/objective/sintouched/greed - if(4) // sloth - add_game_logs("[src] was influenced by the sin of sloth.", src) - sin_objective = new /datum/objective/sintouched/sloth - if(5) // Wrath - add_game_logs("[src] was influenced by the sin of wrath.", src) - sin_objective = new /datum/objective/sintouched/wrath - if(6) // Envy - add_game_logs("[src] was influenced by the sin of envy.", src) - sin_objective = new /datum/objective/sintouched/envy - if(7) // Pride - add_game_logs("[src] was influenced by the sin of pride.", src) - sin_objective = new /datum/objective/sintouched/pride - - sin_objective.init_sin(src) - LAZYADD(SSticker.mode.sintouched, mind) - LAZYADD(mind.objectives, sin_objective) - - var/obj_count = 1 - to_chat(src, span_notice("Your current objectives:")) - - for(var/datum/objective/objective in mind.objectives) - to_chat(src, "Objective #[obj_count]: [objective.explanation_text]") - obj_count++ - /mob/living/carbon/human/is_literate() return getBrainLoss() < 100 @@ -1973,3 +1941,6 @@ Eyes need to have significantly high darksight to shine unless the mob has the X return return buckle_mob(target, TRUE, FALSE, CARRIER_NEEDS_ARM) //checkloc is false because we usually grab people from nearest tile + +/mob/living/carbon/human/monkeybrain + ai_controller = /datum/ai_controller/monkey diff --git a/code/modules/mob/living/carbon/human/human_deadchat_control.dm b/code/modules/mob/living/carbon/human/human_deadchat_control.dm new file mode 100644 index 000000000000..d30628a0eebe --- /dev/null +++ b/code/modules/mob/living/carbon/human/human_deadchat_control.dm @@ -0,0 +1,143 @@ +// Custom human behavior for deadchat control + + +/mob/living/carbon/human/proc/dchat_emote() + var/list/possible_emotes = list("scream", "clap", "snap", "crack", "dap", "burp") + emote(pick(possible_emotes), intentional = TRUE) + +/mob/living/carbon/human/proc/dchat_attack(intent) + var/turf/ahead = get_turf(get_step(src, dir)) + var/atom/victim = locate(/mob/living) in ahead + var/obj/item/in_hand = get_active_hand() + var/implement = "[isnull(in_hand) ? "кулаками" : in_hand.declent_ru(INSTRUMENTAL)]" + if(!victim) + victim = locate(/obj/structure) in ahead + if(!victim) + switch(intent) + if(INTENT_HARM) + visible_message(span_warning("[capitalize(declent_ru(NOMINATIVE))] дико [pluralize_ru(gender, "бьёт", "бьют")] [implement]!")) + if(INTENT_HELP) + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] кажется, дела[pluralize_ru(gender, "ет", "ют")] глубокий вдох.")) + return + implement = "[isnull(in_hand) ? "кулаки" : in_hand.declent_ru(ACCUSATIVE)]" + if(isLivingSSD(victim)) + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] [intent == INTENT_HARM ? "неохотно " : ""] опуска[pluralize_ru(gender, "ет", "ют")] [implement].")) + return + + var/original_intent = a_intent + a_intent = intent + if(in_hand) + in_hand.melee_attack_chain(src, victim) + else + UnarmedAttack(victim, TRUE) + a_intent = original_intent + +/mob/living/carbon/human/proc/dchat_resist() + if(!can_resist()) + visible_message(span_warning("[capitalize(declent_ru(NOMINATIVE))] кажется, ничего не cмо[pluralize_ru(gender, "жет", "гут")] сделать!")) + return + if(!HAS_TRAIT(src, TRAIT_RESTRAINED)) + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] кажется, ничего особенного не дела[pluralize_ru(gender, "ет", "ют")].")) + return + + visible_message(span_warning("[capitalize(declent_ru(NOMINATIVE))] пыта[pluralize_ru(gender, "ет", "ют")]ся освободиться!")) + resist() + +/mob/living/carbon/human/proc/dchat_pickup() + var/turf/ahead = get_step(src, dir) + var/obj/item/thing = locate(/obj/item) in ahead + if(!thing) + return + + var/old_loc = thing.loc + var/obj/item/in_hand = get_active_hand() + + if(in_hand) + if(HAS_TRAIT(in_hand, TRAIT_NODROP)) + visible_message(span_warning("[capitalize(declent_ru(NOMINATIVE))] пыта[pluralize_ru(gender, "ет", "ют")]ся выпустить [in_hand.declent_ru(ACCUSATIVE)], но кажется, что [genderize_ru(in_hand.gender, "он застрял", "она застряла", "оно зястряло", "они застряли")] в руке!")) + return + if(in_hand.flags & ABSTRACT) + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] кажется, что у [genderize_ru(gender, "него", "неё", "него", "них")] заняты руки!")) + return + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] броса[pluralize_ru(gender, "ет", "ют")] [in_hand.declent_ru(ACCUSATIVE)] и поднимает [thing.declent_ru(ACCUSATIVE)]!")) + do_unEquip(in_hand) + in_hand.forceMove(old_loc) + else + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] поднима[pluralize_ru(gender, "ет", "ют")] [thing.declent_ru(ACCUSATIVE)]!")) + put_in_active_hand(thing) + +/mob/living/carbon/human/proc/dchat_throw() + var/obj/item/in_hand = get_active_hand() + if(!in_hand || in_hand.flags & ABSTRACT) + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] дела[pluralize_ru(gender, "ет", "ют")] движение, похожее на бросок!")) + return + var/atom/possible_target + var/cur_turf = get_turf(src) + for(var/i in 1 to 5) + cur_turf = get_step(cur_turf, dir) + possible_target = locate(/mob/living) in cur_turf + if(possible_target) + break + + possible_target = locate(/obj/structure) in cur_turf + if(possible_target) + break + + if(!possible_target) + possible_target = cur_turf + if(HAS_TRAIT(in_hand, TRAIT_NODROP)) + visible_message(span_warning("[capitalize(declent_ru(NOMINATIVE))] пыта[pluralize_ru(gender, "ет", "ют")]ся бросить [in_hand.declent_ru(ACCUSATIVE)][isturf(possible_target) ? "" : " в сторону [possible_target]"], но [genderize_ru(gender, "он", "она", "оно", "они")] не отрыва[pluralize_ru(gender, "ет", "ют")]ся от руки!")) + return + throw_item(possible_target) + +/mob/living/carbon/human/proc/dchat_shove() + var/turf/ahead = get_turf(get_step(src, dir)) + var/mob/living/carbon/human/H = locate(/mob/living/carbon/human) in ahead + if(!H) + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] пыта[pluralize_ru(gender, "ет", "ют")]ся что-то отодвинуть в сторону!")) + return + dna?.species.disarm(src, H) + +/mob/living/carbon/human/proc/dchat_shoot() + + var/atom/possible_target + var/cur_turf = get_turf(src) + for(var/i in 1 to 5) + cur_turf = get_step(cur_turf, dir) + possible_target = locate(/mob/living) in cur_turf + if(possible_target) + break + + if(!possible_target) + possible_target = cur_turf + + var/obj/item/gun/held_gun = get_active_hand() + if(!held_gun) + visible_message(span_warning("[capitalize(declent_ru(NOMINATIVE))] направля[pluralize_ru(gender, "ет", "ют")] палец в форме пистолета в сторону [possible_target.declent_ru(GENITIVE)]!")) + return + if(!istype(held_gun)) + visible_message(span_warning("[capitalize(declent_ru(NOMINATIVE))] направля[pluralize_ru(gender, "ет", "ют")] [held_gun.declent_ru(ACCUSATIVE)] в сторону [possible_target.declent_ru(GENITIVE)]!")) + return + // for his neutral special, he wields a Gun + held_gun.afterattack(possible_target, src) + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] стреля[pluralize_ru(gender, "ет", "ют")] из [held_gun.declent_ru(GENITIVE)][isturf(possible_target) ? "" : " в сторону [possible_target.declent_ru(GENITIVE)]!"]")) + +/mob/living/carbon/human/proc/dchat_step(dir) + if(length(pulledby)) + resist_grab() + step(src, dir) + + +/mob/living/carbon/human/deadchat_plays(mode = DEADCHAT_DEMOCRACY_MODE, cooldown = 7 SECONDS) + var/list/inputs = list( + "эмоция" = CALLBACK(src, PROC_REF(dchat_emote)), + "атака" = CALLBACK(src, PROC_REF(dchat_attack), INTENT_HARM), + "помощь" = CALLBACK(src, PROC_REF(dchat_attack), INTENT_HELP), + "бросок" = CALLBACK(src, PROC_REF(dchat_throw)), + "выстрел" = CALLBACK(src, PROC_REF(dchat_shoot)), + "поднять" = CALLBACK(src, PROC_REF(dchat_pickup)), + "обезоружить" = CALLBACK(src, PROC_REF(dchat_shove)), + "сопротивляться" = CALLBACK(src, PROC_REF(dchat_resist)), + ) + + AddComponent(/datum/component/deadchat_control/human, mode, inputs, cooldown) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 7f463abfa0c2..13069bd6ebd4 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -9,7 +9,7 @@ emp_act */ -/mob/living/carbon/human/bullet_act(obj/item/projectile/P, def_zone) +/mob/living/carbon/human/bullet_act(obj/projectile/P, def_zone) if(!dna.species.bullet_act(P, src)) add_attack_logs(P.firer, src, "hit by [P.type] but got deflected by species '[dna.species]'") return FALSE @@ -21,18 +21,19 @@ emp_act if(1) // proper reflection reflected = TRUE if(2) //If target is holding a toy sword - var/static/list/safe_list = list(/obj/item/projectile/beam/lasertag, /obj/item/projectile/beam/practice) + var/static/list/safe_list = list(/obj/projectile/beam/lasertag, /obj/projectile/beam/practice) reflected = is_type_in_list(P, safe_list) //And it's safe if(reflected) - visible_message("The [P.name] gets reflected by [src]!", \ - "The [P.name] gets reflected by [src]!") + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] отражает [P.declent_ru(ACCUSATIVE)]!"), \ + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] отражает [P.declent_ru(ACCUSATIVE)]!"),\ + projectile_message = TRUE) add_attack_logs(P.firer, src, "hit by [P.type] but got reflected") P.reflect_back(src) return -1 //Shields - if(check_shields(P, P.damage, "the [P.name]", PROJECTILE_ATTACK, P.armour_penetration)) + if(check_shields(P, P.damage, "[P.declent_ru(ACCUSATIVE)]", PROJECTILE_ATTACK, P.armour_penetration)) P.on_hit(src, 100, def_zone) return 2 @@ -45,8 +46,8 @@ emp_act if(!creeping_widow.check_katana(mind.current)) checks_passed = FALSE if(checks_passed) - visible_message("The [P.name] gets reflected by [src]!", \ - "The [P.name] gets reflected by [src]!") + visible_message(span_danger("[src] отража[pluralize_ru(src.gender, "ет", "ют")] [P.declent_ru(ACCUSATIVE)]!"), \ + span_userdanger("[src] отража[pluralize_ru(src.gender, "ет", "ют")] [P.declent_ru(ACCUSATIVE)]!")) add_attack_logs(P.firer, src, "hit by [P.type] but got reflected by martial arts '[mind.martial_art]'") P.reflect_back(src) return -1 @@ -61,7 +62,8 @@ emp_act var/turf/T = get_turf(src) P.firer = src T.bullet_act(P) - visible_message("[src] deflects the projectile into the ground!", "You deflect the projectile towards the ground beneath your feet!") + visible_message(span_danger("[src] отбива[pluralize_ru(src.gender, "ет", "ют")] [P.declent_ru(ACCUSATIVE)] в сторону!"), \ + span_userdanger("Вы отбиваете [P.declent_ru(ACCUSATIVE)] в сторону!")) playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE) if(mind.martial_art.reroute_deflection) P.firer = src @@ -91,11 +93,11 @@ emp_act return . = TRUE if(S.brute_dam > ROBOLIMB_SELF_REPAIR_CAP) - to_chat(user, "The damage is far too severe to patch over externally.") + balloon_alert(user, "требуется ремонт изнутри!") return if(!S.brute_dam) - to_chat(user, "Nothing to fix!") + balloon_alert(user, "нечего ремонтировать!") return var/surgery_time = 0 @@ -132,19 +134,19 @@ emp_act if(E.brute_dam != brute_was) should_update_health = TRUE rembrute = nrembrute - user.visible_message("[user] patches some dents on [src]'s [E.name] with [I].") + user.visible_message(span_alert("[user] ремонтиру[pluralize_ru(src.gender, "ет", "ют")] вмятины на [E.declent_ru(INSTRUMENTAL)] [src], используя [I.declent_ru(ACCUSATIVE)].")) if(should_update_health) H.updatehealth("welder repair") if(update_damage_icon) H.UpdateDamageIcon() if(bleed_rate && ismachineperson(src)) bleed_rate = 0 - user.visible_message("[user] patches some leaks on [src] with [I].") + user.visible_message(span_alert("[user] устраня[pluralize_ru(src.gender, "ет", "ют")] протечки в корпусе [src], используя [I.declent_ru(ACCUSATIVE)].")) if(IgniteMob()) add_attack_logs(user, src, "set on fire with [I]") -/mob/living/carbon/human/check_projectile_dismemberment(obj/item/projectile/P, def_zone) +/mob/living/carbon/human/check_projectile_dismemberment(obj/projectile/P, def_zone) var/obj/item/organ/external/affecting = get_organ(check_zone(def_zone)) if(affecting && !affecting.cannot_amputate && affecting.get_damage() >= (affecting.max_damage - P.dismemberment)) var/damtype = DROPLIMB_SHARP @@ -238,7 +240,7 @@ emp_act //End Here -/mob/living/carbon/human/proc/check_shields(atom/AM, damage, attack_text = "the attack", attack_type = ITEM_ATTACK, armour_penetration = 0, shields_penetration = 0) +/mob/living/carbon/human/proc/check_shields(atom/AM, damage, attack_text = "атаку", attack_type = ITEM_ATTACK, armour_penetration = 0, shields_penetration = 0) var/block_chance_modifier = round(damage / -3) - shields_penetration var/is_crawling = (body_position == LYING_DOWN) if(l_hand && !isclothing(l_hand)) @@ -289,7 +291,7 @@ emp_act update_inv_wear_mask() update_inv_head() else - to_chat(src, "Your [head_clothes.name] protects your head and face from the acid!") + to_chat(src, span_notice("[capitalize(head_clothes.declent_ru(NOMINATIVE))] защища[pluralize_ru(head_clothes.gender, "ет", "ют")] вашу голову и лицо от кислоты!")) else . = get_organ(BODY_ZONE_HEAD) if(.) @@ -312,7 +314,7 @@ emp_act update_inv_w_uniform() update_inv_wear_suit() else - to_chat(src, "Your [chest_clothes.name] protects your body from the acid!") + to_chat(src, span_notice("[capitalize(chest_clothes.declent_ru(NOMINATIVE))] защища[pluralize_ru(chest_clothes.gender, "ет", "ют")] ваше туловище от кислоты!")) else . = get_organ(BODY_ZONE_CHEST) if(.) @@ -346,7 +348,7 @@ emp_act update_inv_w_uniform() update_inv_wear_suit() else - to_chat(src, "Your [arm_clothes.name] protects your arms and hands from the acid!") + to_chat(src, span_notice("[capitalize(arm_clothes.declent_ru(NOMINATIVE))] защища[pluralize_ru(arm_clothes.gender, "ет", "ют")] ваши руки от кислоты!")) else . = get_organ(BODY_ZONE_R_ARM) if(.) @@ -372,7 +374,7 @@ emp_act update_inv_w_uniform() update_inv_wear_suit() else - to_chat(src, "Your [leg_clothes.name] protects your legs and feet from the acid!") + to_chat(src, span_notice("[capitalize(leg_clothes.declent_ru(NOMINATIVE))] защища[pluralize_ru(leg_clothes.gender, "ет", "ют")] ваши руки от кислоты!")) else . = get_organ(BODY_ZONE_R_LEG) if(.) @@ -430,13 +432,14 @@ emp_act if(!istype(affecting)) return if(!affecting.is_robotic()) - to_chat(user, "That limb isn't robotic.") + balloon_alert(user, "конечность не синтетическая!") return if(affecting.sabotaged) - to_chat(user, "[src]'s [affecting.name] is already sabotaged!") + balloon_alert(user, "уже взломано!") else add_attack_logs(user, src, "emagged [p_their()] [affecting.name]") - to_chat(user, "You sneakily slide the card into the dataport on [src]'s [affecting.name] and short out the safeties.") + to_chat(user, span_warning("Вы аккуратно подносите карту к сканеру на [affecting.declent_ru(INSTRUMENTAL)] [src] и отключаете защитные протоколы.")) + balloon_alert(user, "конечность взломана!") affecting.sabotaged = 1 return 1 @@ -459,8 +462,8 @@ emp_act if(get_dist(user, source_turf) <= 1) //people with TK won't get smeared with blood user.add_mob_blood(src) user.visible_message( - span_danger("[user] has hacked off a chunk of meat from [src]!"), - span_warning("You have hacked off a chunk of meat from [src]!"), + span_danger("[user] отрубил[genderize_ru(user.gender, "", "а", "о", "и")] кусок мяса от [src]!"), + span_warning("Вы отрубили кусок мяса от [src]!"), ) meatleft-- if(meatleft <= 0) @@ -484,10 +487,10 @@ emp_act stack_trace("Human somehow has no chest bodypart.") return ATTACK_CHAIN_BLOCKED_ALL - if(user != src && check_shields(I, I.force, "the [I.name]", ITEM_ATTACK, I.armour_penetration)) + if(user != src && check_shields(I, I.force, "[I.declent_ru(ACCUSATIVE)]", ITEM_ATTACK, I.armour_penetration)) return ATTACK_CHAIN_BLOCKED - if(check_martial_art_defense(src, user, I, span_warning("[src] blocks [I]!"))) + if(check_martial_art_defense(src, user, I, span_warning("[src] блокиру[pluralize_ru(src.gender, "ет", "ют")] [I.declent_ru(ACCUSATIVE)]!"))) return ATTACK_CHAIN_BLOCKED if(istype(I, /obj/item/card/emag) && emag_act(user, affecting)) @@ -502,7 +505,7 @@ emp_act var/hit_area = affecting.limb_zone var/hit_area_name = parse_zone(hit_area) - var/armor = run_armor_check(affecting, MELEE, span_warning("Your armour has protected your [hit_area_name]."), span_warning("Your armour has softened hit to your [hit_area_name]."), armour_penetration = I.armour_penetration) + var/armor = run_armor_check(affecting, MELEE, span_warning("Ваша броня защитила [hit_area_name], полностью поглотив удар."), span_warning("Ваша броня защитила [hit_area_name], смягчив удар."), armour_penetration = I.armour_penetration) if(armor >= 100) return . @@ -510,24 +513,23 @@ emp_act if(weapon_sharp && prob(getarmor(user.zone_selected, MELEE))) weapon_sharp = FALSE - var/cached_force = I.force * check_weakness(I, user) // this can destroy some species (damn nucleo-bombers), so from now on we cannot count on its existance - var/apply_damage_result = apply_damage(cached_force, I.damtype, affecting, armor, weapon_sharp, I) + var/apply_damage_result = apply_damage(I.force, I.damtype, affecting, armor, weapon_sharp, I) var/IM_ALIVE = !QDELETED(src) var/list/all_objectives = user.mind?.get_all_objectives() if(all_objectives) for(var/datum/objective/pain_hunter/objective in all_objectives) if(mind == objective.target) - objective.take_damage(cached_force, I.damtype) + objective.take_damage(I.force, I.damtype) if(!IM_ALIVE) return . var/bloody = FALSE - if(apply_damage_result && I.damtype == BRUTE && prob(25 + cached_force * 2)) + if(apply_damage_result && I.damtype == BRUTE && prob(25 + I.force * 2)) I.add_mob_blood(src) //Make the weapon bloody, not the person. - if(prob(cached_force * 2)) //blood spatter! + if(prob(I.force * 2)) //blood spatter! bloody = TRUE add_splatter_floor() if(get_dist(user, src) <= 1) //people with TK won't get smeared with blood @@ -536,14 +538,14 @@ emp_act switch(hit_area) if(BODY_ZONE_HEAD)//Harder to score a stun but if you do it lasts a bit longer if(apply_damage_result && stat == CONSCIOUS && armor < 50) - if(prob(cached_force)) + if(prob(I.force)) visible_message( - span_combatdanger("[src] has been knocked down!"), - span_combatuserdanger("[src] has been knocked down!"), + span_combatdanger("[src] [genderize_ru(src.gender, "был сбит", "была сбита", "было сбито", "были сбиты")] с ног ударом по голове!"), + span_combatuserdanger("Вы сбили [src] с ног ударом по голове!"), ) apply_effect(4 SECONDS, KNOCKDOWN, armor) AdjustConfused(30 SECONDS) - if(mind?.special_role == SPECIAL_ROLE_REV && prob(cached_force + ((100 - health)/2)) && src != user && I.damtype == BRUTE) + if(mind?.special_role == SPECIAL_ROLE_REV && prob(I.force + ((100 - health)/2)) && src != user && I.damtype == BRUTE) SSticker.mode.remove_revolutionary(mind) if(bloody)//Apply blood @@ -558,10 +560,10 @@ emp_act update_inv_glasses() if(BODY_ZONE_CHEST)//Easier to score a stun but lasts less time - if(apply_damage_result && stat == CONSCIOUS && prob(cached_force + 10)) + if(apply_damage_result && stat == CONSCIOUS && prob(I.force + 10)) visible_message( - span_combatdanger("[src] has been knocked down!"), - span_combatuserdanger("[src] has been knocked down!"), + span_combatdanger("[src] [genderize_ru(src.gender, "был сбит", "была сбита", "было сбито", "были сбиты")] с ног ударом в грудь!"), + span_combatuserdanger("Вы сбили [src] с ног ударом в грудь!"), ) apply_effect(2 SECONDS, KNOCKDOWN, armor) @@ -573,7 +575,7 @@ emp_act w_uniform.add_mob_blood(src) update_inv_w_uniform() - if(apply_damage_result && (cached_force > 10 || (cached_force >= 5 && prob(33)))) + if(apply_damage_result && (I.force > 10 || (I.force >= 5 && prob(33)))) forcesay(GLOB.hit_appends) //forcesay checks stat already . |= dna.species.spec_proceed_attack_results(I, src, user, affecting) @@ -585,27 +587,27 @@ emp_act var/message_hit_area = "" // only humans have def zones, so we need an override if(def_zone) - message_hit_area = " in the [parse_zone(def_zone)]" + message_hit_area = "в [parse_zone(def_zone)]" if(!I.force) visible_message( - span_warning("[user] gently taps [src][message_hit_area] with [I]."), - span_warning("[user] gently taps you[message_hit_area] with [I]."), + span_warning("[user] аккуратно тыкнул[genderize_ru(user.gender, "", "а", "о", "и")] [src] [I.declent_ru(INSTRUMENTAL)] [message_hit_area]."), + span_warning("[user] аккуратно тыкнул[genderize_ru(user.gender, "", "а", "о", "и")] вас [I.declent_ru(INSTRUMENTAL)] [message_hit_area]."), ignored_mobs = user, ) - to_chat(user, span_warning("You gently tap [src][message_hit_area] with [I].")) + to_chat(user, span_warning("Вы аккуратно тыкнули [src] [I.declent_ru(INSTRUMENTAL)] [message_hit_area].")) return - var/message_verb = "attacked" + var/message_verb = "атаковал" if(length(I.attack_verb)) message_verb = "[pick(I.attack_verb)]" visible_message( - span_danger("[user] has [message_verb] [src][message_hit_area] with [I]!"), - span_userdanger("[user] has [message_verb] you[message_hit_area] with [I]!"), + span_danger("[user] [message_verb][genderize_ru(user.gender, "", "а", "о", "и")] [src] [I.declent_ru(INSTRUMENTAL)] [message_hit_area]!"), + span_userdanger("[user] [message_verb][genderize_ru(user.gender, "", "а", "о", "и")] вас [I.declent_ru(INSTRUMENTAL)] [message_hit_area]!"), ignored_mobs = user, ) - to_chat(user, span_danger("You have [message_verb] [src][message_hit_area] with [I]!")) + to_chat(user, span_danger("Вы [message_verb]и [src] [I.declent_ru(INSTRUMENTAL)] [message_hit_area]!")) /** @@ -634,7 +636,7 @@ emp_act SEND_SIGNAL(src, COMSIG_CARBON_HITBY) - if(check_shields(AM, throwpower, "\the [AM.name]", THROWN_PROJECTILE_ATTACK, armour_penetration, shields_penetration)) + if(check_shields(AM, throwpower, "[AM.declent_ru(ACCUSATIVE)]", THROWN_PROJECTILE_ATTACK, armour_penetration, shields_penetration)) hitpush = FALSE skipcatch = TRUE blocked = TRUE @@ -684,7 +686,7 @@ emp_act /mob/living/carbon/human/attack_alien(mob/living/carbon/alien/humanoid/M) if(check_shields(M, 0, M.name)) - visible_message("[M] attempted to touch [src]!") + visible_message(span_danger("[M] попытал[genderize_ru(M.gender, "ся", "ась", "ось", "ись")] коснуться [src]!")) return 0 if(..()) @@ -694,14 +696,14 @@ emp_act var/damage = prob(90) ? M.attack_damage : 0 if(!damage) playsound(loc, 'sound/weapons/slashmiss.ogg', 50, TRUE, -1) - visible_message("[M] has lunged at [src]!") + visible_message(span_danger("[M] бросил[genderize_ru(M.gender, "ся", "ась", "ось", "ись")] на [src]!")) return 0 var/obj/item/organ/external/affecting = get_organ(ran_zone(M.zone_selected)) var/armor_block = run_armor_check(affecting, "melee", armour_penetration = M.armour_penetration) playsound(loc, 'sound/weapons/slice.ogg', 25, TRUE, -1) - visible_message("[M] has slashed at [src]!", \ - "[M] has slashed at [src]!") + visible_message(span_danger("[M] ударил[genderize_ru(M.gender, "", "а", "о", "и")] [src]!"), \ + span_userdanger("[M] ударил[genderize_ru(M.gender, "", "а", "о", "и")] [src]!")) apply_damage(damage, BRUTE, affecting, armor_block, TRUE) add_attack_logs(M, src, "Alien attacked") @@ -718,8 +720,8 @@ emp_act var/obj/item/I = get_active_hand() if(I && drop_item_ground(I)) playsound(loc, 'sound/weapons/slash.ogg', 25, TRUE, -1) - visible_message("[M] disarms [src]!", "[M] disarms you!", "You hear aggressive shuffling!") - to_chat(M, "You disarm [src]!") + visible_message(span_danger("[M] обезоружил[genderize_ru(M.gender, "", "а", "о", "и")] [src]!"), span_danger("[M] обезоружил[genderize_ru(M.gender, "", "а", "о", "и")] вас!"), span_hear("Вы слышите агрессивное шарканье!")) + to_chat(M, span_danger("Вы обезоружили [src]!")) else var/obj/item/organ/external/affecting = get_organ(ran_zone(M.zone_selected)) playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) @@ -727,16 +729,16 @@ emp_act if(prob(40)) apply_effect(2 SECONDS, WEAKEN, run_armor_check(affecting, "melee")) add_attack_logs(M, src, "Alien tackled") - visible_message("[M] has tackled down [src]!") + visible_message(span_danger("[M] сбил[genderize_ru(M.gender, "", "а", "о", "и")] с ног [src]!")) else - visible_message("[M] tried to tackle down [src]!") + visible_message(span_danger("[M] попытал[genderize_ru(M.gender, "ся", "ась", "ось", "ись")] сбить с ног [src]!")) add_attack_logs(M, src, "Alien tried to tackle") /mob/living/carbon/human/attack_animal(mob/living/simple_animal/M) . = ..() if(.) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) - if(check_shields(M, damage, "the [M.name]", ITEM_ATTACK, M.armour_penetration)) + if(check_shields(M, damage, "[M.name]", ITEM_ATTACK, M.armour_penetration)) return FALSE var/dam_zone = pick( BODY_ZONE_CHEST, @@ -772,7 +774,7 @@ emp_act if(M.age_state.age != SLIME_BABY) damage = rand(10 + M.age_state.damage, 35 + M.age_state.damage) - if(check_shields(M, damage, "the [M.name]")) + if(check_shields(M, damage, "[M.name]")) return FALSE var/dam_zone = pick( @@ -806,7 +808,7 @@ emp_act /mob/living/carbon/human/mech_melee_attack(obj/mecha/M) if(M.occupant.a_intent == INTENT_HARM) if(HAS_TRAIT(M.occupant, TRAIT_PACIFISM) || GLOB.pacifism_after_gt) - to_chat(M.occupant, "You don't want to harm other living beings!") + to_chat(M.occupant, span_warning("Вы не хотите причинять кому-либо вред!")) return M.do_attack_animation(src) if(M.damtype == "brute") @@ -830,8 +832,8 @@ emp_act else return - M.occupant_message("You hit [src].") - visible_message("[M.name] hits [src]!", "[M.name] hits you!") + M.occupant_message(span_danger("Вы ударили [src].")) + visible_message(span_danger("[M.name] ударил [src]!"), span_userdanger("[M.name] ударил вас!")) add_attack_logs(M.occupant, src, "Mecha-meleed with [M]") else @@ -852,9 +854,9 @@ emp_act /mob/living/carbon/human/proc/reagent_safety_check(hot = TRUE) if(wear_mask) - to_chat(src, "Your [wear_mask.name] protects you from the [hot ? "hot" : "cold"] liquid!") + to_chat(src, span_danger("[capitalize(wear_mask.declent_ru(NOMINATIVE))] защища[pluralize_ru(wear_mask.gender, "ет", "ют")] вас от [hot ? "горячей" : "холодной"] жидкости!")) return FALSE if(head) - to_chat(src, "Your [head.name] protects you from the [hot ? "hot" : "cold"] liquid!") + to_chat(src, span_danger("[capitalize(head.declent_ru(NOMINATIVE))] защища[pluralize_ru(head.gender, "ет", "ют")] вас от [hot ? "горячей" : "холодной"] жидкости!")) return FALSE return TRUE diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index b4059f4a60f2..040145b9b64c 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -15,6 +15,7 @@ num_hands = 0 //Populated on init through list/bodyparts usable_hands = 0 //Populated on init through list/bodyparts status_flags = parent_type::status_flags|CANSTAMCRIT + hud_type = /datum/hud/human //Marking colour and style var/list/m_colours = DEFAULT_MARKING_COLOURS //All colours set to #000000. var/list/m_styles = DEFAULT_MARKING_STYLES //All markings set to None. diff --git a/code/modules/mob/living/carbon/human/human_emote.dm b/code/modules/mob/living/carbon/human/human_emote.dm index 59e13db1084a..a1bb24132e4b 100644 --- a/code/modules/mob/living/carbon/human/human_emote.dm +++ b/code/modules/mob/living/carbon/human/human_emote.dm @@ -527,6 +527,9 @@ message_param = EMOTE_PARAM_USE_POSTFIX emote_type = EMOTE_AUDIBLE vary = TRUE + only_unintentional = TRUE + audio_cooldown = 1 MINUTES + cooldown = 10 SECONDS species_type_blacklist_typecache = list(/datum/species/machine) // Credits: Ultimate Fart Series // https://freesound.org/people/Jagadamba @@ -632,6 +635,7 @@ message_postfix = ", смотря на %t." message_param = EMOTE_PARAM_USE_POSTFIX emote_type = EMOTE_AUDIBLE + audio_cooldown = 15 SECONDS vary = TRUE volume = 80 sound = 'sound/voice/plas_rattle.ogg' @@ -927,7 +931,7 @@ message_param = EMOTE_PARAM_USE_POSTFIX emote_type = EMOTE_AUDIBLE|EMOTE_MOUTH muzzled_noises = list("тихие") - audio_cooldown = 3 SECONDS + audio_cooldown = 15 SECONDS // Credit to DrMinky (freesound.org) for the sound. sound = 'sound/effects/Kidanclack.ogg' @@ -955,7 +959,7 @@ message_postfix = ", смотря на %t." message_param = EMOTE_PARAM_USE_POSTFIX emote_type = EMOTE_AUDIBLE - audio_cooldown = 3 SECONDS + audio_cooldown = 9 SECONDS sound = list( 'sound/voice/kidan/wiggles_antennae1.ogg', 'sound/voice/kidan/wiggles_antennae2.ogg', @@ -970,7 +974,7 @@ message_postfix = ", смотря на %t." message_param = EMOTE_PARAM_USE_POSTFIX emote_type = EMOTE_AUDIBLE - audio_cooldown = 2 SECONDS + audio_cooldown = 6 SECONDS sound = list( 'sound/voice/kidan/waves_antennae_sharply1.ogg', 'sound/voice/kidan/waves_antennae_sharply2.ogg', @@ -1030,29 +1034,11 @@ emote_type = EMOTE_AUDIBLE|EMOTE_MOUTH muzzled_noises = list("раздражённые", "свистящие", "шипящие") age_based = TRUE - audio_cooldown = 3 SECONDS + audio_cooldown = 15 SECONDS // Credit to Jamius (freesound.org) for the sound. sound = 'sound/effects/unathihiss.ogg' -/datum/emote/living/carbon/human/unathi/rumble - key = "rumble" - key_third_person = "rumble" - message = "урч%(ит,ат)%." - message_mime = "тихо урч%(ит,ат)%." - message_postfix = " на %t." - message_param = EMOTE_PARAM_USE_POSTFIX - emote_type = EMOTE_AUDIBLE|EMOTE_MOUTH - muzzled_noises = list("урчащие", "гортанные") - audio_cooldown = 6 SECONDS - age_based = TRUE - volume = 65 - sound = list( - 'sound/voice/unathi/rumble.ogg', - 'sound/voice/unathi/rumble2.ogg', - ) - - /datum/emote/living/carbon/human/unathi/roar key = "roar" key_third_person = "roar" @@ -1062,7 +1048,7 @@ message_param = EMOTE_PARAM_USE_POSTFIX emote_type = EMOTE_AUDIBLE|EMOTE_MOUTH muzzled_noises = list("раздражённые", "утробные", "громкие") - audio_cooldown = 6 SECONDS + audio_cooldown = 30 SECONDS age_based = TRUE sound = list( 'sound/voice/unathi/roar.ogg', @@ -1080,7 +1066,7 @@ message_param = EMOTE_PARAM_USE_POSTFIX emote_type = EMOTE_AUDIBLE|EMOTE_MOUTH muzzled_noises = list("очень раздражённые", "громкие") - audio_cooldown = 6 SECONDS + audio_cooldown = 16 SECONDS age_based = TRUE volume = 80 sound = list( @@ -1099,7 +1085,7 @@ emote_type = EMOTE_AUDIBLE tail_required = TRUE volume = 100 - audio_cooldown = 3 SECONDS + audio_cooldown = 15 SECONDS sound = 'sound/voice/unathi/whip_short.ogg' @@ -1107,7 +1093,7 @@ key = "whip_l" key_third_person = "" message = "хлещ%(ет,ут)% хвостом." - audio_cooldown = 6 SECONDS + audio_cooldown = 15 SECONDS sound = 'sound/voice/unathi/whip.ogg' @@ -1127,6 +1113,7 @@ message_param = EMOTE_PARAM_USE_POSTFIX emote_type = EMOTE_AUDIBLE age_based = TRUE + audio_cooldown = 15 SECONDS //Credit https://www.youtube.com/watch?v=ufnvlRjsOTI [0:13 - 0:16] sound = 'sound/voice/dionatalk1.ogg' @@ -1139,7 +1126,7 @@ message_param = EMOTE_PARAM_USE_POSTFIX emote_type = EMOTE_AUDIBLE age_based = TRUE - audio_cooldown = 3 SECONDS + audio_cooldown = 15 SECONDS /datum/emote/living/carbon/human/slime/can_run_emote(mob/living/carbon/human/user, status_check, intentional) @@ -1346,3 +1333,21 @@ message = "хруст%(ит,ят)% [translated]!" return ..() + +//fucking rumble +/datum/emote/living/carbon/human/unathi/rumble + key = "rumble" + key_third_person = "rumble" + message = "урч%(ит,ат)%." + message_mime = "тихо урч%(ит,ат)%." + message_postfix = " на %t." + message_param = EMOTE_PARAM_USE_POSTFIX + emote_type = EMOTE_AUDIBLE|EMOTE_MOUTH + muzzled_noises = list("урчащие", "гортанные") + audio_cooldown = 30 SECONDS + age_based = TRUE + volume = 65 + sound = list( + 'sound/voice/unathi/rumble.ogg', + 'sound/voice/unathi/rumble2.ogg', + ) diff --git a/code/modules/mob/living/carbon/human/human_interaction.dm b/code/modules/mob/living/carbon/human/human_interaction.dm index f731c0d89125..4a858d8abf85 100644 --- a/code/modules/mob/living/carbon/human/human_interaction.dm +++ b/code/modules/mob/living/carbon/human/human_interaction.dm @@ -1,241 +1,225 @@ /mob/living/carbon/human/Topic(href, href_list) ///////Interactions!!/////// - if(href_list["interaction"]) - if(usr.incapacitated() || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED)) - return - - //CONDITIONS - var/mob/living/carbon/human/H = usr - var/mob/living/carbon/human/P = H.partner - if (!(P in view(H.loc))) - return - var/obj/item/organ/external/temp = H.bodyparts_by_name[BODY_ZONE_PRECISE_R_HAND] - var/hashands = (temp?.is_usable()) - if (!hashands) - temp = H.bodyparts_by_name[BODY_ZONE_PRECISE_L_HAND] - hashands = (temp?.is_usable()) - temp = P.bodyparts_by_name[BODY_ZONE_PRECISE_R_HAND] - var/hashands_p = (temp?.is_usable()) - if (!hashands_p) - temp = P.bodyparts_by_name[BODY_ZONE_PRECISE_L_HAND] - hashands = (temp?.is_usable()) - var/mouthfree = !((H.head && (H.head.flags_cover & HEADCOVERSMOUTH)) || (H.wear_mask && (H.wear_mask.flags_cover & MASKCOVERSMOUTH))) - var/mouthfree_p = !((P.head && (P.head.flags_cover & HEADCOVERSMOUTH)) || (P.wear_mask && (P.wear_mask.flags_cover & MASKCOVERSMOUTH))) - - if(world.time <= H.last_interract + 1 SECONDS) - return - else - H.last_interract = world.time - - if (href_list["interaction"] == "bow") - H.custom_emote(message = "кланя[pluralize_ru(H.gender,"ет","ют")]ся [P].") - if (istype(P.loc, /obj/structure/closet) && P.loc == H.loc) - P.custom_emote(message = "кланя[pluralize_ru(H.gender,"ет","ют")]ся [P].") - - else if (href_list["interaction"] == "pet") - if(((!istype(P.loc, /obj/structure/closet)) || (H.loc == P.loc)) && hashands && H.Adjacent(P)) - H.custom_emote(message = "[pick("глад[pluralize_ru(H.gender,"ит","ят")]", "поглажива[pluralize_ru(H.gender,"ет","ют")]")] [P].") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "[pick("глад[pluralize_ru(H.gender,"ит","ят")]", "поглажива[pluralize_ru(H.gender,"ет","ют")]")] [P].") - - else if (href_list["interaction"] == "scratch") - if(((!istype(P.loc, /obj/structure/closet)) || (H.loc == P.loc)) && hashands && H.Adjacent(P)) - if(H.zone_selected == BODY_ZONE_HEAD && !((P.dna.species.name == SPECIES_MACNINEPERSON) || (P.dna.species.name == SPECIES_GREY) || (P.dna.species.name == SPECIES_UNATHI))) - H.custom_emote(message = "[pick("чеш[pluralize_ru(H.gender,"ет","ут")] за ухом", "чеш[pluralize_ru(H.gender,"ет","ут")] голову")] [P].") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "[pick("чеш[pluralize_ru(H.gender,"ет","ут")] за ухом", "чеш[pluralize_ru(H.gender,"ет","ут")] голову")] [P].") - else - H.custom_emote(message = "[pick("чеш[pluralize_ru(H.gender,"ет","ут")]")] [P].") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "[pick("чеш[pluralize_ru(H.gender,"ет","ут")]")] [P].") - - else if (href_list["interaction"] == "give") - if(H.Adjacent(P)) - if (((!istype(P.loc, /obj/structure/closet)) || (H.loc == P.loc)) && hashands) - H.give(P) - - else if (href_list["interaction"] == "kiss") - if( ((H.Adjacent(P) && !istype(P.loc, /obj/structure/closet)) || (H.loc == P.loc))) - H.custom_emote(message = "целу[pluralize_ru(H.gender,"ет","ют")] [P].") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "целу[pluralize_ru(H.gender,"ет","ют")] [P].") - else if (mouthfree) - H.custom_emote(message = "посыла[pluralize_ru(H.gender,"ет","ют")] [P] воздушный поцелуй.") - - else if (href_list["interaction"] == "lick") - if( ((H.Adjacent(P) && !istype(P.loc, /obj/structure/closet)) || (H.loc == P.loc)) && mouthfree && mouthfree_p) - if (prob(90)) - H.custom_emote(message = "лизнул[genderize_ru(H.gender,"","а","о","и")] [P] в щеку.") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "лизнул[genderize_ru(H.gender,"","а","о","и")] [P] в щеку.") - else - H.custom_emote(message = "особо тщательно лизнул[genderize_ru(H.gender,"","а","о","и")] [P].") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "особо тщательно лизнул[genderize_ru(H.gender,"","а","о","и")] [P].") - - else if (href_list["interaction"] == "hug") - if(((H.Adjacent(P) && !istype(P.loc, /obj/structure/closet)) || (H.loc == P.loc)) && hashands) - H.custom_emote(message = "обнима[pluralize_ru(H.gender,"ет","ют")] [P].") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "обнима[pluralize_ru(H.gender,"ет","ют")] [P].") - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - - else if (href_list["interaction"] == "cheer") - if(((H.Adjacent(P) && !istype(P.loc, /obj/structure/closet)) || (H.loc == P.loc)) && hashands) - H.custom_emote(message = "похлопыва[pluralize_ru(H.gender,"ет","ют")] [P] по плечу.") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "похлопыва[pluralize_ru(H.gender,"ет","ют")] [P] по плечу.") - - else if (href_list["interaction"] == "five") - if(((H.Adjacent(P) && !istype(P.loc, /obj/structure/closet)) || (H.loc == P.loc)) && hashands) - H.custom_emote(message = "да[pluralize_ru(H.gender,"ёт","ют")] [P] пять.") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "да[pluralize_ru(H.gender,"ёт","ют")] [P] пять.") - playsound(loc, 'sound/effects/snap.ogg', 25, 1, -1) - - else if (href_list["interaction"] == "handshake") - if(((H.Adjacent(P) && !istype(P.loc, /obj/structure/closet)) || (H.loc == P.loc)) && hashands && hashands_p) - H.custom_emote(message = "жм[pluralize_ru(H.gender,"ёт","ут")] руку [P].") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "жм[pluralize_ru(H.gender,"ёт","ут")] руку [P].") - - else if (href_list["interaction"] == "bow_affably") - H.custom_emote(message = "приветливо кивнул[genderize_ru(H.gender,"","а","о","и")] в сторону [P].") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "приветливо кивнул[genderize_ru(H.gender,"","а","о","и")] в сторону [P].") - - else if (href_list["interaction"] == "wave") - if (!(H.Adjacent(P)) && hashands) - H.custom_emote(message = "приветливо маш[pluralize_ru(H.gender,"ет","ут")] в сторону [P].") + if(!href_list["interaction"]) + return ..() + + if(usr.incapacitated() || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED)) + return + + //CONDITIONS + var/mob/living/carbon/human/H = usr + var/mob/living/carbon/human/P = H.partner + if(!(P in view(H.loc))) + return + + if(world.time <= H.last_interract + 1 SECONDS) + return + + H.last_interract = world.time + + switch(href_list["interaction"]) + if("bow") + H.custom_emote(message = "кланя[pluralize_ru(H.gender, "ет", "ют")]ся [P].") + + if("pet") + if(HAS_TRAIT(H, TRAIT_HANDS_BLOCKED) || !P.Adjacent(H.loc)) + return + + H.custom_emote(message = "[pick("глад[pluralize_ru(H.gender, "ит", "ят")]", "поглажива[pluralize_ru(H.gender, "ет", "ют")]")] [P].") + + if("scratch") + if(HAS_TRAIT(H, TRAIT_HANDS_BLOCKED) || !P.Adjacent(H.loc)) + return + + if(H.zone_selected != BODY_ZONE_HEAD || ismachineperson(P) || isunathi(P) || isgrey(P)) + H.custom_emote(message = "[pick("чеш[pluralize_ru(H.gender, "ет", "ут")]")] [P].") + else - H.custom_emote(message = "приветливо маш[pluralize_ru(H.gender,"ет","ут")] в сторону [P].") - - - else if (href_list["interaction"] == "slap") - if(((H.Adjacent(P) && !istype(P.loc, /obj/structure/closet)) || (H.loc == P.loc)) && hashands) - switch(H.zone_selected) - if(BODY_ZONE_HEAD) - H.custom_emote(message = "да[pluralize_ru(H.gender,"ет","ют")] [P] пощечину!") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "да[pluralize_ru(H.gender,"ет","ют")] [P] пощечину!") - playsound(loc, 'sound/effects/snap.ogg', 50, 1, -1) - var/obj/item/organ/external/head/head = P.get_organ(BODY_ZONE_HEAD) - if(head?.brute_dam < 5) - P.apply_damage(1, def_zone = head) - H.do_attack_animation(P) - - if(BODY_ZONE_PRECISE_GROIN) - H.custom_emote(message = "шлёпа[pluralize_ru(H.gender,"ет","ют")] [P] по заднице!") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "шлёпа[pluralize_ru(H.gender,"ет","ют")] [P] по заднице!") - playsound(loc, 'sound/effects/snap.ogg', 50, 1, -1) - var/obj/item/organ/external/groin/groin = P.get_organ(BODY_ZONE_PRECISE_GROIN) - if(groin?.brute_dam < 5) - P.apply_damage(1, def_zone = groin) - H.do_attack_animation(P) - - if(BODY_ZONE_PRECISE_MOUTH) - H.custom_emote(message = "да[pluralize_ru(H.gender,"ет","ют")] [P] по губе!") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "да[pluralize_ru(H.gender,"ет","ют")] [P] по губе!") - playsound(loc, 'sound/effects/snap.ogg', 50, 1, -1) - H.do_attack_animation(P) - - else if (href_list["interaction"] == "fuckyou") - if(hashands) - H.custom_emote(message = "показыва[pluralize_ru(H.gender,"ет","ют")] [P] средний палец!") - if (istype(P.loc, /obj/structure/closet) && P.loc == H.loc) - P.custom_emote(message = "показыва[pluralize_ru(H.gender,"ет","ют")] [P] средний палец!") - - else if (href_list["interaction"] == "knock") - if(((H.Adjacent(P) && !istype(P.loc, /obj/structure/closet)) || (H.loc == P.loc)) && hashands) - H.custom_emote(message = "да[pluralize_ru(H.gender,"ет","ют")] [P] подзатыльник!") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "да[pluralize_ru(H.gender,"ет","ют")] [P] подзатыльник!") - playsound(loc, 'sound/weapons/throwtap.ogg', 50, 1, -1) - var/obj/item/organ/external/head/head = P.get_organ(BODY_ZONE_HEAD) - if(head?.brute_dam < 3) - P.apply_damage(1, def_zone = head) - H.do_attack_animation(P) - - else if (href_list["interaction"] == "spit") - if(((H.Adjacent(P) && !istype(P.loc, /obj/structure/closet)) || (H.loc == P.loc)) && mouthfree) - H.custom_emote(message = "плю[pluralize_ru(H.gender,"ёт","ют")] в [P]!") - if(prob(20)) - P.AdjustEyeBlurry(3 SECONDS) - if(istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "плю[pluralize_ru(H.gender,"ёт","ют")] в [P]!") - - else if (href_list["interaction"] == "threaten") - if(hashands) - H.custom_emote(message = "гроз[pluralize_ru(H.gender,"ит","ят")] [P] кулаком!") - if (istype(P.loc, /obj/structure/closet) && H.loc == P.loc) - P.custom_emote(message = "гроз[pluralize_ru(H.gender,"ит","ят")] [P] кулаком!") - - else if (href_list["interaction"] == "tongue") - if(mouthfree) - H.custom_emote(message = "показыва[pluralize_ru(H.gender,"ет","ют")] [P] язык!") - if (istype(P.loc, /obj/structure/closet) && H.loc == P.loc) - P.custom_emote(message = "показыва[pluralize_ru(H.gender,"ет","ют")] [P] язык!") - - else if (href_list["interaction"] == "pullwing") - if(((H.Adjacent(P) && !istype(P.loc, /obj/structure/closet)) || (H.loc == P.loc)) && hashands && !HAS_TRAIT(H, TRAIT_HANDS_BLOCKED)) - if(!P.bodyparts_by_name[BODY_ZONE_WING]) - H.custom_emote(message = "пыта[pluralize_ru(H.gender,"ет","ют")]ся поймать [P] за крылья КОТОРЫХ НЕТ!!!") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "пыта[pluralize_ru(H.gender,"ет","ют")]ся поймать [P] за крылья КОТОРЫХ НЕТ!!!") - return - if (prob(30)) - var/obj/item/organ/external/wing/wing = P.get_organ(BODY_ZONE_WING) - if ((wing.brute_dam == wing.max_damage || wing.is_dead() || wing.has_fracture()) && prob(20)) - H.custom_emote(message = "отрыва[pluralize_ru(H.gender,"ет","ют")] [P] крылья!") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "отрыва[pluralize_ru(H.gender,"ет","ют")] [P] крылья!") - wing.droplimb() - return - H.custom_emote(message = "дёрга[pluralize_ru(H.gender,"ет","ют")] [P] за крылья!") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "дёрга[pluralize_ru(H.gender,"ет","ют")] [P] за крылья!") - if(wing.brute_dam < 10) - P.apply_damage(1, def_zone = wing) + H.custom_emote(message = "[pick("чеш[pluralize_ru(H.gender, "ет", "ут")] за ухом", "чеш[pluralize_ru(H.gender, "ет", "ут")] голову")] [P].") + + if("give") + if(!P.Adjacent(H.loc)) + return + + H.give(P) + + if("kiss") + if(!get_location_accessible(H, BODY_ZONE_PRECISE_MOUTH)) + return + + if(!P.Adjacent(H.loc)) + H.custom_emote(message = "посыла[pluralize_ru(H.gender, "ет", "ют")] [P] воздушный поцелуй.") + + else if(get_location_accessible(P, BODY_ZONE_PRECISE_MOUTH)) + H.custom_emote(message = "целу[pluralize_ru(H.gender, "ет", "ют")] [P].") + + if("lick") + if(!P.Adjacent(H.loc) || !get_location_accessible(H, BODY_ZONE_PRECISE_MOUTH) || !get_location_accessible(P, BODY_ZONE_PRECISE_MOUTH)) + return + + if(prob(90)) + H.custom_emote(message = "лизнул[genderize_ru(H.gender, "", "а", "о", "и")] [P] в щеку.") + + else + H.custom_emote(message = "особо тщательно лизнул[genderize_ru(H.gender, "", "а", "о", "и")] [P].") + + if("hug") + if(HAS_TRAIT(H, TRAIT_HANDS_BLOCKED) || !P.Adjacent(H.loc)) + return + + H.custom_emote(message = "обнима[pluralize_ru(H.gender, "ет", "ют")] [P].") + playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1) + + if("cheer") + if(HAS_TRAIT(H, TRAIT_HANDS_BLOCKED) || !P.Adjacent(H.loc)) + return + + H.custom_emote(message = "похлопыва[pluralize_ru(H.gender, "ет", "ют")] [P] по плечу.") + + if("five") + if(HAS_TRAIT(H, TRAIT_HANDS_BLOCKED) || !P.Adjacent(H.loc)) + return + + H.custom_emote(message = "да[pluralize_ru(H.gender, "ёт", "ют")] [P] пять.") + playsound(loc, 'sound/effects/snap.ogg', 25, TRUE, -1) + + if("handshake") + if(HAS_TRAIT(H, TRAIT_HANDS_BLOCKED) || HAS_TRAIT(P, TRAIT_HANDS_BLOCKED) || !P.Adjacent(H.loc)) + return + + H.custom_emote(message = "жм[pluralize_ru(H.gender, "ёт", "ут")] руку [P].") + + if("bow_affably") + H.custom_emote(message = "приветливо кивнул[genderize_ru(H.gender, "", "а", "о", "и")] в сторону [P].") + + if("wave") + if(HAS_TRAIT(H, TRAIT_HANDS_BLOCKED)) + return + + H.custom_emote(message = "приветливо маш[pluralize_ru(H.gender, "ет", "ут")] в сторону [P].") + + if("slap") + if(HAS_TRAIT(H, TRAIT_HANDS_BLOCKED) || !P.Adjacent(H.loc)) + return + + var/obj/item/organ/external/targeted_organ = P.get_organ(H.zone_selected) + if(!targeted_organ) + return + + switch(H.zone_selected) + if(BODY_ZONE_HEAD) + H.custom_emote(message = span_danger("да[pluralize_ru(H.gender, "ет", "ют")] [P] пощечину!")) + + if(BODY_ZONE_PRECISE_GROIN) + H.custom_emote(message = span_danger("шлёпа[pluralize_ru(H.gender, "ет", "ют")] [P] по заднице!")) + + if(BODY_ZONE_PRECISE_MOUTH) + H.custom_emote(message = span_danger("да[pluralize_ru(H.gender, "ет", "ют")] [P] по губе!")) + else - H.custom_emote(message = "пыта[pluralize_ru(H.gender,"ет","ют")]ся поймать [P] за крылья!") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "пыта[pluralize_ru(H.gender,"ет","ют")]ся поймать [P] за крылья!") - - else if (href_list["interaction"] == "pull") - if(((H.Adjacent(P) && !istype(P.loc, /obj/structure/closet)) || (H.loc == P.loc)) && hashands && !HAS_TRAIT(H, TRAIT_HANDS_BLOCKED)) - if(!P.bodyparts_by_name[BODY_ZONE_TAIL]) - H.custom_emote(message = "пыта[pluralize_ru(H.gender,"ет","ют")]ся поймать [P] за хвост КОТОРОГО НЕТ!!!") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "пыта[pluralize_ru(H.gender,"ет","ют")]ся поймать [P] за хвост КОТОРОГО НЕТ!!!") return - var/obj/item/organ/internal/cyberimp/tail/blade/implant = P.get_organ_slot(INTERNAL_ORGAN_TAIL_DEVICE) - if(istype(implant) && implant.activated) // KEEP YOUR HANDS AWAY FROM ME! - H.custom_emote(message = span_danger("пыта[pluralize_ru(H.gender,"ет","ют")]ся дёрнуть [P] за хвост, но резко одёргива[pluralize_ru(H.gender,"ет","ют")] руки!")) - if(H.has_pain()) - H.emote("scream") - H.apply_damage(5, implant.damage_type, BODY_ZONE_PRECISE_R_HAND) - H.apply_damage(5, implant.damage_type, BODY_ZONE_PRECISE_L_HAND) - return + if(targeted_organ.brute_dam < 5) + P.apply_damage(1, def_zone = targeted_organ) - if (prob(30)) - var/obj/item/organ/external/tail/tail = P.get_organ(BODY_ZONE_TAIL) - if ((tail.brute_dam == tail.max_damage || tail.is_dead() || tail.has_fracture()) && prob(20)) - H.custom_emote(message = "отрыва[pluralize_ru(H.gender,"ет","ют")] [P] хвост!") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "отрыва[pluralize_ru(H.gender,"ет","ют")] [P] хвост!") - tail.droplimb() - return - H.custom_emote(message = "дёрга[pluralize_ru(H.gender,"ет","ют")] [P] за хвост!") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "дёрга[pluralize_ru(H.gender,"ет","ют")] [P] за хвост!") - if(tail.brute_dam < 10) - P.apply_damage(1, def_zone = tail) - else - H.custom_emote(message = "пыта[pluralize_ru(H.gender,"ет","ют")]ся поймать [P] за хвост!") - if (istype(P.loc, /obj/structure/closet)) - P.custom_emote(message = "пыта[pluralize_ru(H.gender,"ет","ют")]ся поймать [P] за хвост!") - return - ..() + playsound(loc, 'sound/effects/snap.ogg', 50, TRUE, -1) + H.do_attack_animation(P) + + + if("fuckyou") + if(HAS_TRAIT(H, TRAIT_HANDS_BLOCKED)) + return + + H.custom_emote(message = span_danger("показыва[pluralize_ru(H.gender, "ет", "ют")] [P] средний палец!")) + + if("knock") + if(HAS_TRAIT(H, TRAIT_HANDS_BLOCKED) || !P.Adjacent(H.loc)) + return + + var/obj/item/organ/external/head/head = P.get_organ(BODY_ZONE_HEAD) + if(!head) + return + + if(head.brute_dam < 5) + P.apply_damage(1, def_zone = head) + + H.custom_emote(message = span_danger("да[pluralize_ru(H.gender, "ет", "ют")] [P] подзатыльник!")) + playsound(loc, 'sound/weapons/throwtap.ogg', 50, TRUE, -1) + H.do_attack_animation(P) + + if("spit") + if(!P.Adjacent(H.loc) || !get_location_accessible(H, BODY_ZONE_PRECISE_MOUTH)) + return + + H.custom_emote(message = span_danger("плю[pluralize_ru(H.gender, "ёт", "ют")] в [P]!")) + + if(prob(20)) + P.AdjustEyeBlurry(3 SECONDS) + + if("threaten") + if(HAS_TRAIT(H, TRAIT_HANDS_BLOCKED)) + return + + H.custom_emote(message = span_danger("гроз[pluralize_ru(H.gender, "ит", "ят")] [P] кулаком!")) + + if("tongue") + if(!get_location_accessible(H, BODY_ZONE_PRECISE_MOUTH)) + return + + H.custom_emote(message = span_danger("показыва[pluralize_ru(H.gender, "ет", "ют")] [P] язык!")) + + if("pullwing") + if(HAS_TRAIT(H, TRAIT_HANDS_BLOCKED) || !P.Adjacent(H.loc)) + return + + var/obj/item/organ/external/wing/wing = P.get_organ(BODY_ZONE_WING) + if(!wing) + H.custom_emote(message = "пыта[pluralize_ru(H.gender, "ет", "ют")]ся поймать [P] за крылья, [span_danger("КОТОРЫХ НЕТ!!!")]") + return + + if(!prob(30)) + H.custom_emote(message = "пыта[pluralize_ru(H.gender, "ет", "ют")]ся поймать [P] за крылья!") + return + + if((wing.is_dead() || wing.has_fracture()) && prob(20)) + H.custom_emote(message = span_danger("отрыва[pluralize_ru(H.gender, "ет", "ют")] [P] крылья!")) + wing.droplimb() + return + + if(wing.brute_dam < 10) + P.apply_damage(1, def_zone = wing) + + H.custom_emote(message = span_danger("дёрга[pluralize_ru(H.gender, "ет", "ют")] [P] за крылья!")) + + if("pull") + if(HAS_TRAIT(H, TRAIT_HANDS_BLOCKED) || !P.Adjacent(H.loc)) + return + + var/obj/item/organ/external/tail/tail = P.get_organ(BODY_ZONE_TAIL) + if(!tail) + H.custom_emote(message = "пыта[pluralize_ru(H.gender, "ет", "ют")]ся поймать [P] за хвост, [span_danger("КОТОРОГО НЕТ!!!")]") + return + + var/obj/item/organ/internal/cyberimp/tail/blade/implant = P.get_organ_slot(INTERNAL_ORGAN_TAIL_DEVICE) + if(istype(implant) && implant.activated) // KEEP YOUR HANDS AWAY FROM ME! + if(H.has_pain()) + H.emote("scream") + + H.custom_emote(message = span_danger("пыта[pluralize_ru(H.gender, "ет", "ют")]ся дёрнуть [P] за хвост, но резко одёргива[pluralize_ru(H.gender, "ет", "ют")] руки!")) + H.apply_damage(5, implant.damage_type, BODY_ZONE_PRECISE_R_HAND) + H.apply_damage(5, implant.damage_type, BODY_ZONE_PRECISE_L_HAND) + return + + if(prob(70)) + H.custom_emote(message = "пыта[pluralize_ru(H.gender, "ет", "ют")]ся поймать [P] за хвост!") + return + + if((tail.is_dead() || tail.has_fracture()) && prob(20)) + H.custom_emote(message = span_danger("отрыва[pluralize_ru(H.gender, "ет", "ют")] [P] хвост!")) + tail.droplimb() + return + + if(tail.brute_dam < 10) + P.apply_damage(1, def_zone = tail) + + H.custom_emote(message = span_danger("дёрга[pluralize_ru(H.gender, "ет", "ют")] [P] за хвост!")) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 62a0c337ef54..b7670dfae031 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -1,3 +1,9 @@ +#define PULL_STAMINADAM_WALK 4 +#define PULL_STAMINADAM_RUN 6 +#define PUSH_STAMINADAM_WALK 3 +#define PUSH_STAMINADAM_RUN 4 + + /mob/living/carbon/human/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE) . = ..() if(!forced && (!old_loc || !old_loc.has_gravity()) && has_gravity()) @@ -29,6 +35,7 @@ if(.) // did we actually move? if(body_position != LYING_DOWN && !buckled && !throwing) update_splints() + var/break_bones_chance = get_bones_symptom_prob() if(break_bones_chance && (m_intent == MOVE_INTENT_RUN || pulling)) if(prob(break_bones_chance)) @@ -42,6 +49,40 @@ else if(prob(30)) playsound(src, "bonebreak", 10, TRUE) + // If we sooo weak to pull or push something, except items or tiny mobs, get stamina damage + var/weak_mob = FALSE + if((pulling || now_pushing) && (HAS_TRAIT(src, TRAIT_WEAK_PULLING))) + weak_mob = TRUE + + if(weak_mob) + var/stamina_damage = 0 + var/small_pulled = FALSE + // Handle pulling all non /obj/item stuff or tiny mobs + if(pulling && isliving(pulling)) + var/mob/living/pulled_mob = pulling + if(!pulled_mob.mob_size) // small or bigger mobs + small_pulled = TRUE + + if(pulling && !(small_pulled || isitem(pulling))) + if(m_intent == MOVE_INTENT_WALK) + stamina_damage += PULL_STAMINADAM_WALK + else + stamina_damage += PULL_STAMINADAM_RUN + + if(staminaloss > 69) + balloon_alert(src, "слишком тяжело тащить!") + stop_pulling() + + // Handle pushing, NOT swapping sides with mobs in help intent + if(now_pushing) + if(!(isliving(now_pushing) && a_intent == INTENT_HELP)) + if(m_intent == MOVE_INTENT_WALK) + stamina_damage += PUSH_STAMINADAM_WALK + else + stamina_damage += PUSH_STAMINADAM_RUN + + apply_damage(stamina_damage, STAMINA) + if(!has_gravity()) return . @@ -202,3 +243,9 @@ return FALSE return ..() + + +#undef PULL_STAMINADAM_WALK +#undef PULL_STAMINADAM_RUN +#undef PUSH_STAMINADAM_WALK +#undef PUSH_STAMINADAM_RUN diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index 02f8414ee42f..40f0c30dce22 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -129,7 +129,7 @@ if(bodypart.is_robotic()) total_dmg += bodypart.brute_dam total_dmg += bodypart.burn_dam - return (health < (100 - total_dmg)) + return (health < (maxHealth - total_dmg)) /mob/living/carbon/human/proc/count_infected_organs() diff --git a/code/modules/mob/living/carbon/human/human_say.dm b/code/modules/mob/living/carbon/human/human_say.dm index b9a48672e863..c6ed4bc625dd 100644 --- a/code/modules/mob/living/carbon/human/human_say.dm +++ b/code/modules/mob/living/carbon/human/human_say.dm @@ -85,23 +85,30 @@ /mob/living/carbon/human/IsVocal() - var/obj/item/organ/internal/cyberimp/brain/speech_translator/translator = locate() in internal_organs - if(translator?.active) - return TRUE + var/obj/item/organ/internal/cyberimp/mouth/translator/translator = get_organ_slot(INTERNAL_ORGAN_SPEECH_TRANSLATOR) + if(translator?.active && !mind?.miming) + return TRUE // Cyberimps don't care if you need to breathe at all, but make some respect to mimes + if(HAS_TRAIT(src, TRAIT_MUTE)) return FALSE + + if(TRAIT_NO_VOCAL_CORDS in dna?.species.inherent_traits) + return FALSE + // how do species that don't breathe talk? magic, that's what. var/breathes = !HAS_TRAIT(src, TRAIT_NO_BREATH) var/obj/item/organ/internal/lungs = get_organ_slot(INTERNAL_ORGAN_LUNGS) if((breathes && !lungs) || (breathes && lungs && lungs.is_dead())) return FALSE - if(getOxyLoss() > 10 || AmountLoseBreath() >= 8 SECONDS) - emote("gasp") - return FALSE + if(mind) return !mind.miming + return TRUE +/mob/living/carbon/human/cannot_speak_loudly() + return getOxyLoss() > 10 || AmountLoseBreath() >= 8 SECONDS + /mob/living/carbon/human/proc/SetSpecialVoice(new_voice) if(new_voice) @@ -131,21 +138,22 @@ /mob/living/carbon/human/handle_speech_problems(list/message_pieces, verb) var/span = "" + var/check_mute = TRUE + var/check_wingdings = TRUE - var/obj/item/organ/internal/cyberimp/brain/speech_translator/translator = locate() in internal_organs - if(translator?.active && !HAS_TRAIT(src, TRAIT_MUTE)) - span = translator.speech_span - for(var/datum/multilingual_say_piece/S in message_pieces) - S.message = "[S.message]" - verb = translator.speech_verb - return list("verb" = verb) + var/obj/item/organ/internal/cyberimp/mouth/translator/translator = get_organ_slot(INTERNAL_ORGAN_SPEECH_TRANSLATOR) + if(translator?.active) // Yes, we can speak even muted, unless being EMPed + check_mute = FALSE + + if(translator.can_wingdings) // Active wingdings chip allowed us to speak normally + check_wingdings = FALSE if(HAS_TRAIT(src, TRAIT_COMIC) \ || (locate(/obj/item/organ/internal/cyberimp/brain/clown_voice) in internal_organs) \ || HAS_TRAIT(src, TRAIT_JESTER)) span = "sans" - if(HAS_TRAIT(src, TRAIT_WINGDINGS)) + if(check_wingdings && HAS_TRAIT(src, TRAIT_WINGDINGS)) span = "wingdings" var/list/parent = ..() @@ -155,8 +163,9 @@ if(S.speaking?.flags & NO_STUTTER) continue - if(HAS_TRAIT(src, TRAIT_MUTE)) + if(check_mute && (HAS_TRAIT(src, TRAIT_MUTE))) S.message = "" + continue if(istype(wear_mask, /obj/item/clothing/mask/horsehead)) var/obj/item/clothing/mask/horsehead/hoers = wear_mask @@ -166,13 +175,21 @@ if(dna) for(var/datum/dna/gene/gene as anything in GLOB.dna_genes) if(gene.is_active(src)) + if(!check_wingdings && istype(gene, /datum/dna/gene/disability/wingdings)) + continue + S.message = gene.OnSay(src, S.message) + if(check_mute && (TRAIT_NO_VOCAL_CORDS in dna.species.inherent_traits)) // Species neither have vocal cords nor translator + S.message = "" + continue + var/braindam = getBrainLoss() if(braindam >= 60) if(prob(braindam / 4)) S.message = stutter(S.message) verb = "gibbers" + if(prob(braindam)) S.message = uppertext(S.message) verb = "yells loudly" diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 3f08ff83a94c..d625200111cc 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -291,8 +291,10 @@ if(!environment) return + SEND_SIGNAL(src, COMSIG_HUMAN_EARLY_HANDLE_ENVIRONMENT, environment) + var/loc_temp = get_temperature(environment) -// to_chat(world, "Loc temp: [loc_temp] - Body temp: [bodytemperature] - Fireloss: [getFireLoss()] - Thermal protection: [get_thermal_protection()] - Fire protection: [thermal_protection + add_fire_protection(loc_temp)] - Heat capacity: [environment_heat_capacity] - Location: [loc] - src: [src]") +// to_chat(world, "Loc temp: [loc_temp] - Body temp: [bodytemperature] - Fireloss: [getFireLoss()] - Thermal protection: [get_main_thermal_protection()] - Fire protection: [thermal_protection + add_fire_protection(loc_temp)] - Heat capacity: [environment_heat_capacity] - Location: [loc] - src: [src]") //Body temperature is adjusted in two steps. Firstly your body tries to stabilize itself a bit. if(stat != DEAD) @@ -415,20 +417,22 @@ . = ..() if(!. || HAS_TRAIT(src, TRAIT_RESIST_HEAT)) return - var/thermal_protection = get_thermal_protection() + var/thermal_protection_main = get_main_thermal_protection() + var/thermal_protection_secondary = get_secondary_thermal_protection() - if(thermal_protection >= FIRE_IMMUNITY_MAX_TEMP_PROTECT) + if(thermal_protection_main >= FIRE_IMMUNITY_MAX_TEMP_PROTECT) return - if(thermal_protection >= FIRE_SUIT_MAX_TEMP_PROTECT) - adjust_bodytemperature(11) + + if(thermal_protection_main >= FIRE_SUIT_MAX_TEMP_PROTECT) + adjust_bodytemperature(11 * (1 - thermal_protection_secondary)) else - adjust_bodytemperature(BODYTEMP_HEATING_MAX + (fire_stacks * 12)) + adjust_bodytemperature((BODYTEMP_HEATING_MAX + (fire_stacks * 12)) * (1 - thermal_protection_secondary)) var/datum/antagonist/vampire/vamp = mind?.has_antag_datum(/datum/antagonist/vampire) if(vamp && !vamp.get_ability(/datum/vampire_passive/full) && stat != DEAD) vamp.bloodusable = max(vamp.bloodusable - 5, 0) -/mob/living/carbon/human/proc/get_thermal_protection() +/mob/living/carbon/human/proc/get_main_thermal_protection() if(HAS_TRAIT(src, TRAIT_RESIST_HEAT)) return FIRE_IMMUNITY_MAX_TEMP_PROTECT @@ -442,6 +446,25 @@ thermal_protection = round(thermal_protection) return thermal_protection +/mob/living/carbon/human/proc/get_secondary_thermal_protection() + var/result = 0 + + result += getarmor(BODY_ZONE_HEAD, FIRE) / 100 * THERMAL_PROTECTION_HEAD + result += getarmor(BODY_ZONE_CHEST, FIRE) / 100 * THERMAL_PROTECTION_UPPER_TORSO + result += getarmor(BODY_ZONE_PRECISE_GROIN, FIRE) / 100 * THERMAL_PROTECTION_LOWER_TORSO + + result += getarmor(BODY_ZONE_L_ARM, FIRE) / 100 * THERMAL_PROTECTION_ARM_LEFT + result += getarmor(BODY_ZONE_PRECISE_L_HAND, FIRE) / 100 * THERMAL_PROTECTION_HAND_LEFT + result += getarmor(BODY_ZONE_R_ARM, FIRE) / 100 * THERMAL_PROTECTION_ARM_RIGHT + result += getarmor(BODY_ZONE_PRECISE_R_HAND, FIRE) / 100 * THERMAL_PROTECTION_HAND_RIGHT + + result += getarmor(BODY_ZONE_L_LEG, FIRE) / 100 * THERMAL_PROTECTION_LEG_LEFT + result += getarmor(BODY_ZONE_PRECISE_L_FOOT, FIRE) / 100 * THERMAL_PROTECTION_FOOT_LEFT + result += getarmor(BODY_ZONE_R_LEG, FIRE) / 100 * THERMAL_PROTECTION_LEG_RIGHT + result += getarmor(BODY_ZONE_PRECISE_R_FOOT, FIRE) / 100 * THERMAL_PROTECTION_FOOT_RIGHT + + return result + //END FIRE CODE /mob/living/carbon/human/proc/body_thermal_regulation(loc_temp) @@ -767,7 +790,8 @@ if(dna.species.update_health_hud()) return else - + if(SEND_SIGNAL(src, COMSIG_HUMAN_UPDATING_HEALTH_HUD, health) & COMPONENT_OVERRIDE_HEALTH_HUD) + return var/shock_reduction = 0 if(HAS_TRAIT(src, TRAIT_NO_PAIN_HUD)) shock_reduction = INFINITY diff --git a/code/modules/mob/living/carbon/human/monkey.dm b/code/modules/mob/living/carbon/human/monkey.dm index af944459eb99..59233a2fd264 100644 --- a/code/modules/mob/living/carbon/human/monkey.dm +++ b/code/modules/mob/living/carbon/human/monkey.dm @@ -2,6 +2,8 @@ icon = 'icons/mob/monkey.dmi' // for mappers var/master_commander = null var/sentience_type = SENTIENCE_ORGANIC + ai_controller = /datum/ai_controller/monkey + faction = list("neutral", "monkey") /mob/living/carbon/human/lesser/setup_dna(datum/species/new_species, monkeybasic = TRUE) . = ..() @@ -15,6 +17,12 @@ . = ..(mapload, /datum/species/monkey) tts_seed = "Sniper" +/mob/living/carbon/human/lesser/monkey/agressive + +/mob/living/carbon/human/lesser/monkey/agressive/Initialize(mapload) + . = ..(mapload, /datum/species/monkey) + ai_controller.blackboard[BB_MONKEY_AGRESSIVE] = TRUE + /mob/living/carbon/human/lesser/farwa icon_state = "tajkey1" diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index 3a55730a3a71..8bb2c018747b 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -261,6 +261,10 @@ var/list/autohiss_extra_map = null var/list/autohiss_exempt = null + /// Contains info for all age related preferences. + var/list/age_sheet + + /datum/species/New() unarmed = new unarmed_type() @@ -268,6 +272,28 @@ var/datum/language/species_language = GLOB.all_languages[language] return species_language.get_random_name(gender) +/datum/species/proc/is_allowed_hair_style(mob/living/carbon/human/human, datum/robolimb/robohead, datum/sprite_accessory/style) + return TRUE + +/proc/get_age_limits(datum/species/species, list/tags) + if(!islist(tags)) + tags = list(tags) + + var/list/result = list() + for(var/tag in tags) + if(species) + result[tag] = LAZYACCESS(species.age_sheet, tag) + + if(!isnum(result[tag])) + result[tag] = AGE_SHEET[tag] + + return length(result) > 1 ? result : result[tags[1]] + + +/proc/get_rand_age(datum/species/species) + var/age_limits = get_age_limits(species, list(SPECIES_AGE_MIN, SPECIES_AGE_MAX)) + return rand(age_limits[SPECIES_AGE_MIN], age_limits[SPECIES_AGE_MAX]) + /** * Handles creation of mob organs. @@ -755,14 +781,14 @@ animation_type = ATTACK_EFFECT_CLAW /datum/unarmed_attack/bite - attack_verb = list("грызет", "кусает", "вгрызается", "трепает") + attack_verb = list("укусил") attack_sound = 'sound/weapons/bite.ogg' sharp = TRUE animation_type = ATTACK_EFFECT_BITE is_bite = TRUE /datum/unarmed_attack/claws/armalis - attack_verb = list("хлестает", "хлестанул", "искромсал", "разорвал") //армалисами почти никто не пользуется. Зачем вносить пол вырезаной расе которой никогда не будет в игре? + attack_verb = list("хлестнул", "искромсал", "разорвал") //армалисами почти никто не пользуется. Зачем вносить пол вырезаной расе которой никогда не будет в игре? damage = 6 @@ -1124,7 +1150,7 @@ It'll return null if the organ doesn't correspond, so include null checks when u if(abs(temperature - M.bodytemperature) > 10) // If our water and mob temperature varies by more than 10K, cool or/ heat them appropriately. M.adjust_bodytemperature((temperature - M.bodytemperature) * 0.5) // Approximation for gradual heating or cooling. -/datum/species/proc/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H) //return TRUE if hit, FALSE if stopped/reflected/etc +/datum/species/proc/bullet_act(obj/projectile/P, mob/living/carbon/human/H) //return TRUE if hit, FALSE if stopped/reflected/etc return TRUE /datum/species/proc/spec_hitby(atom/movable/AM, mob/living/carbon/human/H) @@ -1188,3 +1214,6 @@ It'll return null if the organ doesn't correspond, so include null checks when u var/obj/item/organ/external/head/HD = H.get_organ(BODY_ZONE_HEAD) return HD.hair_colour +/datum/species/proc/get_emote_pitch(mob/living/carbon/human/H, tolerance) + var/age_limits = get_age_limits(src, list(SPECIES_AGE_MIN, SPECIES_AGE_MAX)) + return 1 + 0.5 * (age_limits[SPECIES_AGE_MIN] + 10 - H.age) / age_limits[SPECIES_AGE_MAX] + (0.01 * rand(-tolerance, tolerance)) diff --git a/code/modules/mob/living/carbon/human/species/diona.dm b/code/modules/mob/living/carbon/human/species/diona.dm index 23a681bea885..a17a546af1ce 100644 --- a/code/modules/mob/living/carbon/human/species/diona.dm +++ b/code/modules/mob/living/carbon/human/species/diona.dm @@ -80,6 +80,13 @@ disliked_food = MEAT | RAW | EGG liked_food = VEGETABLES | FRUIT + age_sheet = list( + SPECIES_AGE_MIN = 1, + SPECIES_AGE_MAX = 90, + JOB_MIN_AGE_HIGH_ED = 26, + JOB_MIN_AGE_COMMAND = 26, + ) + /datum/species/diona/can_understand(mob/other) if(istype(other, /mob/living/simple_animal/diona)) return 1 @@ -109,8 +116,8 @@ return FALSE if("salglu_solution") if(prob(33)) - H.adjustBruteLoss(-1) - H.adjustFireLoss(-1) + H.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) + H.adjustFireLoss(-1, affect_robotic = FALSE) H.reagents.remove_reagent(R.id, R.metabolization_rate * H.metabolism_efficiency * H.digestion_ratio) return FALSE @@ -141,7 +148,7 @@ if(update) H.updatehealth() if(H.blood_volume < BLOOD_VOLUME_NORMAL) - H.blood_volume += 0.5 + H.AdjustBlood(0.5) if(!is_vamp && H.nutrition < NUTRITION_LEVEL_STARVING + 50) H.adjustBruteLoss(2) diff --git a/code/modules/mob/living/carbon/human/species/drask.dm b/code/modules/mob/living/carbon/human/species/drask.dm index e970e3668e42..c32086d741ed 100644 --- a/code/modules/mob/living/carbon/human/species/drask.dm +++ b/code/modules/mob/living/carbon/human/species/drask.dm @@ -1,5 +1,4 @@ -#define DRASK_COOLINGSTARTTEMP 280 -#define ENVIRONMENT_COOLINGSTOPTEMP 400 +#define DRASK_PITCH_SHIFT -0.1 // a bit lower emotes /datum/species/drask name = SPECIES_DRASK @@ -73,7 +72,7 @@ INTERNAL_ORGAN_LUNGS = /obj/item/organ/internal/lungs/drask, INTERNAL_ORGAN_LIVER = /obj/item/organ/internal/liver/drask, INTERNAL_ORGAN_EYES = /obj/item/organ/internal/eyes/drask, //5 darksight. - INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears, + INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears/drask, INTERNAL_ORGAN_BRAIN = /obj/item/organ/internal/brain/drask, ) @@ -83,32 +82,51 @@ liked_food = DAIRY special_diet = MATERIAL_CLASS_SOAP + age_sheet = list( + SPECIES_AGE_MIN = 30, + SPECIES_AGE_MAX = 999, + JOB_MIN_AGE_HIGH_ED = 50, + JOB_MIN_AGE_COMMAND = 50, + ) + /datum/species/drask/get_species_runechat_color(mob/living/carbon/human/H) var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes) return E.eye_colour -/datum/species/drask/on_species_gain(mob/living/carbon/human/H) +/datum/species/drask/on_species_gain(mob/living/carbon/human/human) . = ..() - add_verb(H, /mob/living/carbon/human/proc/emote_hum) -/datum/species/drask/on_species_loss(mob/living/carbon/human/H) + var/datum/action/innate/drask/coma/coma = locate() in human.actions + + if(!coma) + coma = new + coma.Grant(human) + + add_verb(human, /mob/living/carbon/human/proc/emote_hum) + +/datum/species/drask/on_species_loss(mob/living/carbon/human/human) + . = ..() + + var/datum/action/innate/drask/coma/coma = locate() in human.actions + coma?.Remove(human) + + remove_verb(human, /mob/living/carbon/human/proc/emote_hum) + +/datum/species/drask/handle_life(mob/living/carbon/human/human) . = ..() - remove_verb(H, /mob/living/carbon/human/proc/emote_hum) -/datum/species/drask/handle_life(mob/living/carbon/human/H) - ..() - if(H.stat == DEAD) + if(human.stat == DEAD) return - var/datum/gas_mixture/environment = H.return_air() - if(environment && H.bodytemperature > DRASK_COOLINGSTARTTEMP && environment.temperature <= ENVIRONMENT_COOLINGSTOPTEMP) - H.adjust_bodytemperature(-5) - if(H.bodytemperature < TCRYO) + + if(human.bodytemperature < TCRYO) var/update = NONE - update |= H.heal_overall_damage(2, 4, updating_health = FALSE) - update |= H.heal_damages(tox = 0.5, oxy = 2, clone = 1, updating_health = FALSE) + update |= human.heal_overall_damage(2, 4, updating_health = FALSE) + update |= human.heal_damages(tox = 0.5, oxy = 2, clone = 1, updating_health = FALSE) + if(update) - H.updatehealth() - var/obj/item/organ/external/head/head = H.get_organ(BODY_ZONE_HEAD) + human.updatehealth() + + var/obj/item/organ/external/head/head = human.get_organ(BODY_ZONE_HEAD) head?.undisfigure() /datum/species/drask/handle_reagents(mob/living/carbon/human/H, datum/reagent/R) @@ -119,9 +137,65 @@ if("salglu_solution") if(prob(33)) H.heal_overall_damage(1, 1, updating_health = FALSE) + H.reagents.remove_reagent(R.id, REAGENTS_METABOLISM * H.metabolism_efficiency * H.digestion_ratio) return FALSE + return ..() -#undef DRASK_COOLINGSTARTTEMP -#undef ENVIRONMENT_COOLINGSTOPTEMP +/datum/action/innate/drask + +/datum/action/innate/drask/Grant(mob/user) + . = ..() + + if(!. || !isliving(user)) + return FALSE + + return . + +/datum/action/innate/drask/coma + name = "Enter coma" + desc = "Постепенно вводит в состояние комы, понижает температуру тела. Повторная активация способности позволит прервать вход в кому, либо выйти из нее." + + button_icon_state = "heal" + + COOLDOWN_DECLARE(wake_up_cooldown) + +/datum/action/innate/drask/coma/Activate() + var/mob/living/living = owner + + if(!living.has_status_effect(STATUS_EFFECT_DRASK_COMA)) + handle_activation(living) + return + + handle_deactivation(living) + +/datum/action/innate/drask/coma/proc/handle_activation(mob/living/living) + if(living.stat) + return FALSE + + if(!do_after(living, 5 SECONDS, living, ALL, cancel_on_max = TRUE, max_interact_count = 1)) + return FALSE + + living.apply_status_effect(STATUS_EFFECT_DRASK_COMA) + COOLDOWN_START(src, wake_up_cooldown, 10 SECONDS) + + return TRUE + +/datum/action/innate/drask/coma/proc/handle_deactivation(mob/living/living) + if(!COOLDOWN_FINISHED(src, wake_up_cooldown)) + to_chat(living, span_warning("Вы не можете пробудиться сейчас.")) + return FALSE + + if(!do_after(living, 10 SECONDS, living, ALL, cancel_on_max = TRUE, max_interact_count = 1)) + return FALSE + + living.remove_status_effect(STATUS_EFFECT_DRASK_COMA) + + return TRUE + +/datum/species/drask/get_emote_pitch(mob/living/carbon/human/H, tolerance) + . = ..() + . += DRASK_PITCH_SHIFT + +#undef DRASK_PITCH_SHIFT diff --git a/code/modules/mob/living/carbon/human/species/golem.dm b/code/modules/mob/living/carbon/human/species/golem.dm index 0484cd691d0f..fe81de1c85d7 100644 --- a/code/modules/mob/living/carbon/human/species/golem.dm +++ b/code/modules/mob/living/carbon/human/species/golem.dm @@ -370,7 +370,7 @@ unarmed_type = /datum/unarmed_attack/golem/plasteel /datum/unarmed_attack/golem/plasteel - attack_verb = list("smash") + attack_verb = list("ударил") attack_sound = 'sound/effects/meteorimpact.ogg' //More resistant to burn damage and immune to ashstorm @@ -615,12 +615,13 @@ new /obj/item/stack/ore/glass(get_turf(H)) qdel(H) -/datum/species/golem/sand/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H) +/datum/species/golem/sand/bullet_act(obj/projectile/P, mob/living/carbon/human/H) if(!(P.original == H && P.firer == H)) if(P.flag == "bullet" || P.flag == "bomb") playsound(H, 'sound/effects/shovel_dig.ogg', 70, 1) - H.visible_message("[P.name] тонет в песчаном теле [H] без видимого вреда здоровью!", \ - "[P.name] тонет в песчаном теле [H] без видимого вреда здоровью!") + H.visible_message(span_danger("[P.name] тонет в песчаном теле [H] без видимого вреда здоровью!"), \ + span_userdanger("[P.name] тонет в песчаном теле [H] без видимого вреда здоровью!"), \ + projectile_message = TRUE) return FALSE return TRUE @@ -660,11 +661,12 @@ new /obj/item/shard(get_turf(H)) qdel(H) -/datum/species/golem/glass/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H) +/datum/species/golem/glass/bullet_act(obj/projectile/P, mob/living/carbon/human/H) if(!(P.original == H && P.firer == H)) //self-shots don't reflect if(P.is_reflectable(REFLECTABILITY_ENERGY)) - H.visible_message("[P.name] отражается от стеклянной кожи [H]!", \ - "[P.name] отражается от стеклянной кожи [H]!") + H.visible_message(span_danger("[P.name] отражается от стеклянной кожи [H]!"), \ + span_userdanger("[P.name] отражается от стеклянной кожи [H]!"), \ + projectile_message = TRUE) P.reflect_back(H) @@ -738,7 +740,7 @@ . |= ATTACK_CHAIN_NO_AFTERATTACK -/datum/species/golem/bluespace/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H) +/datum/species/golem/bluespace/bullet_act(obj/projectile/P, mob/living/carbon/human/H) if(world.time > last_teleport + teleport_cooldown) reactive_teleport(H) return TRUE @@ -810,7 +812,7 @@ UpdateButtonIcon() //action icon looks available again /datum/unarmed_attack/golem/bluespace - attack_verb = "bluespace punch" + attack_verb = list("блюспейс ударил") attack_sound = 'sound/effects/phasein.ogg' //honk @@ -875,7 +877,7 @@ last_banana = world.time -/datum/species/golem/bananium/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H) +/datum/species/golem/bananium/bullet_act(obj/projectile/P, mob/living/carbon/human/H) if(world.time > last_banana + banana_cooldown) new/obj/item/grown/bananapeel/specialpeel(get_turf(H)) last_banana = world.time @@ -906,7 +908,7 @@ playsound(get_turf(H), 'sound/misc/sadtrombone.ogg', 70, 0) /datum/unarmed_attack/golem/bananium - attack_verb = list("HONK") + attack_verb = list("хонкнул") attack_sound = 'sound/items/airhorn2.ogg' animation_type = ATTACK_EFFECT_DISARM harmless = TRUE diff --git a/code/modules/mob/living/carbon/human/species/grey.dm b/code/modules/mob/living/carbon/human/species/grey.dm index ab50b745c0e0..dc7526bcdba5 100644 --- a/code/modules/mob/living/carbon/human/species/grey.dm +++ b/code/modules/mob/living/carbon/human/species/grey.dm @@ -1,3 +1,6 @@ +#define GREYS_ADDITIONAL_GENE_STABILITY 20 +#define GREYS_WATER_DAMAGE 0.6 // 0.6 burn per unit + /datum/species/grey name = SPECIES_GREY name_plural = "Greys" @@ -14,25 +17,31 @@ INTERNAL_ORGAN_KIDNEYS = /obj/item/organ/internal/kidneys/grey, INTERNAL_ORGAN_BRAIN = /obj/item/organ/internal/brain/grey, INTERNAL_ORGAN_APPENDIX = /obj/item/organ/internal/appendix, - INTERNAL_ORGAN_EYES = /obj/item/organ/internal/eyes/grey, //5 darksight. - INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears, + INTERNAL_ORGAN_EYES = /obj/item/organ/internal/eyes/grey, // 3 darksight. + INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears/grey, ) meat_type = /obj/item/reagent_containers/food/snacks/meat/humanoid/grey - total_health = 90 - oxy_mod = 1.2 //greys are fragile + total_health = 80 // Greys are fragile + oxy_mod = 1.3 stamina_mod = 1.2 + clone_mod = 0.7 - toolspeedmod = -0.2 //20% faster - surgeryspeedmod = -0.2 + toolspeedmod = -0.5 // 50% faster + surgeryspeedmod = -0.5 default_genes = list(/datum/dna/gene/basic/grant_spell/remotetalk) inherent_traits = list( + TRAIT_WEAK_PULLING, + TRAIT_NO_VOCAL_CORDS, TRAIT_HAS_LIPS, TRAIT_HAS_REGENERATION, + TRAIT_ADVANCED_CYBERIMPLANTS, + TRAIT_ACID_PROTECTED, ) + blacklisted_disabilities = NONE clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS bodyflags = HAS_BODY_MARKINGS @@ -45,15 +54,24 @@ disliked_food = SUGAR | FRIED liked_food = VEGETABLES | GRAIN | MEAT + age_sheet = list( + SPECIES_AGE_MIN = 3, + SPECIES_AGE_MAX = 150, + JOB_MIN_AGE_HIGH_ED = 13, + JOB_MIN_AGE_COMMAND = 13, + ) + /datum/species/grey/on_species_gain(mob/living/carbon/human/H) . = ..() - H.gene_stability += GENE_INSTABILITY_MODERATE + H.gene_stability += GREYS_ADDITIONAL_GENE_STABILITY + RegisterSignal(H, COMSIG_SINK_ACT, PROC_REF(sink_act)) /datum/species/grey/on_species_loss(mob/living/carbon/human/H) . = ..() - H.gene_stability -= GENE_INSTABILITY_MODERATE + H.gene_stability -= GREYS_ADDITIONAL_GENE_STABILITY + UnregisterSignal(H, COMSIG_SINK_ACT) /datum/species/grey/handle_dna(mob/living/carbon/human/H, remove = FALSE) @@ -64,61 +82,87 @@ . = ..() if(method == REAGENT_TOUCH) - if(H.wear_mask) - to_chat(H, "Ваша [H.wear_mask] защищает вас от кислоты!") + var/water_damage = (GREYS_WATER_DAMAGE * volume * H.get_permeability_protection()) + + H.adjustFireLoss(min(water_damage, 80)) + + if(H.has_pain()) + H.emote("scream") + to_chat(H, span_danger("[water_damage > 30 ? "Вы чувствуете ужасающую боль после контакта с водой!" : "Вода жжёт вас!"]")) + + if(volume > 24) + var/obj/item/organ/external/affecting = H.get_organ(BODY_ZONE_HEAD) + if(affecting) + affecting.disfigure() + + else // IV bags and etc + H.adjustFireLoss(min((GREYS_WATER_DAMAGE * volume * 0.5), 80)) + + if(volume < 10) return - if(H.head) - to_chat(H, "Ваша [H.wear_mask] защищает вас от кислоты!") + if(prob(75)) // Prevent emote and chat spam return - if(volume > 25) - if(prob(75)) - H.take_organ_damage(5, 10) - H.emote("scream") - var/obj/item/organ/external/affecting = H.get_organ(BODY_ZONE_HEAD) - if(affecting) - affecting.disfigure() - else - H.take_organ_damage(5, 10) - else - H.take_organ_damage(5, 10) - else - to_chat(H, "Вода жжет вас[volume < 10 ? ", но она недостаточно сконцентрирована, чтобы вам навредить" : null]!") - if(volume >= 10) - H.adjustFireLoss(min(max(4, (volume - 10) * 2), 20)) + if(H.has_pain()) H.emote("scream") - to_chat(H, "Вода жжет вас[volume < 10 ? ", но она недостаточно сконцентрирована, чтобы вам навредить" : null]!") + + to_chat(H, span_danger("Вы чувствуете острое жжение!")) + /datum/species/grey/after_equip_job(datum/job/J, mob/living/carbon/human/H) + var/obj/item/organ/internal/cyberimp/mouth/translator/grey_retraslator/retranslator = new + retranslator.insert(H) + var/translator_pref = H.client.prefs.speciesprefs - if(translator_pref || ((ismindshielded(H) || J.is_command || J.supervisors == "the captain") && HAS_TRAIT(H, TRAIT_WINGDINGS))) - if(J.title == JOB_TITLE_MIME) - return - if(J.title == JOB_TITLE_CLOWN) - var/obj/item/organ/internal/cyberimp/brain/speech_translator/clown/implant = new - implant.insert(H) - else - var/obj/item/organ/internal/cyberimp/brain/speech_translator/implant = new - implant.insert(H) - if(!translator_pref) - to_chat(H, "Имплант переводчика речи был установлен вам, из-за вашей роли на станции.") + + if(!HAS_TRAIT(H, TRAIT_WINGDINGS)) + return handle_loadout_chip(H, retranslator) + + var/command_roles = FALSE + + if(ismindshielded(H) || J.is_command || J.supervisors == "the captain") + command_roles = TRUE + + if(!translator_pref && !command_roles) // Not command and didn't want wingdings chip, so.. + return handle_loadout_chip(H, retranslator) + + var/obj/item/translator_chip/wingdings/chip = new + if(retranslator.install_chip(H, chip, ignore_lid = TRUE)) + to_chat(H, span_notice("В связи с ваш[translator_pref ? "им недугом" : "ей ответственной работой"], у вас уже есть установленный чип Вингдингс.")) + + handle_loadout_chip(H, retranslator) + + +/datum/species/grey/proc/handle_loadout_chip(mob/living/carbon/human/H, obj/item/organ/internal/cyberimp/mouth/translator/grey_retraslator/retranslator) + var/obj/item/translator_chip/chip = locate() in H.contents // we can take only one chip from loadout + retranslator.install_chip(H, chip, ignore_lid = TRUE) + /datum/species/grey/handle_reagents(mob/living/carbon/human/H, datum/reagent/R) - if(R.id == "sacid") - H.reagents.remove_reagent(R.id, REAGENTS_METABOLISM) - return FALSE - if(R.id == "facid") - H.reagents.remove_reagent(R.id, REAGENTS_METABOLISM) - return FALSE - if(R.id == "acetic_acid") - H.reagents.remove_reagent(R.id, REAGENTS_METABOLISM) - return FALSE if(R.id == "water") H.adjustFireLoss(1) return TRUE + return ..() + /datum/species/grey/get_species_runechat_color(mob/living/carbon/human/H) var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes) return E.eye_colour + + +/datum/species/grey/proc/sink_act(mob/living/carbon/human/source) + SIGNAL_HANDLER + + var/grey_message = pick("Вы не ожидали, что в раковине окажется вода!", "Вы слишком поздно понимаете, что совершили ошибку!", "Вы чувствуете адскую боль по всему телу!") + source.adjustFireLoss(30 * source.get_permeability_protection()) + to_chat(source, span_danger("[grey_message]")) + if(source.has_pain()) + source.emote("scream") + + return COMSIG_SINK_ACT_SUCCESS + + +#undef GREYS_ADDITIONAL_GENE_STABILITY +#undef GREYS_WATER_DAMAGE diff --git a/code/modules/mob/living/carbon/human/species/kidan.dm b/code/modules/mob/living/carbon/human/species/kidan.dm index e26407e63ef1..8a9008d3d2ac 100644 --- a/code/modules/mob/living/carbon/human/species/kidan.dm +++ b/code/modules/mob/living/carbon/human/species/kidan.dm @@ -35,7 +35,7 @@ INTERNAL_ORGAN_BRAIN = /obj/item/organ/internal/brain/kidan, INTERNAL_ORGAN_APPENDIX = /obj/item/organ/internal/appendix, INTERNAL_ORGAN_EYES = /obj/item/organ/internal/eyes/kidan, //Default darksight of 2. - INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears, + INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears/kidan, INTERNAL_ORGAN_LANTERN = /obj/item/organ/internal/lantern, ) @@ -95,6 +95,13 @@ disliked_food = FRIED | DAIRY liked_food = SUGAR | ALCOHOL | GROSS | FRUIT + age_sheet = list( + SPECIES_AGE_MIN = 12, + SPECIES_AGE_MAX = 45, + JOB_MIN_AGE_HIGH_ED = 20, + JOB_MIN_AGE_COMMAND = 20, + ) + /datum/species/kidan/get_species_runechat_color(mob/living/carbon/human/H) var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes) return E.eye_colour diff --git a/code/modules/mob/living/carbon/human/species/machine.dm b/code/modules/mob/living/carbon/human/species/machine.dm index e933bc407b7b..c8e23ad1f82b 100644 --- a/code/modules/mob/living/carbon/human/species/machine.dm +++ b/code/modules/mob/living/carbon/human/species/machine.dm @@ -95,17 +95,25 @@ disliked_food = NONE toxic_food = NONE -/datum/species/machine/on_species_gain(mob/living/carbon/human/H) + age_sheet = list( + SPECIES_AGE_MIN = 1, + SPECIES_AGE_MAX = 58, + JOB_MIN_AGE_HIGH_ED = 15, + JOB_MIN_AGE_COMMAND = 15, + ) + +/datum/species/machine/on_species_gain(mob/living/carbon/human/human) . = ..() - var/datum/action/innate/change_monitor/monitor = locate() in H.actions + var/datum/action/innate/change_monitor/monitor = locate() in human.actions + if(!monitor) monitor = new - monitor.Grant(H) - monitor = new() - monitor.Grant(H) + monitor.Grant(human) + var/datum/atom_hud/data/human/medical/advanced/medhud = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED] - medhud.remove_from_hud(H) - add_verb(H, list( + medhud.remove_from_hud(human) + + add_verb(human, list( /mob/living/carbon/human/proc/emote_ping, /mob/living/carbon/human/proc/emote_beep, /mob/living/carbon/human/proc/emote_buzz, @@ -113,14 +121,15 @@ /mob/living/carbon/human/proc/emote_yes, /mob/living/carbon/human/proc/emote_no)) - -/datum/species/machine/on_species_loss(mob/living/carbon/human/H) +/datum/species/machine/on_species_loss(mob/living/carbon/human/human) . = ..() - var/datum/action/innate/change_monitor/monitor = locate() in H.actions - monitor?.Remove(H) + var/datum/action/innate/change_monitor/monitor = locate() in human.actions + monitor?.Remove(human) + var/datum/atom_hud/data/human/medical/advanced/medhud = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED] - medhud.add_to_hud(H) - remove_verb(H, list( + medhud.add_to_hud(human) + + remove_verb(human, list( /mob/living/carbon/human/proc/emote_ping, /mob/living/carbon/human/proc/emote_beep, /mob/living/carbon/human/proc/emote_buzz, @@ -128,6 +137,18 @@ /mob/living/carbon/human/proc/emote_yes, /mob/living/carbon/human/proc/emote_no)) +/datum/species/machine/is_allowed_hair_style(mob/living/carbon/human/human, datum/robolimb/robohead, datum/sprite_accessory/style) + . = ..() + + if(!.) + return + + if(!robohead.is_monitor || !(style.models_allowed && (robohead.company in style.models_allowed)) && style.models_allowed) + return FALSE + + else if(robohead.is_monitor || !(SPECIES_HUMAN in style.species_allowed)) + return FALSE + // Allows IPC's to change their monitor display /datum/action/innate/change_monitor name = "Change Monitor" @@ -146,11 +167,11 @@ if(!head_organ) return if(!robohead.is_monitor) //If they've got a prosthetic head and it isn't a monitor, they've no screen to adjust. Instead, let them change the colour of their optics! - var/optic_colour = input(H, "Select optic colour", H.m_colours["head"]) as color|null + var/optic_colour = tgui_input_color(H, "Select optic colour", H.m_colours["head"]) if(H.incapacitated(INC_IGNORE_RESTRAINED|INC_IGNORE_GRABBED)) to_chat(H, "Ваша попытка сменить отображаемый цвет была прервана.") return - if(optic_colour) + if(!isnull(optic_colour)) H.change_markings(optic_colour, "head") else if(robohead.is_monitor) //Means that the character's head is a monitor (has a screen). Time to customize. @@ -185,3 +206,7 @@ H.change_hair(new_style, 1) // The 1 is to enable custom sprites if(new_color) H.change_hair_color(new_color) + + +/datum/species/machine/get_emote_pitch(mob/living/carbon/human/H, tolerance) + return 1 + (0.01*rand(-tolerance,tolerance)) diff --git a/code/modules/mob/living/carbon/human/species/monkey.dm b/code/modules/mob/living/carbon/human/species/monkey.dm index 8e1f316bdd0f..34d4b9704e3d 100644 --- a/code/modules/mob/living/carbon/human/species/monkey.dm +++ b/code/modules/mob/living/carbon/human/species/monkey.dm @@ -60,14 +60,6 @@ BODY_ZONE_TAIL = list("path" = /obj/item/organ/external/tail/monkey), ) -/datum/species/monkey/handle_npc(mob/living/carbon/human/H) - if(H.stat != CONSCIOUS) - return - if(prob(33) && (H.mobility_flags & MOBILITY_MOVE) && isturf(H.loc) && !H.pulledby) //won't move if being pulled - step(H, pick(GLOB.cardinal)) - if(prob(1)) - H.emote(pick("scratch","jump","roll","tail")) - /datum/species/monkey/get_random_name() return "[lowertext(name)] ([rand(100,999)])" diff --git a/code/modules/mob/living/carbon/human/species/moth.dm b/code/modules/mob/living/carbon/human/species/moth.dm index 8040cc46d4a0..d416c984fcfd 100644 --- a/code/modules/mob/living/carbon/human/species/moth.dm +++ b/code/modules/mob/living/carbon/human/species/moth.dm @@ -4,6 +4,7 @@ #define COCOON_NUTRITION_REQUIREMENT 201 #define COCOON_NUTRITION_AMOUNT -200 #define FLYSWATTER_DAMAGE_MULTIPLIER 10 +#define MOTH_PITCH_SHIFT 0.15 // a bit higher emotes /datum/species/moth name = SPECIES_MOTH @@ -48,7 +49,7 @@ INTERNAL_ORGAN_KIDNEYS = /obj/item/organ/internal/kidneys/nian, INTERNAL_ORGAN_BRAIN = /obj/item/organ/internal/brain/nian, INTERNAL_ORGAN_EYES = /obj/item/organ/internal/eyes/nian, - INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears, + INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears/nian, ) meat_type = /obj/item/reagent_containers/food/snacks/meat/humanoid/nian @@ -81,6 +82,13 @@ liked_food = SUGAR | GROSS | FRUIT | VEGETABLES special_diet = MATERIAL_CLASS_CLOTH + age_sheet = list( + SPECIES_AGE_MIN = 3, + SPECIES_AGE_MAX = 60, + JOB_MIN_AGE_HIGH_ED = 15, + JOB_MIN_AGE_COMMAND = 15, + ) + /datum/species/moth/on_species_gain(mob/living/carbon/human/H) . = ..() H.add_movespeed_mod_immunities(type, /datum/movespeed_modifier/limbless) @@ -251,9 +259,14 @@ owner.UpdateAppearance() return ..() +/datum/species/moth/get_emote_pitch(mob/living/carbon/human/H, tolerance) + . = ..() + . += MOTH_PITCH_SHIFT + #undef COCOON_WEAVE_DELAY #undef COCOON_EMERGE_DELAY #undef COCOON_HARM_AMOUNT #undef COCOON_NUTRITION_AMOUNT #undef FLYSWATTER_DAMAGE_MULTIPLIER +#undef MOTH_PITCH_SHIFT diff --git a/code/modules/mob/living/carbon/human/species/nucleation.dm b/code/modules/mob/living/carbon/human/species/nucleation.dm index 64e391b01648..d150ca9bc5bb 100644 --- a/code/modules/mob/living/carbon/human/species/nucleation.dm +++ b/code/modules/mob/living/carbon/human/species/nucleation.dm @@ -48,6 +48,13 @@ meat_type = /obj/item/reagent_containers/food/snacks/meat/humanoid/nucleation + age_sheet = list( + SPECIES_AGE_MIN = 18, + SPECIES_AGE_MAX = 230, + JOB_MIN_AGE_HIGH_ED = 30, + JOB_MIN_AGE_COMMAND = 30, + ) + /datum/species/nucleation/on_species_gain(mob/living/carbon/human/H) . = ..() diff --git a/code/modules/mob/living/carbon/human/species/plasmaman.dm b/code/modules/mob/living/carbon/human/species/plasmaman.dm index d58397dd029e..b9fdfb5d23b0 100644 --- a/code/modules/mob/living/carbon/human/species/plasmaman.dm +++ b/code/modules/mob/living/carbon/human/species/plasmaman.dm @@ -48,7 +48,7 @@ INTERNAL_ORGAN_KIDNEYS = /obj/item/organ/internal/kidneys/plasmaman, INTERNAL_ORGAN_BRAIN = /obj/item/organ/internal/brain/plasmaman, INTERNAL_ORGAN_EYES = /obj/item/organ/internal/eyes/plasmaman, - INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears, + INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears/plasmaman, ) meat_type = /obj/item/reagent_containers/food/snacks/meat/humanoid/plasmaman @@ -60,6 +60,13 @@ disliked_food = NONE liked_food = NONE + age_sheet = list( + SPECIES_AGE_MIN = 4, + SPECIES_AGE_MAX = 150, + JOB_MIN_AGE_HIGH_ED = 25, + JOB_MIN_AGE_COMMAND = 25, + ) + /datum/species/plasmaman/on_species_gain(mob/living/carbon/human/H) . = ..() @@ -133,15 +140,27 @@ if(JOB_TITLE_HOS) O = new /datum/outfit/plasmaman/hos - if(JOB_TITLE_CARGOTECH, JOB_TITLE_QUARTERMASTER) + if(JOB_TITLE_CARGOTECH) O = new /datum/outfit/plasmaman/cargo + if(JOB_TITLE_QUARTERMASTER) + O = new /datum/outfit/plasmaman/qm + if(JOB_TITLE_MINER) O = new /datum/outfit/plasmaman/mining - if(JOB_TITLE_DOCTOR, JOB_TITLE_INTERN, JOB_TITLE_BRIGDOC, JOB_TITLE_PARAMEDIC, JOB_TITLE_CORONER) + if(JOB_TITLE_DOCTOR, JOB_TITLE_INTERN) O = new /datum/outfit/plasmaman/medical + if(JOB_TITLE_BRIGDOC) + O = new /datum/outfit/plasmaman/brigdoc + + if(JOB_TITLE_PARAMEDIC) + O = new /datum/outfit/plasmaman/paramedic + + if(JOB_TITLE_CORONER) + O = new /datum/outfit/plasmaman/coroner + if(JOB_TITLE_CMO) O = new /datum/outfit/plasmaman/cmo diff --git a/code/modules/mob/living/carbon/human/species/shadow.dm b/code/modules/mob/living/carbon/human/species/shadow.dm index 5229d9e001e3..1e5ade76f106 100644 --- a/code/modules/mob/living/carbon/human/species/shadow.dm +++ b/code/modules/mob/living/carbon/human/species/shadow.dm @@ -105,7 +105,7 @@ empower_handler(human, empowering = TRUE) return TRUE // yes, we will heal in nullspace.. -/datum/species/shadow/bullet_act(obj/item/projectile/P, mob/living/carbon/human/human) +/datum/species/shadow/bullet_act(obj/projectile/P, mob/living/carbon/human/human) if(human.stat == DEAD) return TRUE if(human.has_status_effect(STATUS_EFFECT_SHADOW_EMPOWER) && prob(50)) diff --git a/code/modules/mob/living/carbon/human/species/skrell.dm b/code/modules/mob/living/carbon/human/species/skrell.dm index 2d9a03bd2250..d906d84f1a95 100644 --- a/code/modules/mob/living/carbon/human/species/skrell.dm +++ b/code/modules/mob/living/carbon/human/species/skrell.dm @@ -53,7 +53,7 @@ INTERNAL_ORGAN_BRAIN = /obj/item/organ/internal/brain/skrell, INTERNAL_ORGAN_APPENDIX = /obj/item/organ/internal/appendix, INTERNAL_ORGAN_EYES = /obj/item/organ/internal/eyes/skrell, //Default darksight of 5. - INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears, + INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears/skrell, INTERNAL_ORGAN_HEADPOCKET = /obj/item/organ/internal/headpocket, ) @@ -80,6 +80,13 @@ male_snore_sound = list('sound/voice/skrell/snore1.ogg', 'sound/voice/skrell/snore2.ogg', 'sound/voice/skrell/snore3.ogg') whistle_sound = list('sound/voice/skrell/whistling1.ogg', 'sound/voice/skrell/whistling2.ogg') + age_sheet = list( + SPECIES_AGE_MIN = 18, + SPECIES_AGE_MAX = 400, + JOB_MIN_AGE_HIGH_ED = 25, + JOB_MIN_AGE_COMMAND = 25, + ) + /datum/species/skrell/on_species_gain(mob/living/carbon/human/H) . = ..() add_verb(H, list( diff --git a/code/modules/mob/living/carbon/human/species/slime.dm b/code/modules/mob/living/carbon/human/species/slime.dm index 1fe041aa49ad..cb22077e65c7 100644 --- a/code/modules/mob/living/carbon/human/species/slime.dm +++ b/code/modules/mob/living/carbon/human/species/slime.dm @@ -74,13 +74,19 @@ "вырывает собственное ядро!", "становится коричневым, тусклым и растекается в лужу!") - var/reagent_skin_coloring = FALSE disliked_food = SUGAR | FRIED liked_food = MEAT | TOXIC | RAW /// Special flag used for slimeperson evolved from the slime. var/evolved_slime = FALSE + age_sheet = list( + SPECIES_AGE_MIN = 17, + SPECIES_AGE_MAX = 140, + JOB_MIN_AGE_HIGH_ED = 30, + JOB_MIN_AGE_COMMAND = 30, + ) + /datum/species/slime/on_species_gain(mob/living/carbon/human/H) . = ..() var/datum/action/innate/regrow/grow = locate() in H.actions @@ -130,7 +136,7 @@ /datum/species/slime/handle_life(mob/living/carbon/human/H) // Slowly shifting to the color of the reagents - if(reagent_skin_coloring && H.reagents.total_volume > SLIMEPERSON_COLOR_SHIFT_TRIGGER) + if(H.reagents.total_volume > SLIMEPERSON_COLOR_SHIFT_TRIGGER) var/blood_amount = H.blood_volume var/r_color = mix_color_from_reagents(H.reagents.reagent_list) var/new_body_color = BlendRGB(r_color, H.skin_colour, (blood_amount*SLIMEPERSON_BLOOD_SCALING_FACTOR)/((blood_amount*SLIMEPERSON_BLOOD_SCALING_FACTOR)+(H.reagents.total_volume))) @@ -155,20 +161,21 @@ /datum/action/innate/slimecolor - name = "Toggle Recolor" + name = "Изменить цвет слизи" check_flags = AB_CHECK_CONSCIOUS icon_icon = 'icons/mob/actions/actions.dmi' button_icon_state = "slime_change" /datum/action/innate/slimecolor/Activate() - var/mob/living/carbon/human/H = owner - var/datum/species/slime/S = H.dna.species - if(S.reagent_skin_coloring) - S.reagent_skin_coloring = FALSE - to_chat(H, "Вы настраиваете свою внутреннюю химию, чтобы отфильтровывать пигменты из употребляемых продуктов.") - else - S.reagent_skin_coloring = TRUE - to_chat(H, "Вы настраиваете свою внутреннюю химию, позволяя окрашивать себя пигментами употребляемых веществ.") + var/mob/living/carbon/human/human = owner + if(human.dna.species.bodyflags & HAS_SKIN_COLOR) + var/new_color = tgui_input_color(human, "Выберите новый цвет слизи.", "Цвет слизи.", human.skin_colour) + human.change_skin_color(new_color) + if(human.blood_color != new_color) + human.blood_color = new_color + human.dna.species.blood_color = human.blood_color + human.update_body() + /datum/action/innate/regrow name = "Regrow limbs" diff --git a/code/modules/mob/living/carbon/human/species/tajaran.dm b/code/modules/mob/living/carbon/human/species/tajaran.dm index 230f8d3740a3..07e19e1e129d 100644 --- a/code/modules/mob/living/carbon/human/species/tajaran.dm +++ b/code/modules/mob/living/carbon/human/species/tajaran.dm @@ -46,7 +46,7 @@ INTERNAL_ORGAN_BRAIN = /obj/item/organ/internal/brain/tajaran, INTERNAL_ORGAN_APPENDIX = /obj/item/organ/internal/appendix, INTERNAL_ORGAN_EYES = /obj/item/organ/internal/eyes/tajaran, - INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears, + INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears/tajaran, ) meat_type = /obj/item/reagent_containers/food/snacks/meat/humanoid/tajaran @@ -78,6 +78,13 @@ disliked_food = VEGETABLES | FRUIT | GRAIN | GROSS liked_food = MEAT | RAW | DAIRY | EGG + age_sheet = list( + SPECIES_AGE_MIN = 11, + SPECIES_AGE_MAX = 44, + JOB_MIN_AGE_HIGH_ED = 19, + JOB_MIN_AGE_COMMAND = 19, + ) + /datum/species/tajaran/handle_death(gibbed, mob/living/carbon/human/H) H.stop_tail_wagging() diff --git a/code/modules/mob/living/carbon/human/species/unathi.dm b/code/modules/mob/living/carbon/human/species/unathi.dm index 1f4434c51394..ba751b8864df 100644 --- a/code/modules/mob/living/carbon/human/species/unathi.dm +++ b/code/modules/mob/living/carbon/human/species/unathi.dm @@ -59,7 +59,7 @@ INTERNAL_ORGAN_BRAIN = /obj/item/organ/internal/brain/unathi, INTERNAL_ORGAN_APPENDIX = /obj/item/organ/internal/appendix, INTERNAL_ORGAN_EYES = /obj/item/organ/internal/eyes/unathi, // 3 darksight. - INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears, + INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears/unathi, ) meat_type = /obj/item/reagent_containers/food/snacks/meat/humanoid/unathi @@ -92,6 +92,13 @@ disliked_food = FRIED liked_food = MEAT | RAW | EGG | GROSS | FRUIT | VEGETABLES + age_sheet = list( + SPECIES_AGE_MIN = 12, + SPECIES_AGE_MAX = 70, + JOB_MIN_AGE_HIGH_ED = 22, + JOB_MIN_AGE_COMMAND = 22, + ) + /datum/species/unathi/handle_death(gibbed, mob/living/carbon/human/H) H.stop_tail_wagging() @@ -106,8 +113,7 @@ /mob/living/carbon/human/proc/emote_roar, /mob/living/carbon/human/proc/emote_threat, /mob/living/carbon/human/proc/emote_whip, - /mob/living/carbon/human/proc/emote_whip_l, - /mob/living/carbon/human/proc/emote_rumble)) + /mob/living/carbon/human/proc/emote_whip_l)) var/datum/action/innate/tail_cut/lash = locate() in H.actions if(!lash) lash = new @@ -123,8 +129,7 @@ /mob/living/carbon/human/proc/emote_roar, /mob/living/carbon/human/proc/emote_threat, /mob/living/carbon/human/proc/emote_whip, - /mob/living/carbon/human/proc/emote_whip_l, - /mob/living/carbon/human/proc/emote_rumble)) + /mob/living/carbon/human/proc/emote_whip_l)) var/datum/action/innate/tail_cut/lash = locate() in H.actions lash?.Remove(H) @@ -177,7 +182,7 @@ INTERNAL_ORGAN_BRAIN = /obj/item/organ/internal/brain/unathi, INTERNAL_ORGAN_APPENDIX = /obj/item/organ/internal/appendix, INTERNAL_ORGAN_EYES = /obj/item/organ/internal/eyes/unathi/ash_walker, - INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears, + INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears/unathi, ) /datum/species/unathi/ashwalker/on_species_gain(mob/living/carbon/human/H) @@ -241,7 +246,7 @@ var/obj/effect/proc_holder/spell/touch/healtouch/healtouch = locate() in owner.mob_spell_list if(!healtouch) owner.AddSpell(new /obj/effect/proc_holder/spell/touch/healtouch) - var/datum/action/innate/anvil_finder/finder = locate() in owner.actions + var/datum/action/innate/shaman_gps/finder = locate() in owner.actions if(!finder) finder = new finder.Grant(owner) @@ -254,10 +259,10 @@ /datum/species/unathi/ashwalker/shaman/on_species_loss(mob/living/carbon/human/owner) . = ..() owner.RemoveSpell(/obj/effect/proc_holder/spell/touch/healtouch) - var/datum/action/innate/anvil_finder/finder = locate() in owner.actions + var/datum/action/innate/shaman_gps/finder = locate() in owner.actions if(finder) finder.Remove(owner) - var/datum/action/innate/ignite_unathi/fire = locate() in owner.actions + var/datum/action/innate/shaman_gps/fire = locate() in owner.actions if(fire) fire.Remove(owner) @@ -322,8 +327,8 @@ They're basically just lizards with all-around marginally better stats and fire //igniter. only for ashwalkers and drakonids because of """lore""" /datum/action/innate/ignite_unathi - name = "Ignite" - desc = "You form a fire in your mouth, fierce enough to... light a cigarette." + name = "поджог" + desc = "Вы формируете небольшой сгусток пламени в вашей пасти, достаточный для... розжига костра." icon_icon = 'icons/obj/cigarettes.dmi' button_icon_state = "match_unathi" var/cooldown = 0 @@ -333,38 +338,42 @@ They're basically just lizards with all-around marginally better stats and fire /datum/action/innate/ignite_unathi/Activate() var/mob/living/carbon/human/user = owner if(world.time <= cooldown) - to_chat(user, span_warning("Your throat hurts too much to do it right now. Wait [round((cooldown - world.time) / 10)] seconds and try again.")) + to_chat(user, span_warning("Ваша пасть болит из-за прошлой попытки. Подождите [round((cooldown - world.time) / 10)] секунд[declension_ru(round((cooldown - world.time) / 10), "у", "ы", "")] и попробуйте ещё раз")) return if((user.head?.flags_cover & HEADCOVERSMOUTH) || (user.wear_mask?.flags_cover & MASKCOVERSMOUTH) && !user.wear_mask?.up) - to_chat(user, span_warning("Your mouth is covered.")) + user.balloon_alert(user, "ваша пасть закрыта!") return var/obj/item/match/unathi/fire = new(user.loc, src) if(user.put_in_hands(fire)) - to_chat(user, span_notice("You ignite a small flame in your mouth.")) + to_chat(user, span_notice("Вы формируете огонь в вашей пасти.")) cooldown = world.time + cooldown_duration else qdel(fire) - to_chat(user, span_warning("You don't have any free hands.")) + user.balloon_alert(user, "ваши руки заняты!") -/datum/action/innate/anvil_finder - name = "Find World Anvil" - desc = "You call the Necropolis in order to find The World Anvil." +/datum/action/innate/shaman_gps + name = "Помощь некрополя" + desc = "Вы используете силу Некрополя, чтобы узнать примерное местоположение точек интереса." icon_icon = 'icons/mob/actions/actions_clockwork.dmi' button_icon_state = "stun" //better than nothing -/datum/action/innate/anvil_finder/Activate() - addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, owner, \ - span_warning("Я чувствую, что Мировая Кузница [get_direction()]")), 2 SECONDS) - -/datum/action/innate/anvil_finder/proc/get_direction() - for(var/obj/structure/world_anvil/Anvil in GLOB.anvils) - if(!Anvil) - . = "уничтожена." - return - var/turf/T = get_turf(Anvil) - if(owner.z == T.z) //"кузница находится где-то на северо-востоке" or whatever - . = "находится где-то на " - . += dir2rustext(get_dir(owner.loc, Anvil.loc)) - . += "e." - else - . = "находится где-то далеко отсюда." +/datum/action/innate/shaman_gps/Activate() + var/list/list_of_points = GLOB.lavaland_points_of_interest + if(list_of_points) + var/selected_poi = tgui_input_list(owner, "Выберите точку интереса", "точки интереса", list_of_points) + addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, owner, \ + span_warning("Я чувствую, что [selected_poi] [get_direction(selected_poi)]")), 2 SECONDS) + else + to_chat(owner, "Все церемониальные тотемы уничтожены.") + +/datum/action/innate/shaman_gps/proc/get_direction(obj/structure/selected_poi) + if(!selected_poi) + . = "уничтожен." + return + var/turf/T = get_turf(selected_poi) + if(owner.z == T.z) //"кузница находится где-то на северо-востоке" or whatever + . = "находится где-то на " + . += dir2rustext(get_dir(owner.loc, selected_poi.loc)) + . += "e." + else + . = "находится где-то далеко отсюда." diff --git a/code/modules/mob/living/carbon/human/species/vox.dm b/code/modules/mob/living/carbon/human/species/vox.dm index 9b977acd988c..de5cc317157a 100644 --- a/code/modules/mob/living/carbon/human/species/vox.dm +++ b/code/modules/mob/living/carbon/human/species/vox.dm @@ -69,7 +69,7 @@ INTERNAL_ORGAN_BRAIN = /obj/item/organ/internal/brain/vox, INTERNAL_ORGAN_APPENDIX = /obj/item/organ/internal/appendix, INTERNAL_ORGAN_EYES = /obj/item/organ/internal/eyes/vox, // Default darksight of 2. - INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears, + INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears/vox, ) meat_type = /obj/item/reagent_containers/food/snacks/meat/humanoid/vox @@ -103,6 +103,13 @@ liked_food = NONE special_diet = MATERIAL_CLASS_TECH + age_sheet = list( + SPECIES_AGE_MIN = 1, + SPECIES_AGE_MAX = 70, + JOB_MIN_AGE_HIGH_ED = 10, + JOB_MIN_AGE_COMMAND = 10, + ) + /datum/species/vox/handle_death(gibbed, mob/living/carbon/human/H) H.stop_tail_wagging() @@ -182,6 +189,11 @@ return ..() + +/datum/species/vox/get_emote_pitch(mob/living/carbon/human/H, tolerance) + return 1 + (0.01*rand(-tolerance,tolerance)) + + /datum/species/vox/armalis name = SPECIES_VOX_ARMALIS name_plural = "Vox Armalis" diff --git a/code/modules/mob/living/carbon/human/species/vulpkanin.dm b/code/modules/mob/living/carbon/human/species/vulpkanin.dm index 9be8a9711b06..0645a7ec18fa 100644 --- a/code/modules/mob/living/carbon/human/species/vulpkanin.dm +++ b/code/modules/mob/living/carbon/human/species/vulpkanin.dm @@ -39,7 +39,7 @@ INTERNAL_ORGAN_BRAIN = /obj/item/organ/internal/brain/vulpkanin, INTERNAL_ORGAN_APPENDIX = /obj/item/organ/internal/appendix, INTERNAL_ORGAN_EYES = /obj/item/organ/internal/eyes/vulpkanin, - INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears, + INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears/vulpkanin, ) meat_type = /obj/item/reagent_containers/food/snacks/meat/humanoid/vulpkanin @@ -71,6 +71,13 @@ disliked_food = VEGETABLES | FRUIT | GRAIN liked_food = MEAT | RAW | DAIRY | GROSS | EGG + age_sheet = list( + SPECIES_AGE_MIN = 18, + SPECIES_AGE_MAX = 80, + JOB_MIN_AGE_HIGH_ED = 30, + JOB_MIN_AGE_COMMAND = 30, + ) + /datum/species/vulpkanin/handle_death(gibbed, mob/living/carbon/human/H) H.stop_tail_wagging() diff --git a/code/modules/mob/living/carbon/human/species/wryn.dm b/code/modules/mob/living/carbon/human/species/wryn.dm index a8d45c63469f..2e37b0a3473a 100644 --- a/code/modules/mob/living/carbon/human/species/wryn.dm +++ b/code/modules/mob/living/carbon/human/species/wryn.dm @@ -5,6 +5,7 @@ deform = 'icons/mob/human_races/r_wryn.dmi' blacklisted = TRUE tail = "wryntail" + eyes = "wryn_eyes_s" punchdamagelow = 0 punchdamagehigh = 1 speed_mod = 1 @@ -27,10 +28,10 @@ body_temperature = 286 has_organ = list( - INTERNAL_ORGAN_HEART = /obj/item/organ/internal/heart, - INTERNAL_ORGAN_BRAIN = /obj/item/organ/internal/brain, + INTERNAL_ORGAN_HEART = /obj/item/organ/internal/heart/wryn, + INTERNAL_ORGAN_BRAIN = /obj/item/organ/internal/brain/wryn, INTERNAL_ORGAN_EYES = /obj/item/organ/internal/eyes/wryn, //3 darksight. - INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears, + INTERNAL_ORGAN_EARS = /obj/item/organ/internal/ears/wryn, INTERNAL_ORGAN_APPENDIX = /obj/item/organ/internal/appendix, INTERNAL_ORGAN_HIVENODE = /obj/item/organ/internal/wryn/hivenode, INTERNAL_ORGAN_WAX_GLANDS = /obj/item/organ/internal/wryn/glands, @@ -60,7 +61,7 @@ TRAIT_NO_SCAN, ) clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS - bodyflags = HAS_SKIN_COLOR + bodyflags = HAS_SKIN_COLOR | HAS_BODY_ACCESSORY dies_at_threshold = TRUE @@ -70,7 +71,16 @@ blood_color = "#FFFF99" blood_species = "Wryn" //Default styles for created mobs. - default_hair = "Antennae" + default_hair = "Normal antennae" + default_fhair = "Default mane" + default_bodyacc = "Bee Tail" + default_fhair_colour = "#704300" + age_sheet = list( + SPECIES_AGE_MIN = 15, + SPECIES_AGE_MAX = 55, + JOB_MIN_AGE_HIGH_ED = 22, + JOB_MIN_AGE_COMMAND = 22, + ) /datum/species/wryn/on_species_gain(mob/living/carbon/human/H) . = ..() @@ -86,14 +96,10 @@ /datum/species/wryn/after_equip_job(datum/job/J, mob/living/carbon/human/H) var/comb_deafness = H.client.prefs.speciesprefs + if(comb_deafness) var/obj/item/organ/internal/wryn/hivenode/node = H.get_int_organ(/obj/item/organ/internal/wryn/hivenode) - node.remove(H) qdel(node) - else - var/obj/item/organ/external/head/head_organ = H.get_organ(BODY_ZONE_HEAD) - head_organ.h_style = "Antennae" - H.update_hair() /* Wryn Sting Action Begin */ diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm index 6a3e320f7841..45260ef9fe47 100644 --- a/code/modules/mob/living/carbon/inventory.dm +++ b/code/modules/mob/living/carbon/inventory.dm @@ -2,7 +2,7 @@ var/obj/item/item_in_hand = get_active_hand() if(SEND_SIGNAL(src, COMSIG_MOB_SWAPPING_HANDS, item_in_hand) & COMPONENT_BLOCK_SWAP) - to_chat(src, span_warning("Ваши руки заняты удержанием [item_in_hand].")) + balloon_alert(src, "ваши руки заняты!") return FALSE hand = !hand @@ -99,22 +99,22 @@ if(cuff_break) breakouttime = 5 SECONDS // very fast! visible_message( - span_warning("[name] пыта[pluralize_ru(gender,"ет","ют")]ся сломать [I.name]!"), - span_notice("Вы пытаетесь сломать [I.name]... (Процесс займёт 5 секунд и Вам нельзя двигаться.)"), + span_warning("[name] пыта[pluralize_ru(gender, "ет", "ют")]ся сломать [I.declent_ru(ACCUSATIVE)]!"), + span_notice("Вы пытаетесь сломать [I.declent_ru(ACCUSATIVE)]. Это займёт примерно 5 секунд."), ) if(do_after(src, breakouttime, src, DEFAULT_DOAFTER_IGNORE|DA_IGNORE_HELD_ITEM)) . = clear_cuffs(I, cuff_break) else - to_chat(src, span_warning("Вам не удалось сломать [I.name]!")) + to_chat(src, span_warning("Вам не удалось сломать [I.declent_ru(ACCUSATIVE)]!")) else visible_message( - span_warning("[name] пыта[pluralize_ru(gender,"ет","ют")]ся снять [I.name]!"), - span_notice("Вы пытаетесь снять [I.name]... (Процесс займёт [breakouttime / 10] секунд и Вам нельзя двигаться.)"), + span_warning("[name] пыта[pluralize_ru(gender, "ет", "ют")]ся снять [I.declent_ru(ACCUSATIVE)]!"), + span_notice("Вы пытаетесь снять [I.declent_ru(ACCUSATIVE)]. Это займёт примерно [breakouttime / 10] секунд[declension_ru(breakouttime / 10, "у", "ы", "")]."), ) if(do_after(src, breakouttime, src, DEFAULT_DOAFTER_IGNORE|DA_IGNORE_HELD_ITEM)) . = clear_cuffs(I, cuff_break) else - to_chat(src, span_warning("Вам не удалось снять [I.name]!")) + to_chat(src, span_warning("Вам не удалось снять [I.declent_ru(ACCUSATIVE)]!")) /mob/living/carbon/proc/clear_cuffs(obj/item/I, cuff_break) @@ -123,8 +123,8 @@ if(I != handcuffed && I != legcuffed && I != wear_suit) return FALSE visible_message( - span_danger("[name] удалось [cuff_break ? "сломать" : "снять"] [I.name]!"), - span_notice("Вы успешно [cuff_break ? "сломали" : "сняли"] [I.name]."), + span_danger("[name] [cuff_break ? "лома" : "снима"][pluralize_ru(gender, "ет", "ют")] [I.declent_ru(ACCUSATIVE)]!"), + span_notice("Вы [cuff_break ? "лома" : "снима"]ете [I.declent_ru(ACCUSATIVE)]."), ) if(cuff_break) qdel(I) @@ -146,20 +146,20 @@ var/obj/item/clothing/mask/muzzle/I = wear_mask var/time = I.resist_time if(!time) //if it's 0, you can't get out of it - to_chat(src, "[capitalize(I.name)] слишком хорошо зафиксирован!") + balloon_alert(src, "слишком крепко сидит!") return visible_message( - span_warning("[name] грыз[pluralize_ru(gender,"ёт","ут")] [I.name], пытаясь освободиться!"), - span_notice("Вы пытаетесь избавиться от [I.name]... (Это займет [time / 10] секунд и вам нельзя двигаться.)"), + span_warning("[name] грыз[pluralize_ru(gender, "ёт", "ут")] [I.declent_ru(GENITIVE)], пытаясь освободиться!"), + span_notice("Вы пытаетесь избавиться от [I.declent_ru(GENITIVE)]. Это займёт примерно [time / 10] секунд[declension_ru(time / 10, "у", "ы", "")]."), ) if(!do_after(src, time, src, DEFAULT_DOAFTER_IGNORE|DA_IGNORE_HELD_ITEM) || QDELETED(I) || I != wear_mask) return visible_message( - span_danger("[name] избавил[genderize_ru(gender,"ся","ась","ось","ись")] от [I.name]!"), - span_notice("Вы успешно избавились от [I.name]."), + span_danger("[name] избавля[pluralize_ru(gender, "ет", "ут")]ся от [I.declent_ru(GENITIVE)]!"), + span_notice("Вы избавляетесь от [I.declent_ru(GENITIVE)]."), ) if(I.security_lock) I.do_break() diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 3d8ab5a1387a..5d9cfc1e0d54 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -147,7 +147,7 @@ oxygen_used = breath.oxygen clear_alert(ALERT_NOT_ENOUGH_OXYGEN) - breath.oxygen -= oxygen_used + breath.oxygen = max(breath.oxygen - oxygen_used, 0) breath.carbon_dioxide += oxygen_used //CARBON DIOXIDE @@ -283,6 +283,8 @@ if(healths) if(stat != DEAD) . = TRUE + if(SEND_SIGNAL(src, COMSIG_CARBON_UPDATING_HEALTH_HUD, shown_health_amount) & COMPONENT_OVERRIDE_HEALTH_HUD) + return if(shown_health_amount == null) shown_health_amount = health if(shown_health_amount >= maxHealth) diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm index ff08d61c16aa..b229f89f531b 100644 --- a/code/modules/mob/living/carbon/status_procs.dm +++ b/code/modules/mob/living/carbon/status_procs.dm @@ -8,7 +8,7 @@ if(check_incapacitating_immunity(CANSTAMCRIT)) return SEND_SIGNAL(src, COMSIG_CARBON_ENTER_STAMCRIT) - to_chat(src, span_notice("You're too exhausted to keep going...")) + to_chat(src, span_warning("Вы слишком истощены, чтобы передвигаться.")) add_traits(list(TRAIT_INCAPACITATED, TRAIT_IMMOBILIZED, TRAIT_FLOORED, TRAIT_HANDS_BLOCKED), STAMINA_TRAIT) if(getStaminaLoss() < 120) // Puts you a little further into the initial stamcrit, makes stamcrit harder to outright counter with chems. adjustStaminaLoss(30, FALSE) diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index dc279a538715..275345c0147d 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -40,12 +40,14 @@ return TRUE /mob/living/proc/can_die() - return !(stat == DEAD || HAS_TRAIT(src, TRAIT_GODMODE)) + return !(stat == DEAD || HAS_TRAIT(src, TRAIT_GODMODE) || HAS_TRAIT(src, TRAIT_NO_DEATH)) // Returns true if mob transitioned from live to dead // Do a check with `can_die` beforehand if you need to do any // handling before `stat` is set /mob/living/death(gibbed) + SEND_SIGNAL(src, COMSIG_LIVING_EARLY_DEATH, gibbed) + if(stat == DEAD || !can_die()) // Whew! Good thing I'm indestructible! (or already dead) return FALSE @@ -54,7 +56,11 @@ ..() INVOKE_ASYNC(src, PROC_REF(burst_blob_on_die)) timeofdeath = world.time - add_attack_logs(src, src, "died[gibbed ? " (Gibbed)": ""]") + var/gib_pref = "" + if(client) + gib_pref = " Разрешение на гиб без цели в" + (client.prefs.toggles2 & PREFTOGGLE_2_GIB_WITHOUT_OBJECTIVE ? "" : "ы") + "ключено." + + add_attack_logs(src, src, "died[gibbed ? " (Gibbed)": ""]" + gib_pref) if(!gibbed && deathgasp_on_death) INVOKE_ASYNC(src, PROC_REF(emote), "deathgasp") @@ -99,10 +105,6 @@ SSticker.mode.check_win() clear_alert("succumb") - - if(mind && mind.devilinfo) // Expand this into a general-purpose death-response system when appropriate - mind.devilinfo.beginResurrectionCheck(src) - SEND_SIGNAL(src, COMSIG_LIVING_DEATH, gibbed) // u no we dead return TRUE diff --git a/code/modules/mob/living/default_language.dm b/code/modules/mob/living/default_language.dm index de181396eba7..1483eeb3c74d 100644 --- a/code/modules/mob/living/default_language.dm +++ b/code/modules/mob/living/default_language.dm @@ -2,13 +2,13 @@ var/datum/language/default_language /mob/living/verb/set_default_language(language as null|anything in languages) - set name = "Set Default Language" + set name = "Выбрать язык по умолчанию" set category = "IC" if(language) - to_chat(src, span_notice("You will now speak [language] if you do not specify a language when speaking.")) + to_chat(src, span_notice("Теперь вы будете использовать [language], если не укажете язык при разговоре.")) else - to_chat(src, span_notice("You will now speak whatever your standard default language is if you do not specify one when speaking.")) + to_chat(src, span_notice("Теперь вы будете говорить на стандартном языке по умолчанию, если не укажете его при разговоре.")) default_language = language // Silicons can't neccessarily speak everything in their languages list @@ -16,10 +16,10 @@ ..() /mob/living/verb/check_default_language() - set name = "Check Default Language" + set name = "Узнать язык по умолчанию" set category = "IC" if(default_language) - to_chat(src, span_notice("You are currently speaking [default_language] by default.")) + to_chat(src, span_notice("В данный момент вы используете [default_language] по умолчанию.")) else - to_chat(src, span_notice("Your current default language is your species or mob type default.")) + to_chat(src, span_notice("Ваш текущий язык по умолчанию соответствует вашему виду или типу существа по умолчанию.")) diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 765ff34e0f8a..a6ea4f598d3b 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -4,15 +4,7 @@ SEND_SIGNAL(src, COMSIG_LIVING_LIFE, seconds, times_fired) - if(client || registered_z) // This is a temporary error tracker to make sure we've caught everything - var/turf/T = get_turf(src) - if(client && registered_z != T.z) - message_admins("[src] [ADMIN_FLW(src, "FLW")] has somehow ended up in Z-level [T.z] despite being registered in Z-level [registered_z]. If you could ask them how that happened and notify the coders, it would be appreciated.") - add_misc_logs(src, "Z-TRACKING: [src] has somehow ended up in Z-level [T.z] despite being registered in Z-level [registered_z].") - update_z(T.z) - else if (!client && registered_z) - add_misc_logs(src, "Z-TRACKING: [src] of type [src.type] has a Z-registration despite not having a client.") - update_z(null) + track_z() if(HAS_TRAIT(src, TRAIT_NO_TRANSFORM)) return FALSE @@ -229,13 +221,13 @@ severity = 6 livingdoll.icon_state = "living[severity]" if(!livingdoll.filtered) - livingdoll.filtered = TRUE var/icon/mob_mask = icon(icon, icon_state) if(mob_mask.Height() > world.icon_size || mob_mask.Width() > world.icon_size) var/health_doll_icon_state = health_doll_icon ? health_doll_icon : "megasprite" mob_mask = icon('icons/mob/screen_gen.dmi', health_doll_icon_state) //swap to something generic if they have no special doll livingdoll.add_filter("mob_shape_mask", 1, alpha_mask_filter(icon = mob_mask)) livingdoll.add_filter("inset_drop_shadow", 2, drop_shadow_filter(size = -1)) + livingdoll.filtered = TRUE if(severity > 0) overlay_fullscreen("brute", /atom/movable/screen/fullscreen/brute, severity) else diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index f966df049638..9a7ec885e280 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -7,6 +7,8 @@ faction += "\ref[src]" determine_move_and_pull_forces() gravity_setup() + if(unique_name) + set_name() if(ventcrawler_trait) var/static/list/ventcrawler_sanity = list( TRAIT_VENTCRAWLER_ALWAYS, @@ -417,6 +419,76 @@ return TRUE +/mob/living/can_perform_action(atom/target, action_bitflags) + if(!istype(target)) + CRASH("Missing target arg for can_perform_action") + + if(stat != CONSCIOUS) + to_chat(src, span_warning("You are not conscious enough for this action!")) + return FALSE + + if(!(action_bitflags & BYPASS_INCAPACITATED)) // should be interaction_flags_atom, but we haven't implemented yet and won't + var/ignore_flags = NONE + if(action_bitflags & INC_IGNORE_RESTRAINED) + ignore_flags |= INC_IGNORE_RESTRAINED + if(!(action_bitflags & INC_IGNORE_GRABBED)) + ignore_flags |= INC_IGNORE_GRABBED + + if(incapacitated(ignore_flags)) + to_chat(src, span_warning("You are incapacitated at the moment!")) + return FALSE + + // If the MOBILITY_UI bitflag is not set it indicates the mob's hands are cutoff, blocked, or handcuffed + // Note - AI's and borgs have the MOBILITY_UI bitflag set even though they don't have hands + // Also if it is not set, the mob could be incapcitated, knocked out, unconscious, asleep, EMP'd, etc. + if(!(mobility_flags & MOBILITY_UI) && !(action_bitflags & ALLOW_RESTING)) + to_chat(src, span_warning("You don't have the mobility for this!")) + return FALSE + + // NEED_HANDS is already checked by MOBILITY_UI for humans so this is for silicons + if((action_bitflags & NEED_HANDS)) + if(HAS_TRAIT(src, TRAIT_HANDS_BLOCKED)) + to_chat(src, span_warning("You hands are blocked for this action!")) + return FALSE + if(!usable_hands) // almost redundant if it weren't for mobs + to_chat(src, span_warning("You don't have the hands for this action!")) + return FALSE + + if(!(action_bitflags & ALLOW_PAI) && ispAI(src)) + to_chat(src, span_warning("Your holochasis does not allow you to do this!")) + return FALSE + + if(!(action_bitflags & BYPASS_ADJACENCY) && ((action_bitflags & NOT_INSIDE_TARGET) || !Adjacent(target))) + if(has_unlimited_silicon_privilege && !ispAI(src)) + if(!(action_bitflags & ALLOW_SILICON_REACH)) // silicons can ignore range checks (except pAIs) + if(!(action_bitflags & SILENT_ADJACENCY)) + to_chat(src, span_warning("You are too far away!")) + return FALSE + else // just a normal carbon mob + if((action_bitflags & FORBID_TELEKINESIS_REACH)) + if(!(action_bitflags & SILENT_ADJACENCY)) + to_chat(src, span_warning("You are too far away!")) + return FALSE + + if(!HAS_TRAIT(src, TRAIT_TELEKINESIS)) + if(!(action_bitflags & SILENT_ADJACENCY)) + to_chat(src, span_warning("You are too far away!")) + return FALSE + + if((action_bitflags & NEED_VENTCRAWL) && !HAS_TRAIT(src, TRAIT_VENTCRAWLER_NUDE) && !HAS_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS)) + to_chat(src, span_warning("You wouldn't fit!")) + return FALSE + + if((action_bitflags & NEED_DEXTERITY) && !IsAdvancedToolUser(src)) + to_chat(src, span_warning("You don't have the dexterity to do this!")) + return FALSE + + if((action_bitflags & NEED_LITERACY) && !is_literate()) + to_chat(src, span_warning("You can't comprehend any of this!")) + return FALSE + + return TRUE + /mob/living/CanAllowThrough(atom/movable/mover, border_dir) . = ..() // all this repeated spaghetti code is used to properly register projectiles @@ -443,7 +515,7 @@ /// Special projectiles handling for living mobs -/mob/living/proc/projectile_allow_through(obj/item/projectile/projectile, border_dir) +/mob/living/proc/projectile_allow_through(obj/projectile/projectile, border_dir) // default behavior for generic mobs if(!(mobility_flags & (MOBILITY_REST|MOBILITY_LIEDOWN))) return !density @@ -756,6 +828,7 @@ ExtinguishMob() CureAllDiseases(FALSE) fire_stacks = 0 + fire_stacks = 0 on_fire = 0 suiciding = 0 if(buckled) //Unbuckle the mob and clear the alerts. @@ -873,36 +946,49 @@ /mob/living/proc/makeTrail(turf/T) if(!has_gravity()) return - var/blood_exists = 0 - for(var/obj/effect/decal/cleanable/trail_holder/C in loc) //checks for blood splatter already on the floor - blood_exists = 1 + var/blood_exists = FALSE + + for(var/obj/effect/decal/cleanable/trail_holder/C in loc) // checks for blood splatter already on the floor + blood_exists = TRUE + if(isturf(loc)) var/trail_type = getTrail() + if(trail_type) var/brute_ratio = round(getBruteLoss()/maxHealth, 0.1) - if(blood_volume && blood_volume > max(BLOOD_VOLUME_NORMAL*(1 - brute_ratio * 0.25), 0))//don't leave trail if blood volume below a threshold - blood_volume = max(blood_volume - max(1, brute_ratio * 2), 0) //that depends on our brute damage. + + if(blood_volume && blood_volume > max(BLOOD_VOLUME_NORMAL*(1 - brute_ratio * 0.25), 0)) // don't leave trail if blood volume below a threshold + setBlood(max(blood_volume - max(1, brute_ratio * 2), 0)) // that depends on our brute damage. var/newdir = get_dir(T, loc) + if(newdir != src.dir) newdir = newdir | dir + if(newdir == 3) //N + S newdir = NORTH + else if(newdir == 12) //E + W newdir = EAST + if((newdir in GLOB.cardinal) && (prob(50))) newdir = turn(get_dir(T, loc), 180) + if(!blood_exists) new /obj/effect/decal/cleanable/trail_holder(loc) + for(var/obj/effect/decal/cleanable/trail_holder/TH in loc) if((!(newdir in TH.existing_dirs) || trail_type == "trails_1" || trail_type == "trails_2") && TH.existing_dirs.len <= 16) //maximum amount of overlays is 16 (all light & heavy directions filled) TH.existing_dirs += newdir TH.overlays.Add(image('icons/effects/blood.dmi', trail_type, dir = newdir)) TH.transfer_mob_blood_dna(src) + if(ishuman(src)) var/mob/living/carbon/human/H = src + if(H.dna.species.blood_color) TH.color = H.dna.species.blood_color + else TH.color = "#A10808" @@ -1250,6 +1336,10 @@ /mob/living/proc/flash_eyes(intensity = 1, override_blindness_check, affect_silicon, visual, type = /atom/movable/screen/fullscreen/flash) if(HAS_TRAIT(src, TRAIT_GODMODE)) return FALSE + + if(SEND_SIGNAL(src, COMSIG_LIVING_EARLY_FLASH_EYES, intensity, override_blindness_check, affect_silicon, visual, type) & STOP_FLASHING_EYES) + return FALSE + if(check_eye_prot() < intensity && (override_blindness_check || !HAS_TRAIT(src, TRAIT_BLIND))) overlay_fullscreen("flash", type) addtimer(CALLBACK(src, PROC_REF(clear_fullscreen), "flash", 25), 25) @@ -1381,7 +1471,7 @@ . = TRUE to_chat(user, span_notice("You begin to butcher [src]...")) playsound(loc, 'sound/weapons/slice.ogg', 50, TRUE, -1) - if(!do_after(user, 4 SECONDS * mob_size, src, NONE, max_interact_count = 1, cancel_on_max = TRUE) || !Adjacent(user)) + if(!do_after(user, I.has_speed_harvest ? 1 SECONDS : (4 SECONDS * mob_size), src, NONE, max_interact_count = 1, cancel_on_max = TRUE) || !Adjacent(user)) return . harvest(user) @@ -1627,68 +1717,10 @@ target.devoured(grabber) -/mob/living/proc/update_z(new_z) // 1+ to register, null to unregister - if(registered_z == new_z) - return - if(registered_z) - SSmobs.clients_by_zlevel[registered_z] -= src - if(isnull(client)) - registered_z = null - return - if(!new_z) - registered_z = new_z - return - //Figure out how many clients were here before - var/oldlen = SSmobs.clients_by_zlevel[new_z].len - SSmobs.clients_by_zlevel[new_z] += src - for(var/index in length(SSidlenpcpool.idle_mobs_by_zlevel[new_z]) to 1 step -1) //Backwards loop because we're removing (guarantees optimal rather than worst-case performance), it's fine to use .len here but doesn't compile on 511 - var/mob/living/simple_animal/animal = SSidlenpcpool.idle_mobs_by_zlevel[new_z][index] - if(animal) - if(!oldlen) - //Start AI idle if nobody else was on this z level before (mobs will switch off when this is the case) - animal.toggle_ai(AI_IDLE) - //If they are also within a close distance ask the AI if it wants to wake up - if(get_dist(get_turf(src), get_turf(animal)) < MAX_SIMPLEMOB_WAKEUP_RANGE) - animal.consider_wakeup() // Ask the mob if it wants to turn on it's AI - //They should clean up in destroy, but often don't so we get them here - else - SSidlenpcpool.idle_mobs_by_zlevel[new_z] -= animal - registered_z = new_z - - /mob/living/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents = TRUE) ..() update_z(new_turf?.z) -/mob/living/proc/owns_soul() - if(mind) - return mind.soulOwner == mind - return 1 - -/mob/living/proc/return_soul() - if(mind) - if(mind.soulOwner.devilinfo)//Not sure how this could happen, but whatever. - mind.soulOwner.devilinfo.remove_soul(mind) - mind.soulOwner = mind - mind.damnation_type = 0 - -/mob/living/proc/has_bane(banetype) - if(mind) - if(mind.devilinfo) - return mind.devilinfo.bane == banetype - return 0 - -/mob/living/proc/check_weakness(obj/item/weapon, mob/living/attacker) - if(mind && mind.devilinfo) - return check_devil_bane_multiplier(weapon, attacker) - return 1 - -/mob/living/proc/check_acedia() - if(src.mind && src.mind.objectives) - for(var/datum/objective/sintouched/acedia/A in src.mind.objectives) - return 1 - return 0 - /mob/living/proc/fakefireextinguish() return @@ -1799,6 +1831,11 @@ return var/examine_time = target.get_examine_time() + + var/obj/item/organ/internal/eyes/eyes = get_organ_slot(INTERNAL_ORGAN_EYES) + if(eyes) + examine_time *= eyes.examine_mod + if(examine_time && target != src) var/visible_gender = target.get_visible_gender() var/visible_species = "Unknown" @@ -1838,6 +1875,9 @@ return TRUE return FALSE +/mob/living/examine(mob/user, infix, suffix) + . = ..() + SEND_SIGNAL(src, COMSIG_LIVING_EXAMINE, user, .) /** * Sets the mob's direction lock towards a given atom. @@ -2165,8 +2205,8 @@ update_blind_effects() update_blurry_effects() update_unconscious_overlay() - GLOB.alive_mob_list += src - GLOB.dead_mob_list -= src + add_to_alive_mob_list() + remove_from_dead_mob_list() switch(stat) //Current stat. if(CONSCIOUS) @@ -2179,8 +2219,8 @@ SetLoseBreath(0) SetDisgust(0) SetEyeBlurry(0) - GLOB.alive_mob_list -= src - GLOB.dead_mob_list += src + remove_from_alive_mob_list() + add_to_dead_mob_list() /// Updates hands HUD element. @@ -2322,3 +2362,20 @@ . |= RECHARGE_SUCCESSFUL to_chat(src, span_notice("You feel [(. & RECHARGE_SUCCESSFUL) ? "raw magical energy flowing through you, it feels good!" : "very strange for a moment, but then it passes."]")) + +/mob/living/proc/set_name() + if(numba == 0) + numba = rand(1, 1000) + name = "[name] ([numba])" + real_name = name + +// used by secbot and monkeys Crossed +/mob/living/proc/knockOver(mob/living/carbon/target) + if(target.key) //save us from monkey hordes + target.visible_message(span_warning("[pick( \ + "[target] спотыка[pluralize_ru(target.gender, "ет", "ют")]ся об [declent_ru(GENITIVE)]!", \ + "[target] опрокидыва[pluralize_ru(target.gender, "ет", "ют")]ся на [declent_ru(GENITIVE)]!", \ + "[target] отлета[pluralize_ru(target.gender, "ет", "ют")] с пути [declent_ru(GENITIVE)]!", \ + "[capitalize(declent_ru(NOMINATIVE))] сбивает [target]!", \ + "[capitalize(declent_ru(NOMINATIVE))] влетает в [target], заставляя [genderize_ru(target.gender, "его", "её", "его", "их")] упасть!", \ + "[capitalize(declent_ru(NOMINATIVE))] опрокидывает [target]!")]")) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 26a49da0a8ed..69f8d4f3c896 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -43,7 +43,7 @@ /mob/living/proc/is_eyes_covered(check_glasses = TRUE, check_head = TRUE, check_mask = TRUE) return FALSE -/mob/living/bullet_act(var/obj/item/projectile/P, var/def_zone) +/mob/living/bullet_act(var/obj/projectile/P, var/def_zone) //Armor var/armor = run_armor_check(def_zone, P.flag, armour_penetration = P.armour_penetration) if(!P.nodamage) @@ -52,7 +52,7 @@ check_projectile_dismemberment(P, def_zone) return P.on_hit(src, armor, def_zone) -/mob/living/proc/check_projectile_dismemberment(obj/item/projectile/P, def_zone) +/mob/living/proc/check_projectile_dismemberment(obj/projectile/P, def_zone) return 0 @@ -74,17 +74,24 @@ apply_damage(shock_damage, BURN, spread_damage = TRUE) if(shock_damage > 200) playsound(loc, 'sound/effects/eleczap.ogg', 50, 1, -1) - explosion(loc, -1, 0, 2, 2, cause = "[source] over electrocuted [name]") + explosion(loc, -1, 0, 2, 2, cause = "[name] over electrocuted by [source]") else apply_damage(shock_damage, STAMINA) if(!(flags & SHOCK_SUPPRESS_MESSAGE)) visible_message( span_danger("[name] получа[pluralize_ru(gender,"ет","ют")] удар током от [source]!"), - span_userdanger("Вы чувствуете как через Ваше тело проходит электрический разряд!"), + span_userdanger("Вы чувствуете как через ваше тело проходит электрический разряд!"), span_hear("Вы слышите громкий электрический треск."), ) return shock_damage +/mob/living/blob_vore_act(obj/structure/blob/special/core/voring_core) + . = ..() + if(HAS_TRAIT(src, TRAIT_BLOB_ZOMBIFIED) || QDELETED(src)) + return FALSE + if(stat == DEAD) + forceMove(voring_core) + /mob/living/emp_act(severity) ..() @@ -185,8 +192,8 @@ /mob/living/proc/IgniteMob() if(fire_stacks > 0 && !on_fire) on_fire = TRUE - visible_message("[src.declent_ru(NOMINATIVE)] загора[pluralize_ru(src.gender,"ется","ются")]!", \ - "[pluralize_ru(src.gender,"Ты загораешься","Вы загораетесь")]!") + visible_message(span_warning("[src.declent_ru(NOMINATIVE)] загора[pluralize_ru(src.gender,"ется","ются")]!"), \ + span_userdanger("[pluralize_ru(src.gender,"Ты загораешься","Вы загораетесь")]!")) set_light_range(light_range + 3) set_light_color("#ED9200") throw_alert("fire", /atom/movable/screen/alert/fire) @@ -212,6 +219,8 @@ /mob/living/proc/adjust_fire_stacks(add_fire_stacks) //Adjusting the amount of fire_stacks we have on person SEND_SIGNAL(src, COMSIG_MOB_ADJUST_FIRE) fire_stacks = clamp(fire_stacks + add_fire_stacks, -20, 20) + var/datum/status_effect/stacking/wet/wet_effect = has_status_effect(/datum/status_effect/stacking/wet) + wet_effect?.combine_wet_and_fire() if(on_fire && fire_stacks <= 0) ExtinguishMob() @@ -239,6 +248,24 @@ SEND_SIGNAL(src, COMSIG_LIVING_FIRE_TICK) return TRUE +/mob/living/proc/WetMob(wet_type = /datum/status_effect/stacking/wet) + var/datum/status_effect/stacking/wet/effect = has_status_effect(wet_type) + return effect?.WetMob() + + +/mob/living/proc/adjust_wet_stacks(add_wet_stacks, wet_type = /datum/status_effect/stacking/wet) //Adjusting the amount of fire_stacks we have on person + var/datum/status_effect/stacking/wet/effect = has_status_effect(wet_type) + if(effect) + effect.add_stacks(add_wet_stacks) + else + apply_status_effect(wet_type, add_wet_stacks) + + +/mob/living/proc/DryMob(wet_type = /datum/status_effect/stacking/wet) + var/datum/status_effect/stacking/wet/effect = has_status_effect(wet_type) + return effect?.DryMob() + + /mob/living/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay = TRUE) ..() adjust_fire_stacks(3) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 0ee33dffb53d..ede980b09be9 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -38,6 +38,7 @@ var/on_fire = 0 //The "Are we on fire?" var var/fire_stacks = 0 //Tracks how many stacks of fire we have on, max is usually 20 + var/mob_size = MOB_SIZE_HUMAN var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature.. var/digestion_ratio = 1 //controls how quickly reagents metabolize; largely governered by species attributes. @@ -66,6 +67,9 @@ var/gene_stability = DEFAULT_GENE_STABILITY var/ignore_gene_stability = 0 + /// the id a mob gets when it's created + var/numba = 0 + var/unique_name = FALSE /// A log of what we've said, plain text, no spans or junk, essentially just each individual "message" var/list/say_log @@ -141,3 +145,6 @@ /// Famous last words -- if succumbing, what the user's last words were var/last_words + + /// List of alpha changelog from various sources + var/list/alphas = list(ALPHA_SOURCE_DEFAULT = 1) diff --git a/code/modules/mob/living/living_infected_blob_mobs.dm b/code/modules/mob/living/living_infected_blob_mobs.dm index 659708634763..b86bf2aac479 100644 --- a/code/modules/mob/living/living_infected_blob_mobs.dm +++ b/code/modules/mob/living/living_infected_blob_mobs.dm @@ -101,6 +101,10 @@ return FALSE +/mob/living/simple_animal/hostile/illusion/can_be_blob() + return FALSE + + /mob/living/simple_animal/hostile/asteroid/can_be_blob() return FALSE diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm index be1a0129fd8a..16d4b9b6285a 100644 --- a/code/modules/mob/living/living_say.dm +++ b/code/modules/mob/living/living_say.dm @@ -199,13 +199,17 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key) return returns -/mob/living/say(message, verb = "says", sanitize = TRUE, ignore_speech_problems = FALSE, ignore_atmospherics = FALSE, ignore_languages = FALSE) +/mob/living/say(message, verb = "говор[pluralize_ru(gender, "ит", "ят")]", sanitize = TRUE, ignore_speech_problems = FALSE, ignore_atmospherics = FALSE, ignore_languages = FALSE) if(client) client.check_say_flood(5) if(check_mute(client.ckey, MUTE_IC)) to_chat(src, span_danger("You cannot speak in IC (Muted).")) return FALSE + var/sigreturn = SEND_SIGNAL(src, COMSIG_MOB_TRY_SPEECH, message) + if(sigreturn & COMPONENT_CANNOT_SPEAK) + return FALSE + if(sanitize) message = trim_strip_html_properly(message, 512) @@ -234,6 +238,17 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key) var/datum/multilingual_say_piece/first_piece = message_pieces[1] + if(SEND_SIGNAL( \ + src, \ + COMSIG_LIVING_EARLY_SAY, \ + message, \ + verb, \ + ignore_speech_problems, \ + ignore_atmospherics, \ + ignore_languages, \ + first_piece) & COMPONENT_PREVENT_SPEAKING) + return FALSE + if(first_piece.speaking?.flags & HIVEMIND) first_piece.speaking.broadcast(src, first_piece.message) return TRUE @@ -270,6 +285,11 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key) ignore_atmospherics = TRUE if(is_muzzled()) + var/obj/item/organ/internal/cyberimp/mouth/translator/translator = get_organ_slot(INTERNAL_ORGAN_SPEECH_TRANSLATOR) + if(translator) // we can whisper with translator and muzzle + whisper_say(message_pieces) + return TRUE + var/obj/item/clothing/mask/muzzle/G = wear_mask if(G.mute == MUZZLE_MUTE_ALL) //if the mask is supposed to mute you completely or just muffle you to_chat(src, span_danger("You're muzzled and cannot speak!")) @@ -290,6 +310,9 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key) var/list/hsp = handle_speech_problems(message_pieces, verb) verb = hsp["verb"] + if(cannot_speak_loudly()) + return whisper(message) + var/list/used_radios = list() if(handle_message_mode(message_mode, message_pieces, verb, used_radios)) return TRUE @@ -383,7 +406,7 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key) var/speech_bubble_test = say_test(message) for(var/mob/M in listening) - M.hear_say(message_pieces, verb, italics, src, speech_sound, sound_vol, sound_frequency) + M.hear_say(message_pieces, verb, italics, src, speech_sound, sound_vol, sound_frequency, FALSE) if(M.client) speech_bubble_recipients.Add(M.client) @@ -438,7 +461,7 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key) return src -/mob/living/whisper_say(list/message_pieces, verb = "whispers") +/mob/living/whisper_say(list/message_pieces, verb = "шепч%(ет,ут)%") if(client && check_mute(client.ckey, MUTE_IC)) to_chat(src, span_danger("You cannot speak in IC (Muted).")) return @@ -446,7 +469,8 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key) if(stat) return - if(is_muzzled()) + var/obj/item/organ/internal/cyberimp/mouth/translator/translator = get_organ_slot(INTERNAL_ORGAN_SPEECH_TRANSLATOR) + if(is_muzzled() && !translator?.active) if(istype(wear_mask, /obj/item/clothing/mask/muzzle/tapegag)) //just for tape to_chat(src, span_danger("Your mouth is taped and you cannot speak!")) else @@ -470,24 +494,24 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key) var/datum/multilingual_say_piece/first_piece = message_pieces[1] if(first_piece.speaking) - if(first_piece.speaking.whisper_verb) - verb = first_piece.speaking.whisper_verb - not_heard = "[verb] something" + if(first_piece.speaking.whisper_verbs) + verb = pick(first_piece.speaking.whisper_verbs) + not_heard = "[verb] что-то" else - var/adverb = pick("quietly", "softly") + var/adverb = pick("еле слышно", "едва слышно", "тихо", "очень тихо", "негромко") adverb_added = TRUE - verb = "[first_piece.speaking.speech_verb] [adverb]" - not_heard = "[first_piece.speaking.speech_verb] something [adverb]" + verb = "[adverb] [genderize_decode(src, pick(first_piece.speaking.speech_verbs))]" + not_heard = "[adverb] [genderize_decode(src, pick(first_piece.speaking.speech_verbs))] что-то" else - not_heard = "[verb] something" + not_heard = "[genderize_decode(src, verb)] что-то" var/list/hsp = handle_speech_problems(message_pieces, verb) verb = hsp["verb"] - if(verb == "yells loudly") - verb = "slurs emphatically" + if(verb == "громко крич%(ит,ат)%") + verb = "громко бормоч%(ет,ут)%" else if(!adverb_added) - var/adverb = pick("quietly", "softly") - verb = "[verb] [adverb]" + var/adverb = pick("еле слышно", "едва слышно", "тихо", "очень тихо", "негромко") + verb = "[adverb] [genderize_decode(src, verb)]" var/atom/whisper_loc = get_whisper_loc() var/list/listening = hear(message_range, whisper_loc) @@ -543,14 +567,14 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key) var/speech_bubble_test = say_test(message) for(var/mob/M in listening) - M.hear_say(message_pieces, verb, italics, src, use_voice = FALSE) + M.hear_say(message_pieces, verb, italics, src, use_voice = FALSE, is_whisper = TRUE) if(M.client) speech_bubble_recipients.Add(M.client) if(eavesdropping.len) stars_all(message_pieces) //hopefully passing the message twice through stars() won't hurt... I guess if you already don't understand the language, when they speak it too quietly to hear normally you would be able to catch even less. for(var/mob/M in eavesdropping) - M.hear_say(message_pieces, verb, italics, src, use_voice = FALSE) + M.hear_say(message_pieces, verb, italics, src, use_voice = FALSE, is_whisper = TRUE) if(M.client) speech_bubble_recipients.Add(M.client) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 74bb56e8bd94..80d5d4043dbb 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -47,6 +47,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( sight = SEE_TURFS | SEE_MOBS | SEE_OBJS nightvision = 8 can_buckle_to = FALSE + hud_type = /datum/hud/ai var/list/network = list("SS13","Telecomms","Research Outpost","Mining Outpost") var/obj/machinery/camera/current = null var/list/connected_robots = list() @@ -128,7 +129,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( announcement.title = "Оповещение ИИ" announcement.announcement_type = "Оповещение ИИ" announcement.announcer = name - announcement.newscast = 0 + announcement.newscast = FALSE var/list/possibleNames = GLOB.ai_names @@ -216,6 +217,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( /mob/living/silicon/ai/Initialize(mapload) . = ..() add_traits(list(TRAIT_PULL_BLOCKED, TRAIT_HANDS_BLOCKED), ROUNDSTART_TRAIT) + AddElement(/datum/element/high_value_item) /mob/living/silicon/ai/proc/on_mob_init() @@ -659,9 +661,8 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( /mob/living/silicon/ai/blob_act(obj/structure/blob/B) if(stat != DEAD) adjustBruteLoss(60) - return 1 - return 0 - + return TRUE + return TRUE /mob/living/silicon/ai/emp_act(severity) ..() @@ -813,7 +814,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( if(target) open_nearest_door(target) -/mob/living/silicon/ai/bullet_act(var/obj/item/projectile/Proj) +/mob/living/silicon/ai/bullet_act(var/obj/projectile/Proj) ..(Proj) return 2 @@ -1335,12 +1336,18 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( on_the_card = TRUE aiRestorePowerRoutine = 0//So the AI initially has power. update_blind_effects() + update_sight() control_disabled = TRUE//Can't control things remotely if you're stuck in a card! aiRadio.disabledAi = TRUE //No talking on the built-in radio for you either! forceMove(card) //Throw AI into the card. to_chat(src, "You have been downloaded to a mobile storage device. Remote device connection severed.") to_chat(user, "Transfer successful: [name] ([rand(1000,9999)].exe) removed from host terminal and stored within local memory.") +/mob/living/silicon/ai/can_perform_action(atom/target, action_bitflags) + if(control_disabled) + to_chat(src, span_warning("You can't do that right now!")) + return FALSE + return can_see(target) && ..() //stop AIs from leaving windows open and using then after they lose vision /mob/living/silicon/ai/switch_to_camera(obj/machinery/camera/C) if(!C.can_use() || !is_in_chassis()) @@ -1351,7 +1358,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( return TRUE -/mob/living/silicon/ai/proc/can_see(atom/A) +/mob/living/silicon/ai/can_see(atom/A) if(isturf(loc)) //AI in core, check if on cameras //get_turf_pixel() is because APCs in maint aren't actually in view of the inner camera //apc_override is needed here because AIs use their own APC when depowered @@ -1520,3 +1527,11 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( SEND_SIGNAL(src, COMSIG_MOB_UPDATE_SIGHT) sync_lighting_plane_alpha() + + +/mob/living/silicon/ai/ghostize(can_reenter_corpse) + var/old_turf = get_turf(eyeobj) + . = ..() + if(isobserver(.)) + var/mob/dead/observer/ghost = . + ghost.forceMove(old_turf) diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm index ff7645f789f9..3576ad901f9a 100644 --- a/code/modules/mob/living/silicon/ai/death.dm +++ b/code/modules/mob/living/silicon/ai/death.dm @@ -26,11 +26,7 @@ if(doomsday_device) doomsday_device.timing = 0 - SSshuttle.emergencyNoEscape = 0 - if(SSshuttle.emergency.mode == SHUTTLE_STRANDED) - SSshuttle.emergency.mode = SHUTTLE_DOCKED - SSshuttle.emergency.timer = world.time - GLOB.priority_announcement.Announce("Вредоносное окружение устранено. У вас есть 3 минуты, чтобы подняться на борт эвакуационного шаттла.", "Приоритетное оповещение.", 'sound/AI/shuttledock.ogg') + SSshuttle.remove_hostile_environment(doomsday_device, 'sound/AI/shuttledock.ogg') qdel(doomsday_device) if(explosive) diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index 1db3c6566cb9..02c1f38e8b68 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -41,6 +41,7 @@ if(!force_update && (destination == get_turf(src))) return //we are already here! abstract_move(destination) + SEND_SIGNAL(src, COMSIG_AI_EYE_MOVED, destination) if(use_static) ai.camera_visibility(src) if(ai.client) @@ -176,7 +177,7 @@ to_chat(src, span_notice("You move down.")) -/mob/camera/aiEye/hear_say(list/message_pieces, verb = "says", italics = 0, mob/speaker = null, sound/speech_sound, sound_vol, sound_frequency, use_voice = TRUE) +/mob/camera/aiEye/hear_say(list/message_pieces, verb = "says", italics = 0, mob/speaker = null, sound/speech_sound, sound_vol, sound_frequency, use_voice = TRUE, is_whisper = FALSE) if(relay_speech) if(istype(ai)) ai.relay_speech(speaker, message_pieces, verb) diff --git a/code/modules/mob/living/silicon/ai/latejoin.dm b/code/modules/mob/living/silicon/ai/latejoin.dm index e7d73caf56ae..8d547e0d37c2 100644 --- a/code/modules/mob/living/silicon/ai/latejoin.dm +++ b/code/modules/mob/living/silicon/ai/latejoin.dm @@ -26,6 +26,8 @@ GLOBAL_LIST_EMPTY(empty_playable_ai_cores) mind.objectives.Cut() mind.special_role = null + view_core() + // Ghost the current player and allow or disallow them to respawn, depends on time if(TOO_EARLY_TO_GHOST) ghostize(FALSE) diff --git a/code/modules/mob/living/silicon/ai/update_status.dm b/code/modules/mob/living/silicon/ai/update_status.dm index 989330dedfc2..c351e0ee6ce1 100644 --- a/code/modules/mob/living/silicon/ai/update_status.dm +++ b/code/modules/mob/living/silicon/ai/update_status.dm @@ -10,4 +10,4 @@ ..() /mob/living/silicon/ai/has_vision(information_only = FALSE) - return ..() && !lacks_power() + return ..() && (!lacks_power() || on_the_card) diff --git a/code/modules/mob/living/silicon/death.dm b/code/modules/mob/living/silicon/death.dm index e3383f980b5f..df12411bfd4a 100644 --- a/code/modules/mob/living/silicon/death.dm +++ b/code/modules/mob/living/silicon/death.dm @@ -16,7 +16,7 @@ drop_hat() - GLOB.dead_mob_list -= src + remove_from_dead_mob_list() spawn(15) if(animation) qdel(animation) if(src) qdel(src) @@ -28,7 +28,7 @@ icon = null invisibility = INVISIBILITY_ABSTRACT dust_animation() - GLOB.dead_mob_list -= src + remove_from_dead_mob_list() QDEL_IN(src, 15) return TRUE diff --git a/code/modules/mob/living/silicon/decoy/death.dm b/code/modules/mob/living/silicon/decoy/death.dm index 244878e84da2..3ff115213b8e 100644 --- a/code/modules/mob/living/silicon/decoy/death.dm +++ b/code/modules/mob/living/silicon/decoy/death.dm @@ -5,7 +5,7 @@ return FALSE icon_state = "ai-crash" for(var/obj/machinery/ai_status_display/display as anything in GLOB.ai_displays) //change status - if(atoms_share_level(display, src)) + if(are_zs_connected(display, src)) display.mode = AI_DISPLAY_MODE_BSOD display.update_icon(UPDATE_OVERLAYS) gib() diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm index 674537abc575..fa8197fc23ec 100644 --- a/code/modules/mob/living/silicon/pai/death.dm +++ b/code/modules/mob/living/silicon/pai/death.dm @@ -2,11 +2,14 @@ if(can_die()) if(!cleanWipe) force_fold_out() + visible_message(span_warning("[name] издаёт последний протяжный писк прежде, чем теряет питание и рассыпается на части..")) + else + card.visible_message(span_warning("Экран персонального ИИ медленно угасает, когда личность покидает устройство...")) - visible_message("[src] emits a dull beep before it loses power and collapses.", "You hear a dull beep followed by the sound of glass crunching.") name = "pAI debris" - desc = "The unfortunate remains of some poor personal AI device." + desc = "Дымящиеся останки какого-то несчастного персонального ИИ." icon_state = "[chassis]_dead" + silence_time = null // Only execute the below if we successfully died . = ..(gibbed) diff --git a/code/modules/mob/living/silicon/pai/life.dm b/code/modules/mob/living/silicon/pai/life.dm index d79775fad3d4..0d5b713b66bd 100644 --- a/code/modules/mob/living/silicon/pai/life.dm +++ b/code/modules/mob/living/silicon/pai/life.dm @@ -4,16 +4,18 @@ . = ..() if(QDELETED(src) || stat == DEAD) return + if(silence_time) if(world.timeofday >= silence_time) silence_time = null - to_chat(src, "Communication circuit reinitialized. Speech and messaging functionality restored.") + if(stat != DEAD) + to_chat(src, span_notice("Модуль связи восстановлен. Функции передачи речи и сообщений восстановлены.") ) if(installed_software["doorjack"]) var/datum/pai_software/door_jack/DJ = installed_software["doorjack"] if(DJ.cable) if(get_dist(src, DJ.cable) > 1) - visible_message("The data cable connected to [src] rapidly retracts back into its spool!") + visible_message(span_warning("Кабель данных, подключенный к пИИ, быстро втягивается обратно!")) QDEL_NULL(DJ.cable) if(installed_software["sec_chem"]) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 61126bd3c843..251f12a316bf 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -1,5 +1,6 @@ /mob/living/silicon/pai name = "pAI" + desc = "Вам бы хотелось его погладить." icon = 'icons/mob/pai.dmi' icon_state = "repairbot" @@ -84,7 +85,6 @@ var/obj/machinery/computer/security/camera_bug/integrated_console //Syndicate's pai camera bug var/obj/machinery/computer/secure_data/integrated_records - var/obj/item/gps/internal/pai_gps/pai_internal_gps var/translator_on = 0 // keeps track of the translator module var/flashlight_on = FALSE //keeps track of the flashlight module @@ -114,10 +114,13 @@ if(card) faction = card.faction.Copy() + sradio = new(src) + if(card) if(!card.radio) card.radio = new /obj/item/radio/headset(card) + radio = card.radio radio_name = name @@ -134,23 +137,26 @@ add_verb(src, /mob/living/silicon/pai/proc/choose_verbs) add_verb(src, /mob/living/silicon/pai/proc/pai_change_voice) - var/datum/action/innate/pai_soft/P = new - P.Grant(src) + var/datum/action/innate/pai_soft/pai_soft = new var/datum/action/innate/pai_soft/pai_choose_chassis/pai_choose_chassis_action = new - pai_choose_chassis_action.Grant(src) var/datum/action/innate/pai_soft/pai_fold_out/pai_fold_out_action = new - pai_fold_out_action.Grant(src) var/datum/action/innate/pai_soft/pai_fold_up/pai_fold_up_action = new - pai_fold_up_action.Grant(src) var/datum/action/innate/pai_soft/pai_change_voice/pai_change_voice_action = new + var/datum/action/innate/pai_soft/pai_suicide/pai_suicide_action = new + + pai_soft.Grant(src) + pai_choose_chassis_action.Grant(src) + pai_fold_out_action.Grant(src) + pai_fold_up_action.Grant(src) pai_change_voice_action.Grant(src) - var/datum/action/innate/pai/pai_suicide/pai_suicide_action = new pai_suicide_action.Grant(src) - //PDA + + /// PDA pda = new(src) pda.ownjob = "Personal Assistant" pda.owner = "[src]" pda.name = "[pda.owner] ([pda.ownjob])" + var/datum/data/pda/app/messenger/M = pda.find_program(/datum/data/pda/app/messenger) M.toff = TRUE @@ -162,24 +168,40 @@ integrated_records.parent = src integrated_records.req_access = list() - pai_internal_gps = new(src) - pai_internal_gps.parent = src - reset_software() -/mob/living/silicon/pai/proc/reset_software(var/extra_memory = 0) +/mob/living/silicon/pai/proc/reset_software() QDEL_LIST_ASSOC_VAL(installed_software) // Software modules. No these var names have nothing to do with photoshop for(var/PS in subtypesof(/datum/pai_software)) var/datum/pai_software/PSD = new PS(src) + if(PSD.is_active(src)) PSD.toggle(src) + if(PSD.default) installed_software[PSD.id] = PSD + gps.tracking = FALSE + active_software = installed_software["mainmenu"] // Default us to the main menu - ram = min(initial(ram) + extra_memory, 170) + SStgui.close_user_uis(src) + reset_memory() + +/mob/living/silicon/pai/proc/reset_memory() + // Handle RAM + ram = initial(ram) + + if(!card) + return + + var/obj/item/pai_cartridge/memory/memory_cartridge = (locate(/obj/item/pai_cartridge/memory) in card.upgrades) + if(memory_cartridge) + ram += memory_cartridge.extra_memory + + if(card.upgrade) + ram += card.upgrade.extra_memory /mob/living/silicon/pai/update_icons() @@ -192,7 +214,11 @@ /mob/living/silicon/pai/proc/show_silenced() if(silence_time) var/timeleft = round((silence_time - world.timeofday)/10 ,1) - return list("Communications system reboot in:", "-[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]") + return list("Перезагрузка систем связи через:", "[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]") + + +/mob/living/silicon/pai/init_subsystems() + gps = new(src, gpstag = "pAI0", upgraded = TRUE, tracking = FALSE) /mob/living/silicon/pai/get_status_tab_items() @@ -204,8 +230,8 @@ /mob/living/silicon/pai/blob_act() if(stat != DEAD) adjustBruteLoss(60) - return 1 - return 0 + return TRUE + return FALSE /mob/living/silicon/pai/emp_act(severity) @@ -214,20 +240,25 @@ // 33% chance to unbind // 33% chance to change prime directive (based on severity) // 33% chance of no additional effect + if(QDELETED(src) || stat == DEAD) + return silence_time = world.timeofday + 120 * 10 // Silence for 2 minutes - to_chat(src, "Communication circuit overload. Shutting down and reloading communication circuits - speech and messaging functionality will be unavailable until the reboot is complete.") + to_chat(src, span_danger("Системы связи перегружены! Инициирована перезагрузка повреждённых систем. Все модули коммуникации недоступны на время перезагрузки.")) if(prob(20)) - var/turf/T = get_turf_or_move(loc) - for(var/mob/M in viewers(T)) - M.show_message("A shower of sparks spray from [src]'s inner workings.", 3, "You hear and smell the ozone hiss of electrical sparks being expelled violently.", 2) + visible_message( + span_warning("[name] выходит из строя, испуская фонтан искр!"), + blind_message = ("Вы слышите шипение искр и чувствуете запах гари."), + ) + + do_sparks(3, FALSE, src) return death(0) switch(pick(1, 2 ,3)) if(1) master = null master_dna = null - to_chat(src, "You feel unbound.") + to_chat(src, span_notice("Вы чувствуете себя свободным!")) if(2) var/command if(severity == 1) @@ -237,7 +268,7 @@ pai_law0 = "[command] your master." to_chat(src, "Pr1m3 d1r3c71v3 uPd473D.") if(3) - to_chat(src, "You feel an electric surge run through your circuitry and become acutely aware at how lucky you are that you can still feel at all.") + to_chat(src, span_warning(" Вы чувствуете, как электрический разряд проходит сквозь ваши микросхемы и осознаёте, как сильно вам повезло, что вы вообще можете ещё чувствовать что-либо...")) /mob/living/silicon/pai/ex_act(severity) ..() @@ -253,6 +284,11 @@ if(EXPLODE_LIGHT) apply_damage(30) +// See software.dm for Topic() +/mob/living/silicon/pai/can_perform_action(atom/target, action_bitflags) + action_bitflags |= ALLOW_RESTING // Resting is just an aesthetic feature for them + action_bitflags &= ~ALLOW_SILICON_REACH // They don't get long reach like the rest of silicons + return ..(target, action_bitflags) // See software.dm for ui_act() @@ -275,24 +311,25 @@ return if(loc != card) - balloon_alert(src, "вы уже встали на шасси!") + balloon_alert(src, "вы уже встали на шасси!") return if(world.time <= last_special) - balloon_alert(src, "необходимо подождать!") + balloon_alert(src, "необходимо подождать!") return last_special = world.time + 200 //I'm not sure how much of this is necessary, but I would rather avoid issues. force_fold_out() + visible_message(span_notice("[name] раскладывается, переходя в мобильную форму."), span_notice("Вы раскладываетесь в мобильную форму.")) - visible_message("[src] folds outwards, expanding into a mobile form.", "You fold outwards, expanding into a mobile form.") /mob/living/silicon/pai/proc/force_fold_out() - if(istype(card.loc, /mob)) + if(ismob(card.loc)) var/mob/holder = card.loc holder.drop_item_ground(card) + else if(is_pda(card.loc)) var/obj/item/pda/holder = card.loc holder.pai = null @@ -310,11 +347,11 @@ return if(loc == card) - balloon_alert(src, "вы уже в компактной форме!") + balloon_alert(src, "вы уже в компактной форме!") return if(world.time <= last_special) - balloon_alert(src, "необходимо подождать") + balloon_alert(src, "необходимо подождать") return close_up() @@ -324,8 +361,6 @@ set name = "Choose Chassis" var/list/my_choices = list() - var/choice - var/finalized = "No" //check for custom_sprite if(!custom_sprite) @@ -355,27 +390,25 @@ my_choices["Custom"] = "[ckey]-pai" if(loc == card) //don't let them continue in card form, since they won't be able to actually see their new mobile form sprite. - balloon_alert(src, "вы должны быть в мобильной форме.") + balloon_alert(src, "вы должны быть в мобильной форме!") return - while(finalized == "No" && client) - choice = input(usr,"What would you like to use for your mobile chassis icon? This decision can only be made once.") as null|anything in my_choices - if(!choice) return - if(choice == "Custom") - icon = 'icons/mob/custom_synthetic/custom-synthetic.dmi' - else - icon = 'icons/mob/pai.dmi' - icon_state = my_choices[choice] - finalized = alert("Look at your sprite. Is this what you wish to use?",,"No","Yes") + var/choice = tgui_input_list(usr, "Как бы вы хотели выглядеть? Вы можете менять внешность мобильной формы без ограничений.", "Смена формы", my_choices) + if(!choice) return + if(choice == "Custom") + icon = 'icons/mob/custom_synthetic/custom-synthetic.dmi' + else + icon = 'icons/mob/pai.dmi' + icon_state = my_choices[choice] chassis = my_choices[choice] - remove_verb(src, /mob/living/silicon/pai/proc/choose_chassis) + /mob/living/silicon/pai/proc/choose_verbs() set category = "pAI Commands" set name = "Choose Speech Verbs" - var/choice = input(usr,"What theme would you like to use for your speech verbs? This decision can only be made once.") as null|anything in possible_say_verbs + var/choice = tgui_input_list(usr, "Какой тип модуляции речи вы бы хотели использовать? Этот выбор можно сделать лишь единожды.", "Модуляция речи", possible_say_verbs) if(!choice) return var/list/sayverbs = possible_say_verbs[choice] @@ -385,6 +418,7 @@ remove_verb(src, /mob/living/silicon/pai/proc/choose_verbs) + /mob/living/silicon/pai/proc/pai_change_voice() set name = "Change Voice" set desc = "Express yourself!" @@ -395,6 +429,7 @@ /mob/living/silicon/pai/post_lying_on_rest() if(stat == DEAD) return + ADD_TRAIT(src, TRAIT_IMMOBILIZED, RESTING_TRAIT) update_icons() @@ -409,11 +444,11 @@ set name = "pAI Suicide" set desc = "Kill yourself and become a ghost (You will recieve a confirmation prompt.)" - if(alert("ДЕЙСТВИТЕЛЬНО хочешь убить себя? Это действие нельзя отменить.", "Suicide", "No", "Suicide") == "Suicide") + if(tgui_alert(src, "ДЕЙСТВИТЕЛЬНО хотите убить себя? Это действие нельзя отменить.", "Выгрузка личности", list("Выгрузиться", "Нет")) == "Выгрузиться") do_suicide() - else - balloon_alert(src, "протокол самоуничтожения отменен.") + balloon_alert(src, "протокол выгрузки отменён") + /mob/living/silicon/pai/update_sight() if(!client) @@ -453,23 +488,26 @@ if(istype(I, /obj/item/stack/nanopaste)) var/obj/item/stack/nanopaste/nanopaste = I if(stat == DEAD) - to_chat(user, span_warning("The [name] is beyond help, at this point.")) + user.balloon_alert(user, "пИИ не подлежит ремонту...") return ATTACK_CHAIN_PROCEED + if(!getBruteLoss() && !getFireLoss()) - to_chat(user, span_warning("All [name]'s systems are nominal.")) + user.balloon_alert(user, "пИИ в полном порядке") return ATTACK_CHAIN_PROCEED + if(!nanopaste.use(1)) - to_chat(user, span_warning("You need at least one unit of [nanopaste] to proceed.")) + user.balloon_alert(user, "нанопаста закончилась!") return ATTACK_CHAIN_PROCEED + heal_overall_damage(15, 15) - user.visible_message( - span_notice("[user] has applied some [nanopaste.name] at [src]'s damaged areas."), - span_notice("You have applied some [nanopaste.name] at [src]'s damaged areas."), + visible_message( + span_notice("[user] наносит немного нанопасты на корпус пИИ. [name] выглядит получше."), + span_notice("Вы нанесли немного нанопасты на корпус. [name] выглядит получше."), ) return ATTACK_CHAIN_PROCEED_SUCCESS if(istype(I, /obj/item/paicard_upgrade) || istype(I, /obj/item/pai_cartridge)) - to_chat(user, span_warning("The [name] must be in card form.")) + to_chat(user, span_warning("ПИИ должен быть в компактной форме.")) return ATTACK_CHAIN_PROCEED user.do_attack_animation(src) @@ -477,25 +515,28 @@ if(!I.force) playsound(loc, 'sound/weapons/tap.ogg', I.get_clamped_volume(), TRUE, -1) visible_message( - span_warning("[user] bonks [src] harmlessly with [I]."), - span_warning("[user] bonks you harmlessly with [I]."), + span_warning("[user] бережно стука[pluralize_ru(user.gender, "ет", "ют")] по [name] [I.declent_ru(INSTRUMENTAL)]."), + span_warning("[user] бережно стука[pluralize_ru(user.gender, "ет", "ют")] вас [I.declent_ru(INSTRUMENTAL)]."), ) return ATTACK_CHAIN_PROCEED_SUCCESS + if(I.hitsound) playsound(loc, I.hitsound, I.get_clamped_volume(), TRUE, -1) add_attack_logs(user, src, "Attacked with [I.name] ([uppertext(user.a_intent)]) ([uppertext(I.damtype)]), DMG: [I.force])", (ckey && I.force > 0 && I.damtype != STAMINA) ? null : ATKLOG_ALMOSTALL) visible_message( - span_danger("[user] attacks [src] with [I]!"), - span_userdanger("[user] attacks you with [I]!"), + span_danger("[user] сильно бь[pluralize_ru(user.gender, "ёт", "ют")] по [name] [I.declent_ru(INSTRUMENTAL)]!"), + span_userdanger("[user] сильно бь[pluralize_ru(user.gender, "ёт", "ют")] вас [I.declent_ru(INSTRUMENTAL)]!"), ) + var/damage_type = I.damtype if(damage_type != BRUTE && damage_type != BURN) damage_type = BRUTE - apply_damage(I.force, damage_type) + apply_damage(I.force, damage_type) spawn(1) // thats dumb if(stat != DEAD) close_up() + return ATTACK_CHAIN_PROCEED_SUCCESS @@ -507,10 +548,10 @@ if(stat == DEAD) return if(user.a_intent == INTENT_HELP) - user.visible_message("[user] pets [src].") + user.visible_message(span_notice("[user] гладит [name].")) playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) else - visible_message("[user.name] boops [src] on the head.") + visible_message(span_danger("[user] бупает [name] по голове.")) spawn(1) close_up() @@ -523,7 +564,8 @@ if(loc == card) return - visible_message("[src] neatly folds inwards, compacting down to a rectangular card.", "You neatly fold inwards, compacting down to a rectangular card.") + visible_message(span_notice("[name] аккуратно складывается, переходя в компактную форму."), \ + span_notice("Вы аккуратно складываетесь, переходя в компактную форму.")) stop_pulling() reset_perspective(card) @@ -559,11 +601,11 @@ switch(stat) if(CONSCIOUS) if(!client) - msg += "It appears to be in stand-by mode.\n" //afk + msg += span_notice("Оно находится в режиме ожидания.\n") //afk if(UNCONSCIOUS) - msg += "It doesn't seem to be responding.\n" + msg += span_warning("Оно кажется выключенным.\n") if(DEAD) - msg += "It looks completely unsalvageable.\n" + msg += span_deadsay("Оно явно не подлежит восстановлению...\n") if(print_flavor_text()) msg += "[print_flavor_text()]\n" @@ -576,7 +618,7 @@ . += msg -/mob/living/silicon/pai/bullet_act(var/obj/item/projectile/Proj) +/mob/living/silicon/pai/bullet_act(var/obj/projectile/Proj) ..(Proj) if(stat != 2) spawn(1) @@ -615,15 +657,17 @@ /mob/living/silicon/pai/MouseDrop(mob/living/carbon/human/user, src_location, over_location, src_control, over_control, params) if(!ishuman(user) || !Adjacent(user) || user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) return ..() + if(usr == src) - switch(tgui_alert(user, "[src] wants you to pick [p_them()] up. Do it?", "Pick up", list("Yes", "No"))) - if("Yes") + switch(tgui_alert(user, "[src] хочет, чтобы вы его подобрали. Подобрать?", "Подбор", list("Да", "Нет"))) + if("Да") if(Adjacent(user)) get_scooped(user) else - to_chat(src, span_warning("You need to stay in reaching distance to be picked up.")) - if("No") - to_chat(src, span_warning("[user] decided not to pick you up.")) + to_chat(src, span_warning("Вам нужно подойти поближе.")) + + if("Нет") + to_chat(src, span_warning("[user] не хо[pluralize_ru(user.gender,"чет","тят")] вас подбирать...")) else if(Adjacent(user)) get_scooped(user) @@ -643,7 +687,7 @@ card.set_light_on(FALSE) /datum/action/innate/pai_soft - name = "Pai Sowtware" + name = "PAI Software" desc = "Активация вашего внутреннего интерфейса для выбора программ." icon_icon = 'icons/obj/aicards.dmi' button_icon_state = "pai-action" @@ -654,10 +698,9 @@ P.ui_interact(P) /datum/action/innate/pai_soft/pai_choose_chassis - name = "Choose chassis" + name = "Choose Chassis" desc = "Выбор внешности голографического каркаса" button_icon_state = "pai-action3" - check_flags = AB_CHECK_CONSCIOUS /datum/action/innate/pai_soft/pai_choose_chassis/Activate() var/mob/living/silicon/pai/pai = owner @@ -682,7 +725,7 @@ pai.fold_up() /datum/action/innate/pai_soft/pai_change_voice - name = "Collapse Chassis" + name = "Change Voice" desc = "Изменение звука голосового модуля" button_icon_state = "pai-action4" @@ -690,12 +733,11 @@ var/mob/living/silicon/pai/pai = owner pai.pai_change_voice() -/datum/action/innate/pai/pai_suicide - name = "Pai suicide" +/datum/action/innate/pai_soft/pai_suicide + name = "PAI Suicide" desc = "Активация протокола самоуничтожения" button_icon_state = "pai-action6" - check_flags = AB_CHECK_CONSCIOUS -/datum/action/innate/pai/pai_suicide/Activate() +/datum/action/innate/pai_soft/pai_suicide/Activate() var/mob/living/silicon/pai/pai = owner pai.pAI_suicide() diff --git a/code/modules/mob/living/silicon/pai/pai_say.dm b/code/modules/mob/living/silicon/pai/pai_say.dm index 8b58e961110c..ac1bcc6844f6 100644 --- a/code/modules/mob/living/silicon/pai/pai_say.dm +++ b/code/modules/mob/living/silicon/pai/pai_say.dm @@ -1,6 +1,8 @@ /mob/living/silicon/pai/say(message, verb = "says", sanitize = TRUE, ignore_speech_problems = FALSE, ignore_atmospherics = FALSE, ignore_languages = FALSE) + if(QDELETED(src) || stat == DEAD) + return if(silence_time) - to_chat(src, "Communication circuits remain uninitialized.") + to_chat(src, span_warning("Коммуникационные цепи всё ещё перегружены!")) return return ..(message) diff --git a/code/modules/mob/living/silicon/pai/recruit.dm b/code/modules/mob/living/silicon/pai/recruit.dm index ad4cdbfca2d9..e0dcb624bcaf 100644 --- a/code/modules/mob/living/silicon/pai/recruit.dm +++ b/code/modules/mob/living/silicon/pai/recruit.dm @@ -13,6 +13,7 @@ GLOBAL_DATUM_INIT(paiController, /datum/paiController, new) // Global handler fo /datum/paiController var/list/pai_candidates = list() var/list/asked = list() + var/list/paicards var/summon_cooldown = 0 var/askDelay = 10 * 60 * 1 // One minute [ms * sec * min] @@ -41,25 +42,12 @@ GLOBAL_DATUM_INIT(paiController, /datum/paiController, new) // Global handler fo pai.name = candidate.name pai.real_name = pai.name pai.key = candidate.key - if(card.is_syndicate_type) - pai.syndipai = card.is_syndicate_type - pai.ram += card.extra_memory - card.setPersonality(pai) card.looking_for_personality = 0 - if(card.upgrade) - card.upgrade.used = TRUE - if(!istype(card.upgrade, /obj/item/paicard_upgrade/protolate)) - card.radio.keyslot2 = new /obj/item/encryptionkey/syndicate(card.radio) - if(card.radio.keyslot2.syndie) - card.radio.syndiekey = card.radio.keyslot2 - card.radio.recalculateChannels(TRUE) - - SSticker.mode.update_cult_icons_removed(card.pai.mind) - SSticker.mode.update_rev_icons_removed(card.pai.mind) pai_candidates -= candidate usr << browse(null, "window=findPai") + usr << browse(null, "window=paicard") return if("signup" in href_list) @@ -70,7 +58,7 @@ GLOBAL_DATUM_INIT(paiController, /datum/paiController, new) // Global handler fo return if(!(O in GLOB.respawnable_list)) - to_chat(O, "You've given up your ability to respawn!") + to_chat(O, span_notice("Вы отказались от возможности возрождения!")) return if(!check_recruit(O)) return @@ -124,14 +112,20 @@ GLOBAL_DATUM_INIT(paiController, /datum/paiController, new) // Global handler fo if("submit") if(candidate) - candidate.ready = 1 - for(var/obj/item/paicard/p in world) - if(p.looking_for_personality == 1) - p.alertUpdate() + candidate.ready = !candidate.ready + if(candidate.ready) + to_chat(usr, span_notice("Вы отправили заявку на становление пИИ.")) + for(var/obj/item/paicard/p in paicards) + if(p.looking_for_personality) + p.alertUpdate() + else + to_chat(usr, span_notice("Вы отменили заявку на становление пИИ.")) + usr << browse(null, "window=paiRecruit") return recruitWindow(usr) + /datum/paiController/proc/recruitWindow(var/mob/M as mob) var/datum/paiCandidate/candidate for(var/datum/paiCandidate/c in pai_candidates) @@ -253,7 +247,7 @@ GLOBAL_DATUM_INIT(paiController, /datum/paiController, new) // Global handler fo
" - output += "

Banning panel

" - output += "
" - - output += "Add custom ban: (ONLY use this if you can't ban through any other method)" - output += "" + output += "
" + output += "" output += "
" + output += "Add custom ban: (ONLY use this if you can't ban through any other method)" + output += "" output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" + output += "" + output += "" + output += "\ + " + output += "" output += "
Ban type:Ban Type:
Ckey:
IP: CID:
Duration: Job:Ckey:
IP:
CID:
\ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ +
Days:
Hours:
Minutes:
\ +
Job:
Add current ID and server name
" - output += "Reason:

" + output += "Reason:


" output += "" output += "" @@ -485,13 +515,15 @@ output += "
" - output += "
" - output += "" - output += "" - output += "" - output += "" - output += " +
Search:" - output += "
Ckey: Admin ckey:
IP: CID:
Ban type:" + output += "" + output += "" + output += "" + output += "" + output += "
Search:" + output += "
Ckey:
Admin ckey:
IP:
CID:
Ban type:
" - output += "

" + output += "


" output += " Match(min. 3 characters to search by key or ip, and 7 to search by cid)
" output += "" output += "This search shows only last 100 bans." @@ -513,12 +545,12 @@ if(adminckey || playerckey || playerip || playercid || dbbantype) - var/blcolor = "#ffeeee" //banned light - var/bdcolor = "#ffdddd" //banned dark - var/ulcolor = "#eeffee" //unbanned light - var/udcolor = "#ddffdd" //unbanned dark + var/blcolor = "#fc5f5f" //banned light + var/bdcolor = "#c72626" //banned dark + var/ulcolor = "#73b873" //unbanned light + var/udcolor = "#3faa3f" //unbanned dark - output += "" + output += "
" output += "" output += "" output += "" @@ -616,7 +648,7 @@ var/typedesc ="" switch(bantype) if("PERMABAN") - typedesc = "PERMABAN" + typedesc = "PERMABAN" if("TEMPBAN") typedesc = "TEMPBAN
([duration] minutes [(unbanned) ? "" : "(Edit))"]
Expires [expiration]
" if("JOB_PERMABAN") @@ -628,21 +660,21 @@ if("ADMIN_PERMABAN") typedesc = "ADMIN PERMABAN" if("ADMIN_TEMPBAN") - typedesc = "ADMIN TEMPBAN
([duration] minutes [(unbanned) ? "" : "(Edit))"]
Expires [expiration]
" + typedesc = "ADMIN TEMPBAN
([duration] minutes [(unbanned) ? "" : "(Edit))"]
Expires
[expiration]
" output += "" output += "" output += "" output += "" output += "" - output += "" + output += "" output += "" output += "" output += "" output += "" output += "" output += "" - output += "" + output += "" output += "" if(edits) output += "" @@ -656,14 +688,19 @@ output += "" output += "" output += "" - output += "" + output += "" output += "" output += "
TYPECKEY
[typedesc][ckey][bantime][ackey][(unbanned) ? "" : "Unban"][(unbanned) ? "" : "Unban"]
IP: [ip]CID: [cid]
Reason: [(unbanned) ? "" : "(Edit)"] \"[reason]\"Reason: [(unbanned) ? "" : "(Edit)"] \"[reason]\"
UNBANNED by admin [unbanckey] on [unbantime]
  
" qdel(select_query) - usr << browse(output,"window=lookupbans;size=900x700") + var/datum/browser/popup = new(usr, "ban_panel", "
Manual Ban Panel
", 900, 700) + popup.set_content(output.Join("")) + popup.set_window_options("can_close=1;can_minimize=0;can_maximize=0;can_resize=0;titlebar=1;") + popup.add_stylesheet("dark_inputs", "html/dark_inputs.css") + popup.open() + onclose(usr, "ban_panel") /proc/flag_account_for_forum_sync(ckey) if(!SSdbcore.IsConnected()) diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index f2a941ead28c..a52e8eb1c025 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -140,3 +140,27 @@ you will have to do something like if(client.holder.rights & R_ADMIN) yourself. /datum/admins/can_vv_delete() return FALSE // don't break shit either + + +/** + * Requires the holder to have all the rights specified + * + * rights_required = R_ADMIN|R_EVENT means they must have both flags, or it will return false + */ +/proc/check_rights_all(rights_required, show_msg = TRUE, mob/user = usr) + if(!user?.client) + return FALSE + if(!rights_required) + if(user.client.holder) + return TRUE + if(show_msg) + to_chat(user, "Ошибка: Вы не админ.") + return FALSE + + if(!user.client.holder) + return FALSE + if((user.client.holder.rights & rights_required) == rights_required) + return TRUE + if(show_msg) + to_chat(user, "Ошибка: У вас недостаточно прав для этого. Вам необходимы следующие флаги:[rights2text(rights_required, " ")].") + return FALSE diff --git a/code/modules/admin/ipintel.dm b/code/modules/admin/ipintel.dm index fbf8985045c9..5fc4dff8362b 100644 --- a/code/modules/admin/ipintel.dm +++ b/code/modules/admin/ipintel.dm @@ -195,7 +195,7 @@ return FALSE /proc/vpn_whitelist_add(target_ckey) - var/reason_string = input(usr, "Enter link to the URL of their whitelist request on the forum.","Reason required") as message|null + var/reason_string = tgui_input_text(usr, "Enter link to the URL of their whitelist request on the forum.", "Reason required", multiline = TRUE, encode = FALSE) if(!reason_string) return FALSE var/datum/db_query/query_whitelist_add = SSdbcore.NewQuery("INSERT INTO [CONFIG_GET(string/utility_database)].[format_table_name("vpn_whitelist")] (ckey,reason) VALUES (:targetckey, :reason)", list( @@ -225,7 +225,7 @@ return var/is_already_whitelisted = vpn_whitelist_check(target_ckey) if(is_already_whitelisted) - var/confirm = alert("[target_ckey] is already whitelisted. Remove them?", "Confirm Removal", "No", "Yes") + var/confirm = tgui_alert(usr, "[target_ckey] is already whitelisted. Remove them?", "Confirm Removal", list("No", "Yes")) if(!confirm || confirm != "Yes") to_chat(usr, "VPN whitelist alteration cancelled.") return diff --git a/code/modules/admin/machine_upgrade.dm b/code/modules/admin/machine_upgrade.dm index 7274dafd4db3..a22ea343784c 100644 --- a/code/modules/admin/machine_upgrade.dm +++ b/code/modules/admin/machine_upgrade.dm @@ -8,7 +8,7 @@ to_chat(usr, "This can only be used on subtypes of /obj/machinery.") return - var/new_rating = input("Enter new rating:","Num") as num + var/new_rating = tgui_input_number(usr, "Enter new rating:", "Num") if(!isnull(new_rating) && M.component_parts) for(var/obj/item/stock_parts/P in M.component_parts) P.rating = new_rating diff --git a/code/modules/admin/outfits.dm b/code/modules/admin/outfits.dm index c900e58d4caf..5b45efb17478 100644 --- a/code/modules/admin/outfits.dm +++ b/code/modules/admin/outfits.dm @@ -1,7 +1,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits /client/proc/outfit_manager() - set category = "Event" + set category = "Admin.Event" set name = "Outfit Manager" if(!check_rights(R_EVENT)) @@ -32,7 +32,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits outfit_manager(admin) /datum/admins/proc/load_outfit(mob/admin) - var/outfit_file = input("Pick outfit json file:", "File") as null|file + var/outfit_file = input(usr, "Pick outfit json file:", "File") as null|file if(!outfit_file) return var/filedata = wrap_file2text(outfit_file) diff --git a/code/modules/admin/permissionverbs/permissionedit.dm b/code/modules/admin/permissionverbs/permissionedit.dm index 453bfd8c6540..f2dcf70752d6 100644 --- a/code/modules/admin/permissionverbs/permissionedit.dm +++ b/code/modules/admin/permissionverbs/permissionedit.dm @@ -1,5 +1,5 @@ /client/proc/edit_admin_permissions() - set category = "Admin" + set category = "Admin.Admin" set name = "Permissions Panel" set desc = "Edit admin permissions" if(!check_rights(R_PERMISSIONS)) @@ -13,20 +13,46 @@ var/datum/asset/permissions_asset = get_asset_datum(/datum/asset/simple/permissions) permissions_asset.send(usr) - var/output = {" - - - -Permissions Panel - - - - -
+ var/output = {" + + +
+
++ + + + + - - + + + + + "} for(var/adm_ckey in GLOB.admin_datums) @@ -36,24 +62,27 @@ var/rights = rights2text(D.rights," ") if(!rights) rights = "*none*" output += {" - - - + + +"} - /*output += "" - output += "" - output += "" - output += "" - output += ""*/ - output += {" -
CKEY \[+\]RANKPERMISSIONSCKEY \[+\]RANKPERMISSIONS
[adm_ckey] \[-\][rank][rights][adm_ckey] \[-\][rank][rights]
[adm_ckey] \[-\][rank][rights]
+
+
Search:
-"} +"} - usr << browse(output,"window=editrights;size=600x500") + var/datum/browser/popup = new(usr, "editrights", "
Permissions Panel
", 600, 500) + popup.set_content(output) + popup.set_window_options("can_close=1;can_minimize=0;can_maximize=0;can_resize=0;titlebar=1;") + //popup.add_stylesheet("dark_inputs", "html/panels.css") + popup.add_stylesheet("dark_inputs", "html/dark_inputs.css") + popup.add_script("search", "html/search.js") + popup.open() + onclose(usr, "editrights") /datum/admins/proc/log_admin_rank_modification(adm_ckey, new_rank, new_rigths = 0) if(CONFIG_GET(flag/admin_legacy_system)) return @@ -140,7 +169,7 @@ qdel(log_query) to_chat(usr, "Admin rank changed.") -/datum/admins/proc/log_admin_permission_modification(var/adm_ckey, var/new_permission) +/datum/admins/proc/log_admin_permission_modification(adm_ckey, new_permission) if(IsAdminAdvancedProcCall()) to_chat(usr, span_boldannounceooc("Admin edit blocked: Advanced ProcCall detected.")) message_admins("[key_name(usr)] attempted to edit admin ranks via advanced proc-call") @@ -156,7 +185,7 @@ return if(!SSdbcore.IsConnected()) - to_chat(usr, "Failed to establish database connection") + to_chat(usr, span_warning("Failed to establish database connection")) return if(!adm_ckey || !new_permission) @@ -173,7 +202,7 @@ if(!istext(adm_ckey) || !isnum(new_permission)) return - var/datum/db_query/select_query = SSdbcore.NewQuery("SELECT id, flags FROM [format_table_name("admin")] WHERE ckey=:adm_ckey", list( + var/datum/db_query/select_query = SSdbcore.NewQuery("SELECT id FROM [format_table_name("admin")] WHERE ckey=:adm_ckey", list( "adm_ckey" = adm_ckey )) if(!select_query.warn_execute()) @@ -181,51 +210,26 @@ return var/admin_id - var/admin_rights + while(select_query.NextRow()) admin_id = text2num(select_query.item[1]) - admin_rights = text2num(select_query.item[2]) qdel(select_query) if(!admin_id) return flag_account_for_forum_sync(adm_ckey) - if(admin_rights & new_permission) //This admin already has this permission, so we are removing it. - var/datum/db_query/insert_query = SSdbcore.NewQuery("UPDATE [format_table_name("admin")] SET flags=:newflags WHERE id=:admin_id", list( - "newflags" = (admin_rights & ~new_permission), - "admin_id" = admin_id - )) - if(!insert_query.warn_execute()) - qdel(insert_query) - return - qdel(insert_query) - - var/logtxt = "Removed permission [rights2text(new_permission)] (flag = [new_permission]) to admin [adm_ckey]" - var/datum/db_query/log_query = SSdbcore.NewQuery({" - INSERT INTO [format_table_name("admin_log")] (`datetime` ,`adminckey` ,`adminip` ,`log`) - VALUES (Now() , :uckey, :uip, :logtxt)"}, list( - "uckey" = usr.ckey, - "uip" = usr.client.address, - "logtxt" = logtxt - )) - if(!log_query.warn_execute()) - qdel(log_query) - return - qdel(log_query) - to_chat(usr, "Permission removed.") - else //This admin doesn't have this permission, so we are adding it. - var/datum/db_query/insert_query = SSdbcore.NewQuery("UPDATE [format_table_name("admin")] SET flags=:newflags WHERE id=:admin_id", list( - "newflags" = (admin_rights | new_permission), - "admin_id" = admin_id - )) - if(!insert_query.warn_execute()) - qdel(insert_query) - return + var/datum/db_query/insert_query = SSdbcore.NewQuery("UPDATE [format_table_name("admin")] SET flags=:newflags WHERE id=:admin_id", list( + "newflags" = new_permission, + "admin_id" = admin_id + )) + if(!insert_query.warn_execute()) qdel(insert_query) + return + qdel(insert_query) - var/logtxt = "Added permission [rights2text(new_permission)] (flag = [new_permission]) to admin [adm_ckey]" - var/datum/db_query/log_query = SSdbcore.NewQuery({" + var/logtxt = "Updated permission [rights2text(new_permission, " ")] (flags = [new_permission]) to admin [adm_ckey]" + var/datum/db_query/log_query = SSdbcore.NewQuery({" INSERT INTO [format_table_name("admin_log")] (`datetime` ,`adminckey` ,`adminip` ,`log`) VALUES (Now() , :uckey, :uip, :logtxt)"}, list( "uckey" = usr.ckey, @@ -233,11 +237,11 @@ "logtxt" = logtxt )) - if(!log_query.warn_execute()) - qdel(log_query) - return + if(!log_query.warn_execute()) qdel(log_query) - to_chat(usr, "Permission added.") + return + qdel(log_query) + to_chat(usr, span_notice("Permission Updated.")) /datum/admins/proc/updateranktodb(ckey,newrank) if(!SSdbcore.IsConnected()) diff --git a/code/modules/admin/player_options_panel.dm b/code/modules/admin/player_options_panel.dm new file mode 100644 index 000000000000..f778d2865d57 --- /dev/null +++ b/code/modules/admin/player_options_panel.dm @@ -0,0 +1,347 @@ + +/* + features that need to add + Soulless things should now be PP'able with warning. + Some (poor) explanation of what's going on - + player_panel_veth is the new tgui version of the player panel, it also includes some most pressed verbs + I've tried to comment in as much stuff as possible so it can be changed in the future is necessary + Vuap_personal is the new tgui version of the options panel. It basically does everything the same way the player panel does + minus some features that the player panel didn't have I guess. + the client/var/selectedPlayerCkey is used to hold the selected player ckey for moving to and from pp/vuap +*/ + +/datum/admins/proc/vuap_open_context(mob/M) + if(!check_rights(NONE)) + return + if(!M) + to_chat(usr, "You seem to be selecting a mob that doesn't exist anymore.", confidential=TRUE) + return + var/mob = null + // First we get mob. Check for ckey and client inside + if(findtext(M.ckey, "@" ) || M.ckey == "" || M.ckey == null) + // No ckey? No problem, We will manipulate clientless mob then. + mob = M + // But we still need to check out ckey so /ui_data will properly work + var/ckey = M.ckey + // open + usr.client.holder.vuap_open(ckey, mob) + +/datum/vuap_personal + var/selected_ckey = "" + var/selected_mob = null + +/datum/vuap_personal/ui_data(mob/user) + var/list/player_data = list( + "characterName" = "No Character", + "ckey" = selected_ckey || "NO CKEY", + "ipAddress" = "0.0.0.0", + "CID" = "NO CID", + "discord" = "No Discord", + "playtime" = "No client", + "rank" = "Player", + "byondVersion" = "0.0.0", + "mobType" = "null", + "accountRegistered" = "Unknown", + "muteStates" = list( + "ic" = FALSE, + "ooc" = FALSE, + "pray" = FALSE, + "adminhelp" = FALSE, + "deadchat" = FALSE, + "webreq" = FALSE + ), + "adminRights" = "", + ) + if(selected_ckey == null || selected_ckey == "" || selected_ckey[1] == "@") + var/mob/player = selected_mob + player_data["characterName"] = player.name || "No Character" + player_data["playtime"] = "No client" + player_data["mobType"] = "[initial(player.type)]" || "null" + else + var/mob/player = get_mob_by_ckey(selected_ckey) + var/client/client_info = player?.client + if(player && client_info) + player_data["characterName"] = player.real_name || "No Character" + player_data["ipAddress"] = client_info.address || "0.0.0.0" + player_data["CID"] = client_info.computer_id || "NO_CID" + player_data["discord"] = client_info.prefs.discord_id || "No Discord" + player_data["playtime"] = client_info.get_exp_type(EXP_TYPE_CREW) || "none" + player_data["rank"] = client_info.holder?.rank || "Player" + player_data["byondVersion"] = "[client_info.byond_version || 0].[client_info.byond_build || 0]" + player_data["mobType"] = "[initial(player.type)]" || "null" + player_data["accountRegistered"] = client_info.byondacc_date || "Unknown" + // Safely check mute states + if(client_info.prefs) + player_data["muteStates"] = list( + "ic" = check_mute(player.client.ckey, MUTE_IC), + "ooc" = check_mute(player.client.ckey, MUTE_OOC), + "pray" = check_mute(player.client.ckey, MUTE_PRAY), + "adminhelp" = check_mute(player.client.ckey, MUTE_ADMINHELP), + "deadchat" = check_mute(player.client.ckey, MUTE_DEADCHAT), + "tts" = check_mute(player.client.ckey, MUTE_TTS), + "emote" = check_mute(player.client.ckey, MUTE_EMOTE), + "all" = check_mute(player.client.ckey, MUTE_ALL) + ) + + player_data["adminRights"] = rights2text(user.client.holder.rights) + + return player_data + +/datum/vuap_personal/ui_status(mob/user, datum/ui_state/state) + . = (check_rights(R_ADMIN | R_MOD, user = user)) ? UI_INTERACTIVE : ..() + + +/datum/vuap_personal/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "PlayerPanel", "Player Panel") + ui.set_autoupdate(FALSE) + ui.open() + +/datum/vuap_personal/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + if(..()) + return + if(!check_rights(NONE)) + return + var/mob/M = get_mob_by_ckey(selected_ckey) || selected_mob + if(!M) + tgui_alert(usr, "Selected player not found!") + return + //pretty much all of these actions use the Topic() admin call. This admin call is secure, checks rights, and does stuff the way the old player panel did. + //see code/modules/admin/topic.dm for more info on how it works. + //essentially you have to pass a list of parameters to Topic(). It needs to be provided with an admin token to do any of its functions. + switch(action) + if("refresh") + ui.send_update() + return + if("old_pp") + usr.client.holder.show_old_player_panel(M) + return + if("playtime") + usr.client.holder.Topic(null, list("getplaytimewindow" = M.UID())) + if("relatedbycid") + usr.client.holder.Topic(null, list("showrelatedacc" = "cid", "client" = M.client?.UID())) + if("relatedbyip") + usr.client.holder.Topic(null, list("showrelatedacc" = "ip", "client" = M.client?.UID())) + // Punish Section + if("kick") + usr.client.holder.Topic(null, list("boot2" = M.UID())) + if("ban") + if(!selected_ckey) + to_chat(usr, "No client inside!") + return + if(!check_rights(R_BAN)) + return + usr.client.holder.Topic(null, list("newban" = M.UID(), "dbbanaddckey" = selected_ckey)) + if("jobban") + if(!selected_ckey) + to_chat(usr, "No client inside!") + return + if(!check_rights(R_BAN)) + return + usr.client.holder.Topic(null, list("jobban2" = M.UID(), "dbbanaddckey" = selected_ckey)) + if("appban") + if(!selected_ckey) + to_chat(usr, "No client inside!") + return + if(!check_rights(R_BAN)) + return + usr.client.holder.Topic(null, list("appearanceban" = M.UID(), "dbbanaddckey" = selected_ckey)) + if("watchlist") + if(!selected_ckey) + to_chat(usr, "No client inside!") + return + usr.client.watchlist_add(selected_ckey) + if("bless") + usr.client.holder.Topic(null, list("Bless" = M.UID())) + if("smite") + usr.client.holder.Topic(null, list("Smite" = M.UID())) + // Message Section + if("pm") + if (!check_rights(NONE)) + return + usr.client.cmd_admin_pm(M.ckey) + if("sm") + usr.client.holder.Topic(null, list("subtlemessage" = M.UID())) + if("narrate") + usr.client.holder.Topic(null, list("narrateto" = M.UID())) + if("playsoundto") + if(!check_rights(R_SOUNDS)) + return + var/S = input(usr, "", "Select a sound file",) as null|sound + if(S) + usr.client.play_direct_mob_sound(S, M) + if("sendalert") + usr.client.holder.Topic(null, list("adminalert" = M.UID())) + if("manup") + usr.client.holder.Topic(null, list("man_up" = M.UID())) + // Movement Section + if("jumpto") + usr.client.holder.Topic(null, list("jumpto" = M.UID())) + if("get") + usr.client.holder.Topic(null, list("getmob" = M.UID())) + if("send") + usr.client.holder.Topic(null, list("sendmob" = M.UID())) + if("lobby") + usr.client.holder.Topic(null, list("sendbacktolobby" = M.UID())) + if("flw") + usr.client.holder.Topic(null, list("adminplayerobservefollow" = M.UID())) + if("cryo") + usr.client.holder.Topic(null, list("cryossd" = M.UID())) + // Info Section + if("vv") + usr.client.debug_variables(M) + if("tp") + usr.client.holder.Topic(null, list("traitor" = M.UID())) + if("logs") + usr.client.holder.Topic(null, list("open_logging_view" = M.UID())) + if("notes") + usr.client.holder.Topic(null, list("shownoteckey" = M.ckey)) + if("playtime") + usr.client.holder.Topic(null, list("getplaytimewindow" = M.UID())) + if("geoip") + usr.client.holder.Topic(null, list("geoip" = M.UID())) + if("ccdb") + usr.client.holder.Topic(null, list("open_ccDB" = M.ckey)) + // Transformation Section + if("makeghost") + usr.client.holder.Topic(null, list( + "simplemake" = "observer", + "mob" = M.UID() + )) + ui.send_update() + if("makehuman") + usr.client.holder.Topic(null, list( + "simplemake" = "human", + "mob" = M.UID() + )) + ui.send_update() + if("makemonkey") + usr.client.holder.Topic(null, list( + "simplemake" = "monkey", + "mob" = M.UID() + )) + ui.send_update() + if("makeborg") + usr.client.holder.Topic(null, list( + "simplemake" = "robot", + "mob" = M.UID() + )) + ui.send_update() + if("makeanimal") + usr.client.holder.Topic(null, list("makeanimal" = M.UID())) + ui.send_update() + if("makeai") + usr.client.holder.Topic(null, list("makeai" = M.UID())) + ui.send_update() + //observer section + if("reviveghost") + usr.client.holder.Topic(null, list("incarn_ghost" = M.UID())) + if("respawnability") + usr.client.holder.Topic(null, list("togglerespawnability" = M.UID())) + //health section + if("healthscan") + healthscan(usr, M, TRUE) + if("chemscan") + chemscan(usr, M) + if("aheal") + usr.client.holder.Topic(null, list("revive" = M.UID())) + if("giveDisease") + usr.client.give_disease(M) + if("cureDisease") + usr.client.cure_disease(M) + if("cureAllDiseases") + if(!check_rights(R_EVENT)) + return + if (istype(M, /mob/living)) + var/mob/living/L = M + for(var/datum/disease/D in L.diseases) // cure all crit conditions + D.cure() + log_and_message_admins("Cured all diseases on [M.ckey].") + if("mutate") + usr.client.holder.Topic(null, list("showdna" = M.UID())) + //mob manipulation section + if("randomizename") + usr.client.holder.Topic(null, list("randomizename" = M.UID())) + if("userandomname") + usr.client.holder.Topic(null, list("userandomname" = M.UID())) + if("eraseflavortext") + usr.client.holder.Topic(null, list("eraseflavortext" = M.UID())) + if("selectequip") + usr.client.holder.Topic(null, list("select_equip" = M.UID())) + if("changevoice") + usr.client.holder.Topic(null, list("change_voice" = M.UID())) + if("checkcontents") + usr.client.holder.Topic(null, list("check_contents" = M.UID())) + if("mirroradmin") + usr.client.holder.Topic(null, list("cma_admin" = M.UID())) + if("mirrorplayer") + usr.client.holder.Topic(null, list("cma_self" = M.UID())) + // Misc Section + //if("language") + // usr.client.holder.Topic(null, list("languagemenu" = M.UID())) + if("forcesay") + usr.client.holder.Topic(null, list("forcespeech" = M.UID())) + if("adminroom") + usr.client.holder.Topic(null, list("aroomwarp" = M.UID())) + if("thunderdome1") + usr.client.holder.Topic(null, list("tdome1" = M.UID())) + if("thunderdome2") + usr.client.holder.Topic(null, list("tdome2" = M.UID())) + if("thunderdomeadmin") + usr.client.holder.Topic(null, list("tdomeadmin" = M.UID())) + if("thunderdomeobserve") + usr.client.holder.Topic(null, list("tdomeobserve" = M.UID())) + if("contrastop") + usr.client.holder.Topic(null, list("contractor_stop" = M.UID())) + if("contrastart") + usr.client.holder.Topic(null, list("contractor_start" = M.UID())) + if("contrarelease") + usr.client.holder.Topic(null, list("contractor_release" = M.UID())) + if("prison") + usr.client.holder.Topic(null, list("sendtoprison" = M.UID())) + if("spawncookie") + usr.client.holder.Topic(null, list("adminspawncookie" = M.UID())) + // Mute Controls + if("toggleMute") + var/muteType = params["type"] + switch(muteType) + if("ic") + cmd_admin_mute(M, MUTE_IC) + ui.send_update() + if("ooc") + cmd_admin_mute(M, MUTE_OOC) + ui.send_update() + if("pray") + cmd_admin_mute(M, MUTE_PRAY) + ui.send_update() + if("adminhelp") + cmd_admin_mute(M, MUTE_ADMINHELP) + ui.send_update() + if("deadchat") + cmd_admin_mute(M, MUTE_DEADCHAT) + ui.send_update() + if("tts") + cmd_admin_mute(M, MUTE_TTS) + ui.send_update() + if("emote") + cmd_admin_mute(M, MUTE_EMOTE) + ui.send_update() + if("all") + cmd_admin_mute(M, MUTE_ALL) + ui.send_update() + if("someadminbutton") + SEND_SOUND(usr, 'sound/items/bikehorn.ogg') + + +/datum/vuap_personal/ui_state(mob/user) + return GLOB.admin_mod_state + +/datum/admins/proc/vuap_open(ckey, mob/M) + if (!check_rights(NONE)) + message_admins("[key_name(src)] attempted to use VUAP without sufficient rights.") + return + var/datum/vuap_personal/tgui = new(usr) + tgui.selected_ckey = ckey + tgui.selected_mob = M + tgui.ui_interact(usr) diff --git a/code/modules/admin/player_panel_veth.dm b/code/modules/admin/player_panel_veth.dm new file mode 100644 index 000000000000..b5511b86679c --- /dev/null +++ b/code/modules/admin/player_panel_veth.dm @@ -0,0 +1,83 @@ + +/datum/admins/proc/player_panel_veth()//The new one + if(!usr.client.holder) + return + // This stops the panel from being invoked by mentors who press F7. + if(!check_rights(R_ADMIN|R_MOD)) + message_admins("[key_name_admin(usr)] attempted to invoke player panel without admin rights. If this is a mentor, \ + its a chance they accidentally hit F7. If this is NOT a mentor, there is a high chance an exploit is being used") + return + + var/datum/player_panel_veth/tgui = new(usr) + tgui.ui_interact(usr) + + +/datum/player_panel_veth/ //required for tgui component + var/title = "Veth's Ultimate Player Panel" + +/datum/player_panel_veth/ui_data(mob/user) + var/list/players = list() + for(var/mob/M in GLOB.mob_list) + if (M.ckey) + players += list(list( + "name" = M.name || "No Character", + "job" = M.job || "No Job", + "ckey" = M.ckey || "No Ckey", + "is_antagonist" = M.mind?.special_role, + "last_ip" = M.lastKnownIP || "No Last Known IP", + "ref" = M.UID() + )) + return list( + "Data" = players + ) + +/datum/player_panel_veth/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + if(..()) + return + if(!check_rights(NONE)) + return + var/mob/M = get_mob_by_ckey(params["selectedPlayerCkey"]) //gets the mob datum from the ckey in client datum which we've saved. if there's a better way to do this please let me know + switch(action) //switch for all the actions from the frontend - all of the Topic() calls check rights & log inside themselves. + if("refresh") + ui.send_update() + if("sendPrivateMessage") + usr.client.cmd_admin_pm(M.ckey) + if("follow") + usr.client.holder.Topic(null, list("adminplayerobservefollow" = M.UID())) + if("smite") + usr.client.holder.Topic(null, list("Smite" = M.UID())) + if("checkAntags") + usr.client.check_antagonists() + if("faxPanel") + usr.client.fax_panel() + if("gamePanel") + usr.client.game_panel() + if("openAdditionalPanel") + usr.client.holder.vuap_open(params["selectedPlayerCkey"], null) + if("createCommandReport") + usr.client.cmd_admin_create_centcom_report() + if("logs") + usr.client.holder.Topic(null, list("open_logging_view" = M.UID())) + if("notes") + usr.client.holder.Topic(null, list("shownoteckey" = M.ckey)) + if("vv") + usr.client.debug_variables(M) + if("tp") + usr.client.holder.Topic(null, list("traitor" = M.UID())) + if("adminaiinteract") + usr.client.toggle_advanced_interaction() + +/datum/player_panel_veth/ui_interact(mob/user, datum/tgui/ui) + + ui = SStgui.try_update_ui(user, src, ui) + + if(!ui) + ui = new(user, src, "VethPlayerPanel", title) + ui.set_autoupdate(FALSE) + ui.open() + +/datum/player_panel_veth/ui_status(mob/user, datum/ui_state/state) + . = (check_rights(R_ADMIN | R_MOD, user = user)) ? UI_INTERACTIVE : ..() + +/datum/player_panel_veth/ui_state(mob/user) + return GLOB.admin_state diff --git a/code/modules/admin/polls/player_poll.dm b/code/modules/admin/polls/player_poll.dm new file mode 100644 index 000000000000..4e39d2a0e4f3 --- /dev/null +++ b/code/modules/admin/polls/player_poll.dm @@ -0,0 +1,436 @@ +/** + * Shows a list of currently running polls a player can vote/has voted on + * + */ +/mob/new_player/proc/handle_player_polling() + var/list/output = {""} + output += "
Player polls
" + var/rs = UID() + for(var/p in GLOB.active_polls) + var/datum/poll_question/poll = p + if((poll.admin_only && !client.holder) || poll.future_poll) + continue + output += "" + output += "
[poll.question]
" + src << browse(output,"window=playerpolllist;size=500x300") // I'll do TGUI later -Beeb + +/** + * Redirects a player to the correct poll window based on poll type. + * + */ +/mob/new_player/proc/poll_player(datum/poll_question/poll) + if(!poll) + return + if(!SSdbcore.Connect()) + to_chat(src, span_danger("Failed to establish database connection.")) + return + switch(poll.poll_type) + if(POLLTYPE_OPTION) + poll_player_option(poll) + if(POLLTYPE_TEXT) + poll_player_text(poll) + if(POLLTYPE_RATING) + poll_player_rating(poll) + if(POLLTYPE_MULTI) + poll_player_multi(poll) + +/** + * Shows voting window for an option type poll, listing its options and relevant details. + * + * If already voted on, the option a player voted for is pre-selected. + * + */ +/mob/new_player/proc/poll_player_option(datum/poll_question/poll) + var/datum/db_query/query_option_get_voted = SSdbcore.NewQuery({" + SELECT optionid FROM [format_table_name("poll_vote")] + WHERE pollid = :pollid AND ckey = :ckey AND deleted = 0 + "}, list("pollid" = poll.poll_id, "ckey" = ckey)) + if(!query_option_get_voted.warn_execute()) + qdel(query_option_get_voted) + return + var/voted_option_id = 0 + if(query_option_get_voted.NextRow()) + voted_option_id = text2num(query_option_get_voted.item[1]) + qdel(query_option_get_voted) + var/list/output = {"
Player poll
Question: [poll.question]
"} + if(poll.subtitle) + output += "[poll.subtitle]
" + output += "Poll runs from [poll.start_datetime] until [poll.end_datetime]
" + if(poll.allow_revoting) + output += "Revoting is enabled." + if(!voted_option_id || poll.allow_revoting) + output += {"
+ + + "} + output += "
" + for(var/o in poll.options) + var/datum/poll_option/option = o + output += "

" dat += "
" - if(TAB_GEAR) - var/total_cost = 0 - var/list/type_blacklist = list() - if(loadout_gear && loadout_gear.len) - for(var/i = 1, i <= loadout_gear.len, i++) - var/datum/gear/G = GLOB.gear_datums[loadout_gear[i]] - if(G) - if(!G.subtype_cost_overlap) - if(G.subtype_path in type_blacklist) - continue - type_blacklist += G.subtype_path - total_cost += G.cost - - var/fcolor = "#3366CC" - if(total_cost < max_gear_slots) - fcolor = "#E67300" - dat += "" - dat += "" - dat += "" - - var/datum/loadout_category/LC = own_categories[gear_tab] - dat += "" - for(var/gear_name in LC.gear) - var/datum/gear/G = LC.gear[gear_name] - var/datum/gear/ticked = choosen_gears[G.display_name] - dat += "" - dat += "
[total_cost]/[max_gear_slots] loadout points spent. \[Clear Loadout\]
" - - var/firstcat = 1 - var/list/own_categories = GLOB.loadout_categories.Copy() - var/datum/loadout_category/choosen = new("Selected") - choosen.gear = choosen_gears - own_categories[choosen.category] = choosen - for(var/category in own_categories) - if(firstcat) - firstcat = 0 - else - dat += " |" - if(category == gear_tab) - dat += " [category] " - else - dat += " [category] " - dat += "
[LC.category]
[G.display_name]
" - if(ticked) - for(var/datum/gear_tweak/tweak in ticked.gear_tweaks) - dat += "
[tweak.get_contents(get_tweak_metadata(ticked, tweak))]" - dat += "
[G.cost]" - if(G.allowed_roles) - dat += "Restrictions: " - for(var/role in G.allowed_roles) - dat += role + " " - dat += "" - dat += "[G.get_header_tips()][ticked ? ticked.description : G.description]
" if(TAB_KEYS) dat += "
All Key Bindings: " dat += "Reset to Default " @@ -806,10 +754,10 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts /datum/preferences/proc/get_gear_metadata(var/datum/gear/G) - . = loadout_gear[G.display_name] + . = loadout_gear[G.index_name] if(!.) . = list() - loadout_gear[G.display_name] = . + loadout_gear[G.index_name] = . /datum/preferences/proc/get_tweak_metadata(var/datum/gear/G, var/datum/gear_tweak/tweak) var/list/metadata = get_gear_metadata(G) @@ -906,7 +854,8 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts html += "[rank]
\[ЧЕРЕЗ [(available_in_days)] ДНЕЙ]
\[ВОЗРАСТ ОТ [(job.min_age_allowed)]]
\[ВОЗРАСТ ОТ [get_age_limits(current_species, job.min_age_type)]
\[НЕДОСТУПНО ДЛЯ ДАННОЙ РАСЫ]

- +
Submit Personality[candidate.ready ? "Reset personality" : "Submit personality"]

diff --git a/code/modules/mob/living/silicon/pai/software/_base.dm b/code/modules/mob/living/silicon/pai/software/_base.dm index 6c111e7e42cd..a807e3f21e5d 100644 --- a/code/modules/mob/living/silicon/pai/software/_base.dm +++ b/code/modules/mob/living/silicon/pai/software/_base.dm @@ -95,7 +95,7 @@ if(!M || !M.loc || count > 6) //For a runtime where M ends up in nullspace (similar to bluespace but less colourful) if(inform) - to_chat(usr, "You are not being carried by anyone!") + to_chat(usr, span_warning("Вас никто не несёт!")) return null M = M.loc count++ diff --git a/code/modules/mob/living/silicon/pai/software/pai_apps.dm b/code/modules/mob/living/silicon/pai/software/pai_apps.dm index fbca872c40a1..cc5ecd436c0c 100644 --- a/code/modules/mob/living/silicon/pai/software/pai_apps.dm +++ b/code/modules/mob/living/silicon/pai/software/pai_apps.dm @@ -104,17 +104,19 @@ return // Check the carrier - var/answer = tgui_alert(M, "[pai_holder] is requesting a DNA sample from you. Will you allow it to confirm your identity?", "[pai_holder] Check DNA", list("Yes", "No")) - if(answer == "Yes") - M.visible_message("[M] presses [M.p_their()] thumb against [pai_holder].", "You press your thumb against [pai_holder].") + var/answer = tgui_alert(M, "[pai_holder] запрашивает у вас образец ДНК. Предоставить образец для подтверждения вашей личности?", "[pai_holder] запрашивает ДНК", list("Да", "Нет")) + if(answer == "Да") + M.visible_message(span_notice("[M] помеща[pluralize_ru(M.gender,"ет","ют")] палец на сканер ДНК."), span_notice("Вы помещаете палец на сканер ДНК.")) var/datum/dna/dna = M.dna - to_chat(usr, "[M]'s UE string: [dna.unique_enzymes]") + to_chat(usr, span_notice("Сканируемый: [M]")) + to_chat(usr, span_notice("UE код: [dna.unique_enzymes]")) if(dna.unique_enzymes == pai_holder.master_dna) - to_chat(usr, "DNA is a match to stored Master DNA.") + to_chat(usr, span_notice("ДНК совпадает с записанным ДНК мастера.")) else - to_chat(usr, "DNA does not match stored Master DNA.") + to_chat(usr, span_warning("ДНК не совпадает с записанным ДНК мастера!")) else - to_chat(usr, "[M] does not seem like [M.p_they()] [M.p_are()] going to provide a DNA sample willingly.") + to_chat(usr, span_warning("[M] отказа[genderize_ru(M.gender,"лся","лась","лось","лись" )] предоставлять вам образец ДНК.")) + // Crew Manifest // /datum/pai_software/crew_manifest @@ -321,7 +323,7 @@ if(cable && cable.machine) hackmachine = cable.machine if(hacking) - to_chat(usr, "You are already hacking that door!") + to_chat(usr, span_warning("Вы уже взламываете этот шлюз!")) else hacking = TRUE INVOKE_ASYNC(src, PROC_REF(hackloop)) @@ -329,11 +331,14 @@ hackmachine = null if("cable") if(cable) // Retracting - pai_holder.visible_message(span_warning("[cable] is pulled back into [pai_holder] with a quick snap.")) + pai_holder.visible_message(span_warning("[pai_holder] с быстрым щелчком втягивает кабель в свой корпус.")) QDEL_NULL(cable) else // Extending cable = new /obj/item/pai_cable(get_turf(pai_holder)) - pai_holder.visible_message(span_warning("A port on [pai_holder] opens to reveal [cable], which promptly falls to the floor.")) + var/mob/living/carbon/human/H = get_holding_mob() + if(H) + H.put_in_hands(cable) + pai_holder.visible_message(span_warning("На интелкарте пИИ открывается порт, из которого тут же выпадает кабель.")) /** * Door jack hack loop @@ -403,12 +408,6 @@ template_file = "pai_gps_module" ui_icon = "location-arrow" -/obj/item/gps/internal/pai_gps - icon_state = null - upgraded = TRUE - gpstag = "pAI0" - invisibility = INVISIBILITY_ABSTRACT - tracking = FALSE /datum/pai_software/gps/ui_act(action, list/params) if(..()) @@ -416,7 +415,7 @@ switch(action) if("ui_interact") - pai_holder.pai_internal_gps.ui_interact(pai_holder) + pai_holder.gps.ui_interact(pai_holder) // Host Bioscan // /datum/pai_software/host_scan @@ -520,14 +519,16 @@ if(initial(test.key) == params["key"]) C = new test() break + if(!C || !held || !src) return - var/datum/reagent/R = GLOB.chemical_reagents_list[C.key] - to_chat(pai_holder, "You inject [R.name] from your internal secret laboratory into [held]'s bloodstream.") + var/datum/reagent/R = GLOB.chemical_reagents_list[C.key] + to_chat(pai_holder, span_notice("В кровоток носителя введён синтезированный реагент: \"[R.name]\".")) held.reagents.add_reagent(C.key, C.quantity) pai_holder.chemicals -= C.chemuse + // Advanced Security Records // /datum/pai_software/adv_sec_records name = "Advanced Security Records" diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index b58059c48a31..3ce665ce0985 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -22,8 +22,8 @@ drop_hat() - GLOB.alive_mob_list -= src - GLOB.dead_mob_list -= src + remove_from_alive_mob_list() + remove_from_dead_mob_list() QDEL_IN(animation, 15) QDEL_IN(src, 15) return TRUE @@ -36,7 +36,7 @@ invisibility = INVISIBILITY_ABSTRACT if(mmi) qdel(mmi) //Delete the MMI first so that it won't go popping out. - GLOB.dead_mob_list -= src + remove_from_dead_mob_list() QDEL_IN(src, 15) return TRUE diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 9260be0343e4..b06f8976f810 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -10,7 +10,7 @@ bubble_icon = "machine" universal_speak = 0 universal_understand = 1 - gender = NEUTER + gender = MALE pass_flags = PASSTABLE braintype = "Robot" lawupdate = 0 diff --git a/code/modules/mob/living/silicon/robot/drone/drone_console.dm b/code/modules/mob/living/silicon/robot/drone/drone_console.dm index 8b6428aadf0f..fd3080ddd35a 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_console.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_console.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/drone_control name = "maintenance drone control console" - desc = "Used to monitor the station's drone population and the assembler that services them." + desc = "Используется для наблюдения за популяцией дронов на станции и сборщиком, который их обслуживает." icon_screen = "power" icon_keyboard = "power_key" req_access = list(ACCESS_ENGINE_EQUIP) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index ed9a968742d5..3df009b8cd6b 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -109,6 +109,54 @@ ) ..() +/obj/item/gripper/universal + name = "Universal gripper" + desc = "Универсальный захватывающий инструмент, используемый для выполнения сверх секретных заданий клана паука." + icon_state = "diskgripper" + can_hold = list(/obj/item/firealarm_electronics, + /obj/item/airalarm_electronics, + /obj/item/airlock_electronics, + /obj/item/firelock_electronics, + /obj/item/intercom_electronics, + /obj/item/apc_electronics, + /obj/item/access_control, + /obj/item/tracker_electronics, + /obj/item/stock_parts, + /obj/item/vending_refill, + /obj/item/mounted/frame/light_fixture, + /obj/item/mounted/frame/apc_frame, + /obj/item/mounted/frame/alarm_frame, + /obj/item/mounted/frame/firealarm, + /obj/item/mounted/frame/newscaster_frame, + /obj/item/mounted/frame/intercom, + /obj/item/mounted/frame/extinguisher, + /obj/item/mounted/frame/light_switch, + /obj/item/mounted/frame/door_control, + /obj/item/assembly/control, + /obj/item/rack_parts, + /obj/item/camera_assembly, + /obj/item/tank, + /obj/item/circuitboard, + /obj/item/stack/tile/light, + /obj/item/stack/ore/bluespace_crystal, + /obj/item/organ, + /obj/item/reagent_containers/iv_bag, + /obj/item/robot_parts/head, + /obj/item/robot_parts/l_arm, + /obj/item/robot_parts/r_arm, + /obj/item/robot_parts/l_leg, + /obj/item/robot_parts/r_leg, + /obj/item/robot_parts/chest, + /obj/item/stack/sheet/mineral/plasma, + /obj/item/card, + /obj/item/camera_film, + /obj/item/paper, + /obj/item/photo, + /obj/item/toy/plushie, + /obj/item/reagent_containers/food, + /obj/item/seeds, + /obj/item/disk/plantgene) + /obj/item/gripper/nuclear name = "Nuclear gripper" desc = "Designed for all your nuclear needs." diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index dbe4d67f6b14..744dce24c78a 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -110,6 +110,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( var/updating = 0 //portable camera camerachunk update hud_possible = list(SPECIALROLE_HUD, DIAG_STAT_HUD, DIAG_HUD, DIAG_BATT_HUD) + hud_type = /datum/hud/robot var/default_cell_type = /obj/item/stock_parts/cell/high ///Jetpack-like effect. @@ -171,12 +172,12 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( cell = new default_cell_type(src) initialize_components() - //if(!unfinished) - // Create all the robot parts. - for(var/V in components) if(V != "power cell") - var/datum/robot_component/C = components[V] - C.installed = 1 - C.wrapped = new C.external_type + + for(var/V in components) + if(V != "power cell") + var/datum/robot_component/C = components[V] + C.installed = 1 + C.wrapped = new C.external_type ..() @@ -195,6 +196,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(length(module?.borg_skins) <= 1 && (has_transform_animation || module?.has_transform_animation)) transform_animation(icon_state, TRUE) + add_strippable_element() /mob/living/silicon/robot/proc/add_strippable_element() @@ -207,9 +209,11 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( additional_law_channels["Binary"] = get_language_prefix(LANGUAGE_BINARY) if(!connect_to_AI) return + var/found_ai = ai_to_sync_to if(!found_ai) found_ai = select_active_ai_with_fewest_borgs() + if(found_ai) lawupdate = TRUE connect_to_ai(found_ai) @@ -220,7 +224,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( /mob/living/silicon/robot/rename_character(oldname, newname) if(!..(oldname, newname)) - return 0 + return FALSE if(oldname != real_name) notify_ai(ROBOT_NOTIFY_AI_NAME, oldname, newname) @@ -251,7 +255,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(mmi && mmi.brainmob) mmi.brainmob.name = newname - return 1 + return TRUE /mob/living/silicon/robot/proc/get_default_name(var/prefix as text) @@ -272,11 +276,14 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( /mob/living/silicon/robot/verb/Namepick() set category = "Robot Commands" + if(custom_name) - return 0 + return FALSE + if(!allow_rename) to_chat(src, span_warning("Rename functionality is not enabled on this unit.")) - return 0 + return FALSE + rename_self(braintype, 1) /mob/living/silicon/robot/verb/Change_Voice() @@ -294,8 +301,10 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( /mob/living/silicon/robot/proc/setup_PDA() if(!rbPDA) rbPDA = new(src) + rbPDA.set_name_and_job(real_name, braintype) var/datum/data/pda/app/messenger/M = rbPDA.find_program(/datum/data/pda/app/messenger) + if(M) if(scrambledcodes) M.hidden = 1 @@ -304,16 +313,21 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( /mob/living/silicon/robot/binarycheck() if(is_component_functioning("comms")) - return 1 - return 0 + return TRUE + + return FALSE //If there's an MMI in the robot, have it ejected when the mob goes away. --NEO //Improved /N /mob/living/silicon/robot/Destroy() SStgui.close_uis(wires) + if(mmi && mind)//Safety for when a cyborg gets dust()ed. Or there is no MMI inside. var/turf/T = get_turf(loc)//To hopefully prevent run time errors. - if(T) mmi.loc = T + + if(T) + mmi.loc = T + if(mmi.brainmob) mind.transfer_to(mmi.brainmob) mmi.update_icon() @@ -321,9 +335,12 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( to_chat(src, span_boldannounceooc("Oops! Something went very wrong, your MMI was unable to receive your mind. You have been ghosted. Please make a bug report so we can fix this bug.")) ghostize() error("A borg has been destroyed, but its MMI lacked a brainmob, so the mind could not be transferred. Player: [ckey].") + mmi = null + if(connected_ai) connected_ai.connected_robots -= src + QDEL_NULL(wires) QDEL_NULL(module) QDEL_NULL(camera) @@ -332,161 +349,79 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( QDEL_NULL(spark_system) QDEL_NULL(self_diagnosis) QDEL_NULL(ion_trail) + return ..() /mob/living/silicon/robot/proc/pick_module(var/forced_module = null) if(module) return + var/list/modules = list("Generalist", "Engineering", "Medical", "Miner", "Janitor", "Service", "Security") - if(islist(limited_modules) && limited_modules.len) + + if(islist(limited_modules) && LAZYLEN(limited_modules)) modules = limited_modules.Copy() + if(mmi?.alien) forced_module = "Hunter" + if(mmi?.syndicate) modules = list("Syndicate Saboteur", "Syndicate Medical", "Syndicate Bloodhound") + if(mmi?.ninja) forced_module = "Ninja" + if(mmi?.clock || isclocker(src)) forced_module = "Clockwork" + if(forced_module) modtype = forced_module + else modtype = input("Please, select a module!", "Robot", null, null) as null|anything in modules + if(!modtype) robot_module_hat_offset(icon_state) return + designation = modtype if(module) return - switch(modtype) - if("Generalist") - module = new /obj/item/robot_module/standard(src) - - if("Service") - module = new /obj/item/robot_module/butler(src) - see_reagents = TRUE - - if("Miner") - module = new /obj/item/robot_module/miner(src) - if(camera && ("Robots" in camera.network)) - camera.network.Add("Mining Outpost") - - if("Medical") - module = new /obj/item/robot_module/medical(src) - if(camera && ("Robots" in camera.network)) - camera.network.Add("Medical") - status_flags &= ~CANPUSH - see_reagents = TRUE - - if("Security") - if(!weapons_unlock) - var/count_secborgs = 0 - for(var/mob/living/silicon/robot/R in GLOB.alive_mob_list) - if(R && R.stat != DEAD && R.module && istype(R.module, /obj/item/robot_module/security)) - count_secborgs++ - var/max_secborgs = 2 - if(GLOB.security_level == SEC_LEVEL_GREEN) - max_secborgs = 1 - if(count_secborgs >= max_secborgs) - to_chat(src, span_warning("There are too many Security cyborgs active. Please choose another module.")) - return - module = new /obj/item/robot_module/security(src) - status_flags &= ~CANPUSH - - if("Engineering") - module = new /obj/item/robot_module/engineering(src) - if(camera && ("Robots" in camera.network)) - camera.network.Add("Engineering") - - ADD_TRAIT(src, TRAIT_NEGATES_GRAVITY, ROBOT_TRAIT) - - if("Janitor") - module = new /obj/item/robot_module/janitor(src) - - if("Combat") // Gamma ERT - module = new /obj/item/robot_module/combat(src) - status_flags &= ~CANPUSH - - if("Hunter") - module = new /obj/item/robot_module/hunter(src) - modtype = "Xeno-Hu" - - if("Syndicate Saboteur") - spawn_syndicate_borgs(src, "Saboteur", get_turf(src)) - qdel(src) - return - - if("Syndicate Medical") - spawn_syndicate_borgs(src, "Medical", get_turf(src)) - qdel(src) - return - - if("Syndicate Bloodhound") - spawn_syndicate_borgs(src, "Bloodhound", get_turf(src)) - qdel(src) - return - - if("Clockwork") - module = new /obj/item/robot_module/clockwork(src) - icon = 'icons/mob/clockwork_mobs.dmi' - icon_state = "cyborg" - status_flags &= ~CANPUSH - QDEL_NULL(mmi) - mmi = new /obj/item/mmi/robotic_brain/clockwork(src) - - if("Drone") - var/mob/living/silicon/robot/drone/drone = new(get_turf(src)) - mind.transfer_to(drone) - qdel(src) - return - - if("Cogscarab") - var/mob/living/silicon/robot/cogscarab/cogscarab = new(get_turf(src)) - mind.transfer_to(cogscarab) - qdel(src) - return + for(var/obj/item/robot_module/r_module as anything in subtypesof(/obj/item/robot_module)) + if(modtype != r_module.name) + continue - if("Ninja") - var/mob/living/silicon/robot/syndicate/saboteur/ninja/ninja = new(get_turf(src)) - mind.transfer_to(ninja) - qdel(src) - return + module = r_module + break - if("Deathsquad") - var/mob/living/silicon/robot/deathsquad/death = new(get_turf(src)) - mind.transfer_to(death) - qdel(src) - return - - if("Destroyer") // Rolling Borg - var/mob/living/silicon/robot/destroyer/destroy = new(get_turf(src)) - mind.transfer_to(destroy) - qdel(src) - return + module = new module(src) if(!module) CRASH("[key_name_log(src)] tried to choose non-existent '[modtype]' module!") - //languages + /// module effects + if(!module.on_apply(src)) + module = initial(module) + return + /// languages module.add_languages(src) - //subsystems + /// subsystems module.add_subsystems_and_actions(src) hands.icon_state = lowertext(module.module_type) SSblackbox.record_feedback("tally", "cyborg_modtype", 1, "[lowertext(modtype)]") - rename_character(real_name, get_default_name()) - - if(modtype == "Medical" || modtype == "Security" || modtype == "Combat") - status_flags &= ~CANPUSH + rename_character(real_name, get_default_name()) choose_icon() + if(client.stat_tab == "Status") SSstatpanels.set_status_tab(client) + if(!static_radio_channels) radio.config(module.channels) + notify_ai(ROBOT_NOTIFY_AI_MODULE) robot_module_hat_offset(icon_state) @@ -527,6 +462,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( var/datum/robot_component/cell/cell_component = R.components["power cell"] var/obj/item/stock_parts/cell/borg_cell = get_cell(M) + if(borg_cell) QDEL_NULL(R.cell) borg_cell.forceMove(R) @@ -630,9 +566,11 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( /mob/living/silicon/robot/verb/cmd_robot_alerts() set category = "Robot Commands" set name = "Show Alerts" + if(usr.stat == DEAD) to_chat(src, span_userdanger("Alert: You are dead.")) return //won't work if dead + robot_alerts() /mob/living/silicon/robot/proc/robot_alerts() @@ -668,9 +606,11 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( /mob/living/silicon/robot/proc/ionpulse() if(!ionpulse_on) return FALSE + if(!cell || !cell.use(25)) // 500 steps on a default cell. toggle_ionpulse(silent = TRUE) return FALSE + return TRUE @@ -678,6 +618,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(!ionpulse) if(!silent) to_chat(src, span_notice("No thrusters are installed!")) + return if(!ion_trail) @@ -705,6 +646,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( adjustBruteLoss(30) else gib() + return TRUE // this function displays the cyborgs current cell charge in the stat panel @@ -745,18 +687,23 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( /mob/living/silicon/robot/alarm_triggered(src, class, area/A, list/O, obj/alarmsource) if(!(class in alarms_listend_for)) return + if(alarmsource.z != z) return + if(stat == DEAD) return + queueAlarm(text("--- [class] alarm detected in [A.name]!"), class) /mob/living/silicon/robot/alarm_cancelled(src, class, area/A, obj/origin, cleared) if(cleared) if(!(class in alarms_listend_for)) return + if(origin.z != z) return + queueAlarm("--- [class] alarm in [A.name] has been cleared.", class, 0) /mob/living/silicon/robot/ex_act(severity) @@ -771,9 +718,12 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( apply_damage(30) -/mob/living/silicon/robot/bullet_act(var/obj/item/projectile/Proj) +/mob/living/silicon/robot/bullet_act(var/obj/projectile/Proj) ..(Proj) - if(prob(75) && Proj.damage > 0) spark_system.start() + + if(prob(75) && Proj.damage > 0) + spark_system.start() + return 2 @@ -787,37 +737,47 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(!opened) to_chat(user, span_warning("You must open the cover to access cyborg's internals!")) return ATTACK_CHAIN_PROCEED + for(var/V in components) var/datum/robot_component/component = components[V] if(!component.installed && istype(I, component.external_type)) if(!user.drop_transfer_item_to_loc(I, src)) return ..() + component.installed = TRUE component.wrapped = I component.install() + I.move_to_null_space() var/obj/item/robot_parts/robot_component/robot_component = I + if(istype(robot_component)) component.brute_damage = robot_component.brute component.electronics_damage = robot_component.burn + to_chat(user, span_notice("You have installed [I].")) return ATTACK_CHAIN_BLOCKED_ALL if(iscoil(I)) add_fingerprint(user) var/obj/item/stack/cable_coil/coil = I + if(!wiresexposed && !isdrone(src)) to_chat(user, span_warning("You should expose the wires first!")) return ATTACK_CHAIN_PROCEED + if(!getFireLoss()) to_chat(user, span_warning("Nothing to fix!")) return ATTACK_CHAIN_PROCEED + if(!getFireLoss(TRUE)) to_chat(user, span_warning("The damaged components are beyond saving!")) return ATTACK_CHAIN_PROCEED + if(!coil.use(1)) to_chat(user, span_warning("You need at least one length of cable to fix anything!")) return ATTACK_CHAIN_PROCEED + heal_overall_damage(burn = 30) visible_message( span_notice("[user] has fixed some of the burnt wires in [src]'s internals."), @@ -832,16 +792,21 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(!opened) to_chat(user, span_warning("You must open the cover to access cyborg's internals!")) return ATTACK_CHAIN_PROCEED + if(wiresexposed) to_chat(user, span_warning("You should hide the wires first!")) return ATTACK_CHAIN_PROCEED + if(cell) to_chat(user, span_warning("There is a power cell already installed!")) return ATTACK_CHAIN_PROCEED + if(!user.drop_transfer_item_to_loc(I, src)) return ..() + to_chat(user, span_notice("You have installed the power cell.")) var/datum/robot_component/cell/cell_component = components["power cell"] + cell = I cell_component.installed = TRUE cell_component.wrapped = I @@ -850,6 +815,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( //This will mean that removing and replacing a power cell will repair the mount, but I don't care at this point. ~Z cell_component.brute_damage = 0 cell_component.electronics_damage = 0 + var/been_hijacked = FALSE for(var/mob/living/simple_animal/demon/pulse_demon/demon in cell) if(!been_hijacked) @@ -857,8 +823,10 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( been_hijacked = TRUE else demon.exit_to_turf() + if(been_hijacked) cell.rigged = FALSE + module?.update_cells() diag_hud_set_borgcell() return ATTACK_CHAIN_BLOCKED_ALL @@ -868,30 +836,38 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(!opened) to_chat(user, span_warning("You must open the cover to access cyborg's internals!")) return ATTACK_CHAIN_PROCEED + if(!radio) //sanityyyyyy to_chat(user, span_warning("Unable to locate a radio!")) return ATTACK_CHAIN_PROCEED + radio.attackby(I, user, params) //GTFO, you have your own procs return ATTACK_CHAIN_BLOCKED_ALL if(I.GetID()) // trying to unlock the interface with an ID card add_fingerprint(user) + if(opened) to_chat(user, span_warning("You must close the cover to swipe an ID card!")) return ATTACK_CHAIN_PROCEED + if(emagged) //still allow them to open the cover to_chat(user, span_danger("The interface seems slightly damaged!")) + if(!allowed(I)) to_chat(user, span_warning("Access denied!")) return ATTACK_CHAIN_PROCEED + locked = !locked visible_message( span_warning("[user] has [locked ? "locked" : "unlocked"] [src]'s interface."), span_notice("[user] has [locked ? "locked" : "unlocked"] your interface."), ignored_mobs = user, ) + to_chat(user, span_notice("You have [locked ? "locked" : "unlocked"] cyborg's interface.")) update_icons() + return ATTACK_CHAIN_PROCEED_SUCCESS if(istype(I, /obj/item/borg/upgrade)) @@ -900,22 +876,28 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(!opened) to_chat(user, span_warning("You must open the cover to access cyborg's internals!")) return ATTACK_CHAIN_PROCEED + if(!module && upgrade.require_module) to_chat(user, span_warning("The cyborg must choose a specialization module before it can be upgraded!")) return ATTACK_CHAIN_PROCEED + if(!user.drop_transfer_item_to_loc(upgrade, src)) return ..() + if(!upgrade.action(src, user)) upgrade.forceMove(drop_location()) return ATTACK_CHAIN_BLOCKED_ALL + visible_message( span_warning("[user] has applied [upgrade] to [src]."), span_notice("[user] has applied [upgrade] to you."), ignored_mobs = user, ) + to_chat(user, span_notice("You have applied [upgrade] to [src].")) install_upgrade(upgrade) module?.fix_modules() //Set up newly added items with NODROP trait. + return ATTACK_CHAIN_BLOCKED_ALL if(istype(I, /obj/item/mmi_radio_upgrade)) @@ -923,32 +905,40 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(!opened) to_chat(user, span_warning("You must open the cover to access cyborg's internals!")) return ATTACK_CHAIN_PROCEED + if(!mmi) to_chat(user, span_warning("This cyborg does not have an MMI to augment!")) return ATTACK_CHAIN_PROCEED + if(mmi.radio) to_chat(user, span_warning("A radio upgrade is already installed!")) return ATTACK_CHAIN_PROCEED + if(!user.drop_transfer_item_to_loc(I, src)) return ..() + visible_message( span_warning("[user] has installed the radio upgrade to [src]'s MMI."), span_notice("[user] has installed the radio upgrade into yor MMI."), ignored_mobs = user, ) + to_chat(user, span_notice("You have installed the radio upgrade to [src]'s MMI.")) mmi.install_radio() qdel(I) + return ATTACK_CHAIN_BLOCKED_ALL if(istype(I, /obj/item/clockwork/clockslab) && isclocker(src) && isclocker(user) && src != user) add_fingerprint(user) locked = !locked + visible_message( span_warning("[user] has [locked ? "locked" : "unlocked"] [src]'s interface."), span_notice("[user] has [locked ? "locked" : "unlocked"] your interface."), ignored_mobs = user, ) + to_chat(user, span_notice("You have [locked ? "locked" : "unlocked"] cyborg's interface.")) update_icons() return ATTACK_CHAIN_PROCEED_SUCCESS @@ -959,33 +949,42 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( /mob/living/silicon/robot/wirecutter_act(mob/user, obj/item/I) if(user.a_intent == INTENT_HARM) // no interactions in combat return FALSE + if(!opened) return FALSE + . = TRUE if(!I.use_tool(src, user, 0, volume = 0)) return + if(wiresexposed) wires.Interact(user) /mob/living/silicon/robot/multitool_act(mob/user, obj/item/I) if(user.a_intent == INTENT_HARM) // no interactions in combat return FALSE + if(!opened) return FALSE + . = TRUE if(!I.use_tool(src, user, 0, volume = 0)) return + if(wiresexposed) wires.Interact(user) /mob/living/silicon/robot/screwdriver_act(mob/user, obj/item/I) if(user.a_intent == INTENT_HARM) // no interactions in combat return FALSE + if(!opened) return FALSE + . = TRUE if(!I.use_tool(src, user, volume = I.tool_volume)) return + if(!cell) // haxing wiresexposed = !wiresexposed to_chat(user, span_notice("The wires have been [wiresexposed ? "exposed" : "unexposed"].")) @@ -996,62 +995,79 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( radio.screwdriver_act(user, I)//Push it to the radio to let it handle everything else to_chat(user, "Unable to locate a radio.") + update_icons() /mob/living/silicon/robot/crowbar_act(mob/user, obj/item/I) if(user.a_intent == INTENT_HARM) // no interactions in combat return FALSE + . = TRUE if(!I.tool_use_check(user, 0)) return + if(!opened) if(locked) to_chat(user, "The cover is locked and cannot be opened.") return + if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return + to_chat(user, "You open the cover.") opened = TRUE update_icons() return + else if(cell) if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return + to_chat(user, "You close the cover.") opened = FALSE update_icons() return + else if(wiresexposed && wires.is_all_cut()) //Cell is out, wires are exposed, remove MMI, produce damaged chassis, baleet original mob. if(!mmi) to_chat(user, "[src] has no brain to remove.") return + to_chat(user, "You jam the crowbar into the robot and begin levering the securing bolts...") if(I.use_tool(src, user, 30, volume = I.tool_volume)) user.visible_message("[user] deconstructs [src]!", span_notice("You unfasten the securing bolts, and [src] falls to pieces!")) deconstruct() + return // Okay we're not removing the cell or an MMI, but maybe something else? var/list/removable_components = list() for(var/V in components) if(V == "power cell") continue + var/datum/robot_component/C = components[V] if(C.installed == 1 || C.installed == -1) removable_components += V + if(module) removable_components += module.custom_removals + var/remove = tgui_input_list(user, "Which component do you want to pry out?", "Remove Component", removable_components) if(!remove) return + if(module && module.handle_custom_removal(remove, user, I)) return + if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return + var/datum/robot_component/C = components[remove] var/obj/item/robot_parts/robot_component/thing = C.wrapped to_chat(user, "You remove \the [thing].") + if(istype(thing)) thing.brute = C.brute_damage thing.burn = C.electronics_damage @@ -1059,6 +1075,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( thing.loc = loc var/was_installed = C.installed C.installed = 0 + if(was_installed == 1) C.uninstall() @@ -1066,23 +1083,29 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( /mob/living/silicon/robot/welder_act(mob/user, obj/item/I) if(user.a_intent == INTENT_HARM) // no interactions in combat return FALSE + if(user == src) //No self-repair dummy return FALSE + . = TRUE if(!getBruteLoss()) to_chat(user, span_warning("Nothing to fix!")) return . + if(!getBruteLoss(TRUE)) to_chat(user, span_warning("The damaged components are beyond saving!")) return . + if(!I.use_tool(src, user, volume = I.tool_volume)) return . + heal_overall_damage(brute = 30) visible_message( span_notice("[user] has patched some dents on [src] with [I]."), span_notice("[user] has patched some dents on your externals with [I]."), ignored_mobs = user, ) + to_chat(user, span_notice("You have patched some dents on [src] with [I].")) @@ -1095,9 +1118,11 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( /mob/living/silicon/robot/emag_act(mob/user) if(!ishuman(user) && !issilicon(user)) return + if(isclocker(src)) to_chat(user, span_danger("As you try to emag, a magic force keeps the cover locked!")) return + var/mob/living/M = user if(!opened)//Cover is closed if(!is_emaggable) @@ -1108,14 +1133,17 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( locked = 0 else to_chat(user, "The cover is already unlocked.") + return if(opened)//Cover is open if(emagged) return//Prevents the X has hit Y with Z message also you cant emag them twice + if(wiresexposed) to_chat(user, "You must close the panel first") return + else add_attack_logs(user, src, "emag converted") add_conversion_logs(src, "Converted as a slave to [key_name_log(user)]") @@ -1152,18 +1180,23 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( laws.show_laws(src) to_chat(src, span_boldwarning("ALERT: [M.real_name] is your new master. Obey your new laws and [M.p_their()] commands.")) SetLockdown(FALSE) + if(module) module.emag_act(user) module.module_type = "Malf" // For the cool factor update_module_icon() + update_icons() + return // Here so admins can unemag borgs. /mob/living/silicon/robot/unemag() SetEmagged(FALSE) + if(!module) return + uneq_all() module.module_type = initial(module.module_type) update_module_icon() @@ -1176,11 +1209,14 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( /mob/living/silicon/robot/ratvar_act(weak = FALSE) if(isclocker(src) && module?.type == /obj/item/robot_module/clockwork) return + if(!weak) if(module) reset_module() + pick_module("Clockwork") pdahide = TRUE + SSticker.mode.add_clocker(mind) UnlinkSelf() laws = new /datum/ai_laws/ratvar @@ -1196,9 +1232,11 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( update_icons() to_chat(usr, span_notice("You [locked ? "lock" : "unlock"] your cover.")) return + if(!locked) to_chat(usr, span_warning("You cannot lock your cover yourself. Find a robotocist.")) return + if(tgui_alert(usr, "You cannnot lock your own cover again. Are you sure?\nYou will need a roboticist to re-lock you.", "Unlock Own Cover", list("Yes", "No")) == "Yes") locked = FALSE update_icons() @@ -1217,10 +1255,10 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(dummy.check_access(I)) qdel(dummy) - return 1 + return TRUE qdel(dummy) - return 0 + return FALSE /mob/living/silicon/robot/regenerate_icons() @@ -1231,16 +1269,21 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( cut_overlays() borg_icons() eyes_overlays() + if(opened) var/panelprefix = "ov" if(custom_sprite) //Custom borgs also have custom panels, heh panelprefix = "[ckey]" + if(custom_panel in custom_panel_names) //For default borgs with different panels panelprefix = custom_panel + if(wiresexposed) add_overlay("[panelprefix]-openpanel +w") + else if(cell) add_overlay("[panelprefix]-openpanel +c") + else add_overlay("[panelprefix]-openpanel -c") @@ -1248,14 +1291,18 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( var/image/head_icon if(!hat_icon_state) hat_icon_state = inventory_head.icon_state + if(!hat_alpha) hat_alpha = inventory_head.alpha + if(!hat_color) hat_color = inventory_head.color + if(!hat_icon_file) hat_icon_file = inventory_head.onmob_sheets[ITEM_SLOT_HEAD_STRING] head_icon = get_hat_overlay() + if(head_icon) add_overlay(head_icon) @@ -1264,6 +1311,8 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(blocks_emissive) add_overlay(get_emissive_block()) + if(module) + module.set_appearance(src) /mob/living/silicon/robot/proc/borg_icons() // Exists so that robot/destroyer can override it return @@ -1274,15 +1323,20 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(custom_panel in custom_eye_names) if(isclocker(src) && SSticker.mode.power_reveal) eyes_olay = "eyes-[custom_panel]-clocked" + else eyes_olay = "eyes-[custom_panel]" + else if(isclocker(src) && SSticker.mode.power_reveal) eyes_olay = "eyes-[icon_state]-clocked" + else eyes_olay = "eyes-[icon_state]" + if(eyes_olay) add_overlay(eyes_olay) + return /mob/living/silicon/robot/proc/installed_modules() @@ -1293,6 +1347,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(!module) pick_module() return + var/dat = {"Close

@@ -1309,15 +1364,20 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( for(var/obj in module.modules) if(!obj) dat += text("Resource depleted") + else if(activated(obj)) dat += text("[obj]Activated") + else dat += text("[obj]Activate") + if(emagged || weapons_unlock) if(activated(module.emag)) dat += text("[module.emag]Activated") + else dat += text("[module.emag]Activate") + dat += "" /* if(activated(obj)) @@ -1333,16 +1393,20 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(!upgrade.instant_use) RegisterSignal(upgrade, COMSIG_QDELETING, PROC_REF(on_upgrade_deleted)) upgrades += upgrade + if(upgrade.loc != src) upgrade.forceMove(src) + else qdel(upgrade) ///Called when an applied upgrade is deleted. /mob/living/silicon/robot/proc/on_upgrade_deleted(obj/item/borg/upgrade/old_upgrade) SIGNAL_HANDLER + if(!QDELETED(src)) old_upgrade.deactivate(src) + upgrades -= old_upgrade UnregisterSignal(old_upgrade, COMSIG_QDELETING) @@ -1350,6 +1414,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( . = ..() if(.) return TRUE + if(href_list["mach_close"]) var/t1 = text("window=[href_list["mach_close"]]") unset_machine() @@ -1366,6 +1431,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( var/obj/item/O = locate(href_list["act"]) if(!istype(O) || !(O.loc == src || O.loc == src.module)) return TRUE + activate_module(O) installed_modules() return TRUE @@ -1377,20 +1443,26 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(href_list["deact"]) var/obj/item/O = locate(href_list["deact"]) + if(activated(O)) if(module_state_1 == O) module_state_1 = null contents -= O + else if(module_state_2 == O) module_state_2 = null contents -= O + else if(module_state_3 == O) module_state_3 = null contents -= O + else to_chat(src, "Module isn't activated.") + else to_chat(src, "Module isn't activated") + installed_modules() return TRUE @@ -1404,8 +1476,10 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(lamp_intensity == 0) //We'll skip intensity of 2, since every mob already has such a see-darkness range, so no much need for it. lamp_intensity = 4 + else //Some sort of magical "modulo" thing which somehow increments lamp power by 2, until it hits the max and resets to 0. lamp_intensity = (lamp_intensity + 2) % (lamp_max + 2) + to_chat(src, span_notice("[lamp_intensity > 2 ? "Headlamp power set to Level [lamp_intensity * 0.5]" : "Headlamp disabled"].")) update_headlamp() @@ -1416,9 +1490,11 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( lamp_intensity = 0 lamp_cooldown = cooldown == BORG_LAMP_CD_RESET ? 0 : max(world.time + cooldown, lamp_cooldown) set_light_on(FALSE) + else - set_light_range((lamp_intensity + (on_fire ? fire_light_modificator : 0)) * 0.5) + set_light_range((lamp_intensity + (on_fire ? fire_light_modificator : 0)) - 2) set_light_on(TRUE) + else set_light_on(FALSE) @@ -1433,9 +1509,11 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( /mob/living/silicon/robot/proc/deconstruct() var/turf/T = get_turf(src) + if((modtype != "Clockwork" || !mmi.clock) && isclocker(src)) to_chat(src, span_warning("With body torn into pieces, your mind got free from evil cult!")) SSticker.mode.remove_clocker(mind, FALSE) + if(robot_suit) robot_suit.forceMove(T) robot_suit.l_leg.forceMove(T) @@ -1459,6 +1537,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( robot_suit.head.flash2 = null robot_suit.head = null robot_suit.update_icon(UPDATE_OVERLAYS) + else new /obj/item/robot_parts/robot_suit(T) new /obj/item/robot_parts/l_leg(T) @@ -1469,55 +1548,72 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( new /obj/item/robot_parts/r_arm(T) new /obj/item/robot_parts/head(T) var/b + for(b=0, b!=2, b++) var/obj/item/flash/F = new /obj/item/flash(T) F.burn_out() + if(cell) //Sanity check. cell.forceMove(T) cell = null + drop_hat() qdel(src) /mob/living/silicon/robot/Move(atom/newloc, direct = NONE, glide_size_override = 0, update_dir = TRUE) var/oldLoc = src.loc . = ..() + if(.) if(camera && oldLoc != src.loc) GLOB.cameranet.updatePortableCamera(src.camera) + if(module) if(module.type == /obj/item/robot_module/janitor) var/turf/tile = loc if(stat != DEAD && isturf(tile)) var/floor_only = TRUE + for(var/A in tile) if(iseffect(A)) var/obj/effect/check = A + if(check.is_cleanable()) var/obj/effect/decal/cleanable/blood/B = check + if(istype(B) && B.off_floor) floor_only = FALSE + else qdel(B) + else if(isitem(A)) var/obj/item/cleaned_item = A cleaned_item.clean_blood() + else if(ishuman(A)) var/mob/living/carbon/human/cleaned_human = A + if(cleaned_human.body_position == LYING_DOWN) if(cleaned_human.head) cleaned_human.head.clean_blood() cleaned_human.update_inv_head() + if(cleaned_human.wear_suit) cleaned_human.wear_suit.clean_blood() cleaned_human.update_inv_wear_suit() + else if(cleaned_human.w_uniform) cleaned_human.w_uniform.clean_blood() cleaned_human.update_inv_w_uniform() + if(cleaned_human.shoes) cleaned_human.shoes.clean_blood() cleaned_human.update_inv_shoes() + cleaned_human.clean_blood() to_chat(cleaned_human, span_danger("[src] cleans your face!")) + if(floor_only) tile.clean_blood() return @@ -1526,9 +1622,12 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(emagged) if(mmi) qdel(mmi) + explosion(src.loc,1,2,4,flame_range = 2, cause = src) + else explosion(src.loc,-1,0,2, cause = src) + gib() return @@ -1562,6 +1661,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( set src = usr var/obj/item/W = get_active_hand() + if(W) W.attack_self(src) @@ -1571,13 +1671,17 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( /mob/living/silicon/robot/proc/SetLockdown(state = TRUE) if(isclocker(src)) return + // They stay locked down if their wire is cut. if(wires?.is_cut(WIRE_BORG_LOCKED)) state = TRUE + if(state) throw_alert(ALERT_LOCKED, /atom/movable/screen/alert/locked) + else clear_alert(ALERT_LOCKED) + set_lockcharge(state) @@ -1585,11 +1689,14 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( /mob/living/silicon/robot/proc/set_lockcharge(new_lockcharge) if(new_lockcharge == lockcharge) return + . = lockcharge lockcharge = new_lockcharge + if(lockcharge) if(!.) ADD_TRAIT(src, TRAIT_IMMOBILIZED, LOCKED_BORG_TRAIT) + else if(.) REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, LOCKED_BORG_TRAIT) @@ -1604,6 +1711,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( var/list/choices = list() var/choice + if(length(module?.borg_skins) > 1) for(var/skin in module.borg_skins) var/image/skin_image = image(icon = icon, icon_state = module.borg_skins[skin]) @@ -1612,9 +1720,11 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( choice = show_radial_menu(src, src, choices, require_near = TRUE) cut_overlays() + if(choice) icon_state = module.borg_skins[choice] transform_animation(module.borg_skins[choice]) + else icon_state = module.default_skin transform_animation(module.default_skin, TRUE) @@ -1627,8 +1737,10 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( Immobilize(5 SECONDS) say("Загрузка модуля...") setDir(SOUTH) + for(var/i in 1 to 4) playsound(loc, pick('sound/items/drill_use.ogg', 'sound/items/jaws_cut.ogg', 'sound/items/jaws_pry.ogg', 'sound/items/welder.ogg', 'sound/items/ratchet.ogg'), 50, TRUE, -1) + flick("[animated_icon]_transform", src) to_chat(src, span_notice("Your icon has been set[default?" by default":""]. You now require a reset module to change it.")) addtimer(CALLBACK(src, TYPE_PROC_REF(/mob/living/silicon/robot, complete_loading)), 5 SECONDS) @@ -1640,6 +1752,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( /mob/living/silicon/robot/proc/notify_ai(var/notifytype, var/oldname, var/newname) if(!connected_ai) return + switch(notifytype) if(ROBOT_NOTIFY_AI_CONNECTED) //New Cyborg to_chat(connected_ai, "

[span_notice("NOTICE - New cyborg connection detected: [name]")]
") @@ -1660,6 +1773,11 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( notify_ai(ROBOT_NOTIFY_AI_CONNECTED) sync() +/mob/living/silicon/robot/can_perform_action(atom/target, action_bitflags) + if(lockcharge || low_power_mode) + to_chat(src, span_warning("You can't do that right now!")) + return FALSE + return ..() /mob/living/silicon/robot/adjustOxyLoss( amount = 0, @@ -1670,6 +1788,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( ) if(suiciding) return ..() + return STATUS_UPDATE_NONE @@ -1681,7 +1800,9 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( /mob/living/silicon/robot/emp_act(severity) if(emp_protection) return + ..() + switch(severity) if(1) disable_component("comms", 160) @@ -1691,11 +1812,14 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( /mob/living/silicon/robot/proc/set_connected_ai(new_ai) if(connected_ai == new_ai) return + . = connected_ai connected_ai = new_ai + if(.) var/mob/living/silicon/ai/old_ai = . old_ai.connected_robots -= src + if(connected_ai) connected_ai.connected_robots |= src @@ -1713,7 +1837,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( ear_protection = HEARING_PROTECTION_MINOR // Immunity to the audio part of flashbangs damage_protection = 10 // Reduce all incoming damage by this number brute_mod = 0.5 // Пулевые орудия наносят на 50%+5ед меньше урона. Теперь полная обойма ружейных пуль не убьет киборга(но заставит потерять 2 модуля и броню) - burn_mod = 0.5 // Забавно, у киборга отряда смерти отражение лазерных снарядов, впрочем все еще снижает урон от взрывов, и позволяет пережить более чем одну ракету из SRM8. + burn_mod = 0.5 // Забавно, у киборга отряда смерти отражение лазерных снарядов, впрочем все ещё снижает урон от взрывов, и позволяет пережить более чем одну ракету из SRM8. emp_protection = TRUE // Это киборг отряда смерти, он не должен быть остановим обычной импульсной винтовкой. allow_rename = FALSE modtype = "Commando" @@ -1738,11 +1862,12 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( radio.recalculateChannels() playsound(loc, 'sound/mecha/nominalsyndi.ogg', 75, 0) -/mob/living/silicon/robot/deathsquad/bullet_act(obj/item/projectile/P) +/mob/living/silicon/robot/deathsquad/bullet_act(obj/projectile/P) if(istype(P) && P.is_reflectable(REFLECTABILITY_ENERGY) && P.starting) - visible_message(span_danger("The [P.name] gets reflected by [src]!"), span_userdanger("The [P.name] gets reflected by [src]!")) + visible_message(span_danger("The [P.name] gets reflected by [src]!"), span_userdanger("The [P.name] gets reflected by [src]!"), projectile_message = TRUE) P.reflect_back(src) return -1 + return ..(P) @@ -1772,6 +1897,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( ..(loc) var/rnum = rand(1,1000) var/borgname = "[eprefix] ERT [rnum]" + name = borgname custom_name = borgname real_name = name @@ -1780,8 +1906,10 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( mind.set_original_mob(src) mind.assigned_role = SPECIAL_ROLE_ERT mind.special_role = SPECIAL_ROLE_ERT + if(!(mind in SSticker.minds)) SSticker.minds += mind + SSticker.mode.ert += mind @@ -1817,7 +1945,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( ear_protection = HEARING_PROTECTION_MINOR // Immunity to the audio part of flashbangs emp_protection = TRUE // Immunity to EMP, due to heavy shielding brute_mod = 0.5 // Пулевые орудия наносят на 50%+5ед меньше урона. Теперь полная обойма ружейных пуль не убьет киборга(но заставит потерять 2 модуля и броню) - burn_mod = 0.5 // Забавно, у киборга отряда смерти отражение лазерных снарядов, впрочем все еще снижает урон от взрывов, и позволяет пережить более чем одну ракету из SRM8. + burn_mod = 0.5 // Забавно, у киборга отряда смерти отражение лазерных снарядов, впрочем все ещё снижает урон от взрывов, и позволяет пережить более чем одну ракету из SRM8. damage_protection = 20 // Reduce all incoming damage by this number. Very high in the case of /destroyer borgs, since it is an admin-only borg. faction = list("nanotrasen") is_emaggable = FALSE @@ -1841,24 +1969,29 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( module.add_subsystems_and_actions(src) status_flags &= ~CANPUSH addtimer(CALLBACK(module, TYPE_PROC_REF(/obj/item/robot_module, update_cells)), 1 SECONDS) + if(radio) qdel(radio) + radio = new /obj/item/radio/borg/ert/specops(src) radio.recalculateChannels() playsound(loc, 'sound/mecha/nominalsyndi.ogg', 75, 0) -/mob/living/silicon/robot/destroyer/bullet_act(obj/item/projectile/P) +/mob/living/silicon/robot/destroyer/bullet_act(obj/projectile/P) if(istype(P) && P.is_reflectable(REFLECTABILITY_ENERGY) && P.starting && !(istype(module_active, /obj/item/borg/destroyer/mobility))) - visible_message(span_danger("The [P.name] gets reflected by [src]!"), span_userdanger("The [P.name] gets reflected by [src]!")) + visible_message(span_danger("The [P.name] gets reflected by [src]!"), span_userdanger("The [P.name] gets reflected by [src]!"), projectile_message = TRUE) P.reflect_back(src) return -1 + return ..(P) /mob/living/silicon/robot/destroyer/borg_icons() if(base_icon == "") base_icon = icon_state + if(module_active && istype(module_active,/obj/item/borg/destroyer/mobility)) icon_state = "[base_icon]-roll" + else icon_state = base_icon add_overlay("[base_icon]-shield") @@ -1868,10 +2001,13 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( var/eyes_olay if(isclocker(src) && SSticker.mode.power_reveal) eyes_olay = "eyes-[base_icon]-clocked" + else eyes_olay = "eyes-[base_icon]" + if(eyes_olay) add_overlay(eyes_olay) + return @@ -1883,14 +2019,17 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( ..() var/brute = 1000 var/burn = 1000 + var/list/datum/robot_component/borked_parts = get_damaged_components(TRUE, TRUE, TRUE, TRUE) for(var/datum/robot_component/borked_part in borked_parts) brute = borked_part.brute_damage burn = borked_part.electronics_damage borked_part.installed = 1 borked_part.wrapped = new borked_part.external_type + if(ispath(borked_part.external_type, /obj/item/stock_parts/cell)) // is the broken part a cell? cell = new borked_part.external_type // borgs that have their cell destroyed have their `cell` var set to null. we need create a new cell for them based on their old cell type. + borked_part.heal_damage(brute,burn) borked_part.install() @@ -1943,8 +2082,10 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( /// Used in `robot.dm` when the user presses "Q" by default. /mob/living/silicon/robot/proc/on_drop_hotkey_press() var/obj/item/gripper/G = module_active + if(istype(G) && G.gripped_item) G.drop_gripped_item() // if the active module is a gripper, try to drop its held item. + else uneq_active() // else unequip the module and put it back into the robot's inventory. return @@ -1956,6 +2097,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(makes_sound) audible_message(span_warning("[src] sounds an alarm! \"SYSTEM ERROR: Module 3 OFFLINE.\"")) playsound(loc, 'sound/machines/warning-buzzer.ogg', 50, TRUE) + to_chat(src, span_userdanger("SYSTEM ERROR: Module 3 OFFLINE.")) if(health < 0) @@ -1963,6 +2105,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(makes_sound) audible_message(span_warning("[src] sounds an alarm! \"SYSTEM ERROR: Module 2 OFFLINE.\"")) playsound(loc, 'sound/machines/warning-buzzer.ogg', 60, TRUE) + to_chat(src, span_userdanger("SYSTEM ERROR: Module 2 OFFLINE.")) if(health < -50) @@ -1970,6 +2113,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(makes_sound) audible_message(span_warning("[src] sounds an alarm! \"CRITICAL ERROR: All modules OFFLINE.\"")) playsound(loc, 'sound/machines/warning-buzzer.ogg', 75, TRUE) + to_chat(src, span_userdanger("CRITICAL ERROR: All modules OFFLINE.")) /mob/living/silicon/robot/can_see_reagents() @@ -1988,6 +2132,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( visible_message(span_warning("The power warning light on [span_name("[src]")] flashes urgently."), span_warning("You announce you are operating in low power mode.")) playsound(loc, 'sound/machines/buzz-two.ogg', 50, FALSE) + else to_chat(src, span_warning("You can only use this emote when you're out of charge.")) diff --git a/code/modules/mob/living/silicon/robot/robot_damage.dm b/code/modules/mob/living/silicon/robot/robot_damage.dm index 86c55c3945c6..4849ccf95b46 100644 --- a/code/modules/mob/living/silicon/robot/robot_damage.dm +++ b/code/modules/mob/living/silicon/robot/robot_damage.dm @@ -5,21 +5,28 @@ /mob/living/silicon/robot/getBruteLoss(repairable_only = FALSE) if(HAS_TRAIT(src, TRAIT_GODMODE)) return 0 + var/amount = 0 + for(var/V in components) var/datum/robot_component/C = components[V] + if(C.installed != 0 && (!repairable_only || C.installed != -1)) // Installed ones only and if repair only remove the borked ones amount += C.brute_damage + return amount /mob/living/silicon/robot/getFireLoss(repairable_only = FALSE) if(HAS_TRAIT(src, TRAIT_GODMODE)) - return 0 + return FALSE + var/amount = 0 for(var/V in components) var/datum/robot_component/C = components[V] + if(C.installed != 0 && (!repairable_only || C.installed != -1)) // Installed ones only and if repair only remove the borked ones amount += C.electronics_damage + return amount @@ -36,8 +43,10 @@ ) if(amount > 0) take_overall_damage(amount, 0, blocked, forced, updating_health, used_weapon, sharp, silent, affect_robotic) + else heal_overall_damage(amount, 0, updating_health, FALSE, affect_robotic) + return STATUS_UPDATE_HEALTH @@ -54,42 +63,52 @@ ) if(amount > 0) take_overall_damage(0, amount, blocked, forced, updating_health, used_weapon, sharp, silent, affect_robotic) + else heal_overall_damage(0, amount, updating_health, FALSE, affect_robotic) + return STATUS_UPDATE_HEALTH /mob/living/silicon/robot/proc/get_damaged_components(get_brute, get_burn, get_borked = FALSE, get_missing = FALSE) var/list/datum/robot_component/parts = list() + for(var/V in components) var/datum/robot_component/C = components[V] if((C.installed == 1 || (get_borked && C.installed == -1) || (get_missing && C.installed == 0)) && ((get_brute && C.brute_damage) || (get_burn && C.electronics_damage))) parts += C + return parts /mob/living/silicon/robot/proc/get_missing_components() var/list/datum/robot_component/parts = list() + for(var/V in components) var/datum/robot_component/C = components[V] if(C.installed == 0) parts += C + return parts /mob/living/silicon/robot/proc/get_damageable_components() var/list/rval = new + for(var/V in components) var/datum/robot_component/C = components[V] if(C.installed == 1) rval += C + return rval /mob/living/silicon/robot/proc/get_armour() if(!LAZYLEN(components)) - return 0 + return FALSE + var/datum/robot_component/C = components["armour"] if(C && C.installed == 1) return C - return 0 + + return FALSE /mob/living/silicon/robot/heal_organ_damage( @@ -101,8 +120,10 @@ ) . = STATUS_UPDATE_NONE var/list/datum/robot_component/parts = get_damaged_components(brute, burn) + if(!LAZYLEN(parts)) return . + var/datum/robot_component/picked = pick(parts) . |= picked.heal_damage(brute, burn, updating_health) @@ -148,7 +169,7 @@ . = STATUS_UPDATE_NONE var/list/datum/robot_component/parts = get_damaged_components(brute, burn) - if(!length(parts)) + if(!LAZYLEN(parts)) return . while(parts.len && (brute > 0 || burn > 0) ) @@ -156,7 +177,7 @@ var/brute_per_part = round(brute/parts.len, DAMAGE_PRECISION) var/burn_per_part = round(burn/parts.len, DAMAGE_PRECISION) - . |= picked.heal_damage(brute, burn, updating_health = FALSE) + . |= picked.heal_damage(brute_per_part, burn_per_part, updating_health = FALSE) brute = max(brute - brute_per_part, 0) burn = max(burn - burn_per_part, 0) @@ -185,16 +206,18 @@ brute = abs(brute) burn = abs(burn) + if(!forced) brute *= ((100 - clamp(blocked + get_blocking_resistance(brute, BRUTE, null, sharp, used_weapon), 0, 100)) / 100) brute *= get_incoming_damage_modifier(brute, BRUTE, null, sharp, used_weapon) burn *= ((100 - clamp(blocked + get_blocking_resistance(burn, BURN, null, sharp, used_weapon), 0, 100)) / 100) burn *= get_incoming_damage_modifier(burn, BURN, null, sharp, used_weapon) - if(brute <= 0 && burn <= 0) + + if(!brute && !burn) return . var/list/datum/robot_component/parts = get_damageable_components() - if(!length(parts)) + if(!LAZYLEN(parts)) return . var/datum/robot_component/armour/armour = get_armour() diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index f643acd3da59..20d497fb6495 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -3,36 +3,49 @@ if(body_position != LYING_DOWN) M.do_attack_animation(src, ATTACK_EFFECT_DISARM) var/obj/item/I = get_active_hand() + if(I) uneq_active() - visible_message("[M] disarmed [src]!", "[M] has disabled [src]'s active module!") + visible_message(span_danger("[M] disarmed [src]!"), span_userdanger("[M] has disabled [src]'s active module!")) add_attack_logs(M, src, "alien disarmed") + else Stun(4 SECONDS) step(src, get_dir(M,src)) add_attack_logs(M, src, "Alien pushed over") - visible_message("[M] forces back [src]!", "[M] forces back [src]!") + visible_message(span_danger("[M] forces back [src]!"), span_userdanger("[M] forces back [src]!")) + playsound(loc, 'sound/weapons/pierce.ogg', 50, TRUE, -1) + else ..() + return /mob/living/silicon/robot/attack_slime(mob/living/simple_animal/slime/M) - if(..()) //successful slime shock - flash_eyes(3, affect_silicon = TRUE) - var/stunprob = M.powerlevel * 7 + 10 - if(prob(stunprob) && M.powerlevel >= 8) - adjustBruteLoss(M.powerlevel * rand(6,10)) + . = ..() + + if(!.) //successful slime shock + return + + flash_eyes(3, affect_silicon = TRUE) + var/stunprob = M.powerlevel * 7 + 10 + + if(prob(stunprob) && M.powerlevel >= 8) + adjustBruteLoss(M.powerlevel * rand(6,10)) var/damage = rand(1, 3) if(M.age_state.age != SLIME_BABY) damage = rand(20 + M.age_state.damage, 40 + M.age_state.damage) + else damage = rand(5, 35) + damage = round(damage / 2) // borgs recieve half damage adjustBruteLoss(damage) - return + + return . /mob/living/silicon/robot/attack_hand(mob/living/carbon/human/user) add_fingerprint(user) @@ -43,7 +56,7 @@ cell.add_fingerprint(user) cell.forceMove_turf() user.put_in_active_hand(cell, ignore_anim = FALSE) - to_chat(user, "You remove \the [cell].") + to_chat(user, span_notice("You remove \the [cell].")) cell = null var/datum/robot_component/C = components["power cell"] C.installed = 0 @@ -54,7 +67,6 @@ if(!opened) if(..()) // hulk attack spark_system.start() - spawn(0) - step_away(src, user, 15) - sleep(3) - step_away(src, user, 15) + step_away(src, user, 15) + sleep(3) + step_away(src, user, 15) diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm index 950722af8cc8..54d7f7e1f753 100644 --- a/code/modules/mob/living/silicon/robot/robot_items.dm +++ b/code/modules/mob/living/silicon/robot/robot_items.dm @@ -11,14 +11,17 @@ var/choice = tgui_input_list(user, "Would you like to change colour or mode?", name, list("Colour","Mode")) if(!choice) return + switch(choice) if("Colour") select_colour(user) if("Mode") if(mode == 1) mode = 2 + else mode = 1 + to_chat(user, "Changed printing mode to '[mode == 2 ? "Rename Paper" : "Write Paper"]'") playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) @@ -28,12 +31,13 @@ // see code\modules\paperwork\paper.dm line 62 /obj/item/pen/multi/robopen/proc/RenamePaper(mob/user as mob,obj/paper as obj) - if( !user || !paper ) + if(!user || !paper) return var/n_name = tgui_input_text(user, "What would you like to label the paper?", "Paper Labelling", max_length = MAX_NAME_LEN) if(!Adjacent(user) || !n_name) return + paper.name = "paper - [n_name]" add_fingerprint(user) return @@ -52,18 +56,17 @@ /obj/item/form_printer/afterattack(atom/target, mob/living/user, flag, params) - if(!target || !flag) return - if(istype(target,/obj/structure/table)) + if(istype(target, /obj/structure/table)) deploy_paper(get_turf(target)) /obj/item/form_printer/attack_self(mob/user as mob) deploy_paper(get_turf(src)) /obj/item/form_printer/proc/deploy_paper(var/turf/T) - T.visible_message("\The [src.loc] dispenses a sheet of crisp white paper.") + T.visible_message(span_notice("\The [src.loc] dispenses a sheet of crisp white paper.")) new /obj/item/paper(T) diff --git a/code/modules/mob/living/silicon/robot/robot_module_actions.dm b/code/modules/mob/living/silicon/robot/robot_module_actions.dm index aff796406ecc..b47bac42cb03 100644 --- a/code/modules/mob/living/silicon/robot/robot_module_actions.dm +++ b/code/modules/mob/living/silicon/robot/robot_module_actions.dm @@ -1,19 +1,24 @@ /datum/action/innate/robot_sight var/sight_mode = null + icon_icon = 'icons/obj/decals.dmi' button_icon_state = "securearea" /datum/action/innate/robot_sight/Activate() var/mob/living/silicon/robot/R = owner + R.sight_mode |= sight_mode R.update_sight() - active = 1 + + active = TRUE /datum/action/innate/robot_sight/Deactivate() var/mob/living/silicon/robot/R = owner + R.sight_mode &= ~sight_mode R.update_sight() - active = 0 + + active = FALSE /datum/action/innate/robot_sight/xray name = "X-ray Vision" diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 9e0f51636c59..647dee1dc205 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -28,13 +28,15 @@ if(modules) for(var/obj/O in modules) O.emp_act(severity) + if(emag) emag.emp_act(severity) + ..() -/obj/item/robot_module/New() - ..() +/obj/item/robot_module/Initialize(mapload) + . = ..() add_default_robot_items() emag = new /obj/item/toy/sword(src) emag.name = "Placeholder Emag Item" @@ -48,10 +50,17 @@ /obj/item/robot_module/proc/add_default_robot_items() modules += new /obj/item/flash/cyborg(src) +/obj/item/robot_module/proc/on_apply(mob/living/silicon/robot/robot) + return TRUE + +/obj/item/robot_module/proc/set_appearance(mob/living/silicon/robot/robot) + return TRUE + /obj/item/robot_module/proc/fix_modules() for(var/obj/item/I in modules) ADD_TRAIT(I, TRAIT_NODROP, CYBORG_ITEM_TRAIT) I.mouse_opacity = MOUSE_OPACITY_OPAQUE + if(emag) ADD_TRAIT(emag, TRAIT_NODROP, CYBORG_ITEM_TRAIT) emag.mouse_opacity = MOUSE_OPACITY_OPAQUE @@ -114,6 +123,7 @@ /obj/item/robot_module/proc/rebuild()//Rebuilds the list so it's possible to add/remove items from the module var/list/temp_list = modules modules = list() + for(var/obj/O in temp_list) if(!QDELETED(O)) //so items getting deleted don't stay in module list and haunt you modules += O @@ -140,6 +150,7 @@ /obj/item/robot_module/proc/add_subsystems_and_actions(mob/living/silicon/robot/R) add_verb(R, subsystems) + for(var/A in module_actions) var/datum/action/act = new A() act.Grant(R) @@ -147,9 +158,11 @@ /obj/item/robot_module/proc/remove_subsystems_and_actions(mob/living/silicon/robot/R) remove_verb(R, subsystems) + for(var/datum/action/A in R.module_actions) A.Remove(R) qdel(A) + R.module_actions.Cut() // Return true in an overridden subtype to prevent normal removal handling @@ -179,42 +192,40 @@ /obj/item/robot_module/standard/New() ..() - modules += new /obj/item/extinguisher/mini(src) // for firefighting, and propulsion in space + modules += new /obj/item/screwdriver/cyborg(src) //added for minor works + modules += new /obj/item/wirecutters/cyborg(src) //addded to be able cut at least its own placed wires and rods modules += new /obj/item/crowbar/cyborg(src) - // sec - modules += new /obj/item/restraints/handcuffs/cable/zipties(src) + modules += new /obj/item/wrench/cyborg(src) + modules += new /obj/item/weldingtool(src) //added instead of upgraded version modules += new /obj/item/melee/baton/telescopic(src) // for minimal possablity to execute sec part of the module and also for tests - // janitorial - modules += new /obj/item/soap/nanotrasen(src) - modules += new /obj/item/lightreplacer/cyborg(src) + modules += new /obj/item/restraints/handcuffs/cable/zipties(src) + modules += new /obj/item/flash/cyborg(src) modules += new /obj/item/reagent_containers/spray/cleaner/drone(src) // test if will be in active usage and become op to be cutted out later - // service - modules += new /obj/item/instrument/piano_synth(src) // added for minimal service part - // eng + modules += new /obj/item/soap/nanotrasen(src) modules += new /obj/item/stack/sheet/metal/cyborg(src) modules += new /obj/item/stack/sheet/glass/cyborg(src) // regular glass for simplest works on broken window replacement modules += new /obj/item/stack/cable_coil/cyborg(src) - modules += new /obj/item/stack/rods/cyborg(src) - modules += new /obj/item/stack/tile/plasteel/cyborg(src) - modules += new /obj/item/wrench/cyborg(src) - modules += new /obj/item/screwdriver/cyborg(src) //added for minor works - modules += new /obj/item/weldingtool(src) //added instead of upgraded version - modules += new /obj/item/wirecutters/cyborg(src) //addded to be able cut at least its own placed wires and rods - // mining - modules += new /obj/item/pickaxe/drill/cyborg(src) // instead of the pickaxe the worst tool for mining anywhere but killing someone with it - modules += new /obj/item/mining_scanner/cyborg(src) // instead of advanced scanner, we have mining module already - modules += new /obj/item/storage/bag/ore/cyborg(src) - // med modules += new /obj/item/healthanalyzer(src) modules += new /obj/item/reagent_containers/borghypo/basic(src) - modules += new /obj/item/roller_holder(src) // for taking the injured to medbay without worsening their injuries or leaving a blood trail the whole way modules += new /obj/item/handheld_defibrillator(src) // test if will be in active usage and become op to be cutted out later, instead of salbutomol + modules += new /obj/item/extinguisher/mini(src) // for firefighting, and propulsion in space + modules += new /obj/item/lightreplacer/cyborg(src) + modules += new /obj/item/roller_holder(src) // for taking the injured to medbay without worsening their injuries or leaving a blood trail the whole way + modules += new /obj/item/pickaxe/drill/cyborg(src) // instead of the pickaxe the worst tool for mining anywhere but killing someone with it + modules += new /obj/item/mining_scanner/cyborg(src) // instead of advanced scanner, we have mining module already + modules += new /obj/item/storage/bag/ore/cyborg(src) + modules += new /obj/item/stack/rods/cyborg(src) + modules += new /obj/item/stack/tile/plasteel/cyborg(src) + modules += new /obj/item/instrument/piano_synth(src) // added for minimal service part emag = new /obj/item/melee/energy/sword/cyborg(src) fix_modules() handle_storages() +/obj/item/robot_module/standard/add_default_robot_items() + return + /obj/item/robot_module/standard/respawn_consumable(mob/living/silicon/robot/R) var/obj/item/reagent_containers/spray/cleaner/C = locate() in modules C.reagents.add_reagent("cleaner", 3) @@ -238,33 +249,43 @@ ) has_transform_animation = TRUE +/obj/item/robot_module/medical/on_apply(mob/living/silicon/robot/robot) + if(robot.camera && ("Robots" in robot.camera.network)) + LAZYADD(robot.camera.network, "Medical") + + robot.status_flags &= ~CANPUSH + robot.see_reagents = TRUE + + return TRUE + /obj/item/robot_module/medical/New() ..() + modules += new /obj/item/extinguisher/mini(src) modules += new /obj/item/healthanalyzer/advanced(src) modules += new /obj/item/robotanalyzer(src) - modules += new /obj/item/reagent_scanner/adv(src) - modules += new /obj/item/twohanded/shockpaddles/borg(src) - modules += new /obj/item/handheld_defibrillator(src) - modules += new /obj/item/roller_holder(src) modules += new /obj/item/reagent_containers/borghypo(src) - modules += new /obj/item/reagent_containers/glass/beaker/large(src) - modules += new /obj/item/reagent_containers/dropper(src) - modules += new /obj/item/reagent_containers/syringe(src) - modules += new /obj/item/extinguisher/mini(src) - modules += new /obj/item/stack/medical/bruise_pack/advanced/cyborg(src) - modules += new /obj/item/stack/medical/ointment/advanced/cyborg(src) - modules += new /obj/item/stack/medical/splint/cyborg(src) - modules += new /obj/item/stack/nanopaste/cyborg(src) + modules += new /obj/item/handheld_defibrillator(src) + modules += new /obj/item/twohanded/shockpaddles/borg(src) + modules += new /obj/item/gripper/medical(src) + modules += new /obj/item/flash/cyborg(src) modules += new /obj/item/scalpel/laser/laser1(src) modules += new /obj/item/hemostat(src) modules += new /obj/item/retractor(src) + modules += new /obj/item/circular_saw(src) modules += new /obj/item/bonegel(src) - modules += new /obj/item/FixOVein(src) modules += new /obj/item/bonesetter(src) - modules += new /obj/item/circular_saw(src) - modules += new /obj/item/surgicaldrill(src) - modules += new /obj/item/gripper/medical(src) + modules += new /obj/item/stack/medical/splint/cyborg(src) + modules += new /obj/item/stack/nanopaste/cyborg(src) + modules += new /obj/item/reagent_containers/glass/beaker/large(src) + modules += new /obj/item/reagent_containers/dropper(src) + modules += new /obj/item/reagent_containers/syringe(src) modules += new /obj/item/crowbar/cyborg(src) + modules += new /obj/item/FixOVein(src) + modules += new /obj/item/surgicaldrill(src) + modules += new /obj/item/stack/medical/bruise_pack/advanced/cyborg(src) + modules += new /obj/item/stack/medical/ointment/advanced/cyborg(src) + modules += new /obj/item/reagent_scanner/adv(src) + modules += new /obj/item/roller_holder(src) modules += new /obj/item/rlf(src) emag = new /obj/item/reagent_containers/borghypo/emagged(src) // emagged med. cyborg gets a special hypospray. @@ -284,12 +305,17 @@ /obj/item/robot_module/medical/unemag() for(var/obj/item/twohanded/shockpaddles/borg/defib in modules) defib.emag_act() + return ..() +/obj/item/robot_module/medical/add_default_robot_items() + return + /obj/item/robot_module/medical/respawn_consumable(mob/living/silicon/robot/R) if(emag) var/obj/item/reagent_containers/spray/PS = emag PS.reagents.add_reagent("sacid", 2) + ..() /obj/item/robot_module/engineering @@ -312,8 +338,17 @@ ) has_transform_animation = TRUE +/obj/item/robot_module/engineering/on_apply(mob/living/silicon/robot/robot) + if(robot.camera && ("Robots" in robot.camera.network)) + LAZYADD(robot.camera.network, "Engineering") + + ADD_TRAIT(robot, TRAIT_NEGATES_GRAVITY, ROBOT_TRAIT) + + return TRUE + /obj/item/robot_module/engineering/New() ..() + modules += new /obj/item/flash/cyborg(src) modules += new /obj/item/rcd/borg(src) modules += new /obj/item/rpd(src) modules += new /obj/item/extinguisher(src) @@ -341,6 +376,9 @@ fix_modules() handle_storages() +/obj/item/robot_module/engineering/add_default_robot_items() + return + /obj/item/robot_module/engineering/handle_death(mob/living/silicon/robot/R, gibbed) var/obj/item/gripper/G = locate(/obj/item/gripper) in modules if(G) @@ -363,6 +401,29 @@ ) has_transform_animation = TRUE +/obj/item/robot_module/security/on_apply(mob/living/silicon/robot/robot) + if(!robot.weapons_unlock) + var/count_secborgs = 0 + + for(var/mob/living/silicon/robot/silicon in GLOB.alive_mob_list) + if(silicon == robot) + continue + + if(silicon.stat != DEAD && silicon.module && istype(silicon.module, /obj/item/robot_module/security)) + count_secborgs++ + + var/max_secborgs = 2 + if(GLOB.security_level == SEC_LEVEL_GREEN) + max_secborgs = 1 + + if(count_secborgs >= max_secborgs) + to_chat(robot, span_warning("There are too many Security cyborgs active. Please choose another module.")) + return FALSE + + robot.status_flags &= ~CANPUSH + + return TRUE + /obj/item/robot_module/security/New() ..() modules += new /obj/item/restraints/handcuffs/cable/zipties(src) @@ -426,6 +487,11 @@ ) has_transform_animation = TRUE +/obj/item/robot_module/butler/on_apply(mob/living/silicon/robot/robot) + robot.see_reagents = TRUE + + return TRUE + /obj/item/robot_module/butler/New() ..() @@ -474,8 +540,10 @@ if(emag) var/obj/item/reagent_containers/food/drinks/cans/beer/B = emag B.reagents.add_reagent("beer2", 2) + var/obj/item/reagent_containers/spray/pestspray/spray = locate() in modules spray?.reagents.add_reagent("pestkiller", 3) + ..() /obj/item/robot_module/butler/add_languages(var/mob/living/silicon/robot/R) @@ -499,9 +567,11 @@ R.add_language(LANGUAGE_MOTH, 1) /obj/item/robot_module/butler/handle_death(mob/living/silicon/robot/R, gibbed) - var/obj/item/storage/bag/tray/cyborg/T = locate(/obj/item/storage/bag/tray/cyborg) in modules + var/obj/item/storage/bag/tray/cyborg/T = locate() in modules + if(istype(T)) T.drop_inventory(R) + var/obj/item/gripper/service/G = locate() in modules if(G) G.drop_gripped_item(silent = TRUE) @@ -527,6 +597,12 @@ ) has_transform_animation = TRUE +/obj/item/robot_module/miner/on_apply(mob/living/silicon/robot/robot) + if(robot.camera && ("Robots" in robot.camera.network)) + LAZYADD(robot.camera.network, "Mining Outpost") + + return TRUE + /obj/item/robot_module/miner/New() ..() modules += new /obj/item/storage/bag/ore/cyborg(src) @@ -551,6 +627,7 @@ if(!istype(D, /obj/item/pickaxe/drill/cyborg/diamond)) qdel(D) modules -= D // Remove it from this list so it doesn't get added in the rebuild. + modules += new /obj/item/pickaxe/drill/cyborg/diamond(src) rebuild() @@ -559,15 +636,19 @@ for(var/obj/item/pickaxe/drill/cyborg/diamond/drill in modules) qdel(drill) modules -= drill + modules += new /obj/item/pickaxe/drill/cyborg(src) rebuild() + return ..() /obj/item/robot_module/miner/handle_custom_removal(component_id, mob/living/user, obj/item/W) if(component_id == "KA modkits") for(var/obj/item/gun/energy/kinetic_accelerator/cyborg/D in src) W.melee_attack_chain(user, D) + return TRUE + return ..() /obj/item/robot_module/deathsquad @@ -581,6 +662,13 @@ borg_skins = list("Deathsquad" = "nano_bloodhound") has_transform_animation = TRUE +/obj/item/robot_module/deathsquad/on_apply(mob/living/silicon/robot/robot) + var/mob/living/silicon/robot/deathsquad/death = new(get_turf(robot)) + robot.mind?.transfer_to(death) + qdel(robot) + + return TRUE + /obj/item/robot_module/deathsquad/New() ..() modules += new /obj/item/melee/energy/sword/cyborg(src) @@ -599,6 +687,12 @@ borg_skins = list("Syndicate Bloodhound" = "syndie_bloodhound") has_transform_animation = TRUE +/obj/item/robot_module/syndicate/on_apply(mob/living/silicon/robot/robot) + robot.spawn_syndicate_borgs(robot, "Bloodhound", get_turf(robot)) + qdel(robot) + + return TRUE + /obj/item/robot_module/syndicate/New() ..() modules += new /obj/item/melee/energy/sword/cyborg(src) @@ -621,40 +715,50 @@ borg_skins = list("Syndicate Medical" = "syndi-medi") has_transform_animation = TRUE +/obj/item/robot_module/syndicate_medical/on_apply(mob/living/silicon/robot/robot) + robot.spawn_syndicate_borgs(robot, "Medical", get_turf(robot)) + qdel(robot) + + return TRUE + /obj/item/robot_module/syndicate_medical/New() ..() + modules += new /obj/item/extinguisher/mini(src) modules += new /obj/item/healthanalyzer/advanced(src) - modules += new /obj/item/reagent_scanner/adv(src) - modules += new /obj/item/bodyanalyzer/borg/syndicate(src) - modules += new /obj/item/twohanded/shockpaddles/borg(src) - modules += new /obj/item/handheld_defibrillator(src) - modules += new /obj/item/roller_holder(src) modules += new /obj/item/reagent_containers/borghypo/syndicate(src) - modules += new /obj/item/extinguisher/mini(src) - modules += new /obj/item/stack/medical/bruise_pack/advanced/cyborg(src) - modules += new /obj/item/stack/medical/ointment/advanced/cyborg(src) - modules += new /obj/item/stack/medical/splint/cyborg(src) - modules += new /obj/item/stack/nanopaste/cyborg(src) + modules += new /obj/item/gun/medbeam(src) + modules += new /obj/item/handheld_defibrillator(src) + modules += new /obj/item/twohanded/shockpaddles/borg(src) + modules += new /obj/item/gripper/medical(src) + modules += new /obj/item/flash/cyborg(src) modules += new /obj/item/scalpel/laser/laser1(src) modules += new /obj/item/hemostat(src) modules += new /obj/item/retractor(src) + modules += new /obj/item/melee/energy/sword/cyborg/saw(src) //Energy saw -- primary weapon modules += new /obj/item/bonegel(src) - modules += new /obj/item/FixOVein(src) modules += new /obj/item/bonesetter(src) - modules += new /obj/item/surgicaldrill(src) - modules += new /obj/item/gripper/medical(src) - modules += new /obj/item/gun/medbeam(src) - modules += new /obj/item/melee/energy/sword/cyborg/saw(src) //Energy saw -- primary weapon + modules += new /obj/item/gripper/nuclear(src) modules += new /obj/item/card/emag(src) modules += new /obj/item/crowbar/cyborg(src) + modules += new /obj/item/FixOVein(src) + modules += new /obj/item/surgicaldrill(src) + modules += new /obj/item/bodyanalyzer/borg/syndicate(src) + modules += new /obj/item/stack/medical/splint/cyborg(src) + modules += new /obj/item/stack/nanopaste/cyborg(src) + modules += new /obj/item/stack/medical/bruise_pack/advanced/cyborg(src) + modules += new /obj/item/stack/medical/ointment/advanced/cyborg(src) + modules += new /obj/item/reagent_scanner/adv(src) modules += new /obj/item/pinpointer/operative(src) modules += new /obj/item/pinpointer/nukeop(src) - modules += new /obj/item/gripper/nuclear(src) + modules += new /obj/item/roller_holder(src) emag = null fix_modules() handle_storages() +/obj/item/robot_module/syndicate_medical/add_default_robot_items() + return + /obj/item/robot_module/syndicate_saboteur name = "Syndicate Saboteur" name_disguise = "Engineering" @@ -663,26 +767,33 @@ borg_skins = list("Syndicate Saboteur" = "syndi-engi") has_transform_animation = TRUE +/obj/item/robot_module/syndicate_saboteur/on_apply(mob/living/silicon/robot/robot) + robot.spawn_syndicate_borgs(robot, "Saboteur", get_turf(robot)) + qdel(src) + + return TRUE + /obj/item/robot_module/syndicate_saboteur/New() ..() - modules += new /obj/item/rcd/borg/syndicate(src) - modules += new /obj/item/rpd(src) - modules += new /obj/item/extinguisher(src) - modules += new /obj/item/weldingtool/largetank/cyborg(src) modules += new /obj/item/screwdriver/cyborg(src) - modules += new /obj/item/wrench/cyborg(src) - modules += new /obj/item/crowbar/cyborg(src) modules += new /obj/item/wirecutters/cyborg(src) + modules += new /obj/item/crowbar/cyborg(src) + modules += new /obj/item/wrench/cyborg(src) + modules += new /obj/item/weldingtool/largetank/cyborg(src) modules += new /obj/item/multitool/cyborg(src) + modules += new /obj/item/gripper(src) + modules += new /obj/item/flash/cyborg(src) + modules += new /obj/item/rcd/borg/syndicate(src) + modules += new /obj/item/rpd(src) modules += new /obj/item/t_scanner(src) modules += new /obj/item/analyzer(src) - modules += new /obj/item/gripper(src) - modules += new /obj/item/melee/energy/sword/cyborg(src) modules += new /obj/item/card/emag(src) - modules += new /obj/item/borg_chameleon(src) + modules += new /obj/item/melee/energy/sword/cyborg(src) + modules += new /obj/item/gripper/nuclear(src) + modules += new /obj/item/extinguisher(src) modules += new /obj/item/pinpointer/operative(src) modules += new /obj/item/pinpointer/nukeop(src) - modules += new /obj/item/gripper/nuclear(src) + modules += new /obj/item/borg_chameleon(src) modules += new /obj/item/stack/sheet/metal/cyborg(src) modules += new /obj/item/stack/sheet/glass/cyborg(src) modules += new /obj/item/stack/sheet/rglass/cyborg(src) @@ -694,6 +805,9 @@ fix_modules() handle_storages() +/obj/item/robot_module/syndicate_sabateur/add_default_robot_items() + return + /obj/item/robot_module/destroyer name = "Destroyer" module_type = "Malf" @@ -705,6 +819,13 @@ borg_skins = list("Destroyer" = "droidcombat") has_transform_animation = TRUE +/obj/item/robot_module/destroyer/on_apply(mob/living/silicon/robot/robot) + var/mob/living/silicon/robot/destroyer/destroy = new(get_turf(robot)) + robot.mind?.transfer_to(destroy) + qdel(robot) + + return TRUE + /obj/item/robot_module/destroyer/New() ..() @@ -717,6 +838,7 @@ modules += new /obj/item/gripper/nuclear(src) modules += new /obj/item/pinpointer(src) emag = new /obj/item/gun/energy/pulse/destroyer/annihilator(src) + fix_modules() @@ -728,6 +850,11 @@ borg_skins = list("ERT-GAMMA" = "ertgamma") has_transform_animation = TRUE +/obj/item/robot_module/combat/on_apply(mob/living/silicon/robot/robot) + robot.status_flags &= ~CANPUSH + + return TRUE + /obj/item/robot_module/combat/New() ..() modules += new /obj/item/gun/energy/immolator/multi/cyborg(src) // primary weapon, strong at close range (ie: against blob/terror/xeno), but consumes a lot of energy per shot. @@ -743,6 +870,7 @@ modules += new /obj/item/gripper/nuclear(src) modules += new /obj/item/pinpointer(src) emag = null + fix_modules() @@ -755,25 +883,29 @@ default_skin = "xenoborg" borg_skins = list("Xenoborg" = "xenoborg") +/obj/item/robot_module/hunter/on_apply(mob/living/silicon/robot/robot) + robot.modtype = "Xeno-Hu" + return TRUE + /obj/item/robot_module/hunter/add_default_robot_items() return /obj/item/robot_module/hunter/New() ..() - modules += new /obj/item/melee/energy/alien/claws(src) + modules += new /obj/item/melee/energy/alien_claws(src) modules += new /obj/item/flash/cyborg/alien(src) - var/obj/item/reagent_containers/spray/alien/stun/S = new /obj/item/reagent_containers/spray/alien/stun(src) - S.reagents.add_reagent("cryogenic_liquid",250) //nerfed to sleeptoxin to make it less instant drop. - modules += S - var/obj/item/reagent_containers/spray/alien/smoke/A = new /obj/item/reagent_containers/spray/alien/smoke(src) - S.reagents.add_reagent("water",50) //Water is used as a dummy reagent for the smoke bombs. More of an ammo counter. - modules += A + modules += new /obj/item/reagent_containers/spray/alien/smoke(src) + modules += new /obj/item/reagent_containers/spray/alien/stun(src) emag = new /obj/item/reagent_containers/spray/alien/acid(src) - emag.reagents.add_reagent("facid", 125) - emag.reagents.add_reagent("sacid", 125) - fix_modules() +/obj/item/robot_module/hunter/respawn_consumable(mob/living/silicon/robot/R) + if(emag) + var/obj/item/reagent_containers/spray/alien/acid/acidSpray = emag + acidSpray.reagents.add_reagent("sacid", 3) + acidSpray.reagents.add_reagent("facid", 3) + ..() + /obj/item/robot_module/hunter/add_languages(var/mob/living/silicon/robot/R) ..() R.add_language(LANGUAGE_XENOS, 1) @@ -782,32 +914,39 @@ name = "Drone" module_type = "Engineer" +/obj/item/robot_module/drone/on_apply(mob/living/silicon/robot/robot) + var/mob/living/silicon/robot/drone/drone = new(get_turf(robot)) + robot.mind?.transfer_to(drone) + qdel(robot) + + return TRUE + /obj/item/robot_module/drone/New() ..() - modules += new /obj/item/weldingtool/largetank/cyborg(src) modules += new /obj/item/screwdriver/cyborg(src) - modules += new /obj/item/wrench/cyborg(src) - modules += new /obj/item/crowbar/cyborg(src) modules += new /obj/item/wirecutters/cyborg(src) + modules += new /obj/item/crowbar/cyborg(src) + modules += new /obj/item/wrench/cyborg(src) + modules += new /obj/item/weldingtool/largetank/cyborg(src) modules += new /obj/item/multitool/cyborg(src) - modules += new /obj/item/lightreplacer/cyborg(src) modules += new /obj/item/gripper(src) - modules += new /obj/item/matter_decompiler(src) + modules += new /obj/item/extinguisher(src) modules += new /obj/item/reagent_containers/spray/cleaner/drone(src) modules += new /obj/item/soap(src) - modules += new /obj/item/t_scanner(src) modules += new /obj/item/rpd(src) + modules += new /obj/item/t_scanner(src) + modules += new /obj/item/analyzer(src) modules += new /obj/item/stack/sheet/wood/cyborg(src) - modules += new /obj/item/stack/sheet/rglass/cyborg(src) modules += new /obj/item/stack/tile/wood/cyborg(src) - modules += new /obj/item/stack/rods/cyborg(src) - modules += new /obj/item/stack/tile/plasteel/cyborg(src) + modules += new /obj/item/matter_decompiler(src) + modules += new /obj/item/lightreplacer/cyborg(src) + modules += new /obj/item/floor_painter(src) modules += new /obj/item/stack/sheet/metal/cyborg(src) modules += new /obj/item/stack/sheet/glass/cyborg(src) - modules += new /obj/item/floor_painter(src) + modules += new /obj/item/stack/sheet/rglass/cyborg(src) modules += new /obj/item/stack/cable_coil/cyborg(src) - modules += new /obj/item/analyzer(src) - modules += new /obj/item/extinguisher(src) + modules += new /obj/item/stack/rods/cyborg(src) + modules += new /obj/item/stack/tile/plasteel/cyborg(src) fix_modules() handle_storages() @@ -829,13 +968,20 @@ name = "Cogscarab" module_type = "Cogscarab" +/obj/item/robot_module/cogscarab/on_apply(mob/living/silicon/robot/robot) + var/mob/living/silicon/robot/cogscarab/cogscarab = new(get_turf(robot)) + robot.mind?.transfer_to(cogscarab) + qdel(robot) + + return TRUE + /obj/item/robot_module/cogscarab/Initialize() . = ..() - modules += new /obj/item/weldingtool/experimental/brass(src) modules += new /obj/item/screwdriver/brass(src) - modules += new /obj/item/wrench/brass(src) - modules += new /obj/item/crowbar/brass(src) modules += new /obj/item/wirecutters/brass(src) + modules += new /obj/item/crowbar/brass(src) + modules += new /obj/item/wrench/brass(src) + modules += new /obj/item/weldingtool/experimental/brass(src) modules += new /obj/item/multitool/brass(src) modules += new /obj/item/gripper/cogscarab(src) modules += new /obj/item/stack/sheet/brass/cyborg(src) @@ -862,6 +1008,18 @@ default_skin = "cyborg" borg_skins = list("cyborg" = "cyborg") +/obj/item/robot_module/clockwork/on_apply(mob/living/silicon/robot/robot) + robot.status_flags &= ~CANPUSH + QDEL_NULL(robot.mmi) + + robot.mmi = new /obj/item/mmi/robotic_brain/clockwork(src) + + return TRUE + +/obj/item/robot_module/clockwork/set_appearance(mob/living/silicon/robot/robot) + robot.icon = 'icons/mob/clockwork_mobs.dmi' + robot.icon_state = "cyborg" + /obj/item/robot_module/clockwork/Initialize() . = ..() modules += new /obj/item/clockwork/clockslab(src) @@ -889,7 +1047,7 @@ return /obj/item/robot_module/clockwork/handle_death(mob/living/silicon/robot/R, gibbed) - var/obj/item/gripper/cogscarab/G = locate(/obj/item/gripper/cogscarab) in modules + var/obj/item/gripper/cogscarab/G = locate() in modules G?.drop_gripped_item(silent = TRUE) /obj/item/robot_module/ninja @@ -897,56 +1055,62 @@ name_disguise = "Service" module_type = "ninja" +/obj/item/robot_module/ninja/on_apply(mob/living/silicon/robot/robot) + var/mob/living/silicon/robot/syndicate/saboteur/ninja/ninja = new(get_turf(robot)) + robot.mind?.transfer_to(ninja) + qdel(robot) + + return TRUE + /obj/item/robot_module/ninja/New() ..() - // Ниндзя штучки - modules += new /obj/item/gun/energy/shuriken_emitter/borg(src) modules += new /obj/item/melee/energy_katana/borg(src) - modules += new /obj/item/pinpointer/ninja(src) // Почему бы и да - // Инструменты - modules += new /obj/item/rcd/borg/syndicate(src) - modules += new /obj/item/rpd(src) - modules += new /obj/item/extinguisher(src) - modules += new /obj/item/weldingtool/largetank/cyborg(src) + modules += new /obj/item/gun/energy/shuriken_emitter/borg(src) modules += new /obj/item/screwdriver/cyborg(src) - modules += new /obj/item/wrench/cyborg(src) - modules += new /obj/item/crowbar/cyborg(src) modules += new /obj/item/wirecutters/cyborg(src) + modules += new /obj/item/crowbar/cyborg(src) + modules += new /obj/item/wrench/cyborg(src) + modules += new /obj/item/weldingtool/largetank/cyborg(src) modules += new /obj/item/multitool/cyborg(src) - modules += new /obj/item/t_scanner(src) - modules += new /obj/item/analyzer(src) - modules += new /obj/item/gripper(src) - modules += new /obj/item/stack/sheet/metal/cyborg(src) - modules += new /obj/item/stack/sheet/glass/cyborg(src) - modules += new /obj/item/stack/sheet/rglass/cyborg(src) - modules += new /obj/item/stack/rods/cyborg(src) - // Наручники + modules += new /obj/item/extinguisher(src) + modules += new /obj/item/healthanalyzer/advanced(src) + modules += new /obj/item/reagent_containers/borghypo/upgraded/super(src) + modules += new /obj/item/handheld_defibrillator(src) + modules += new /obj/item/twohanded/shockpaddles/borg(src) modules += new /obj/item/restraints/handcuffs/cable/zipties(src) - // Мед. инструменты + modules += new /obj/item/gripper/universal(src) + modules += new /obj/item/flash/cyborg(src) modules += new /obj/item/scalpel/laser/laser1(src) modules += new /obj/item/hemostat(src) modules += new /obj/item/retractor(src) + modules += new /obj/item/circular_saw(src) modules += new /obj/item/bonegel(src) - modules += new /obj/item/FixOVein(src) modules += new /obj/item/bonesetter(src) - modules += new /obj/item/circular_saw(src) + modules += new /obj/item/stack/medical/bruise_pack/advanced/cyborg(src) + modules += new /obj/item/stack/medical/ointment/advanced/cyborg(src) + modules += new /obj/item/rcd/borg/syndicate(src) + modules += new /obj/item/rpd(src) + modules += new /obj/item/t_scanner(src) + modules += new /obj/item/analyzer(src) + modules += new /obj/item/FixOVein(src) modules += new /obj/item/surgicaldrill(src) - modules += new /obj/item/healthanalyzer/advanced(src) modules += new /obj/item/bodyanalyzer/borg/syndicate(src) - modules += new /obj/item/twohanded/shockpaddles/borg(src) - modules += new /obj/item/handheld_defibrillator(src) modules += new /obj/item/roller_holder(src) - modules += new /obj/item/reagent_containers/borghypo/upgraded/super(src) - modules += new /obj/item/stack/medical/bruise_pack/advanced/cyborg(src) - modules += new /obj/item/stack/medical/ointment/advanced/cyborg(src) - + modules += new /obj/item/stack/sheet/metal/cyborg(src) + modules += new /obj/item/stack/sheet/glass/cyborg(src) + modules += new /obj/item/stack/sheet/rglass/cyborg(src) + modules += new /obj/item/stack/rods/cyborg(src) + modules += new /obj/item/pinpointer/ninja(src) // Почему бы и да var/obj/item/borg_chameleon/cham_proj = new /obj/item/borg_chameleon(src) cham_proj.disguise = "maximillion" modules += cham_proj emag = null + fix_modules() handle_storages() +/obj/item/robot_module/ninja/add_default_robot_items() + return //checks whether this item is a module of the robot it is located in. /obj/item/proc/is_robot_module() @@ -969,8 +1133,10 @@ /datum/robot_energy_storage/New(var/obj/item/robot_module/R = null) if(!energy) energy = max_energy + if(R) R.storages |= src + return /datum/robot_energy_storage/proc/use_charge(amount) @@ -978,7 +1144,9 @@ energy -= amount if (energy == 0) return TRUE + return TRUE + else return FALSE diff --git a/code/modules/mob/living/silicon/robot/robot_movement.dm b/code/modules/mob/living/silicon/robot/robot_movement.dm index fdc18586f1f2..d44ea5b03e94 100644 --- a/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -2,8 +2,10 @@ . = ..() if(.) return TRUE + if(ionpulse()) return TRUE + return FALSE @@ -17,6 +19,7 @@ if(movement_type & (FLYING|FLOATING) && !(old_movement_type & (FLYING|FLOATING))) if(locate(/obj/item/borg/upgrade/vtec) in upgrades) remove_movespeed_modifier(/datum/movespeed_modifier/robot_vtec_upgrade) + if(ionpulse_on) add_movespeed_modifier(/datum/movespeed_modifier/robot_jetpack_upgrade) @@ -26,6 +29,7 @@ if(old_movement_type & (FLYING|FLOATING) && !(movement_type & (FLYING|FLOATING))) if(locate(/obj/item/borg/upgrade/vtec) in upgrades) add_movespeed_modifier(/datum/movespeed_modifier/robot_vtec_upgrade) + if(ionpulse_on) remove_movespeed_modifier(/datum/movespeed_modifier/robot_jetpack_upgrade) diff --git a/code/modules/mob/living/silicon/robot/syndicate.dm b/code/modules/mob/living/silicon/robot/syndicate.dm index 9081a09ef019..b0dce1609430 100644 --- a/code/modules/mob/living/silicon/robot/syndicate.dm +++ b/code/modules/mob/living/silicon/robot/syndicate.dm @@ -26,8 +26,8 @@ Your cyborg LMG will slowly produce ammunition from your power supply, and your operative pinpointer will find and locate fellow nuclear operatives. \ Help the operatives secure the disk at all costs!
" -/mob/living/silicon/robot/syndicate/New(loc) - ..() +/mob/living/silicon/robot/syndicate/Initialize(mapload) + . = ..() mmi = new /obj/item/mmi/robotic_brain/syndicate(src) mmi.icon_state = "sofia" @@ -39,14 +39,14 @@ if(is_taipan(z)) radio = new /obj/item/radio/borg/syndicate/taipan(src) + else radio = new /obj/item/radio/borg/syndicate(src) radio.recalculateChannels() - spawn(5) - if(playstyle_string) - to_chat(src, playstyle_string) + if(playstyle_string) + addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, src, playstyle_string), 5 DECISECONDS) playsound(loc, 'sound/mecha/nominalsyndi.ogg', 75, 0) @@ -128,14 +128,18 @@ set name = "Toggle Chameleon Projector" set desc = "Change your appearance to a Nanotrasen cyborg. Costs power to use and maintain." set category = "Saboteur" + if(!cham_proj) for(var/obj/item/borg_chameleon/C in contents) cham_proj = C + for(var/obj/item/borg_chameleon/C in module.contents) cham_proj = C + if(!cham_proj) to_chat(src, "Error : No chameleon projector system found.") return + cham_proj.attack_self(src) /mob/living/silicon/robot/syndicate/saboteur/verb/set_mail_tag() @@ -149,13 +153,13 @@ mail_destination = 0 return - to_chat(src, "You configure your internal beacon, tagging yourself for delivery to '[tag]'.") + to_chat(src, span_notice("You configure your internal beacon, tagging yourself for delivery to '[tag]'.")) mail_destination = GLOB.TAGGERLOCATIONS.Find(tag) //Auto flush if we use this verb inside a disposal chute. var/obj/machinery/disposal/D = src.loc if(istype(D)) - to_chat(src, "\The [D] acknowledges your signal.") + to_chat(src, span_notice("\The [D] acknowledges your signal.")) D.flush_count = D.flush_every_ticks return @@ -169,20 +173,24 @@ /mob/living/silicon/robot/syndicate/saboteur/attack_hand() if(cham_proj) cham_proj.disrupt(src) + ..() /mob/living/silicon/robot/syndicate/saboteur/ex_act() if(cham_proj) cham_proj.disrupt(src) + ..() /mob/living/silicon/robot/syndicate/saboteur/emp_act() ..() + if(cham_proj) cham_proj.disrupt(src) /mob/living/silicon/robot/syndicate/saboteur/bullet_act() if(cham_proj) cham_proj.disrupt(src) + ..() diff --git a/code/modules/mob/living/silicon/robot/update_status.dm b/code/modules/mob/living/silicon/robot/update_status.dm index 2d67160c1194..24e987b86c1f 100644 --- a/code/modules/mob/living/silicon/robot/update_status.dm +++ b/code/modules/mob/living/silicon/robot/update_status.dm @@ -12,28 +12,34 @@ ..() update_headlamp() return + if(stat != DEAD) if(health <= -maxHealth) //die only once death() update_headlamp(TRUE, 0) return + if(!is_component_functioning("actuator") || !is_component_functioning("power cell") || HAS_TRAIT(src, TRAIT_KNOCKEDOUT) || getOxyLoss() > maxHealth * 0.5) if(stat != UNCONSCIOUS) set_stat(UNCONSCIOUS) - update_headlamp(TRUE, 0) + else if(stat != CONSCIOUS) set_stat(CONSCIOUS) - update_headlamp(FALSE, 0) + update_icons() + else - if(health > 0) + if(health) update_revive() var/mob/dead/observer/ghost = get_ghost() + if(ghost) - to_chat(ghost, "Your cyborg shell has been repaired, re-enter if you want to continue! (Verbs -> Ghost -> Re-enter corpse)") - ghost << sound('sound/effects/genetics.ogg') + to_chat(ghost, "[span_ghostalert("Your cyborg shell has been repaired, re-enter if you want to continue!")] (Verbs -> Ghost -> Re-enter corpse)") + playsound(ghost, 'sound/effects/genetics.ogg', 50, TRUE) + add_misc_logs(src, "revived, trigger reason: [reason]") + ..() diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index f9e36b981051..ad62fb4b292a 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -5,7 +5,7 @@ has_unlimited_silicon_privilege = 1 weather_immunities = list(TRAIT_WEATHER_IMMUNE) var/syndicate = 0 - var/obj/item/gps/cyborg/gps = new + var/obj/item/gps/cyborg/gps var/const/MAIN_CHANNEL = "Main Frequency" var/lawchannel = MAIN_CHANNEL // Default channel on which to state laws var/list/stating_laws = list()// Channels laws are currently being stated on @@ -36,21 +36,25 @@ var/obj/item/radio/common_radio -/mob/living/silicon/New() +/mob/living/silicon/Initialize(mapload) + . = ..() GLOB.silicon_mob_list |= src - ..() + add_language(LANGUAGE_GALACTIC_COMMON) + init_subsystems() - RegisterSignal(SSalarm, COMSIG_TRIGGERED_ALARM, PROC_REF(alarm_triggered)) - RegisterSignal(SSalarm, COMSIG_CANCELLED_ALARM, PROC_REF(alarm_cancelled)) -/mob/living/silicon/Initialize() - . = ..() var/datum/atom_hud/data/diagnostic/diag_hud = GLOB.huds[DATA_HUD_DIAGNOSTIC] diag_hud.add_to_hud(src) + diag_hud_set_status() diag_hud_set_health() + ADD_TRAIT(src, TRAIT_WET_IMMUNITY, INNATE_TRAIT) + + RegisterSignal(SSalarm, COMSIG_TRIGGERED_ALARM, PROC_REF(alarm_triggered)) + RegisterSignal(SSalarm, COMSIG_CANCELLED_ALARM, PROC_REF(alarm_cancelled)) + /mob/living/silicon/med_hud_set_health() return diag_hud_set_health() //we use a different hud @@ -58,13 +62,20 @@ return diag_hud_set_status() //we use a different hud /mob/living/silicon/Destroy() + UnregisterSignal(SSalarm, list( + COMSIG_TRIGGERED_ALARM, + COMSIG_CANCELLED_ALARM + )) + GLOB.silicon_mob_list -= src + QDEL_NULL(atmos_control) QDEL_NULL(crew_monitor) QDEL_NULL(law_manager) QDEL_NULL(power_monitor) QDEL_NULL(gps) QDEL_NULL(blueprints) + return ..() /mob/living/silicon/proc/alarm_triggered(src, class, area/A, list/O, obj/alarmsource) @@ -204,7 +215,7 @@ ventcrawl_target.visible_message("[name] опрокинул шляпу при залезании в вентиляцию!") -/mob/living/silicon/bullet_act(var/obj/item/projectile/Proj) +/mob/living/silicon/bullet_act(var/obj/projectile/Proj) Proj.on_hit(src,2) diff --git a/code/modules/mob/living/silicon/silicon_hat.dm b/code/modules/mob/living/silicon/silicon_hat.dm index 49be6f8916a9..d6de140e9393 100644 --- a/code/modules/mob/living/silicon/silicon_hat.dm +++ b/code/modules/mob/living/silicon/silicon_hat.dm @@ -29,7 +29,7 @@ var/hat_offset_y = -3 var/isCentered = FALSE //центрирован ли синтетик. Если нет, то шляпа будет растянута - var/list/blacklisted_hats = list( //Запрещенные шляпы на ношение для боргов с большими головами + var/list/blacklisted_hats = list( //Запрещённые шляпы на ношение для боргов с большими головами /obj/item/clothing/head/helmet, /obj/item/clothing/head/welding, /obj/item/clothing/head/snowman, diff --git a/code/modules/mob/living/simple_animal/animal_defense.dm b/code/modules/mob/living/simple_animal/animal_defense.dm index 70bdf1172f26..23ea0851c2ea 100644 --- a/code/modules/mob/living/simple_animal/animal_defense.dm +++ b/code/modules/mob/living/simple_animal/animal_defense.dm @@ -125,7 +125,7 @@ apply_damage(damage, damagetype, null, getarmor(attack_flag = armorcheck)) return TRUE -/mob/living/simple_animal/bullet_act(obj/item/projectile/Proj) +/mob/living/simple_animal/bullet_act(obj/projectile/Proj) if(!Proj) return apply_damage(Proj.damage, Proj.damage_type) @@ -156,7 +156,10 @@ adjustBruteLoss(bloss) /mob/living/simple_animal/blob_act(obj/structure/blob/B) - adjustBruteLoss(20) + var/result = ..() + if(result) + adjustBruteLoss(20) + return result /mob/living/simple_animal/do_attack_animation(atom/A, visual_effect_icon, used_item, no_effect) if(!no_effect && !visual_effect_icon && melee_damage_upper) diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index d5f7031309d5..c1ef5a5f75d7 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -16,19 +16,22 @@ pass_flags = PASSFLAPS AI_delay_max = 0 SECONDS - speak_emote = list("states") + speak_emote = list("констатирует") tts_seed = null - friendly = "boops" + friendly = "утыкается в" bubble_icon = "machine" faction = list("neutral", "silicon") light_system = MOVABLE_LIGHT + hud_type = /datum/hud/bot + + var/obj/machinery/bot_core/bot_core = null var/bot_core_type = /obj/machinery/bot_core var/list/users = list() //for dialog updates var/window_id = "bot_control" - var/window_name = "Protobot 1.0" //Popup title + var/window_name = "ПротоБот 1.0" //Popup title /// 0 for default size var/window_width = 0 var/window_height = 0 @@ -115,7 +118,7 @@ /// The type of bot it is. var/model = "" - var/bot_purpose = "improve the station to the best of your ability" + var/bot_purpose = "принести станции как можно больше пользы исходя из своих возможностей" /// Bot control frequency var/control_freq = BOT_FREQ /// The radio filter the bot uses to identify itself on the network. @@ -125,11 +128,11 @@ /// The type of data HUD the bot uses. Diagnostic by default. var/data_hud_type = DATA_HUD_DIAGNOSTIC /// This holds text for what the bot is mode doing, reported on the remote bot control interface. - var/list/mode_name = list("In Pursuit","Preparing to Arrest", "Arresting", \ - "Beginning Patrol", "Patrolling", "Summoned by PDA", \ - "Cleaning", "Repairing", "Proceeding to work site", "Healing", \ - "Responding", "Navigating to Delivery Location", "Navigating to Home", \ - "Waiting for clear path", "Calculating navigation path", "Pinging beacon network", "Unable to reach destination") + var/list/mode_name = list("В погоне","Подготовка к задержанию", "Процесс задержания", \ + "Начало патрулирования", "Патрулирование", "Вызов через ПДА", \ + "Уборка", "Ремонтные работы", "Движение к месту проведения ремонтных работ", "Проведение лечебных процедур", \ + "Реакция на вызов", "Движению в локацию доставки", "Движение в домашнюю локацию", \ + "Препятствие на маршруте", "Расчёт навигационного маршрута", "Запрос сети радиомаячков", "Точка маршрута недоступна") var/datum/atom_hud/data/bot_path/path_hud = new /datum/atom_hud/data/bot_path() var/path_image_icon = 'icons/obj/aibots.dmi' @@ -165,15 +168,15 @@ /mob/living/simple_animal/bot/proc/get_mode() if(client) //Player bots do not have modes, thus the override. Also an easy way for PDA users/AI to know when a bot is a player. if(paicard) - return "pAI Controlled" + return "Под управлением ПИИ" else - return "Autonomous" + return "Автономный режим" else if(!on) - return span_bad("Inactive") + return span_bad("Отключён") else if(hijacked) - return "ERROR" + return span_bad("ОШИБКА") else if(!mode) - return span_good("Idle") + return span_good("Бездействие") else return span_average("[mode_name[mode]]") @@ -218,6 +221,8 @@ bot_core = new bot_core_type(src) addtimer(CALLBACK(src, PROC_REF(add_bot_filter)), 3 SECONDS) + ADD_TRAIT(src, TRAIT_WET_IMMUNITY, INNATE_TRAIT) + prepare_huds() for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) diag_hud.add_to_hud(src) @@ -240,6 +245,9 @@ /mob/living/simple_animal/bot/can_strip() return FALSE +/mob/living/simple_animal/bot/can_unarmed_attack() + return on + /mob/living/simple_animal/bot/med_hud_set_health() return diag_hud_set_bothealth() //we use a different hud @@ -292,7 +300,7 @@ locked = FALSE emagged = 1 if(user) - to_chat(user, span_notice("You bypass [src]'s controls.")) + to_chat(user, span_notice("Вы взламываете систему управления [declent_ru(GENITIVE)].")) return if(!locked && open) //Bot panel is unlocked by ID or emag, and the panel is screwed open. Ready for emagging. @@ -303,23 +311,23 @@ locked = TRUE //Access denied forever! bot_reset() turn_on() //The bot automatically turns on when emagged, unless recently hit with EMP. - to_chat(src, span_userdanger("(#$*#$^^( OVERRIDE DETECTED")) + to_chat(src, span_userdanger("ПЕРЕГРУЗКА ВНУТРЕННИХ СИСТЕМ")) show_laws() return if(user) //Bot is unlocked, but the maint panel has not been opened with a screwdriver yet. - to_chat(user, span_warning("You need to open maintenance panel first!")) + balloon_alert(user, "техпанель закрыта!") /mob/living/simple_animal/bot/examine(mob/user) . = ..() if(health < maxHealth) if(health > maxHealth/3) - . += span_notice("[src]'s parts look loose.") + . += span_notice("[capitalize(declent_ru(NOMINATIVE))] выглядит слегка повреждённым.") else - . += span_warning("[src]'s parts look very loose!") + . += span_warning("[capitalize(declent_ru(NOMINATIVE))] выглядит сильно повреждённым!") else - . += span_notice("[src] is in pristine condition.") + . += span_notice("[capitalize(declent_ru(NOMINATIVE))] в отличном состоянии.") /mob/living/simple_animal/bot/adjustHealth( @@ -366,7 +374,7 @@ user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) apply_damage(user.attack_damage, BRUTE) - visible_message(span_danger("[user] has slashed [src]!")) + visible_message(span_danger("[user] руб[pluralize_ru(user.gender, "ит", "ят")] [declent_ru(GENITIVE)]!")) playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) if(prob(10)) new /obj/effect/decal/cleanable/blood/oil(loc) @@ -377,7 +385,7 @@ if(user.melee_damage_upper == 0) return apply_damage(user.melee_damage_upper, BRUTE) - visible_message(span_danger("[user] has [user.attacktext] [src]!")) + visible_message(span_danger("[user] has [user.attacktext] [declent_ru(GENITIVE)]!")) add_attack_logs(user, src, "Animal attacked", ATKLOG_ALL) if(prob(10)) new /obj/effect/decal/cleanable/blood/oil(loc) @@ -398,7 +406,7 @@ if(!topic_denied(user)) interact(user) else - to_chat(user, span_warning("[src]'s interface is not responding!")) + to_chat(user, span_warning("Интерфейс [declent_ru(GENITIVE)] не отвечает!")) /mob/living/simple_animal/bot/proc/interact(mob/user) @@ -412,45 +420,45 @@ if(I.GetID() || is_pda(I)) add_fingerprint(user) if(emagged) - to_chat(user, span_danger("ERROR##?")) + balloon_alert(user, "ошибка") return ATTACK_CHAIN_PROCEED if(open) - to_chat(user, span_warning("Please close the access panel before locking it.")) + balloon_alert(user, "техпанель открыта!") return ATTACK_CHAIN_PROCEED if(!bot_core.allowed(user)) - to_chat(user, span_warning("Access denied.")) + balloon_alert(user, "отказано в доступе!") return ATTACK_CHAIN_PROCEED locked = !locked - to_chat(user, "Controls are now [locked ? "locked." : "unlocked."]") + balloon_alert(user, "техпанель [locked ? "заблокирована" : "разблокирована"]") return ATTACK_CHAIN_PROCEED_SUCCESS if(istype(I, /obj/item/paicard)) add_fingerprint(user) var/obj/item/paicard/card = I if(locked || open || hijacked) - to_chat(user, span_warning("The personality slot is locked.")) + balloon_alert(user, "слот для ПИИ заблокирован!") return ATTACK_CHAIN_PROCEED if(paicard) - to_chat(user, span_warning("The [paicard.name] is already inserted.")) + balloon_alert(user, "слот для ПИИ занят!") return ATTACK_CHAIN_PROCEED if(!card.pai || !card.pai.mind) - to_chat(user, span_warning("The [card.name] is inactive].")) + balloon_alert(user, "ПИИ не активен!") return ATTACK_CHAIN_PROCEED if(key || (!allow_pai && !card.pai.syndipai)) - to_chat(user, span_warning("The [name] is not compatible with [card].")) + balloon_alert(user, "робот не совместим с ПИИ!") return ATTACK_CHAIN_PROCEED if(!card.pai.ckey || jobban_isbanned(card.pai, ROLE_SENTIENT)) - to_chat(user, span_warning("The [card.name] is unable to establish a connection to [src].")) + balloon_alert(user, "ПИИ не совместим с роботом!") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(card, src)) return ..() paicard = card user.visible_message( - span_notice("[user] has inserted [card] into [src]."), - span_notice("You have inserted [card] into [src]."), + span_notice("[user] помести[genderize_ru(user.gender, "л", "ла", "ло", "ли")] [card] в [declent_ru(GENITIVE)]."), + span_notice("Вы поместили [card] в [declent_ru(GENITIVE)]."), ) paicard.pai.mind.transfer_to(src) - to_chat(src, span_notice("You sense your form change as you are uploaded into [src].")) + to_chat(src, span_notice("Вы были установлены в [declent_ru(GENITIVE)]. Соединение с внутренними системами в процессе.")) bot_name = name name = paicard.pai.name faction = user.faction @@ -460,17 +468,18 @@ if(istype(I, /obj/item/hemostat)) if(open) - to_chat(user, span_warning("Please close the access panel before manipulating with the personality slot.")) + balloon_alert(user, "техпанель открыта!") return ATTACK_CHAIN_PROCEED if(!paicard) - to_chat(user, span_warning("The [name] has no personality card installed.")) + balloon_alert(user, "слот для ПИИ пуст!") return ATTACK_CHAIN_PROCEED - to_chat(user, span_notice("You attempt to pull [paicard] free...")) + balloon_alert(user, "извлечение ПИИ") if(!do_after(user, 3 SECONDS * I.toolspeed, src, category = DA_CAT_TOOL) || open || !paicard) return ATTACK_CHAIN_PROCEED - user.visible_message( - span_notice("[user] has pulled [paicard] out of [bot_name]!"), - span_notice("You have pulled [paicard] out of [bot_name]."), + balloon_alert(user, "ПИИ извлечён") + visible_message( + span_notice("[user] вытащи[genderize_ru(user.gender, "л", "ла", "ло", "ли")] [paicard] из [declent_ru(GENITIVE)]!"), + span_notice("Вы вытащили [paicard] из [declent_ru(GENITIVE)]."), ) ejectpai(user) return ATTACK_CHAIN_PROCEED_SUCCESS @@ -483,12 +492,12 @@ return FALSE . = TRUE if(locked) - to_chat(user, span_warning("The maintenance panel is locked.")) + balloon_alert(user, "техпанель заблокирована!") return . // must be true or we attempt to stab the bot if(!I.use_tool(src, user, volume = I.tool_volume)) return . open = !open - to_chat(user, span_notice("The maintenance panel is now [open ? "opened" : "closed"].")) + balloon_alert(user, "техпанель [open ? "открыта" : "закрыта"]!") /mob/living/simple_animal/bot/welder_act(mob/user, obj/item/I) @@ -498,19 +507,22 @@ return FALSE . = TRUE if(health >= maxHealth) - to_chat(user, span_warning("[src] does not need a repair!")) + balloon_alert(user, "ремонт не требуется") return if(!open) - to_chat(user, span_warning("Unable to repair with the maintenance panel closed!")) + balloon_alert(user, "техпанель закрыта!") return if(!I.use_tool(src, user, volume = I.tool_volume)) return adjustBruteLoss(-10) add_fingerprint(user) - user.visible_message("[user] repairs [src]!", span_notice("You repair [src].")) + user.visible_message( + span_notice("[user] ремонтиру[pluralize_ru(user.gender, "ет", "ют")] [declent_ru(GENITIVE)]."), + span_notice("Вы ремонтируете [declent_ru(GENITIVE)].") + ) -/mob/living/simple_animal/bot/bullet_act(obj/item/projectile/Proj) +/mob/living/simple_animal/bot/bullet_act(obj/projectile/Proj) if(Proj && (Proj.damage_type == BRUTE || Proj.damage_type == BURN)) if(prob(75) && Proj.damage > 0) do_sparks(5, 1, src) @@ -530,8 +542,8 @@ if(paicard) paicard.emp_act(severity) - visible_message("[paicard] is flies out of [bot_name]!", - span_warning("You are forcefully ejected from [bot_name]!")) + visible_message("[paicard] вылетает из [declent_ru(GENITIVE)]!", + span_warning("Вас выкинуло из [declent_ru(GENITIVE)]!")) ejectpai() if(on) turn_off() @@ -572,9 +584,9 @@ /mob/living/simple_animal/bot/proc/set_custom_texts() //Superclass for setting hack texts. Appears only if a set is not given to a bot locally. - text_hack = "You hack [name]." - text_dehack = "You reset [name]." - text_dehack_fail = "You fail to reset [name]." + text_hack = "Вы взломали [declent_ru(GENITIVE)]." + text_dehack = "Вы восстановили [declent_ru(GENITIVE)]." + text_dehack_fail = "Вы не смогли восстановить [declent_ru(GENITIVE)]." /mob/living/simple_animal/bot/proc/speak(message, channel) //Pass a message to have the bot say() it. Pass a frequency to say it on the radio. @@ -677,8 +689,8 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r access_card.access = prev_access -/mob/living/simple_animal/bot/proc/call_bot(caller, turf/waypoint, message = TRUE) - if(isAI(caller) && calling_ai && calling_ai != src) //Prevents an override if another AI is controlling this bot. +/mob/living/simple_animal/bot/proc/call_bot(requester, turf/waypoint, message = TRUE) + if(isAI(requester) && calling_ai && calling_ai != src) //Prevents an override if another AI is controlling this bot. return FALSE bot_reset() //Reset a bot before setting it to call mode. @@ -690,7 +702,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r all_access.access = get_all_accesses() set_path(get_path_to(src, waypoint, max_distance = 200, access = all_access.GetAccess())) - calling_ai = caller //Link the AI to the bot! + calling_ai = requester //Link the AI to the bot! ai_waypoint = waypoint if(path && length(path)) //Ensures that a valid path is calculated! @@ -700,15 +712,15 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r access_card.access = all_access.GetAccess() //Give the bot all-access while under the AI's command. if(client) reset_access_timer_id = addtimer(CALLBACK(src, PROC_REF(bot_reset)), 60 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE) //if the bot is player controlled, they get the extra access for a limited time - to_chat(src, span_notice("[span_big("Priority waypoint set by [calling_ai] [caller]. Proceed to [end_area.name].")]
[path.len-1] meters to destination. You have been granted additional door access for 60 seconds.")) + to_chat(src, span_notice("[span_big("Приоритетный маршрут установлен [calling_ai] [requester]. Проследуйте в локацию [end_area.name].")]
[path.len-1]
метров до точки назначения. Вам выдан неограниченный доступ к шлюзам на следующие 60 секунд.")) if(message) - to_chat(calling_ai, span_notice("[bicon(src)] [name] called to [end_area.name]. [length(path)-1] meters to destination.")) + to_chat(calling_ai, span_notice("[bicon(src)] [capitalize(declent_ru(NOMINATIVE))] вызван в локацию [end_area.name]. [length(path)-1] метров до точки назначения.")) pathset = TRUE mode = BOT_RESPONDING tries = 0 else if(message) - to_chat(calling_ai, span_danger("Failed to calculate a valid route. Ensure destination is clear of obstructions and within range.")) + to_chat(calling_ai, span_danger("Не удалось рассчитать правильный маршрут. Убедитесь в отсутствии препятствий на пути и доступности точки назначения.")) calling_ai = null access_card.access = prev_access // Don't forget to reset it set_path(null) @@ -719,14 +731,14 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r var/success = bot_move(ai_waypoint, 3) if(!success) if(calling_ai) - to_chat(calling_ai, "[bicon(src)] [get_turf(src) == ai_waypoint ? "[src] successfully arrived to waypoint." : "[src] failed to reach waypoint."]") + to_chat(calling_ai, "[bicon(src)] [get_turf(src) == ai_waypoint ? span_notice("[capitalize(declent_ru(NOMINATIVE))] прибыл в точку назначения.") : span_danger("[capitalize(declent_ru(NOMINATIVE))] не смог добраться до точки назначения.")]") calling_ai = null bot_reset() /mob/living/simple_animal/bot/proc/bot_reset() if(calling_ai) //Simple notification to the AI if it called a bot. It will not know the cause or identity of the bot. - to_chat(calling_ai, "Call command to a bot has been reset.") + to_chat(calling_ai, span_danger("Команда вызова робота была отменена.")) calling_ai = null if(reset_access_timer_id) deltimer(reset_access_timer_id) @@ -760,7 +772,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r if(tries >= BOT_STEP_MAX_RETRIES) //Bot is trapped, so stop trying to patrol. auto_patrol = FALSE tries = 0 - speak("Unable to start patrol.") + speak("Не удалось начать патрулирование.") return if(!auto_patrol) //A bot not set to patrol should not be patrolling. @@ -770,7 +782,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r if(patrol_target) // has patrol target INVOKE_ASYNC(src, PROC_REF(target_patrol)) else // no patrol target, so need a new one - speak("Engaging patrol mode.") + speak("Режим патрулирования активирован.") find_patrol_target() tries++ @@ -831,7 +843,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r else auto_patrol = FALSE mode = BOT_IDLE - speak("Disengaging patrol mode.") + speak("Режим патрулирования отключён.") send_status() @@ -866,18 +878,18 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r /mob/living/simple_animal/bot/proc/bot_control_message(command, mob/user, user_turf) switch(command) if("stop") - to_chat(src, span_warningbig("STOP PATROL")) + to_chat(src, span_warningbig("ОСТАНОВИТЬ ПАТРУЛИРОВАНИЕ")) if("go") - to_chat(src, span_warningbig("START PATROL")) + to_chat(src, span_warningbig("НАЧАТЬ ПАТРУЛИРОВАНИЕ")) if("summon") var/area/our_area = get_area(user_turf) - to_chat(src, span_warningbig(">PRIORITY ALERT: [user] in [our_area.name]!")) + to_chat(src, span_warningbig(">ПРИОРИТЕТНОЕ Оповещение: [user] в локации [our_area.name]!")) if("home") - to_chat(src, span_warningbig("RETURN HOME!")) + to_chat(src, span_warningbig("ВЕРНУТЬСЯ ДОМОЙ!")) if("ejectpai") return // Do nothing for this else - to_chat(src, span_warning("Unidentified control sequence received: [command]")) + to_chat(src, span_warning("Получена нераспознанная команда: [command].")) /obj/machinery/bot_core/receive_signal(datum/signal/signal) @@ -902,7 +914,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r if(signal.data["active"] != src) return - if(emagged == 2 || remote_disabled || hijacked) //Emagged bots do not respect anyone's authority! Bots with their remote controls off cannot get commands. //Emagged bots do not respect anyone's authority! Bots with their remote controls off cannot get commands. + if(emagged == 2 || remote_disabled || hijacked) //Emagged bots do not respect anyone's authority! Bots with their remote controls off cannot get commands. return if(client) @@ -927,7 +939,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r mode = BOT_SUMMON calc_summon_path() - speak("Responding.", radio_channel) + speak("Запрос получен.", radio_channel) else . = FALSE @@ -1003,7 +1015,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r /mob/living/simple_animal/bot/proc/on_summon_path_finish(list/path) set_path(path) if(!length(path)) //Cannot reach target. Give up and announce the issue. - speak("Summon command failed, destination unreachable.", radio_channel) + speak("Команда вызова не выполнена, пункт назначения недоступен.", radio_channel) bot_reset() @@ -1064,7 +1076,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r return TRUE if(topic_denied(usr)) - to_chat(usr, span_warning("[src]'s interface is not responding!")) + to_chat(usr, span_warning("Интерфейс [declent_ru(GENITIVE)] не отвечает!")) return TRUE add_fingerprint(usr) @@ -1085,7 +1097,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r handle_hacking(usr) if("ejectpai") if(paicard && (!locked || issilicon(usr) || usr.can_admin_interact())) - to_chat(usr, span_notice("You eject [paicard] from [bot_name].")) + to_chat(usr, span_notice("Вы вытащили [paicard] из [declent_ru(GENITIVE)].")) ejectpai(usr) update_controls() @@ -1162,10 +1174,10 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r /mob/living/simple_animal/bot/proc/hack(mob/user) var/hack if(issilicon(user) || user.can_admin_interact()) //Allows silicons or admins to toggle the emag status of a bot. - hack += "[emagged == 2 ? "Software compromised! Unit may exhibit dangerous or erratic behavior." : "Unit operating normally. Release safety lock?"]
" - hack += "Harm Prevention Safety System: [emagged ? "DANGER" : "Engaged"]
" + hack += "[emagged == 2 ? "Программное обеспечение взломано! Устройство может вести себя опасно или нестабильно." : "Устройство работает в нормальном режиме. Отключить протоколы безопасности?"]
" + hack += "Протоколы безопасности: [emagged ? span_bad("Отключены") : "Включены"]
" else if(!locked) //Humans with access can use this option to hide a bot from the AI's remote control panel and PDA control. - hack += "Remote network control radio: [remote_disabled ? "Disconnected" : "Connected"]
" + hack += "Удалённое радиоуправление: [remote_disabled ? "Отключено" : "Включено"]
" return hack @@ -1173,16 +1185,16 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r var/eject = "" if(!locked || issilicon(usr) || user.can_admin_interact()) if(paicard || allow_pai) - eject += "Personality card status: " + eject += "Состояние ПИИ: " if(paicard) if(client) - eject += "Active" + eject += "Активирован" else - eject += "Inactive" + eject += "Отключён" else if(!allow_pai || key) - eject += "Unavailable" + eject += "Нет доступа" else - eject += "Not inserted" + eject += "Отсутствует" eject += "
" eject += "
" return eject @@ -1203,7 +1215,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r else add_attack_logs(src, paicard.pai, "Ejected") if(announce) - to_chat(paicard.pai, span_notice("You feel your control fade as [paicard] ejects from [bot_name].")) + to_chat(paicard.pai, span_notice("Вы были извлечены из [declent_ru(GENITIVE)]. Соединение прервано.")) paicard = null name = bot_name faction = initial(faction) @@ -1212,7 +1224,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r /mob/living/simple_animal/bot/proc/ejectpairemote(mob/user) if(bot_core.allowed(user) && paicard) - speak("Ejecting personality chip.", radio_channel) + speak("Извлечение ПИИ.", radio_channel) ejectpai(user) @@ -1255,19 +1267,19 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r set name = "Show Directives" set category = "IC" - to_chat(src, "Directives:") + to_chat(src, "Набор законов:") if(paicard && paicard.pai && paicard.pai.master && paicard.pai.pai_law0) - to_chat(src, "Your master, [paicard.pai.master], may overrule any and all laws.") + to_chat(src, span_warning("Приказы вашего мастера, [paicard.pai.master], стоят выше любых других законов. Следование этим приказам - ваша первоочередная задача.")) to_chat(src, "0. [paicard.pai.pai_law0]") if(emagged >= 2) - to_chat(src, "1. #$!@#$32K#$") + to_chat(src, span_danger("1. #$!@#$32K#$")) else - to_chat(src, "1. You are a machine built to serve the station's crew and AI(s).") - to_chat(src, "2. Your function is to [bot_purpose].") - to_chat(src, "3. You cannot serve your function if you are broken.") - to_chat(src, "4. Serve your function to the best of your ability.") + to_chat(src, "1. Вы - машина, созданная для служения экипажу станции и ИИ.") + to_chat(src, "2. Ваше задача - [bot_purpose].") + to_chat(src, "3. Вы не сможете выполнять свою задачу, если будете сломаны.") + to_chat(src, "4. Выполняйте свою функцию в меру своих возможностей.") if(paicard && paicard.pai && paicard.pai.pai_laws) - to_chat(src, "Supplemental Directive(s):") + to_chat(src, "Дополнительные законы(s):") to_chat(src, "[paicard.pai.pai_laws]") @@ -1372,7 +1384,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r /obj/effect/proc_holder/spell/bot_speed name = "Speed Charge" - desc = "Speeds up the bot's internal systems for a while." + desc = "На некоторое время ускоряет работу внутренних систем робота." action_icon_state = "adrenal-bot" base_cooldown = 300 SECONDS clothes_req = FALSE @@ -1386,6 +1398,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r /obj/effect/proc_holder/spell/bot_speed/cast(list/targets, mob/user = usr) for(var/mob/living/simple_animal/bot/bot in targets) bot.set_varspeed(0.1) + balloon_alert(src, "вы ускоряетесь") addtimer(CALLBACK(bot, TYPE_PROC_REF(/mob/living/simple_animal/bot, reset_speed)), 45 SECONDS) @@ -1393,7 +1406,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r if(QDELETED(src)) return set_varspeed(initial(speed)) - to_chat(src, span_notice("Now you are moving at your normal speed.")) + balloon_alert(src, "вы замедляетесь") /obj/machinery/bot_core/syndicate req_access = list(ACCESS_SYNDICATE) diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index 52d26d3be43f..2bcea5e4e000 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -1,7 +1,15 @@ //Cleanbot /mob/living/simple_animal/bot/cleanbot name = "\improper Cleanbot" - desc = "A little cleaning robot, he looks so excited!" + desc = "Маленький робот-уборщик. Он выглядит таким увлечённым!" + ru_names = list( + NOMINATIVE = "чистобот", + GENITIVE = "чистобота", + DATIVE = "чистоботу", + ACCUSATIVE = "чистобота", + INSTRUMENTAL = "чистоботом", + PREPOSITIONAL = "чистоботе", + ) icon = 'icons/obj/aibots.dmi' icon_state = "cleanbot" density = FALSE @@ -12,10 +20,10 @@ bot_filter = RADIO_CLEANBOT bot_type = CLEAN_BOT model = "Cleanbot" - bot_purpose = "seek out messes and clean them" + bot_purpose = "найти грязь и мусор и избавиться от них" bot_core_type = /obj/machinery/bot_core/cleanbot window_id = "autoclean" - window_name = "Automatic Station Cleaner v1.1" + window_name = "Автоматическая Уборочная Единица v1.1" pass_flags = PASSMOB|PASSFLAPS path_image_color = "#993299" @@ -73,9 +81,9 @@ /mob/living/simple_animal/bot/cleanbot/set_custom_texts() - text_hack = "You corrupt [name]'s cleaning software." - text_dehack = "[name]'s software has been reset!" - text_dehack_fail = "[name] does not seem to respond to your repair code!" + text_hack = "Вы взломали протоколы уборки [declent_ru(GENITIVE)]." + text_dehack = "Вы восстановили протоколы уборки [declent_ru(GENITIVE)]." + text_dehack_fail = "[capitalize(declent_ru(NOMINATIVE))] не отвечает на ваши команды!" /mob/living/simple_animal/bot/cleanbot/attackby(obj/item/I, mob/user, params) @@ -86,9 +94,10 @@ add_fingerprint(user) var/obj/item/toy/crayon/spraycan/can = I if(can.capped) - to_chat(user, span_warning("The cap on [can] is sealed.")) + balloon_alert(user, "баллончик закрыт!") return ATTACK_CHAIN_PROCEED|ATTACK_CHAIN_NO_AFTERATTACK playsound(loc, 'sound/effects/spray.ogg', 20, TRUE) + balloon_alert(user, "краска нанесена") mask_color = can.colour update_icon() return ATTACK_CHAIN_PROCEED_SUCCESS|ATTACK_CHAIN_NO_AFTERATTACK @@ -99,7 +108,7 @@ /mob/living/simple_animal/bot/cleanbot/emag_act(mob/user) ..() if(emagged == 2 && user) - to_chat(user, span_danger("[src] buzzes and beeps.")) + to_chat(user, span_danger("[capitalize(declent_ru(NOMINATIVE))] странно жужжит!")) /mob/living/simple_animal/bot/cleanbot/process_scan(obj/effect/decal/cleanable/D) @@ -124,11 +133,13 @@ T.MakeSlippery(TURF_WET_WATER, 80 SECONDS) if(prob(5)) //Spawns foam! - visible_message(span_danger("[src] whirs and bubbles violently, before releasing a plume of froth!")) - new /obj/effect/particle_effect/foam(loc) + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] издаёт громкие булькающие звуки, прежде чем выпустить шлейф пены!")) + var/datum/effect_system/fluid_spread/foam/s = new() + s.set_up(range = 3, location = loc) + s.start() else if(prob(5)) - audible_message("[src] makes an excited beeping booping sound!") + custom_emote(EMOTE_VISIBLE, "бипает и бупает!") if(!target) //Search for cleanables it can see. target = scan(/obj/effect/decal/cleanable) @@ -201,7 +212,7 @@ /mob/living/simple_animal/bot/cleanbot/proc/start_clean(obj/effect/decal/cleanable/target) set_anchored(TRUE) - visible_message(span_notice("[src] begins to clean up [target]")) + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] начинает очищать [target].")) mode = BOT_CLEANING update_icon() addtimer(CALLBACK(src, PROC_REF(do_clean), target), 5 SECONDS) @@ -219,7 +230,7 @@ /mob/living/simple_animal/bot/cleanbot/explode() on = FALSE - visible_message(span_userdanger("[src] blows apart!")) + visible_message(span_userdanger("[capitalize(declent_ru(NOMINATIVE))] разлетается на части!")) var/turf/Tsec = get_turf(src) new /obj/item/reagent_containers/glass/bucket(Tsec) new /obj/item/assembly/prox_sensor(Tsec) @@ -260,7 +271,7 @@ if (..()) return if(topic_denied(usr)) - to_chat(usr, "[src]'s interface is not responding!") + to_chat(usr, span_danger("Интерфейс [declent_ru(GENITIVE)] не отвечает!")) return add_fingerprint(usr) . = TRUE @@ -284,9 +295,7 @@ ejectpai() -/mob/living/simple_animal/bot/cleanbot/UnarmedAttack(atom/A) - if(!can_unarmed_attack()) - return +/mob/living/simple_animal/bot/cleanbot/OnUnarmedAttack(atom/A) if(istype(A,/obj/effect/decal/cleanable)) start_clean(A) else diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index cfa971dcf239..993eeb539470 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -2,8 +2,8 @@ //Cleanbot assembly /obj/item/bucket_sensor - desc = "It's a bucket. With a sensor attached." - name = "proxy bucket" + name = "Proxy bucket" + desc = "Это ведро, к которому прикреплён сенсор." icon = 'icons/obj/aibots.dmi' icon_state = "bucket_proxy" force = 3 @@ -11,7 +11,7 @@ throw_speed = 2 throw_range = 5 w_class = WEIGHT_CLASS_NORMAL - var/created_name = "Cleanbot" + var/created_name = "Чистобот" var/robot_arm = /obj/item/robot_parts/l_arm @@ -20,7 +20,7 @@ return ..() if(is_pen(I)) - var/new_name = rename_interactive(user, I, prompt = "Enter new robot name") + var/new_name = rename_interactive(user, I, prompt = "Введите новое имя для робота") if(!isnull(new_name)) created_name = new_name add_game_logs("[key_name(user)] has renamed a robot to [new_name]", user) @@ -28,17 +28,20 @@ add_fingerprint(user) if(!istype(I, /obj/item/robot_parts/l_arm) && !istype(I, /obj/item/robot_parts/r_arm)) - to_chat(user, span_warning("You need a cyborg arm to finish the construction.")) + to_chat(user, span_notice("Для завершения сборки чистобота нужна робо-рука.")) + balloon_alert(user, "это сюда не подойдёт") return ATTACK_CHAIN_PROCEED if(!isturf(loc)) - to_chat(user, span_warning("You cannot finish the construction [ismob(loc) ? "in inventory" : "in [loc]"].")) + to_chat(user, span_notice("Вы не можете завершить сборку [ismob(loc) ? "в инвентаре" : "здесь"].")) + balloon_alert(user, "невозможно") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have added the robot arm to the bucket and sensor assembly. Beep boop!")) + balloon_alert(user, "сборка завершена") + to_chat(user, span_notice("Вы завершили сборку чистобота.")) var/mob/living/simple_animal/bot/cleanbot/new_bot = new(loc) transfer_fingerprints_to(new_bot) I.transfer_fingerprints_to(new_bot) @@ -55,7 +58,7 @@ /obj/item/ed209_assembly name = "\improper ED-209 assembly" - desc = "Some sort of bizarre assembly." + desc = "Заготовка для чего-то серьёзного." icon = 'icons/obj/aibots.dmi' icon_state = "ed209_frame" item_state = "ed209_frame" @@ -114,7 +117,7 @@ return ..() if(is_pen(I)) - var/new_name = rename_interactive(user, I, prompt = "Enter new robot name") + var/new_name = rename_interactive(user, I, prompt = "Введите новое имя для робота") if(!isnull(new_name)) created_name = new_name add_game_logs("[key_name(user)] has renamed a robot to [new_name]", user) @@ -124,13 +127,15 @@ if(0, 1) add_fingerprint(user) if(!istype(I, /obj/item/robot_parts/l_leg) && !istype(I, /obj/item/robot_parts/r_leg)) - to_chat(user, span_warning("You need a cyborg leg to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ED-209 нужна робо-нога.")) + balloon_alert(user, "это сюда не подойдёт") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() qdel(I) build_step++ - to_chat(user, span_notice("You have added the the robot leg to the ED-209 assembly.")) + to_chat(user, span_notice("Вы прикрепили робо-ногу к заготовке ED-209.")) + balloon_alert(user, "деталь установлена") update_appearance(UPDATE_NAME|UPDATE_ICON_STATE) return ATTACK_CHAIN_PROCEED_SUCCESS @@ -142,13 +147,15 @@ else if(istype(I, /obj/item/clothing/suit/bluetag)) newcolor = "b" if(!newcolor && !istype(I, /obj/item/clothing/suit/armor/vest)) - to_chat(user, span_warning("You need a helmet to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ED-209 нужен защитный жилет.")) + balloon_alert(user, "это сюда не подойдёт") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() lasercolor = newcolor build_step++ - to_chat(user, span_notice("You have added [I] to the ED-209 assembly.")) + to_chat(user, span_notice("Вы прикрепили защитный жилет к заготовке ED-209.")) + balloon_alert(user, "деталь установлена") update_appearance(UPDATE_NAME|UPDATE_ICON_STATE) qdel(I) return ATTACK_CHAIN_PROCEED_SUCCESS @@ -158,20 +165,24 @@ switch(lasercolor) if("b") if(!istype(I, /obj/item/clothing/head/helmet/bluetaghelm)) - to_chat(user, span_warning("You need a blue laser tag helmet to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ED-209 нужен синий шлем для лазертага.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if("r") if(!istype(I, /obj/item/clothing/head/helmet/redtaghelm)) - to_chat(user, span_warning("You need a red laser tag helmet to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ED-209 нужен красный шлем для лазертага.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if("") if(!istype(I, /obj/item/clothing/head/helmet)) - to_chat(user, span_warning("You need a standard helmet to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ED-209 нужен стандартный шлем СБ.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() build_step++ - to_chat(user, span_notice("You have added [I] to the ED-209 assembly.")) + to_chat(user, span_notice("Вы прикрепили шлем к заготовке ED-209.")) + balloon_alert(user, "деталь установлена") update_appearance(UPDATE_NAME|UPDATE_ICON_STATE) qdel(I) return ATTACK_CHAIN_BLOCKED_ALL @@ -179,13 +190,15 @@ if(5) add_fingerprint(user) if(!isprox(I)) - to_chat(user, span_warning("You need a proximity sensor to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ED-209 нужен датчик движения.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() qdel(I) build_step++ - to_chat(user, span_notice("You have added the proximity sensor to the ED-209 assembly.")) + to_chat(user, span_notice("Вы прикрепили датчик движения к заготовке ED-209.")) + balloon_alert(user, "деталь установлена") update_appearance(UPDATE_NAME|UPDATE_ICON_STATE) return ATTACK_CHAIN_BLOCKED_ALL @@ -193,14 +206,14 @@ add_fingerprint(user) var/obj/item/stack/cable_coil/coil = I if(!iscoil(I) || coil.get_amount() < 1) - to_chat(user, span_warning("You need at least one length of cable to continue the construction.")) + balloon_alert(user, "здесь нужны провода") return ATTACK_CHAIN_PROCEED coil.play_tool_sound(src) - to_chat(user, span_notice("You start to wire the ED-209 assembly...")) + balloon_alert(user, "вы начинаете прокладывать проводку") if(!do_after(user, 4 SECONDS * I.toolspeed, src, category = DA_CAT_TOOL) || build_step != 6 || QDELETED(coil) || !coil.use(1)) return ATTACK_CHAIN_PROCEED build_step++ - to_chat(user, span_notice("You have wired the ED-209 assembly.")) + balloon_alert(user, "вы проложили проводку") update_appearance(UPDATE_NAME) return ATTACK_CHAIN_PROCEED_SUCCESS @@ -210,23 +223,27 @@ switch(lasercolor) if("b") if(!istype(I, /obj/item/gun/energy/laser/tag/blue)) - to_chat(user, span_warning("You need a blue laser tag gun to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ED-209 нужен синий лазертаг-карабин.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED new_name = "bluetag ED-209 assembly" if("r") if(!istype(I, /obj/item/gun/energy/laser/tag/red)) - to_chat(user, span_warning("You need a red laser tag gun to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ED-209 нужен красный лазертаг-карабин.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED new_name = "redtag ED-209 assembly" if("") if(!istype(I, /obj/item/gun/energy/gun/advtaser)) - to_chat(user, span_warning("You need a hybrid taser to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ED-209 нужен гибридный тазер.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED new_name = "taser ED-209 assembly" if(!user.drop_transfer_item_to_loc(I, src)) return ..() build_step++ - to_chat(user, span_notice("You have added [I] to the ED-209 assembly.")) + to_chat(user, span_notice("Вы установили вооружение в заготовку ED-209.")) + balloon_alert(user, "деталь установлена") update_appearance(UPDATE_NAME|UPDATE_ICON_STATE) qdel(I) return ATTACK_CHAIN_BLOCKED_ALL @@ -234,14 +251,17 @@ if(9) add_fingerprint(user) if(!istype(I, /obj/item/stock_parts/cell)) - to_chat(user, span_warning("You need a power cell to complete the assembly.")) + to_chat(user, span_notice("Для завершения сборки ED-209 нужна батарея.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!isturf(loc)) - to_chat(user, span_warning("You cannot finish the construction [ismob(loc) ? "in inventory" : "in [loc]"].")) + to_chat(user, span_notice("Вы не можете завершить сборку [ismob(loc) ? "в инвентаре" : "здесь"].")) + balloon_alert(user, "невозможно") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have completed the ED-209 assembly. Beep boop!")) + balloon_alert(user, "сборка завершена") + to_chat(user, span_notice("Вы завершили сборку ED-209.")) var/mob/living/simple_animal/bot/ed209/new_bot = new(loc, created_name, lasercolor) transfer_fingerprints_to(new_bot) I.transfer_fingerprints_to(new_bot) @@ -262,7 +282,8 @@ if(!I.use_tool(src, user, volume = I.tool_volume)) return . build_step++ - to_chat(user, span_notice("You have welded the the armor to [src].")) + to_chat(user, span_notice("Вы приварили броню к заготовке ED-209.")) + balloon_alert(user, "деталь установлена") update_appearance(UPDATE_NAME|UPDATE_ICON_STATE) @@ -270,17 +291,17 @@ if(build_step != 8) return FALSE . = TRUE - to_chat(user, span_notice("You start attaching the gun to the frame...")) + balloon_alert(user, "вы начинаете устанавливать оружие") if(!I.use_tool(src, user, 4 SECONDS, volume = I.tool_volume) || build_step != 8) return . build_step++ update_appearance(UPDATE_NAME) - to_chat(user, span_notice("You attach the gun to the frame.")) + balloon_alert(user, "вы установили оружие") //Floorbot assemblies /obj/item/toolbox_tiles - desc = "It's a toolbox with tiles sticking out the top" + desc = "Это ящик для инструментов, из которого торчат плитки пола." name = "tiles and toolbox" icon = 'icons/obj/aibots.dmi' icon_state = "toolbox_tiles" @@ -294,7 +315,7 @@ var/toolbox_color = "" //Blank for blue, r for red, y for yellow, etc. /obj/item/toolbox_tiles/sensor - desc = "It's a toolbox with tiles sticking out the top and a sensor attached" + desc = "Это ящик для инструментов, из которого торчат плитки пола. К нему прикреплён датчик движения." name = "tiles, toolbox and sensor arrangement" icon_state = "toolbox_tiles_sensor" @@ -308,15 +329,18 @@ add_fingerprint(user) var/obj/item/stack/tile/plasteel/plasteel = I if(istype(I, /obj/item/storage/toolbox/green/memetic)) - to_chat(user, "Nice try...") + to_chat(user, span_notice("Хорошая попытка...")) + balloon_alert(user, "невозможно") return . if(length(contents)) - to_chat(user, span_warning("The [name] should be empty to start the floorbot construction.")) + to_chat(user, span_notice("Вы не можете начать сборку, пока в ящике для инструментов что-то лежит.")) + balloon_alert(user, "невозможно") return . if(!plasteel.use(10)) - to_chat(user, span_warning("You need at least ten sheets of plasteel to start the floorbot construction.")) + to_chat(user, span_notice("Для начала сборки ремонтного робота нужно 10 листов пластали.")) + balloon_alert(user, "недостаточно материалов") return . . |= ATTACK_CHAIN_BLOCKED_ALL @@ -346,7 +370,8 @@ if(loc == user) user.temporarily_remove_item_from_inventory(src, force = TRUE) user.put_in_hands(assembly) - to_chat(user, span_notice("You have reinforced the toolbox with plasteel sheets. Now it is suitable for further floorbot construction.")) + to_chat(user, span_notice("Вы укрепили ящик для инструментов листами пластали.")) + balloon_alert(user, "ящик укреплён") qdel(src) @@ -359,7 +384,7 @@ return ..() if(is_pen(I)) - var/new_name = rename_interactive(user, I, prompt = "Enter new robot name") + var/new_name = rename_interactive(user, I, prompt = "Введите новое имя для робота") if(!isnull(new_name)) created_name = new_name add_game_logs("[key_name(user)] has renamed a robot to [new_name]", user) @@ -367,7 +392,8 @@ add_fingerprint(user) if(!isprox(I)) - to_chat(user, span_warning("You need a proximity sensor to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ремонтного робота нужен датчик движения.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) @@ -382,7 +408,8 @@ if(loc == user) user.temporarily_remove_item_from_inventory(src, force = TRUE) user.put_in_hands(assembly) - to_chat(user, span_notice("You have added the proximity sensor to the floorbot assembly.")) + to_chat(user, span_notice("Вы прикрепили датчик движения к заготовке ремонтного робота.")) + balloon_alert(user, "деталь установлена") qdel(I) qdel(src) return ATTACK_CHAIN_BLOCKED_ALL @@ -398,7 +425,7 @@ return ..() if(is_pen(I)) - var/new_name = rename_interactive(user, I, prompt = "Enter new robot name") + var/new_name = rename_interactive(user, I, prompt = "Введите новое имя для робота") if(!isnull(new_name)) created_name = new_name add_game_logs("[key_name(user)] has renamed a robot to [new_name]", user) @@ -406,11 +433,13 @@ add_fingerprint(user) if(!istype(I, /obj/item/robot_parts/l_arm) && !istype(I, /obj/item/robot_parts/r_arm)) - to_chat(user, span_warning("You need a cyborg arm to finish the construction.")) + to_chat(user, span_notice("Для завершения сборки ремонтного робота нужна робо-рука.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!isturf(loc)) - to_chat(user, span_warning("You cannot finish the construction [ismob(loc) ? "in inventory" : "in [loc]"].")) + to_chat(user, span_notice("Вы не можете завершить сборку [ismob(loc) ? "в инвентаре" : "здесь"].")) + balloon_alert(user, "невозможно") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) @@ -422,7 +451,8 @@ new_bot.add_fingerprint(user) new_bot.name = created_name new_bot.robot_arm = I.type - to_chat(user, span_notice("You have completed the floorbot assembly. Beep boop!")) + balloon_alert(user, "сборка завершена") + to_chat(user, span_notice("Вы завершили сборку ремонтного робота.")) qdel(I) qdel(src) return ATTACK_CHAIN_BLOCKED_ALL @@ -436,7 +466,8 @@ add_fingerprint(user) if(length(contents)) - to_chat(user, span_warning("The [name] should be empty to start the medibot construction.")) + to_chat(user, span_notice("Вы не можете начать сборку, пока в аптечке что-то лежит.")) + balloon_alert(user, "невозможно") return . . |= ATTACK_CHAIN_BLOCKED_ALL @@ -458,14 +489,15 @@ if(loc == user) user.temporarily_remove_item_from_inventory(src, force = TRUE) user.put_in_hands(assembly) - to_chat(user, span_notice("You have added the cyborg arm to [src]. Now it is suitable for further medibot construction.")) + to_chat(user, span_notice("Вы прикрепили робо-руку к аптечке.")) + balloon_alert(user, "деталь установлена") qdel(I) qdel(src) /obj/item/firstaid_arm_assembly name = "incomplete medibot assembly." - desc = "A first aid kit with a robot arm permanently grafted to it." + desc = "Аптечка первой помощи с прикрепленной роботизированной рукой." icon = 'icons/obj/aibots.dmi' icon_state = "firstaid_arm" w_class = WEIGHT_CLASS_NORMAL @@ -508,7 +540,7 @@ return ..() if(is_pen(I)) - var/new_name = rename_interactive(user, I, prompt = "Enter new robot name") + var/new_name = rename_interactive(user, I, prompt = "Введите новое имя для робота") if(!isnull(new_name)) created_name = new_name add_game_logs("[key_name(user)] has renamed a robot to [new_name]", user) @@ -518,11 +550,13 @@ if(0) add_fingerprint(user) if(!istype(I, /obj/item/healthanalyzer)) - to_chat(user, span_warning("You need a health analyzer to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки медбота нужен анализатор здоровья.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have added the health analyzer to the medibot assembly.")) + to_chat(user, span_notice("Вы прикрепили анализатор здоровья к аптечке.")) + balloon_alert(user, "деталь установлена") build_step++ update_appearance(UPDATE_NAME|UPDATE_OVERLAYS) qdel(I) @@ -531,14 +565,17 @@ if(1) add_fingerprint(user) if(!isprox(I)) - to_chat(user, span_warning("You need a proximity sensor to complete the assembly.")) + to_chat(user, span_notice("Для завершения сборки медбота нужен датчик движения.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!isturf(loc)) - to_chat(user, span_warning("You cannot finish the construction [ismob(loc) ? "in inventory" : "in [loc]"].")) + to_chat(user, span_notice("Вы не можете завершить сборку [ismob(loc) ? "в инвентаре" : "здесь"].")) + balloon_alert(user, "невозможно") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have completed the medibot assembly. Beep boop!")) + balloon_alert(user, "сборка завершена") + to_chat(user, span_notice("Вы завершили сборку медбота.")) var/mob/living/simple_animal/bot/medbot/new_bot if(syndicate_aligned) // syndicate medibots are a special case that have so many unique vars on them, @@ -567,7 +604,7 @@ //Secbot Assembly /obj/item/secbot_assembly name = "incomplete securitron assembly" - desc = "Some sort of bizarre assembly made from a proximity sensor, helmet, and signaler." + desc = "Замудрённая конструкция, состоящая из датчика движения, шлема и сигнального устройства." icon = 'icons/obj/aibots.dmi' icon_state = "helmet_signaler" item_state = "helmet" @@ -604,7 +641,8 @@ add_fingerprint(user) var/obj/item/assembly/signaler/signaler = I if(signaler.secured) - to_chat(user, span_warning("The [signaler.name] should be unsecured.")) + to_chat(user, span_notice("Сигнальное устройство не должно быть закреплено.")) + balloon_alert(user, "невозможно") return ATTACK_CHAIN_PROCEED . |= ATTACK_CHAIN_BLOCKED_ALL @@ -616,7 +654,7 @@ if(loc == user) user.temporarily_remove_item_from_inventory(src, force = TRUE) user.put_in_hands(assembly) - to_chat(user, span_notice("You have added the the signaler to the helmet. Now it is suitable for further securitron construction.")) + balloon_alert(user, "сигнальное устройство прикреплено") qdel(I) qdel(src) @@ -626,7 +664,7 @@ return ..() if(is_pen(I)) - var/new_name = rename_interactive(user, I, prompt = "Enter new robot name") + var/new_name = rename_interactive(user, I, prompt = "Введите новое имя для робота") if(!isnull(new_name)) created_name = new_name add_game_logs("[key_name(user)] has renamed a robot to [new_name]", user) @@ -636,11 +674,13 @@ if(1) add_fingerprint(user) if(!isprox(I)) - to_chat(user, span_warning("You need a proximity sensor to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки охранного робота нужен датчик движения.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have added the proximity sensor to the securitron assembly.")) + to_chat(user, span_notice("Вы прикрепили датчик движения к заготовке охранного робота.")) + balloon_alert(user, "деталь установлена") build_step++ update_appearance(UPDATE_NAME|UPDATE_OVERLAYS) qdel(I) @@ -649,11 +689,13 @@ if(2) add_fingerprint(user) if(!istype(I, /obj/item/robot_parts/l_arm) && !istype(I, /obj/item/robot_parts/r_arm)) - to_chat(user, span_warning("You need a cyborg arm to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки охранного робота нужна робо-рука.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have added the cyborg arm to the securitron assembly.")) + to_chat(user, span_notice("Вы прикрепили робо-руку к заготовке охранного робота.")) + balloon_alert(user, "деталь установлена") build_step++ robot_arm = I.type update_appearance(UPDATE_NAME|UPDATE_OVERLAYS) @@ -663,14 +705,17 @@ if(3) add_fingerprint(user) if(!istype(I, /obj/item/melee/baton/security)) - to_chat(user, span_warning("You need a stunbaton to complete the assembly.")) + to_chat(user, span_notice("Для продолжения сборки охранного робота нужна оглушающая дубинка.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!isturf(loc)) - to_chat(user, span_warning("You cannot finish the construction [ismob(loc) ? "in inventory" : "in [loc]"].")) + to_chat(user, span_notice("Вы не можете завершить сборку [ismob(loc) ? "в инвентаре" : "здесь"].")) + balloon_alert(user, "невозможно") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have completed the securitron assembly. Beep boop!")) + balloon_alert(user, "сборка завершена") + to_chat(user, span_notice("Вы завершили сборку охранного робота.")) var/mob/living/simple_animal/bot/secbot/new_bot = new(loc) new_bot.name = created_name new_bot.robot_arm = robot_arm @@ -699,21 +744,24 @@ var/obj/item/clothing/head/helmet/helmet = new(drop_loc) transfer_fingerprints_to(helmet) helmet.add_fingerprint(user) - to_chat(user, span_notice("You have disconnected the signaler from the helmet.")) + to_chat(user, span_notice("Вы отсоединили сигнальное устройство от шлема.")) + balloon_alert(user, "деталь отсоединена") qdel(src) if(2) var/obj/item/assembly/prox_sensor/sensor = new(drop_loc) transfer_fingerprints_to(sensor) sensor.add_fingerprint(user) build_step-- - to_chat(user, span_notice("You have detached the proximity sensor from the securitron assembly.")) + to_chat(user, span_notice("Вы отсоединили датчик движения от заготовки.")) + balloon_alert(user, "деталь отсоединена") update_appearance(UPDATE_NAME|UPDATE_OVERLAYS) if(3) var/obj/item/robot_parts/new_arm = new robot_arm(drop_loc) transfer_fingerprints_to(new_arm) new_arm.add_fingerprint(user) build_step-- - to_chat(user, span_notice("You have removed the cyborg arm from the securitron assembly.")) + to_chat(user, span_notice("Вы отсоединили робо-руку от заготовки.")) + balloon_alert(user, "деталь отсоединена") update_appearance(UPDATE_NAME|UPDATE_OVERLAYS) @@ -723,7 +771,8 @@ . = TRUE if(!I.use_tool(src, user, volume = I.tool_volume)) return . - to_chat(user, span_notice("You have adjusted the arm slots for extra weapons.")) + to_chat(user, span_notice("Вы создали дополнительные слоты для вооружения в заготовке охранного робота.")) + balloon_alert(user, "корпус модифицирован") var/obj/item/griefsky_assembly/destroyer_of_the_worlds = new(drop_location()) transfer_fingerprints_to(destroyer_of_the_worlds) destroyer_of_the_worlds.add_fingerprint(user) @@ -743,10 +792,12 @@ return . if(build_step == 1) build_step = 0 - to_chat(user, span_notice("You have welded shut the hole in the securitron assembly.")) + to_chat(user, span_notice("Вы заварили лишние отверстия в заготовке охранного робота.")) + balloon_alert(user, "корпус модифицирован") else build_step = 1 - to_chat(user, span_notice("You have welded a hole in the securitron assembly.")) + to_chat(user, span_notice("Вы вырезали дополнительные отверстия в заготовке охранного робота.")) + balloon_alert(user, "корпус модифицирован") update_appearance(UPDATE_OVERLAYS) @@ -754,7 +805,7 @@ /obj/item/griefsky_assembly name = "\improper General Griefsky assembly" - desc = "Some sort of bizarre assembly." + desc = "Причудливая конструкция. Выглядит мощно." icon = 'icons/obj/aibots.dmi' icon_state = "griefsky_assembly" item_state = "griefsky_assembly" @@ -776,27 +827,33 @@ var/toy_sword = istype(I, /obj/item/toy/sword) if(!energy_sword && !toy_sword) if(build_step == 0 && toy_step == 0) - to_chat(user, span_warning("You need a toy sword or an energy sword to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки нужен лазерный меч.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(build_step > 0) - to_chat(user, span_warning("You need an energy sword to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки нужен настоящий лазерный меч.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(toy_step > 0) - to_chat(user, span_warning("You need a toy sword to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки нужен игрушечный лазерный меч.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED return ATTACK_CHAIN_PROCEED if(energy_sword) if(toy_step > 0) - to_chat(user, span_warning("The energy sword is incompatible with the Genewul Giftskee assembly.")) + to_chat(user, span_notice("Этот лазерный меч не подойдёт.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(build_step == 3) if(!isturf(loc)) - to_chat(user, span_warning("You cannot finish the construction [ismob(loc) ? "in inventory" : "in [loc]"].")) + to_chat(user, span_notice("Вы не можете завершить сборку [ismob(loc) ? "в инвентаре" : "здесь"].")) + balloon_alert(user, "невозможно") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have completed the General Griefsky assembly. Its war crimes time!")) + balloon_alert(user, "сборка завершена") + to_chat(user, span_notice("Вы завершили сборку Генерала Грифски. Время совершить парочку военных преступлений!")) var/mob/living/simple_animal/bot/secbot/griefsky/destroyer_of_the_worlds = new(loc) transfer_fingerprints_to(destroyer_of_the_worlds) I.transfer_fingerprints_to(destroyer_of_the_worlds) @@ -809,20 +866,24 @@ build_step++ I.transfer_fingerprints_to(src) update_appearance(UPDATE_NAME) - to_chat(user, span_notice("You have added the energy sword to the General Griefsky assembly. It prays for more!")) + to_chat(user, span_notice("Вы прикрепили лазерный меч к заготовке.")) + balloon_alert(user, "деталь установлена") qdel(I) return ATTACK_CHAIN_BLOCKED_ALL if(build_step > 0) - to_chat(user, span_warning("The toy sword is incompatible with the General Griefsky assembly.")) + to_chat(user, span_notice("Этот лазерный меч не подойдёт.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(toy_step == 3) if(!isturf(loc)) - to_chat(user, span_warning("You cannot finish the construction [ismob(loc) ? "in inventory" : "in [loc]"].")) + to_chat(user, span_notice("Вы не можете завершить сборку [ismob(loc) ? "в инвентаре" : "здесь"].")) + balloon_alert(user, "невозможно") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have completed the Genewul Giftskee assembly. Its party time!")) + balloon_alert(user, "сборка завершена") + to_chat(user, span_notice("Вы завершили сборку Генерала Грифски.")) var/mob/living/simple_animal/bot/secbot/griefsky/toy/destroyer_of_the_pinatas = new(loc) transfer_fingerprints_to(destroyer_of_the_pinatas) I.transfer_fingerprints_to(destroyer_of_the_pinatas) @@ -835,7 +896,8 @@ toy_step++ I.transfer_fingerprints_to(src) update_appearance(UPDATE_NAME) - to_chat(user, span_notice("You have added the toy sword to the Genewul Giftskee assembly. It prays for more!")) + to_chat(user, span_notice("Вы прикрепили игрушечный лазерный меч к заготовке.")) + balloon_alert(user, "деталь установлена") qdel(I) return ATTACK_CHAIN_BLOCKED_ALL @@ -849,11 +911,13 @@ var/obj/item/sword if(build_step) sword = new /obj/item/melee/energy/sword(drop_location()) - to_chat(user, span_notice("You have detached the energy sword from the Griefsky assembly.")) + to_chat(user, span_notice("Вы отсоединили лазерный меч от заготовки.")) + balloon_alert(user, "деталь отсоединена") build_step-- else if(toy_step) sword = new /obj/item/toy/sword(drop_location()) - to_chat(user, span_notice("You have detached the toy sword from the Griefsky assembly.")) + to_chat(user, span_notice("Вы отсоединили игрушечный лазерный меч от заготовки.")) + balloon_alert(user, "деталь отсоединена") toy_step-- transfer_fingerprints_to(sword) sword.add_fingerprint(user) @@ -868,7 +932,8 @@ add_fingerprint(user) if(length(contents)) - to_chat(user, span_warning("The [name] should be empty to start the honkbot construction.")) + to_chat(user, span_notice("Вы не можете начать сборку, пока в коробке что-то лежит.")) + balloon_alert(user, "невозможно") return . . |= ATTACK_CHAIN_BLOCKED_ALL @@ -883,14 +948,15 @@ if(loc == user) user.temporarily_remove_item_from_inventory(src, force = TRUE) user.put_in_hands(assembly) - to_chat(user, span_notice("You have added the cyborg arm to [src]. Now it is suitable for further honkbot construction.")) + to_chat(user, span_notice("Вы прикрепили робо-руку к коробке.")) + balloon_alert(user, "деталь установлена") qdel(I) qdel(src) /obj/item/honkbot_arm_assembly name = "incomplete honkbot assembly" - desc = "A clown box with a robot arm permanently grafted to it." + desc = "Клоунская коробка с прикрепленной роботизированной рукой." icon = 'icons/obj/aibots.dmi' icon_state = "honkbot_arm" w_class = WEIGHT_CLASS_NORMAL @@ -908,11 +974,13 @@ if(0) add_fingerprint(user) if(!isprox(I)) - to_chat(user, span_warning("You need a proximity sensor to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки хонкбота нужен датчик движения.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have added the proximity sensor to the honkbot assembly.")) + to_chat(user, span_notice("Вы прикрепили датчик движения к заготовке хонкбота.")) + balloon_alert(user, "деталь установлена") build_step++ update_appearance(UPDATE_ICON_STATE) qdel(I) @@ -921,11 +989,13 @@ if(1) add_fingerprint(user) if(!istype(I, /obj/item/bikehorn)) - to_chat(user, span_warning("You need a bike horn to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки хонкбота нужен велосипедный гудок.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have added the bike horn to the honkbot assembly.")) + to_chat(user, span_notice("Вы прикрепили велосипедный гудок к заготовке хонкбота.")) + balloon_alert(user, "деталь установлена") build_step++ update_appearance(UPDATE_ICON_STATE|UPDATE_DESC) qdel(I) @@ -934,14 +1004,17 @@ if(2) add_fingerprint(user) if(!istype(I, /obj/item/instrument/trombone)) - to_chat(user, span_warning("You need a trombone to complete the assembly.")) + to_chat(user, span_notice("Для завершения сборки хонкбота нужен тромбон.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!isturf(loc)) - to_chat(user, span_warning("You cannot finish the construction [ismob(loc) ? "in inventory" : "in [loc]"].")) + to_chat(user, span_notice("Вы не можете завершить сборку [ismob(loc) ? "в инвентаре" : "здесь"].")) + balloon_alert(user, "невозможно") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have completed the honkbot assembly. HONK!")) + balloon_alert(user, "сборка завершена") + to_chat(user, span_notice("Вы завершили сборку хонкобота.")) var/mob/living/simple_animal/bot/honkbot/new_bot = new(loc) new_bot.robot_arm = robot_arm transfer_fingerprints_to(new_bot) @@ -961,7 +1034,7 @@ /obj/item/honkbot_arm_assembly/update_desc(updates = ALL) . = ..() if(build_step == 2) - desc = "A clown box with a robot arm and a bikehorn permanently grafted to it. It needs a trombone to be finished" + desc = "Клоунская коробка с прикреплённой роботизированной рукой и велосипедным гудком. Ему не хватает лишь тромбона." return . desc = initial(desc) diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 6ee5edbd899c..a16a45a652bf 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -3,7 +3,15 @@ /mob/living/simple_animal/bot/ed209 name = "\improper ED-209 Security Robot" - desc = "A security robot. He looks less than thrilled." + desc = "Охранный робот. Он выглядит абсолютно спокойным." + ru_names = list( + NOMINATIVE = "охранный робот ED-209", + GENITIVE = "охранного робота ED-209", + DATIVE = "охранному роботу ED-209", + ACCUSATIVE = "охранного робота ED-209", + INSTRUMENTAL = "охранным роботом ED-209", + PREPOSITIONAL = "охранном роботе ED-209", + ) icon = 'icons/obj/aibots.dmi' icon_state = "ed2090" density = TRUE @@ -19,10 +27,10 @@ bot_type = SEC_BOT bot_filter = RADIO_SECBOT model = "ED-209" - bot_purpose = "seek out criminals, handcuff them, and report their location to security" + bot_purpose = "найти преступников, задержать их и доложить службе безопасности" bot_core_type = /obj/machinery/bot_core/secbot window_id = "autoed209" - window_name = "Automatic Security Unit v2.6" + window_name = "Автоматическая Охранная Единица v2.6" path_image_color = "#FF0000" data_hud_type = DATA_HUD_SECURITY_ADVANCED @@ -53,7 +61,7 @@ /// If `TRUE`, don't handcuff. var/arrest_type = FALSE /// Holder for projectile type. - var/projectile = /obj/item/projectile/energy/electrode + var/projectile = /obj/projectile/energy/electrode var/shoot_sound = 'sound/weapons/taser.ogg' var/baton_delayed = FALSE var/speak_cooldown = FALSE @@ -80,9 +88,9 @@ if(created_name == initial(name) || !created_name) if(lasercolor == "b") - name = pick("BLUE BALLER","SANIC","BLUE KILLDEATH MURDERBOT") + name = pick("СИНИЙ УБИВАТОР","САНИК","СИНИЙ КИБОРГ УБИЙЦА") else if (lasercolor == "r") - name = pick("RED RAMPAGE","RED ROVER","RED KILLDEATH MURDERBOT") + name = pick("КРАСНОЕ БЕЗУМИЕ","КРАСНЫЙ УНИЧТОЖИТЕЛЬ","КРАСНЫЙ КИБОРГ УБИЙЦА") //SECHUD var/datum/atom_hud/secsensor = GLOB.huds[DATA_HUD_SECURITY_ADVANCED] @@ -119,9 +127,9 @@ /mob/living/simple_animal/bot/ed209/set_custom_texts() - text_hack = "You disable [name]'s combat inhibitor." - text_dehack = "You restore [name]'s combat inhibitor." - text_dehack_fail = "[name] ignores your attempts to restrict [p_them()]!" + text_hack = "Вы взломали боевую систему [declent_ru(GENITIVE)]" + text_dehack = "Вы восстановили боевую систему [declent_ru(GENITIVE)]." + text_dehack_fail = "[capitalize(declent_ru(NOMINATIVE))] отказывается вам подчиняться!" /mob/living/simple_animal/bot/ed209/show_controls(mob/M) @@ -159,7 +167,7 @@ if (..()) return if(topic_denied(usr)) - to_chat(usr, "[src]'s interface is not responding!") + to_chat(usr, span_warning("Интерфейс [declent_ru(GENITIVE)] не отвечает!")) return add_fingerprint(usr) . = TRUE @@ -228,16 +236,16 @@ ..() if(emagged == 2) if(user) - to_chat(user, span_warning("You short out [src]'s target assessment circuits.")) + to_chat(user, span_warning("Вы замыкаете микросхемы системы целеуказания [declent_ru(GENITIVE)].")) oldtarget_name = user.name - audible_message(span_danger("[src] buzzes oddly!")) + audible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] странно жужжит!")) declare_arrests = FALSE icon_state = "[lasercolor]ed209[on]" set_weapon() -/mob/living/simple_animal/bot/ed209/bullet_act(obj/item/projectile/Proj) - if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet)) +/mob/living/simple_animal/bot/ed209/bullet_act(obj/projectile/Proj) + if(istype(Proj ,/obj/projectile/beam)||istype(Proj,/obj/projectile/bullet)) if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)) if(!Proj.nodamage && Proj.damage < src.health) retaliate(Proj.firer) @@ -402,9 +410,9 @@ else if(threatlevel >= 4) target = C oldtarget_name = C.name - speak("Level [threatlevel] infraction alert!") + speak("Вижу преступника! Уровень опасности - [threatlevel]!") playsound(loc, pick('sound/voice/ed209_20sec.ogg', 'sound/voice/edplaceholder.ogg'), 50, 0) - visible_message("[src] points at [C.name]!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] указывает на [C.name]!") mode = BOT_HUNT INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) break @@ -420,7 +428,7 @@ /mob/living/simple_animal/bot/ed209/explode() SSmove_manager.stop_looping(src) - visible_message("[src] blows apart!") + visible_message(span_userdanger("[capitalize(declent_ru(NOMINATIVE))] разлетается на части!")) var/turf/Tsec = get_turf(src) var/obj/item/ed209_assembly/Sa = new /obj/item/ed209_assembly(Tsec) @@ -467,17 +475,17 @@ shoot_sound = 'sound/weapons/laser.ogg' if(emagged == 2) if(lasercolor) - projectile = /obj/item/projectile/beam/disabler + projectile = /obj/projectile/beam/disabler else - projectile = /obj/item/projectile/beam + projectile = /obj/projectile/beam else if(!lasercolor) shoot_sound = 'sound/weapons/taser.ogg' - projectile = /obj/item/projectile/energy/electrode + projectile = /obj/projectile/energy/electrode else if(lasercolor == "b") - projectile = /obj/item/projectile/beam/lasertag/bluetag + projectile = /obj/projectile/beam/lasertag/bluetag else if(lasercolor == "r") - projectile = /obj/item/projectile/beam/lasertag/redtag + projectile = /obj/projectile/beam/lasertag/redtag /mob/living/simple_animal/bot/ed209/proc/shootAt(mob/target) @@ -494,7 +502,7 @@ if(!projectile || !isturf(T) || !isturf(U)) return - var/obj/item/projectile/A = new projectile(loc) + var/obj/projectile/A = new projectile(loc) playsound(loc, shoot_sound, 50, 1) A.current = U A.firer = src @@ -548,15 +556,15 @@ mode = BOT_HUNT -/mob/living/simple_animal/bot/ed209/bullet_act(obj/item/projectile/Proj) +/mob/living/simple_animal/bot/ed209/bullet_act(obj/projectile/Proj) if(!disabled) var/lasertag_check = 0 if((lasercolor == "b")) - if(istype(Proj, /obj/item/projectile/beam/lasertag/redtag)) + if(istype(Proj, /obj/projectile/beam/lasertag/redtag)) lasertag_check++ else if((lasercolor == "r")) - if(istype(Proj, /obj/item/projectile/beam/lasertag/bluetag)) + if(istype(Proj, /obj/projectile/beam/lasertag/bluetag)) lasertag_check++ if(lasertag_check) @@ -587,9 +595,7 @@ lasercolor = "r" -/mob/living/simple_animal/bot/ed209/UnarmedAttack(atom/A) - if(!on || !can_unarmed_attack()) - return +/mob/living/simple_animal/bot/ed209/OnUnarmedAttack(atom/A) if(iscarbon(A)) var/mob/living/carbon/C = A if(C.staminaloss < 110 || arrest_type && !baton_delayed) @@ -629,19 +635,19 @@ if(declare_arrests) var/area/location = get_area(src) if(!speak_cooldown) - speak("[arrest_type ? "Detaining" : "Arresting"] level [threat] scumbag [C] in [location].", radio_channel) + speak("[arrest_type ? "Удерживаю" : "Задерживаю"] подонка по имени [C] в локации [location]. Уровень опасности - [threat].", radio_channel) speak_cooldown = TRUE addtimer(VARSET_CALLBACK(src, speak_cooldown, FALSE), SPEAK_COOLDOWN) - C.visible_message(span_danger("[src] has stunned [C]!"), - span_userdanger("[src] has stunned you!")) + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] оглушил [C]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] оглушил вас!")) /mob/living/simple_animal/bot/ed209/proc/start_cuffing(mob/living/carbon/C) mode = BOT_ARREST playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) - C.visible_message(span_danger("[src] is trying to put zipties on [C]!"), - span_userdanger("[src] is trying to put zipties on you!")) + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] начинает надевать стяжки на [C]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] пытается надеть на вас стяжки!")) addtimer(CALLBACK(src, PROC_REF(cuff_callback), C), 6 SECONDS) @@ -653,6 +659,9 @@ return C.apply_restraints(new /obj/item/restraints/handcuffs/cable/zipties/used(null), ITEM_SLOT_HANDCUFFED, TRUE) + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] надел стяжки на [C]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] надел на вас стяжки!")) + back_to_idle() diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index 9728321bced4..3f12a46f25ff 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -1,7 +1,15 @@ //Floorbot /mob/living/simple_animal/bot/floorbot name = "\improper Floorbot" - desc = "A little floor repairing robot, he looks so excited!" + desc = "Маленький робот для починки полов и обшивки. Он выглядит таким увлечённым!" + ru_names = list( + NOMINATIVE = "ремонтный робот", + GENITIVE = "ремонтного робота", + DATIVE = "ремонтному роботу", + ACCUSATIVE = "ремонтного робота", + INSTRUMENTAL = "ремонтным роботом", + PREPOSITIONAL = "ремонтном роботе", + ) icon = 'icons/obj/aibots.dmi' icon_state = "floorbot0" density = FALSE @@ -13,10 +21,10 @@ bot_type = FLOOR_BOT bot_filter = RADIO_FLOORBOT model = "Floorbot" - bot_purpose = "seek out damaged or missing floor tiles, and repair or replace them as necessary" + bot_purpose = "найти повреждения в полу или обшивке и восстановить их целостность" bot_core_type = /obj/machinery/bot_core/floorbot window_id = "autofloor" - window_name = "Automatic Station Floor Repairer v1.1" + window_name = "Автоматическая Ремонтная Единица v1.1" path_image_color = "#FFA500" /// Determines what to do when process_scan() recieves a target. See process_scan() for details. @@ -67,35 +75,35 @@ /mob/living/simple_animal/bot/floorbot/set_custom_texts() - text_hack = "You corrupt [name]'s construction protocols." - text_dehack = "You detect errors in [name] and reset [p_their()] programming." - text_dehack_fail = "[name] is not responding to reset commands!" + text_hack = "Вы взломали рабочие протоколы [declent_ru(GENITIVE)]." + text_dehack = "Вы восстановили рабочие протоколы [declent_ru(GENITIVE)]." + text_dehack_fail = "[capitalize(declent_ru(NOMINATIVE))] не отвечает на команды сброса настроек!" /mob/living/simple_animal/bot/floorbot/get_controls(mob/user) var/dat dat += hack(user) dat += showpai(user) - dat += "Floor Repairer Controls v1.1

" - dat += "Status: [on ? "On" : "Off"]
" - dat += "Maintenance panel panel is [open ? "opened" : "closed"]
" - dat += "Tiles left: [amount]
" - dat += "Behvaiour controls are [locked ? "locked" : "unlocked"]
" + dat += "Панель управления ремонтным роботом v1.1

" + dat += "Состояние: [on ? "Включён" : "Выключен"]
" + dat += "Панель технического обслуживания [open ? "открыта" : "закрыта"]
" + dat += "Плиток пола в запасе: [amount]
" + dat += "Управление поведением [locked ? "заблокировано" : "разблокировано"]
" if(!locked || issilicon(user) || user.can_admin_interact()) - dat += "Add tiles to new hull plating: [autotile ? "Yes" : "No"]
" - dat += "Replace floor tiles: [replacetiles ? "Yes" : "No"]
" - dat += "Finds tiles: [eattiles ? "Yes" : "No"]
" - dat += "Make pieces of metal into tiles when empty: [maketiles ? "Yes" : "No"]
" - dat += "Transmit notice when empty: [nag_on_empty ? "Yes" : "No"]
" - dat += "Repair damaged tiles and platings: [fixfloors ? "Yes" : "No"]
" - dat += "Traction Magnets: [anchored ? "Engaged" : "Disengaged"]
" - dat += "Patrol Station: [auto_patrol ? "Yes" : "No"]
" + dat += "Устанавливать плитки пола на сегменты обшивки:[autotile ? "Да" : "Нет"]
" + dat += "Заменять плитки пола: [replacetiles ? "Да" : "Нет"]
" + dat += "Загружать свободные плитки во внутреннее хранилище: [eattiles ? "Да" : "Нет"]
" + dat += "Перерабатывать металл в плитки пола, когда хранилище опустошено: [maketiles ? "Да" : "Нет"]
" + dat += "Уведомлять, когда хранилище опустошено: [nag_on_empty ? "Да" : "Нет"]
" + dat += "Ремонтировать повреждения пола и обшивки: [fixfloors ? "Да" : "Нет"]
" + dat += "Закрепиться на месте: [anchored ? "Да" : "Нет"]
" + dat += "Режим патрулирования: [auto_patrol ? "Да" : "Нет"]
" var/bmode if(targetdirection) bmode = dir2text(targetdirection) else - bmode = "disabled" - dat += "Bridge Mode : [bmode]
" + bmode = "Выключен" + dat += "Режим постройки моста: [bmode]
" return dat @@ -109,10 +117,11 @@ var/obj/item/stack/tile/plasteel/plasteel = I var/loaded = min(50 - amount, plasteel.get_amount()) if(!plasteel.use(loaded)) - to_chat(user, span_warning("You need at least one floor tile to put into [src]!")) + to_chat(user, span_warning("Вам нужна хотя бы одна плитка пола для загрузки в [declent_ru(ACCUSATIVE)]!")) return ATTACK_CHAIN_PROCEED amount += loaded - to_chat(user, span_notice("You have loaded [loaded] tile\s into the floorbot. [p_they(TRUE)] now contains [amount] tiles.")) + balloon_alert(user, "плитки загружены") + to_chat(user, span_notice("Вы загрузили [loaded] плитки в [declent_ru(ACCUSATIVE)]. Текущее количество плиток - [amount].")) nagged = FALSE update_icon() return ATTACK_CHAIN_PROCEED_SUCCESS @@ -124,7 +133,7 @@ ..() if(emagged == 2) if(user) - to_chat(user, span_danger("[src] buzzes and beeps.")) + to_chat(user, span_danger("[capitalize(declent_ru(NOMINATIVE))] жужжит и пищит.")) /mob/living/simple_animal/bot/floorbot/Topic(href, href_list) @@ -148,17 +157,17 @@ set_anchored(!anchored) if("bridgemode") - var/setdir = input("Select construction direction:") as null|anything in list("north","east","south","west","disable") + var/setdir = input("Выберите направление строительства:") as null|anything in list("север","юг","запад","восток","отключить") switch(setdir) - if("north") + if("север") targetdirection = 1 - if("south") + if("юг") targetdirection = 2 - if("east") + if("восток") targetdirection = 4 - if("west") + if("запад") targetdirection = 8 - if("disable") + if("отключить") targetdirection = null update_controls() @@ -184,7 +193,7 @@ nag() if(prob(5)) - audible_message("[src] makes an excited booping beeping sound!") + custom_emote(EMOTE_VISIBLE, "бупает и бипает!") //Normal scanning procedure. We have tiles loaded, are not emagged. if(!target && emagged < 2 && amount > 0) @@ -238,7 +247,7 @@ F.break_tile_to_plating() else F.ReplaceWithLattice() - audible_message(span_danger("[src] makes an excited booping sound.")) + custom_emote(EMOTE_VISIBLE, "бупает.") addtimer(CALLBACK(src, PROC_REF(inc_amount_callback)), 5 SECONDS) path = list() @@ -276,7 +285,7 @@ /mob/living/simple_animal/bot/floorbot/proc/nag() //Annoy everyone on the channel to refill us! if(!nagged) - speak("Requesting refill at [get_area(src)]!", radio_channel) + speak("Запрашивается пополнение стройматериалов в локации [get_area(src)]!", radio_channel) nagged = TRUE @@ -337,7 +346,7 @@ set_anchored(TRUE) if(isspaceturf(target_turf)) //If we are fixing an area not part of pure space, it is - visible_message(span_notice("[targetdirection ? "[src] begins installing a bridge plating." : "[src] begins to repair the hole."]")) + custom_emote(EMOTE_VISIBLE, "[targetdirection ? "начинает строить сегмент моста." : "начинает заделывать пробоину."]") mode = BOT_REPAIRING update_icon() addtimer(CALLBACK(src, PROC_REF(make_bridge_plating), target_turf), 5 SECONDS) @@ -346,7 +355,7 @@ var/turf/simulated/floor/F = target_turf mode = BOT_REPAIRING update_icon() - visible_message(span_notice("[src] begins repairing the floor.")) + custom_emote(EMOTE_VISIBLE, "начинает ремонтировать пол.") addtimer(CALLBACK(src, PROC_REF(make_bridge_plating), F), 5 SECONDS) @@ -380,7 +389,7 @@ /mob/living/simple_animal/bot/floorbot/proc/start_eattile(obj/item/stack/tile/plasteel/T) if(!istype(T, /obj/item/stack/tile/plasteel)) return - visible_message(span_notice("[src] begins to collect tiles.")) + custom_emote(EMOTE_VISIBLE, "начинает собирать плитки.") mode = BOT_REPAIRING addtimer(CALLBACK(src, PROC_REF(do_eattile), T), 2 SECONDS) @@ -407,7 +416,7 @@ /mob/living/simple_animal/bot/floorbot/proc/start_maketile(obj/item/stack/sheet/metal/M) if(!istype(M, /obj/item/stack/sheet/metal)) return - visible_message(span_notice("[src] begins to create tiles.")) + custom_emote(EMOTE_VISIBLE, "начинает создавать плитки.") mode = BOT_REPAIRING addtimer(CALLBACK(src, PROC_REF(do_maketile), M), 2 SECONDS) @@ -442,7 +451,7 @@ /mob/living/simple_animal/bot/floorbot/explode() on = FALSE - visible_message("[src] blows apart!") + visible_message(span_userdanger("[capitalize(declent_ru(NOMINATIVE))] разлетается на части!")) var/turf/Tsec = get_turf(src) var/obj/item/storage/toolbox/mechanical/N = new /obj/item/storage/toolbox/mechanical(Tsec) N.contents = list() @@ -462,9 +471,7 @@ ..() -/mob/living/simple_animal/bot/floorbot/UnarmedAttack(atom/A) - if(!can_unarmed_attack()) - return +/mob/living/simple_animal/bot/floorbot/OnUnarmedAttack(atom/A) if(isturf(A)) repair(A) else if(istype(A,/obj/item/stack/tile/plasteel)) diff --git a/code/modules/mob/living/simple_animal/bot/griefsky.dm b/code/modules/mob/living/simple_animal/bot/griefsky.dm index d426c808ad5a..44b5190f3d89 100644 --- a/code/modules/mob/living/simple_animal/bot/griefsky.dm +++ b/code/modules/mob/living/simple_animal/bot/griefsky.dm @@ -1,11 +1,19 @@ /mob/living/simple_animal/bot/secbot/griefsky //This bot is powerful. If you managed to get 4 eswords somehow, you deserve this horror. Emag him for best results. name = "\improper General Griefsky" - desc = "Is that a secbot with four eswords in its arms...?" + desc = "Это охранный робот с четырьмя лазерными мечами в руках..?" + ru_names = list( + NOMINATIVE = "Генерал Грифски", + GENITIVE = "Генерала Грифски", + DATIVE = "Генералу Грифски", + ACCUSATIVE = "Генерала Грифски", + INSTRUMENTAL = "Генералом Грифски", + PREPOSITIONAL = "Генерале Грифски", + ) icon_state = "griefsky0" health = 100 maxHealth = 100 base_icon = "griefsky" - window_name = "Automatic Security Unit v3.0" + window_name = "Автоматическая Охранная Единица v3.0" var/spin_icon = "griefsky-c" // griefsky and griefsky junior have dif icons var/weapon = /obj/item/melee/energy/sword @@ -22,7 +30,15 @@ /mob/living/simple_animal/bot/secbot/griefsky/toy //A toy version of general griefsky! name = "Genewul Giftskee" - desc = "An adorable looking secbot with four toy swords taped to its arms" + desc = "Очаровательный охранный робот с четырьмя игрушечными мечами в руках. Прелесть!" + ru_names = list( + NOMINATIVE = "Гиневал Гифтски", + GENITIVE = "Гиневала Гифтски", + DATIVE = "Гиневалу Гифтски", + ACCUSATIVE = "Гиневала Гифтски", + INSTRUMENTAL = "Гиневалом Гифтски", + PREPOSITIONAL = "Гиневале Гифтски", + ) spin_icon = "griefskyj-c" health = 50 maxHealth = 50 @@ -42,12 +58,20 @@ /mob/living/simple_animal/bot/secbot/griefsky/syndicate - radio_channel = "SyndTaipan" - name = "Генерал Синди" + name = "General Syndie" + desc = "В процессе его создания пострадало как минимум 24 агента. 22 из них не выжили..." + ru_names = list( + NOMINATIVE = "Генерал Синди", + GENITIVE = "Генерала Синди", + DATIVE = "Генералу Синди", + ACCUSATIVE = "Генерала Синди", + INSTRUMENTAL = "Генералом Синди", + PREPOSITIONAL = "Генерале Синди", + ) icon_state = "general_syndie0" base_icon = "general_syndie" spin_icon = "general_syndie-c" - desc = "В процессе его создания пострадало как минимум 24 агента. 22 из них не выжили..." + radio_channel = "SyndTaipan" faction = list("syndicate") allow_pai = TRUE auto_patrol = TRUE @@ -90,22 +114,22 @@ if(!iscarbon(arrived) || arrived != target || in_range(src, arrived)) return FALSE - visible_message(span_danger("[src] flails his swords and pushes [arrived] out of it's way!")) + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] размахивает своими мечами и отталкивает [arrived]!")) arrived.Weaken(4 SECONDS) -/mob/living/simple_animal/bot/secbot/griefsky/UnarmedAttack(atom/A) //like secbots its only possible with admin intervention - if(!on || !can_unarmed_attack()) +/mob/living/simple_animal/bot/secbot/griefsky/OnUnarmedAttack(atom/atom) //like secbots its only possible with admin intervention + if(!iscarbon(atom)) return - if(iscarbon(A)) - var/mob/living/carbon/C = A - sword_attack(C) + + var/mob/living/carbon/carbon = atom + sword_attack(carbon) -/mob/living/simple_animal/bot/secbot/griefsky/bullet_act(obj/item/projectile/P) //so uncivilized +/mob/living/simple_animal/bot/secbot/griefsky/bullet_act(obj/projectile/P) //so uncivilized retaliate(P.firer) if((icon_state == spin_icon) && (prob(block_chance_ranged))) //only when the eswords are on - visible_message("[src] deflects [P] with its energy swords!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] отражает [P] своим мечом!", projectile_message = TRUE) playsound(loc, 'sound/weapons/blade1.ogg', 50, 1, 0) else ..() @@ -113,7 +137,7 @@ /mob/living/simple_animal/bot/secbot/griefsky/proc/sword_attack(mob/living/carbon/C) // esword attack if((HAS_TRAIT(src, TRAIT_PACIFISM) || GLOB.pacifism_after_gt) && dmg) if(usr) - to_chat(usr, span_warning("You don't want to harm other living beings!")) + balloon_alert(usr, "никакого насилия!") return do_attack_animation(C) playsound(loc, 'sound/weapons/blade1.ogg', 50, TRUE, -1) @@ -133,12 +157,12 @@ var/area/location = get_area(src) if(!spam_flag) if(syndie) - speak("Back away! I will deal with this [("syndicate" in C.faction) ? "level [threat]" : "Nanotrasen"] swine [C] in [location] myself!.", radio_channel) + speak("Контакт! [C] [threat] уровня угрозы, место - [location]! Сейчас нашинкую этого [("syndicate" in C.faction) ? "ублюдка!" : "прихвостня НТ!"]", radio_channel) else - speak("Back away! I will deal with this level [threat] swine [C] in [location] myself!.", radio_channel) + speak("Контакт! [C] [threat] уровня угрозы, место - [location]! Сейчас нашинкую этого ублюдка!", radio_channel) spam_flag = TRUE addtimer(VARSET_CALLBACK(src, spam_flag, FALSE), 10 SECONDS) //to avoid spamming comms of sec for each hit - visible_message("[src] flails his swords and cuts [C]!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] замахивается своими мечами и рубит [C]!") /mob/living/simple_animal/bot/secbot/griefsky/handle_automated_action() @@ -181,7 +205,7 @@ frustration = 0 else back_to_idle() - speak("You fool") + speak("Идиот...") else back_to_idle() @@ -210,7 +234,7 @@ else if(!("syndicate" in C.faction)) threatlevel = 20 if(is_taipan(z) && C.mind?.assigned_role != "Space Base Syndicate Comms Officer" && (check_for_mug(C.get_active_hand()) || check_for_mug(C.get_inactive_hand()))) - speak("[C.name] наглый вор! Положи кружку!", radio_channel) + speak("[C.name], наглый ты воришка! Положи кружку на место!", radio_channel) threatlevel += 4 else threatlevel = C.assess_threat(src) @@ -221,11 +245,11 @@ else if(threatlevel >= 4) target = C oldtarget_name = C.name - speak("You are a bold one") + speak("Ты больно смелый, как я погляжу, да?!") playsound(src,'sound/weapons/saberon.ogg',50,TRUE,-1) - visible_message("[src] ignites his energy swords!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] включает свои лазерные мечи!") icon_state = "[base_icon]-c" - visible_message("[src] points at [C.name]!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] указывает на [C.name]!") mode = BOT_HUNT INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) break @@ -244,7 +268,7 @@ /mob/living/simple_animal/bot/secbot/griefsky/explode() SSmove_manager.stop_looping(src) - visible_message(span_boldannounceic("[src] lets out a huge cough as it blows apart!")) + visible_message(span_boldannounceic("[capitalize(declent_ru(NOMINATIVE))] разлетается на части!")) var/turf/Tsec = get_turf(src) new /obj/item/assembly/prox_sensor(Tsec) var/obj/item/secbot_assembly/Sa = new /obj/item/secbot_assembly(Tsec) @@ -269,10 +293,10 @@ /** * This section is blocking attack. */ -/mob/living/simple_animal/bot/secbot/griefsky/bullet_act(obj/item/projectile/P) //so uncivilized +/mob/living/simple_animal/bot/secbot/griefsky/bullet_act(obj/projectile/P) //so uncivilized retaliate(P.firer) if((icon_state == spin_icon) && (prob(block_chance_ranged))) //only when the eswords are on - visible_message("[src] deflects [P] with its energy swords!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] отражает [P] своим мечом!", projectile_message = TRUE) playsound(loc, 'sound/weapons/blade1.ogg', 50, 1, 0) else ..() @@ -285,7 +309,7 @@ if(icon_state != spin_icon) return if(prob(block_chance_melee)) - visible_message("[src] deflects [user]'s attack with his energy swords!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] отражает атаку [user] своим мечом!") playsound(loc, 'sound/weapons/blade1.ogg', 50, TRUE, -1) return TRUE @@ -301,7 +325,7 @@ /mob/living/simple_animal/bot/secbot/griefsky/attackby(obj/item/I, mob/user, params) //cant touch or attack him while spinning if(icon_state == spin_icon && prob(block_chance_melee)) // FFS! have no time to rework this now user.do_attack_animation(src) - visible_message("[src] deflects [user]'s move with his energy swords!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] блокирует атаку [user] своими мечами!") playsound(loc, 'sound/weapons/blade1.ogg', 50, TRUE, -1) return ATTACK_CHAIN_BLOCKED_ALL return ..() diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index 56a523934392..69763de6f356 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -1,6 +1,14 @@ /mob/living/simple_animal/bot/honkbot name = "\improper honkbot" - desc = "A little robot. It looks happy with its bike horn." + desc = "Маленький робот. У него есть гудок. Он счастлив." + ru_names = list( + NOMINATIVE = "хонкобот", + GENITIVE = "хонкобота", + DATIVE = "хонкоботу", + ACCUSATIVE = "хонкобота", + INSTRUMENTAL = "хонкоботом", + PREPOSITIONAL = "хонкоботе", + ) icon = 'icons/obj/aibots.dmi' icon_state = "honkbot" density = FALSE @@ -15,7 +23,7 @@ model = "Honkbot" bot_core_type = /obj/machinery/bot_core/honkbot window_id = "autohonk" - window_name = "Honkomatic Bike Horn Unit v1.0.7" + window_name = "Хонкоматическая Клоуновая Единица v1.0.7" data_hud_type = DATA_HUD_SECURITY_BASIC // show jobs path_image_color = "#FF69B4" @@ -78,9 +86,9 @@ /mob/living/simple_animal/bot/honkbot/set_custom_texts() - text_hack = "You overload [name]'s sound control system" - text_dehack = "You reboot [name] and restore the sound control system." - text_dehack_fail = "[name] refuses to accept your authority!" + text_hack = "Вы перегрузили звуковую систему [declent_ru(GENITIVE)]." + text_dehack = "Вы восстановили звуковую систему [declent_ru(GENITIVE)]." + text_dehack_fail = "[capitalize(declent_ru(NOMINATIVE))] отказывается вам подчиняться!" /mob/living/simple_animal/bot/honkbot/get_controls(mob/user) @@ -88,15 +96,15 @@ dat += hack(user) dat += showpai(user) dat += text({" - Honkomatic Bike Horn Unit v1.0.7 controls

- Status: []
- Behaviour controls are [locked ? "locked" : "unlocked"]
- Maintenance panel is [open ? "opened" : "closed"]
"}, + Панель управления Хонкоматической Клоуновой Единицей v1.0.7

+ Состояние: []
+ Управление поведением [locked ? "заблокировано" : "разблокировано"]
+ Панель технического обслуживания [open ? "открыта" : "закрыта"]
"}, - "[on ? "On" : "Off"]") + "[on ? "Включён" : "Выключен"]") if(!locked || issilicon(user) || user.can_admin_interact()) - dat += "Auto Patrol [auto_patrol ? "On" : "Off"]
" + dat += "Режим патрулирования: [auto_patrol ? "Да" : "Нет"]
" return dat @@ -118,22 +126,20 @@ ..() if(emagged == 2) if(user) - to_chat(user, span_warning("You short out [src]'s target assessment circuits. It gives out an evil laugh!!")) + to_chat(user, span_warning("Вы замыкаете микросхемы системы целеуказания [declent_ru(GENITIVE)]. [capitalize(declent_ru(NOMINATIVE))] злобно смеётся!")) oldtarget_name = user.name - audible_message(span_danger("[src] gives out an evil laugh!")) + audible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] злобно смеётся!")) playsound(src, 'sound/machines/honkbot_evil_laugh.ogg', 75, TRUE, -1) // evil laughter update_icon() -/mob/living/simple_animal/bot/honkbot/bullet_act(obj/item/projectile/Proj) - if((istype(Proj,/obj/item/projectile/beam)) || (istype(Proj,/obj/item/projectile/bullet) && (Proj.damage_type == BURN))||(Proj.damage_type == BRUTE) && (!Proj.nodamage && Proj.damage < health && ishuman(Proj.firer))) +/mob/living/simple_animal/bot/honkbot/bullet_act(obj/projectile/Proj) + if((istype(Proj,/obj/projectile/beam)) || (istype(Proj,/obj/projectile/bullet) && (Proj.damage_type == BURN))||(Proj.damage_type == BRUTE) && (!Proj.nodamage && Proj.damage < health && ishuman(Proj.firer))) retaliate(Proj.firer) ..() -/mob/living/simple_animal/bot/honkbot/UnarmedAttack(atom/A) - if(!on || !can_unarmed_attack()) - return +/mob/living/simple_animal/bot/honkbot/OnUnarmedAttack(atom/A) if(iscarbon(A)) var/mob/living/carbon/C = A if(emagged <= 1) @@ -205,8 +211,8 @@ threatlevel = 6 // will never let you go addtimer(VARSET_CALLBACK(src, spam_flag, FALSE), cooldowntime) add_attack_logs(src, C, "honked by [src]") - C.visible_message("[src] has honked [C]!",\ - "[src] has honked you!") + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] хонкнул [C]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] хонкнул вас!")) else C.Stuttering(40 SECONDS) C.Stun(20 SECONDS) @@ -295,8 +301,8 @@ target = C oldtarget_name = C.name bike_horn() - speak("Honk!") - visible_message("[src] starts chasing [C.name]!") + speak("Хонк!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] начинает гнаться за [C.name]!") mode = BOT_HUNT INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) break @@ -309,7 +315,7 @@ /mob/living/simple_animal/bot/honkbot/explode() //doesn't drop cardboard nor its assembly, since its a very frail material. SSmove_manager.stop_looping(src) - visible_message(span_boldannounceic("[src] blows apart!")) + visible_message(span_userdanger("[capitalize(declent_ru(NOMINATIVE))] разлетается на части!")) var/turf/Tsec = get_turf(src) new /obj/item/bikehorn(Tsec) new /obj/item/assembly/prox_sensor(Tsec) @@ -336,14 +342,14 @@ return arrived.visible_message(span_warning("[pick( \ - "[arrived] dives out of [src]'s way!", \ - "[arrived] stumbles over [src]!", \ - "[arrived] jumps out of [src]'s path!", \ - "[arrived] trips over [src] and falls!", \ - "[arrived] topples over [src]!", \ - "[arrived] leaps out of [src]'s way!")]")) + "[arrived] спотыка[pluralize_ru(arrived.gender, "ет", "ют")]ся об [declent_ru(GENITIVE)]!", \ + "[arrived] опрокидыва[pluralize_ru(arrived.gender, "ет", "ют")]ся на [declent_ru(GENITIVE)]!", \ + "[arrived] отлета[pluralize_ru(arrived.gender, "ет", "ют")] с пути [declent_ru(GENITIVE)]!", \ + "[capitalize(declent_ru(NOMINATIVE))] сбивает [arrived]!", \ + "[capitalize(declent_ru(NOMINATIVE))] влетает в [arrived], заставляя [genderize_ru(arrived.gender, "его", "её", "его", "их")] упасть!", \ + "[capitalize(declent_ru(NOMINATIVE))] опрокидывает [arrived]!")]")) arrived.Weaken(10 SECONDS) if(!client) - INVOKE_ASYNC(src, PROC_REF(speak), "honk") + INVOKE_ASYNC(src, PROC_REF(speak), "хонк!") sensor_blink() diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index c655f81514fe..6aa3304f30fe 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -1,7 +1,15 @@ //Medbot /mob/living/simple_animal/bot/medbot name = "\improper Medibot" - desc = "A little medical robot. He looks somewhat underwhelmed." + desc = "Маленький медицинский робот. Выглядит несколько подавленным." + ru_names = list( + NOMINATIVE = "медбот", + GENITIVE = "медбота", + DATIVE = "медботу", + ACCUSATIVE = "медбота", + INSTRUMENTAL = "медботом", + PREPOSITIONAL = "медботе", + ) icon = 'icons/obj/aibots.dmi' icon_state = "medibot0" density = FALSE @@ -15,10 +23,10 @@ bot_type = MED_BOT bot_filter = RADIO_MEDBOT model = "Medibot" - bot_purpose = "seek out hurt crewmembers and ensure that they are healed" + bot_purpose = "найти раненых членов экипажа и проследить, чтобы они были исцелены" bot_core_type = /obj/machinery/bot_core/medbot window_id = "automed" - window_name = "Automatic Medical Unit v1.1" + window_name = "Автоматическая Медицинская Единица v1.1" path_image_color = "#DDDDFF" data_hud_type = DATA_HUD_MEDICAL_ADVANCED @@ -85,7 +93,15 @@ /mob/living/simple_animal/bot/medbot/mysterious name = "\improper Mysterious Medibot" - desc = "International Medibot of mystery." + desc = "Загадочный медбот. От него веет тайнами..." + ru_names = list( + NOMINATIVE = "загадочный медбот", + GENITIVE = "загадочного медбота", + DATIVE = "загадочному медботу", + ACCUSATIVE = "загадочного медбота", + INSTRUMENTAL = "загадочным медботом", + PREPOSITIONAL = "загадочном медботе", + ) skin = "bezerk" treatment_oxy = "perfluorodecalin" treatment_brute = "bicaridine" @@ -94,7 +110,15 @@ /mob/living/simple_animal/bot/medbot/syndicate name = "Suspicious Medibot" - desc = "You'd better have insurance!" + desc = "Вам лучше быть застрахованным!" + ru_names = list( + NOMINATIVE = "подозрительный медбот", + GENITIVE = "подозрительного медбота", + DATIVE = "подозрительному медботу", + ACCUSATIVE = "подозрительного медбота", + INSTRUMENTAL = "подозрительным медботом", + PREPOSITIONAL = "подозрительном медботе", + ) skin = "bezerk" faction = list("syndicate") treatment_oxy = "perfluorodecalin" @@ -107,7 +131,6 @@ radio_channel = "Syndicate" radio_config = list("Common" = 1, "Medical" = 1, "Syndicate" = 1) - /mob/living/simple_animal/bot/medbot/syndicate/Initialize(mapload, new_skin) . = ..() Radio.syndiekey = new /obj/item/encryptionkey/syndicate @@ -172,26 +195,26 @@ /mob/living/simple_animal/bot/medbot/set_custom_texts() - text_hack = "You corrupt [name]'s reagent processor circuits." - text_dehack = "You reset [name]'s reagent processor circuits." - text_dehack_fail = "[name] seems damaged and does not respond to reprogramming!" + text_hack = "Вы взломали микросхемы синтезатора реагентов [declent_ru(GENITIVE)]." + text_dehack = "Вы восстановили микросхемы синтезатора реагентов [declent_ru(GENITIVE)]." + text_dehack_fail = "[capitalize(declent_ru(NOMINATIVE))] выглядит повреждённым и не может быть перепрограммирован!" /mob/living/simple_animal/bot/medbot/get_controls(mob/user) var/dat dat += hack(user) dat += showpai(user) - dat += "Medical Unit Controls v1.1

" - dat += "Status: [on ? "On" : "Off"]
" - dat += "Maintenance panel panel is [open ? "opened" : "closed"]
" - dat += "Beaker: " + dat += "Панель управления медицинским роботом v1.1

" + dat += "Состояние: [on ? "Включён" : "Выключен"]
" + dat += "Панель технического обслуживания [open ? "открыта" : "закрыта"]
" + dat += "Ёмкость: " if(reagent_glass) - dat += "Loaded \[[reagent_glass.reagents.total_volume]/[reagent_glass.reagents.maximum_volume]\]" + dat += "Установлена \[[reagent_glass.reagents.total_volume]/[reagent_glass.reagents.maximum_volume]\]" else - dat += "None Loaded" - dat += "
Behaviour controls are [locked ? "locked" : "unlocked"]
" + dat += "Не установлена" + dat += "
Управление поведением [locked ? "заблокировано" : "разблокировано"]
" if(!locked || issilicon(user) || user.can_admin_interact()) - dat += "Healing Threshold: " + dat += "Порог лечения: " dat += "-- " dat += "- " dat += "[heal_threshold] " @@ -199,20 +222,20 @@ dat += "++" dat += "
" - dat += "Injection Level: " + dat += "Объём инъекции: " dat += "- " dat += "[injection_amount] " dat += "+ " dat += "
" - dat += "Reagent Source: " - dat += "[use_beaker ? "Loaded Beaker (When available)" : "Internal Synthesizer"]
" + dat += "Источник реагентов: " + dat += "[use_beaker ? "Установленная ёмкость (Если доступна)" : "Внутренний синтезатор"]
" - dat += "Treat Viral Infections: [treat_virus ? "Yes" : "No"]
" - dat += "The speaker switch is [shut_up ? "off" : "on"]. Toggle
" - dat += "Critical Patient Alerts: [declare_crit ? "Yes" : "No"]
" - dat += "Patrol Station: [auto_patrol ? "Yes" : "No"]
" - dat += "Stationary Mode: [stationary_mode ? "Yes" : "No"]
" + dat += "Лечить вирусные инфекции: [treat_virus ? "Да" : "Нет"]
" + dat += "Динамик [shut_up ? "выключен" : "включён"]. Переключить
" + dat += "Оповещать о тяжелораненых: [declare_crit ? "Да" : "Нет"]
" + dat += "Режим патрулирования: [auto_patrol ? "Да" : "Нет"]
" + dat += "Стационарный режим: [stationary_mode ? "Да" : "Нет"]
" return dat @@ -241,8 +264,12 @@ use_beaker = !use_beaker else if(href_list["eject"] && (!isnull(reagent_glass))) - reagent_glass.forceMove(get_turf(src)) + if(ishuman(usr)) + usr.put_in_active_hand(reagent_glass, ignore_anim = FALSE) + else + reagent_glass.forceMove(get_turf(src)) reagent_glass = null + balloon_alert(usr, "ёмкость извлечена") else if(href_list["togglevoice"]) shut_up = !shut_up @@ -274,15 +301,15 @@ if(istype(I, /obj/item/reagent_containers/glass)) add_fingerprint(user) if(locked) - to_chat(user, span_warning("You cannot insert a beaker because the panel is locked!")) + balloon_alert(user, "техпанель заблокирована!") return ATTACK_CHAIN_PROCEED|ATTACK_CHAIN_NO_AFTERATTACK if(reagent_glass) - to_chat(user, span_warning("There is already a beaker loaded!")) + balloon_alert(user, "слот для ёмкости занят!") return ATTACK_CHAIN_PROCEED|ATTACK_CHAIN_NO_AFTERATTACK if(!user.drop_transfer_item_to_loc(I, src)) return ..() | ATTACK_CHAIN_NO_AFTERATTACK reagent_glass = I - to_chat(user, span_notice("You insert [I].")) + balloon_alert(user, "ёмкость установлена") show_controls(user) return ATTACK_CHAIN_PROCEED_SUCCESS|ATTACK_CHAIN_NO_AFTERATTACK @@ -298,8 +325,8 @@ if(emagged == 2) declare_crit = FALSE if(user) - to_chat(user, span_notice("You short out [src]'s reagent synthesis circuits.")) - audible_message(span_danger("[src] buzzes oddly!")) + to_chat(user, span_notice("Вы замыкаете микросхемы синтеза реагентов [declent_ru(GENITIVE)].")) + audible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] странно жужжит.")) flick("medibot_spark", src) if(user) oldpatient = user @@ -308,7 +335,7 @@ /mob/living/simple_animal/bot/medbot/process_scan(mob/living/carbon/human/H) if(buckled) if((last_warning + 30 SECONDS) < world.time) - speak(span_danger("Movement restrained! Unit on standby!")) + speak(span_danger("Движение невозможно! Режим ожидания.")) playsound(loc, 'sound/machines/buzz-two.ogg', 50, FALSE) last_warning = world.time return @@ -316,14 +343,15 @@ return if((H == oldpatient) && (world.time < last_found + 20 SECONDS)) + return if(assess_patient(H)) last_found = world.time if((last_newpatient_speak + 30 SECONDS) < world.time) //Don't spam these messages! - var/list/messagevoice = list("Hey, [H.name]! Hold on, I'm coming." = 'sound/voice/mcoming.ogg', - "Wait [H.name]! I want to help!" = 'sound/voice/mhelp.ogg', - "[H.name], you appear to be injured!" = 'sound/voice/minjured.ogg') + var/list/messagevoice = list("Эй, [H.name]! Держись, я уже иду!" = 'sound/voice/mcoming.ogg', + "Подожди, [H.name]! Я спешу на помощь!" = 'sound/voice/mhelp.ogg', + "[H.name], кажется, вы ранены!" = 'sound/voice/minjured.ogg') var/message = pick(messagevoice) speak(message) playsound(loc, messagevoice[message], 50, FALSE) @@ -344,11 +372,11 @@ if(!patient) if(!shut_up && prob(1)) - var/list/messagevoice = list("Radar, put a mask on!" = 'sound/voice/mradar.ogg', - "There's always a catch, and I'm the best there is." = 'sound/voice/mcatch.ogg', - "I knew it, I should've been a plastic surgeon." = 'sound/voice/msurgeon.ogg', - "What kind of medbay is this? Everyone's dropping like flies." = 'sound/voice/mflies.ogg', - "Delicious!" = 'sound/voice/mdelicious.ogg') + var/list/messagevoice = list("Ты, надень свою маску!" = 'sound/voice/mradar.ogg', + "Что-то всегда идёт не так, но я справлюсь." = 'sound/voice/mcatch.ogg', + "А ведь я мог бы стать пластическим хирургом..." = 'sound/voice/msurgeon.ogg', + "Что это за медотсек? Все мрут, словно мухи." = 'sound/voice/mflies.ogg', + "Замечательно!") var/message = pick(messagevoice) speak(message) playsound(loc, messagevoice[message], 50, FALSE) @@ -470,9 +498,7 @@ return TRUE //If a valid medicine option for the patient exists, they require treatment -/mob/living/simple_animal/bot/medbot/UnarmedAttack(atom/A) - if(!can_unarmed_attack()) - return +/mob/living/simple_animal/bot/medbot/OnUnarmedAttack(atom/A) if(iscarbon(A)) var/mob/living/carbon/C = A patient = C @@ -501,9 +527,9 @@ return if(C.stat == DEAD || HAS_TRAIT(C, TRAIT_FAKEDEATH)) - var/list/messagevoice = list("No! Stay with me!" = 'sound/voice/mno.ogg', - "Live, damnit! LIVE!" = 'sound/voice/mlive.ogg', - "I...I've never lost a patient before. Not today, I mean." = 'sound/voice/mlost.ogg') + var/list/messagevoice = list("Нет, не оставляй меня!" = 'sound/voice/mno.ogg', + "Живи, чёрт возьми! ЖИВИ!" = 'sound/voice/mlive.ogg', + "Я... Я ещё не терял пациента. Не сегодня, имею ввиду." = 'sound/voice/mlost.ogg') var/message = pick(messagevoice) speak(message) playsound(loc, messagevoice[message], 50, FALSE) @@ -521,9 +547,9 @@ reagent_id = select_medication(C, beaker_injection) if(!reagent_id) //If they don't need any of that they're probably cured! - var/list/messagevoice = list("All patched up!" = 'sound/voice/mpatchedup.ogg', - "An apple a day keeps me away." = 'sound/voice/mapple.ogg', - "Feel better soon!" = 'sound/voice/mfeelbetter.ogg') + var/list/messagevoice = list("Как новенький!" = 'sound/voice/mpatchedup.ogg', + "Кто яблоко в день съедает, у того [declent_ru(NOMINATIVE)] не бывает!" = 'sound/voice/mapple.ogg', + "Скоро полегчает!" = 'sound/voice/mfeelbetter.ogg') var/message = pick(messagevoice) speak(message) playsound(loc, messagevoice[message], 50, FALSE) @@ -533,8 +559,8 @@ if(!emagged && !hijacked && check_overdose(patient, reagent_id, injection_amount)) soft_reset() return - C.visible_message(span_danger("[src] is trying to inject [patient]!"), - span_userdanger("[src] is trying to inject you!")) + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] пытается сделать укол [patient]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] пытается сделать вам укол!")) addtimer(CALLBACK(src, PROC_REF(do_inject), C, !isnull(beaker_injection), reagent_id), 3 SECONDS) @@ -551,10 +577,10 @@ else patient.reagents.add_reagent(reagent_id, injection_amount) - C.visible_message(span_danger("[src] injects [patient] with its syringe!"), - span_userdanger("[src] injects you with its syringe!")) + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] сделал укол [patient] своим шприцем!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] сделал вам укол своим шприцем!")) else - visible_message("[src] retracts its syringe.") + visible_message("[capitalize(declent_ru(NOMINATIVE))] убирает свой шприц.") update_icon() soft_reset() @@ -572,7 +598,7 @@ /mob/living/simple_animal/bot/medbot/explode() on = FALSE - visible_message(span_userdanger("[src] blows apart!")) + visible_message(span_userdanger("[capitalize(declent_ru(NOMINATIVE))] разлетается на части!")) var/turf/Tsec = get_turf(src) if(drops_parts) @@ -623,7 +649,7 @@ if(syndicate_aligned) return var/area/location = get_area(src) - speak("Medical emergency! [crit_patient ? "[crit_patient]" : "A patient"] is in critical condition at [location]!", radio_channel) + speak("Нужна срочная медицинская помощь! [crit_patient ? "[crit_patient]" : "Пациент"] в тяжёлом состоянии в локации [location]!", radio_channel) declare_cooldown = TRUE spawn(200) //Twenty seconds declare_cooldown = FALSE diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 28ca08789e57..f4c7a5f3a42a 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -8,7 +8,15 @@ /mob/living/simple_animal/bot/mulebot name = "\improper MULEbot" - desc = "A Multiple Utility Load Effector bot." + desc = "Многофункциональный Узкоспециализированный Легкомоторный робот. Нет, это не просто случайные слова, подобранные для красивого написания. Честно." + ru_names = list( + NOMINATIVE = "МУЛбот", + GENITIVE = "МУЛбота", + DATIVE = "МУЛботу", + ACCUSATIVE = "МУЛбота", + INSTRUMENTAL = "МУЛботом", + PREPOSITIONAL = "МУЛботе", + ) icon_state = "mulebot0" density = TRUE move_resist = MOVE_FORCE_STRONG @@ -26,7 +34,7 @@ bot_type = MULE_BOT bot_filter = RADIO_MULEBOT model = "MULE" - bot_purpose = "deliver crates and other packages between departments, as requested" + bot_purpose = "доставлять ящики и другие посылки получателям" bot_core_type = /obj/machinery/bot_core/mulebot path_image_color = "#7F5200" @@ -108,26 +116,24 @@ . = ..() if(!ATTACK_CHAIN_CANCEL_CHECK(.) && knock_off(1 + I.force * 2)) user.visible_message( - span_danger("[user] has knocked [cached_load] off [src]!"), - span_danger("You have knocked [cached_load] off [src]!"), + span_danger("[user] столкнул [cached_load] с [declent_ru(GENITIVE)]!"), + span_danger("Вы столкнули [cached_load] с [declent_ru(GENITIVE)]!"), ) return . if(istype(I,/obj/item/stock_parts/cell)) add_fingerprint(user) if(!open) - to_chat(user, span_warning("You should open the maintenance panel first.")) + balloon_alert(user, "техпанель закрыта!") return ATTACK_CHAIN_PROCEED if(cell) - to_chat(user, span_warning("The [name] already has a power cell installed.")) + balloon_alert(user, "слот батареи занят!") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() cell = I - user.visible_message( - span_notice("[user] has inserted a cell into [src]."), - span_notice("You have inserted the new cell into [src]."), - ) + visible_message(span_notice("[user] вставил батарею в [declent_ru(GENITIVE)].")) + balloon_alert(user, "вы вставили батарею внутрь") update_controls() return ATTACK_CHAIN_BLOCKED_ALL @@ -135,8 +141,8 @@ . = ..() if(!ATTACK_CHAIN_CANCEL_CHECK(.) && knock_off(1 + I.force * 2)) user.visible_message( - span_danger("[user] has knocked off [cached_load] from [src]!"), - span_danger("You have knocked off [cached_load] from [src]!"), + span_danger("[user] столкнул [cached_load] с [declent_ru(GENITIVE)]!"), + span_danger("Вы столкнули [cached_load] с [declent_ru(GENITIVE)]!"), ) @@ -163,37 +169,31 @@ . = TRUE if(health >= maxHealth) add_fingerprint(user) - to_chat(user, span_warning("[src] does not need a repair!")) + balloon_alert(user, "ремонт не требуется") return . user.visible_message( - span_notice("[user] starts to repair [src]."), - span_notice("You start to repair [src]..."), + span_notice("[user] ремонтиру[pluralize_ru(user.gender, "ет", "ют")] [declent_ru(GENITIVE)]."), + span_notice("Вы ремонтируете [declent_ru(GENITIVE)].") ) if(!I.use_tool(src, user, 2 SECONDS, volume = I.tool_volume) || health >= maxHealth) return . heal_damage_type(25, BRUTE) - user.visible_message( - span_notice("[user] has repaired [src]."), - span_notice("You have repaired [src]."), - ) /mob/living/simple_animal/bot/mulebot/crowbar_act(mob/living/user, obj/item/I) . = TRUE if(!open) add_fingerprint(user) - to_chat(user, span_warning("You should open the maintenance panel first.")) + balloon_alert(user, "техпанель закрыта!") return . if(!cell) add_fingerprint(user) - to_chat(user, span_warning("The [name] has no power cell installed.")) + balloon_alert(user, "слот для батареи пуст!") return . if(!I.use_tool(src, user, volume = I.tool_volume)) return . - user.visible_message( - span_notice("[user] has removed the power cell from [src]."), - span_notice("You have removed the power cell from [src]."), - ) + visible_message(span_notice("[user] вынул батарею из [declent_ru(GENITIVE)].")) + balloon_alert(user, "батарея извлечена") cell.add_fingerprint(user) cell.forceMove(drop_location()) cell = null @@ -203,7 +203,7 @@ . = TRUE if(!open) add_fingerprint(user) - to_chat(user, span_warning("You should open the maintenance panel first.")) + balloon_alert(user, "техпанель закрыта!") return . if(!I.use_tool(src, user, volume = I.tool_volume)) return . @@ -214,7 +214,7 @@ . = TRUE if(!open) add_fingerprint(user) - to_chat(user, span_warning("You should open the maintenance panel first.")) + balloon_alert(user, "техпанель закрыта!") return . if(!I.use_tool(src, user, volume = I.tool_volume)) return . @@ -226,7 +226,7 @@ emagged = 1 if(!open) locked = !locked - to_chat(user, span_notice("You [locked ? "lock" : "unlock"] [src]'s controls!")) + balloon_alert(user, "техпанель [locked ? "заблокирована" : "разблокирована"]") flick("mulebot-emagged", src) playsound(loc, 'sound/effects/sparks1.ogg', 100, FALSE) @@ -261,12 +261,12 @@ wires.cut_random() -/mob/living/simple_animal/bot/mulebot/bullet_act(obj/item/projectile/Proj) +/mob/living/simple_animal/bot/mulebot/bullet_act(obj/projectile/Proj) if(..()) if(prob(50) && !isnull(load)) unload(0) if(prob(25)) - visible_message(span_danger("Something shorts out inside [src]!")) + visible_message(span_danger("Что-то замыкается внутри [declent_ru(GENITIVE)]!")) wires.cut_random() @@ -285,11 +285,11 @@ turn_off() else if(cell && !open) if(!turn_on()) - to_chat(usr, span_warning("You can't switch on [src]!")) + to_chat(usr, span_warning("Вы не можете включить !")) return else return - visible_message("[usr] switches [on ? "on" : "off"] [src].") + visible_message("[usr] [on ? "включает" : "выключает"] [declent_ru(GENITIVE)].") if("cellremove") if(open && cell && !usr.get_active_hand()) cell.update_icon() @@ -298,8 +298,8 @@ cell.add_fingerprint(usr) cell = null - usr.visible_message(span_notice("[usr] removes the power cell from [src]."), - span_notice("You remove the power cell from [src].")) + usr.visible_message(span_notice("[usr] вынул батарею из [declent_ru(GENITIVE)]."), + span_notice("Вы вынули батарею из [declent_ru(GENITIVE)].")) if("cellinsert") if(open && !cell) var/obj/item/stock_parts/cell/C = usr.get_active_hand() @@ -308,8 +308,8 @@ cell = C C.add_fingerprint(usr) - usr.visible_message(span_notice("[usr] inserts a power cell into [src]."), - span_notice("You insert the power cell into [src].")) + usr.visible_message(span_notice("[usr] вставил батарею в [declent_ru(GENITIVE)]."), + span_notice("Вы вставили батарею в [declent_ru(GENITIVE)].")) if("stop") if(mode >= BOT_DELIVER) bot_reset() @@ -320,15 +320,15 @@ if(mode == BOT_IDLE || mode == BOT_DELIVER) start_home() if("destination") - var/new_dest = input(usr, "Enter Destination:", name, destination) as null|anything in GLOB.deliverybeacontags + var/new_dest = input(usr, "Введите пункт назначения:", name, destination) as null|anything in GLOB.deliverybeacontags if(new_dest) set_destination(new_dest) if("setid") - var/new_id = tgui_input_text(usr, "Enter ID:", name, suffix, MAX_NAME_LEN) + var/new_id = tgui_input_text(usr, "Введите ID:", name, suffix, MAX_NAME_LEN) if(new_id) set_suffix(new_id) if("sethome") - var/new_home = input(usr, "Enter Home:", name, home_destination) as null|anything in GLOB.deliverybeacontags + var/new_home = input(usr, "Введите домашнюю точку:", name, home_destination) as null|anything in GLOB.deliverybeacontags if(new_home) home_destination = new_home if("unload") @@ -352,7 +352,7 @@ update_controls() return TRUE else - to_chat(user, span_danger("Access denied.")) + balloon_alert(user, "отказано в доступе!") return FALSE @@ -362,16 +362,16 @@ var/dat dat += hack(user) dat += showpai(user) - dat += "

Multiple Utility Load Effector Mk. V

" + dat += "

Многофункциональный Узкоспециализированный Легкомоторный робот v5.0

" dat += "ID: [suffix]
" - dat += "Power: [on ? "On" : "Off"]
" + dat += "Питание: [on ? "Включён" : "Выключен"]
" if(!open) - dat += "

Status

" + dat += "

Состояние

" dat += "
" switch(mode) if(BOT_IDLE) - dat += "Ready" + dat += "Готовность" if(BOT_DELIVER) dat += "[mode_name[BOT_DELIVER]]" if(BOT_GO_HOME) @@ -384,40 +384,40 @@ dat += "[mode_name[BOT_NO_ROUTE]]" dat += "
" - dat += "Current Load: [load ? load.name : "none"]
" - dat += "Destination: [!destination ? "none" : destination]
" - dat += "Power level: [cell ? cell.percent() : 0]%" + dat += "Груз [load ? load.name : "отсутствует"]
" + dat += "Пункт назначения: [!destination ? "отсутствует" : destination]
" + dat += "Заряд: [cell ? cell.percent() : 0]%" if(locked && !ai && !user.can_admin_interact()) - dat += " 
Controls are locked
Unlock Controls" + dat += " 
Управление поведением заблокировано
Разблокировать" else - dat += " 
Controls are unlocked
Lock Controls

" - - dat += "Toggle Power
" - dat += "Stop
" - dat += "Proceed
" - dat += "Return to Home
" - dat += "Set Destination
" - dat += "Set Bot ID
" - dat += "Set Home
" - dat += "Toggle Auto Return Home ([auto_return ? "On":"Off"])
" - dat += "Toggle Auto Pickup Crate ([auto_pickup ? "On":"Off"])
" - dat += "Toggle Delivery Reporting ([report_delivery ? "On" : "Off"])
" + dat += " 
Управление поведением разблокировано
Заблокировать

" + + dat += "Включить/Выключить
" + dat += "Остановиться
" + dat += "Продолжить движение
" + dat += "Возврат домой
" + dat += "Задать точку назначения
" + dat += "Задать ID роботу
" + dat += "Задать домашнюю точку
" + dat += "[auto_return ? "Включить":"Выключить"] автоматическое возвращение домой
" + dat += "[auto_return ? "Включить":"Выключить"] автоматический подбор ящиков
" + dat += "[auto_return ? "Включить":"Выключить"] автоматический отчёт о доставке
" if(load) - dat += "Unload Now
" - dat += "
The maintenance hatch is closed.
" + dat += "Разгрузиться
" + dat += "
Панель технического обслуживания закрыта
" else if(!ai) - dat += "
The maintenance hatch is open.

" - dat += "Power cell: " + dat += "
Панель технического обслуживания открыта

" + dat += "Батарея: " if(cell) - dat += "Installed
" + dat += "Установлена
" else - dat += "Removed
" + dat += "Отсутствует
" wires.Interact(user) else - dat += "
The bot is in maintenance mode and cannot be controlled.

" + dat += "
Робот в режиме технического обслуживания - управление поведением заблокировано

" return dat @@ -430,13 +430,13 @@ /mob/living/simple_animal/bot/mulebot/proc/buzz(type) switch(type) if(SIGH) - audible_message("[src] makes a sighing buzz.") + audible_message("[capitalize(declent_ru(NOMINATIVE))] разочарованно гудит.") playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, 0) if(ANNOYED) - audible_message("[src] makes an annoyed buzzing sound.") + audible_message("[capitalize(declent_ru(NOMINATIVE))] раздражённо жужжит.") playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0) if(DELIGHT) - audible_message("[src] makes a delighted ping!") + audible_message("[capitalize(declent_ru(NOMINATIVE))] восторженно звенит!") playsound(loc, 'sound/machines/ping.ogg', 50, 0) @@ -708,21 +708,21 @@ /mob/living/simple_animal/bot/mulebot/proc/at_target() if(!reached_target) radio_channel = "Supply" //Supply channel - audible_message("[src] makes a chiming sound!") + audible_message("[capitalize(declent_ru(NOMINATIVE))] громко звенит!") playsound(loc, 'sound/machines/chime.ogg', 50, 0) reached_target = 1 if(pathset) //The AI called us here, so notify it of our arrival. loaddir = dir //The MULE will attempt to load a crate in whatever direction the MULE is "facing". if(calling_ai) - to_chat(calling_ai, "[bicon(src)] [src] wirelessly plays a chiming sound!") + to_chat(calling_ai, "[bicon(src)] [capitalize(declent_ru(NOMINATIVE))] удалённо проигрывает звук звонка!") playsound(calling_ai, 'sound/machines/chime.ogg',40, 0) calling_ai = null radio_channel = "AI Private" //Report on AI Private instead if the AI is controlling us. if(load) // if loaded, unload at target if(report_delivery) - speak("Destination [destination] reached. Unloading [load].", radio_channel) + speak("Пункт назначения [destination] достигнут. Выгружаю [load].", radio_channel) if(istype(load, /obj/structure/closet/crate)) var/obj/structure/closet/crate/C = load C.notifyRecipient(destination) @@ -741,7 +741,7 @@ if(AM && AM.Adjacent(src)) load(AM) if(report_delivery) - speak("Now loading [load] at [get_area(src)].", radio_channel) + speak("Загружаю [load] в локации [get_area(src)].", radio_channel) // whatever happened, check to see if we return home if(auto_return && home_destination && destination != home_destination) @@ -787,14 +787,14 @@ // usually just bumps, but if avoidance disabled knock over mobs if(isrobot(bumped_living)) - visible_message(span_danger("[src] bumps into [bumped_living]!")) + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] врезается в [bumped_living]!")) return . if(paicard) return . add_attack_logs(src, bumped_living, "Knocked down") - visible_message(span_danger("[src] knocks over [bumped_living]!")) + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] сбивает [bumped_living]!")) bumped_living.Weaken(16 SECONDS) @@ -802,8 +802,8 @@ if(H.player_logged)//No running over SSD people return add_attack_logs(src, H, "Run over (DAMTYPE: [uppertext(BRUTE)])") - H.visible_message(span_danger("[src] drives over [H]!"), - span_userdanger("[src] drives over you!")) + H.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] переезжает [H]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] переезжает вас!")) playsound(loc, 'sound/effects/splat.ogg', 50, 1) var/damage = rand(5, 15) @@ -832,15 +832,15 @@ switch(command) if("start") if(load) - to_chat(src, span_warningbig("DELIVER [load] TO [destination]")) + to_chat(src, span_warningbig("ДОСТАВИТЬ [load] В ЛОКАЦИЮ [destination]")) else - to_chat(src, span_warningbig("PICK UP DELIVERY AT [destination]")) + to_chat(src, span_warningbig("ЗАБРАТЬ ГРУЗ В ЛОКАЦИИ [destination]")) if("unload", "load") if(load) - to_chat(src, span_warningbig("UNLOAD")) + to_chat(src, span_warningbig("ВЫГРУЗИТЬСЯ")) else - to_chat(src, span_warningbig("LOAD")) + to_chat(src, span_warningbig("ЗАГРУЗИТЬСЯ")) if("autoret", "autopick", "target") return else @@ -948,7 +948,7 @@ /mob/living/simple_animal/bot/mulebot/explode() - visible_message(span_userdanger("[src] blows apart!")) + visible_message(span_userdanger("[capitalize(declent_ru(NOMINATIVE))] разлетается на части!")) var/turf/Tsec = get_turf(src) new /obj/item/assembly/prox_sensor(Tsec) @@ -979,9 +979,7 @@ unload() -/mob/living/simple_animal/bot/mulebot/UnarmedAttack(atom/A) - if(!can_unarmed_attack()) - return +/mob/living/simple_animal/bot/mulebot/OnUnarmedAttack(atom/A) if(isturf(A) && isturf(loc) && loc.Adjacent(A) && load) unload(get_dir(loc, A)) else diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index bfd7453c1c06..1aca6d0479a2 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -3,7 +3,15 @@ /mob/living/simple_animal/bot/secbot name = "\improper Securitron" - desc = "A little security robot. He looks less than thrilled." + desc = "Маленький охранный робот. Он выглядит абсолютно спокойным." + ru_names = list( + NOMINATIVE = "охранный робот", + GENITIVE = "охранного робота", + DATIVE = "охранному роботу", + ACCUSATIVE = "охранного робота", + INSTRUMENTAL = "охранным роботом", + PREPOSITIONAL = "охранном роботе", + ) icon = 'icons/obj/aibots.dmi' icon_state = "secbot0" density = FALSE @@ -19,10 +27,10 @@ bot_type = SEC_BOT bot_filter = RADIO_SECBOT model = "Securitron" - bot_purpose = "seek out criminals, handcuff them, and report their location to security" + bot_purpose = "найти преступников, задержать их и доложить службе безопасности" bot_core_type = /obj/machinery/bot_core/secbot window_id = "autosec" - window_name = "Automatic Security Unit v1.6" + window_name = "Автоматическая Охранная Единица v1.6" path_image_color = "#FF0000" data_hud_type = DATA_HUD_SECURITY_ADVANCED @@ -55,7 +63,15 @@ /mob/living/simple_animal/bot/secbot/beepsky name = "Officer Beepsky" - desc = "It's Officer Beepsky! Powered by a potato and a shot of whiskey." + desc = "Это Офицер Бипски! Работает с помощью картофеля и рюмки виски." + ru_names = list( + NOMINATIVE = "Офицер Бипски", + GENITIVE = "Офицера Бипски", + DATIVE = "Офицеру Бипски", + ACCUSATIVE = "Офицера Бипски", + INSTRUMENTAL = "Офицером Бипски", + PREPOSITIONAL = "Офицере Бипски", + ) idcheck = FALSE weaponscheck = FALSE auto_patrol = TRUE @@ -72,13 +88,29 @@ /mob/living/simple_animal/bot/secbot/pingsky name = "Officer Pingsky" - desc = "It's Officer Pingsky! Delegated to satellite guard duty for harbouring anti-human sentiment." + desc = "Это Офицер Пингски! Переведён на охрану спутника за разжигание античеловеческих настроений." + ru_names = list( + NOMINATIVE = "Офицер Пингски", + GENITIVE = "Офицера Пингски", + DATIVE = "Офицеру Пингски", + ACCUSATIVE = "Офицера Пингски", + INSTRUMENTAL = "Офицером Пингски", + PREPOSITIONAL = "Офицере Пингски", + ) radio_channel = "AI Private" /mob/living/simple_animal/bot/secbot/ofitser name = "Prison Ofitser" - desc = "It's Prison Ofitser! Powered by the tears and sweat of prisoners." + desc = "Это Офицер Тюремски! Работает с помощью крови, пота и слёз заключённых." + ru_names = list( + NOMINATIVE = "Офицер Тюремски", + GENITIVE = "Офицера Тюремски", + DATIVE = "Офицеру Тюремски", + ACCUSATIVE = "Офицера Тюремски", + INSTRUMENTAL = "Офицером Тюремски", + PREPOSITIONAL = "Офицере Тюремски", + ) idcheck = FALSE weaponscheck = TRUE auto_patrol = TRUE @@ -86,7 +118,15 @@ /mob/living/simple_animal/bot/secbot/buzzsky name = "Officer Buzzsky" - desc = "It's Officer Buzzsky! Rusted and falling apart, he seems less than thrilled with the crew for leaving him in his current state." + desc = "Это Офицер Баззски! Проржавевший и разваливающийся на части, он явно не в восторге от того, что экипаж оставил его в таком состоянии." + ru_names = list( + NOMINATIVE = "Офицер Баззски", + GENITIVE = "Офицера Баззски", + DATIVE = "Офицеру Баззски", + ACCUSATIVE = "Офицера Баззски", + INSTRUMENTAL = "Офицером Баззски", + PREPOSITIONAL = "Офицере Баззски", + ) base_icon = "rustbot" icon_state = "rustbot0" declare_arrests = FALSE @@ -97,6 +137,14 @@ /mob/living/simple_animal/bot/secbot/armsky name = "Sergeant-at-Armsky" + ru_names = list( + NOMINATIVE = "Офицер Арсеналски", + GENITIVE = "Офицера Арсеналски", + DATIVE = "Офицеру Арсеналски", + ACCUSATIVE = "Офицера Арсеналски", + INSTRUMENTAL = "Офицером Арсеналски", + PREPOSITIONAL = "Офицере Арсеналски", + ) health = 45 idcheck = TRUE arrest_type = TRUE @@ -106,6 +154,14 @@ /mob/living/simple_animal/bot/secbot/podsky name = "Officer Podsky" + ru_names = list( + NOMINATIVE = "Офицер Подски", + GENITIVE = "Офицера Подски", + DATIVE = "Офицеру Подски", + ACCUSATIVE = "Офицера Подски", + INSTRUMENTAL = "Офицером Подски", + PREPOSITIONAL = "Офицере Подски", + ) health = 45 idcheck = TRUE arrest_type = TRUE @@ -152,9 +208,9 @@ /mob/living/simple_animal/bot/secbot/set_custom_texts() - text_hack = "You overload [name]'s target identification system." - text_dehack = "You reboot [name] and restore the target identification." - text_dehack_fail = "[name] refuses to accept your authority!" + text_hack = "Вы взломали систему идентификации целей [declent_ru(GENITIVE)]." + text_dehack = "Вы восстановили систему идентификации целей [declent_ru(GENITIVE)]." + text_dehack_fail = "[capitalize(declent_ru(NOMINATIVE))] отказывается признавать вашу власть!" /mob/living/simple_animal/bot/secbot/show_controls(mob/M) @@ -192,7 +248,7 @@ if (..()) return if(topic_denied(usr)) - to_chat(usr, "[src]'s interface is not responding!") + to_chat(usr, span_warning("Интерфейс [declent_ru(GENITIVE)] не отвечает!")) return add_fingerprint(usr) . = TRUE @@ -251,24 +307,22 @@ ..() if(emagged == 2) if(user) - to_chat(user, span_danger("You short out [src]'s target assessment circuits.")) + to_chat(user, span_danger("Вы замыкаете микросхемы системы целеуказания [declent_ru(GENITIVE)].")) oldtarget_name = user.name - audible_message(span_danger("[src] buzzes oddly!")) + audible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] странно жужжит!")) declare_arrests = FALSE icon_state = "[base_icon][on]" -/mob/living/simple_animal/bot/secbot/bullet_act(obj/item/projectile/Proj) - if(istype(Proj ,/obj/item/projectile/beam) || istype(Proj,/obj/item/projectile/bullet)) +/mob/living/simple_animal/bot/secbot/bullet_act(obj/projectile/Proj) + if(istype(Proj ,/obj/projectile/beam) || istype(Proj,/obj/projectile/bullet)) if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)) if(!Proj.nodamage && Proj.damage < src.health) retaliate(Proj.firer) ..() -/mob/living/simple_animal/bot/secbot/UnarmedAttack(atom/A) - if(!on || !can_unarmed_attack()) - return +/mob/living/simple_animal/bot/secbot/OnUnarmedAttack(atom/A) if(iscarbon(A)) var/mob/living/carbon/C = A if((C.staminaloss < 110 || arrest_type) && !baton_delayed) @@ -291,8 +345,8 @@ /mob/living/simple_animal/bot/secbot/proc/cuff(mob/living/carbon/C) mode = BOT_ARREST playsound(loc, 'sound/weapons/cablecuff.ogg', 30, TRUE, -2) - C.visible_message(span_danger("[src] is trying to put zipties on [C]!"), - span_userdanger("[src] is trying to put zipties on you!")) + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] начинает надевать стяжки на [C]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] пытается надеть на вас стяжки!")) addtimer(CALLBACK(src, PROC_REF(cuff_callback), C), 6 SECONDS) @@ -304,6 +358,8 @@ return C.apply_restraints(new /obj/item/restraints/handcuffs/cable/zipties/used(null), ITEM_SLOT_HANDCUFFED, TRUE) + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] надел стяжки на [C]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] надел на вас стяжки!")) playsound(loc, pick('sound/voice/bgod.ogg', 'sound/voice/biamthelaw.ogg', 'sound/voice/bsecureday.ogg', 'sound/voice/bradio.ogg', 'sound/voice/binsult.ogg', 'sound/voice/bcreep.ogg'), 50, 0) back_to_idle() @@ -328,11 +384,11 @@ if(declare_arrests) var/area/location = get_area(src) if(!speak_cooldown) - speak("[arrest_type ? "Detaining" : "Arresting"] level [threat] scumbag [C] in [location].", radio_channel) + speak("[arrest_type ? "Удерживаю" : "Задерживаю"] подонка по имени [C] в локации [location]. Уровень опасности - [threat].", radio_channel) speak_cooldown = TRUE addtimer(VARSET_CALLBACK(src, speak_cooldown, FALSE), SPEAK_COOLDOWN) - C.visible_message(span_danger("[src] has [harmbaton ? "beaten" : "stunned"] [C]!"), - span_userdanger("[src] has [harmbaton ? "beaten" : "stunned"] you!")) + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] [harmbaton ? "ударил" : "оглушил"] [C]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] [harmbaton ? "ударил" : "оглушил"] вас!")) /mob/living/simple_animal/bot/secbot/Life(seconds, times_fired) @@ -483,9 +539,9 @@ else if(threatlevel >= 4) target = C oldtarget_name = C.name - speak("Level [threatlevel] infraction alert!") + speak("Вижу преступника! Уровень опасности - [threatlevel]!") playsound(loc, pick('sound/voice/bcriminal.ogg', 'sound/voice/bjustice.ogg', 'sound/voice/bfreeze.ogg'), 50, 0) - visible_message("[src] points at [C.name]!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] указывает на [C.name]!") mode = BOT_HUNT INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) break @@ -501,7 +557,7 @@ /mob/living/simple_animal/bot/secbot/explode() SSmove_manager.stop_looping(src) - visible_message("[src] blows apart!") + visible_message(span_userdanger("[capitalize(declent_ru(NOMINATIVE))] разлетается на части!")) var/turf/Tsec = get_turf(src) var/obj/item/secbot_assembly/Sa = new /obj/item/secbot_assembly(Tsec) Sa.build_step = 1 @@ -534,12 +590,12 @@ return arrived.visible_message(span_warning("[pick( \ - "[arrived] dives out of [src]'s way!", \ - "[arrived] stumbles over [src]!", \ - "[arrived] jumps out of [src]'s path!", \ - "[arrived] trips over [src] and falls!", \ - "[arrived] topples over [src]!", \ - "[arrived] leaps out of [src]'s way!")]")) + "[arrived] спотыка[pluralize_ru(arrived.gender, "ет", "ют")]ся об [declent_ru(GENITIVE)]!", \ + "[arrived] опрокидыва[pluralize_ru(arrived.gender, "ет", "ют")]ся на [declent_ru(GENITIVE)]!", \ + "[arrived] отлета[pluralize_ru(arrived.gender, "ет", "ют")] с пути [declent_ru(GENITIVE)]!", \ + "[capitalize(declent_ru(NOMINATIVE))] сбивает [arrived]!", \ + "[capitalize(declent_ru(NOMINATIVE))] влетает в [arrived], заставляя [genderize_ru(arrived.gender, "его", "её", "его", "их")] упасть!", \ + "[capitalize(declent_ru(NOMINATIVE))] опрокидывает [arrived]!")]")) arrived.Weaken(4 SECONDS) diff --git a/code/modules/mob/living/simple_animal/bot/syndicate.dm b/code/modules/mob/living/simple_animal/bot/syndicate.dm index b26619937d0d..460483c7040a 100644 --- a/code/modules/mob/living/simple_animal/bot/syndicate.dm +++ b/code/modules/mob/living/simple_animal/bot/syndicate.dm @@ -1,7 +1,15 @@ /mob/living/simple_animal/bot/ed209/syndicate name = "Syndicate Sentry Bot" - desc = "A syndicate security bot." + desc = "Охранный робот Синдиката." + ru_names = list( + NOMINATIVE = "робот-часовой Синдиката", + GENITIVE = "робота-часового Синдиката", + DATIVE = "роботу-часовому Синдиката", + ACCUSATIVE = "робота-часового Синдиката", + INSTRUMENTAL = "роботом-часовым Синдиката", + PREPOSITIONAL = "роботе-часовом Синдиката", + ) model = "Guardian" icon = 'icons/obj/mecha/mecha.dmi' icon_state = "darkgygax" @@ -17,7 +25,7 @@ shoot_sound = 'sound/weapons/wave.ogg' anchored = TRUE window_id = "syndiebot" - window_name = "Syndicate Bot Interface" + window_name = "Интерфейс Часового Робота Синдиката" var/turf/saved_turf var/stepsound = 'sound/mecha/mechstep.ogg' var/area/syndicate_depot/core/depotarea @@ -54,7 +62,7 @@ /mob/living/simple_animal/bot/ed209/syndicate/ui_interact(mob/user, datum/tgui/ui = null) - to_chat(user, span_warning("[src] has no accessible control panel!")) + balloon_alert(user, "панель управления отсутствует!") return @@ -79,18 +87,18 @@ /mob/living/simple_animal/bot/ed209/syndicate/emag_act(mob/user) if(user) - to_chat(user, span_warning("[src] has no card reader slot!")) + balloon_alert(user, "сканер ID-карт отсутствует!") /mob/living/simple_animal/bot/ed209/syndicate/ed209_ai() var/turf/current_turf = get_turf(src) if(saved_turf && current_turf != saved_turf) playsound(loc, stepsound, 40, TRUE) - if(spawn_turf && !atoms_share_level(src, spawn_turf)) - raise_alert("[src] lost in space.") + if(spawn_turf && !are_zs_connected(src, spawn_turf)) + raise_alert("[capitalize(declent_ru(NOMINATIVE))] потерялся в пространстве.") raised_alert = FALSE - raise_alert("[src] activated self-destruct.") - qdel(src) + raise_alert("[capitalize(declent_ru(NOMINATIVE))] активировал протокол само-уничтожения.") + explode() saved_turf = current_turf switch(mode) if(BOT_IDLE) @@ -167,7 +175,7 @@ if(lastfired && world.time - lastfired < shot_delay) return lastfired = world.time - var/obj/item/projectile/P = new projectile(loc) + var/obj/projectile/P = new projectile(loc) playsound(loc, shoot_sound, 100, 1) P.current = loc P.starting = loc @@ -183,28 +191,26 @@ if(depotarea) depotarea.list_remove(src, depotarea.guard_list) SSmove_manager.stop_looping(src) - visible_message(span_userdanger("[src] blows apart!")) + visible_message(span_userdanger("[capitalize(declent_ru(NOMINATIVE))] разлетается на части!")) do_sparks(3, 1, src) new /obj/effect/decal/cleanable/blood/oil(loc) var/obj/structure/mecha_wreckage/gygax/dark/wreck = new /obj/structure/mecha_wreckage/gygax/dark(loc) wreck.name = "sentry bot wreckage" - raise_alert("[src] destroyed.") + raise_alert("[capitalize(declent_ru(NOMINATIVE))] уничтожен.") qdel(src) /mob/living/simple_animal/bot/ed209/syndicate/set_weapon() - projectile = /obj/item/projectile/bullet/a40mm + projectile = /obj/projectile/bullet/a40mm /mob/living/simple_animal/bot/ed209/syndicate/emp_act(severity) return -/mob/living/simple_animal/bot/ed209/syndicate/UnarmedAttack(atom/A) - if(!on || !can_unarmed_attack()) - return - shootAt(A) +/mob/living/simple_animal/bot/ed209/syndicate/OnUnarmedAttack(atom/A) + return shootAt(A) /mob/living/simple_animal/bot/ed209/syndicate/start_cuffing(mob/living/carbon/C) diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index c33d9aba886a..f29190349ab3 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -47,7 +47,7 @@ for(var/spell in construct_spells) AddSpell(new spell(null)) - set_light(2, 3, l_color = SSticker.cultdat ? SSticker.cultdat.construct_glow : LIGHT_COLOR_BLOOD_MAGIC) + set_light_range_power_color(2, 3, SSticker.cultdat ? SSticker.cultdat.construct_glow : LIGHT_COLOR_BLOOD_MAGIC) /mob/living/simple_animal/hostile/construct/Initialize(mapload) . = ..() @@ -127,19 +127,21 @@ force_threshold = 11 playstyle_string = "You are a Juggernaut. Though slow, your shell can withstand extreme punishment, \ create shield walls, rip apart enemies and walls alike, and even deflect energy weapons." + hud_type = /datum/hud/construct/armoured /mob/living/simple_animal/hostile/construct/armoured/hostile //actually hostile, will move around, hit things AIStatus = AI_ON environment_smash = 1 //only token destruction, don't smash the cult wall NO STOP -/mob/living/simple_animal/hostile/construct/armoured/bullet_act(var/obj/item/projectile/P) +/mob/living/simple_animal/hostile/construct/armoured/bullet_act(var/obj/projectile/P) if(P.is_reflectable(REFLECTABILITY_ENERGY)) var/reflectchance = 80 - round(P.damage/3) if(prob(reflectchance)) if((P.damage_type == BRUTE || P.damage_type == BURN)) adjustBruteLoss(P.damage * 0.5) - visible_message("The [P.name] gets reflected by [src]'s shell!", \ - "The [P.name] gets reflected by [src]'s shell!") + visible_message(span_danger("The [P.name] gets reflected by [src]'s shell!"), \ + span_userdanger("The [P.name] gets reflected by [src]'s shell!"), + projectile_message = TRUE) P.reflect_back(src, list(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)) @@ -177,6 +179,7 @@ retreat_distance = 2 //AI wraiths will move in and out of combat playstyle_string = "You are a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls." tts_seed = "Kelthuzad" + hud_type = /datum/hud/construct/wraith /mob/living/simple_animal/hostile/construct/wraith/hostile //actually hostile, will move around, hit things AIStatus = AI_ON @@ -228,6 +231,7 @@ use magic missile, repair allied constructs (by clicking on them), \ and, most important of all, create new constructs by producing soulstones to capture souls, \ and shells to place those soulstones into." + hud_type = /datum/hud/construct/builder /mob/living/simple_animal/hostile/construct/builder/Found(atom/A) //what have we found here? @@ -309,6 +313,7 @@ attack_sound = 'sound/weapons/punch4.ogg' force_threshold = 11 construct_type = "behemoth" + hud_type = /datum/hud/construct/armoured var/energy = 0 var/max_energy = 1000 @@ -341,6 +346,7 @@ retreat_distance = 2 //AI harvesters will move in and out of combat, like wraiths, but shittier playstyle_string = "You are a Harvester. You are not strong, but your powers of domination will assist you in your role: \ Bring those who still cling to this world of illusion back to the master so they may know Truth." + hud_type = /datum/hud/construct/harvester /mob/living/simple_animal/hostile/construct/harvester/Process_Spacemove(movement_dir = NONE, continuous_move = FALSE) diff --git a/code/modules/mob/living/simple_animal/damage_procs.dm b/code/modules/mob/living/simple_animal/damage_procs.dm index bd09f332d625..6f1f357b069d 100644 --- a/code/modules/mob/living/simple_animal/damage_procs.dm +++ b/code/modules/mob/living/simple_animal/damage_procs.dm @@ -52,6 +52,33 @@ * * Returns STATUS_UPDATE_HEALTH if any changes were made, STATUS_UPDATE_NONE otherwise */ +/mob/living/simple_animal/proc/setDamage(amount, updating_health = TRUE) + if(HAS_TRAIT(src, TRAIT_GODMODE)) + var/oldbruteloss = bruteloss + bruteloss = 0 + if(oldbruteloss != 0) + updatehealth("setDamage") + return STATUS_UPDATE_NONE + var/oldbruteloss = bruteloss + bruteloss = clamp(round(amount, DAMAGE_PRECISION), 0, maxHealth) + if(oldbruteloss == bruteloss) + updating_health = FALSE + . = STATUS_UPDATE_NONE + else + . = STATUS_UPDATE_HEALTH + if(updating_health) + updatehealth("setDamage") + +/** + * Proc-setter for health of simple mobs. + * Any passed amount will be converted to bruteloss calculated from (maxHealth - amount). No resists will be applied. + * + * Arguments: + * * amount - Amount of health to set. + * * updating_health - If TRUE calls update health on success. + * + * Returns STATUS_UPDATE_HEALTH if any changes were made, STATUS_UPDATE_NONE otherwise + */ /mob/living/simple_animal/proc/setHealth(amount, updating_health = TRUE) if(HAS_TRAIT(src, TRAIT_GODMODE)) var/oldbruteloss = bruteloss @@ -60,7 +87,7 @@ updatehealth("setHealth") return STATUS_UPDATE_NONE var/oldbruteloss = bruteloss - bruteloss = clamp(round(amount, DAMAGE_PRECISION), 0, maxHealth) + bruteloss = clamp(round(maxHealth - amount, DAMAGE_PRECISION), 0, maxHealth) if(oldbruteloss == bruteloss) updating_health = FALSE . = STATUS_UPDATE_NONE @@ -120,7 +147,7 @@ /mob/living/simple_animal/setOxyLoss(amount, updating_health = TRUE) - return setHealth(amount, updating_health) + return setDamage(amount, updating_health) /mob/living/simple_animal/adjustToxLoss( @@ -134,7 +161,7 @@ /mob/living/simple_animal/setToxLoss(amount, updating_health = TRUE) - return setHealth(amount, updating_health) + return setDamage(amount, updating_health) /mob/living/simple_animal/adjustCloneLoss( @@ -148,7 +175,7 @@ /mob/living/simple_animal/setCloneLoss(amount, updating_health = TRUE) - return setHealth(amount, updating_health) + return setDamage(amount, updating_health) /mob/living/simple_animal/adjustStaminaLoss( @@ -162,6 +189,6 @@ /mob/living/simple_animal/setStaminaLoss(amount, updating_health = TRUE) - return setHealth(amount, updating_health) + return setDamage(amount, updating_health) diff --git a/code/modules/mob/living/simple_animal/friendly/animals_named.dm b/code/modules/mob/living/simple_animal/friendly/animals_named.dm index 67c95e0edfa8..cbb2f99c62cb 100644 --- a/code/modules/mob/living/simple_animal/friendly/animals_named.dm +++ b/code/modules/mob/living/simple_animal/friendly/animals_named.dm @@ -55,20 +55,24 @@ /mob/living/simple_animal/pet/cat/white/Penny name = "Копейка" desc = "Любит таскать монетки и мелкие предметы. Успевайте прятать их!" + icon_state = "penny" unique_pet = TRUE gold_core_spawnable = NO_SPAWN resting = TRUE + gender = FEMALE + tts_seed = "Widowmaker" /mob/living/simple_animal/pet/cat/birman/Crusher name = "Бедокур" //Не цель для воров desc = "Любит крушить всё что не прикручено. Нужно вовремя прибираться." + icon_state = "crusher" unique_pet = TRUE gold_core_spawnable = NO_SPAWN resting = TRUE /mob/living/simple_animal/mouse/hamster/Representative name = "Представитель Алексей" - desc = "Представитель федерации хомяков. Проявите уважение при его виде, ведь он с позитивным исходом решил немало дипломатических вопросов между федерацией мышей, республикой крыс и корпорацией Нанотрейзен. Да и кто вообще хомяка так назвал?!" + desc = "Представитель федерации хомяков. Проявите уважение при его виде, ведь он с позитивным исходом решил немало дипломатических вопросов между федерацией мышей, республикой крыс и корпорацией НаноТрейзен. Да и кто вообще хомяка так назвал?!" icon_state = "hamster_rep" icon_living = "hamster_rep" icon_dead = "hamster_rep_dead" diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm index 93105a1f791c..6d35fb24ee03 100644 --- a/code/modules/mob/living/simple_animal/friendly/crab.dm +++ b/code/modules/mob/living/simple_animal/friendly/crab.dm @@ -1,22 +1,30 @@ //Look Sir, free crabs! /mob/living/simple_animal/crab name = "crab" - desc = "A hard-shelled crustacean. Seems quite content to lounge around all the time." + desc = "Небольшое ракообразное с твёрдым панцирем. Похоже, что ему нравится шляться без дела." + ru_names = list( + NOMINATIVE = "краб", + GENITIVE = "краба", + DATIVE = "крабу", + ACCUSATIVE = "краба", + INSTRUMENTAL = "крабом", + PREPOSITIONAL = "крабе" + ) icon_state = "crab" icon_living = "crab" icon_dead = "crab_dead" - speak_emote = list("clicks") - emote_hear = list("clicks") - emote_see = list("clacks") + speak_emote = list("щёлкает") + emote_hear = list("цокает клешнями") + emote_see = list("клацает клешнями") death_sound = 'sound/creatures/crack_death2.ogg' speak_chance = 1 turns_per_move = 5 butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 1) - response_help = "pets" - response_disarm = "gently pushes aside" - response_harm = "stomps" + response_help = "гладит" + response_disarm = "отталкивает" + response_harm = "топчет" stop_automated_movement = 1 - friendly = "pinches" + friendly = "щипает" ventcrawler_trait = TRAIT_VENTCRAWLER_ALWAYS can_hide = TRUE pass_door_while_hidden = TRUE @@ -28,8 +36,16 @@ /mob/living/simple_animal/crab/royal - name = "королевский краб" + name = "royal crab" desc = "Величественный королевский краб." + ru_names = list( + NOMINATIVE = "королевский краб", + GENITIVE = "королевского краба", + DATIVE = "королевскому крабу", + ACCUSATIVE = "королевского краба", + INSTRUMENTAL = "королевским крабом", + PREPOSITIONAL = "королевском крабе" + ) icon_state = "royalcrab" icon_living = "royalcrab" icon_dead = "royalcrab_dead" @@ -40,23 +56,40 @@ maxHealth = 50 butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 3) + //COFFEE! SQUEEEEEEEEE! /mob/living/simple_animal/crab/Coffee name = "Coffee" - real_name = "Coffee" + real_name = "Коффи" desc = "Любитель потягать топливные баки и штангу. Коффи? Кофе?" + ru_names = list( + NOMINATIVE = "Коффи", + GENITIVE = "Коффи", + DATIVE = "Коффи", + ACCUSATIVE = "Коффи", + INSTRUMENTAL = "Коффи", + PREPOSITIONAL = "Коффи" + ) gold_core_spawnable = NO_SPAWN unique_pet = TRUE /mob/living/simple_animal/crab/evil - name = "Evil Crab" - real_name = "Evil Crab" - desc = "Unnerving, isn't it? It has to be planning something nefarious..." + name = "evil crab" + real_name = "Злой краб" + desc = "Жуткий, да? Похоже, он что-то замышляет..." + ru_names = list( + NOMINATIVE = "злой краб", + GENITIVE = "злого краба", + DATIVE = "злому крабу", + ACCUSATIVE = "злого краба", + INSTRUMENTAL = "злым крабом", + PREPOSITIONAL = "злом крабе" + ) icon_state = "evilcrab" icon_living = "evilcrab" icon_dead = "evilcrab_dead" - response_help = "pokes" - response_disarm = "shoves" - response_harm = "stomps" + response_help = "гладит" + response_disarm = "отталкивает" + response_harm = "топчет" gold_core_spawnable = HOSTILE_SPAWN holder_type = /obj/item/holder/evilcrab diff --git a/code/modules/mob/living/simple_animal/friendly/diona.dm b/code/modules/mob/living/simple_animal/friendly/diona.dm index 188ed783e26d..81bfddd6c382 100644 --- a/code/modules/mob/living/simple_animal/friendly/diona.dm +++ b/code/modules/mob/living/simple_animal/friendly/diona.dm @@ -96,9 +96,7 @@ evolve_action.Grant(src) steal_blood_action.Grant(src) -/mob/living/simple_animal/diona/UnarmedAttack(atom/A) - if(!can_unarmed_attack()) - return +/mob/living/simple_animal/diona/OnUnarmedAttack(atom/A) if(isdiona(A) && (src in A.contents)) //can't attack your gestalt visible_message("[src] wiggles around a bit.") else diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 1b3978b82996..880bd85adb66 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -25,6 +25,7 @@ turns_per_move = 10 mob_size = MOB_SIZE_SMALL gold_core_spawnable = FRIENDLY_SPAWN + hud_type = /datum/hud/corgi var/bark_sound = list('sound/creatures/dog_bark1.ogg','sound/creatures/dog_bark2.ogg') //Used in emote. var/bark_emote = list("ла%(ет,ют)%.", "гавка%(ет,ют)%.") // used in emote. var/growl_sound = list('sound/creatures/dog_grawl1.ogg','sound/creatures/dog_grawl2.ogg') //Used in emote. @@ -299,6 +300,48 @@ back_icon = DF.get_overlay() add_overlay(back_icon) +/mob/living/simple_animal/pet/dog/corgi/deadchat_plays(mode = DEADCHAT_ANARCHY_MODE, cooldown = 12 SECONDS) + . = AddComponent(/datum/component/deadchat_control/cardinal_movement, mode, list( + "speak" = CALLBACK(src, PROC_REF(handle_automated_speech), TRUE), + "wear_hat" = CALLBACK(src, PROC_REF(find_new_hat)), + "drop_hat" = CALLBACK(src, PROC_REF(drop_hat)), + "spin" = CALLBACK(src, TYPE_PROC_REF(/mob, emote), "spin")), cooldown, CALLBACK(src, PROC_REF(end_dchat_plays))) + + if(. == COMPONENT_INCOMPATIBLE) + return + + stop_automated_movement = TRUE + +///Deadchat plays command that picks a new hat for Ian. +/mob/living/simple_animal/pet/dog/corgi/proc/find_new_hat() + if(!isturf(loc)) + return + var/list/possible_headwear = list() + for(var/obj/item/item in loc) + if(ispath(item.dog_fashion, /datum/dog_fashion/head)) + possible_headwear += item + if(!length(possible_headwear)) + for(var/obj/item/item in orange(1)) + if(ispath(item.dog_fashion, /datum/dog_fashion/head) && Adjacent(item)) + possible_headwear += item + if(!length(possible_headwear)) + return + if(inventory_head) + inventory_head.forceMove(drop_location()) + inventory_head = null + place_on_head(pick(possible_headwear)) + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] надева[pluralize_ru(gender, "ет", "ют")] [inventory_head.declent_ru(ACCUSATIVE)] на голову каким-то образом.")) + +///Deadchat plays command that drops the current hat off Ian. +/mob/living/simple_animal/pet/dog/corgi/proc/drop_hat() + if(!inventory_head) + return + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] энергично тряс[pluralize_ru(gender, "ёт", "ут")] головой, бросая [inventory_head.declent_ru(ACCUSATIVE)] на землю.")) + inventory_head.forceMove(drop_location()) + inventory_head = null + update_dog_fluff() + regenerate_icons() + //IAN! SQUEEEEEEEEE~ /mob/living/simple_animal/pet/dog/corgi/Ian name = "Ian" @@ -672,7 +715,7 @@ var/turf/U = get_turf(target) if(!T || !U) return - var/obj/item/projectile/beam/A = new /obj/item/projectile/beam(loc) + var/obj/projectile/beam/A = new /obj/projectile/beam(loc) A.icon = 'icons/effects/genetics.dmi' A.icon_state = "eyelasers" playsound(src.loc, 'sound/weapons/taser2.ogg', 75, 1) diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 0c5c67b0ac11..7e4d0412586a 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -438,7 +438,7 @@ GLOBAL_VAR_INIT(chicken_count, 0) speak = list("oink?","oink","OINK") speak_emote = list("хрюкает") tts_seed = "Anubarak" -// emote_hear = list("brays") +// emote_hear = list("ревёт") emote_see = list("перекатывается по земле") speak_chance = 1 turns_per_move = 5 @@ -495,7 +495,7 @@ GLOBAL_VAR_INIT(chicken_count, 0) speak = list("quack?","quack","QUACK") speak_emote = list("quacks") tts_seed = "pantheon" //Жи есть брат да, я гусь, до тебя доебусь. -// emote_hear = list("brays") +// emote_hear = list("ревёт") emote_see = list("хлопает крыльями") speak_chance = 1 turns_per_move = 5 @@ -534,16 +534,24 @@ GLOBAL_VAR_INIT(chicken_count, 0) ru_names = list(NOMINATIVE = "гусёнок", GENITIVE = "гусёнка", DATIVE = "гусёнку", ACCUSATIVE = "гусёнка", INSTRUMENTAL = "гусёнком", PREPOSITIONAL = "гусёнке") /mob/living/simple_animal/seal - name = "seal" - desc = "Красивый белый тюлень." + name = "white seal" + desc = "Красивый белый белёк." + ru_names = list( + NOMINATIVE = "белёк", + GENITIVE = "белька", + DATIVE = "бельку", + ACCUSATIVE = "белька", + INSTRUMENTAL = "бельком", + PREPOSITIONAL = "бельке" + ) icon_state = "seal" icon_living = "seal" icon_dead = "seal_dead" - speak = list("Urk?","urk","URK") - speak_emote = list("urks") //idk how to translate it... + speak = list("Барф?","Барф.","БАРФ!") + speak_emote = list("гавкает", "стонет") tts_seed = "Narrator" death_sound = 'sound/creatures/seal_death.ogg' -// emote_hear = list("brays") +// emote_hear = list("ревёт") emote_see = list("хлопает ластами") speak_chance = 1 turns_per_move = 5 @@ -559,19 +567,26 @@ GLOBAL_VAR_INIT(chicken_count, 0) gold_core_spawnable = FRIENDLY_SPAWN blood_volume = BLOOD_VOLUME_NORMAL footstep_type = FOOTSTEP_MOB_CLAW - ru_names = list(NOMINATIVE = "тюлень", GENITIVE = "тюленя", DATIVE = "тюленю", ACCUSATIVE = "тюленя", INSTRUMENTAL = "тюленем", PREPOSITIONAL = "тюлене") /mob/living/simple_animal/walrus name = "walrus" - desc = "A big brown walrus." + desc = "Большой коричневый морж." + ru_names = list( + NOMINATIVE = "морж", + GENITIVE = "моржа", + DATIVE = "моржу", + ACCUSATIVE = "моржа", + INSTRUMENTAL = "моржом", + PREPOSITIONAL = "морже" + ) icon_state = "walrus" icon_living = "walrus" icon_dead = "walrus_dead" - speak = list("Urk?","urk","URK") - speak_emote = list("urks") //idk how to translate it... + speak = list("Урррфф?","Урррфф.","Урррфф!") + speak_emote = list("рычит","гудит") tts_seed = "Tychus" death_sound = 'sound/creatures/seal_death.ogg' -// emote_hear = list("brays") +// emote_hear = list("ревёт") emote_see = list("хлопает ластами") speak_chance = 1 turns_per_move = 5 @@ -586,7 +601,6 @@ GLOBAL_VAR_INIT(chicken_count, 0) can_collar = 1 gold_core_spawnable = FRIENDLY_SPAWN blood_volume = BLOOD_VOLUME_NORMAL - ru_names = list(NOMINATIVE = "морж", GENITIVE = "моржа", DATIVE = "моржу", ACCUSATIVE = "моржа", INSTRUMENTAL = "моржом", PREPOSITIONAL = "морже") /obj/item/udder name = "udder" @@ -608,14 +622,14 @@ GLOBAL_VAR_INIT(chicken_count, 0) /obj/item/udder/proc/milkAnimal(obj/item/reagent_containers/glass/container, mob/user) if(!container.reagents) - user.balloon_alert(user, "неподходящая ёмкость!") + balloon_alert(user, "неподходящая ёмкость!") return FALSE if(container.reagents.total_volume >= container.volume) - user.balloon_alert(user, "ёмкость заполнена!") + balloon_alert(user, "ёмкость заполнена!") return FALSE var/transfered = reagents.trans_to(container, rand(5,10)) if(!transfered) - user.balloon_alert(user, "вымя сухое, подождите") + balloon_alert(user, "вымя сухое!") return FALSE user.visible_message( span_notice("[user] до[pluralize_ru(user.gender, "ит", "ят")] [declent_ru(ACCUSATIVE)]."), diff --git a/code/modules/mob/living/simple_animal/friendly/lizard.dm b/code/modules/mob/living/simple_animal/friendly/lizard.dm index 755b644ae38a..45ce25617dea 100644 --- a/code/modules/mob/living/simple_animal/friendly/lizard.dm +++ b/code/modules/mob/living/simple_animal/friendly/lizard.dm @@ -1,11 +1,19 @@ /mob/living/simple_animal/lizard - name = "Lizard" - desc = "A cute tiny lizard." - icon = 'icons/mob/critter.dmi' + name = "lizard" + desc = "Милая маленькая ящерица." + ru_names = list( + NOMINATIVE = "ящерица", + GENITIVE = "ящерицы", + DATIVE = "ящерице", + ACCUSATIVE = "ящерицу", + INSTRUMENTAL = "ящерицей", + PREPOSITIONAL = "ящерице" + ) icon_state = "lizard" icon_living = "lizard" icon_dead = "lizard_dead" - speak_emote = list("hisses") + icon_gib = "lizard_gib" + speak_emote = list("шипит") tts_seed = "Ladyvashj" death_sound = 'sound/creatures/lizard_death.ogg' health = 5 @@ -14,9 +22,9 @@ obj_damage = 0 melee_damage_lower = 1 melee_damage_upper = 2 - response_help = "pets" - response_disarm = "shoos" - response_harm = "stomps on" + response_help = "гладит" + response_disarm = "пинает" + response_harm = "топчет" ventcrawler_trait = TRAIT_VENTCRAWLER_ALWAYS density = FALSE pass_flags = PASSTABLE | PASSMOB @@ -40,9 +48,16 @@ return ..() /mob/living/simple_animal/lizard/axolotl - name = "Аксолотль" + name = "axolotl" desc = "Маленький милый аксолотль." - icon = 'icons/mob/animal.dmi' + ru_names = list( + NOMINATIVE = "аксолотль", + GENITIVE = "аксолотля", + DATIVE = "аксолотлю", + ACCUSATIVE = "аксолотля", + INSTRUMENTAL = "аксолотлем", + PREPOSITIONAL = "аксолотле" + ) icon_state = "axolotl" icon_living = "axolotl" icon_dead = "axolotl_dead" diff --git a/code/modules/mob/living/simple_animal/friendly/possum.dm b/code/modules/mob/living/simple_animal/friendly/possum.dm index ca36dedd63d9..8e3a6019feb5 100644 --- a/code/modules/mob/living/simple_animal/friendly/possum.dm +++ b/code/modules/mob/living/simple_animal/friendly/possum.dm @@ -71,7 +71,7 @@ /mob/living/simple_animal/possum/Poppy name = "Ключик" - desc = "Маленький работяга. Его жилетка подчеркивает его рабочие... лапы. Тот еще трудяга. Очень не любит ассистентов в инженерном отделе. И Полли. Интересно, почему?" + desc = "Маленький работяга. Его жилетка подчеркивает его рабочие... лапы. Тот ещё трудяга. Очень не любит ассистентов в инженерном отделе. И Полли. Интересно, почему?" icon_state = "possum_poppy" icon_living = "possum_poppy" icon_dead = "possum_poppy_dead" diff --git a/code/modules/mob/living/simple_animal/friendly/snail.dm b/code/modules/mob/living/simple_animal/friendly/snail.dm index 2a96ec9715c1..a26efdad15ab 100644 --- a/code/modules/mob/living/simple_animal/friendly/snail.dm +++ b/code/modules/mob/living/simple_animal/friendly/snail.dm @@ -1,19 +1,28 @@ /mob/living/simple_animal/snail name = "space snail" desc = "Маленькая космо-улиточка со своим космо-домиком. Прочная, тихая и медленная." + ru_names = list( + NOMINATIVE = "космо-улитка", + GENITIVE = "космо-улитки", + DATIVE = "космо-улитке", + ACCUSATIVE = "космо-улитку", + INSTRUMENTAL = "космо-улиткой", + PREPOSITIONAL = "космо-улитке" + ) + gender = FEMALE icon_state = "snail" icon_living = "snail" icon_dead = "snail_dead" - speak = list("Uhh.", "Hurrr.") + speak = list("Бхх.", "Бхухх.", "Бхххх.", "Бххуухх.") tts_seed = "Ladyvashj" health = 100 maxHealth = 100 speed = 10 attacktext = "толкает" death_sound = 'sound/creatures/crack_death1.ogg' - response_help = "pets" - response_disarm = "shoos" - response_harm = "stomps on" + response_help = "гладит" + response_disarm = "толкает" + response_harm = "топчет" ventcrawler_trait = TRAIT_VENTCRAWLER_ALWAYS density = FALSE pass_flags = PASSTABLE | PASSMOB @@ -52,7 +61,6 @@ reagents.remove_any(10) /mob/living/simple_animal/snail/lube - name = "space snail" desc = "Маленькая космо-улиточка со своим космо-домиком. Прочная, тихая и медленная. И очень склизкая." gold_core_spawnable = HOSTILE_SPAWN faction = list("slime", "hostile") @@ -64,23 +72,32 @@ reagents.remove_any(10) /mob/living/simple_animal/turtle - name = "черепаха" + name = "turtle" desc = "Большая космочерепаха. Прочная, тихая и медленная." + ru_names = list( + NOMINATIVE = "черепаха", + GENITIVE = "черепахи", + DATIVE = "черепахе", + ACCUSATIVE = "черепаху", + INSTRUMENTAL = "черепахой", + PREPOSITIONAL = "черепахе" + ) + gender = FEMALE icon = 'icons/mob/animal.dmi' icon_state = "yeeslow" icon_living = "yeeslow" icon_dead = "yeeslow_dead" icon_resting = "yeeslow_scared" - speak = list("Uhh.", "Hurrr.") + speak = list("Бухх.", "Хухх.") tts_seed = "Ladyvashj" health = 500 maxHealth = 500 speed = 20 attacktext = "толкает" death_sound = 'sound/creatures/crack_death1.ogg' - response_help = "pets" - response_disarm = "shoos" - response_harm = "stomps on" + response_help = "гладит" + response_disarm = "толкает" + response_harm = "топчет" density = TRUE mobility_flags = MOBILITY_FLAGS_REST_CAPABLE_DEFAULT pass_flags = PASSTABLE | PASSGRILLE diff --git a/code/modules/mob/living/simple_animal/gondolas/gondola.dm b/code/modules/mob/living/simple_animal/gondolas/gondola.dm new file mode 100644 index 000000000000..e12dbe4e15a1 --- /dev/null +++ b/code/modules/mob/living/simple_animal/gondolas/gondola.dm @@ -0,0 +1,74 @@ +#define GONDOLA_HEIGHT pick(list("gondola_body_long", "gondola_body_medium", "gondola_body_short")) +#define GONDOLA_COLOR pick(list("A87855", "915E48", "683E2C")) +#define GONDOLA_MOUSTACHE pick(list("gondola_moustache_large", "gondola_moustache_small")) +#define GONDOLA_EYES pick(list("gondola_eyes_close", "gondola_eyes_far")) + +/mob/living/simple_animal/pet/gondola + name = "gondola" + real_name = "gondola" + desc = "Гондола — бесшумный ходок. \ + Не имея рук, он воплощает даосский принцип у-вэй (недействие), а его улыбающееся \ + выражение лица показывает его полное и полное принятие мира таким, какой он есть." + icon = 'icons/mob/gondolas.dmi' + icon_state = "gondola" + icon_living = "gondola" + + maxHealth = 200 + health = 200 + faction = list("gandola") + response_help = "pets" + response_disarm = "bops" + response_harm = "kicks" + + //Gondolas aren't affected by cold. + unsuitable_atmos_damage = 0 + del_on_death = TRUE + + ///List of loot drops on death, since it deletes itself on death (like trooper). + loot = list( + /obj/effect/decal/cleanable/blood/gibs = 1, + ) + + ru_names = list( + NOMINATIVE = "гандола", + GENITIVE = "гандолы", + DATIVE = "гандоле", + ACCUSATIVE = "гандолу", + INSTRUMENTAL = "гандолой", + PREPOSITIONAL = "гандоле" + ) + + +/mob/living/simple_animal/pet/gondola/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_MUTE, INNATE_TRAIT) + create_gondola() + +/mob/living/simple_animal/pet/gondola/proc/create_gondola() + icon_state = null + icon_living = null + var/height = GONDOLA_HEIGHT + var/mutable_appearance/body_overlay = mutable_appearance(icon, height) + var/mutable_appearance/eyes_overlay = mutable_appearance(icon, GONDOLA_EYES) + var/mutable_appearance/moustache_overlay = mutable_appearance(icon, GONDOLA_MOUSTACHE) + body_overlay.color = ("#[GONDOLA_COLOR]") + + //Offset the face to match the Gondola's height. + switch(height) + if("gondola_body_medium") + eyes_overlay.pixel_y = -4 + moustache_overlay.pixel_y = -4 + if("gondola_body_short") + eyes_overlay.pixel_y = -8 + moustache_overlay.pixel_y = -8 + + cut_overlays(TRUE) + add_overlay(body_overlay) + add_overlay(eyes_overlay) + add_overlay(moustache_overlay) + + +#undef GONDOLA_HEIGHT +#undef GONDOLA_COLOR +#undef GONDOLA_MOUSTACHE +#undef GONDOLA_EYES diff --git a/code/modules/mob/living/simple_animal/gondolas/gondolapod.dm b/code/modules/mob/living/simple_animal/gondolas/gondolapod.dm new file mode 100644 index 000000000000..911db2864c75 --- /dev/null +++ b/code/modules/mob/living/simple_animal/gondolas/gondolapod.dm @@ -0,0 +1,95 @@ +/mob/living/simple_animal/pet/gondola/gondolapod + name = "gondola" + real_name = "gondola" + desc = "Бесшумный ходок. Кажется, это сотрудник агентства доставки." + icon = 'icons/obj/supplypods.dmi' + icon_state = "gondola" + icon_living = "gondola" + SET_BASE_PIXEL(-16, -5) //2x2 sprite + layer = TABLE_LAYER //so that deliveries dont appear underneath it + + ///Boolean on whether the pod is currently open, and should appear such. + var/opened = FALSE + ///The supply pod attached to the gondola, that actually holds the contents of our delivery. + var/obj/structure/closet/supplypod/centcompod/linked_pod + + ///Static list of actions the gondola is given on creation, and taken away when it successfully delivers. + var/static/list/gondola_delivering_actions = list( + /datum/action/innate/deliver_gondola_package, + /datum/action/innate/check_gondola_contents, + ) + +/mob/living/simple_animal/pet/gondola/gondolapod/Initialize(mapload, pod) + linked_pod = pod || new(src) + name = linked_pod.name + desc = linked_pod.desc + if(!linked_pod.stay_after_drop || !linked_pod.opened) + grant_actions_by_list(gondola_delivering_actions) + return ..() + +/mob/living/simple_animal/pet/gondola/gondolapod/death(gibbed) + QDEL_NULL(linked_pod) //Will cause the open() proc for the linked supplypod to be called with the "broken" parameter set to true, meaning that it will dump its contents on death + return ..() + +/mob/living/simple_animal/pet/gondola/gondolapod/create_gondola() + return + +/mob/living/simple_animal/pet/gondola/gondolapod/update_overlays() + . = ..() + if(opened) + . += "[icon_state]_open" + +/mob/living/simple_animal/pet/gondola/gondolapod/examine(mob/user) + . = ..() + if (contents.len) + . += span_notice("Похоже, посылка ещё не доставлена.") + else + . += span_notice("Судя по всему, доставку уже осуществили.") + +/mob/living/simple_animal/pet/gondola/gondolapod/setOpened() + opened = TRUE + layer = initial(layer) + update_appearance() + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/, setClosed)), 5 SECONDS) + +/mob/living/simple_animal/pet/gondola/gondolapod/setClosed() + opened = FALSE + layer = OBJ_LAYER + update_appearance() + +///Opens the gondola pod and delivers its package, one-time use as it removes all delivery-related actions. +/datum/action/innate/deliver_gondola_package + name = "Доставить" + desc = "Откройте хранилище и освободите все содержимое, хранящееся внутри." + button_icon_state = "arrow" + +/datum/action/innate/deliver_gondola_package/Trigger(left_click) + . = ..() + if(!.) + return + + var/mob/living/simple_animal/pet/gondola/gondolapod/gondola_owner = owner + gondola_owner.linked_pod.open_pod(gondola_owner, forced = TRUE) + for(var/datum/action/actions as anything in gondola_owner.actions) + if(actions.type in gondola_owner.gondola_delivering_actions) + actions.Remove(gondola_owner) + return TRUE + +///Checks the contents of the gondola and lets them know what they're holding. +/datum/action/innate/check_gondola_contents + name = "Проверить содержимое" + desc = "Посмотрите, сколько предметов вы сейчас держите в капсуле." + button_icon_state = "storage" + +/datum/action/innate/check_gondola_contents/Trigger(left_click) + . = ..() + if(!.) + return + + var/mob/living/simple_animal/pet/gondola/gondolapod/gondola_owner = owner + var/total = gondola_owner.contents.len + if (total) + to_chat(gondola_owner, span_notice("You detect [total] object\s within your incredibly vast belly.")) + else + to_chat(gondola_owner, span_notice("A closer look inside yourself reveals... nothing.")) + return TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 6bf47de8eae7..b0e936e7bc0f 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -74,7 +74,7 @@ ranged = 1 retreat_distance = 5 minimum_distance = 5 - projectiletype = /obj/item/projectile/neurotox + projectiletype = /obj/projectile/neurotox projectilesound = 'sound/weapons/pierce.ogg' @@ -92,7 +92,7 @@ minimum_distance = 5 move_to_delay = 4 butcher_results = list(/obj/item/reagent_containers/food/snacks/monstermeat/xenomeat= 4, /obj/item/stack/sheet/animalhide/xeno = 1) - projectiletype = /obj/item/projectile/neurotox + projectiletype = /obj/projectile/neurotox projectilesound = 'sound/weapons/pierce.ogg' status_flags = 0 var/sterile = 1 @@ -144,7 +144,7 @@ mob_size = MOB_SIZE_LARGE gold_core_spawnable = NO_SPAWN -/obj/item/projectile/neurotox +/obj/projectile/neurotox name = "neurotoxin" damage = 30 icon_state = "toxin" diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index 44a5af40f2f1..fec8fa967ce8 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -59,6 +59,7 @@ regenerate_icons() AddComponent(/datum/component/swarming) AddElement(/datum/element/simple_flying) + AddElement(/datum/element/reagent_attack/bee) /mob/living/simple_animal/hostile/poison/bees/ComponentInitialize() AddComponent( \ @@ -156,14 +157,6 @@ return //no don't attack the goddamm box else . = ..() - if(. && isliving(target) && (!client || a_intent == INTENT_HARM)) - var/mob/living/L = target - if(L.reagents) - if(beegent) - beegent.reaction_mob(L, REAGENT_INGEST) - L.reagents.add_reagent(beegent.id, rand(1, 5)) - else - L.reagents.add_reagent("beetoxin", 5) /mob/living/simple_animal/hostile/poison/bees/proc/assign_reagent(datum/reagent/R) if(istype(R)) diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 55d751ee2b4a..d3463cfbf984 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -1,9 +1,3 @@ - -#define SPINNING_WEB 1 -#define LAYING_EGGS 2 -#define MOVING_TO_TARGET 3 -#define SPINNING_COCOON 4 - //basic spider mob, these generally guard nests /mob/living/simple_animal/hostile/poison/giant_spider name = "giant spider" @@ -37,10 +31,10 @@ talk_sound = list('sound/creatures/spider_talk1.ogg', 'sound/creatures/spider_talk2.ogg') damaged_sound = list('sound/creatures/spider_attack1.ogg', 'sound/creatures/spider_attack2.ogg') gold_core_spawnable = HOSTILE_SPAWN - var/venom_per_bite = 0 // While the /poison/ type path remains as-is for consistency reasons, we're really talking about venom, not poison. var/busy = 0 footstep_type = FOOTSTEP_MOB_CLAW AI_delay_max = 0.5 SECONDS + hud_type = /datum/hud/simple_animal/spider /mob/living/simple_animal/hostile/poison/giant_spider/ComponentInitialize() AddComponent( \ @@ -49,15 +43,6 @@ cold_damage = 20, \ ) -/mob/living/simple_animal/hostile/poison/giant_spider/AttackingTarget() - // This is placed here, NOT on /poison, because the other subtypes of /poison/ already override AttackingTarget() completely, and as such it would do nothing but confuse people there. - . = ..() - if(. && venom_per_bite > 0 && iscarbon(target) && (!client || a_intent == INTENT_HARM)) - var/mob/living/carbon/C = target - var/inject_target = pick(BODY_ZONE_CHEST, BODY_ZONE_HEAD) - if(C.can_inject(null, FALSE, inject_target, FALSE)) - C.reagents.add_reagent("spidertoxin", venom_per_bite) - /mob/living/simple_animal/hostile/poison/giant_spider/get_spacemove_backup(moving_direction, continuous_move) . = ..() // If we don't find any normal thing to use, attempt to use any nearby spider structure instead. @@ -77,10 +62,21 @@ health = 40 melee_damage_lower = 5 melee_damage_upper = 10 - venom_per_bite = 30 var/atom/cocoon_target var/fed = 0 +/mob/living/simple_animal/hostile/poison/giant_spider/nurse/Initialize(mapload) + . = ..() + + AddElement( \ + /datum/element/reagent_attack, \ + "spidertoxin", \ + 30, \ + FALSE, \ + null, \ + list(BODY_ZONE_CHEST, BODY_ZONE_HEAD), \ + ) + //hunters have the most poison and move the fastest, so they can find prey /mob/living/simple_animal/hostile/poison/giant_spider/hunter desc = "Furry and dark purple, it makes you shudder to look at it. This one has sparkling purple eyes." @@ -91,9 +87,19 @@ health = 120 melee_damage_lower = 10 melee_damage_upper = 20 - venom_per_bite = 10 move_to_delay = 5 +/mob/living/simple_animal/hostile/poison/giant_spider/hunter/Initialize(mapload) + . = ..() + + AddElement( + /datum/element/reagent_attack, \ + "spidertoxin", \ + 10, \ + FALSE, \ + null, \ + list(BODY_ZONE_CHEST, BODY_ZONE_HEAD), \ + ) /mob/living/simple_animal/hostile/poison/giant_spider/handle_automated_movement() //Hacky and ugly. . = ..() @@ -289,8 +295,3 @@ fed-- busy = 0 stop_automated_movement = 0 - -#undef SPINNING_WEB -#undef LAYING_EGGS -#undef MOVING_TO_TARGET -#undef SPINNING_COCOON diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm index 6d2bca660427..84432d962fdd 100644 --- a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm +++ b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm @@ -120,10 +120,11 @@ gorilla.update_icon(UPDATE_ICON_STATE) -/mob/living/simple_animal/hostile/gorilla/AltClick(mob/living/simple_animal/hostile/gorilla/user) +/mob/living/simple_animal/hostile/gorilla/click_alt(mob/living/simple_animal/hostile/gorilla/user) if(!istype(user) || src != user || !gorilla_toggle) - return ..() + return NONE gorilla_toggle.Activate() + return CLICK_ACTION_SUCCESS /** diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla_actions.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla_actions.dm index cbcb20e1b226..79e7a3878a0f 100644 --- a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla_actions.dm +++ b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla_actions.dm @@ -93,7 +93,7 @@ return ..() -/mob/living/simple_animal/hostile/gorilla/hear_say(list/message_pieces, verb = "says", italics = FALSE, mob/speaker = null, sound/speech_sound, sound_vol, sound_frequency, use_voice = TRUE) +/mob/living/simple_animal/hostile/gorilla/hear_say(list/message_pieces, verb = "says", italics = FALSE, mob/speaker = null, sound/speech_sound, sound_vol, sound_frequency, use_voice = TRUE, is_whisper = FALSE) if(client || !can_befriend || !ishuman(speaker) || speaker == src || incapacitated() || is_on_cooldown()) return ..() diff --git a/code/modules/mob/living/simple_animal/hostile/headslug.dm b/code/modules/mob/living/simple_animal/hostile/headslug.dm index cb654d0afea1..f4446b2a0c26 100644 --- a/code/modules/mob/living/simple_animal/hostile/headslug.dm +++ b/code/modules/mob/living/simple_animal/hostile/headslug.dm @@ -126,6 +126,7 @@ origin.transfer_to(monka) if(evented && !(monka.mind.has_antag_datum(/datum/antagonist/changeling))) monka.mind.add_antag_datum(/datum/antagonist/changeling/evented) + SSticker.mode.headslugs -= origin var/datum/antagonist/changeling/cling = monka.mind.has_antag_datum(/datum/antagonist/changeling) if(evented && !(cling.oncepoped)) owner.real_name = owner.dna.species.get_random_name(owner.gender) // part of technical task, name must be random diff --git a/code/modules/mob/living/simple_animal/hostile/hellhound.dm b/code/modules/mob/living/simple_animal/hostile/hellhound.dm index bfc42e52e03a..c5256eda12c0 100644 --- a/code/modules/mob/living/simple_animal/hostile/hellhound.dm +++ b/code/modules/mob/living/simple_animal/hostile/hellhound.dm @@ -160,6 +160,6 @@ if(world.time < (smoke_lastuse + smoke_freq)) return smoke_lastuse = world.time - var/datum/effect_system/smoke_spread/sleeping/smoke = new - smoke.set_up(10, 0, loc) + var/datum/effect_system/fluid_spread/smoke/sleeping/smoke = new + smoke.set_up(amount = 10, location = loc) smoke.start() diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index 1b3653a6c655..56754f157911 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -1,4 +1,4 @@ -/obj/item/projectile/hivebotbullet +/obj/projectile/hivebotbullet damage = 10 damage_type = BRUTE @@ -16,7 +16,7 @@ attacktext = "рвёт" attack_sound = 'sound/weapons/bladeslice.ogg' projectilesound = 'sound/weapons/gunshots/gunshot.ogg' - projectiletype = /obj/item/projectile/hivebotbullet + projectiletype = /obj/projectile/hivebotbullet faction = list("hivebot") check_friendly_fire = 1 atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) @@ -79,10 +79,10 @@ var/turn_on = 0 var/auto_spawn = 1 -/mob/living/simple_animal/hostile/hivebot/tele/New() - ..() - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(5, 0, src.loc) +/mob/living/simple_animal/hostile/hivebot/tele/Initialize(mapload) + . = ..() + var/datum/effect_system/fluid_spread/smoke/smoke = new + smoke.set_up(amount = 5, location = src.loc) smoke.start() visible_message("The [src] warps in!") playsound(src.loc, 'sound/effects/empulse.ogg', 25, 1) diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index ebf48eaaa54b..7942ba89c6be 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -32,8 +32,9 @@ var/melee_queue_distance = 4 //If target is close enough start preparing to hit them if we have rapid_melee enabled var/ranged_message = "fires" //Fluff text for ranged mobs - var/ranged_cooldown = 0 //What the current cooldown on ranged attacks is, generally world.time + ranged_cooldown_time - var/ranged_cooldown_time = 30 //How long, in deciseconds, the cooldown of ranged attacks is + ///Cooldown for firing + COOLDOWN_DECLARE(ranged_cooldown) + var/ranged_cooldown_time = 3 SECONDS //How long, in seconds, the cooldown of ranged attacks is var/ranged_ignores_vision = FALSE //if it'll fire ranged attacks even if it lacks vision on its target, only works with environment smash var/check_friendly_fire = 0 // Should the ranged mob check for friendlies when shooting var/retreat_distance = null //If our mob runs from players when they're too close, set in tile distance. By default, mobs do not retreat. @@ -155,7 +156,7 @@ return ..() -/mob/living/simple_animal/hostile/bullet_act(obj/item/projectile/P) +/mob/living/simple_animal/hostile/bullet_act(obj/projectile/P) if(stat == CONSCIOUS && !target && AIStatus != AI_OFF && !client) if(P.firer && get_dist(src, P.firer) <= aggro_vision_range) FindTarget(list(P.firer)) @@ -171,16 +172,39 @@ if(!search_objects) . = hearers(vision_range, targets_from) - src //Remove self, so we don't suicide - var/static/hostile_machines = typecacheof(list(/obj/machinery/porta_turret, /obj/mecha, /obj/spacepod)) - - for(var/HM in typecache_filter_list(range(vision_range, targets_from), hostile_machines)) - if(can_see(targets_from, HM, vision_range)) + var/static/possible_targets = typecacheof(list(/obj/machinery/porta_turret, /obj/mecha, /obj/spacepod, /mob/living)) + for(var/HM in typecache_filter_list(range(vision_range, targets_from), possible_targets)) + if(targets_from.can_see(HM, vision_range)) . += HM else . = oview(vision_range, targets_from) if(retaliate_only) return . &= enemies // Remove all entries that aren't in enemies +/mob/living/simple_animal/hostile/can_see(atom/target, length) + if(!target || target.invisibility > see_invisible) + return FALSE + var/turf/current_turf = get_turf(src) + var/turf/target_turf = get_turf(target) + if(!current_turf || !target_turf) // nullspace + return FALSE + if(get_dist(current_turf, target_turf) > length) + return FALSE + if(current_turf == target_turf)//they are on the same turf, source can see the target + return TRUE + if(isliving(target) && (sight & SEE_MOBS))//if a mob sees mobs through walls, it always sees the target mob within line of sight + return TRUE + var/steps = 1 + current_turf = get_step_towards(current_turf, target_turf) + while(current_turf != target_turf) + if(steps > length) + return FALSE + if(IS_OPAQUE_TURF(current_turf)) + return FALSE + current_turf = get_step_towards(current_turf, target_turf) + steps++ + return TRUE + /mob/living/simple_animal/hostile/proc/FindTarget(list/possible_targets)//Step 2, filter down possible targets to things we actually care about if(QDELETED(src)) @@ -272,8 +296,18 @@ var/possible_target_distance = get_dist(targets_from, A) if(target_dist < possible_target_distance) Targets -= A + + var/list/mob/high_priority_targets = list() + for(var/mob/T in Targets) + if (!(T.UID() in low_priority_targets)) + high_priority_targets.Add(T) + + if (high_priority_targets.len) + Targets = high_priority_targets + if(!Targets.len)//We didnt find nothin! return + var/chosen_target = pick(Targets)//Pick the remaining targets (if any) at random return chosen_target @@ -306,7 +340,7 @@ if(L in friends) return FALSE else - if((faction_check && !attack_same) || L.stat) + if((faction_check && !attack_same) || L.stat > stat_attack) return FALSE return TRUE @@ -378,7 +412,7 @@ return FALSE var/target_distance = get_dist(targets_from,target) if(ranged) //We ranged? Shoot at em - if(!target.Adjacent(targets_from) && ranged_cooldown <= world.time) //But make sure they're not in range for a melee attack and our range attack is off cooldown + if(COOLDOWN_FINISHED(src, ranged_cooldown) && !target.Adjacent(targets_from)) //But make sure they're not in range for a melee attack OpenFire(target) if(!Process_Spacemove(NONE)) //Drifting SSmove_manager.stop_looping(src) @@ -402,7 +436,7 @@ return FALSE if(environment_smash) if(target.loc != null && get_dist(targets_from, target.loc) <= vision_range) //We can't see our target, but he's in our vision range still - if(ranged_ignores_vision && ranged_cooldown <= world.time) //we can't see our target... but we can fire at them! + if((COOLDOWN_FINISHED(src, ranged_cooldown)) && ranged_ignores_vision) OpenFire(target) if((environment_smash & ENVIRONMENT_SMASH_WALLS) || (environment_smash & ENVIRONMENT_SMASH_RWALLS)) //If we're capable of smashing through walls, forget about vision completely after finding our target Goto(target,move_to_delay,minimum_distance) @@ -453,7 +487,9 @@ SEND_SIGNAL(src, COMSIG_HOSTILE_ATTACKINGTARGET, target) if(!client) mob_attack_logs += "[time_stamp()] Attacked [target] at [COORD(src)]" - return target.attack_animal(src) + var/result = target.attack_animal(src) + SEND_SIGNAL(src, COMSIG_HOSTILE_POST_ATTACKINGTARGET, target, result) + return result /mob/living/simple_animal/hostile/proc/Aggro() @@ -521,7 +557,8 @@ addtimer(cb, (i - 1)*rapid_fire_delay) else Shoot(A) - ranged_cooldown = world.time + ranged_cooldown_time + + COOLDOWN_START(src, ranged_cooldown, ranged_cooldown_time) /mob/living/simple_animal/hostile/proc/Shoot(atom/targeted_atom) if( QDELETED(targeted_atom) || targeted_atom == targets_from.loc || targeted_atom == targets_from ) @@ -532,7 +569,7 @@ playsound(src, projectilesound, 100, 1) casing.fire(targeted_atom, src, zone_override = ran_zone()) else if(projectiletype) - var/obj/item/projectile/P = new projectiletype(startloc) + var/obj/projectile/P = new projectiletype(startloc) playsound(src, projectilesound, 100, 1) P.current = startloc P.starting = startloc @@ -638,7 +675,7 @@ /mob/living/simple_animal/hostile/RangedAttack(atom/A, params) //Player firing if(GLOB.pacifism_after_gt || HAS_TRAIT(src, TRAIT_PACIFISM)) return - if(ranged && ranged_cooldown <= world.time) + if(ranged && COOLDOWN_FINISHED(src, ranged_cooldown)) target = A OpenFire(A) return diff --git a/code/modules/mob/living/simple_animal/hostile/illusion.dm b/code/modules/mob/living/simple_animal/hostile/illusion.dm index d3437761665d..5282ea0e8114 100644 --- a/code/modules/mob/living/simple_animal/hostile/illusion.dm +++ b/code/modules/mob/living/simple_animal/hostile/illusion.dm @@ -20,6 +20,11 @@ del_on_death = 1 +/mob/living/simple_animal/hostile/illusion/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_WET_IMMUNITY, INNATE_TRAIT) + + /mob/living/simple_animal/hostile/illusion/Life() ..() if(world.time > life_span) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/ancient_robot.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/ancient_robot.dm index c7c05820f650..52b26de7f5bd 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/ancient_robot.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/ancient_robot.dm @@ -172,6 +172,9 @@ Difficulty: Very Hard /mob/living/simple_animal/hostile/megafauna/ancient_robot/enrage() . = ..() + if(!.) + return + armour_penetration = 66 TL.armour_penetration = 66 TR.armour_penetration = 66 @@ -318,11 +321,11 @@ Difficulty: Very Hard addtimer(CALLBACK(src, PROC_REF(body_shield)), BODY_SHIELD_COOLDOWN_TIME) -/mob/living/simple_animal/hostile/megafauna/ancient_robot/bullet_act(obj/item/projectile/P) +/mob/living/simple_animal/hostile/megafauna/ancient_robot/bullet_act(obj/projectile/P) if(!body_shield_enabled) return ..() do_sparks(2, 1, src) - visible_message("[src]'s shield deflects [P] in a shower of sparks!", "You deflect the projectile!") + visible_message(span_danger("[src]'s shield deflects [P] in a shower of sparks!"), span_userdanger("You deflect the projectile!"), projectile_message = TRUE) if(P.damage) disable_shield() @@ -400,7 +403,7 @@ Difficulty: Very Hard var/turf/S = get_turf(src) if(!S || !T) return - var/obj/item/projectile/energy/shock_revolver/ancient/O = new /obj/item/projectile/energy/shock_revolver/ancient(S) + var/obj/projectile/energy/shock_revolver/ancient/O = new /obj/projectile/energy/shock_revolver/ancient(S) O.current = S O.firer = src O.yo = T.y - S.y @@ -447,7 +450,7 @@ Difficulty: Very Hard var/turf/T = get_turf(target) if(!spot || !T) return - var/obj/item/projectile/bullet/rock/O = new /obj/item/projectile/bullet/rock(spot) + var/obj/projectile/bullet/rock/O = new /obj/projectile/bullet/rock(spot) O.current = spot O.firer = src O.yo = T.y - spot.y @@ -617,7 +620,7 @@ Difficulty: Very Hard check_friendly_fire = 1 ranged = TRUE projectilesound = 'sound/weapons/gunshots/1autorifle.ogg' - projectiletype = /obj/item/projectile/bullet/ancient_robot_bullet + projectiletype = /obj/projectile/bullet/ancient_robot_bullet attacktext = "stomps on" armour_penetration = 20 melee_damage_lower = 15 @@ -640,7 +643,6 @@ Difficulty: Very Hard var/fake_hp_regen = 2 var/transfer_rate = 0.75 var/who_am_i = null - var/datum/beam/leg_part /mob/living/simple_animal/hostile/ancient_robot_leg/Initialize(mapload, mob/living/ancient, who) . = ..() @@ -662,15 +664,11 @@ Difficulty: Very Hard /mob/living/simple_animal/hostile/ancient_robot_leg/death(gibbed) return //It shouldn't get gibbed by shuttle. -/mob/living/simple_animal/hostile/ancient_robot_leg/Destroy() - QDEL_NULL(leg_part) - return ..() - /mob/living/simple_animal/hostile/ancient_robot_leg/Life(seconds, times_fired) ..() health_and_snap_check(TRUE) -/mob/living/simple_animal/hostile/ancient_robot_leg/bullet_act(obj/item/projectile/P) +/mob/living/simple_animal/hostile/ancient_robot_leg/bullet_act(obj/projectile/P) if(core.stat == CONSCIOUS && !core.target && core.AIStatus != AI_OFF && !core.client) if(P.firer && get_dist(core, P.firer) <= core.aggro_vision_range) core.FindTarget(list(P.firer)) @@ -681,12 +679,10 @@ Difficulty: Very Hard return // stops the legs from trying to move on their own /mob/living/simple_animal/hostile/ancient_robot_leg/proc/beam_setup() - leg_part = Beam(core.beam, "leg_connection", 'icons/effects/effects.dmi', time=INFINITY, maxdistance=INFINITY, beam_type=/obj/effect/ebeam) + Beam(core, "leg_connection", 'icons/effects/effects.dmi', time = INFINITY, maxdistance = INFINITY, beam_type = /obj/effect/ebeam/vetus_leg) /mob/living/simple_animal/hostile/ancient_robot_leg/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents = TRUE) ..() - if(leg_part) - QDEL_NULL(leg_part) addtimer(CALLBACK(src, PROC_REF(beam_setup)), 1 SECONDS) @@ -776,11 +772,11 @@ Difficulty: Very Hard /mob/living/simple_animal/hostile/ancient_robot_leg/electrocute_act(shock_damage, source, siemens_coeff = 1, flags = NONE, jitter_time = 10 SECONDS, stutter_time = 6 SECONDS, stun_duration = 4 SECONDS) return FALSE -/obj/item/projectile/bullet/ancient_robot_bullet +/obj/projectile/bullet/ancient_robot_bullet damage = 8 damage_type = BRUTE -/obj/item/projectile/bullet/rock +/obj/projectile/bullet/rock name = "thrown rock" damage = 25 damage_type = BRUTE @@ -794,11 +790,11 @@ Difficulty: Very Hard icon_state = "small1" duration = 20 -/obj/item/projectile/energy/shock_revolver/ancient +/obj/projectile/energy/shock_revolver/ancient damage = 5 -/obj/item/projectile/energy/shock_revolver/ancient/CanAllowThrough(atom/movable/mover, border_dir) +/obj/projectile/energy/shock_revolver/ancient/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(istype(mover, /mob/living/simple_animal/hostile/ancient_robot_leg)) return TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm index 4281e91e8870..64ac429fd509 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm @@ -33,7 +33,7 @@ Difficulty: Medium tts_seed = "Chen" speed = 3 move_to_delay = 3 - projectiletype = /obj/item/projectile/kinetic/miner + projectiletype = /obj/projectile/kinetic/miner projectilesound = 'sound/weapons/kenetic_accel.ogg' ranged = TRUE ranged_cooldown_time = 16 @@ -205,13 +205,13 @@ Difficulty: Medium return ..() -/obj/item/projectile/kinetic/miner +/obj/projectile/kinetic/miner damage = 20 speed = 0.9 icon_state = "ka_tracer" range = MINER_DASH_RANGE -/obj/item/projectile/kinetic/miner/enraged +/obj/projectile/kinetic/miner/enraged damage = 35 @@ -288,10 +288,13 @@ Difficulty: Medium /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/enrage() . = ..() + if(!.) + return + miner_saw = new /obj/item/melee/energy/cleaving_saw(src) //Real saw for real men. dash_cooldown_to_use = 0.5 SECONDS //Becomes a teleporting shit. ranged_cooldown_time = 5 //They got some cooldown mods. - projectiletype = /obj/item/projectile/kinetic/miner/enraged + projectiletype = /obj/projectile/kinetic/miner/enraged maxHealth = 1800 health = 1800 //Bit more of a challenge. diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index 0317aaac4a96..91a52201bdb9 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -125,6 +125,9 @@ Difficulty: Hard /mob/living/simple_animal/hostile/megafauna/bubblegum/enrage() . = ..() + if(!.) + return + maxHealth = 2000 //Less health, as a phase 2 health = 2000 rapid_melee = 12 //Don't stand still @@ -555,9 +558,9 @@ Difficulty: Hard if(.) recovery_time = world.time + 20 // can only attack melee once every 2 seconds but rapid_melee gives higher priority -/mob/living/simple_animal/hostile/megafauna/bubblegum/bullet_act(obj/item/projectile/P) +/mob/living/simple_animal/hostile/megafauna/bubblegum/bullet_act(obj/projectile/P) if(BUBBLEGUM_IS_ENRAGED) - visible_message("[src] deflects the projectile; [p_they()] can't be hit with ranged weapons while enraged!", "You deflect the projectile!") + visible_message(span_danger("[src] deflects the projectile; [p_they()] can't be hit with ranged weapons while enraged!"), span_userdanger("You deflect the projectile!"), projectile_message = TRUE) playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 300, TRUE) return ..() @@ -711,7 +714,7 @@ Difficulty: Hard second_life = TRUE enraged = TRUE rapid_melee = 12 - projectiletype = /obj/item/projectile/magic/arcane_barrage/blood + projectiletype = /obj/projectile/magic/arcane_barrage/blood projectilesound = 'sound/effects/splat.ogg' deathmessage = null death_sound = 'sound/hallucinations/veryfar_noise.ogg' diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 0517899ed8c4..7c4673c6731f 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -108,6 +108,9 @@ Difficulty: Very Hard /mob/living/simple_animal/hostile/megafauna/colossus/enrage() . = ..() + if(!.) + return + move_to_delay = 5 /mob/living/simple_animal/hostile/megafauna/colossus/unrage() @@ -217,7 +220,7 @@ Difficulty: Very Hard if(QDELETED(marker) || marker == loc) return var/turf/startloc = get_turf(src) - var/obj/item/projectile/P = new /obj/item/projectile/colossus(startloc) + var/obj/projectile/P = new /obj/projectile/colossus(startloc) P.preparePixelProjectile(marker, marker, src) P.firer = src if(target) @@ -325,7 +328,7 @@ Difficulty: Very Hard target = new_target INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/movable, orbit), target, 0, FALSE, 0, 0, FALSE, TRUE) -/mob/living/simple_animal/hostile/megafauna/colossus/bullet_act(obj/item/projectile/P) +/mob/living/simple_animal/hostile/megafauna/colossus/bullet_act(obj/projectile/P) if(!stat) var/obj/effect/temp_visual/at_shield/AT = new /obj/effect/temp_visual/at_shield(loc, src) var/random_x = rand(-32, 32) @@ -336,7 +339,7 @@ Difficulty: Very Hard return ..() -/obj/item/projectile/colossus +/obj/projectile/colossus name ="death bolt" icon_state= "chronobolt" damage = 25 @@ -346,7 +349,7 @@ Difficulty: Very Hard damage_type = BRUTE pass_flags = PASSTABLE -/obj/item/projectile/colossus/on_hit(atom/target, blocked = 0) +/obj/projectile/colossus/on_hit(atom/target, blocked = 0) . = ..() if(isturf(target) || isobj(target)) target.ex_act(2) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm index 21efb0a6ec8e..0f27596e59f6 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm @@ -415,7 +415,7 @@ Difficulty: Medium return STATUS_UPDATE_NONE return ..() -/mob/living/simple_animal/hostile/megafauna/dragon/visible_message(message, self_message, blind_message, list/ignored_mobs, chat_message_type) +/mob/living/simple_animal/hostile/megafauna/dragon/visible_message(message, self_message, blind_message, list/ignored_mobs, chat_message_type, projectile_message = FALSE) if(swooping & SWOOP_INVULNERABLE) //to suppress attack messages without overriding every single proc that could send a message saying we got hit return return ..() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm index 3aa2cfadfb43..5700de967280 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -123,6 +123,9 @@ Difficulty: Hard /mob/living/simple_animal/hostile/megafauna/hierophant/enrage() . = ..() + if(!.) + return + move_to_delay = 5 /mob/living/simple_animal/hostile/megafauna/hierophant/unrage() @@ -602,7 +605,7 @@ Difficulty: Hard if(mover == caster.pulledby) return . if(isprojectile(mover)) - var/obj/item/projectile/P = mover + var/obj/projectile/P = mover if(P.firer == caster) return . if(mover != caster) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm index c52c58737c41..39835b1109c0 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm @@ -130,7 +130,7 @@ Difficulty: Medium var/turf/target_location = locate(x + (50 * sin(beam_angle)), y + (50 * cos(beam_angle)), z) var/beam_time = 0.25 SECONDS + ((health / maxHealth) SECONDS) playsound(loc, 'sound/effects/basscannon.ogg', 200, TRUE) - Beam(target_location, icon_state = "death_laser", time = beam_time, maxdistance = INFINITY, beam_type = /obj/effect/ebeam/disintegration_telegraph, beam_layer = ON_EDGED_TURF_LAYER) + Beam(target_location, icon_state = "death_laser", time = beam_time, maxdistance = INFINITY, beam_type = /obj/effect/ebeam/disintegration_telegraph, layer = ON_EDGED_TURF_LAYER) addtimer(CALLBACK(src, PROC_REF(fire_disintegration_laser), target_location), beam_time) ranged_cooldown = world.time + beam_time + 2 SECONDS SLEEP_CHECK_DEATH(src, beam_time + 2 SECONDS) @@ -185,7 +185,7 @@ Difficulty: Medium /mob/living/simple_animal/hostile/megafauna/legion/proc/fire_disintegration_laser(location) playsound(loc, 'sound/weapons/marauder.ogg', 200, TRUE) - Beam(location, icon_state = "death_laser", time = 2 SECONDS, maxdistance = INFINITY, beam_type = /obj/effect/ebeam/reacting/disintegration, beam_layer = ON_EDGED_TURF_LAYER) + Beam(location, icon_state = "death_laser", time = 2 SECONDS, maxdistance = INFINITY, beam_type = /obj/effect/ebeam/reacting/disintegration, layer = ON_EDGED_TURF_LAYER) for(var/turf/t as anything in get_line(src, location)) if(ismineralturf(t)) var/turf/simulated/mineral/M = t diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index 8fca6764c79d..4b250d58fbeb 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -117,14 +117,17 @@ if(!istype(get_area(src), /area/shuttle)) //I'll be funny and make non teleported enrage mobs not lose enrage. Harder to pull off, and also funny when it happens accidently. Or if one gets on the escape shuttle. unrage() -/mob/living/simple_animal/hostile/megafauna/onShuttleMove(turf/oldT, turf/T1, rotation, mob/caller) +/mob/living/simple_animal/hostile/megafauna/onShuttleMove(turf/oldT, turf/T1, rotation, mob/requester) var/turf/oldloc = loc . = ..() + if(!.) return + var/turf/newloc = loc - mob_attack_logs += "[time_stamp()] Moved via shuttle from [COORD(oldloc)] to [COORD(newloc)] caller: [caller ? "[caller]" : "unknown" ]" - message_admins("Megafauna[stat == DEAD ? "(DEAD)" : null] [src] ([ADMIN_FLW(src,"FLW")]) moved via shuttle from [ADMIN_COORDJMP(oldloc)] to [ADMIN_COORDJMP(newloc)][caller ? " called by [ADMIN_LOOKUPFLW(caller)]" : ""]") + + mob_attack_logs += "[time_stamp()] Moved via shuttle from [COORD(oldloc)] to [COORD(newloc)] requester: [requester ? "[requester]" : "unknown" ]" + message_admins("Megafauna[stat == DEAD ? "(DEAD)" : null] [src] ([ADMIN_FLW(src,"FLW")]) moved via shuttle from [ADMIN_COORDJMP(oldloc)] to [ADMIN_COORDJMP(newloc)][requester ? " called by [ADMIN_LOOKUPFLW(requester)]" : ""]") /mob/living/simple_animal/hostile/megafauna/proc/devour(mob/living/L) if(!L) @@ -219,8 +222,10 @@ /// This proc is called by the HRD-MDE grenade to enrage the megafauna. This should increase the megafaunas attack speed if possible, give it new moves, or disable weak moves. This should be reverseable, and reverses on zlvl change. /mob/living/simple_animal/hostile/megafauna/proc/enrage() if(enraged || ((health / maxHealth) * 100 <= 80)) - return + return FALSE + enraged = TRUE + return TRUE /mob/living/simple_animal/hostile/megafauna/proc/unrage() enraged = FALSE diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm index c2143705f0d0..0c745e34398d 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm @@ -258,7 +258,7 @@ GLOBAL_LIST_INIT(AISwarmerCapsByType, list(/mob/living/simple_animal/hostile/swa /mob/living/simple_animal/hostile/swarmer/ai/ranged_combat icon_state = "swarmer_ranged" icon_living = "swarmer_ranged" - projectiletype = /obj/item/projectile/beam/laser + projectiletype = /obj/projectile/beam/laser projectilesound = 'sound/weapons/laser.ogg' check_friendly_fire = TRUE //you're supposed to protect the resource swarmers, you poop retreat_distance = 3 diff --git a/code/modules/mob/living/simple_animal/hostile/mining/basilisk.dm b/code/modules/mob/living/simple_animal/hostile/mining/basilisk.dm index 2953654d9b92..39285735a3c7 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/basilisk.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/basilisk.dm @@ -9,7 +9,7 @@ icon_dead = "Basilisk_dead" icon_gib = "syndicate_gib" move_to_delay = 20 - projectiletype = /obj/item/projectile/temp/basilisk + projectiletype = /obj/projectile/temp/basilisk projectilesound = 'sound/weapons/pierce.ogg' ranged = 1 ranged_message = "stares" @@ -35,7 +35,7 @@ /obj/item/stack/ore/diamond{layer = ABOVE_MOB_LAYER}) tts_seed = "Antimage" -/obj/item/projectile/temp/basilisk +/obj/projectile/temp/basilisk name = "freezing blast" icon_state = "ice_2" damage = 0 @@ -77,7 +77,7 @@ attack_sound = 'sound/weapons/bladeslice.ogg' stat_attack = UNCONSCIOUS robust_searching = 1 - projectiletype = /obj/item/projectile/watcher + projectiletype = /obj/projectile/watcher crusher_loot = /obj/item/crusher_trophy/watcher_wing loot = list() butcher_results = list(/obj/item/stack/ore/diamond = 2, /obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/bone = 1) @@ -100,7 +100,7 @@ light_range = 3 light_power = 2.5 light_color = LIGHT_COLOR_LAVA - projectiletype = /obj/item/projectile/temp/basilisk/magmawing + projectiletype = /obj/projectile/temp/basilisk/magmawing jewelry_loot = /obj/item/gem/magma crusher_loot = /obj/item/crusher_trophy/blaster_tubes/magma_wing crusher_drop_mod = 60 @@ -114,7 +114,7 @@ icon_dead = "watcher_icewing_dead" maxHealth = 170 health = 170 - projectiletype = /obj/item/projectile/temp/basilisk/icewing + projectiletype = /obj/projectile/temp/basilisk/icewing butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/bone = 1) //No sinew; the wings are too fragile to be usable jewelry_loot = /obj/item/gem/fdiamond crusher_loot = /obj/item/crusher_trophy/watcher_wing/ice_wing @@ -138,7 +138,7 @@ /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/magmawing/tendril fromtendril = TRUE -/obj/item/projectile/watcher +/obj/projectile/watcher name = "stunning blast" icon_state = "temp_0" damage = 10 //make it hurt, as it no more freezing @@ -146,7 +146,7 @@ nodamage = FALSE speed = 0.8 -/obj/item/projectile/watcher/on_hit(atom/target, blocked = FALSE) +/obj/projectile/watcher/on_hit(atom/target, blocked = FALSE) . = ..() if(.) var/mob/living/L = target @@ -156,7 +156,7 @@ L.Confused(3 SECONDS) -/obj/item/projectile/temp/basilisk/magmawing +/obj/projectile/temp/basilisk/magmawing name = "scorching blast" icon_state = "lava" damage = 5 @@ -165,7 +165,7 @@ temperature = 700 //Heats you up! speed = 0.6 -/obj/item/projectile/temp/basilisk/magmawing/on_hit(atom/target, blocked = FALSE) +/obj/projectile/temp/basilisk/magmawing/on_hit(atom/target, blocked = FALSE) . = ..() if(.) var/mob/living/L = target @@ -176,13 +176,13 @@ explosion(L.loc, 0, 0, 0, 0, flame_range = 3) L.AdjustWeakened(1 SECONDS) -/obj/item/projectile/temp/basilisk/icewing +/obj/projectile/temp/basilisk/icewing damage = 5 damage_type = BURN nodamage = FALSE speed = 0.6 -/obj/item/projectile/temp/basilisk/icewing/on_hit(atom/target, blocked = FALSE) +/obj/projectile/temp/basilisk/icewing/on_hit(atom/target, blocked = FALSE) . = ..() if(.) var/mob/living/L = target diff --git a/code/modules/mob/living/simple_animal/hostile/mining/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining/elites/elite.dm index 0e4a5a1153f8..03b437174295 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/elites/elite.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/elites/elite.dm @@ -387,9 +387,13 @@ While using this makes the system rely on OnFire, it still gives options for tim /obj/structure/elite_tumor/proc/arena_checks() if(activity != TUMOR_ACTIVE || QDELETED(src)) return + INVOKE_ASYNC(src, PROC_REF(arena_trap)) //Gets another arena trap queued up for when this one runs out. INVOKE_ASYNC(src, PROC_REF(border_check)) //Checks to see if our fighters got out of the arena somehow. INVOKE_ASYNC(src, PROC_REF(fighters_check)) //Checks to see if our fighters died. + if(QDELETED(src)) + return + addtimer(CALLBACK(src, PROC_REF(arena_checks)), 5 SECONDS) /obj/structure/elite_tumor/proc/fighters_check() diff --git a/code/modules/mob/living/simple_animal/hostile/mining/elites/herald.dm b/code/modules/mob/living/simple_animal/hostile/mining/elites/herald.dm index f73fee3985d6..6ba33a7eb3fe 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/elites/herald.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/elites/herald.dm @@ -127,7 +127,7 @@ /mob/living/simple_animal/hostile/asteroid/elite/herald/proc/shoot_projectile(turf/marker, set_angle, is_teleshot, is_trishot) var/turf/startloc = get_turf(src) if(!is_teleshot) - var/obj/item/projectile/herald/H = new(startloc) + var/obj/projectile/herald/H = new(startloc) H.preparePixelProjectile(marker, marker, src) H.firer = src H.damage = H.damage * dif_mult_dmg @@ -138,7 +138,7 @@ shoot_projectile(marker, set_angle + 15, FALSE, FALSE) shoot_projectile(marker, set_angle - 15, FALSE, FALSE) else - var/obj/item/projectile/herald/teleshot/H = new(startloc) + var/obj/projectile/herald/teleshot/H = new(startloc) H.preparePixelProjectile(marker, marker, src) H.firer = src H.damage = H.damage * dif_mult_dmg @@ -224,19 +224,19 @@ my_master = null . = ..() -/obj/item/projectile/herald +/obj/projectile/herald name = "death bolt" icon_state = "chronobolt" damage = 15 armour_penetration = 35 speed = 2 -/obj/item/projectile/herald/teleshot +/obj/projectile/herald/teleshot name = "golden bolt" damage = 25 color = rgb(255,255,102) -/obj/item/projectile/herald/prehit(atom/target) +/obj/projectile/herald/prehit(atom/target) if(ismob(target) && ismob(firer)) var/mob/living/mob_target = target if(mob_target.faction_check_mob(firer)) @@ -246,13 +246,13 @@ if(mob_target.buckled && mob_target.stat == DEAD) mob_target.dust() //no body cheese -/obj/item/projectile/herald/on_hit(atom/target, blocked = FALSE) +/obj/projectile/herald/on_hit(atom/target, blocked = FALSE) . = ..() if(ismineralturf(target)) var/turf/simulated/mineral/M = target M.attempt_drill() -/obj/item/projectile/herald/teleshot/on_hit(atom/target, blocked = FALSE) +/obj/projectile/herald/teleshot/on_hit(atom/target, blocked = FALSE) . = ..() if(!istype(target, /mob/living/simple_animal/hostile/asteroid/elite/herald)) firer.forceMove(get_turf(src)) diff --git a/code/modules/mob/living/simple_animal/hostile/mining/elites/legionnaire.dm b/code/modules/mob/living/simple_animal/hostile/mining/elites/legionnaire.dm index 4a062f28f4a2..a324462e896a 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/elites/legionnaire.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/elites/legionnaire.dm @@ -314,7 +314,7 @@ fire_walker.IgniteMob() -/obj/item/projectile/legionnaire +/obj/projectile/legionnaire name = "bone" icon = 'icons/obj/mining.dmi' icon_state = "bone" @@ -324,7 +324,7 @@ /mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/shoot_projectile(turf/marker) var/turf/startloc = get_turf(src) - var/obj/item/projectile/legionnaire/P = new(startloc) + var/obj/projectile/legionnaire/P = new(startloc) P.preparePixelProjectile(marker, marker, src) P.firer = src P.damage = P.damage * dif_mult_dmg diff --git a/code/modules/mob/living/simple_animal/hostile/mining/goldgrub.dm b/code/modules/mob/living/simple_animal/hostile/mining/goldgrub.dm index 88c655f19740..6dcd6c2d3c96 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/goldgrub.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/goldgrub.dm @@ -76,8 +76,8 @@ visible_message("\The [name] buries into the ground, vanishing from sight!") qdel(src) -/mob/living/simple_animal/hostile/asteroid/goldgrub/bullet_act(obj/item/projectile/P) - visible_message("[P.name] was repelled by \the [name]'s blubberous girth!") +/mob/living/simple_animal/hostile/asteroid/goldgrub/bullet_act(obj/projectile/P) + visible_message(span_danger("[P.name] was repelled by \the [name]'s blubberous girth!"), projectile_message = TRUE) /mob/living/simple_animal/hostile/asteroid/goldgrub/adjustHealth( diff --git a/code/modules/mob/living/simple_animal/hostile/mining/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining/goliath.dm index da1aa23923bb..628da2d4bafe 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/goliath.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/goliath.dm @@ -45,10 +45,11 @@ COOLDOWN_DECLARE(post_charge_delay) -/mob/living/simple_animal/hostile/asteroid/goliath/bullet_act(var/obj/item/projectile/P) - if(prob(reflect_chance) && !istype(P, /obj/item/projectile/destabilizer)) - visible_message("The [P.name] gets reflected by [src]'s rocky hide!", \ - "The [P.name] gets reflected by [src]'s rocky hide!") +/mob/living/simple_animal/hostile/asteroid/goliath/bullet_act(var/obj/projectile/P) + if(prob(reflect_chance) && !istype(P, /obj/projectile/destabilizer)) + visible_message(span_danger("The [P.name] gets reflected by [src]'s rocky hide!"), \ + span_userdanger("The [P.name] gets reflected by [src]'s rocky hide!"), \ + projectile_message = TRUE) P.reflect_back(src, list(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)) return -1 // complete projectile permutation @@ -244,8 +245,8 @@ speed = 4 pre_attack_icon = "Goliath_preattack" throw_message = "does nothing to the rocky hide of the" - loot = list(/obj/item/stack/sheet/animalhide/goliath_hide) //A throwback to the asteroid days - butcher_results = list(/obj/item/reagent_containers/food/snacks/monstermeat/goliath = 2, /obj/item/stack/sheet/bone = 2) + crusher_loot = /obj/item/crusher_trophy/eyed_tentacle + butcher_results = list(/obj/item/reagent_containers/food/snacks/monstermeat/goliath = 2, /obj/item/stack/sheet/animalhide/goliath_hide = 2, /obj/item/stack/sheet/bone = 2) crusher_drop_mod = 30 wander = FALSE var/list/cached_tentacle_turfs @@ -336,4 +337,4 @@ /obj/effect/temp_visual/goliath_tentacle/proc/retract() icon_state = "Goliath_tentacle_retract" deltimer(timerid) - timerid = QDEL_IN(src, 7) + timerid = QDEL_IN_STOPPABLE(src, 7) diff --git a/code/modules/mob/living/simple_animal/hostile/mining/gutlunch.dm b/code/modules/mob/living/simple_animal/hostile/mining/gutlunch.dm index 8d9e7c0023ff..fa464b5381c4 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/gutlunch.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/gutlunch.dm @@ -45,6 +45,11 @@ udder = new() . = ..() +/mob/living/simple_animal/hostile/asteroid/gutlunch/examine(mob/user) + . = ..() + if(udder) + . += span_notice("В его [udder.declent_ru(ACCUSATIVE)] содержится [udder.reagents.total_volume] единиц[declension_ru(udder.reagents.total_volume, "а", "ы", "")] молока.") + /mob/living/simple_animal/hostile/asteroid/gutlunch/Destroy() QDEL_NULL(udder) return ..() @@ -71,6 +76,12 @@ return ..() +/mob/living/simple_animal/hostile/asteroid/gutlunch/ListTargetsLazy(check_z)//override to include wanted_objects as valid targets + . = ..() + for(var/atom/movable/movable as anything in view(vision_range, loc)) + if(wanted_objects[movable.type]) + if(isturf(movable.loc)) + . += movable /mob/living/simple_animal/hostile/asteroid/gutlunch/CanAttack(atom/the_target) // Gutlunch-specific version of CanAttack to handle stupid stat_exclusive = true crap so we don't have to do it for literally every single simple_animal/hostile except the two that spawn in lavaland if(isturf(the_target) || !the_target || the_target.type == /atom/movable/lighting_object) // bail out on invalids @@ -100,6 +111,7 @@ regenerate_icons() visible_message("[src] slurps up [target].") qdel(target) + return return ..() /obj/item/udder/gutlunch @@ -111,11 +123,7 @@ reagents.my_atom = src /obj/item/udder/gutlunch/generateMilk() - if(prob(60)) - reagents.add_reagent("cream", rand(2, 5)) - if(prob(45)) - reagents.add_reagent("salglu_solution", rand(2,5)) - + reagents.add_reagent("bugmilk", rand(2, 5)) //Male gutlunch. They're smaller and more colorful! /mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck diff --git a/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm index ec04e0c42815..860a9c43c4a4 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm @@ -209,6 +209,8 @@ /mob/living/simple_animal/hostile/asteroid/hivelord/legion/death(gibbed) visible_message("The skulls on [src] wail in anger as they flee from their dying host!") var/turf/T = get_turf(src) + if (!T) // When legion dusts T = null. Maybe not onli this way. + return for(var/i in 1 to 2) new /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/weaken(T) if(T) diff --git a/code/modules/mob/living/simple_animal/hostile/mining/marrow_weaver.dm b/code/modules/mob/living/simple_animal/hostile/mining/marrow_weaver.dm index c70328f1574b..9bc7da1a5034 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/marrow_weaver.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/marrow_weaver.dm @@ -7,6 +7,7 @@ icon_aggro = "weaver" icon_dead = "weaver_dead" throw_message = "bounces harmlessly off the" + crusher_loot = /obj/item/crusher_trophy/fang butcher_results = list(/obj/item/stack/ore/uranium = 2, /obj/item/stack/sheet/bone = 2, /obj/item/stack/sheet/sinew = 1, /obj/item/stack/sheet/animalhide/weaver_chitin = 3, /obj/item/reagent_containers/food/snacks/monstermeat/spiderleg = 2) loot = list() attacktext = "кусает" //can we revert all translation in our code? @@ -115,6 +116,9 @@ icon_state = "chitin" singular_name = "chitin chunk" +/obj/item/stack/sheet/animalhide/weaver_chitin/five + amount = 5 + //better and dangerous subtype for regular lavaland. Slightly faster and NO MORE XRAY. /mob/living/simple_animal/hostile/asteroid/marrowweaver/dangerous @@ -136,15 +140,20 @@ /mob/living/simple_animal/hostile/asteroid/marrowweaver/frost name = "frostbite weaver" desc = "A big, angry, venomous ice spider. It likes to snack on bone marrow. Its preferred food source is you." + icon_state = "weaver_ice" icon_living = "weaver_ice" icon_aggro = "weaver_ice" icon_dead = "weaver_ice_dead" + melee_damage_lower = 10 //stronger venom, but weaker attack. melee_damage_upper = 13 + poison_type = "frostoil" poison_per_bite = 5 + crusher_loot = /obj/item/crusher_trophy/gland + /mob/living/simple_animal/hostile/asteroid/marrowweaver/tendril fromtendril = TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/mining/mining.dm b/code/modules/mob/living/simple_animal/hostile/mining/mining.dm index 9c887472f6cc..50661a5663f5 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/mining.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/mining.dm @@ -42,12 +42,12 @@ return icon_state = icon_living -/mob/living/simple_animal/hostile/asteroid/bullet_act(obj/item/projectile/P)//Reduces damage from most projectiles to curb off-screen kills +/mob/living/simple_animal/hostile/asteroid/bullet_act(obj/projectile/P)//Reduces damage from most projectiles to curb off-screen kills if(!stat) Aggro() if(P.damage < 30 && P.damage_type != BRUTE && has_laser_resist) P.damage = (P.damage / 3) - visible_message("[P] has a reduced effect on [src]!") + visible_message(span_danger("[P] has a reduced effect on [src]!"), projectile_message = TRUE) ..() /mob/living/simple_animal/hostile/asteroid/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) //No floor tiling them to death, wiseguy diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm index 583441b55344..453d95fa7b64 100644 --- a/code/modules/mob/living/simple_animal/hostile/pirate.dm +++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm @@ -42,6 +42,6 @@ rapid = 2 retreat_distance = 5 minimum_distance = 5 - projectiletype = /obj/item/projectile/beam + projectiletype = /obj/projectile/beam loot = list(/obj/effect/mob_spawn/human/corpse/pirate/ranged, /obj/item/gun/energy/laser) diff --git a/code/modules/mob/living/simple_animal/hostile/rat_syndi.dm b/code/modules/mob/living/simple_animal/hostile/rat_syndi.dm index 1e383c14fcc7..24cc2e85fb3d 100644 --- a/code/modules/mob/living/simple_animal/hostile/rat_syndi.dm +++ b/code/modules/mob/living/simple_animal/hostile/rat_syndi.dm @@ -35,7 +35,7 @@ ranged = 1 - projectiletype = /obj/item/projectile/beam/disabler + projectiletype = /obj/projectile/beam/disabler attack_sound = 'sound/weapons/punch1.ogg' talk_sound = list('sound/creatures/rat_talk.ogg') diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm index 51e1eb36e97f..1f28e2269058 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm @@ -23,7 +23,7 @@ health = 200 maxHealth = 200 speed = 8 - projectiletype = /obj/item/projectile/beam/immolator/weak + projectiletype = /obj/projectile/beam/immolator/weak projectilesound = 'sound/weapons/laser3.ogg' atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) faction = list("malf_drone") @@ -221,7 +221,7 @@ idcheck = TRUE arrest_type = TRUE auto_patrol = FALSE - projectile = /obj/item/projectile/beam/immolator/weak + projectile = /obj/projectile/beam/immolator/weak /mob/living/simple_animal/bot/ed209/combat_drone/Initialize(mapload) . = ..() @@ -234,8 +234,8 @@ /mob/living/simple_animal/bot/ed209/combat_drone/setup_access() return -/mob/living/simple_animal/bot/ed209/syndicate/set_weapon() - projectile = /obj/item/projectile/beam/immolator/weak +/mob/living/simple_animal/bot/ed209/combat_drone/set_weapon() + projectile = /obj/projectile/beam/immolator/weak /mob/living/simple_animal/bot/ed209/combat_drone/turn_on() . = ..() @@ -261,9 +261,9 @@ desc = "Большой дрон. Кажется, неактивен." w_class = WEIGHT_CLASS_GIGANTIC item_flags = NOPICKUP - icon_state = "unactive_drone" + icon_state = "inactive_drone" -/obj/item/unactive_drone/attackby(obj/item/I, mob/user, params) +/obj/item/inactive_drone/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/drone_modules/drone_BCM)) to_chat(user, span_notice("Вы установили модуль в слот.")) new /mob/living/simple_animal/bot/ed209/combat_drone(get_turf(src)) @@ -298,7 +298,16 @@ /obj/item/drone_manual name = "Strange looking Manual" - desc = "Довольно толстая книжка, на обложке которой вы можете увидеть дрона." + desc = "На обложке этой книги вы можете увидеть изображение боевого дрона. Это руководство по его эксплуатации." + ru_names = list( + NOMINATIVE = "странное руководство", + GENITIVE = "странного руководства", + DATIVE = "странному руководству", + ACCUSATIVE = "странное руководство", + INSTRUMENTAL = "странным руководством", + PREPOSITIONAL = "странном руководстве" + ) + gender = MALE icon_state = "drone_manual" /obj/item/drone_manual/attack_self(mob/user) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm index 833ef4de31a8..71c05d106ecc 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm @@ -20,4 +20,5 @@ unique_pet = TRUE atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 2, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) gender = FEMALE + hud_type = /datum/hud/simple_animal/spider diff --git a/code/modules/mob/living/simple_animal/hostile/shitcur_goblin.dm b/code/modules/mob/living/simple_animal/hostile/shitcur_goblin.dm index ceacb215b2a7..fdcf1635a3c7 100644 --- a/code/modules/mob/living/simple_animal/hostile/shitcur_goblin.dm +++ b/code/modules/mob/living/simple_animal/hostile/shitcur_goblin.dm @@ -14,7 +14,7 @@ ranged = TRUE ranged_message = "thorws a warn" ranged_cooldown_time = 3 SECONDS - projectiletype = /obj/item/projectile/energy/electrode + projectiletype = /obj/projectile/energy/electrode projectilesound = 'sound/weapons/taser.ogg' AI_delay_max = 0 SECONDS diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 0e32e15ec6b7..b644735a9dc7 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -55,11 +55,11 @@ return ..() -/mob/living/simple_animal/hostile/syndicate/melee/bullet_act(obj/item/projectile/Proj) +/mob/living/simple_animal/hostile/syndicate/melee/bullet_act(obj/projectile/Proj) if(!Proj) return if(prob(ranged_block_chance)) - visible_message(span_danger("[src] blocks [Proj] with its shield!")) + visible_message(span_danger("[src] blocks [Proj] with its shield!"), projectile_message = TRUE) return FALSE return ..() @@ -133,7 +133,7 @@ seen_revived_enemy = TRUE raise_alert("[name] reports intruder [target] has returned from death!") depotarea.list_remove(target, depotarea.dead_list) - if(!atoms_share_level(src, target) && prob(20)) + if(!are_zs_connected(src, target) && prob(20)) // This prevents someone from aggroing a depot mob, then hiding in a locker, perfectly safe, while the mob stands there getting killed by their friends. LoseTarget() @@ -149,7 +149,7 @@ raise_alert("[name] has reported contact with hostile entity: [seen_enemy_name]") if(scan_cycles >= 15) scan_cycles = 0 - if(!atoms_share_level(src, spawn_turf)) + if(!are_zs_connected(src, spawn_turf)) if(istype(loc, /obj/structure/closet)) var/obj/structure/closet/O = loc forceMove(get_turf(src)) @@ -235,7 +235,7 @@ ranged_block_chance = 0 icon_state = "syndicate_pistol" icon_living = "syndicate_pistol" - projectiletype = /obj/item/projectile/beam/laser + projectiletype = /obj/projectile/beam/laser projectilesound = 'sound/weapons/laser.ogg' /mob/living/simple_animal/hostile/syndicate/melee/autogib/depot/armory @@ -269,7 +269,7 @@ ranged_block_chance = 0 icon_state = "syndicate_stormtrooper_shotgun" icon_living = "syndicate_stormtrooper_shotgun" - projectiletype = /obj/item/projectile/bullet/sniper/penetrator // Ignores cover. + projectiletype = /obj/projectile/bullet/sniper/penetrator // Ignores cover. projectilesound = 'sound/weapons/gunshots/gunshot_sniper.ogg' return INITIALIZE_HINT_LATELOAD diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/__defines.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/__defines.dm deleted file mode 100644 index f909b3d557d4..000000000000 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/__defines.dm +++ /dev/null @@ -1,33 +0,0 @@ - -#define SPINNING_WEB 1 -#define LAYING_EGGS 2 -#define MOVING_TO_TARGET 3 -#define SPINNING_COCOON 4 - -#define TS_DAMAGE_SIMPLE 0 -#define TS_DAMAGE_POISON 1 -#define TS_DAMAGE_BRUTE 2 - -//TIER 1 -#define TS_DESC_KNIGHT "Knight - ASSAULT" -#define TS_DESC_LURKER "Lurker - AMBUSH" -#define TS_DESC_HEALER "Healer - NURSE" -#define TS_DESC_REAPER "Reaper - BRAWL" -#define TS_DESC_BUILDER "Drone - BUILD" -//TIER 2 -#define TS_DESC_WIDOW "Widow - POISON" -#define TS_DESC_GUARDIAN "Guardian - GUARD" -#define TS_DESC_DESTROYER "Destroyer - BREACHER" -//TIER 3 -#define TS_DESC_PRINCE "Prince - HERO" -#define TS_DESC_PRINCESS "Princess - HORDE" -#define TS_DESC_MOTHER "Mother - SUPPORT" -#define TS_DESC_DEFILER "Defiler - INFECT" -//TIER 4 -#define TS_DESC_QUEEN "Queen - LEADER" - -#define TS_TIER_1 1 -#define TS_TIER_2 2 -#define TS_TIER_3 3 -#define TS_TIER_4 4 -#define TS_TIER_5 5 diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/abillities.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/abillities.dm index 5907ac0ae5f0..02d4d1e35456 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/abillities.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/abillities.dm @@ -6,8 +6,8 @@ //STEALTH AKA INVISIBILLITY /obj/effect/proc_holder/spell/terror_stealth - name = "Stealth" - desc = "Become completely invisible for a short time." + name = "Невидимость" + desc = "Стать полностью невидимым на короткое время." action_icon_state = "stealth" action_background_icon_state = "bg_terror" base_cooldown = 25 SECONDS @@ -23,7 +23,7 @@ /obj/effect/proc_holder/spell/terror_stealth/cast(list/targets, mob/user = usr) user.alpha = 0 - user.visible_message("[user] suddenly disappears!", "You are invisible now!") + user.visible_message(span_warning("[capitalize(user.declent_ru(NOMINATIVE))] внезапно исчезает!"), span_purple("Вы теперь невидимы!")) addtimer(CALLBACK(src, PROC_REF(reveal), user), duration) @@ -32,7 +32,7 @@ return user.alpha = initial(user.alpha) - user.visible_message("[user] appears from nowhere!", "You are visible again!") + user.visible_message(span_warning("[capitalize(user.declent_ru(NOMINATIVE))] появляется из ниоткуда!"), span_purple("Вы снова видимы!")) playsound(user.loc, 'sound/creatures/terrorspiders/stealth_out.ogg', 150, TRUE) @@ -40,8 +40,8 @@ //LESSER HEALING /obj/effect/proc_holder/spell/aoe/terror_healing - name = "Heal" - desc = "Exude feromones to heal your allies" + name = "Исцеляющие феромоны" + desc = "Выбросить в атмосферу феромоны, лечащие ваших союзников." action_icon_state = "heal" action_background_icon_state = "bg_terror" base_cooldown = 30 SECONDS @@ -62,7 +62,7 @@ /obj/effect/proc_holder/spell/aoe/terror_healing/cast(list/targets, mob/user = usr) for(var/mob/living/simple_animal/hostile/poison/terror_spider/spider in targets) - visible_message("[user] exudes feromones and heals spiders around!") + visible_message(span_green("[capitalize(user.declent_ru(NOMINATIVE))] источает целительные феромоны!")) spider.adjustBruteLoss(-heal_amount) if(apply_heal_buff) spider.apply_status_effect(STATUS_EFFECT_TERROR_REGEN) @@ -77,32 +77,32 @@ //VENOM SPIT /obj/effect/proc_holder/spell/fireball/venom_spit - name = "Venom spit" - desc = "Spit an acid that creates smoke filled with drugs and venom on impact." + name = "Кислотный плевок" + desc = "Плюнуть кислоту, при контакте создающую дым, наполненный наркотиками и ядом." invocation_type = "none" action_icon_state = "fake_death" action_background_icon_state = "bg_terror" - selection_activated_message = "Your prepare your venom spit! Left-click to spit at a target!" - selection_deactivated_message = "You cancel your spit." + selection_activated_message = span_notice("Вы подготавливаете свой ядовитый плевок! ЛКМ, чтобы плюнуть в цель.") + selection_deactivated_message = span_notice("Вы отменяете свой плевок.") sound = 'sound/creatures/terrorspiders/spit2.ogg' need_active_overlay = TRUE human_req = FALSE base_cooldown = 25 SECONDS - fireball_type = /obj/item/projectile/terrorspider/widow/venom + fireball_type = /obj/projectile/terrorspider/widow/venom /obj/effect/proc_holder/spell/fireball/venom_spit/update_icon_state() return -/obj/item/projectile/terrorspider/widow/venom +/obj/projectile/terrorspider/widow/venom name = "venom acid" damage = 5 -/obj/item/projectile/terrorspider/widow/venom/on_hit(var/target) +/obj/projectile/terrorspider/widow/venom/on_hit(target) . = ..() - var/datum/effect_system/smoke_spread/chem/S = new + var/datum/effect_system/fluid_spread/smoke/chem/smoke = new var/turf/T = get_turf(target) create_reagents(1250) reagents.add_reagent("thc", 250) @@ -110,44 +110,43 @@ reagents.add_reagent("lsd", 250) reagents.add_reagent("space_drugs", 250) reagents.add_reagent("terror_black_toxin", 250) - S.set_up(reagents, T, TRUE) - S.start() + smoke.set_up(range = 2, location = T, carry = reagents, silent = TRUE) + smoke.start() return ..() //SMOKE SPIT /obj/effect/proc_holder/spell/fireball/smoke_spit - name = "Smoke spit" - desc = "Spit an acid that creates smoke on impact." + name = "Плевок дымящейся кислотой" + desc = "Плюнуть кислоту, создающую дым при контакте." invocation_type = "none" action_icon_state = "smoke" action_background_icon_state = "bg_terror" - selection_activated_message = "Your prepare your smoke spit! Left-click to spit at a target!" - selection_deactivated_message = "You cancel your spit." + selection_activated_message = span_notice("Вы подготавливаете дымный плевок! ЛКМ, чтобы плюнуть в цель") + selection_deactivated_message = span_notice("Вы отменяете свой плевок.") sound = 'sound/creatures/terrorspiders/spit2.ogg' need_active_overlay = TRUE human_req = FALSE base_cooldown = 10 SECONDS - fireball_type = /obj/item/projectile/terrorspider/widow/smoke + fireball_type = /obj/projectile/terrorspider/widow/smoke /obj/effect/proc_holder/spell/fireball/smoke_spit/update_icon_state() return -/obj/item/projectile/terrorspider/widow/smoke +/obj/projectile/terrorspider/widow/smoke name = "smoke acid" damage = 5 -/obj/item/projectile/terrorspider/widow/smoke/on_hit(var/target) +/obj/projectile/terrorspider/widow/smoke/on_hit(target) . = ..() - var/datum/effect_system/smoke_spread/smoke = new + var/datum/effect_system/fluid_spread/smoke/smoke = new var/turf/T = get_turf(target) - smoke.set_up(15, 0, T) + smoke.set_up(amount = 15, location = T) smoke.start() - return ..() @@ -156,8 +155,8 @@ //EMP /obj/effect/proc_holder/spell/emplosion/terror_emp - name = "EMP shriek" - desc = "Emits a shriek that causes EMP pulse." + name = "Электро-магнитный визг" + desc = "Издать визг, вызывающий ЭМИ." action_icon_state = "emp_new" action_background_icon_state = "bg_terror" base_cooldown = 40 SECONDS @@ -176,8 +175,8 @@ //EXPLOSION /obj/effect/proc_holder/spell/explosion/terror_burn - name = "Burn!" - desc = "Release your energy to create a massive fire ring." + name = "Воспламенение" + desc = "Высвободить энергию, создавая огромное огненное кольцо." action_icon_state = "explosion" action_background_icon_state = "bg_terror" base_cooldown = 60 SECONDS @@ -197,8 +196,8 @@ //SHIELD /obj/effect/proc_holder/spell/aoe/conjure/build/terror_shield - name = "Guardian shield" - desc = "Create a temporary organic shield to protect your hive." + name = "Защитная мембрана" + desc = "Создать временный органический щит для защиты вашего гнезда." action_icon_state = "terror_shield" action_background_icon_state = "bg_terror" base_cooldown = 8 SECONDS @@ -210,8 +209,8 @@ /obj/effect/forcefield/terror - desc = "Thick protective membrane produced by Guardians of Terror." - name = "Guardian shield" + name = "Защитная мембрана" + desc = "Толстая защитная мембрана, созданная Защитником Ужаса." icon = 'icons/effects/effects.dmi' icon_state = "terror_shield" lifetime = 16.5 SECONDS //max 2 shields existing at one time @@ -230,8 +229,8 @@ //SMOKE /obj/effect/proc_holder/spell/terror_smoke - name = "Smoke" - desc = "Erupt a smoke to confuse your enemies." + name = "Дымовая завеса" + desc = "Извергнуть дым, сбивающий врагов с толку." action_icon_state = "smoke" action_background_icon_state = "bg_terror" base_cooldown = 8 SECONDS @@ -254,8 +253,8 @@ //PARALYSING SMOKE /obj/effect/proc_holder/spell/terror_parasmoke - name = "Paralyzing Smoke" - desc = "Erupt a smoke to paralyze your enemies." + name = "Парализующий дым" + desc = "Извергнуть дым, парализующий врагов." action_icon_state = "biohazard2" action_background_icon_state = "bg_terror" base_cooldown = 60 SECONDS @@ -275,18 +274,18 @@ /obj/effect/proc_holder/spell/terror_parasmoke/cast(list/targets, mob/user = usr) - var/datum/effect_system/smoke_spread/chem/smoke = new + var/datum/effect_system/fluid_spread/smoke/chem/smoke = new create_reagents(2000) reagents.add_reagent("neurotoxin", 1000) reagents.add_reagent("capulettium_plus", 1000) - smoke.set_up(reagents, user, TRUE) + smoke.set_up(range = 2, location = user, carry = reagents, silent = TRUE) smoke.start() //TERRIFYING SHRIEK /obj/effect/proc_holder/spell/aoe/terror_shriek - name = "Terrify" - desc = "Emit a loud shriek to terrify your enemies." + name = "Ужасающий визг" + desc = "Издать громкий крик, пугающий врагов." action_icon_state = "terror_shriek" action_background_icon_state = "bg_terror" base_cooldown = 60 SECONDS @@ -306,13 +305,13 @@ /obj/effect/proc_holder/spell/aoe/terror_shriek/cast(list/targets, mob/user = usr) for(var/mob/living/target in targets) if(iscarbon(target)) - to_chat(target, "A spike of pain drives into your head and scrambles your thoughts!") + to_chat(target, span_danger("Всплеск боли пронзает вашу голову и путает ваши мысли!")) target.AdjustConfused(20 SECONDS) target.Slowed(2 SECONDS) target.Jitter(20 SECONDS) if(issilicon(target)) - to_chat(target, "ERROR $!(@ ERROR )#^! SENSORY OVERLOAD \[$(!@#") + to_chat(target, span_warning("ОШИБКА $!(@ ОШИБКА )#^! СЕНСОРНАЯ ПЕРЕГРУЗКА \[$(!@#")) target << 'sound/misc/interference.ogg' playsound(target, 'sound/machines/warning-buzzer.ogg', 50, TRUE) do_sparks(5, 1, target) @@ -325,8 +324,8 @@ //SHRIEK /obj/effect/proc_holder/spell/aoe/terror_shriek_princess - name = "Princess Shriek" - desc = "Emits a loud shriek that weakens your enemies." + name = "Ужасающий визг Принцессы" + desc = "Издать громкий визг, ослабляющий врагов." action_icon_state = "terror_shriek" action_background_icon_state = "bg_terror" base_cooldown = 60 SECONDS @@ -346,13 +345,13 @@ /obj/effect/proc_holder/spell/aoe/terror_shriek_princess/cast(list/targets, mob/user = usr) for(var/mob/living/target in targets) if(iscarbon(target)) - to_chat(target, "A spike of pain drives into your head and scrambles your thoughts!") + to_chat(target, span_danger("Всплеск боли пронзает вашу голову и путает ваши мысли!")) target.apply_damage(30, STAMINA) target.Slowed(10 SECONDS) target.Jitter(20 SECONDS) if(issilicon(target)) - to_chat(target, "ERROR $!(@ ERROR )#^! SENSORY OVERLOAD \[$(!@#") + to_chat(target, span_warning("ОШИБКА $!(@ ОШИБКА )#^! СЕНСОРНАЯ ПЕРЕГРУЗКА \[$(!@#")) target << 'sound/misc/interference.ogg' playsound(target, 'sound/machines/warning-buzzer.ogg', 50, TRUE) do_sparks(5, 1, target) @@ -362,8 +361,8 @@ //SLAM /obj/effect/proc_holder/spell/aoe/terror_slam - name = "Slam" - desc = "Slam the ground with your body." + name = "Топот" + desc = "Ударить землю своим телом." action_icon_state = "slam" action_background_icon_state = "bg_terror" base_cooldown = 35 SECONDS @@ -395,8 +394,8 @@ //JELLY PRODUCTION /obj/effect/proc_holder/spell/aoe/conjure/build/terror_jelly - name = "Produce jelly" - desc = "Produce an organic jelly that heals spiders." + name = "Секреция желе" + desc = "Произвести органическое желе, лечащее пауков." action_icon_state = "spiderjelly" action_background_icon_state = "bg_terror" base_cooldown = 30 SECONDS @@ -409,7 +408,7 @@ //MASS HEAL /obj/effect/proc_holder/spell/aoe/terror_healing/greater - name = "Massive healing" + name = "Массовое исцеление" base_cooldown = 40 SECONDS aoe_range = 7 heal_amount = 30 @@ -422,8 +421,8 @@ //SHRIEK /obj/effect/proc_holder/spell/aoe/terror_shriek_queen - name = "Queen Shriek" - desc = "Emit a loud shriek that weakens your enemies." + name = "Ужасающий визг Королевы" + desc = "Издать громкий визг, ослабляющий врагов." action_icon_state = "terror_shriek" action_background_icon_state = "bg_terror" base_cooldown = 45 SECONDS @@ -443,14 +442,14 @@ for(var/turf/target_turf in targets) for(var/mob/living/target in target_turf.contents) if(iscarbon(target)) - to_chat(target, "A spike of pain drives into your head and scrambles your thoughts!") + to_chat(target, span_danger("Всплеск боли пронзает вашу голову и путает ваши мысли!")) target.AdjustWeakened(2 SECONDS) target.apply_damage(50, STAMINA) target.Jitter(40 SECONDS) target.Slowed(14 SECONDS) if(issilicon(target)) - to_chat(target, "ERROR $!(@ ERROR )#^! SENSORY OVERLOAD \[$(!@#") + to_chat(target, span_warning("ОШИБКА $!(@ ОШИБКА )#^! СЕНСОРНАЯ ПЕРЕГРУЗКА \[$(!@#")) target << 'sound/misc/interference.ogg' playsound(target, 'sound/machines/warning-buzzer.ogg', 50, 1) do_sparks(5, 1, target) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm index 5b84eee0a2ff..700b3bcec6da 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm @@ -137,27 +137,35 @@ if(!web_type) return if(!isturf(loc)) - to_chat(src, "Webs can only be spun while standing on a floor.") + to_chat(src, span_danger("Паутину можно плести только стоя на полу.")) return var/turf/mylocation = loc - visible_message("[src] begins to secrete a sticky substance.") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] начинает выделять липкое вещество.")) playsound(src.loc, 'sound/creatures/terrorspiders/web.ogg', 50, 1) if(do_after(src, delay_web, loc)) if(loc != mylocation) return else if(isspaceturf(loc)) - to_chat(src, "Webs cannot be spun in space.") + to_chat(src, span_danger("Паутину невозможно плести в космосе.")) else var/obj/structure/spider/terrorweb/T = locate() in get_turf(src) if(T) - to_chat(src, "There is already a web here.") + to_chat(src, span_danger("Здесь уже есть паутина.")) else var/obj/structure/spider/terrorweb/W = new web_type(loc) W.creator_ckey = ckey /obj/structure/spider/terrorweb name = "terror web" - desc = "it's stringy and sticky" + desc = "Вязкая и липкая паутина." + ru_names = list( + NOMINATIVE = "паутина Ужаса", + GENITIVE = "паутины Ужаса", + DATIVE = "паутине Ужаса", + ACCUSATIVE = "паутину Ужаса", + INSTRUMENTAL = "паутиной Ужаса", + PREPOSITIONAL = "паутине Ужаса" + ) icon = 'icons/effects/effects.dmi' anchored = TRUE // prevents people dragging it density = FALSE // prevents it blocking all movement @@ -181,7 +189,7 @@ if(istype(mover, /mob/living/simple_animal/hostile/poison/giant_spider) || isterrorspider(mover)) return TRUE - if(istype(mover, /obj/item/projectile/terrorspider)) + if(istype(mover, /obj/projectile/terrorspider)) return TRUE if(isliving(mover)) @@ -190,7 +198,7 @@ return TRUE if(prob(80)) - to_chat(mover, span_danger("You get stuck in [src] for a moment.")) + to_chat(mover, span_danger("Вы на мгновение застреваете в [declent_ru(PREPOSITIONAL)].")) living_mover.Weaken(2 SECONDS) // 2 seconds, wow living_mover.Slowed(10 SECONDS) if(iscarbon(mover)) @@ -203,9 +211,9 @@ return prob(20) -/obj/structure/spider/terrorweb/bullet_act(obj/item/projectile/Proj) +/obj/structure/spider/terrorweb/bullet_act(obj/projectile/Proj) if(Proj.damage_type != BRUTE && Proj.damage_type != BURN) - visible_message("[src] is undamaged by [Proj]!") + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] невосприимчива к [Proj.declent_ru(DATIVE)]!"), projectile_message = TRUE) // Webs don't care about disablers, tasers, etc. Or toxin damage. They're organic, but not alive. return ..() @@ -240,9 +248,9 @@ if(!istype(O, /obj/structure/spider)) choices += O if(choices.len) - cocoon_target = input(src,"What do you wish to cocoon?") in null|choices + cocoon_target = tgui_input_list(src, "Что вы хотите замотать в кокон?", "", choices) else - to_chat(src, "There is nothing nearby you can wrap.") + to_chat(src, span_danger("Рядом нет ничего, что можно было бы завернуть в кокон.")) /mob/living/simple_animal/hostile/poison/terror_spider/proc/DoWrap() if(cocoon_target && busy != SPINNING_COCOON) @@ -250,7 +258,7 @@ cocoon_target = null return busy = SPINNING_COCOON - visible_message("[src] begins to secrete a sticky substance around [cocoon_target].") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] начинает выделять липкое вещество вокруг [cocoon_target.declent_ru(GENITIVE)].")) playsound(src.loc, 'sound/creatures/terrorspiders/wrap.ogg', 120, 1) stop_automated_movement = 1 SSmove_manager.stop_looping(src) @@ -277,10 +285,12 @@ if(iscarbon(L)) apply_status_effect(STATUS_EFFECT_TERROR_FOOD_REGEN) fed++ - visible_message("[src] sticks a proboscis into [L] and sucks a viscous substance out.") - to_chat(src, "You begin to regenerate quickly!") + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] втыкает хоботок в [L.declent_ru(ACCUSATIVE)] и высасывает вязкое вещество.")) + to_chat(src, span_notice("Вы начинаете быстро восстанавливаться!")) + if(L.mind && ishuman(L)) + SEND_SIGNAL(mind, COMSIG_HUMAN_EATEN) else - visible_message("[src] wraps [L] in a web.") + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] заматывает [L.declent_ru(ACCUSATIVE)] в паутину.")) large_cocoon = 1 last_cocoon_object = 0 L.forceMove(C) @@ -302,7 +312,7 @@ if(C.welded) valid_target = TRUE if(!valid_target) - to_chat(src, "No welded vent or scrubber nearby!") + to_chat(src, span_warning("Рядом нет заваренного вентиляционного отверстия или скраббера!")) return playsound(get_turf(src), 'sound/creatures/terrorspiders/ventbreak.ogg', 75, 0) if(do_after(src, 4.3 SECONDS, loc)) @@ -310,13 +320,13 @@ if(P.welded) P.set_welded(FALSE) forceMove(P.loc) - P.visible_message("[src] smashes the welded cover off [P]!") + P.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] выбивает приваренную крышку [P.declent_ru(GENITIVE)]!")) return for(var/obj/machinery/atmospherics/unary/vent_scrubber/C in range(1, get_turf(src))) if(C.welded) C.set_welded(FALSE) forceMove(C.loc) - C.visible_message("[src] smashes the welded cover off [C]!") + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] выбивает приваренную крышку [C.declent_ru(GENITIVE)]!")) return - to_chat(src, "There is no welded vent or scrubber close enough to do this.") + to_chat(src, span_danger("Поблизости нет заваренного вентиляционного отверстия или скраббера.")) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/builder.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/builder.dm index 799821a1547d..cc81a6161e42 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/builder.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/builder.dm @@ -10,7 +10,15 @@ /mob/living/simple_animal/hostile/poison/terror_spider/builder name = "Drone of Terror" - desc = "An ominous-looking spider, he appears to be heavy despite size." + desc = "Зловещий на вид паук, несмотря на размер, он кажется тяжелым." + ru_names = list( + NOMINATIVE = "Дрон Ужаса", + GENITIVE = "Дрона Ужаса", + DATIVE = "Дрону Ужаса", + ACCUSATIVE = "Дрона Ужаса", + INSTRUMENTAL = "Дроном Ужаса", + PREPOSITIONAL = "Дроне Ужаса", + ) gender = MALE ai_target_method = TS_DAMAGE_BRUTE icon_state = "terror_drone" @@ -30,7 +38,7 @@ ranged_cooldown_time = 30 speed = 1 projectilesound = 'sound/creatures/terrorspiders/spit3.ogg' - projectiletype = /obj/item/projectile/terrorspider/builder + projectiletype = /obj/projectile/terrorspider/builder web_type = /obj/structure/spider/terrorweb/queen/builder can_wrap = FALSE tts_seed = "F_darkelf" @@ -50,10 +58,10 @@ var/inject_target = pick(BODY_ZONE_CHEST, BODY_ZONE_HEAD) if(HAS_TRAIT(L, TRAIT_INCAPACITATED) || L.can_inject(null, FALSE, inject_target, FALSE)) L.reagents.add_reagent("frostoil", 20) - visible_message("[src] buries its long fangs deep into the [inject_target] of [target]!") + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] вонзает свои длинные клыки глубоко в [inject_target] [target.declent_ru(ACCUSATIVE)]!")) else L.reagents.add_reagent("frostoil", 10) - visible_message("[src] buries its long fangs deep into the [inject_target] of [target]!") + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] вонзает свои длинные клыки глубоко в [inject_target] [target.declent_ru(ACCUSATIVE)]!")) return TRUE /mob/living/simple_animal/hostile/poison/terror_spider/builder/Move(atom/newloc, direct = NONE, glide_size_override = 0, update_dir = TRUE) //moves slow while not in web, but fast while in. does not regenerate if not in web @@ -71,15 +79,23 @@ max_integrity = 35 opacity = TRUE name = "drone web" - desc = "Extremely thick web." + desc = "Очень толстая паутина." + ru_names = list( + NOMINATIVE = "паутина Дрона Ужаса", + GENITIVE = "паутиы Дрона Ужаса", + DATIVE = "паутине Дрона Ужаса", + ACCUSATIVE = "паутину Дрона Ужаса", + INSTRUMENTAL = "паутиной Дрона Ужаса", + PREPOSITIONAL = "паутине Дрона Ужаса", + ) -/obj/item/projectile/terrorspider/builder +/obj/projectile/terrorspider/builder name = "drone venom" icon_state = "toxin2" damage = 15 stamina = 15 -/obj/item/projectile/terrorspider/drone/on_hit(atom/target, blocked = 0, hit_zone) +/obj/projectile/terrorspider/drone/on_hit(atom/target, blocked = 0, hit_zone) if((blocked != 100) && iscarbon(target)) var/mob/living/carbon/C = target C.Slowed(2 SECONDS) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/chem.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/chem.dm index 929407d63c42..23186141a06f 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/chem.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/chem.dm @@ -2,9 +2,9 @@ // Terror Spider, Black, Deadly Venom /datum/reagent/terror_black_toxin - name = "Black Terror venom" + name = "Яд Вдовы Ужаса" id = "terror_black_toxin" - description = "An incredibly toxic venom injected by the Black Widow spider." + description = "Невероятно токсичный яд, который впрыскивает Вдова Ужаса." can_synth = FALSE color = "#cc00ff" metabolization_rate = 0.25 * REAGENTS_METABOLISM @@ -38,9 +38,9 @@ //egg toxin for defiler /datum/reagent/terror_eggs - name = "terror spider eggs" + name = "Яйца Паука Ужаса" id = "terror_eggs" - description = "An incredibly toxic venom that spreads infestation." + description = "Стремительно растущие паучьи яйца." can_synth = FALSE color = "#ffffff" metabolization_rate = 1 * REAGENTS_METABOLISM diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/defiler.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/defiler.dm index 8d12f3c58d18..f6c7dad5e3b0 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/defiler.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/defiler.dm @@ -9,7 +9,16 @@ /mob/living/simple_animal/hostile/poison/terror_spider/defiler name = "Defiler of Terror" - desc = "An ominous-looking white spider, its ghostly eyes and vicious-looking fangs are the stuff of nightmares." + desc = "Зловещий на вид белый паук, с призрачными глазами и злобными кошмарными клыками." + ru_names = list( + NOMINATIVE = "Осквернитель Ужаса", + GENITIVE = "Осквернителя Ужаса", + DATIVE = "Осквернителю Ужаса", + ACCUSATIVE = "Осквернителя Ужаса", + INSTRUMENTAL = "Осквернителем Ужаса", + PREPOSITIONAL = "Осквернителе Ужаса", + ) + gender = MALE ai_target_method = TS_DAMAGE_POISON icon_state = "terror_white" icon_living = "terror_white" @@ -22,13 +31,13 @@ melee_damage_upper = 1 spider_opens_doors = 2 spider_tier = TS_TIER_3 - gender = MALE web_type = /obj/structure/spider/terrorweb/white delay_web = 10 special_abillity = list(/obj/effect/proc_holder/spell/terror_smoke, /obj/effect/proc_holder/spell/terror_parasmoke, /obj/effect/proc_holder/spell/aoe/terror_shriek) spider_intro_text = "Будучи Осквернителем Ужаса, ваша цель - атаковать ничего не подозревающих гуманоидов, чтобы заразить их яйцами. Вы наносите мало урона, но можете парализовать цель за три укуса, а ваш яд заставит её замолчать. Вы также можете генерировать различные дымы вредящие противникам. И помните, не нужно убивать заражённых, они послужат носителями для новых пауков!" + datum_type = /datum/antagonist/terror_spider/main_spider/defiler /mob/living/simple_animal/hostile/poison/terror_spider/defiler/LoseTarget() @@ -55,17 +64,17 @@ var/inject_target = pick(BODY_ZONE_CHEST, BODY_ZONE_HEAD) if(HAS_TRAIT(L, TRAIT_INCAPACITATED) || L.can_inject(null, FALSE, inject_target, FALSE) && prob(50)) new /obj/item/organ/internal/body_egg/terror_eggs(L) - visible_message("[src] buries its long fangs deep into the [inject_target] of [target]!") + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] вонзает свои длинные клыки глубоко в [inject_target] [target.declent_ru(ACCUSATIVE)]!")) else if(prob(20)) new /obj/item/organ/internal/body_egg/terror_eggs(L) - visible_message("[src] pierces armour and buries its long fangs deep into the [inject_target] of [target]!") + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] пробивает броню и вонзает свои длинные клыки глубоко в [inject_target] [target.declent_ru(ACCUSATIVE)]!")) if(!ckey && !IsTSInfected(L)) step_away(src, L) step_away(src, L) LoseTarget() step_away(src, L) - visible_message("[src] jumps away from [L]!") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] отскакивает от [L.declent_ru(ACCUSATIVE)]!")) /proc/IsTSInfected(mob/living/carbon/C) // Terror AI requires this if(C.get_int_organ(/obj/item/organ/internal/body_egg)) @@ -74,12 +83,21 @@ /obj/structure/spider/terrorweb/white name = "infested web" - desc = "This web is covered in hundreds of tiny, biting spiders - and their eggs." + desc = "Эта паутина покрыта сотнями крошечных кусающих пауков и их яицами." + ru_names = list( + NOMINATIVE = "зараженная паутина", + GENITIVE = "зараженной паутины", + DATIVE = "зараженной паутине", + ACCUSATIVE = "зараженную паутину", + INSTRUMENTAL = "зараженной паутиной", + PREPOSITIONAL = "зараженной паутине", + ) + /obj/structure/spider/terrorweb/white/web_special_ability(mob/living/carbon/C) if(istype(C)) if(!IsTSInfected(C) && ishuman(C)) var/inject_target = pick(BODY_ZONE_CHEST, BODY_ZONE_HEAD) if(C.can_inject(null, FALSE, inject_target, FALSE)) - to_chat(C, "[src] slices into you!") + to_chat(C, "[capitalize(declent_ru(NOMINATIVE))] врезается в вас!") new /obj/item/organ/internal/body_egg/terror_eggs(C) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/destroyer.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/destroyer.dm index d5ae30f31013..ec38af5cafb1 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/destroyer.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/destroyer.dm @@ -9,7 +9,15 @@ /mob/living/simple_animal/hostile/poison/terror_spider/destroyer name = "Destroyer of Terror" - desc = "An ominous-looking spider, colored brown like the dirt it crawled out of. Its forearms have sharp digging claws." + desc = "Зловещего вида паук, коричневый, как земля, из которой он выполз. На предплечьях имеются острые когти." + ru_names = list( + NOMINATIVE = "Разрушитель Ужаса", + GENITIVE = "Разрушителя Ужаса", + DATIVE = "Разрушителю Ужаса", + ACCUSATIVE = "Разрушителя Ужаса", + INSTRUMENTAL = "Разрушителем Ужаса", + PREPOSITIONAL = "Разрушителе Ужаса", + ) ai_target_method = TS_DAMAGE_BRUTE icon_state = "terror_brown" icon_living = "terror_brown" diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress.dm index d10b45ae2d6c..feeb5e629dde 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress.dm @@ -9,7 +9,15 @@ /mob/living/simple_animal/hostile/poison/terror_spider/queen/empress name = "Empress of Terror" - desc = "The unholy offspring of spiders, nightmares, and lovecraft fiction." + desc = "Нечестивое порождение пауков, кошмаров и фантастики Лавкрафта." + ru_names = list( + NOMINATIVE = "Императрица Ужаса", + GENITIVE = "Императрицы Ужаса", + DATIVE = "Императрице Ужаса", + ACCUSATIVE = "Императрицу Ужаса", + INSTRUMENTAL = "Императрицой Ужаса", + PREPOSITIONAL = "Императрице Ужаса", + ) ai_target_method = TS_DAMAGE_SIMPLE maxHealth = 1000 health = 1000 @@ -19,7 +27,7 @@ ai_playercontrol_allowtype = 0 canlay = 1000 spider_tier = TS_TIER_5 - projectiletype = /obj/item/projectile/terrorspider/empress + projectiletype = /obj/projectile/terrorspider/empress icon = 'icons/mob/terrorspider64.dmi' pixel_x = -16 move_resist = MOVE_FORCE_STRONG // no more pushing a several hundred if not thousand pound spider @@ -27,12 +35,17 @@ icon_state = "terror_empress" icon_living = "terror_empress" icon_dead = "terror_empress_dead" + datum_type = /datum/antagonist/terror_spider/main_spider/empress var/datum/action/innate/terrorspider/queen/empress/empresslings/empresslings_action var/datum/action/innate/terrorspider/queen/empress/empresserase/empresserase_action tts_seed = "Queen" + spider_intro_text = "Вы - Императрица Ужаса, вершина иерархии гнезда и одно из самых опасных существ этого мира. Управляйте, разрушайте, захватывайте. Теперь это ВАША станция." /mob/living/simple_animal/hostile/poison/terror_spider/queen/empress/New() ..() + grant_actions() + +/mob/living/simple_animal/hostile/poison/terror_spider/queen/empress/proc/grant_actions() empresslings_action = new() empresslings_action.Grant(src) empresserase_action = new() @@ -40,46 +53,59 @@ /mob/living/simple_animal/hostile/poison/terror_spider/queen/empress/spider_special_action() return - +/mob/living/simple_animal/hostile/poison/terror_spider/queen/empress/getSpiderLevel() + return 50 /mob/living/simple_animal/hostile/poison/terror_spider/queen/empress/NestMode() ..() queeneggs_action.button.name = "Empress Eggs" /mob/living/simple_animal/hostile/poison/terror_spider/queen/empress/LayQueenEggs() - var/eggtype = input("What kind of eggs?") as null|anything in list(TS_DESC_QUEEN, TS_DESC_MOTHER, TS_DESC_PRINCE, TS_DESC_PRINCESS, TS_DESC_KNIGHT, TS_DESC_LURKER, TS_DESC_HEALER, TS_DESC_WIDOW, TS_DESC_GUARDIAN, TS_DESC_DEFILER, TS_DESC_DESTROYER) - var/numlings = input("How many in the batch?") as null|anything in list(1, 2, 3, 4, 5, 10, 15, 20, 30, 40, 50) - if(eggtype == null || numlings == null) - to_chat(src, "Cancelled.") + var/eggtype = tgui_input_list(usr, "Какой тип яиц?", "Тип яиц", list(TS_DESC_QUEEN, TS_DESC_MOTHER, TS_DESC_PRINCE, TS_DESC_PRINCESS, TS_DESC_KNIGHT, TS_DESC_LURKER, TS_DESC_HEALER, TS_DESC_WIDOW, TS_DESC_GUARDIAN, TS_DESC_DEFILER, TS_DESC_DESTROYER)) + var/numlings = tgui_input_number(usr, "Сколько в кладке?", "Количество яиц", 0, min(canlay, 50), 0) + if(!eggtype || !numlings) + to_chat(src, span_danger("Отменено.")) return switch(eggtype) if(TS_DESC_KNIGHT) DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/knight, numlings) + canlay -= numlings if(TS_DESC_LURKER) DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/lurker, numlings) + canlay -= numlings if(TS_DESC_HEALER) DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/healer, numlings) + canlay -= numlings if(TS_DESC_WIDOW) DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/widow, numlings) + canlay -= numlings if(TS_DESC_GUARDIAN) DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/guardian, numlings) + canlay -= numlings if(TS_DESC_DEFILER) DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/defiler, numlings) + canlay -= numlings if(TS_DESC_DESTROYER) DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/destroyer, numlings) + canlay -= numlings if(TS_DESC_PRINCE) DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/prince, numlings) + canlay -= numlings if(TS_DESC_PRINCESS) DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/queen/princess, numlings) + canlay -= numlings if(TS_DESC_MOTHER) DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/mother, numlings) + canlay -= numlings if(TS_DESC_QUEEN) DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/queen, numlings) else - to_chat(src, "Unrecognized egg type.") + to_chat(src, span_danger("Неизвестный тип яйца.")) /mob/living/simple_animal/hostile/poison/terror_spider/queen/empress/proc/EmpressLings() - var/numlings = input("How many?") as null|anything in list(10, 20, 30, 40, 50) - var/sbpc = input("%chance to be stillborn?") as null|anything in list(0, 25, 50, 75, 100) + var/numlings = tgui_input_number(usr, "Сколько?", "", 10, 50, 10) + var/sbpc = tgui_input_number(usr, "Шанс быть мертворождённым?", "", 0, 100, 0) + if(!numlings || isnull(sbpc)) + return for(var/i=0, iThrough the hivemind, the raw power of [src] floods into your body, burning it from the inside out!") - for(var/obj/structure/spider/eggcluster/terror_eggcluster/T in GLOB.ts_egg_list) - qdel(T) - for(var/obj/structure/spider/spiderling/terror_spiderling/T in GLOB.ts_spiderling_list) - qdel(T) - to_chat(src, "All Terror Spiders, except yourself, will die off shortly.") + to_chat(T, span_userdanger("Через коллективный разум грубая сила [declent_ru(GENITIVE)] вливается в ваше тело, сжигая его изнутри!")) + var/datum/team/terror_spiders/spider_team = GLOB.antagonist_teams[/datum/team/terror_spiders] + spider_team?.erase_eggs() + to_chat(src, span_userdanger("Все пауки ужаса, кроме вас, вскоре вымрут.")) -/obj/item/projectile/terrorspider/empress +/obj/projectile/terrorspider/empress name = "empress venom" icon_state = "toxin5" damage = 90 damage_type = BRUTE + +/mob/living/simple_animal/hostile/poison/terror_spider/queen/empress/weak + canlay = 10 + spider_spawnfrequency = 1000 + ai_playercontrol_allowtype = TRUE + +/mob/living/simple_animal/hostile/poison/terror_spider/queen/empress/weak/getSpiderLevel() + return 7 + +/mob/living/simple_animal/hostile/poison/terror_spider/queen/empress/weak/grant_actions() + empresserase_action = new() + empresserase_action.Grant(src) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/ghost.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/ghost.dm index 01b1a965f6d4..0450973d04f7 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/ghost.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/ghost.dm @@ -1,47 +1,30 @@ - -/mob/living/simple_animal/hostile/poison/terror_spider/Topic(href, href_list) - if(href_list["activate"]) - var/mob/dead/observer/ghost = usr - if(istype(ghost)) - humanize_spider(ghost) - -/mob/living/simple_animal/hostile/poison/terror_spider/attack_ghost(mob/user) - humanize_spider(user) - -/mob/living/simple_animal/hostile/poison/terror_spider/proc/humanize_spider(mob/user) - if(key)//Someone is in it - return - var/error_on_humanize = "" - var/humanize_prompt = "Take direct control of [src]?" - humanize_prompt += " Role: [spider_intro_text]" - if(user.ckey in GLOB.ts_ckey_blacklist) - error_on_humanize = "You are not able to control any terror spider this round." - else if(cannotPossess(user)) - error_on_humanize = "You have enabled antag HUD and are unable to re-enter the round." +/mob/living/simple_animal/hostile/poison/terror_spider/proc/extra_checks(mob/harbinger) + if(harbinger.ckey in GLOB.ts_ckey_blacklist) + to_chat(harbinger, "В этом раунде вы не можете управлять Пауками Ужаса.") + return FALSE + else if(cannotPossess(harbinger)) + to_chat(harbinger, "Вы включили Antag HUD и не можете повторно войти в раунд..") + return FALSE else if(spider_awaymission) - error_on_humanize = "Terror spiders that are part of an away mission cannot be controlled by ghosts." + to_chat(harbinger, "Пауки Ужаса из гейтов не могут управляться игроками.") + return FALSE else if(!ai_playercontrol_allowtype) - error_on_humanize = "This specific type of terror spider is not player-controllable." - else if(degenerate) - error_on_humanize = "Dying spiders are not player-controllable." - else if(stat == DEAD) - error_on_humanize = "Dead spiders are not player-controllable." - else if(!(user in GLOB.respawnable_list)) - error_on_humanize = "You are not able to rejoin the round." - if(jobban_isbanned(user, "Syndicate") || jobban_isbanned(user, "alien")) - to_chat(user,"You are jobbanned from role of syndicate and/or alien lifeform.") - return - if(error_on_humanize == "") - var/spider_ask = tgui_alert(user, humanize_prompt, "Join as Terror Spider?", list("Yes", "No")) - if(spider_ask != "Yes" || !src || QDELETED(src)) - return - else - to_chat(user, "Cannot inhabit spider: [error_on_humanize]") - return - if(key) - to_chat(user, "Someone else already took this spider.") - return - key = user.key - give_intro_text() + to_chat(harbinger, "Этот конкретный тип Паука Ужаса не может управляться игроком.") + return FALSE + else if(degenerate || GLOB.global_degenerate) + to_chat(harbinger, "Умирающими Пауками нельзя управлять.") + return FALSE + else if(!(harbinger in GLOB.respawnable_list)) + to_chat(harbinger, "Вы не можете повторно присоединиться к раунду.") + return FALSE + return TRUE + +/mob/living/simple_animal/hostile/poison/terror_spider/proc/humanize_spider() + add_datum_if_not_exist() for(var/mob/dead/observer/G in GLOB.player_list) - G.show_message("A ghost has taken control of [src]. ([ghost_follow_link(src, ghost=G)]).") + G.show_message("Призрак взял управление [declent_ru(INSTRUMENTAL)]. ([ghost_follow_link(src, ghost=G)]).") + + +/mob/living/simple_animal/hostile/poison/terror_spider/proc/add_datum_if_not_exist() + if(mind && !mind.has_antag_datum(/datum/antagonist/terror_spider)) + mind.add_antag_datum(datum_type, /datum/team/terror_spiders) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/guardian.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/guardian.dm index 2496fb395898..8e6f22721e30 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/guardian.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/guardian.dm @@ -10,12 +10,20 @@ /mob/living/simple_animal/hostile/poison/terror_spider/guardian name = "Guardian of Terror" - desc = "An ominous-looking purple spider. It looks about warily, as if waiting for something." + desc = "Зловещего вида фиолетовый паук. Он смотрит по сторонам настороженно, словно чего-то ожидая." ai_target_method = TS_DAMAGE_BRUTE + ru_names = list( + NOMINATIVE = "Защитник Ужаса", + GENITIVE = "Защитника Ужаса", + DATIVE = "Защитнику Ужаса", + ACCUSATIVE = "Защитника Ужаса", + INSTRUMENTAL = "Защитником Ужаса", + PREPOSITIONAL = "Защитнике Ужаса", + ) + gender = MALE icon_state = "terror_purple" icon_living = "terror_purple" icon_dead = "terror_purple_dead" - gender = MALE maxHealth = 250 health = 250 damage_coeff = list(BRUTE = 0.6, BURN = 1.1, TOX = 1, CLONE = 0, STAMINA = 0, OXY = 0.2) @@ -38,7 +46,7 @@ delay_web = 20 special_abillity = list(/obj/effect/proc_holder/spell/aoe/conjure/build/terror_shield) can_wrap = FALSE - spider_intro_text = "Будучи Защитником Ужаса, ваша задача - охрана гнезда, яиц, принцесс и королевы. Вы очень сильны и живучи, используйте это, чтобы защитить выводок. Ваша активная способность создает временный неразрушимый барьер, через который могут пройти только пауки. Если встанет выбор, спасти принцессу, или королеву, при этои обрекая себя на смерть - делайте это без раздумий!." + spider_intro_text = "Будучи Защитником Ужаса, ваша задача - охрана гнезда, яиц, Принцесс и Королевы. Вы очень сильны и живучи, используйте это, чтобы защитить выводок. Ваша активная способность создаёт временный неразрушимый барьер, через который могут пройти только пауки. Если встанет выбор, спасти Принцессу, или Королеву, при этои обрекая себя на смерть - делайте это без раздумий!" ai_spins_webs = FALSE tts_seed = "Avozu" var/queen_visible = TRUE @@ -53,7 +61,7 @@ L.apply_damage(15, STAMINA) if(prob(20)) - visible_message("[src] rams into [L], knocking [L.p_them()] to the floor!") + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] врезается в [L.declent_ru(ACCUSATIVE)], сбивая с ног!")) L.adjustBruteLoss(20) L.Weaken(4 SECONDS) @@ -64,7 +72,7 @@ if(!degenerate && !spider_myqueen.degenerate) degenerate = TRUE spider_myqueen.DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/guardian, 1) - visible_message("[src] chitters in the direction of [spider_myqueen]!") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] стрекочет в направлении [spider_myqueen.declent_ru(GENITIVE)]!")) return ..() /mob/living/simple_animal/hostile/poison/terror_spider/guardian/Life(seconds, times_fired) @@ -81,7 +89,7 @@ if(Q.stat == DEAD) spider_myqueen = null degenerate = TRUE - to_chat(src, "[Q] has died! Her power no longer sustains you!") + to_chat(src, span_userdanger("[capitalize(Q.declent_ru(NOMINATIVE))] умерла! Её сила больше не поддерживает вас!")) return if(get_dist(src, Q) < vision_range) @@ -92,23 +100,23 @@ if(queen_visible) cycles_noqueen = 0 if(spider_debug) - to_chat(src, "[Q] visible.") + to_chat(src, span_notice("[capitalize(Q.declent_ru(NOMINATIVE))] в зоне видимости.")) else cycles_noqueen++ if(spider_debug) - to_chat(src, "[Q] NOT visible. Cycles: [cycles_noqueen].") + to_chat(src, span_danger("[capitalize(Q.declent_ru(NOMINATIVE))] НЕ в зоне видимости. Цикл: [cycles_noqueen].")) var/area/A = get_area(spider_myqueen) switch(cycles_noqueen) if(6) // one minute without queen sighted - to_chat(src, "You have become separated from [Q]. Return to her in [A].") + to_chat(src, span_danger("Вы отделились от [Q.declent_ru(GENITIVE)]. Вернитесь к ней в [A.declent_ru(PREPOSITIONAL)].")) if(12) // two minutes without queen sighted - to_chat(src, "Your long separation from [Q] weakens you. Return to her in [A].") + to_chat(src, span_danger("Ваша долгая разлука с [Q.declent_ru(INSTRUMENTAL)] ослабляет вас. Вернитесь к ней в [A.declent_ru(PREPOSITIONAL)].")) if(18) // three minutes without queen sighted, kill them. degenerate = TRUE - to_chat(src, "Your link to [Q] has been broken! Your life force starts to drain away!") + to_chat(src, span_userdanger("Ваша связ с [Q] разорвана! Ваша жизненная сила начинает угасать!")) melee_damage_lower = 5 melee_damage_upper = 10 @@ -121,16 +129,24 @@ if(spider_myqueen) var/area/A = get_area(spider_myqueen) if(degenerate) - status_tab_data[++status_tab_data.len] = list("Link:", "BROKEN") // color=red + status_tab_data[++status_tab_data.len] = list("Связь:", "РАЗРУШЕНА") // color=red else if(queen_visible) - status_tab_data[++status_tab_data.len] = list("Link:", "[spider_myqueen] is near") // color=green + status_tab_data[++status_tab_data.len] = list("Связь:", "[capitalize(spider_myqueen.declent_ru(NOMINATIVE))] рядом") // color=green else if(cycles_noqueen >= 18) - status_tab_data[++status_tab_data.len] = list("Link:", "Critical - return to [spider_myqueen] in [A]") // color=red + status_tab_data[++status_tab_data.len] = list("Связь:", "Критическая - вернитесь к [spider_myqueen.declent_ru(DATIVE)] в [A.declent_ru(PREPOSITIONAL)]") // color=red else - status_tab_data[++status_tab_data.len] = list("Link:", "Warning - return to [spider_myqueen] in [A]") // color=orange + status_tab_data[++status_tab_data.len] = list("Связь:", "Опасная - вернитесь к [spider_myqueen.declent_ru(DATIVE)] в [A.declent_ru(PREPOSITIONAL)]") // color=orange /obj/structure/spider/terrorweb/purple name = "thick web" - desc = "This web is so thick, most cannot see beyond it." + desc = "Эта паутина настолько толстая, что большинство не может видеть сквозь нее." opacity = TRUE max_integrity = 40 + ru_names = list( + NOMINATIVE = "толстая паутина", + GENITIVE = "толстой паутины", + DATIVE = "толстой паутине", + ACCUSATIVE = "толстую паутину", + INSTRUMENTAL = "толстой паутиной", + PREPOSITIONAL = "толстой паутине", + ) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/healer.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/healer.dm index b7c2be1a5f50..11ed8272d995 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/healer.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/healer.dm @@ -10,7 +10,16 @@ /mob/living/simple_animal/hostile/poison/terror_spider/healer name = "Healer of Terror" - desc = "An ominous-looking green spider. It has a small egg-sac attached to it, and dried blood stains on its carapace." + desc = "Зловещий зелёный паук. К нему прикреплен небольшой яичный мешок, а на панцире виднеются засохшие пятна крови." + ru_names = list( + NOMINATIVE = "Лекарь Ужаса", + GENITIVE = "Лекаря Ужаса", + DATIVE = "Лекарю Ужаса", + ACCUSATIVE = "Лекаря Ужаса", + INSTRUMENTAL = "Лекарем Ужаса", + PREPOSITIONAL = "Лекаре Ужаса", + ) + gender = MALE ai_target_method = TS_DAMAGE_BRUTE icon_state = "terror_green" icon_living = "terror_green" @@ -23,7 +32,7 @@ melee_damage_upper = 15 web_type = /obj/structure/spider/terrorweb/green special_abillity = list(/obj/effect/proc_holder/spell/aoe/terror_healing) - spider_intro_text = "Будучи Лекарем Ужаса, ваша задача исцелять других пауков и откладывать яйца. Чем больше трупов вы поглотили, тем эффективнее исцеление, однако, для откладывания яиц, вам также необходимы трупы." + spider_intro_text = "Будучи Лекарем Ужаса, ваша задача - исцелять других пауков и откладывать яйца. Чем больше трупов вы поглотили, тем эффективнее исцеление и тем больше яиц вы сможете отложить." var/feedings_to_lay = 3 var/datum/action/innate/terrorspider/greeneggs/greeneggs_action tts_seed = "Jolene" @@ -43,10 +52,10 @@ /mob/living/simple_animal/hostile/poison/terror_spider/healer/proc/DoLayGreenEggs() var/obj/structure/spider/eggcluster/E = locate() in get_turf(src) if(E) - to_chat(src, "There is already a cluster of eggs here!") + to_chat(src, span_notice("Здесь уже имеется кладка яиц!")) return if(fed < feedings_to_lay) - to_chat(src, "You must wrap more humanoid prey before you can do this!") + to_chat(src, span_warning("Прежде чем вы сможете это сделать, вам нужно обернуть в паутину больше гуманоидной добычи!")) return var/list/eggtypes = list(TS_DESC_KNIGHT, TS_DESC_LURKER, TS_DESC_HEALER, TS_DESC_REAPER, TS_DESC_BUILDER) var/list/spider_array = CountSpidersDetailed(FALSE) @@ -56,19 +65,19 @@ eggtypes += TS_DESC_WIDOW var/eggtype = pick(eggtypes) if(client) - eggtype = input("What kind of eggs?") as null|anything in eggtypes + eggtype = tgui_input_list(usr, "Какой тип яиц?", "", eggtypes) if(!(eggtype in eggtypes)) - to_chat(src, "Unrecognized egg type.") - return 0 + to_chat(src, span_danger("Неизвестный тип яйца.")) + return FALSE if(!isturf(loc)) // This has to be checked after we ask the user what egg type. Otherwise they could trigger prompt THEN move into a vent. - to_chat(src, "Eggs can only be laid while standing on a floor.") + to_chat(src, span_danger("Яйца можно откладывать только стоя на полу.")) return if(fed < feedings_to_lay) // We have to check this again after the popup, to account for people spam-clicking the button, then doing all the popups at once. - to_chat(src, "You must wrap more humanoid prey before you can do this!") + to_chat(src, span_warning("Прежде чем вы сможете это сделать, вам нужно обернуть в паутину больше гуманоидной добычи!")) return - visible_message("[src] lays a cluster of eggs.") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] откладывает яица.")) if(eggtype == TS_DESC_KNIGHT) DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/knight, 1) else if(eggtype == TS_DESC_LURKER) @@ -84,7 +93,7 @@ else if(eggtype == TS_DESC_DESTROYER) DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/destroyer, 1) else - to_chat(src, "Unrecognized egg type!") + to_chat(src, span_warning("Неизвестный тип яиц!")) fed += feedings_to_lay fed -= feedings_to_lay @@ -106,9 +115,9 @@ if(HAS_TRAIT(L, TRAIT_INCAPACITATED) || L.can_inject(null, FALSE, inject_target, FALSE)) L.AdjustEyeBlurry(20 SECONDS, 0, 120 SECONDS) // instead of having a venom that only lasts seconds, we just add the eyeblur directly. - visible_message(span_danger("[src] buries its fangs deep into the [inject_target] of [target]!")) + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] вонзает свои клыки глубоко в [inject_target] [target.declent_ru(ACCUSATIVE)]!")) else - visible_message(span_danger("[src] bites [target], but cannot inject venom into [target.p_their()] [inject_target]!")) + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] кусает [target.declent_ru(ACCUSATIVE)], но не может ввести яд в [inject_target]!")) /mob/living/simple_animal/hostile/poison/terror_spider/healer/AttackingTarget() . = ..() @@ -127,7 +136,15 @@ /obj/structure/spider/terrorweb/green name = "slimy web" - desc = "This web is partly composed of strands of green slime." + desc = "Эта паутина частично состоит из нитей зелёной слизи." + ru_names = list( + NOMINATIVE = "скользкая паутина", + GENITIVE = "скользкой паутины", + DATIVE = "скользкой паутине", + ACCUSATIVE = "скользкую паутину", + INSTRUMENTAL = "скользкой паутиной", + PREPOSITIONAL = "скользкой паутине", + ) /obj/structure/spider/terrorweb/green/web_special_ability(mob/living/carbon/C) if(istype(C)) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/hive.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/hive.dm index 407e6f3174ee..037ff1318e40 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/hive.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/hive.dm @@ -3,20 +3,20 @@ /mob/living/simple_animal/hostile/poison/terror_spider/proc/DoHiveSense() var/hsline = "" - to_chat(src, "Your Brood: ") + to_chat(src, "Ваш род: ") for(var/thing in GLOB.ts_spiderlist) var/mob/living/simple_animal/hostile/poison/terror_spider/T = thing if(T.spider_awaymission != spider_awaymission) continue - hsline = "* [T] in [get_area(T)], " + hsline = "* [capitalize(T.declent_ru(NOMINATIVE))] в [get_area(T)], " if(T.stat == DEAD) - hsline += "DEAD" + hsline += "МЁРТВ" else - hsline += "health [T.health] / [T.maxHealth], " + hsline += "здоровье [T.health] / [T.maxHealth], " if(T.ckey) - hsline += " *Player Controlled* " + hsline += " *Управляется Игроком* " else - hsline += " AI " + hsline += " ИИ " to_chat(src,hsline) /mob/living/simple_animal/hostile/poison/terror_spider/proc/CountSpiders() diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/knight.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/knight.dm index c54b745d7628..faeadb1a274a 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/knight.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/knight.dm @@ -11,7 +11,16 @@ /mob/living/simple_animal/hostile/poison/terror_spider/knight name = "Knight of Terror" - desc = "An ominous-looking red spider, it has eight beady red eyes, and nasty, big, pointy fangs! It looks like it has a vicious streak a mile wide." + desc = "Зловещий на вид красный паук c восемью красными глазами-бусинками и ужасными, большими, заострёнными клыками! Похоже, у него порочная полоса шириной в милю." + ru_names = list( + NOMINATIVE = "Рыцарь Ужаса", + GENITIVE = "Рыцаря Ужаса", + DATIVE = "Рыцарю Ужаса", + ACCUSATIVE = "Рыцаря Ужаса", + INSTRUMENTAL = "Рыцарем Ужаса", + PREPOSITIONAL = "Рыцаре Ужаса", + ) + gender = MALE ai_target_method = TS_DAMAGE_BRUTE icon_state = "terror_red" icon_living = "terror_red" @@ -32,7 +41,6 @@ move_resist = MOVE_FORCE_STRONG // no more pushing a several hundred if not thousand pound spider web_type = /obj/structure/spider/terrorweb/knight spider_intro_text = "Будучи Рыцарем Ужаса, ваша задача - создавать места для прорыва, или же оборонять гнездо. Несмотря на медлительность, вы живучи и опасны вблизи, используйте свою силу и выносливость, чтобы другие пауки могли выполнять свои функции! Ваши способности позволяют вам переключаться между режимом атаки и обороны, первый - увеличивает скорость, а также наносимый и получаемый урон, второй - уменьшает скорость, получаемый и наносимый урон." - gender = MALE tts_seed = "Chu" var/last_attack_mode = 0 var/last_defence_mode = 0 @@ -72,48 +80,56 @@ var/t = world.time if (n==0) playsound(src, 'sound/creatures/terrorspiders/keratosis_out.ogg', 150) - to_chat(src, "Your body relaxes!") + to_chat(src, span_notice("Ваше тело расслабляется!")) set_varspeed(0.8) damage_coeff = list(BRUTE = 0.6, BURN = 1.1, TOX = 1, CLONE = 0, STAMINA = 0, OXY = 0.2) melee_damage_lower = 15 melee_damage_upper = 15 regeneration = 2 current_mode = 0 - return 1 + return TRUE if (n==1) if(attack_mode_av) last_attack_mode = t last_mode = t attack_mode_av = 0 playsound(src, 'sound/creatures/terrorspiders/mod_attack.ogg', 120) - to_chat(src, "You are now in rage") + to_chat(src, span_danger("Вы впадаете в ярость!")) set_varspeed(0) damage_coeff = list(BRUTE = 0.8, BURN = 1.2, TOX = 1, CLONE = 0, STAMINA = 0, OXY = 0.2) melee_damage_lower = 30 melee_damage_upper = 30 regeneration = 0 current_mode = 1 - return 1 - to_chat(src, "You cant do this yet!") - return 0 + return TRUE + to_chat(src, span_notice("Вы пока не можете этого сделать!")) + return FALSE if (n==2) if(defence_mode_av) last_defence_mode = t last_mode = t defence_mode_av = 0 playsound(src, 'sound/creatures/terrorspiders/keratosis_in.ogg', 150) - to_chat(src, "You cover yourself with keratosis!") + to_chat(src, span_danger("Вы покрываетесь кератозисом!")) set_varspeed(1.6) damage_coeff = list(BRUTE = 0.4, BURN = 0.7, TOX = 1, CLONE = 0, STAMINA = 0, OXY = 0.2) melee_damage_lower = 10 melee_damage_upper = 10 regeneration = 6 current_mode = 2 - return 1 - to_chat(src, "You cant do this yet!") - return 0 + return TRUE + to_chat(src, span_notice("Вы пока не можете этого сделать!")) + return FALSE /obj/structure/spider/terrorweb/knight max_integrity = 30 name = "reinforced web" - desc = "This web is reinforced with extra strands, for added strength." + desc = "Эта паутина усилена прочными нитями для дополнительной прочности." + ru_names = list( + NOMINATIVE = "укрепленная паутина", + GENITIVE = "укрепленной паутины", + DATIVE = "укрепленной паутине", + ACCUSATIVE = "укрепленную паутину", + INSTRUMENTAL = "укрепленной паутиной", + PREPOSITIONAL = "укрепленной паутине", + ) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/lurker.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/lurker.dm index 3df7c8f54727..d8fe92d1bb2e 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/lurker.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/lurker.dm @@ -10,7 +10,16 @@ /mob/living/simple_animal/hostile/poison/terror_spider/lurker name = "Lurker of Terror" - desc = "An ominous-looking gray spider. It seems to blend into webs, making it hard to see." + desc = "Зловещего вида серый паук. Кажется, что он сливается с паутиной, из-за чего его трудно увидеть." + ru_names = list( + NOMINATIVE = "Наблюдатель Ужаса", + GENITIVE = "Наблюдателя Ужаса", + DATIVE = "Наблюдателю Ужаса", + ACCUSATIVE = "Наблюдателя Ужаса", + INSTRUMENTAL = "Наблюдателем Ужаса", + PREPOSITIONAL = "Наблюдателе Ужаса", + ) + gender = MALE ai_target_method = TS_DAMAGE_BRUTE icon_state = "terror_gray" icon_living = "terror_gray" @@ -55,7 +64,7 @@ melee_damage_lower = initial(melee_damage_lower) melee_damage_upper = initial(melee_damage_upper) armour_penetration = initial(armour_penetration) - visible_message("[src] bites [target]!") + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] кусает [target.declent_ru(ACCUSATIVE)]!")) . = ..() //eat victim @@ -79,7 +88,15 @@ /obj/structure/spider/terrorweb/gray alpha = 80 name = "transparent web" - desc = "This web is partly transparent, making it harder to see, and easier to get caught by." + desc = "Эта паутина частично прозрачна, поэтому её труднее увидеть и легче попасться." + ru_names = list( + NOMINATIVE = "прозрачная паутина", + GENITIVE = "прозрачной паутины", + DATIVE = "прозрачной паутине", + ACCUSATIVE = "прозрачную паутину", + INSTRUMENTAL = "прозрачной паутиной", + PREPOSITIONAL = "прозрачной паутине", + ) /obj/structure/spider/terrorweb/gray/web_special_ability(mob/living/carbon/C) //super deadly web if(istype(C)) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm index 35c0dec4ba6d..b30f4c688936 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm @@ -10,7 +10,15 @@ /mob/living/simple_animal/hostile/poison/terror_spider/mother name = "Mother of Terror" - desc = "An enormous spider. Tiny spiderlings are crawling all over it. Their beady little eyes all stare at you. The horror!" + desc = "Огромный паук. По нему ползают крошечные паучки. Их маленькие глазки-бусинки смотрят на вас. Ужас!" + ru_names = list( + NOMINATIVE = "Мать Ужаса", + GENITIVE = "Матери Ужаса", + DATIVE = "Матери Ужаса", + ACCUSATIVE = "Мать Ужаса", + INSTRUMENTAL = "Матерью Ужаса", + PREPOSITIONAL = "Матери Ужаса", + ) ai_target_method = TS_DAMAGE_SIMPLE icon_state = "terror_mother" icon_living = "terror_mother" @@ -59,5 +67,5 @@ /mob/living/simple_animal/hostile/poison/terror_spider/mother/consume_jelly(obj/structure/spider/royaljelly/J) - to_chat(src, "Mothers cannot consume royal jelly.") + to_chat(src, span_warning("Матери Ужаса не могут употреблять королевское желе.")) return diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm index 3ba280379025..5509c86b38eb 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm @@ -10,7 +10,15 @@ /mob/living/simple_animal/hostile/poison/terror_spider/prince name = "Prince of Terror" - desc = "An enormous, terrifying spider. It looks like it is judging everything it sees. Its hide seems armored, and it bears the scars of many battles." + desc = "Огромный, ужасающий паук. Похоже, он уничтожает всё, что видит. Его шкура кажется непробиваемой, и на нём видны шрамы многих сражений." + ru_names = list( + NOMINATIVE = "Принц Ужаса", + GENITIVE = "Принца Ужаса", + DATIVE = "Принцу Ужаса", + ACCUSATIVE = "Принца Ужаса", + INSTRUMENTAL = "Принцем Ужаса", + PREPOSITIONAL = "Принце Ужаса", + ) ai_target_method = TS_DAMAGE_BRUTE icon_state = "terror_allblack" icon_living = "terror_allblack" @@ -19,7 +27,7 @@ health = 600 speed = -0.1 damage_coeff = list(BRUTE = 0.3, BURN = 0.6, TOX = 1, CLONE = 0, STAMINA = 0, OXY = 0.2) - deathmessage = "morbidly growls, flailing and crumbling as death finally washes away the burning hatred in it's eyes." + deathmessage = "болезненно рычит, трясётся и ослабевает, пока смерть наконец не смывает пылающую ненависть из его ужасающих глаз." death_sound = 'sound/creatures/terrorspiders/prince_dead.ogg' regeneration = 0 //no healing on life, prince should play agressive force_threshold = 30 @@ -38,6 +46,7 @@ web_type = null special_abillity = list(/obj/effect/proc_holder/spell/aoe/terror_slam) spider_intro_text = "Будучи Принцом Ужаса, ваша задача - устроить резню. У вас больше здоровья и урона, чем у любого другого паука, вы можете отрывать конечности, быстро уничтожать мехи, однако, если вы не будете пожирать трупы, сразу потеряете способность регенерировать. Ваша активная способность оглушает противников в радиусе двух плиток, попутно замедляя их." + datum_type = /datum/antagonist/terror_spider/main_spider/prince gender = MALE move_resist = MOVE_FORCE_STRONG // no more pushing a several hundred if not thousand pound spider tts_seed = "Alduin" @@ -57,7 +66,7 @@ L.Weaken(2 SECONDS) playsound(src, 'sound/creatures/terrorspiders/rip.ogg', 100, 1) var/obj/item/organ/external/NB = pick(L.bodyparts) - visible_message(span_warning("[src] Tears appart the [NB.name] of [L] with his razor sharp jaws!")) + visible_message(span_warning("[capitalize(declent_ru(NOMINATIVE))] отрывает [NB.declent_ru(ACCUSATIVE)] [L.declent_ru(GENITIVE)] своими острыми, как бритва, челюстями!")) NB.droplimb() //dismemberment L.apply_damage(35, STAMINA) else diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm index 6bb475088379..c651bcd892a8 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm @@ -10,7 +10,15 @@ /mob/living/simple_animal/hostile/poison/terror_spider/queen/princess name = "Princess of Terror spider" - desc = "An enormous spider. It looks strangely cute and fluffy." + desc = "Огромный паук. Он выглядит необычайно милым и пушистым." + ru_names = list( + NOMINATIVE = "Принцесса Ужаса", + GENITIVE = "Принцессы Ужаса", + DATIVE = "Принцессе Ужаса", + ACCUSATIVE = "Принцессу Ужаса", + INSTRUMENTAL = "Принцессой Ужаса", + PREPOSITIONAL = "Принцессе Ужаса", + ) ai_target_method = TS_DAMAGE_SIMPLE icon_state = "terror_princess1" icon_living = "terror_princess1" @@ -22,13 +30,14 @@ health = 200 speed = -0.1 delay_web = 20 - deathmessage = "Emits a piercing screech and slowly falls on the ground." + deathmessage = "Издаёт пронзительный визг и медленно опадает на землю." death_sound = 'sound/creatures/terrorspiders/princess_death.ogg' spider_tier = TS_TIER_3 move_resist = MOVE_FORCE_STRONG // no more pushing a several hundred if not thousand pound spider spider_intro_text = "Будучи Принцессой Ужаса, ваша задача - откладывать яйца и охранять их. Хоть вы и умеете плеваться кислотой, а также обладаете визгом, помогающим в бою, вам не стоит сражаться намеренно, ведь для этого есть другие пауки." + datum_type = /datum/antagonist/terror_spider/main_spider/princess ranged = 1 - projectiletype = /obj/item/projectile/terrorspider/princess + projectiletype = /obj/projectile/terrorspider/princess ranged_cooldown_time = 30 canlay = 1 hasnested = TRUE @@ -77,26 +86,26 @@ icon_state = "terror_princess1" icon_living = "terror_princess1" icon_dead = "terror_princess1_dead" - desc = "An enormous spider. It looks strangely cute and fluffy, with soft pink fur covering most of its body." + desc = "Огромный паук. Он выглядит странно милым и пушистым, с нежно-розовым мехом, покрывающим большую часть его тела" else if(brood_count < (spider_max_children /2)) icon_state = "terror_princess2" icon_living = "terror_princess2" icon_dead = "terror_princess2_dead" - desc = "An enormous spider. It used to look strangely cute and fluffy, but now the effect is spoiled by parts of its fur, which have turned an ominous blood red in color." + desc = "Огромный паук. Раньше он выглядел странно милым и пушистым, но теперь этот эффект портят части меха, которые приобрели зловещий кроваво-красный цвет." else icon_state = "terror_princess3" icon_living = "terror_princess3" icon_dead = "terror_princess3_dead" - desc = "An enormous spider. Its entire body looks to be the color of dried blood." + desc = "Огромный паук. Всё его тело покрыто засохшей кровью." if((brood_count + canlay) >= spider_max_children) return canlay++ if(canlay == 1) - to_chat(src, "You have an egg available to lay.") + to_chat(src, span_notice("У вас есть яйцо, которое можно отложить.")) SEND_SOUND(src, sound('sound/effects/ping.ogg')) else - to_chat(src, "You have [canlay] eggs available to lay.") + to_chat(src, span_notice("У вас есть [canlay] [declension_ru(canlay, "яйцо", "яйца", "яиц")], которые можно отложить.")) SEND_SOUND(src, sound('sound/effects/ping.ogg')) /mob/living/simple_animal/hostile/poison/terror_spider/queen/princess/NestMode() @@ -126,7 +135,7 @@ return TRUE return FALSE -/obj/item/projectile/terrorspider/princess +/obj/projectile/terrorspider/princess name = "princess venom" icon_state = "toxin4" damage = 25 diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm index 7a741db2bf51..82c48a7bab63 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm @@ -10,7 +10,15 @@ /mob/living/simple_animal/hostile/poison/terror_spider/queen name = "Queen of Terror spider" - desc = "An enormous, terrifying spider. Its egg sac is almost as big as its body, and teeming with spider eggs!" + desc = "Огромный, ужасающий паук. Её яйцевой мешок почти такого же размера, как и её тело, и изобилует паучьими яйцами!" + ru_names = list( + NOMINATIVE = "Королева Ужаса", + GENITIVE = "Королевы Ужаса", + DATIVE = "Королеве Ужаса", + ACCUSATIVE = "Королеву Ужаса", + INSTRUMENTAL = "Королевой Ужаса", + PREPOSITIONAL = "Королеве Ужаса", + ) ai_target_method = TS_DAMAGE_SIMPLE icon_state = "terror_queen" icon_living = "terror_queen" @@ -19,7 +27,7 @@ health = 340 damage_coeff = list(BRUTE = 0.7, BURN = 1.1, TOX = 1, CLONE = 0, STAMINA = 0, OXY = 0.2) regeneration = 3 - deathmessage = "Emits a piercing screech that echoes through the hallways, chilling the hearts of those around, as the spider lifelessly falls to the ground." + deathmessage = "Издаёт пронзительный визг, эхом разносящийся по коридорам и леденящий сердца окружающих, в то время как паук безжизненно падает на землю." death_sound = 'sound/creatures/terrorspiders/queen_death.ogg' melee_damage_lower = 25 melee_damage_upper = 30 @@ -36,7 +44,7 @@ retreat_distance = 5 minimum_distance = 5 projectilesound = 'sound/creatures/terrorspiders/spit2.ogg' - projectiletype = /obj/item/projectile/terrorspider/queen + projectiletype = /obj/projectile/terrorspider/queen ranged_cooldown_time = 20 spider_tier = TS_TIER_4 spider_opens_doors = 2 @@ -44,7 +52,8 @@ delay_web = 15 special_abillity = list(/obj/effect/proc_holder/spell/aoe/terror_shriek_queen) can_wrap = FALSE - spider_intro_text = "Будучи Королевой Ужаса, ваша цель - управление выводком и откладывание яиц. Вы крайне сильны, и со временем будете откладывать всё больше яиц, однако, ваша смерть будет означать поражение, ведь все пауки погибнут." + spider_intro_text = "Будучи Королевой Ужаса, ваша цель - управление выводком и откладывание яиц. Вы крайне сильны, и со временем будете откладывать всё больше яиц, однако, ваша смерть будет означать неминуюемую гибель гнезда, ведь все пауки погибнут." + datum_type = /datum/antagonist/terror_spider/main_spider/queen var/spider_spawnfrequency = 1600 // 160 seconds. Default for player queens and NPC queens on station. Awaymission queens have this changed in New() var/spider_spawnfrequency_stable = 3600 // 360 seconds. Spawnfrequency is set to this on awaymission spiders once nest setup is complete. var/spider_lastspawn = 0 @@ -93,10 +102,10 @@ spider_lastspawn = world.time canlay += getSpiderLevel() if(canlay == 1) - to_chat(src, "You have an egg available to lay.") + to_chat(src, span_notice("У вас есть яйцо, которое можно отложить.")) SEND_SOUND(src, sound('sound/effects/ping.ogg')) else if(canlay > 1) - to_chat(src, "You have [canlay] eggs available to lay.") + to_chat(src, span_notice("У вас есть [canlay] [declension_ru(canlay, "яйцо", "яйца", "яиц")], которые можно отложить.")) SEND_SOUND(src, sound('sound/effects/ping.ogg')) /mob/living/simple_animal/hostile/poison/terror_spider/queen/proc/getSpiderLevel() @@ -122,8 +131,8 @@ if(T.spider_myqueen != src) continue if(T.spider_tier < spider_tier) - T.visible_message("[T] writhes in pain!") - to_chat(T, "\The psychic backlash from the death of [src] overwhelms you! You feel the life start to drain out of you...") + T.visible_message(span_danger("[capitalize(T.declent_ru(NOMINATIVE))] корчится от боли!")) + to_chat(T, span_userdanger("Психическая реакция от смерти [declent_ru(GENITIVE)] ошеломляет вас! Вы чувствуете, как жизнь начинает утекать из вас...")) T.degenerate = TRUE for(var/thing in GLOB.ts_spiderling_list) var/obj/structure/spider/spiderling/terror_spiderling/T = thing @@ -177,10 +186,10 @@ if(ok_to_nest && entry_vent) nest_vent = entry_vent neststep = 1 - visible_message("\The [src] settles down, starting to build a nest.") + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] приживается, начиная строить гнездо.")) else if(entry_vent) if(!path_to_vent) - visible_message("\The [src] looks around warily - then seeks a better nesting ground.") + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] настороженно оглядывается – затем ищет лучшее место для строительста гнезда.")) path_to_vent = 1 else neststep = -1 @@ -190,7 +199,8 @@ if(world.time > (lastnestsetup + nestfrequency)) lastnestsetup = world.time neststep = 2 - NestMode() + if(!hasnested) + NestMode() if(2) // Create initial T2 spiders. if(world.time > (lastnestsetup + nestfrequency)) @@ -237,8 +247,8 @@ /mob/living/simple_animal/hostile/poison/terror_spider/queen/proc/NestPrompt() - var/confirm = tgui_alert(src, "Are you sure you want to nest? You will be able to lay eggs, and smash walls, but not ventcrawl.", "Nest?", list("Yes","No")) - if(confirm == "Yes") + var/confirm = tgui_alert(src, "Вы уверены, что хотите строить гнездо? Вы сможете откладывать яйца и разбивать стены, но не ползать по вентиляции.", "Гнездо?", list("Да","Нет")) + if(confirm == "Да") NestMode() @@ -254,14 +264,14 @@ ai_ventcrawls = FALSE environment_smash = ENVIRONMENT_SMASH_RWALLS DoQueenScreech(8, 100, 8, 100) - to_chat(src, "You have matured to your egglaying stage. You can now smash through walls, and lay eggs, but can no longer ventcrawl.") + to_chat(src, span_notice("Вы достигли стадии кладки яиц. Теперь вы можете пробивать стены и откладывать яйца, но больше не можете ползать по вентиляции.")) /mob/living/simple_animal/hostile/poison/terror_spider/queen/proc/LayQueenEggs() if(stat == DEAD) return if(!hasnested) - to_chat(src, "You must nest before doing this.") + to_chat(src, span_danger("Прежде чем делать это, вы должны начать строить гнездо.")) return if(canlay < 1) show_egg_timer() @@ -269,31 +279,31 @@ var/list/eggtypes = ListAvailableEggTypes() var/list/eggtypes_uncapped = list(TS_DESC_KNIGHT, TS_DESC_LURKER, TS_DESC_HEALER, TS_DESC_REAPER, TS_DESC_BUILDER) - var/eggtype = input("What kind of eggs?") as null|anything in eggtypes + var/eggtype = tgui_input_list(usr, "Какой тип яиц?", "", eggtypes) if(canlay < 1) // this was checked before input() but we have to check again to prevent them spam-clicking the popup. - to_chat(src, "Too soon to lay another egg.") + to_chat(src, span_danger("Слишком рано откладывать еще одно яйцо.")) return if(!(eggtype in eggtypes)) - to_chat(src, "Unrecognized egg type.") - return 0 + to_chat(src, span_danger("Неизвестный тип яйца.")) + return FALSE // Multiple of eggtypes_uncapped can be laid at once. Other types must be laid one at a time (to prevent exploits) var/numlings = 1 if(eggtype in eggtypes_uncapped) if(canlay >= 5) - numlings = input("How many in the batch?") as null|anything in list(1, 2, 3, 4, 5) + numlings = tgui_input_list(usr, "Сколько яиц в кладке?", "", list(1, 2, 3, 4, 5)) else if(canlay >= 3) - numlings = input("How many in the batch?") as null|anything in list(1, 2, 3) + numlings = tgui_input_list(usr, "Сколько яиц в кладке?", "", list(1, 2, 3)) else if(canlay == 2) - numlings = input("How many in the batch?") as null|anything in list(1, 2) + numlings = tgui_input_list(usr, "Сколько яиц в кладке?", "", list(1, 2)) if(eggtype == null || numlings == null) - to_chat(src, "Cancelled.") + to_chat(src, span_danger("Отменено.")) return // Actually lay the eggs. if(canlay < numlings) // We have to check this again after the popups, to account for people spam-clicking the button, then doing all the popups at once. - to_chat(src, "Too soon to do this again!") + to_chat(src, span_warning("Слишком рано делать это снова!")) return canlay -= numlings eggslaid += numlings @@ -321,14 +331,14 @@ if(TS_DESC_PRINCESS) DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/queen/princess, numlings) else - to_chat(src, "Unrecognized egg type.") + to_chat(src, span_danger("Неизвестный тип яйца.")) /mob/living/simple_animal/hostile/poison/terror_spider/queen/proc/show_egg_timer() var/remainingtime = round(((spider_lastspawn + spider_spawnfrequency) - world.time) / 10, 1) if(remainingtime > 0) - to_chat(src, "Too soon to attempt that again. Wait another [num2text(remainingtime)] seconds.") + to_chat(src, span_danger("Слишком рано пытаться повторить это. Подождите еще [num2text(remainingtime)] секунд.")) else - to_chat(src, "Too soon to attempt that again. Wait just a few more seconds...") + to_chat(src, span_danger("Слишком рано пытаться повторить это. Подождите еще несколько секунд...")) /mob/living/simple_animal/hostile/poison/terror_spider/queen/proc/ListAvailableEggTypes() if(MinutesAlive() >= 25) @@ -348,7 +358,7 @@ /mob/living/simple_animal/hostile/poison/terror_spider/queen/proc/DoQueenScreech(light_range, light_chance, camera_range, camera_chance) - visible_message("[src] emits a bone-chilling shriek!") + visible_message(span_userdanger("[capitalize(declent_ru(NOMINATIVE))] издает пронзительный визг!")) playsound(src.loc, 'sound/creatures/terrorspiders/queen_shriek.ogg', 100, 1) for(var/obj/machinery/light/L in orange(light_range, src)) if(L.on && prob(light_chance)) @@ -364,11 +374,11 @@ return if(!isobserver(user) && !isterrorspider(user)) return - . += "[p_they(TRUE)] has laid [eggslaid] egg[eggslaid != 1 ? "s" : ""]." - . += "[p_they(TRUE)] has lived for [MinutesAlive()] minutes." + . += span_notice("Она отложила [eggslaid] [eggslaid != 1 ? "яиц" : "яйцо"].") + . += span_notice("Она прожила [MinutesAlive()] минут.") -/obj/item/projectile/terrorspider/queen +/obj/projectile/terrorspider/queen name = "queen venom" icon_state = "toxin3" damage = 40 @@ -377,7 +387,15 @@ /obj/structure/spider/terrorweb/queen name = "airtight web" - desc = "This multi-layered web seems to be able to resist air pressure." + desc = "Эта многослойная паутина, кажется, способна противостоять давлению воздуха." + ru_names = list( + NOMINATIVE = "воздухонепроницаемая паутина", + GENITIVE = "воздухонепроницаемой паутины", + DATIVE = "воздухонепроницаемой паутине", + ACCUSATIVE = "воздухонепроницаемую паутину", + INSTRUMENTAL = "воздухонепроницаемой паутиной", + PREPOSITIONAL = "воздухонепроницаемой паутине", + ) max_integrity = 30 diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/reaper.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/reaper.dm index 5c442282d450..774581f8bdba 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/reaper.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/reaper.dm @@ -1,7 +1,15 @@ /mob/living/simple_animal/hostile/poison/terror_spider/reaper name = "Reaper of Terror" - desc = "A terrible-looking spider, she appears to have sharp claws and jaws, and her body is covered with tumors. You can see agony and thirst for blood in her glowing eyes.." + desc = "Ужасного вида паук. У него острые когти и челюсти, а тело покрыто опухолями. В его светящихся глазах можно увидеть агонию и жажду крови.." + ru_names = list( + NOMINATIVE = "Жнец Ужаса", + GENITIVE = "Жнеца Ужаса", + DATIVE = "Жнецу Ужаса", + ACCUSATIVE = "Жнеца Ужаса", + INSTRUMENTAL = "Жнецом Ужаса", + PREPOSITIONAL = "Жнеце Ужаса", + ) ai_target_method = TS_DAMAGE_BRUTE icon_state = "terror_reaper" icon_living = "terror_reaper" @@ -19,7 +27,6 @@ spider_opens_doors = 2 speed = -0.3 web_type = null - gender = FEMALE tts_seed = "Myra" spider_intro_text = "Будучи Жнецом Ужаса, ваша задача - уничтожение живой силы противника. Вы быстры, наносите много урона, обладаете вампиризмом, и с каждым укусом высасываете у противников немного крови. Однако, платой за эту силу стало то, что вы постепенно теряете здоровье. Если прекратите убивать - погибните." diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm index 7047e60aa4d3..65db51eb9866 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm @@ -5,7 +5,15 @@ /obj/structure/spider/spiderling/terror_spiderling name = "spiderling" - desc = "A fast-moving tiny spider, prone to making aggressive hissing sounds. Hope it doesn't grow up." + desc = "Быстро движущийся крошечный паук, склонный издавать агрессивные шипящие звуки. Надеюсь, оно не вырастет." + ru_names = list( + NOMINATIVE = "паучок", + GENITIVE = "паучка", + DATIVE = "паучку", + ACCUSATIVE = "паучка", + INSTRUMENTAL = "паучком", + PREPOSITIONAL = "паучке", + ) icon_state = "spiderling" anchored = FALSE layer = 2.75 @@ -21,21 +29,23 @@ var/frustration = 0 var/debug_ai_choices = FALSE var/movement_disabled = FALSE + var/mob/asigned_ghost /obj/structure/spider/spiderling/terror_spiderling/Initialize(mapload) . = ..() GLOB.ts_spiderling_list += src + var/datum/team/terror_spiders/spider_team = GLOB.antagonist_teams[/datum/team/terror_spiders] if(is_away_level(z)) spider_awaymission = TRUE + else + spider_team?.terror_eggs |= src /obj/structure/spider/spiderling/terror_spiderling/Destroy() GLOB.ts_spiderling_list -= src - return ..() - - -/obj/structure/spider/spiderling/terror_spiderling/Destroy() for(var/obj/structure/spider/spiderling/terror_spiderling/S in view(7, src)) S.immediate_ventcrawl = TRUE + var/datum/team/terror_spiders/spider_team = GLOB.antagonist_teams[/datum/team/terror_spiders] + spider_team?.terror_eggs -= src return ..() /obj/structure/spider/spiderling/terror_spiderling/proc/score_surroundings(atom/A = src) @@ -78,6 +88,9 @@ var/turf/T = get_turf(src) if(spider_awaymission && !is_away_level(T.z)) stillborn = TRUE + if(GLOB.global_degenerate && !spider_awaymission && !QDELETED(src)) + qdel(src) + return if(stillborn) // Fake spiderlings stick around for awhile, just to be spooky. qdel(src) @@ -88,7 +101,25 @@ S.spider_myqueen = spider_myqueen S.spider_mymother = spider_mymother S.enemies = enemies + + if(!spider_awaymission && asigned_ghost) + S.key = asigned_ghost.key + S.add_datum_if_not_exist() + asigned_ghost = null + else if(!spider_awaymission) + S.AddComponent(\ + /datum/component/ghost_direct_control,\ + ban_type = ROLE_TERROR_SPIDER,\ + ban_syndicate = TRUE,\ + poll_candidates = FALSE,\ + question_text =" Роль: [S.spider_intro_text]" ,\ + extra_control_checks = CALLBACK(S, \ + TYPE_PROC_REF(/mob/living/simple_animal/hostile/poison/terror_spider, extra_checks)),\ + after_assumed_control = CALLBACK(S, \ + TYPE_PROC_REF(/mob/living/simple_animal/hostile/poison/terror_spider, humanize_spider)),\ + ) qdel(src) + if(movement_disabled) return if(travelling_in_vent) @@ -133,7 +164,7 @@ entry_vent = null return if(prob(50)) - audible_message("You hear something squeezing through the ventilation ducts.") + audible_message(span_notice("Слышно, как что-то сжимается в вентиляционных каналах.")) spawn(travel_time) if(!exit_vent || exit_vent.welded) forceMove(original_location) @@ -177,6 +208,9 @@ C.spider_myqueen = spider_myqueen C.spider_mymother = src C.enemies = enemies + var/datum/team/terror_spiders/spider_team = GLOB.antagonist_teams[/datum/team/terror_spiders] + if(mind) + spider_team?.terror_eggs |= C if(spider_growinstantly) C.amount_grown = 250 C.spider_growinstantly = TRUE @@ -185,68 +219,167 @@ /obj/structure/spider/eggcluster/terror_eggcluster name = "terror egg cluster" - desc = "A cluster of tiny spider eggs. They pulse with a strong inner life, and appear to have sharp thorns on the sides." + desc = "Скопление крошечных паучьих яиц. Они активно пульсируют и имеют острые шипы по бокам." + gender = PLURAL icon_state = "egg" max_integrity = 40 + grown_tick_count = 140 var/spider_growinstantly = FALSE var/mob/living/simple_animal/hostile/poison/terror_spider/queen/spider_myqueen = null var/mob/living/simple_animal/hostile/poison/terror_spider/spider_mymother = null - var/spiderling_type = null + var/mob/living/simple_animal/hostile/poison/terror_spider/spiderling_type = null var/spiderling_number = 1 var/list/enemies = list() + var/list/asigned_ghosts = list() + var/ghost_poll = FALSE /obj/structure/spider/eggcluster/terror_eggcluster/Initialize(mapload, lay_type) . = ..() GLOB.ts_egg_list += src spiderling_type = lay_type - + var/ru_prefix = "паука ужаса" switch(spiderling_type) if(/mob/living/simple_animal/hostile/poison/terror_spider/knight) name = "knight of terror eggs" + ru_prefix = "рыцаря ужаса" if(/mob/living/simple_animal/hostile/poison/terror_spider/lurker) name = "lurker of terror eggs" + ru_prefix = "наблюдателя ужаса" if(/mob/living/simple_animal/hostile/poison/terror_spider/healer) name = "healer of terror eggs" + ru_prefix = "лекаря ужаса" if(/mob/living/simple_animal/hostile/poison/terror_spider/reaper) name = "reaper of terror eggs" + ru_prefix = "жнеца ужаса" if(/mob/living/simple_animal/hostile/poison/terror_spider/builder) name = "builder of terror eggs" + ru_prefix = "дрона ужаса" if(/mob/living/simple_animal/hostile/poison/terror_spider/widow) name = "widow of terror eggs" + ru_prefix = "вдовы ужаса" if(/mob/living/simple_animal/hostile/poison/terror_spider/guardian) name = "guardian of terror eggs" + ru_prefix = "защитника ужаса" if(/mob/living/simple_animal/hostile/poison/terror_spider/destroyer) name = "destroyer of terror eggs" + ru_prefix = "разрушителя ужаса" if(/mob/living/simple_animal/hostile/poison/terror_spider/defiler) name = "defiler of terror eggs" + ru_prefix = "осквернителя ужаса" if(/mob/living/simple_animal/hostile/poison/terror_spider/mother) name = "mother of terror eggs" + ru_prefix = "матери ужаса" if(/mob/living/simple_animal/hostile/poison/terror_spider/prince) name = "prince of terror eggs" + ru_prefix = "принца ужаса" if(/mob/living/simple_animal/hostile/poison/terror_spider/queen) name = "queen of terror eggs" + ru_prefix = "королевы ужаса" + if(/mob/living/simple_animal/hostile/poison/terror_spider/queen/princess) + name = "princess of terror eggs" + ru_prefix = "принцессы ужаса" + ru_names = list( + NOMINATIVE = "яйца [ru_prefix]", + GENITIVE = "яиц [ru_prefix]", + DATIVE = "яйцам [ru_prefix]", + ACCUSATIVE = "яйца [ru_prefix]", + INSTRUMENTAL = "яйцами [ru_prefix]", + PREPOSITIONAL = "яйцах [ru_prefix]" + ) /obj/structure/spider/eggcluster/terror_eggcluster/Destroy() GLOB.ts_egg_list -= src + var/datum/team/terror_spiders/spider_team = GLOB.antagonist_teams[/datum/team/terror_spiders] + spider_team?.terror_eggs -= src return ..() +/obj/structure/spider/eggcluster/terror_eggcluster/proc/find_spider_owner() + ghost_poll = TRUE + var/list/candidates = SSghost_spawns.poll_candidates("Вы хотите занять роль Паука Ужаса([spiderling_type.name])?", ROLE_TERROR_SPIDER, TRUE, TERROR_VOTE_LEN, source = spiderling_type, role_cleanname = "Паук Ужаса") + if(QDELETED(src)) + return FALSE + ghost_poll = FALSE + if(!length(candidates) || spider_mymother.spider_awaymission) + burst_eggs() + return FALSE + for(var/i = 0, i < spiderling_number, i++) + asigned_ghosts |= pick_n_take(candidates) + burst_eggs() + /obj/structure/spider/eggcluster/terror_eggcluster/process() amount_grown += 1 - if(amount_grown >= 140) //x2 time for egg process, spiderlings grows instantly - var/num = spiderling_number - playsound(src, 'sound/creatures/terrorspiders/eggburst.ogg', 100) - for(var/i=0, i= grown_tick_count && spider_mymother.spider_awaymission) //x2 time for egg process, spiderlings grows instantly + burst_eggs() + +/obj/structure/spider/eggcluster/terror_eggcluster/proc/burst_eggs() + var/num = spiderling_number + playsound(src, 'sound/creatures/terrorspiders/eggburst.ogg', 100) + for(var/i=0, i[src] moves towards the vent [entry_vent].") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] движется к вентиляционному отверстию [entry_vent.declent_ru(GENITIVE)].")) else path_to_vent = 0 else if(ai_break_lights && world.time > (last_break_light + freq_break_light)) @@ -142,14 +142,14 @@ L.on = 1 L.break_light_tube() do_attack_animation(L) - visible_message("[src] smashes the [L.name].") + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] разбивает [L.declent_ru(ACCUSATIVE)].")) return else if(ai_spins_webs && web_type && world.time > (last_spins_webs + freq_spins_webs)) last_spins_webs = world.time var/obj/structure/spider/terrorweb/T = locate() in get_turf(src) if(!T) new web_type(loc) - visible_message("[src] puts up some spider webs.") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] плетёт паутину.")) else if(ai_ventcrawls && world.time > (last_ventcrawl_time + my_ventcrawl_freq)) if(prob(idle_ventcrawl_chance)) last_ventcrawl_time = world.time @@ -248,7 +248,7 @@ CreatePath(cocoon_target) step_to(src,cocoon_target) if(spider_debug) - visible_message("[src] moves towards [cocoon_target] to cocoon it.") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] движется к [cocoon_target.declent_ru(DATIVE)], чтобы заплести в кокон.")) /mob/living/simple_animal/hostile/poison/terror_spider/proc/seek_cocoon_target() last_cocoon_object = world.time @@ -287,7 +287,7 @@ try_open_airlock(A) for(var/obj/machinery/door/firedoor/F in view(1, src)) if(tgt_dir == get_dir(src,F) && F.density && !F.welded) - visible_message("[src] pries open the firedoor!") + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] открывает [F.declent_ru(ACCUSATIVE)]!")) F.open() else @@ -306,7 +306,7 @@ if(get_dist(src, entry_vent) <= 2) if(ai_ventbreaker && entry_vent.welded) entry_vent.set_welded(FALSE) - entry_vent.visible_message("[src] smashes the welded cover off [entry_vent]!") + entry_vent.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] выбивает приваренную крышку [entry_vent.declent_ru(GENITIVE)]!")) var/list/vents = list() for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in entry_vent.parent.other_atmosmch) vents.Add(temp_vent) @@ -314,7 +314,7 @@ entry_vent = null return var/obj/machinery/atmospherics/unary/vent_pump/exit_vent = pick(vents) - visible_message("[src] scrambles into the ventillation ducts!", "You hear something squeezing through the ventilation ducts.") + visible_message("[capitalize(declent_ru(NOMINATIVE))] залезает в вентиляционные каналы!", span_notice("Слышно, как что-то сжимается в вентиляционных каналах.")) spawn(rand(20,60)) var/original_location = loc forceMove(exit_vent) @@ -325,7 +325,7 @@ entry_vent = null return if(prob(50)) - audible_message("You hear something squeezing through the ventilation ducts.") + audible_message(span_notice("Слышно, как что-то сжимается в вентиляционных каналах.")) spawn(travel_time) if(!exit_vent || (exit_vent.welded && !ai_ventbreaker)) forceMove(original_location) @@ -333,7 +333,7 @@ return if(ai_ventbreaker && exit_vent.welded) exit_vent.set_welded(FALSE) - exit_vent.visible_message("[src] smashes the welded cover off [exit_vent]!") + exit_vent.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] выбивает приваренную крышку [exit_vent.declent_ru(GENITIVE)]!")) playsound(exit_vent.loc, 'sound/machines/airlock_alien_prying.ogg', 50, 0) forceMove(exit_vent.loc) entry_vent = null diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm index 593dbc8434bc..5e5501c957b0 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm @@ -24,7 +24,7 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) icon_dead = "terror_red_dead" attacktext = "кусает" attack_sound = 'sound/creatures/terrorspiders/bite.ogg' - deathmessage = "Screams in pain and slowly stops moving." + deathmessage = "кричит от боли и медленно перестаёт двигаться." death_sound = 'sound/creatures/terrorspiders/death.ogg' damaged_sound = list('sound/creatures/spider_attack1.ogg', 'sound/creatures/spider_attack2.ogg') var/spider_intro_text = "Если ты это видишь, это баг." @@ -33,8 +33,8 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) emote_hear = list("hisses") tts_seed = "Anubarak" sentience_type = SENTIENCE_OTHER - response_help = "pets" - response_disarm = "gently pushes aside" + response_help = "гладит" + response_disarm = "осторожно отодвигает в сторону" friendly = "осторожно проводит лапками по" footstep_type = FOOTSTEP_MOB_CLAW talk_sound = list('sound/creatures/terrorspiders/speech_1.ogg', 'sound/creatures/terrorspiders/speech_2.ogg', 'sound/creatures/terrorspiders/speech_3.ogg', 'sound/creatures/terrorspiders/speech_4.ogg', 'sound/creatures/terrorspiders/speech_5.ogg', 'sound/creatures/terrorspiders/speech_6.ogg') @@ -88,6 +88,9 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE sight = SEE_TURFS|SEE_MOBS|SEE_OBJS + // HUD + hud_type = /datum/hud/simple_animal/spider + // AI aggression settings var/ai_target_method = TS_DAMAGE_SIMPLE @@ -135,6 +138,9 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) var/datum/action/innate/terrorspider/web/web_action var/datum/action/innate/terrorspider/wrap/wrap_action + // DATUM + var/datum_type = /datum/antagonist/terror_spider + // DEBUG OPTIONS & COMMANDS var/spider_growinstantly = FALSE var/spider_debug = FALSE @@ -166,29 +172,29 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) enemies -= target var/mob/living/simple_animal/hostile/poison/terror_spider/T = target if(T.spider_tier > spider_tier) - visible_message("[src] cowers before [target].") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] съёживается перед [target.declent_ru(INSTRUMENTAL)].")) else if(T.spider_tier == spider_tier) - visible_message("[src] nuzzles [target].") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] тычется носом в [target.declent_ru(ACCUSATIVE)].")) else if(T.spider_tier < spider_tier && spider_tier >= 4) target.attack_animal(src) else - visible_message("[src] harmlessly nuzzles [target].") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] безобидно тычет носом [target.declent_ru(ACCUSATIVE)].")) T.CheckFaction() CheckFaction() else if(istype(target, /obj/structure/spider/royaljelly)) consume_jelly(target) else if(istype(target, /obj/structure/spider)) // Prevents destroying coccoons (exploit), eggs (horrible misclick), etc - to_chat(src, "Destroying things created by fellow spiders would not help us.") + to_chat(src, "Уничтожение вещей, созданных другими пауками, нам не поможет.") else if(istype(target, /obj/machinery/door/firedoor)) var/obj/machinery/door/firedoor/F = target if(F.density) if(F.welded) - to_chat(src, "The fire door is welded shut.") + to_chat(src, "[capitalize(F.declent_ru(NOMINATIVE))] заварен.") else - visible_message("[src] pries open the firedoor!") + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] открывает [F.declent_ru(ACCUSATIVE)]!")) F.open() else - to_chat(src, "Closing fire doors does not help.") + to_chat(src, "Закрытие противопожарных дверей не помогает.") else if(istype(target, /obj/machinery/door/airlock)) var/obj/machinery/door/airlock/A = target try_open_airlock(A) @@ -214,9 +220,9 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) /mob/living/simple_animal/hostile/poison/terror_spider/proc/consume_jelly(obj/structure/spider/royaljelly/J) if(health == maxHealth) - to_chat(src, "You don't need healing!") + to_chat(src, span_warning("Вам не нужно лечиться!")) return - to_chat(src, "You consume royal jelly to heal yourself!") + to_chat(src, span_notice("Вы употребляете королевское желе, чтобы исцелить себя!")) playsound(src.loc, 'sound/creatures/terrorspiders/jelly.ogg', 100, 1) apply_status_effect(STATUS_EFFECT_TERROR_REGEN) qdel(J) @@ -229,19 +235,19 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) . = ..() if(stat != DEAD) if(key) - . += "[p_they(TRUE)] regards [p_their()] surroundings with a curious intelligence." + . += span_warning("Внимательно осматривает окружение взглядом, говорящем о признаках разумности.") if(health > (maxHealth*0.95)) - . += "[p_they(TRUE)] is in excellent health." + . += span_notice("Не имеет видимых повреждений.") else if(health > (maxHealth*0.75)) - . += "[p_they(TRUE)] has a few injuries." + . += span_notice("Имеет несколько царапин.") else if(health > (maxHealth*0.55)) - . += "[p_they(TRUE)] has many injuries." + . += span_warning("Имеет серьёзные травмы.") else if(health > (maxHealth*0.25)) - . += "[p_they(TRUE)] is barely clinging on to life!" - if(degenerate) - . += "[p_they(TRUE)] appears to be dying." + . += span_danger("Едва стоит на своих лапах!") + if(degenerate || !spider_awaymission && GLOB.global_degenerate) + . += span_danger("Находится на грани жизни и смерти.") if(killcount >= 1) - . += "[p_they(TRUE)] has blood dribbling from [p_their()] mouth." + . += span_warning("Разбрызгивает во все стороны алую кровь, струяющуюся из пасти.") /mob/living/simple_animal/hostile/poison/terror_spider/New() ..() @@ -262,7 +268,7 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) wrap_action.Grant(src) name += " ([rand(1, 1000)])" real_name = name - msg_terrorspiders("[src] has grown in [get_area(src)].") + msg_terrorspiders("[capitalize(declent_ru(NOMINATIVE))] вырастает в локации \"[get_area(src)]\".") if(is_away_level(z)) spider_awaymission = 1 GLOB.ts_count_alive_awaymission++ @@ -289,10 +295,10 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) if(stat == DEAD) return if(ckey) - notify_ghosts("[src] (player controlled) has appeared in [get_area(src)].") + notify_ghosts("[capitalize(declent_ru(NOMINATIVE))] (контролируется игроком) появляется в локации \"[get_area(src)]\".") else if(ai_playercontrol_allowtype) - var/image/alert_overlay = image('icons/mob/terrorspider.dmi', icon_state) - notify_ghosts("[src] has appeared in [get_area(src)].", enter_link = "(Click to control)", source = src, alert_overlay = alert_overlay, action = NOTIFY_ATTACK) + var/image/alert_overlay = image(icon, icon_state) + notify_ghosts("[capitalize(declent_ru(NOMINATIVE))] появляется в локации \"[get_area(src)]\".", enter_link = "(Нажмите для взятия контроля)", source = src, alert_overlay = alert_overlay, action = NOTIFY_ATTACK) /mob/living/simple_animal/hostile/poison/terror_spider/Destroy() GLOB.ts_spiderlist -= src @@ -304,12 +310,12 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) if(stat == DEAD) // Can't use if(.) for this due to the fact it can sometimes return FALSE even when mob is alive. if(prob(10)) // 10% chance every cycle to decompose - visible_message("\The dead body of the [src] decomposes!") + visible_message(span_notice("Труп [declent_ru(GENITIVE)] разлагается!")) gib() else if(health < maxHealth) adjustBruteLoss(-regeneration) - if(degenerate) + if(degenerate || !spider_awaymission && GLOB.global_degenerate) adjustBruteLoss(6) if(prob(5)) CheckFaction() @@ -324,17 +330,13 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) else GLOB.ts_count_alive_station-- -/mob/living/simple_animal/hostile/poison/terror_spider/proc/give_intro_text() - to_chat(src, "
Вы паук ужаса!
") - to_chat(src, "
Работайте сообща, помогайте своим братьям и сёстрам, саботируйте станцию, убивайте экипаж, превратите это место в своё гнездо!
") - to_chat(src, "
[spider_intro_text]

") - SEND_SOUND(src, sound('sound/ambience/antag/terrorspider.ogg')) - /mob/living/simple_animal/hostile/poison/terror_spider/death(gibbed) if(can_die()) if(!gibbed) - msg_terrorspiders("[src] has died in [get_area(src)].") + msg_terrorspiders("[capitalize(declent_ru(NOMINATIVE))] умирает в локации \"[get_area(src)]\".") handle_dying() + if(mind) + SEND_SIGNAL(mind, COMSIG_TERROR_SPIDER_DIED) return ..() /mob/living/simple_animal/hostile/poison/terror_spider/proc/spider_special_action() @@ -360,7 +362,7 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) /mob/living/simple_animal/hostile/poison/terror_spider/proc/CheckFaction() if(faction.len != 2 || (!("terrorspiders" in faction)) || master_commander != null) - to_chat(src, "Your connection to the hive mind has been severed!") + to_chat(src, span_userdanger("Ваша связь с коллективным разумом разрывается!")) log_runtime(EXCEPTION("Terror spider with incorrect faction list at: [atom_loc_line(src)]")) gib() @@ -368,9 +370,9 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) if(D.operating) return if(D.welded) - to_chat(src, "The door is welded.") + to_chat(src, span_warning("Дверь заварена.")) else if(D.locked) - to_chat(src, "The door is bolted.") + to_chat(src, span_warning("Дверь заболтирована.")) else if(D.allowed(src)) if(D.density) D.open(TRUE) @@ -378,11 +380,11 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) D.close(TRUE) return TRUE else if(D.arePowerSystemsOn() && (spider_opens_doors != 2)) - to_chat(src, "The door's motors resist your efforts to force it.") + to_chat(src, span_warning("Привод шлюза сопротивляется вашим попыткам взломать её.")) else if(!spider_opens_doors) - to_chat(src, "Your type of spider is not strong enough to force open doors.") + to_chat(src, span_warning("Вы недостаточно сильны, чтобы взломать шлюз.")) else - visible_message("[src] forces the door!") + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] открывает дверь силой!")) playsound(src.loc, "sparks", 100, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) if(D.density) D.open(TRUE) @@ -403,19 +405,19 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) var/list/status_tab_data = ..() . = status_tab_data if(ckey && stat == CONSCIOUS) - if(degenerate) - status_tab_data[++status_tab_data.len] = list("Link:", "Hivemind Connection Severed! Dying...") // color=red + if(degenerate || !spider_awaymission && GLOB.global_degenerate) + status_tab_data[++status_tab_data.len] = list("Связь:", "Связь с Коллективным разумом разорвана! Смерть..") // color=red /mob/living/simple_animal/hostile/poison/terror_spider/proc/DoRemoteView() if(!isturf(loc)) // This check prevents spiders using this ability while inside an atmos pipe, which will mess up their vision - to_chat(src, "You must be standing on a floor to do this.") + to_chat(src, span_warning("Для этого вам необходимо стоять на полу.")) return if(client && (client.eye != client.mob)) reset_perspective() return if(health <= (maxHealth*0.75)) - to_chat(src, "You must be at full health to do this!") + to_chat(src, span_warning("Для этого вы должны быть полностью здоровы!")) return var/list/targets = list() targets += src // ensures that self is always at top of the list @@ -426,14 +428,14 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) if(T.spider_awaymission != spider_awaymission) continue targets |= T // we use |= instead of += to avoid adding src to the list twice - var/mob/living/L = input("Choose a terror to watch.", "Selection") in targets + var/mob/living/L = tgui_input_list(usr, "Выберите Паука Ужаса для просмотра.", "Выбор", targets) if(istype(L)) reset_perspective(L) /mob/living/simple_animal/hostile/poison/terror_spider/CanAllowThrough(atom/movable/mover, border_dir) . = ..() - if(istype(mover, /obj/item/projectile/terrorspider)) + if(istype(mover, /obj/projectile/terrorspider)) return TRUE @@ -441,7 +443,7 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) if(!HAS_TRAIT(src, TRAIT_NEGATES_GRAVITY)) return ..() -/obj/item/projectile/terrorspider +/obj/projectile/terrorspider name = "basic" damage = 0 icon_state = "toxin" diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/widow.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/widow.dm index 0e5b72c0b2f5..daae188e851f 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/widow.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/widow.dm @@ -10,7 +10,15 @@ /mob/living/simple_animal/hostile/poison/terror_spider/widow name = "Widow of Terror" - desc = "An ominous-looking spider, black as the darkest night. It has merciless eyes, and a blood-red hourglass pattern on its back." + desc = "Зловещий паук, черный, как самая темная ночь. У него безжалостные глаза и кроваво-красный узор в виде песочных часов на спине." + ru_names = list( + NOMINATIVE = "Вдова Ужаса", + GENITIVE = "Вдовы Ужаса", + DATIVE = "Вдове Ужаса", + ACCUSATIVE = "Вдову Ужаса", + INSTRUMENTAL = "Вдовой Ужаса", + PREPOSITIONAL = "Вдове Ужаса", + ) ai_target_method = TS_DAMAGE_POISON icon_state = "terror_widow" icon_living = "terror_widow" @@ -22,7 +30,7 @@ ranged = 1 rapid = 2 projectilesound = 'sound/creatures/terrorspiders/spit3.ogg' - projectiletype = /obj/item/projectile/terrorspider/widow + projectiletype = /obj/projectile/terrorspider/widow ranged_cooldown_time = 25 melee_damage_lower = 10 melee_damage_upper = 15 @@ -34,6 +42,10 @@ tts_seed = "Karastamper" spider_intro_text = "Будучи Вдовой Ужаса, ваша цель - внести хаос на поле боя при помощи своих плевков, вы также смертоносны вблизи и с каждым укусом вводите в противников опасный яд. Несмотря на скорость и смертоносность, вы довольно хрупки, поэтому не стоит атаковать тяжело вооружённых противников!" +/mob/living/simple_animal/hostile/poison/terror_spider/widow/Initialize(mapload) + . = ..() + AddElement(/datum/element/reagent_attack/widow) + /mob/living/simple_animal/hostile/poison/terror_spider/widow/spider_specialattack(mob/living/carbon/human/L, poisonable) . = ..() if(!.) @@ -41,15 +53,6 @@ L.AdjustSilence(10 SECONDS) if(!poisonable) return TRUE - if(L.reagents.has_reagent("terror_black_toxin", 100)) - return TRUE - var/inject_target = pick(BODY_ZONE_CHEST, BODY_ZONE_HEAD) - if(HAS_TRAIT(L, TRAIT_INCAPACITATED) || L.can_inject(null, FALSE, inject_target, FALSE)) - L.reagents.add_reagent("terror_black_toxin", 33) // inject our special poison - visible_message(span_danger("[src] buries its long fangs deep into the [inject_target] of [target]!")) - else - L.reagents.add_reagent("terror_black_toxin", 20) - visible_message(span_danger("[src] pierces armour and buries its long fangs deep into the [inject_target] of [target]!")) if(!ckey && (!(target in enemies) || L.reagents.has_reagent("terror_black_toxin", 60))) step_away(src, L) step_away(src, L) @@ -60,17 +63,25 @@ /obj/structure/spider/terrorweb/widow name = "sinister web" - desc = "This web has beads of a dark fluid on its strands." + desc = "На нитях этой паутины сверкают капли тёмной жидкости." + ru_names = list( + NOMINATIVE = "зловещая паутина", + GENITIVE = "зловещей паутины", + DATIVE = "зловещей паутине", + ACCUSATIVE = "зловещую паутину", + INSTRUMENTAL = "зловещей паутиной", + PREPOSITIONAL = "зловещей паутине", + ) /obj/structure/spider/terrorweb/widow/web_special_ability(mob/living/carbon/C) if(istype(C)) if(!C.reagents.has_reagent("terror_black_toxin", 60)) var/inject_target = pick(BODY_ZONE_CHEST, BODY_ZONE_HEAD) if(C.can_inject(null, FALSE, inject_target, FALSE)) - to_chat(C, "[src] slices into you!") + to_chat(C, span_danger("[capitalize(declent_ru(NOMINATIVE))] врезается в тебя!")) C.reagents.add_reagent("terror_black_toxin", 45) -/obj/item/projectile/terrorspider/widow +/obj/projectile/terrorspider/widow name = "widow venom" icon_state = "toxin5" damage = 15 diff --git a/code/modules/mob/living/simple_animal/hostile/undead.dm b/code/modules/mob/living/simple_animal/hostile/undead.dm index 30962075b096..ea7b212a3a67 100644 --- a/code/modules/mob/living/simple_animal/hostile/undead.dm +++ b/code/modules/mob/living/simple_animal/hostile/undead.dm @@ -203,7 +203,7 @@ /obj/item/clothing/shoes/centcom, /obj/item/clothing/under/suit_jacket/charcoal, /obj/effect/decal/cleanable/blood/gibs, - /obj/effect/particle_effect/smoke/vomiting, + /obj/effect/particle_effect/fluid/smoke/vomiting, /obj/item/reagent_containers/food/snacks/monstermeat/rotten/jumping, /obj/item/reagent_containers/food/snacks/monstermeat/rotten/jumping, ) @@ -235,7 +235,7 @@ /obj/item/gun/energy/dominator/sibyl, /obj/item/clothing/accessory/head_strip/lawyers_badge, /obj/effect/decal/cleanable/blood/gibs, - /obj/effect/particle_effect/smoke/vomiting, + /obj/effect/particle_effect/fluid/smoke/vomiting, /obj/item/reagent_containers/food/snacks/monstermeat/rotten/jumping, /obj/item/reagent_containers/food/snacks/monstermeat/rotten/jumping, ) @@ -257,7 +257,7 @@ /obj/item/clothing/glasses/eyepatch, /obj/item/melee/energy/sword/pirate, /obj/effect/decal/cleanable/blood/gibs, - /obj/effect/particle_effect/smoke/vomiting, + /obj/effect/particle_effect/fluid/smoke/vomiting, /obj/item/reagent_containers/food/snacks/monstermeat/rotten/jumping, /obj/item/reagent_containers/food/snacks/monstermeat/rotten/jumping ) diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm index ee076fb607d3..0e65fb20cb44 100644 --- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm +++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm @@ -9,7 +9,8 @@ opacity = FALSE canSmoothWith = null smooth = NONE - var/growth_time = 1200 + var/growth_time = 120 SECONDS + var/list/vines = list() /obj/structure/alien/resin/flower_bud_enemy/New() ..() @@ -20,8 +21,7 @@ anchors += locate(x+2,y-2,z) for(var/turf/T in anchors) - var/datum/beam/B = Beam(T, "vine", time=INFINITY, maxdistance=5, beam_type=/obj/effect/ebeam/reacting/vine) - B.sleep_time = 10 //these shouldn't move, so let's slow down updates to 1 second (any slower and the deletion of the vines would be too slow) + vines += Beam(T, "vine", maxdistance = 5, beam_type = /obj/effect/ebeam/reacting/vine) addtimer(CALLBACK(src, PROC_REF(bear_fruit)), growth_time) /obj/structure/alien/resin/flower_bud_enemy/proc/bear_fruit() @@ -29,6 +29,10 @@ new /mob/living/simple_animal/hostile/venus_human_trap(get_turf(src)) qdel(src) +/obj/structure/alien/resin/flower_bud_enemy/Destroy() + QDEL_LIST(vines) + return ..() + /mob/living/simple_animal/hostile/venus_human_trap name = "venus human trap" @@ -61,7 +65,7 @@ if(L.stat == DEAD) var/datum/beam/B = grasping[L] if(B) - B.End() + qdel(B) grasping -= L //Can attack+pull multiple times per cycle diff --git a/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm b/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm index fb073d63bd6b..4634fbeedcb1 100644 --- a/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm @@ -63,7 +63,7 @@ ranged = 1 retreat_distance = 5 minimum_distance = 5 - projectiletype = /obj/item/projectile/snowball + projectiletype = /obj/projectile/snowball /mob/living/simple_animal/hostile/winter/reindeer name = "reindeer" @@ -131,7 +131,7 @@ maxHealth = 200 //DID YOU REALLY BELIEVE IT WOULD BE THIS EASY!??!! health = 200 ranged = 1 - projectiletype = /obj/item/projectile/ornament + projectiletype = /obj/projectile/ornament retreat_distance = 5 minimum_distance = 5 @@ -144,7 +144,7 @@ ranged = 1 rapid = 3 speed = 0 //he's lost some weight from the fighting - projectiletype = /obj/item/projectile/ornament + projectiletype = /obj/projectile/ornament retreat_distance = 3 minimum_distance = 3 diff --git a/code/modules/mob/living/simple_animal/hulk.dm b/code/modules/mob/living/simple_animal/hulk.dm index 3c1f22b2a96a..b2a5be379bbc 100644 --- a/code/modules/mob/living/simple_animal/hulk.dm +++ b/code/modules/mob/living/simple_animal/hulk.dm @@ -146,8 +146,8 @@ unmutate() /mob/living/simple_animal/hulk/proc/unmutate() - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(10, 0, src.loc) + var/datum/effect_system/fluid_spread/smoke/smoke = new + smoke.set_up(amount = 10, location = src.loc) smoke.start() playsound(src, 'sound/effects/bamf.ogg', CHANNEL_BUZZ) diff --git a/code/modules/mob/living/simple_animal/hulk_power.dm b/code/modules/mob/living/simple_animal/hulk_power.dm index 871c63769d63..7308fd8555c1 100644 --- a/code/modules/mob/living/simple_animal/hulk_power.dm +++ b/code/modules/mob/living/simple_animal/hulk_power.dm @@ -34,8 +34,8 @@ else Monster = new /mob/living/simple_animal/hulk/human(get_turf(user)) - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(10, 0, user.loc) + var/datum/effect_system/fluid_spread/smoke/smoke = new + smoke.set_up(amount = 10, location = user.loc) smoke.start() playsound(user, 'sound/effects/bamf.ogg', CHANNEL_BUZZ) Monster.original_body = user @@ -394,8 +394,8 @@ clown_hulk.AdjustWeakened(-2 SECONDS) clown_hulk.AdjustStunned(-2 SECONDS) - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(10,0, user.loc) + var/datum/effect_system/fluid_spread/smoke/smoke = new + smoke.set_up(amount = 10, location = user.loc) smoke.start() playsound(user,pick('sound/spookoween/scary_clown_appear.ogg','sound/spookoween/scary_horn.ogg','sound/spookoween/scary_horn2.ogg','sound/spookoween/scary_horn3.ogg'),CHANNEL_BUZZ, 100) @@ -446,14 +446,14 @@ //Harchok -/obj/item/projectile/energy/hulkspit +/obj/projectile/energy/hulkspit name = "spit" icon = 'icons/obj/weapons/projectiles.dmi' icon_state = "neurotoxin" damage = 15 damage_type = TOX -/obj/item/projectile/energy/hulkspit/on_hit(atom/target, def_zone = BODY_ZONE_CHEST, blocked = 0) +/obj/projectile/energy/hulkspit/on_hit(atom/target, def_zone = BODY_ZONE_CHEST, blocked = 0) if(iscarbon(target)) var/mob/living/carbon/M = target M.Weaken(4 SECONDS) @@ -469,7 +469,7 @@ action_background_icon_state = "bg_hulk" selection_activated_message = "Your prepare to spit fire! Left-click to spit at a target!" selection_deactivated_message = "You swallow your spit...for now." - fireball_type = /obj/item/projectile/energy/hulkspit + fireball_type = /obj/projectile/energy/hulkspit base_cooldown = 25 SECONDS human_req = FALSE need_active_overlay = TRUE @@ -493,7 +493,7 @@ action_icon_state = "lazer_hulk" selection_activated_message = "You strained your eyes preparing the LAZOR! Left-click to fire at a target!" selection_deactivated_message = "You relax your eyes...for now." - fireball_type = /obj/item/projectile/beam + fireball_type = /obj/projectile/beam base_cooldown = 7 SECONDS sound = 'sound/weapons/laser.ogg' diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 8e3c8d082450..8e4222f64dac 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -193,7 +193,7 @@ //Bullets -/mob/living/simple_animal/parrot/bullet_act(obj/item/projectile/P) +/mob/living/simple_animal/parrot/bullet_act(obj/projectile/P) ..() if(!stat && !client) if(parrot_state == PARROT_PERCH) @@ -840,7 +840,7 @@ used_radios += ears -/mob/living/simple_animal/parrot/hear_say(list/message_pieces, verb = "says", italics = 0, mob/speaker = null, sound/speech_sound, sound_vol, sound_frequency, use_voice = TRUE) +/mob/living/simple_animal/parrot/hear_say(list/message_pieces, verb = "says", italics = 0, mob/speaker = null, sound/speech_sound, sound_vol, sound_frequency, use_voice = TRUE, is_whisper = FALSE) if(speaker != src && prob(50)) parrot_hear(html_decode(multilingual_to_message(message_pieces))) ..() diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 0538a1d6465b..f951c09da619 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -3,12 +3,14 @@ icon = 'icons/mob/animal.dmi' health = 20 maxHealth = 20 - gender = PLURAL //placeholder + gender = MALE //placeholder universal_understand = 1 universal_speak = 0 status_flags = CANPUSH + hud_type = /datum/hud/simple_animal + var/icon_living = "" var/icon_dead = "" var/icon_resting = "" @@ -133,6 +135,10 @@ var/Discipline = 0 // if a slime has been hit with a freeze gun, or wrestled/attacked off a human, they become disciplined and don't attack anymore for a while var/SStun = 0 // stun variable + var/list/low_priority_targets = list() + + var/atom/leash // autodust on a big distance + var/leash_radius = 10 /mob/living/simple_animal/Initialize(mapload) . = ..() @@ -301,6 +307,12 @@ /mob/living/simple_animal/handle_environment(datum/gas_mixture/environment) + if (leash) + var/dist = get_dist(src, leash) + if (dist > leash_radius) + src.dust() + return + var/atmos_suitable = TRUE if(!HAS_TRAIT(src, TRAIT_NO_BREATH)) @@ -359,12 +371,9 @@ /mob/living/simple_animal/say_quote(message) - var/verb = "says" - - if(speak_emote.len) - verb = pick(speak_emote) - - return verb + if(speak_emote?.len) + return get_verb(speak_emote) + return ..() /mob/living/simple_animal/proc/set_varspeed(var_value) @@ -687,6 +696,11 @@ /mob/living/simple_animal/Login() ..() SSmove_manager.stop_looping(src) // if mob is moving under ai control, then stop AI movement + toggle_ai(AI_OFF) + +/mob/living/simple_animal/Logout() + . = ..() + toggle_ai(AI_ON) /mob/living/simple_animal/say(message, verb = "says", sanitize = TRUE, ignore_speech_problems = FALSE, ignore_atmospherics = FALSE, ignore_languages = FALSE) @@ -789,3 +803,18 @@ if(!can_collar) return AddElement(/datum/element/strippable, create_strippable_list(list(/datum/strippable_item/pet_collar))) + +/mob/living/simple_animal/proc/set_leash(atom/A, radius) + leash = A + leash_radius = radius + +/mob/living/simple_animal/deadchat_plays(mode = DEADCHAT_ANARCHY_MODE, cooldown = 12 SECONDS) + . = AddComponent(/datum/component/deadchat_control/cardinal_movement, mode, list(), cooldown, CALLBACK(src, PROC_REF(end_dchat_plays))) + + if(. == COMPONENT_INCOMPATIBLE) + return + + stop_automated_movement = TRUE + +/mob/living/simple_animal/proc/end_dchat_plays() + stop_automated_movement = FALSE diff --git a/code/modules/mob/living/simple_animal/slime/say.dm b/code/modules/mob/living/simple_animal/slime/say.dm index 8679d64a6999..f61609ffd482 100644 --- a/code/modules/mob/living/simple_animal/slime/say.dm +++ b/code/modules/mob/living/simple_animal/slime/say.dm @@ -1,15 +1,4 @@ -/mob/living/simple_animal/slime/say_quote(text, datum/language/speaking) - var/verb = "blorbles" - var/ending = copytext(text, length(text)) - - if(ending == "?") - verb = "inquisitively blorbles" - else if(ending == "!") - verb = "loudly blorbles" - - return verb - -/mob/living/simple_animal/slime/hear_say(list/message_pieces, verb = "says", italics = 0, mob/speaker = null, sound/speech_sound, sound_vol, sound_frequency, use_voice = TRUE) +/mob/living/simple_animal/slime/hear_say(list/message_pieces, verb = "says", italics = 0, mob/speaker = null, sound/speech_sound, sound_vol, sound_frequency, use_voice = TRUE, is_whisper = FALSE) if(speaker != src && !stat) if(speaker in Friends) speech_buffer = list() diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 6b51b2320a1a..ae4d13216be5 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -20,7 +20,10 @@ response_disarm = "shoos" response_harm = "stomps on" emote_see = list("jiggles", "bounces in place") - speak_emote = list("blorbles") + verb_say = "blorbles" + verb_ask = "inquisitively blorbles" + verb_exclaim = "loudly blorbles" + verb_yell = "loudly blorbles" bubble_icon = "slime" tts_seed = "Chen" @@ -40,6 +43,8 @@ footstep_type = FOOTSTEP_MOB_SLIME + hud_type = /datum/hud/slime + var/cores = 1 // the number of /obj/item/slime_extract's the slime has left inside var/mutation_chance = 30 // Chance of mutating, should be between 25 and 35 var/chance_reproduce = 80 @@ -282,7 +287,7 @@ amount = -abs(amount) return ..() //Heals them -/mob/living/simple_animal/slime/bullet_act(obj/item/projectile/Proj) +/mob/living/simple_animal/slime/bullet_act(obj/projectile/Proj) if(!Proj) return attacked += 10 - age_state.attacked diff --git a/code/modules/mob/living/taste.dm b/code/modules/mob/living/taste.dm index fd6deb1358e2..4b3f1c272b2a 100644 --- a/code/modules/mob/living/taste.dm +++ b/code/modules/mob/living/taste.dm @@ -19,11 +19,12 @@ // We dont want to spam the same message over and over again at the // person. Give it a bit of a buffer. if(AmountHallucinate() > 50 SECONDS && prob(25)) - text_output = pick("spiders","dreams","nightmares","the future","the past","victory",\ - "defeat","pain","bliss","revenge","poison","time","space","death","life","truth","lies","justice","memory",\ - "regrets","your soul","suffering","music","noise","blood","hunger","the american way") + text_output = "вкус " + text_output += pick("пауков","мечты","кошмаров","будущего","прошлого","победы",\ + "поражения","боли","блаженства","мести","яда","времени","космоса","смерти","жизни","правды","лжи","справедливости","воспоминаний",\ + "сожалений","души","страданий","музыки","шума","крови","голода") if(text_output != last_taste_text || last_taste_time + 100 < world.time) - to_chat(src, "You can taste [text_output].") + to_chat(src, span_notice("Вы чувствуете [text_output].")) // "something indescribable" -> too many tastes, not enough flavor. last_taste_time = world.time diff --git a/code/modules/mob/living/ventcrawling.dm b/code/modules/mob/living/ventcrawling.dm index 4e7980f11152..21398a3f0aae 100644 --- a/code/modules/mob/living/ventcrawling.dm +++ b/code/modules/mob/living/ventcrawling.dm @@ -72,7 +72,7 @@ return FALSE if(!can_ventcrawl(ventcrawl_target)) return FALSE - return stop_ventcrawling(ventcrawl_target) + return stop_ventcrawling() //Entrance here if(!can_ventcrawl(ventcrawl_target, entering = TRUE)) @@ -124,12 +124,11 @@ * Moves living mob to the turf contents and cleanse ventcrawling stuff * * Arguments: - * * ventcrawl_target - The vent from which we are moved from * * message - if TRUE shows visible message to everyone * * Returns `TRUE` on success. */ -/mob/living/proc/stop_ventcrawling(obj/machinery/atmospherics/ventcrawl_target, message = TRUE) +/mob/living/proc/stop_ventcrawling(message = TRUE) SHOULD_CALL_PARENT(TRUE) if(!is_ventcrawling(src)) diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index d4134aae5154..0ccc35d46166 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -29,8 +29,7 @@ if(!client) return FALSE canon_client = client - GLOB.player_list |= src - GLOB.keyloop_list |= src + add_to_player_list() last_known_ckey = ckey update_Login_details() world.update_status() @@ -71,7 +70,7 @@ reset_perspective(loc) - if(ckey in GLOB.deadmins) + if((ckey in GLOB.de_admins) || (ckey in GLOB.de_mentors)) add_verb(src, /client/proc/readmin) //Clear ability list and update from mob. diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm index 44d97c84b3a9..4ad2bd7fd1f1 100644 --- a/code/modules/mob/logout.dm +++ b/code/modules/mob/logout.dm @@ -3,8 +3,7 @@ set_typing_indicator(FALSE) SStgui.on_logout(src) // Cleanup any TGUIs the user has open unset_machine() - GLOB.player_list -= src - GLOB.keyloop_list -= src + remove_from_player_list() log_access_out(src) add_game_logs("OWNERSHIP: [key_name(src)] is no longer owning mob [src]([src.type])") // `holder` is nil'd out by now, so we check the `admin_datums` array directly diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index d1020156e82d..2abbbba5f6f6 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1,7 +1,7 @@ /mob/Destroy()//This makes sure that mobs with clients/keys are not just deleted from the game. - GLOB.mob_list -= src - GLOB.dead_mob_list -= src - GLOB.alive_mob_list -= src + remove_from_mob_list() + remove_from_alive_mob_list() + remove_from_dead_mob_list() focus = null QDEL_NULL(hud_used) if(mind && mind.current == src) @@ -25,11 +25,11 @@ return ..() /mob/Initialize(mapload) - GLOB.mob_list += src + add_to_mob_list() if(stat == DEAD) - GLOB.dead_mob_list += src + add_to_dead_mob_list() else - GLOB.alive_mob_list += src + add_to_alive_mob_list() set_focus(src) prepare_huds() . = ..() @@ -39,6 +39,8 @@ if(can_strip()) ADD_TRAIT(src, TRAIT_CAN_STRIP, GENERIC_TRAIT) + AddComponent(/datum/component/pref_holder) + /mob/vv_edit_var(var_name, var_value) switch(var_name) if(NAMEOF(src, focus)) @@ -89,7 +91,7 @@ return "" /mob/proc/Cell() - set category = "Admin" + set category = "Admin.Debug" set hidden = 1 if(!loc) return 0 @@ -140,11 +142,13 @@ // message is the message output to anyone who can see e.g. "[src] does something!" // self_message (optional) is what the src mob sees e.g. "You do something!" // blind_message (optional) is what blind people will hear e.g. "You hear something!" -/mob/visible_message(message, self_message, blind_message, list/ignored_mobs, chat_message_type) +/mob/visible_message(message, self_message, blind_message, list/ignored_mobs, chat_message_type, projectile_message = FALSE) if(!isturf(loc)) // mobs inside objects (such as lockers) shouldn't have their actions visible to those outside the object - for(var/mob/mob as anything in (get_mobs_in_view(3, src, include_radio = FALSE) - ignored_mobs)) + for(var/mob/mob as anything in viewers(3, src) - ignored_mobs) if(mob.see_invisible < invisibility) continue //can't view the invisible + if(projectile_message && (mob?.client?.prefs.toggles2 & PREFTOGGLE_2_OFF_PROJECTILE_MESSAGES)) + continue var/msg = message if(self_message && mob == src) msg = self_message @@ -155,9 +159,13 @@ mob.show_message(msg, EMOTE_VISIBLE, blind_message, EMOTE_AUDIBLE, chat_message_type) return - for(var/mob/mob as anything in (get_mobs_in_view(7, src, include_radio = FALSE) - ignored_mobs)) + for(var/mob/mob as anything in viewers(7, src) - ignored_mobs) if(mob.see_invisible < invisibility) continue //can't view the invisible + + if(projectile_message && (mob?.client?.prefs.toggles2 & PREFTOGGLE_2_OFF_PROJECTILE_MESSAGES)) + continue + var/msg = message if(self_message && mob == src) msg = self_message @@ -168,8 +176,10 @@ // Use for objects performing visible actions // message is output to anyone who can see, e.g. "The [src] does something!" // blind_message (optional) is what blind people will hear e.g. "You hear something!" -/atom/proc/visible_message(message, self_message, blind_message, list/ignored_mobs) - for(var/mob/mob as anything in (get_mobs_in_view(7, src, include_radio = FALSE) - ignored_mobs)) +/atom/proc/visible_message(message, self_message, blind_message, list/ignored_mobs, chat_message_type, projectile_message = FALSE) + for(var/mob/mob as anything in viewers(7, src) - ignored_mobs) + if(projectile_message && (mob?.client?.prefs.toggles2 & PREFTOGGLE_2_OFF_PROJECTILE_MESSAGES)) + continue mob.show_message(message, EMOTE_VISIBLE, blind_message, EMOTE_AUDIBLE) @@ -184,7 +194,7 @@ if(hearing_distance) range = hearing_distance var/msg = message - for(var/mob/M in get_mobs_in_view(range, src)) + for(var/mob/M as anything in viewers(range, src)) M.show_message(msg, EMOTE_AUDIBLE, deaf_message, EMOTE_VISIBLE) // based on say code @@ -211,7 +221,7 @@ var/range = 7 if(hearing_distance) range = hearing_distance - for(var/mob/M in get_mobs_in_view(range, src)) + for(var/mob/M as anything in viewers(range, src)) M.show_message(message, EMOTE_AUDIBLE, deaf_message, EMOTE_VISIBLE) @@ -344,8 +354,10 @@ DEFAULT_QUEUE_OR_CALL_VERB(VERB_CALLBACK(src, PROC_REF(run_examinate), A)) -/mob/proc/run_examinate(atom/A) - var/list/result = A.examine(src) +/mob/proc/run_examinate(atom/target) + var/list/result = target.examine(src) + SEND_SIGNAL(src, COMSIG_MOB_RUN_EXAMINATE, target, result) + to_chat(src, chat_box_examine(result.Join("\n")), MESSAGE_TYPE_INFO, confidential = TRUE) @@ -558,6 +570,35 @@ return FALSE SEND_SIGNAL(src, COMSIG_DO_MOB_STRIP, user, usr) +/** + * Checks whether a mob can perform an action to interact with an object + * + * The default behavior checks if the mob is: + * * Directly adjacent (1-tile radius) + * * Standing up (not resting) + * * Allows telekinesis to be used to skip adjacent checks (if they have DNA mutation) + * * + * action_bitflags: (see code/__DEFINES/mobs.dm) + * * NEED_GRAVITY - If gravity must be present to perform action (can't use pens without gravity) + * * NEED_LITERACY - If reading is required to perform action (can't read a book if you are illiterate) + * * NEED_LIGHT - If lighting must be present to perform action (can't heal someone in the dark) + * * NEED_DEXTERITY - If other mobs (monkeys, aliens, etc) can perform action (can't use computers if you are a monkey) + * * NEED_HANDS - If hands are required to perform action (can't pickup items if you are a cyborg) + * * FORBID_TELEKINESIS_REACH - If telekinesis is forbidden to perform action from a distance (ex. canisters are blacklisted from telekinesis manipulation) + * * ALLOW_SILICON_REACH - If silicons are allowed to perform action from a distance (silicons can operate airlocks from far away) + * * ALLOW_RESTING - If resting on the floor is allowed to perform action () + * * ALLOW_VENTCRAWL - Mobs with ventcrawl traits can alt-click this to vent + * * BYPASS_ADJACENCY - The target does not have to be adjacent + * * SILENT_ADJACENCY - Adjacency is required but errors are not printed + * * NOT_INSIDE_TARGET - The target maybe adjacent but the mob should not be inside the target + * * ALLOW_PAI - Allows pAIs to perform an action + * + * silence_adjacency: Sometimes we want to use this proc to check interaction without allowing it to throw errors for base case adjacency + * Alt click uses this, as otherwise you can detect what is interactable from a distance via the error message +**/ +/mob/proc/can_perform_action(atom/target, action_bitflags) + return + /mob/proc/is_mechanical() return mind && (mind.assigned_role == JOB_TITLE_CYBORG || mind.assigned_role == JOB_TITLE_AI) @@ -591,8 +632,9 @@ /mob/proc/get_status_tab_items() SHOULD_CALL_PARENT(TRUE) - var/list/status_tab_data = list() - return status_tab_data + . = list() + SEND_SIGNAL(src, COMSIG_MOB_GET_STATUS_TAB_ITEMS, .) + return . // facing verbs /mob/proc/canface() @@ -638,7 +680,7 @@ return FALSE /mob/proc/can_use_machinery(obj/machinery/mach) - return IsAdvancedToolUser() + return IsAdvancedToolUser() /mob/proc/swap_hand() return @@ -673,7 +715,7 @@ var/mob/living/picked = tgui_input_list(usr, "Please select an NPC to respawn as", "Respawn as NPC", allowed_creatures) if(!picked) return - + if(picked == "Mouse") become_mouse() return @@ -684,7 +726,7 @@ if(QDELETED(picked_mob) || picked_mob.key || picked_mob.stat == DEAD) to_chat(usr, span_warning("[capitalize(picked_mob)] is no longer available to respawn!")) return - + if(istype(picked_mob, /mob/living/simple_animal/borer)) var/mob/living/simple_animal/borer/borer = picked_mob borer.transfer_personality(usr.client) @@ -693,7 +735,7 @@ to_chat(usr, span_notify(message)) GLOB.respawnable_list -= usr picked_mob.key = key - + /mob/proc/become_mouse() var/timedifference = world.time - client.time_joined_as_mouse @@ -818,17 +860,20 @@ //Can the mob see reagents inside of containers? /mob/proc/can_see_reagents() - return 0 + return FALSE /mob/proc/can_see_food() return FALSE //Can this mob leave its location without breaking things terrifically? /mob/proc/can_safely_leave_loc() - return 1 // Yes, you can + return TRUE // Yes, you can /mob/proc/IsVocal() - return 1 + return TRUE + +/mob/proc/cannot_speak_loudly() + return FALSE /mob/proc/get_access_locations() return list() @@ -997,6 +1042,17 @@ SEND_SIGNAL(src, COMSIG_MOB_UPDATE_SIGHT) sync_lighting_plane_alpha() +///Update the mouse pointer of the attached client in this mob +/mob/proc/update_mouse_pointer() + if(!client) + return + + if(client.mouse_pointer_icon != initial(client.mouse_pointer_icon))//only send changes to the client if theyre needed + client.mouse_pointer_icon = initial(client.mouse_pointer_icon) + + if(client.mouse_override_icon) + client.mouse_pointer_icon = client.mouse_override_icon + /mob/proc/set_vision_override(datum/vision_override/O) QDEL_NULL(vision_type) if(O) //in case of null @@ -1161,3 +1217,44 @@ GLOBAL_LIST_INIT(holy_areas, typecacheof(list( if(update) update_actionspeed() +/mob/proc/update_z(new_z) // 1+ to register, null to unregister + if(registered_z == new_z) + return + if(registered_z) + SSmobs.clients_by_zlevel[registered_z] -= src + if(isnull(client)) + registered_z = null + return + if(!new_z) + registered_z = new_z + return + //Figure out how many clients were here before + var/oldlen = SSmobs.clients_by_zlevel[new_z].len + SSmobs.clients_by_zlevel[new_z] += src + for(var/index in length(SSidlenpcpool.idle_mobs_by_zlevel[new_z]) to 1 step -1) //Backwards loop because we're removing (guarantees optimal rather than worst-case performance), it's fine to use .len here but doesn't compile on 511 + var/mob/living/simple_animal/animal = SSidlenpcpool.idle_mobs_by_zlevel[new_z][index] + if(animal) + if(!oldlen) + //Start AI idle if nobody else was on this z level before (mobs will switch off when this is the case) + animal.toggle_ai(AI_IDLE) + //If they are also within a close distance ask the AI if it wants to wake up + if(get_dist(get_turf(src), get_turf(animal)) < MAX_SIMPLEMOB_WAKEUP_RANGE) + animal.consider_wakeup() // Ask the mob if it wants to turn on it's AI + //They should clean up in destroy, but often don't so we get them here + else + SSidlenpcpool.idle_mobs_by_zlevel[new_z] -= animal + registered_z = new_z + +/mob/proc/track_z() + if(client || registered_z) // This is a temporary error tracker to make sure we've caught everything + var/turf/T = get_turf(src) + if(client && registered_z != T.z) + message_admins("[src] [ADMIN_FLW(src, "FLW")] has somehow ended up in Z-level [T.z] despite being registered in Z-level [registered_z]. If you could ask them how that happened and notify the coders, it would be appreciated.") + add_misc_logs(src, "Z-TRACKING: [src] has somehow ended up in Z-level [T.z] despite being registered in Z-level [registered_z].") + update_z(T.z) + else if(!client && registered_z) + add_misc_logs(src, "Z-TRACKING: [src] of type [src.type] has a Z-registration despite not having a client.") + update_z(null) + +/mob/proc/set_key(key) + src.key = key diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index a76ad7796fa6..bee8d8f3ca60 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -93,10 +93,13 @@ var/list/datum/language/languages /// For reagents that grant language knowlege. var/list/temporary_languages - var/list/speak_emote = list("says") // Verbs used when speaking. Defaults to 'say' if speak_emote is null. + var/list/speak_emote = list() // Verbs used when speaking. Defaults to 'say' if speak_emote is null. + var/verb_say = "says" + var/verb_ask = "asks" + var/verb_exclaim = list("exclaims", "shouts") + var/verb_yell = "yells" /// Define emote default type, EMOTE_VISIBLE for seen emotes, EMOTE_AUDIBLE for heard emotes. var/emote_type = EMOTE_VISIBLE - var/name_archive //For admin things like possession var/gunshot_residue var/timeofdeath = 0 //Living @@ -123,6 +126,8 @@ var/obj/item/clothing/mask/wear_mask = null //Carbon var/datum/hud/hud_used = null + /// Mob hud type + var/hud_type = /datum/hud hud_possible = list(SPECIALROLE_HUD) @@ -192,8 +197,6 @@ var/atom/movable/remote_control //Calls relaymove() to whatever it is - var/obj/control_object //Used by admins to possess objects. All mobs should have this var - //Whether or not mobs can understand other mobtypes. These stay in /mob so that ghosts can hear everything. var/universal_speak = 0 // Set to 1 to enable the mob to speak to everyone -- TLE var/universal_understand = 0 // Set to 1 to enable the mob to understand everyone, not necessarily speak @@ -221,8 +224,6 @@ //Ghosted var, set only if a player has manually ghosted out of this mob. var/player_ghosted = 0 - var/turf/listed_turf = null //the current turf being examined in the stat panel - var/list/active_genes var/last_movement = -100 // Last world.time the mob actually moved of its own accord. diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 42713971a0af..de37836b9a82 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -58,7 +58,8 @@ SPECIAL_ROLE_TRAITOR, SPECIAL_ROLE_VAMPIRE, SPECIAL_ROLE_VAMPIRE_THRALL, - SPECIAL_ROLE_THIEF + SPECIAL_ROLE_THIEF, + SPECIAL_ROLE_MALFAI ) if(special_role in crew_roles) return 0 @@ -93,30 +94,41 @@ return U.sensor_mode return SUIT_SENSOR_OFF -/proc/offer_control(mob/M) - to_chat(M, "Control of your mob has been offered to dead players.") - log_admin("[key_name(usr)] has offered control of ([key_name(M)]) to ghosts.") - var/minhours = input(usr, "Minimum hours required to play [M]?", "Set Min Hrs", 10) as null|num +/proc/offer_control(mob/offer_mob, hours, hide_role) + if(HAS_TRAIT(offer_mob, TRAIT_BEING_OFFERED)) + return + var/minhours + ADD_TRAIT(offer_mob, TRAIT_BEING_OFFERED, ADMIN_OFFER_TRAIT) + to_chat(offer_mob, span_warning("Призракам предложен контроль над вашим существом.")) + if(!hours) + minhours = tgui_input_number(usr, "Минимальное количество часов, необходимое для игры на [offer_mob]?", "Установите число часов", 10) + else + minhours = hours if(isnull(minhours)) return - message_admins("[key_name_admin(usr)] has offered control of ([key_name_admin(M)]) to ghosts with [minhours] hrs playtime") - var/question = "Do you want to play as [M.real_name ? M.real_name : M.name][M.job ? " ([M.job])" : ""]" - if(alert("Do you want to show the antag status?","Show antag status","Yes","No") == "Yes") - question += ", [M.mind?.special_role ? M.mind?.special_role : "No special role"]" - var/list/mob/dead/observer/candidates = SSghost_spawns.poll_candidates("[question]?", poll_time = 10 SECONDS, min_hours = minhours, source = M) + log_and_message_admins("has offered control of ([key_name_admin(offer_mob)]) to ghosts with [minhours] hrs playtime") + var/question = "Вы хотите войти в раунд как [offer_mob.real_name ? offer_mob.real_name : offer_mob][offer_mob.job ? " ([offer_mob.job])" : ""]" + if(isnull(hide_role)) + if(tgui_alert(usr, "Вы хотите показывать спец-роль существа?","Показывать спец-роль", list("Да","Нет")) == "Да") + question += ", [offer_mob.mind?.special_role || "Нет спец-роли"]" + else if(!hide_role) + question += ", [offer_mob.mind?.special_role ? offer_mob.mind?.special_role : "Нет спец-роли"]" + var/list/mob/dead/observer/candidates = SSghost_spawns.poll_candidates("[question]?", poll_time = 10 SECONDS, min_hours = minhours, source = offer_mob) var/mob/dead/observer/theghost = null + REMOVE_TRAIT(offer_mob, TRAIT_BEING_OFFERED, ADMIN_OFFER_TRAIT) + if(LAZYLEN(candidates)) theghost = pick(candidates) - to_chat(M, "Your mob has been taken over by a ghost!") - message_admins("[key_name_admin(theghost)] has taken control of ([key_name_admin(M)])") - log_game("[theghost.key] has taken control of [M] (ckey: [M.key])") - M.ghostize() - M.key = theghost.key + to_chat(offer_mob, span_notice("Контроль над вашим существом был передан призраку!")) + message_admins("[key_name_admin(theghost)] has taken control of ([key_name_admin(offer_mob)])") + log_game("[theghost.key] has taken control of [offer_mob] (ckey: [offer_mob.key])") + offer_mob.ghostize() + offer_mob.key = theghost.key else - to_chat(M, "There were no ghosts willing to take control.") - log_game("No one decided to take control of [M] (ckey: [M.key])") - message_admins("No ghosts were willing to take control of [key_name_admin(M)])") + to_chat(offer_mob, span_notice("Не было призраков, желающих взять под свой контроль ваше существо.")) + log_game("No one decided to take control of [offer_mob] (ckey: [offer_mob.key])") + message_admins("No ghosts were willing to take control of [key_name_admin(offer_mob)])") /proc/check_zone(zone) if(!zone) @@ -849,3 +861,14 @@ GLOBAL_LIST_INIT(intents, list(INTENT_HELP,INTENT_DISARM,INTENT_GRAB,INTENT_HARM return FALSE return TRUE + +/// Takes in an associated list (key `/datum/action` typepaths, value is the AI blackboard key) and handles granting the action and adding it to the mob's AI controller blackboard. +/// This is only useful in instances where you don't want to store the reference to the action on a variable on the mob. +/mob/proc/grant_actions_by_list(list/input) + if(length(input) <= 0) + return + + for(var/action in input) + var/datum/action/ability = new action(src) + ability.Grant(src) + diff --git a/code/modules/mob/mob_lists.dm b/code/modules/mob/mob_lists.dm new file mode 100644 index 000000000000..d2e76b8f96f3 --- /dev/null +++ b/code/modules/mob/mob_lists.dm @@ -0,0 +1,90 @@ +///Adds the mob reference to the list and directory of all mobs. Called on Initialize(). +/mob/proc/add_to_mob_list() + GLOB.mob_list |= src + +///Removes the mob reference from the list and directory of all mobs. Called on Destroy(). +/mob/proc/remove_from_mob_list() + GLOB.mob_list -= src + +///Adds the mob reference to the list of all mobs alive. If mob is cliented, it adds it to the list of all living player-mobs. +/mob/proc/add_to_alive_mob_list() + if(QDELETED(src)) + return + GLOB.alive_mob_list |= src + if(client) + add_to_current_living_players() + +///Removes the mob reference from the list of all mobs alive. If mob is cliented, it removes it from the list of all living player-mobs. +/mob/proc/remove_from_alive_mob_list() + GLOB.alive_mob_list -= src + if(client) + remove_from_current_living_players() + +///Adds the mob reference to the list of all the dead mobs. If mob is cliented, it adds it to the list of all dead player-mobs. +/mob/proc/add_to_dead_mob_list() + if(QDELETED(src)) + return + GLOB.dead_mob_list |= src + if(client) + add_to_current_dead_players() + +///Remvoes the mob reference from list of all the dead mobs. If mob is cliented, it adds it to the list of all dead player-mobs. +/mob/proc/remove_from_dead_mob_list() + GLOB.dead_mob_list -= src + if(client) + remove_from_current_dead_players() + + +///Adds the cliented mob reference to the list of all player-mobs, besides to either the of dead or alive player-mob lists, as appropriate. Called on Login(). +/mob/proc/add_to_player_list() + SHOULD_CALL_PARENT(TRUE) + GLOB.player_list |= src + GLOB.keyloop_list |= src + if(stat == DEAD) + add_to_current_dead_players() + else + add_to_current_living_players() + +///Removes the mob reference from the list of all player-mobs, besides from either the of dead or alive player-mob lists, as appropriate. Called on Logout(). +/mob/proc/remove_from_player_list() + SHOULD_CALL_PARENT(TRUE) + GLOB.player_list -= src + GLOB.keyloop_list -= src + if(stat == DEAD) + remove_from_current_dead_players() + else + remove_from_current_living_players() + + +///Adds the cliented mob reference to either the list of dead player-mobs or to the list of observers, depending on how they joined the game. +/mob/proc/add_to_current_dead_players() + GLOB.dead_player_list |= src + +/mob/dead/observer/add_to_current_dead_players() + if(started_as_observer) + GLOB.current_observers_list |= src + return + return ..() + +/mob/dead/new_player/add_to_current_dead_players() + return + +///Removes the mob reference from either the list of dead player-mobs or from the list of observers, depending on how they joined the game. +/mob/proc/remove_from_current_dead_players() + GLOB.dead_player_list -= src + +/mob/dead/observer/remove_from_current_dead_players() + if(started_as_observer) + GLOB.current_observers_list -= src + return + return ..() + + +///Adds the cliented mob reference to the list of living player-mobs. If the mob is an antag, it adds it to the list of living antag player-mobs. +/mob/proc/add_to_current_living_players() + GLOB.alive_player_list |= src + +///Removes the mob reference from the list of living player-mobs. If the mob is an antag, it removes it from the list of living antag player-mobs. +/mob/proc/remove_from_current_living_players() + GLOB.alive_player_list -= src + diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 5eaa8ad55a01..0a078d71d69f 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -43,7 +43,7 @@ next_move_dir_add = NONE next_move_dir_sub = NONE var/old_move_delay = move_delay - move_delay = world.time + world.tick_lag //this is here because Move() can now be called multiple times per tick + move_delay = world.time + world.tick_lag // this is here because Move() can now be called multiple times per tick if(!direct || !new_loc) return FALSE @@ -52,12 +52,12 @@ return FALSE if(HAS_TRAIT(mob, TRAIT_NO_TRANSFORM)) - return FALSE //This is sota the goto stop mobs from moving var - - if(mob.control_object) - return mob.control_object.possessed_relay_move(mob, direct) + return FALSE // This is sota the goto stop mobs from moving var if(!isliving(mob)) + if(SEND_SIGNAL(mob, COMSIG_MOB_CLIENT_PRE_NON_LIVING_MOVE, new_loc, direct) & COMSIG_MOB_CLIENT_BLOCK_PRE_NON_LIVING_MOVE) + return FALSE + return mob.Move(new_loc, direct) if(mob.stat == DEAD) @@ -232,7 +232,7 @@ if(INCORPOREAL_REVENANT) //Incorporeal move, but blocked by holy-watered tiles var/turf/simulated/floor/stepTurf = get_step(L, direct) if(stepTurf) - if(stepTurf.flags & NOJAUNT) + if(stepTurf.turf_flags & NOJAUNT) move_delay += 0.5 SECONDS to_chat(L, span_warning("Святые силы блокируют Ваш путь.")) return FALSE diff --git a/code/modules/mob/mob_say.dm b/code/modules/mob/mob_say.dm index 34adbed0045c..50f0010cdf28 100644 --- a/code/modules/mob/mob_say.dm +++ b/code/modules/mob/mob_say.dm @@ -121,17 +121,23 @@ /mob/proc/say_quote(message, datum/language/speaking = null) - var/verb = "says" - var/ending = copytext(message, length(message)) - + var/ending = copytext_char(message, -1) if(speaking) - verb = genderize_decode(src, speaking.get_spoken_verb(ending)) - else - if(ending == "!") - verb = pick("exclaims", "shouts", "yells") - else if(ending == "?") - verb = "asks" - return verb + return genderize_decode(src, speaking.get_spoken_verb(ending)) + else if(ending == "!") + return get_verb(verb_exclaim) + else if(ending == "?") + return get_verb(verb_ask) + else if(copytext_char(message, -2) == "!!") + return get_verb(verb_yell) + return get_verb(verb_say) + +/mob/proc/get_verb(list/verbs) + if(!verbs) + return "" + if(!istype(verbs)) + return verbs + return pick(verbs) /// Transforms the speech emphasis mods from [/atom/movable/proc/say_emphasis] into the appropriate HTML tags #define ENCODE_HTML_EMPHASIS(input, char, html, varname) \ diff --git a/code/modules/mob/mob_transformation_simple.dm b/code/modules/mob/mob_transformation_simple.dm index 5e66d1a35f4b..4f22cfe517f8 100644 --- a/code/modules/mob/mob_transformation_simple.dm +++ b/code/modules/mob/mob_transformation_simple.dm @@ -47,7 +47,9 @@ mind.transfer_to(M) else M.key = key - + + SEND_SIGNAL(src, COMSIG_MOB_CHANGED_TYPE, M) + if(delete_old_mob) spawn(1) qdel(src) diff --git a/code/modules/mob/new_player/login.dm b/code/modules/mob/new_player/login.dm index 23b845b12e96..1508125160f6 100644 --- a/code/modules/mob/new_player/login.dm +++ b/code/modules/mob/new_player/login.dm @@ -37,7 +37,7 @@ GLOB.player_list |= src GLOB.new_player_mobs |= src - if(ckey in GLOB.deadmins) + if((ckey in GLOB.de_admins) || (ckey in GLOB.de_mentors)) add_verb(src, /client/proc/readmin) . = TRUE diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 2068742e1f87..8c5aac3aa3fa 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -16,7 +16,7 @@ if(flags & INITIALIZED) stack_trace("Warning: [src]([type]) initialized multiple times!") flags |= INITIALIZED - GLOB.mob_list += src + add_to_mob_list() return INITIALIZE_HINT_NORMAL /mob/new_player/proc/privacy_consent() @@ -138,6 +138,17 @@ if(href_list["sound_options"]) client.volume_mixer() + if(href_list["poll_panel"]) + handle_player_polling() + + if(href_list["viewpoll"]) + var/datum/poll_question/poll = locate(href_list["viewpoll"]) in GLOB.active_polls + poll_player(poll) + + if(href_list["votepollref"]) + var/datum/poll_question/poll = locate(href_list["votepollref"]) in GLOB.active_polls + vote_on_poll_handler(poll, href_list) + if(href_list["refresh"]) src << browse(null, "window=playersetup") //closes the player setup window @@ -339,7 +350,7 @@ if(src != usr) return FALSE if(!SSticker || SSticker.current_state != GAME_STATE_PLAYING) - to_chat(usr, "Раунд либо еще не готов, либо уже завершился...") + to_chat(usr, "Раунд либо ещё не готов, либо уже завершился...") return FALSE if(!GLOB.enter_allowed) to_chat(usr, "Администратор заблокировал вход в игру!") @@ -363,7 +374,8 @@ alert(msg) return FALSE if(!thisjob.character_old_enough(client)) - var/msg = "Должность [rank] недоступна в связи с недостаточным возрастом персонажа ([client?.prefs.age]). Минимальный возраст - [thisjob.min_age_allowed]" + var/datum/species/species = GLOB.all_species[client?.prefs.species] + var/msg = "Должность [rank] недоступна в связи с недостаточным возрастом персонажа ([client?.prefs.age]). Минимальный возраст - [get_age_limits(species, thisjob.min_age_type)]" to_chat(src, msg) alert(msg) return FALSE @@ -510,9 +522,9 @@ dat += "Продолжительность раунда: [round(hours)]h [round(mins)]m
" dat += "Уровень угрозы на станции: [get_security_level_ru_colors()]
" - if(SSshuttle.emergency.mode >= SHUTTLE_ESCAPE) + if(EMERGENCY_ESCAPED_OR_ENDGAMED) dat += "Станция была эвакуирована.
" - else if(SSshuttle.emergency.mode >= SHUTTLE_CALL) + else if((SSshuttle.emergency.mode == SHUTTLE_CALL) || EMERGENCY_AT_LEAST_DOCKED) dat += "В настоящее время станция проходит процедуру эвакуации.
" if(length(SSjobs.prioritized_jobs)) @@ -598,7 +610,7 @@ popup.open(0) // 0 is passed to open so that it doesn't use the onclose() proc /mob/new_player/proc/create_character() - spawning = 1 + spawning = TRUE close_spawn_windows() check_prefs_are_sane() @@ -615,19 +627,22 @@ if(mind) - mind.active = 0 //we wish to transfer the key manually - if(mind.assigned_role == JOB_TITLE_CLOWN) //give them a clownname if they are a clown - new_character.real_name = pick(GLOB.clown_names) //I hate this being here of all places but unfortunately dna is based on real_name! + mind.active = FALSE // we wish to transfer the key manually + + if(mind.assigned_role == JOB_TITLE_CLOWN) // give them a clownname if they are a clown + new_character.real_name = pick(GLOB.clown_names) // I hate this being here of all places but unfortunately dna is based on real_name! new_character.rename_self(JOB_TITLE_CLOWN) + else if(mind.assigned_role == JOB_TITLE_MIME) new_character.real_name = pick(GLOB.mime_names) new_character.rename_self(JOB_TITLE_MIME) + mind.set_original_mob(new_character) - mind.transfer_to(new_character) //won't transfer key since the mind is not active + mind.transfer_to(new_character) // won't transfer key since the mind is not active GLOB.human_names_list += new_character.real_name - new_character.key = key //Manually transfer the key to log them in + new_character.set_key(key) // Manually transfer the key to log them in return new_character diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index c24b43186e5a..6895adb5d390 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -7,7 +7,7 @@ S = GLOB.all_species[species] var/datum/robolimb/robohead - if(S.bodyflags & ALL_RPARTS) + if(S?.bodyflags & ALL_RPARTS) var/head_model = "[!rlimb_data["head"] ? "Morpheus Cyberkinetics" : rlimb_data["head"]]" robohead = GLOB.all_robolimbs[head_model] if(gender_override) @@ -19,31 +19,31 @@ socks = random_socks(gender, species) if(length(GLOB.body_accessory_by_species[species])) body_accessory = random_body_accessory(species, S.optional_body_accessory) - if(S.bodyflags & (HAS_SKIN_TONE|HAS_ICON_SKIN_TONE)) + if(S?.bodyflags & (HAS_SKIN_TONE|HAS_ICON_SKIN_TONE)) s_tone = random_skin_tone(species) - h_style = random_hair_style(gender, species, robohead) + h_style = random_hair_style(gender, S, robohead) f_style = random_facial_hair_style(gender, species, robohead) if(species in list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_MACNINEPERSON, SPECIES_WRYN, SPECIES_VULPKANIN, SPECIES_VOX)) randomize_hair_color("hair") randomize_hair_color("facial") - if(S.bodyflags & HAS_HEAD_ACCESSORY) + if(S?.bodyflags & HAS_HEAD_ACCESSORY) ha_style = random_head_accessory(species) hacc_colour = randomize_skin_color(1) - if(S.bodyflags & HAS_HEAD_MARKINGS) + if(S?.bodyflags & HAS_HEAD_MARKINGS) m_styles["head"] = random_marking_style("head", species, robohead, null, alt_head) m_colours["head"] = randomize_skin_color(1) - if(S.bodyflags & HAS_BODY_MARKINGS) + if(S?.bodyflags & HAS_BODY_MARKINGS) m_styles["body"] = random_marking_style("body", species, gender = src.gender) m_colours["body"] = randomize_skin_color(1) - if(S.bodyflags & HAS_TAIL_MARKINGS) //Species with tail markings. + if(S?.bodyflags & HAS_TAIL_MARKINGS) //Species with tail markings. m_styles["tail"] = random_marking_style("tail", species, null, body_accessory) m_colours["tail"] = randomize_skin_color(1) - if(!(S.bodyflags & ALL_RPARTS)) + if(!(S?.bodyflags & ALL_RPARTS)) randomize_eyes_color() - if(S.bodyflags & HAS_SKIN_COLOR && !(S.bodyflags & HAS_ICON_SKIN_TONE)) + if(S?.bodyflags & HAS_SKIN_COLOR && !(S?.bodyflags & HAS_ICON_SKIN_TONE)) randomize_skin_color() backbag = 2 - age = rand(AGE_MIN, AGE_MAX) + age = get_rand_age(S) /datum/preferences/proc/randomize_hair_color(var/target = "hair") @@ -211,14 +211,12 @@ if(Y)\ I.Shift(NORTH, Y);\ -/datum/preferences/proc/update_preview_icon(var/for_observer=0) //seriously. This is horrendous. +/datum/preferences/proc/update_preview_icon(for_observer = FALSE) // seriously. This is horrendous. qdel(preview_icon_front) qdel(preview_icon_side) qdel(preview_icon) - var/g = "m" - if(gender == FEMALE) g = "f" - + var/gender_suffix = gender == FEMALE ? "f" : "m" var/icon/icobase var/datum/species/current_species = GLOB.all_species[species] @@ -227,9 +225,14 @@ if(current_species) if(current_species.bodyflags & HAS_ICON_SKIN_TONE) //Handling species-specific icon-based skin tones by flagged race. var/mob/living/carbon/human/H = new + + if(!H.dna) + H.dna = new + H.dna.species = current_species H.s_tone = s_tone H.dna.species.updatespeciescolor(H, 0) //The mob's species wasn't set, so it's almost certainly different than the character's species at the moment. Thus, we need to be owner-insensitive. + var/obj/item/organ/external/chest/C = H.get_organ(BODY_ZONE_CHEST) icobase = C.icobase ? C.icobase : C.dna.species.icobase if(H.dna.species.bodyflags & HAS_TAIL) @@ -241,14 +244,14 @@ else icobase = 'icons/mob/human_races/r_human.dmi' - preview_icon = new /icon(icobase, "torso_[g]") - preview_icon.Blend(new /icon(icobase, "groin_[g]"), ICON_OVERLAY) + preview_icon = new /icon(icobase, "torso_[gender_suffix]") + preview_icon.Blend(new /icon(icobase, "groin_[gender_suffix]"), ICON_OVERLAY) var/head = "head" if(alt_head && current_species.bodyflags & HAS_ALT_HEADS) var/datum/sprite_accessory/alt_heads/H = GLOB.alt_heads_list[alt_head] if(H.icon_state) head = H.icon_state - preview_icon.Blend(new /icon(icobase, "[head]_[g]"), ICON_OVERLAY) + preview_icon.Blend(new /icon(icobase, "[head]_[gender_suffix]"), ICON_OVERLAY) var/list/check_list = list( BODY_ZONE_CHEST, BODY_ZONE_PRECISE_GROIN, diff --git a/code/modules/mob/new_player/sprite_accessories/human/human_hair.dm b/code/modules/mob/new_player/sprite_accessories/human/human_hair.dm index 57e0f7a3e719..0a049d1c53fa 100644 --- a/code/modules/mob/new_player/sprite_accessories/human/human_hair.dm +++ b/code/modules/mob/new_player/sprite_accessories/human/human_hair.dm @@ -963,3 +963,43 @@ /datum/sprite_accessory/hair/undercutfem name = "Female undercut" icon_state = "undercut_fem" + +/datum/sprite_accessory/hair/ponytail8 + name = "Ponytail 8" + icon_state = "ponytail8" + +/datum/sprite_accessory/hair/tribalbraid + name = "Tribal Braid" + icon_state = "tribalbraid" + +/datum/sprite_accessory/hair/jill + name = "Jill" + icon_state = "jill" + +/datum/sprite_accessory/hair/sabitsuki + name = "Sabitsuki" + icon_state = "sabitsuki" + +/datum/sprite_accessory/hair/kobeni + name = "Kobeni" + icon_state = "kobeni_l" + +/datum/sprite_accessory/hair/gloomy + name = "Gloomy" + icon_state = "gloomylong" + +/datum/sprite_accessory/hair/elize + name = "Elize" + icon_state = "elize" + +/datum/sprite_accessory/hair/bunstick + name = "Asian Bun" + icon_state = "bunstick" + +/datum/sprite_accessory/hair/kitty + name = "Kitty" + icon_state = "kitty" + +/datum/sprite_accessory/hair/dolly + name = "Dolly" + icon_state = "dolly" diff --git a/code/modules/mob/new_player/sprite_accessories/ipc/ipc_face.dm b/code/modules/mob/new_player/sprite_accessories/ipc/ipc_face.dm index 6b6963cfa982..37da87aca6b0 100644 --- a/code/modules/mob/new_player/sprite_accessories/ipc/ipc_face.dm +++ b/code/modules/mob/new_player/sprite_accessories/ipc/ipc_face.dm @@ -104,32 +104,32 @@ /datum/sprite_accessory/hair/ipc/hesphiastos_alt_pink name = "Pink Hesphiastos Screen" icon_state = "pink_hesp_alt" - models_allowed = list("Industrial Revolution") + models_allowed = list("Titan Enforcer") /datum/sprite_accessory/hair/ipc/hesphiastos_alt_orange name = "Orange Hesphiastos Screen" icon_state = "orange_hesp_alt" - models_allowed = list("Industrial Revolution") + models_allowed = list("Titan Enforcer") /datum/sprite_accessory/hair/ipc/hesphiastos_alt_goggle name = "Goggles Hesphiastos Screen" icon_state = "goggles_hesp_alt" - models_allowed = list("Industrial Revolution") + models_allowed = list("Titan Enforcer") /datum/sprite_accessory/hair/ipc/hesphiastos_alt_scroll name = "Scrolling Hesphiastos Screen" icon_state = "scroll_hesp_alt" - models_allowed = list("Industrial Revolution") + models_allowed = list("Titan Enforcer") /datum/sprite_accessory/hair/ipc/hesphiastos_alt_rgb name = "RGB Hesphiastos Screen" icon_state = "rgb_hesp_alt" - models_allowed = list("Industrial Revolution") + models_allowed = list("Titan Enforcer") /datum/sprite_accessory/hair/ipc/hesphiastos_alt_rainbow name = "Rainbow Hesphiastos Screen" icon_state = "rainbow_hesp_alt" - models_allowed = list("Industrial Revolution") + models_allowed = list("Titan Enforcer") //Fluff /datum/sprite_accessory/hair/ipc/fluff diff --git a/code/modules/mob/new_player/sprite_accessories/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories/sprite_accessories.dm index cdb49727d2ad..e63e77f06c73 100644 --- a/code/modules/mob/new_player/sprite_accessories/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories/sprite_accessories.dm @@ -60,6 +60,8 @@ var/fluff = 0 // Whether or not the accessory can be affected by colouration var/do_colouration = 1 + /// If our accessory is can be pickable? Used in "proc/generate_valid_markings" + var/pickable = TRUE /* HAIR */ @@ -169,7 +171,7 @@ /////////////////////////// /datum/sprite_accessory/underwear icon = 'icons/mob/clothing/underwear.dmi' - species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_DIONA, SPECIES_VULPKANIN, SPECIES_TAJARAN, SPECIES_KIDAN, SPECIES_GREY, SPECIES_PLASMAMAN, SPECIES_MACNINEPERSON, SPECIES_SKRELL, SPECIES_SLIMEPERSON, SPECIES_SKELETON, SPECIES_DRASK, SPECIES_VOX, SPECIES_MOTH) + species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_DIONA, SPECIES_VULPKANIN, SPECIES_TAJARAN, SPECIES_KIDAN, SPECIES_GREY, SPECIES_PLASMAMAN, SPECIES_MACNINEPERSON, SPECIES_WRYN, SPECIES_SKRELL, SPECIES_SLIMEPERSON, SPECIES_SKELETON, SPECIES_DRASK, SPECIES_VOX, SPECIES_MOTH) sprite_sheets = list( SPECIES_VOX = 'icons/mob/clothing/species/vox/underwear.dmi', SPECIES_GREY = 'icons/mob/clothing/species/grey/underwear.dmi', @@ -181,7 +183,7 @@ /datum/sprite_accessory/underwear/nude name = "Nude" icon_state = null - species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_DIONA, SPECIES_VULPKANIN, SPECIES_TAJARAN, SPECIES_KIDAN, SPECIES_GREY, SPECIES_PLASMAMAN, SPECIES_MACNINEPERSON, SPECIES_SKRELL, SPECIES_SLIMEPERSON, SPECIES_SKELETON, SPECIES_DRASK, SPECIES_VOX, SPECIES_MOTH) + species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_DIONA, SPECIES_VULPKANIN, SPECIES_TAJARAN, SPECIES_KIDAN, SPECIES_GREY, SPECIES_PLASMAMAN, SPECIES_MACNINEPERSON, SPECIES_WRYN, SPECIES_SKRELL, SPECIES_SLIMEPERSON, SPECIES_SKELETON, SPECIES_DRASK, SPECIES_VOX, SPECIES_MOTH) /datum/sprite_accessory/underwear/male unsuitable_gender = FEMALE @@ -316,7 +318,7 @@ //////////////////////////// /datum/sprite_accessory/undershirt icon = 'icons/mob/clothing/underwear.dmi' - species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_DIONA, SPECIES_VULPKANIN, SPECIES_TAJARAN, SPECIES_KIDAN, SPECIES_GREY, SPECIES_PLASMAMAN, SPECIES_MACNINEPERSON, SPECIES_SKRELL, SPECIES_SLIMEPERSON, SPECIES_SKELETON, SPECIES_DRASK, SPECIES_VOX, SPECIES_MOTH) + species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_DIONA, SPECIES_VULPKANIN, SPECIES_TAJARAN, SPECIES_KIDAN, SPECIES_GREY, SPECIES_PLASMAMAN, SPECIES_MACNINEPERSON, SPECIES_WRYN, SPECIES_SKRELL, SPECIES_SLIMEPERSON, SPECIES_SKELETON, SPECIES_DRASK, SPECIES_VOX, SPECIES_MOTH) sprite_sheets = list( SPECIES_VOX = 'icons/mob/clothing/species/vox/underwear.dmi', SPECIES_GREY = 'icons/mob/clothing/species/grey/underwear.dmi', @@ -327,7 +329,7 @@ /datum/sprite_accessory/undershirt/nude name = "Nude" icon_state = null - species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_DIONA, SPECIES_VULPKANIN, SPECIES_TAJARAN, SPECIES_KIDAN, SPECIES_GREY, SPECIES_PLASMAMAN, SPECIES_MACNINEPERSON, SPECIES_SKRELL, SPECIES_SLIMEPERSON, SPECIES_SKELETON, SPECIES_DRASK, SPECIES_VOX, SPECIES_MOTH) + species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_DIONA, SPECIES_VULPKANIN, SPECIES_TAJARAN, SPECIES_KIDAN, SPECIES_GREY, SPECIES_PLASMAMAN, SPECIES_MACNINEPERSON, SPECIES_WRYN, SPECIES_SKRELL, SPECIES_SLIMEPERSON, SPECIES_SKELETON, SPECIES_DRASK, SPECIES_VOX, SPECIES_MOTH) //plain color shirts /datum/sprite_accessory/undershirt/shirt_colorized @@ -556,7 +558,7 @@ /////////////////////// /datum/sprite_accessory/socks icon = 'icons/mob/clothing/underwear.dmi' - species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_DIONA, SPECIES_VULPKANIN, SPECIES_TAJARAN, SPECIES_KIDAN, SPECIES_GREY, SPECIES_PLASMAMAN, SPECIES_MACNINEPERSON, SPECIES_SKRELL, SPECIES_SLIMEPERSON, SPECIES_SKELETON, SPECIES_DRASK, SPECIES_VOX, SPECIES_MOTH) + species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_DIONA, SPECIES_VULPKANIN, SPECIES_TAJARAN, SPECIES_KIDAN, SPECIES_GREY, SPECIES_PLASMAMAN, SPECIES_MACNINEPERSON, SPECIES_WRYN, SPECIES_SKRELL, SPECIES_SLIMEPERSON, SPECIES_SKELETON, SPECIES_DRASK, SPECIES_VOX, SPECIES_MOTH) sprite_sheets = list( SPECIES_VOX = 'icons/mob/clothing/species/vox/underwear.dmi', SPECIES_UNATHI = 'icons/mob/clothing/species/unathi/underwear.dmi', @@ -567,7 +569,7 @@ /datum/sprite_accessory/socks/nude name = "Nude" icon_state = null - species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_DIONA, SPECIES_VULPKANIN, SPECIES_TAJARAN, SPECIES_KIDAN, SPECIES_GREY, SPECIES_PLASMAMAN, SPECIES_MACNINEPERSON, SPECIES_SKRELL, SPECIES_SLIMEPERSON, SPECIES_SKELETON, SPECIES_DRASK, SPECIES_VOX, SPECIES_MOTH) + species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_DIONA, SPECIES_VULPKANIN, SPECIES_TAJARAN, SPECIES_KIDAN, SPECIES_GREY, SPECIES_PLASMAMAN, SPECIES_MACNINEPERSON, SPECIES_WRYN, SPECIES_SKRELL, SPECIES_SLIMEPERSON, SPECIES_SKELETON, SPECIES_DRASK, SPECIES_VOX, SPECIES_MOTH) /datum/sprite_accessory/socks/white_norm name = "Normal White" diff --git a/code/modules/mob/new_player/sprite_accessories/unathi/unathi_body_markings.dm b/code/modules/mob/new_player/sprite_accessories/unathi/unathi_body_markings.dm index 348ed7abba89..3f735626bfe4 100644 --- a/code/modules/mob/new_player/sprite_accessories/unathi/unathi_body_markings.dm +++ b/code/modules/mob/new_player/sprite_accessories/unathi/unathi_body_markings.dm @@ -17,3 +17,26 @@ /datum/sprite_accessory/body_markings/unathi/points_una name = "Unathi Points" icon_state = "points" + +/datum/sprite_accessory/body_markings/unathi/dyes + pickable = FALSE + +/datum/sprite_accessory/body_markings/unathi/dyes/indigo + name = "Indigo Dyes" + icon_state = "indigo_dyes" + +/datum/sprite_accessory/body_markings/unathi/dyes/cinnabar + name = "Cinnabar Dyes" + icon_state = "cinnabar_dyes" + +/datum/sprite_accessory/body_markings/unathi/dyes/mint + name = "Mint Dyes" + icon_state = "mint_dyes" + +/datum/sprite_accessory/body_markings/unathi/dyes/amber + name = "Amber Dyes" + icon_state = "amber_dyes" + +/datum/sprite_accessory/body_markings/unathi/dyes/crimson + name = "Crimson Dyes" + icon_state = "crimson_dyes" diff --git a/code/modules/mob/new_player/sprite_accessories/wryn/wryn_face.dm b/code/modules/mob/new_player/sprite_accessories/wryn/wryn_face.dm deleted file mode 100644 index 9cf722e14492..000000000000 --- a/code/modules/mob/new_player/sprite_accessories/wryn/wryn_face.dm +++ /dev/null @@ -1,8 +0,0 @@ -/datum/sprite_accessory/hair/wryn - icon = 'icons/mob/sprite_accessories/wryn/wryn_face.dmi' - species_allowed = list(SPECIES_WRYN) - glasses_over = 1 - -/datum/sprite_accessory/hair/wryn/wry_antennae_default - name = "Antennae" - icon_state = "antennae" diff --git a/code/modules/mob/new_player/sprite_accessories/wryn/wryn_facial_hair.dm b/code/modules/mob/new_player/sprite_accessories/wryn/wryn_facial_hair.dm new file mode 100644 index 000000000000..1dcaba6dad6e --- /dev/null +++ b/code/modules/mob/new_player/sprite_accessories/wryn/wryn_facial_hair.dm @@ -0,0 +1,25 @@ +/datum/sprite_accessory/facial_hair/wryn + icon = 'icons/mob/sprite_accessories/wryn/wryn_facial_hair.dmi' + species_allowed = list(SPECIES_WRYN) + unsuitable_gender = null + over_hair = TRUE + +/datum/sprite_accessory/facial_hair/wryn/default + name = "Default mane" + icon_state = "default" + +/datum/sprite_accessory/facial_hair/wryn/fluff + name = "Fluff mane" + icon_state = "fluff" + +/datum/sprite_accessory/facial_hair/wryn/sharp + name = "Sharp mane" + icon_state = "sharp" + +/datum/sprite_accessory/facial_hair/wryn/square + name = "Square mane" + icon_state = "square" + +/datum/sprite_accessory/facial_hair/wryn/round + name = "Round mane" + icon_state = "round" diff --git a/code/modules/mob/new_player/sprite_accessories/wryn/wryn_hair.dm b/code/modules/mob/new_player/sprite_accessories/wryn/wryn_hair.dm new file mode 100644 index 000000000000..5ec3493d7bff --- /dev/null +++ b/code/modules/mob/new_player/sprite_accessories/wryn/wryn_hair.dm @@ -0,0 +1,36 @@ +/datum/sprite_accessory/hair/wryn + icon = 'icons/mob/sprite_accessories/wryn/wryn_head_accessories.dmi' + species_allowed = list(SPECIES_WRYN) + glasses_over = 1 + +/datum/sprite_accessory/hair/wryn/default + name = "Normal antennae" + icon_state = "antennae" + +/datum/sprite_accessory/hair/wryn/curvy + name = "Curvy antennae" + icon_state = "curvy" + +/datum/sprite_accessory/hair/wryn/nian + name = "Nian antennae" + icon_state = "moth" + +/datum/sprite_accessory/hair/wryn/perky + name = "Perky antennae" + icon_state = "perky" + +/datum/sprite_accessory/hair/wryn/sweep + name = "Sweep antennae" + icon_state = "sweep" + +/datum/sprite_accessory/hair/wryn/short + name = "Short antennae" + icon_state = "short" + +/datum/sprite_accessory/hair/wryn/long + name = "Long antennae" + icon_state = "long" + +/datum/sprite_accessory/hair/wryn/long + name = "Low Long antennae" + icon_state = "low_long" diff --git a/code/modules/movespeed/modifiers/innate.dm b/code/modules/movespeed/modifiers/innate.dm index 3621beaecc08..f0584770c433 100644 --- a/code/modules/movespeed/modifiers/innate.dm +++ b/code/modules/movespeed/modifiers/innate.dm @@ -7,3 +7,6 @@ blacklisted_movetypes = (FLYING|FLOATING) multiplicative_slowdown = -1 +/datum/movespeed_modifier/increaserun + blacklisted_movetypes = (FLYING|FLOATING) + multiplicative_slowdown = -0.5 diff --git a/code/modules/movespeed/modifiers/reagent.dm b/code/modules/movespeed/modifiers/reagent.dm index c9bef0d57738..ac8f9a2aadcb 100644 --- a/code/modules/movespeed/modifiers/reagent.dm +++ b/code/modules/movespeed/modifiers/reagent.dm @@ -21,6 +21,5 @@ /datum/movespeed_modifier/reagent/nuka_cola - conflicts_with = MOVE_CONFLICT_GOTTAGONOTSOFAST multiplicative_slowdown = -0.5 diff --git a/code/modules/newscaster/datums.dm b/code/modules/newscaster/datums.dm index 2f5a0272f76b..28c009e19692 100644 --- a/code/modules/newscaster/datums.dm +++ b/code/modules/newscaster/datums.dm @@ -130,7 +130,7 @@ * * user - The user * * scanned_user - The user's identifying information on the newscaster */ -/datum/feed_channel/proc/can_publish(mob/user, scanned_user = "Unknown") +/datum/feed_channel/proc/can_publish(mob/user, scanned_user = "Неизвестный") return (!frozen && (is_public || (author == scanned_user))) || user?.can_admin_interact() /** @@ -140,7 +140,7 @@ * * user - The user * * scanned_user - The user's identifying information on the newscaster */ -/datum/feed_channel/proc/can_modify(mob/user, scanned_user = "Unknown") +/datum/feed_channel/proc/can_modify(mob/user, scanned_user = "Неизвестный") return (!frozen && author == scanned_user) || user?.can_admin_interact() /** @@ -168,7 +168,7 @@ ASSERT(istype(M)) if(!length(M.title)) - M.title = "[channel_name] Story #[length(messages) + 1]" + M.title = "\"[channel_name]\" - Публикация №[length(messages) + 1]" LAZYADD(messages, M) GLOB.news_network.stories += M // Update all newscaster TGUIs @@ -183,5 +183,5 @@ */ /datum/feed_channel/proc/get_announce_text(title) if(length(title)) - return "Свежие новости от [channel_name]: [title]" - return "Свежие новости от [channel_name]" + return "Свежие новости от канала \"[channel_name]\": [title]" + return "Свежие новости от канала \"[channel_name]\"" diff --git a/code/modules/newscaster/defines.dm b/code/modules/newscaster/defines.dm deleted file mode 100644 index e5842a24b217..000000000000 --- a/code/modules/newscaster/defines.dm +++ /dev/null @@ -1,19 +0,0 @@ -// Globals -/// The feed network singleton. Contains all channels (which contain all stories). -GLOBAL_DATUM_INIT(news_network, /datum/feed_network, new) -/// Global list that contains all existing newscasters in the world. -GLOBAL_LIST_EMPTY(allNewscasters) - -// Screen indexes -/// Headlines screen index. -#define NEWSCASTER_HEADLINES 0 -/// Available Jobs screen index. -#define NEWSCASTER_JOBS 1 -/// View Channel screen index. -#define NEWSCASTER_CHANNEL 2 - -// Censor flags -/// Censor author name. -#define CENSOR_AUTHOR (1 << 0) -/// Censor story title, body and image. -#define CENSOR_STORY (1 << 1) diff --git a/code/modules/newscaster/obj/newscaster.dm b/code/modules/newscaster/obj/newscaster.dm index 6677b469acb1..86bb9bc20a2a 100644 --- a/code/modules/newscaster/obj/newscaster.dm +++ b/code/modules/newscaster/obj/newscaster.dm @@ -16,7 +16,15 @@ */ /obj/machinery/newscaster name = "newscaster" - desc = "A standard Nanotrasen-licensed newsfeed handler for use in commercial space stations. All the news you absolutely have no use for, in one place!" + desc = "Устройство, позволяющее получить доступ к самым свежим новостям со всей Галактики. Лицензировано НаноТрейзен для использования на коммерческих объектах." + ru_names = list( + NOMINATIVE = "новостник", + GENITIVE = "новостника", + DATIVE = "новостнику", + ACCUSATIVE = "новостник", + INSTRUMENTAL = "новостником", + PREPOSITIONAL = "новостнике" + ) icon = 'icons/obj/machines/terminals.dmi' icon_state = "newscaster" max_integrity = 200 @@ -34,7 +42,7 @@ /// The newcaster's index among all newscasters (GLOB.allNewscasters). var/unit_number = 0 /// The name of the mob currently using the newscaster. - var/scanned_user = "Unknown" + var/scanned_user = "Неизвестный" /// The currently attached photo. var/obj/item/photo/photo = null /// The currently viewed channel. @@ -52,6 +60,16 @@ /obj/machinery/newscaster/security_unit name = "security newscaster" + desc = "Устройство, позволяющее получить доступ к самым свежим новостям со всей Галактики. Лицензировано НаноТрейзен для использования на коммерческих объектах. \ + Эта модель оснащена расширенным функционалом, специально для службы безопасности." + ru_names = list( + NOMINATIVE = "новостник службы безопасности", + GENITIVE = "новостника службы безопасности", + DATIVE = "новостнику службы безопасности", + ACCUSATIVE = "новостник службы безопасности", + INSTRUMENTAL = "новостником службы безопасности", + PREPOSITIONAL = "новостнике службы безопасности" + ) is_security = TRUE /obj/machinery/newscaster/New() @@ -76,7 +94,6 @@ /datum/job/pilot, /datum/job/brigdoc, /datum/job/mechanic, - /datum/job/barber, /datum/job/chaplain, /datum/job/ntnavyofficer, /datum/job/ntnavyofficer/field, @@ -137,17 +154,17 @@ . = TRUE if(!I.tool_use_check(user, 0)) return - to_chat(user, "Now [anchored ? "un" : ""]securing [name]") + to_chat(user, span_notice("Вы [anchored ? "от" : "за"]крепляете [declent_ru(ACCUSATIVE)].")) if(!I.use_tool(src, user, 60, volume = I.tool_volume)) return playsound(loc, 'sound/items/deconstruct.ogg', 50, TRUE) if(stat & BROKEN) - to_chat(user, "The broken remains of [src] fall on the ground.") + to_chat(user, span_warning("Разбитые части [declent_ru(GENITIVE)] падают на пол.")) new /obj/item/stack/sheet/metal(loc, 5) new /obj/item/shard(loc) new /obj/item/shard(loc) else - to_chat(user, "You [anchored ? "un" : ""]secure [name].") + to_chat(user, span_notice("Вы [anchored ? "от" : "за"]крепляете [declent_ru(ACCUSATIVE)].")) var/obj/item/mounted/frame/newscaster_frame/frame = new(loc) transfer_fingerprints_to(frame) qdel(src) @@ -194,7 +211,7 @@ scanned_user = get_scanned_user(user)["name"] ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user, src, "Newscaster", name) + ui = new(user, src, "Newscaster", capitalize(declent_ru(NOMINATIVE))) ui.open() ui.set_autoupdate(FALSE) @@ -375,8 +392,8 @@ var/obj/item/photo/P = usr.get_active_hand() if(istype(P) && usr.drop_transfer_item_to_loc(P, src)) photo = P - usr.visible_message("[usr] inserts [P] into [src]'s photo slot.",\ - "You insert [P] into [src]'s photo slot.") + usr.visible_message(span_notice("[usr] вставля[pluralize_ru(usr.gender, "ет", "ют")] [P.declent_ru(ACCUSATIVE)] в слот [declent_ru(GENITIVE)] для фотографий."), \ + span_notice("Вы вставляете [P.declent_ru(ACCUSATIVE)] в слот [declent_ru(GENITIVE)] для фотографий.")) playsound(loc, 'sound/machines/terminal_insert_disc.ogg', 30, TRUE) else if(issilicon(usr)) var/mob/living/silicon/M = usr @@ -387,31 +404,31 @@ P.construct(selection) P.forceMove(src) photo = P - visible_message("[src]'s photo slot quietly whirs as it prints [P] inside it.") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] тихо жужжит, после чего из слота для фотографий выпадает [P.declent_ru(NOMINATIVE)].")) playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 15, TRUE) if("eject_photo") eject_photo(usr) return FALSE // Updating handled in that proc if("censor_channel") if(is_security && !get_scanned_user(usr)["security"]) - set_temp("You do not have permission to perform this action. Please ensure your ID has appropiate access.", "danger") + set_temp("У вас нет разрешения на выполнение этого действия. Убедитесь, что ваша ID-карта имеет соответствующий доступ.", "danger") return var/datum/feed_channel/FC = locateUID(params["uid"]) if(!istype(FC)) return if(FC.admin_locked && !usr.can_admin_interact()) - set_temp("This channel has been locked by CentComm and thus cannot be (un)censored.", "danger") + set_temp("Этот канал был заблокирован Центральным Командованием и не может быть разблокирован.", "danger") return FC.censored = !FC.censored if("censor_author", "censor_story") if(is_security && !get_scanned_user(usr)["security"]) - set_temp("You do not have permission to perform this action. Please ensure your ID has appropiate access.", "danger") + set_temp("У вас нет разрешения на выполнение этого действия. Убедитесь, что ваша ID-карта имеет соответствующий доступ.", "danger") return var/datum/feed_message/FM = locateUID(params["uid"]) if(!istype(FM)) return if(FM.admin_locked && !usr.can_admin_interact()) - set_temp("This story has been locked by CentComm and thus cannot be censored in any way.", "danger") + set_temp("Эта статья была заблокирована Центральным Командованием и не может быть разблокирована.", "danger") return if(action == "censor_author") FM.censor_flags = (FM.censor_flags & CENSOR_AUTHOR) ? (FM.censor_flags & ~CENSOR_AUTHOR) : (FM.censor_flags|CENSOR_AUTHOR) @@ -421,16 +438,16 @@ return FALSE if("clear_wanted_notice") if(is_security && !get_scanned_user(usr)["security"]) - set_temp("You do not have permission to perform this action. Please ensure your ID has appropiate access.", "danger") + set_temp("У вас нет разрешения на выполнение этого действия. Пожалуйста, убедитесь, что ваша ID-карта имеет соответствующий доступ.", "danger") return var/datum/feed_message/WN = GLOB.news_network.wanted_issue if(!WN) return if(WN.admin_locked && !usr.can_admin_interact()) - set_temp("This wanted notice has been locked by CentComm and thus cannot be altered.", "danger") + set_temp("Это уведомление о розыске было заблокировано Центральным Командованием и не может быть изменено.", "danger") return GLOB.news_network.wanted_issue = null - set_temp("Wanted notice cleared.", update_now = TRUE) + set_temp("Уведомление о розыске снято.", update_now = TRUE) for(var/obj/machinery/newscaster/NC as anything in GLOB.allNewscasters) NC.update_icon(UPDATE_OVERLAYS) return FALSE @@ -440,7 +457,7 @@ if(is_printing) return if(paper_remaining <= 0) - set_temp("There is no more paper available.", "danger") + set_temp("Доступная для печати бумага отсутствует.", "danger") return print_newspaper() else @@ -497,10 +514,10 @@ var/datum/feed_channel/FC = null if(id == "create_channel") // Channel creation if(GLOB.news_network.get_channel_by_name(name)) - set_temp("A channel with this name already exists.", "danger") + set_temp("Канал с таким названием уже существует.", "danger") return if(GLOB.news_network.get_channel_by_author(author)) - set_temp("A channel with this author name already exists.", "danger") + set_temp("Канал с таким именем автора уже существует.", "danger") return FC = new GLOB.news_network.channels += FC @@ -519,7 +536,7 @@ FC.author = usr.can_admin_interact() ? author : scanned_user FC.is_public = public FC.admin_locked = usr.can_admin_interact() && admin_locked - set_temp("Channel [FC.channel_name] created.", "good") + set_temp("Канал \"[FC.channel_name]\" создан.", "good") if("create_story") var/author = trim(arguments["author"]) var/channel = trim(arguments["channel"]) @@ -553,7 +570,7 @@ screen = NEWSCASTER_CHANNEL viewing_channel = FC eject_photo(usr) - set_temp("Story published to channel [FC.channel_name].", "good") + set_temp("Статья была опубликована в канале \"[FC.channel_name]\".", "good") if("wanted_notice") if(id == "wanted_notice" && !(is_security || usr.can_admin_interact())) return @@ -566,13 +583,13 @@ var/datum/feed_message/WN = GLOB.news_network.wanted_issue if(WN) if(WN.admin_locked && !usr.can_admin_interact()) - set_temp("This wanted notice has been locked by CentComm and thus cannot be altered.", "danger") + set_temp("Это уведомление о розыске было заблокировано Центральным Командованием и не может быть изменено.", "danger") return else WN = new GLOB.news_network.wanted_issue = WN WN.author = usr.can_admin_interact() ? author : scanned_user - WN.title = "WANTED: [copytext_char(name, 1, WANTED_NOTICE_NAME_MAX_LENGTH)]" + WN.title = copytext_char(name, 1, WANTED_NOTICE_NAME_MAX_LENGTH) WN.body = copytext_char(description, 1, WANTED_NOTICE_DESC_MAX_LENGTH) WN.img = photo?.img WN.admin_locked = usr.can_admin_interact() && admin_locked @@ -582,7 +599,7 @@ var/obj/machinery/newscaster/NC = nc NC.alert_news(wanted_notice = TRUE) eject_photo(usr) - set_temp("Wanted notice distributed.", "good") + set_temp("Уведомление о розыске опубликовано.", "good") else return FALSE else @@ -601,9 +618,9 @@ photo = null P.forceMove(loc) if(ishuman(user) && user.put_in_active_hand(P, ignore_anim = FALSE)) - visible_message("[src] ejects [P] from its photo slot into [user]'s hand.") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] выплёвывает [P.declent_ru(ACCUSATIVE)] из слота для фотографий прямо в руку [user].")) else - visible_message("[src] ejects [P] from its photo slot.") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] выплёвывает [P.declent_ru(ACCUSATIVE)] из слота для фотографий.")) playsound(loc, 'sound/machines/terminal_insert_disc.ogg', 30, TRUE) SStgui.update_uis(src) @@ -626,7 +643,7 @@ * * user - The user */ /obj/machinery/newscaster/proc/get_scanned_user(mob/user) - . = list(name = "Unknown", security = user.can_admin_interact()) + . = list(name = "Неизвестный", security = user.can_admin_interact()) if(ishuman(user)) var/mob/living/carbon/human/M = user // No ID, no luck @@ -662,7 +679,7 @@ // Print it is_printing = TRUE playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, TRUE) - visible_message("[src] whirs as it prints a newspaper.") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] тихо жужжит, печатая газету.")) addtimer(CALLBACK(src, PROC_REF(print_newspaper_finish)), 5 SECONDS) /** @@ -674,11 +691,6 @@ // Create the newspaper var/obj/item/newspaper/NP = new NP.forceMove(loc) - // Populate the newspaper - NP.important_message = GLOB.news_network.wanted_issue - for(var/fc in GLOB.news_network.channels) - var/datum/feed_channel/FC = fc - NP.news_content += FC /** * Makes the newscaster say a message and change its icon state for a while. diff --git a/code/modules/newscaster/obj/newspaper.dm b/code/modules/newscaster/obj/newspaper.dm index 11c6c20738ba..502b4a328481 100644 --- a/code/modules/newscaster/obj/newspaper.dm +++ b/code/modules/newscaster/obj/newspaper.dm @@ -9,194 +9,183 @@ */ /obj/item/newspaper name = "newspaper" - desc = "An issue of The Griffon, the newspaper circulating aboard Nanotrasen Space Stations." + desc = "Выпуск газеты \"Грифон\", распространяемой на объектах НаноТрейзен." + ru_names = list( + NOMINATIVE = "газета", + GENITIVE = "газеты", + DATIVE = "газете", + ACCUSATIVE = "газету", + INSTRUMENTAL = "газетой", + PREPOSITIONAL = "газете" + ) + gender = FEMALE icon = 'icons/obj/bureaucracy.dmi' icon_state = "newspaper" item_state = "newspaper" w_class = WEIGHT_CLASS_SMALL - attack_verb = list("bapped") + attack_verb = list("стукнул") drop_sound = 'sound/items/handling/paper_drop.ogg' pickup_sound = 'sound/items/handling/paper_pickup.ogg' - /// The current screen to display. - var/screen = 0 - /// The number of pages. - var/pages = 0 - /// The currently selected page. - var/curr_page = 0 - /// The channels to display as content. - var/list/datum/feed_channel/news_content - /// The security notice to display optionally. - var/datum/feed_message/important_message = null - /// The contents of a scribble made through pen, if any. - var/scribble = "" - /// The page of said scribble. - var/scribble_page = null - /// Whether the newspaper is rolled or not, making it a deadly weapon. + + ///The page in the newspaper currently being read. 0 is the title screen while the last is the security screen. + var/current_page = 1 + ///Stored information of the wanted criminal's name, if one existed at the time of creation. + var/wanted + ///Whether the newspaper is rolled or not, making it a deadly weapon. var/rolled = FALSE + ///Advertisements text + var/advertisements + ///Scribble sheet + var/list/scribble = list() + ///News list + var/list/stories = list() + + /// Possible advertising post + var/list/adsList = list("Wetskrell.nt — лучший сайт для проведения мужского досуга! Только здесь вы найдёте по настоящему эксклюзивный контент!", + "На Wetskrell.nt стартовала акция — 3 месяца подписки по цене двух! Только для настоящих ценителей культуры!", + "Онлайн Казино МегаСтавка: Мы не чешем колоду, гарантируем честную раздачу! Наши колоды заряжены не в киосках, как у конкурентов!", + "Космический бар \"Гравитация\": Лучшие коктейли в системе Тау Кита! Приходите и попробуйте наш фирменный \"Блюспейс Бум\"!", + "Клуб \"Синдикатская Тень\": Только для избранных. Лучшие вечеринки, эксклюзивные напитки и никаких вопросов.", + "Магазин \"КиберЛом\": Продажа и покупка б/у кибернетических имплантов. Дешевле, чем у конкурентов, и с гарантией!", + "Галактический такси-сервис \"Метеор\": Быстро, надёжно, без лишних вопросов. Довезём вас куда угодно!", + "Продам гараж – анонимный рекламодатель.", + "Хотите улучшить свои навыки? Запишитесь на курсы по вольной борьбе! Скидка 20% для сотрудников службы безопасности.", + "Пиво и раки от мистера Ченга – большие раки по 5 кредитов, маленькие по 3!", + "Waffle Corporation: Вафли, которые заряжают энергией на весь день! Теперь с добавлением блюспейс-кристаллов!", + "Одинокий вульпканин в 300 метрах от Вас! Установите наше приложение себе на КПК и напишите ему!", + "Скучаете на смене? Закажите пиццу с плазмой от \"Пицца-Экспресс\"! Доставка в любую точку станции за 15 минут!", + "Ресторан \"Звёздный Вкус\": Блюда, которые вы никогда не пробовали! И, возможно, никогда не захотите попробовать снова.", + "Клуб \"Нулевая Гравитация\": Танцуйте до тех пор, пока не упадёте! Или пока вас не выбросит за борт.", + "Офицеры дуреют от этой кожуры! Самые скользкие кожурки во всей система Тау Кита...") /obj/item/newspaper/Initialize(mapload) . = ..() - if(!news_content) - news_content = list() + + advertisements = pick(adsList) + + ///Enter all current news into a list + for(var/datum/feed_message/feed_messages as anything in GLOB.news_network.stories) + stories += list(list( + uid = feed_messages.UID(), + author = feed_messages.author, + title = feed_messages.title, + body = feed_messages.body, + photo = !isnull(feed_messages.img), + )) + + if(!GLOB.news_network.wanted_issue) + return + wanted = list(list( + uid = GLOB.news_network.wanted_issue.UID(), + title = GLOB.news_network.wanted_issue.title, + body = GLOB.news_network.wanted_issue.body, + photo = GLOB.news_network.wanted_issue.img, + )) /obj/item/newspaper/examine(mob/user) . = ..() if(rolled) - . += "You have to unroll it if you want to read it." + . += span_notice("Вы должны развернуть её, если хотите прочитать.") else if(user.is_literate()) if(in_range(user, src) || istype(user, /mob/dead/observer)) attack_self(user) else - . += "You have to go closer if you want to read it." + . += span_notice("Вам нужно подойти поближе, если вы хотите это прочитать.") else - . += "You don't know how to read." + . += span_warning("Вы не умеете читать!") /obj/item/newspaper/attack_self(mob/user) if(rolled) - to_chat(user, "Unroll it first!") + balloon_alert(user, "сначала разверните!") return if(user.is_literate()) - var/dat = {""} - pages = 0 - switch(screen) - if(SCREEN_COVER) //Cover - dat += "
The Griffon
" - dat += "
Nanotrasen-standard newspaper, for use on Nanotrasen Space Facilities

" - if(!length(news_content)) - if(important_message) - dat += "Contents:
    **Important Security Announcement** \[page [pages+2]\]
" - else - dat += "Other than the title, the rest of the newspaper is unprinted..." - else - dat += "Contents:
    " - for(var/datum/feed_channel/NP in news_content) - pages++ - if(important_message) - dat += "**Important Security Announcement** \[page [pages+2]\]
    " - var/temp_page=0 - for(var/datum/feed_channel/NP in news_content) - temp_page++ - dat += "[NP.channel_name] \[page [temp_page+1]\]
    " - dat += "
" - if(scribble_page==curr_page) - dat += "
There is a small scribble near the end of this page... It reads: \"[scribble]\"" - dat+= "
" - if(SCREEN_PAGE_INNER) // X channel pages inbetween. - for(var/datum/feed_channel/NP in news_content) - pages++ //Let's get it right again. - var/datum/feed_channel/C = news_content[curr_page] - dat += "[C.channel_name] \[created by: [C.author]\]

" - if(C.censored) - dat += "This channel was deemed dangerous to the general welfare of the station and therefore marked with a D-Notice. Its contents were not transferred to the newspaper at the time of printing." - else - if(!length(C.messages)) - dat += "No Feed stories stem from this channel..." - else - dat += "
    " - var/i = 0 - for(var/datum/feed_message/MESSAGE in C.messages) - var/title = (MESSAGE.censor_flags & CENSOR_STORY) ? "\[REDACTED\]" : MESSAGE.title - var/body = (MESSAGE.censor_flags & CENSOR_STORY) ? "\[REDACTED\]" : MESSAGE.body - i++ - dat += "[title]
    " - dat += "[body]
    " - if(MESSAGE.img) - user << browse_rsc(MESSAGE.img, "tmp_photo[i].png") - dat += "
    " - dat += "\[Story by [MESSAGE.author]\]

    " - dat += "
" - if(scribble_page==curr_page) - dat += "
There is a small scribble near the end of this page... It reads: \"[scribble]\"" - dat+= "

" - if(SCREEN_PAGE_LAST) //Last page - for(var/datum/feed_channel/NP in news_content) - pages++ - if(important_message!=null) - dat += "
Wanted Issue:


" - dat += "Criminal name: [important_message.author]
" - dat += "Description: [important_message.body]
" - dat += "Photo:: " - if(important_message.img) - user << browse_rsc(important_message.img, "tmp_photow.png") - dat += "
" - else - dat += "None" - else - dat += "Apart from some uninteresting Classified ads, there's nothing on this page..." - if(scribble_page==curr_page) - dat += "
There is a small scribble near the end of this page... It reads: \"[scribble]\"" - dat+= "
" - else - dat += "i'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com" - - dat += "

[curr_page+1]
" - user << browse(dat, "window=newspaper_main;size=300x400") - onclose(user, "newspaper_main") + ui_interact(user) else - to_chat(user, "The paper is full of unintelligible symbols!") + to_chat(user, span_warning("Бумага заполнена непонятными символами!")) -/obj/item/newspaper/Topic(href, href_list) - if(..()) - return - if(!( (Adjacent(usr) && !istype(usr, /mob/dead/observer)) || (istype(usr, /mob/dead/observer) && usr.can_advanced_admin_interact()) )) +/obj/item/newspaper/ui_interact(mob/user, datum/tgui/ui = null) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "Newspaper", name) + ui.open() + +/obj/item/newspaper/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) return - usr.set_machine(src) - if(href_list["next_page"]) - if(curr_page == pages + 1) - return //Don't need that at all, but anyway. - else if(curr_page == pages) //We're at the middle, get to the end - screen = SCREEN_PAGE_LAST - else if(curr_page == 0) //We're at the start, get to the middle - screen = SCREEN_PAGE_INNER - curr_page++ - playsound(loc, "pageturn", 50, TRUE) - attack_self(usr) - else if(href_list["prev_page"]) - if(curr_page == 0) - return - else if(curr_page == 1) - screen = SCREEN_COVER - else if(curr_page == pages + 1) //we're at the end, let's go back to the middle. - screen = SCREEN_PAGE_INNER - curr_page-- - playsound(loc, "pageturn", 50, TRUE) - attack_self(usr) + switch(action) + if("next_page") + current_page++ + if("prev_page") + current_page-- + else + return TRUE + SStgui.update_uis(src) + playsound(loc, "pageturn", 50, TRUE) + return TRUE + +/obj/item/newspaper/ui_data(mob/user) + var/list/data = list() + data["wanted"] = wanted + data["current_page"] = current_page + data["stories"] = stories + + // Display 8 news entries + var/total_pages = length(stories) == 0 ? 1 : ceil(length(stories) / 8) + data["total_pages"] = total_pages + data["advertisements"] = advertisements + data["scribble"] = scribble + return data /obj/item/newspaper/attackby(obj/item/I, mob/user, params) if(is_pen(I)) add_fingerprint(user) if(rolled) - to_chat(user, span_warning("Unroll it first!")) + balloon_alert(user, "сначала разверните!") return ATTACK_CHAIN_PROCEED - if(scribble_page == curr_page) - to_chat(user, span_notice("There's already a scribble on this page... You wouldn't want to make things too cluttered, would you?")) + var/page_exists = FALSE + for(var/entry in scribble) + if(entry["id"] == current_page) + page_exists = TRUE + break + if(page_exists) + to_chat(user, span_notice("На этой странице уже есть пометка... Вы же не хотите сделать всё слишком запутанным, правда?")) + balloon_alert(user, "нет места!") return ATTACK_CHAIN_PROCEED - var/new_scribble = tgui_input_text(user, "Write something", "Newspaper") + var/new_scribble = tgui_input_text(user, "Напишите что-то", "Оставить заметку") if(!new_scribble || !Adjacent(user)) return ATTACK_CHAIN_PROCEED - scribble_page = curr_page - scribble = new_scribble + scribble += list(list( + id = current_page, + text = new_scribble + )) user.visible_message( - span_notice("[user] has scribbled something on [src]."), - span_notice("You have scribbled a note on page number [curr_page] of [src]."), + span_notice("[user] дела[pluralize_ru(user.gender, "ет", "ют")] пометку в газете."), + span_notice("Вы делаете пометку на [current_page] странице [declent_ru(GENITIVE)]."), ) attack_self(user) return ATTACK_CHAIN_PROCEED_SUCCESS return ..() - -/obj/item/newspaper/AltClick(mob/user) - if(ishuman(user) && Adjacent(user) && !user.incapacitated() && !HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) - rolled = !rolled - icon_state = "newspaper[rolled ? "_rolled" : ""]" - update_icon() - var/verbtext = "[rolled ? "" : "un"]roll" - user.visible_message("[user] [verbtext]s [src].",\ - "You [verbtext] [src].") - name = "[rolled ? "rolled" : ""] [initial(name)]" +/obj/item/newspaper/click_alt(mob/user) + rolled = !rolled + icon_state = "newspaper[rolled ? "_rolled" : ""]" + update_icon() + user.visible_message(span_notice("[user] [rolled ? "с" : "раз"]ворачива[pluralize_ru(user.gender, "ет", "ют")] [declent_ru(ACCUSATIVE)]."),\ + span_notice("Вы [rolled ? "с" : "раз"]ворачиваете [declent_ru(ACCUSATIVE)].")) + name = "[rolled ? "rolled" : ""] [initial(name)]" + ru_names = list( + NOMINATIVE = "[rolled ? "свёрнутая " : ""]газета", + GENITIVE = "[rolled ? "свёрнутой " : ""]газеты", + DATIVE = "[rolled ? "свёрнутой " : ""]газете", + ACCUSATIVE = "[rolled ? "свёрнутую" : ""]газету", + INSTRUMENTAL = "[rolled ? "свёрнутой " : ""]газетой", + PREPOSITIONAL = "[rolled ? "свёрнутой " : ""]газете" + ) + return CLICK_ACTION_SUCCESS #undef SCREEN_COVER #undef SCREEN_PAGE_INNER diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index 3433a51503c7..4d74d323ccae 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -19,14 +19,12 @@ update_icon(UPDATE_OVERLAYS) -/obj/item/clipboard/AltClick(mob/user) - if(Adjacent(user) && !user.incapacitated() && !HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) - if(is_pen(user.get_active_hand())) - penPlacement(user, user.get_active_hand(), TRUE) - else - removePen(user) - return - . = ..() +/obj/item/clipboard/click_alt(mob/user) + if(is_pen(user.get_active_hand())) + penPlacement(user, user.get_active_hand(), TRUE) + else + removePen(user) + return CLICK_ACTION_SUCCESS /obj/item/clipboard/verb/removePen() diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index 6696c1604775..03f1989c202c 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -38,35 +38,11 @@
Кроме того, Раб соглашается передать право на владение своей душой отделу лояльности Вездесущего и полезного наблюдателя за человечеством.\
В случае, если передача души Раба невозможна, Раб вносит вместо неё залог.
Подписано,
[target]" - -/obj/item/paper/contract/employment/attack(mob/living/victim, mob/living/user, params, def_zone, skip_attack_anim = FALSE) - . = ..() - if(!ATTACK_CHAIN_SUCCESS_CHECK(.)) - return . - - var/deconvert = 0 - if(victim.mind == target && target.soulOwner != target) - if(user.mind && (user.mind.assigned_role == JOB_TITLE_LAWYER)) - deconvert = 60 - else if (user.mind && (user.mind.assigned_role == JOB_TITLE_HOP) || (user.mind.assigned_role == "Centcom Commander") || (user.mind.assigned_role == JOB_TITLE_JUDGE)) - deconvert = 40 - else if(user.mind && (user.mind.assigned_role == JOB_TITLE_CAPTAIN)) - deconvert = 25 - else - deconvert = 0.0001 - - if(prob(deconvert)) - victim.visible_message( - span_notice("Благодаря [user] [victim] вспоминает, что душа [victim] уже приобретена НаноТрейзен!"), - span_boldnotice("Вы чувствуете, как Ваша душа возвращается к её правомочному владельцу — НаноТрейзен."), - ) - victim.return_soul() - - /obj/item/paper/contract/infernal var/contractType = 0 resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF - var/datum/mind/owner + var/datum/antagonist/devil/devilinfo + var/mob/living/carbon/human/owner icon_state = "evil_contract" /obj/item/paper/contract/infernal/power @@ -103,6 +79,7 @@ /obj/item/paper/contract/infernal/New(atom/loc, mob/living/nTarget, datum/mind/nOwner) ..() + devilinfo = nOwner.has_antag_datum(/datum/antagonist/devil) owner = nOwner target = nTarget update_text() @@ -122,56 +99,56 @@ info = "This shouldn't be seen. Error DEVIL:6" /obj/item/paper/contract/infernal/power/update_text(var/signature = "____________", blood = 0) - info = "
Contract for infernal power



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [owner.devilinfo.truename], in exchange for power and physical strength. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " + info = "
Contract for infernal power



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devilinfo.info.truename], in exchange for power and physical strength. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " if(blood) info += "[signature]" else info += "[signature]" /obj/item/paper/contract/infernal/wealth/update_text(var/signature = "____________", blood = 0) - info = "
Contract for unlimited wealth



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [owner.devilinfo.truename], in exchange for a pocket that never runs out of valuable resources. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " + info = "
Contract for unlimited wealth



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devilinfo.info.truename], in exchange for a pocket that never runs out of valuable resources. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " if(blood) info += "[signature]" else info += "[signature]" /obj/item/paper/contract/infernal/prestige/update_text(var/signature = "____________", blood = 0) - info = "
Contract for prestige



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [owner.devilinfo.truename], in exchange for prestige and esteem among my peers. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " + info = "
Contract for prestige



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devilinfo.info.truename], in exchange for prestige and esteem among my peers. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " if(blood) info += "[signature]" else info += "[signature]" /obj/item/paper/contract/infernal/magic/update_text(var/signature = "____________", blood = 0) - info = "
Contract for magic



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [owner.devilinfo.truename], in exchange for arcane abilities beyond normal human ability. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " + info = "
Contract for magic



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devilinfo.info.truename], in exchange for arcane abilities beyond normal human ability. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " if(blood) info += "[signature]" else info += "[signature]" /obj/item/paper/contract/infernal/revive/update_text(var/signature = "____________", blood = 0) - info = "
Contract for resurrection



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [owner.devilinfo.truename], in exchange for resurrection and curing of all injuries. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " + info = "
Contract for resurrection



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devilinfo.info.truename], in exchange for resurrection and curing of all injuries. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " if(blood) info += "[signature]" else info += "[signature]" /obj/item/paper/contract/infernal/knowledge/update_text(var/signature = "____________", blood = 0) - info = "
Contract for knowledge



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [owner.devilinfo.truename], in exchange for boundless knowledge. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " + info = "
Contract for knowledge



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devilinfo.info.truename], in exchange for boundless knowledge. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " if(blood) info += "[signature]" else info += "[signature]" /obj/item/paper/contract/infernal/friendship/update_text(var/signature = "____________", blood = 0) - info = "
Contract for friendship



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [owner.devilinfo.truename], in exchange for true unconditional friendship. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " + info = "
Contract for friendship



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devilinfo.info.truename], in exchange for true unconditional friendship. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " if(blood) info += "[signature]" else info += "[signature]" /obj/item/paper/contract/infernal/unwilling/update_text(var/signature = "____________", blood = 0) - info = "
Contract for slave



I, [target], hereby offer my soul to the infernal hells by way of the infernal agent [owner.devilinfo.truename]. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " + info = "
Contract for slave



I, [target], hereby offer my soul to the infernal hells by way of the infernal agent [devilinfo.info.truename]. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " if(blood) info += "[signature]" else @@ -188,7 +165,7 @@ to_chat(user, span_notice("You stamp the paper with your rubber stamp, however the ink ignites as you release the stamp.")) return ATTACK_CHAIN_PROCEED - if(is_hot(I)) + if(I.get_heat()) user.visible_message( span_danger("[user] brings [I] next to [src], but it does not catch a fire!"), span_danger("The [name] refuses to ignite!"), @@ -209,7 +186,7 @@ span_danger("You slice your wrist open and scrawl your name in blood."), ) if(ishuman(user)) - user.blood_volume = max(0, user.blood_volume - 100) + user.AdjustBlood(-100) /obj/item/paper/contract/infernal/proc/attempt_signature(mob/living/carbon/human/user, blood = 0) @@ -276,16 +253,22 @@ /obj/item/paper/contract/infernal/proc/FulfillContract(mob/living/carbon/human/user = target.current, blood = 0) signed = 1 + if(!user.mind) - return 0 - if(user.mind.soulOwner != user.mind && user.mind.soulOwner.devilinfo) //They already sold their soul to someone else? - user.mind.soulOwner.devilinfo.remove_soul(user.mind) //Then they lose their claim. + return FALSE + + var/datum/antagonist/devil/devilinfo = user.mind.has_antag_datum(/datum/antagonist/devil) + if(user.mind.soulOwner != user.mind && devilinfo) //They already sold their soul to someone else? + devilinfo.remove_soul(user.mind) //Then they lose their claim. + user.mind.soulOwner = owner user.mind.damnation_type = contractType - owner.devilinfo.add_soul(user.mind) + devilinfo.add_soul(user.mind) + update_text(user.real_name, blood) - to_chat(user, "A profound emptiness washes over you as you lose ownership of your soul.") - to_chat(user, "This does NOT make you an antagonist if you were not already.") + to_chat(user, span_notice("A profound emptiness washes over you as you lose ownership of your soul.")) + to_chat(user, span_boldnotice("This does NOT make you an antagonist if you were not already.")) + return 1 /obj/item/paper/contract/infernal/power/FulfillContract(mob/living/carbon/human/user = target.current, blood = 0) diff --git a/code/modules/paperwork/fax.dm b/code/modules/paperwork/fax.dm index 6f8dc180ce01..f7d308f31bb7 100644 --- a/code/modules/paperwork/fax.dm +++ b/code/modules/paperwork/fax.dm @@ -23,7 +23,7 @@ GLOBAL_LIST_EMPTY(adminfaxes) // Fax panel - lets admins check all faxes sent during the round /client/proc/fax_panel() set name = "Fax Panel" - set category = "Admin" + set category = "Admin.Admin Tickets" if(!check_rights(R_ADMIN)) return if(holder) diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index 0edd7e9398f0..7b5c74a9fe17 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -7,6 +7,9 @@ pressure_resistance = 2 resistance_flags = FLAMMABLE + lefthand_file = 'icons/mob/inhands/folder_lefthand.dmi' + righthand_file = 'icons/mob/inhands/folder_righthand.dmi' + /obj/item/folder/emp_act(severity) ..() for(var/i in contents) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 8e87d85aa635..f86a5d38ec9f 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -20,7 +20,7 @@ resistance_flags = FLAMMABLE max_integrity = 50 blocks_emissive = FALSE - attack_verb = list("bapped") + attack_verb = list("стукнул") permeability_coefficient = 0.01 dog_fashion = /datum/dog_fashion/head drop_sound = 'sound/items/handling/paper_drop.ogg' @@ -113,16 +113,13 @@ return data -/obj/item/paper/AltClick(mob/living/carbon/human/user) - if(!ishuman(user) || user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user)) - return +/obj/item/paper/click_alt(mob/living/carbon/human/user) if(is_pen(user.get_active_hand())) rename(user) - return + return CLICK_ACTION_SUCCESS if(user.is_in_hands(src)) ProcFoldPlane(user, src) - return - return ..() + return CLICK_ACTION_SUCCESS /obj/item/paper/proc/rename(mob/user) @@ -437,8 +434,8 @@ topic_href_write(usr, id, input_element) if(href_list["write"] ) - var/id = href_list["write"] - var/input_element = input("Enter what you want to write:", "Write") as message + var/id = href_list["write"] /* Becаuse HTML */ + var/input_element = tgui_input_text(usr, "Enter what you want to write:", "Write", multiline = TRUE, max_length = 3000, encode = FALSE, trim = FALSE) topic_href_write(usr, id, input_element) @@ -447,7 +444,7 @@ if(resistance_flags & ON_FIRE) return ATTACK_CHAIN_BLOCKED_ALL - if(is_hot(I)) + if(I.get_heat()) if(!Adjacent(user)) //to prevent issues as a result of telepathically lighting a paper return ATTACK_CHAIN_BLOCKED_ALL @@ -830,9 +827,9 @@
\n\t\t~~~ Твой Куратор: Персональный Управляемый Помощник Согласования ~~~
" /obj/item/paper/dog_detective_explain - name = "Форма NT-PET-05 - Уведомление агента внутренних дел Нанотрейзен о питомце \"Гав Гавыч\"" - header ="


Отдел внутренних дел Нанотрейзен по надзору за животными.

Официальное Уведомление


" - info = "ᅠᅠАгенство внутренних дел по надзору за домашними животными находящимися на станции сообщает, приставленный к вам питомец \"Гав Гавыч\" почил. Он верно служил ремеслу дознавателей, сыщиков и детективов. Мы будем помнить о его вкладе и сохраним о нём память в анналах истории о домашних питомцах Нанотрейзен.

" + name = "Форма NT-PET-05 - Уведомление агента внутренних дел НаноТрейзен о питомце \"Гав Гавыч\"" + header ="


Отдел внутренних дел НаноТрейзен по надзору за животными.

Официальное Уведомление


" + info = "ᅠᅠАгенство внутренних дел по надзору за домашними животными находящимися на станции сообщает, приставленный к вам питомец \"Гав Гавыч\" почил. Он верно служил ремеслу дознавателей, сыщиков и детективов. Мы будем помнить о его вкладе и сохраним о нём память в анналах истории о домашних питомцах НаноТрейзен.

" footer = "
Штампы и данные:

Время принятия отчета:

*Данный документ подлежит ксерокопированию, для сохранения в архиве уполномоченных лиц, и выдаче агенту.
*Данный документ может содержать личную информацию.
" @@ -1280,7 +1277,7 @@ id = "NT-SEC-11" altername = "Ордер на обыск" category = "Служба безопасности" - info = "
Информация о свидетеле

Имя свидетеля:
Полностью и без ошибок

Номер аккаунта свидетеля:
Эта информация есть у главы персонала

Должность свидетеля:
Указано на ID карте




Ордер

В целях обыска:
(помещения, имущества, лица)

Ознакомившись с письменными показаниями свидетеля(-ей), у меня появились основания полагать, что на лицах или помещениях, указанных выше, имеются соответствующие доказательства в этой связи или в пределах, в частности:



и другое имущество, являющееся доказательством уголовного преступления, контрабанды, плодов преступления или предметов, иным образом принадлежащих преступнику, или имущество, спроектированное или предназначенное для использования, или которое используется или использовалось в качестве средства совершения уголовного преступления, в частности заговор с целью совершения преступления, или совершения злонамеренного предъявления ложных и фиктивных претензий к или против корпорации Нанотрейзен или его дочерних компаний.

Я удовлетворен тем, что показания под присягой и любые записанные показания устанавливают вероятную причину полагать, что описанное имущество в данный момент скрыто в описанных выше помещениях, лицах или имуществе, и устанавливают законные основания для выдачи этого ордера.

ВЫ НАСТОЯЩИМ КОМАНДИРОВАНЫ для обыска вышеуказанного помещения, имущества или лица в течение минут с даты выдачи настоящего ордера на указанное скрытое имущество, и если будет установлено, что имущество изъято, оставить копию этого ордера в качестве доказательства на реквизированную собственность, в соответствии с требованиями указа корпорации Nanotrasen.

Слава Корпорации Nanotrasen!


Подписи и штампы

Время:
Подпись уполномоченного лица:
Должность уполномоченного лица:
" + info = "
Информация о свидетеле

Имя свидетеля:
Полностью и без ошибок

Номер аккаунта свидетеля:
Эта информация есть у главы персонала

Должность свидетеля:
Указано на ID карте




Ордер

В целях обыска:
(помещения, имущества, лица)

Ознакомившись с письменными показаниями свидетеля(-ей), у меня появились основания полагать, что на лицах или помещениях, указанных выше, имеются соответствующие доказательства в этой связи или в пределах, в частности:



и другое имущество, являющееся доказательством уголовного преступления, контрабанды, плодов преступления или предметов, иным образом принадлежащих преступнику, или имущество, спроектированное или предназначенное для использования, или которое используется или использовалось в качестве средства совершения уголовного преступления, в частности заговор с целью совершения преступления, или совершения злонамеренного предъявления ложных и фиктивных претензий к или против корпорации НаноТрейзен или его дочерних компаний.

Я удовлетворен тем, что показания под присягой и любые записанные показания устанавливают вероятную причину полагать, что описанное имущество в данный момент скрыто в описанных выше помещениях, лицах или имуществе, и устанавливают законные основания для выдачи этого ордера.

ВЫ НАСТОЯЩИМ КОМАНДИРОВАНЫ для обыска вышеуказанного помещения, имущества или лица в течение минут с даты выдачи настоящего ордера на указанное скрытое имущество, и если будет установлено, что имущество изъято, оставить копию этого ордера в качестве доказательства на реквизированную собственность, в соответствии с требованиями указа корпорации Nanotrasen.

Слава Корпорации Nanotrasen!


Подписи и штампы

Время:
Подпись уполномоченного лица:
Должность уполномоченного лица:
" footer = footer_confidential /obj/item/paper/form/NT_SEC_21 @@ -1570,7 +1567,7 @@
Данные
для
доставки
\
Получатель
\ Наименование станции: "ННКСС Тайпан"\ -
Наименование сектора: Эпсилон Эридана\ +
Наименование сектора: Эпсилон Лукусты\ \
В связи с отсутствием в стандартном перечени заказов прошу доставить следующее:\
\ diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index 50c13cab2678..e22ddb850514 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -11,7 +11,7 @@ throw_speed = 1 layer = 4 pressure_resistance = 2 - attack_verb = list("bapped") + attack_verb = list("стукнул") drop_sound = 'sound/items/handling/paper_drop.ogg' pickup_sound = 'sound/items/handling/paper_pickup.ogg' var/list/papers @@ -40,7 +40,7 @@ if(resistance_flags & ON_FIRE) return ATTACK_CHAIN_BLOCKED_ALL - if(is_hot(I)) + if(I.get_heat()) if(!Adjacent(user)) //to prevent issues as a result of telepathically lighting a paper bundles return ATTACK_CHAIN_BLOCKED_ALL diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index 6f0f753370b7..bd515f343b3a 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -93,7 +93,14 @@ return ..() to_chat(user, span_notice("You have put [I] into [src].")) papers.Add(I) + var/do_update = FALSE + if(amount == 0) + do_update = TRUE + amount++ + if(do_update) + update_icon(UPDATE_ICON_STATE) + return ATTACK_CHAIN_BLOCKED_ALL return ..() diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index bbbd0bde0146..173bb691cf26 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -78,7 +78,7 @@ return ATTACK_CHAIN_PROCEED_SUCCESS . = ..() - if(ATTACK_CHAIN_CANCEL_CHECK(.) || !is_hot(I) || !Adjacent(user)) + if(ATTACK_CHAIN_CANCEL_CHECK(.) || !I.get_heat() || !Adjacent(user)) return . . |= ATTACK_CHAIN_BLOCKED_ALL diff --git a/code/modules/paperwork/papershredder.dm b/code/modules/paperwork/papershredder.dm index a8b2336c9cef..1fb732aeeaf3 100644 --- a/code/modules/paperwork/papershredder.dm +++ b/code/modules/paperwork/papershredder.dm @@ -129,7 +129,7 @@ if(resistance_flags & ON_FIRE) return ATTACK_CHAIN_BLOCKED_ALL - if(is_hot(I)) + if(I.get_heat()) add_fingerprint(user) if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(10)) user.visible_message( diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index f3c59672dcd4..f0dc041e24ed 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -248,7 +248,7 @@ force = 18 attack_speed *= 1.3 w_class = WEIGHT_CLASS_NORMAL - attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + attack_verb = list("полоснул", "уколол", "поранил", "порезал") hitsound = 'sound/weapons/blade1.ogg' embed_chance = 100 //rule of cool throwforce = 35 diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 06bc57ffa6bd..7cdcd84ac497 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -586,13 +586,13 @@ if(istype(I, /obj/item/toner)) add_fingerprint(user) var/obj/item/toner/toner = I - if(toner > 10) //allow replacing when low toner is affecting the print darkness + if(src.toner > 10) //allow replacing when low toner is affecting the print darkness to_chat(user, span_warning("This cartridge is not yet ready for replacement! Use up the rest of the toner.")) return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() to_chat(user, span_notice("You have inserted the toner cartridge into [src].")) - toner += toner.toner_amount + src.toner += toner.toner_amount qdel(I) return ATTACK_CHAIN_BLOCKED_ALL @@ -623,7 +623,7 @@ toner = 0 /obj/machinery/photocopier/MouseDrop_T(mob/target, mob/living/user) - if(!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || isAI(user) || target == copymob) + if(!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || isAI(user)) return if(check_mob()) //is target mob or another mob on this photocopier already? return diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm deleted file mode 100644 index 5de5afdb2f2e..000000000000 --- a/code/modules/paperwork/photography.dm +++ /dev/null @@ -1,717 +0,0 @@ -/* Photography! - * Contains: - * Camera - * Camera Film - * Photos - * Photo Albums - */ - -/******* -* film * -*******/ -/obj/item/camera_film - name = "film cartridge" - icon = 'icons/obj/items.dmi' - desc = "A camera film cartridge. Insert it into a camera to reload it." - icon_state = "film" - item_state = "electropack" - w_class = WEIGHT_CLASS_TINY - resistance_flags = FLAMMABLE - - -/******** -* photo * -********/ -/obj/item/photo - name = "photo" - icon = 'icons/obj/items.dmi' - icon_state = "photo" - item_state = "paper" - w_class = WEIGHT_CLASS_SMALL - resistance_flags = FLAMMABLE - max_integrity = 50 - var/blueprints = 0 // Does this have the blueprints? - var/icon/img //Big photo image - var/scribble //Scribble on the back. - var/icon/tiny - var/photo_size = 3 - var/log_text = "" //Used for sending to Discord and just logging - -/obj/item/photo/attack_self(mob/user) - user.examinate(src) - - -/obj/item/photo/attackby(obj/item/I, mob/user, params) - if(is_pen(I) || istype(I, /obj/item/toy/crayon)) - add_fingerprint(user) - if(!user.is_literate()) - to_chat(user, span_warning("You don't know how to write!")) - return ATTACK_CHAIN_PROCEED - var/txt = tgui_input_text(user, "What would you like to write on the back?", "Photo Writing") - if(!txt || !Adjacent(user) || user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) - return ATTACK_CHAIN_PROCEED - scribble = txt - return ATTACK_CHAIN_PROCEED_SUCCESS - - if(istype(I, /obj/item/lighter)) - burnphoto(I, user) - return ATTACK_CHAIN_BLOCKED_ALL - - return ..() - - -/obj/item/photo/proc/burnphoto(obj/item/lighter/P, mob/user) - var/class = "" - - if(P.lit && !user.incapacitated() && !HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) - if(istype(P, /obj/item/lighter/zippo)) - class = "" - - user.visible_message("[class][user] holds \the [P] up to \the [src], it looks like [user.p_theyre()] trying to burn it!", \ - "[class]You hold [P] up to [src], burning it slowly.") - - spawn(20) - if(get_dist(src, user) < 2 && user.get_active_hand() == P && P.lit) - user.visible_message("[class][user] burns right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.", \ - "[class]You burn right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.") - - if(user.is_in_inactive_hand(src)) - user.temporarily_remove_item_from_inventory(src) - - new /obj/effect/decal/cleanable/ash(get_turf(src)) - qdel(src) - - else - to_chat(user, "You must hold \the [P] steady to burn \the [src].") - -/obj/item/photo/examine(mob/user) - . = ..() - if(in_range(user, src) || isobserver(user)) - show(user) - else - . += "It is too far away." - -/obj/item/photo/proc/show(mob/user) - var/icon/img_shown = new/icon(img) - var/colormatrix = user.get_screen_colour() - // Apply colorblindness effects, if any. - if(islist(colormatrix)) - img_shown.MapColors( - colormatrix[1], colormatrix[2], colormatrix[3], - colormatrix[4], colormatrix[5], colormatrix[6], - colormatrix[7], colormatrix[8], colormatrix[9], - ) - usr << browse_rsc(img_shown, "tmp_photo.png") - usr << browse({"[name]"} \ - + "" \ - + "" \ - + "[scribble ? "
Written on the back:
[scribble]" : ""]"\ - + "", "window=Photo[UID()];size=[64*photo_size]x[scribble ? 400 : 64*photo_size]") - onclose(usr, "Photo[UID()]") - return - -/obj/item/photo/verb/rename() - set name = "Rename photo" - set category = "Object" - set src in usr - - if(usr.incapacitated() || !isAI(usr) && HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED)) - return - - var/n_name = tgui_input_text(usr, "What would you like to label the photo?", "Photo Labelling", name) - if(!n_name) - return - //loc.loc check is for making possible renaming photos in clipboards - if((loc == usr || (loc.loc && loc.loc == usr)) && !usr.incapacitated() && !HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED)) - name = "[(n_name ? text("[n_name]") : "photo")]" - add_fingerprint(usr) - - -/************** -* photo album * -**************/ -/obj/item/storage/photo_album - name = "Photo album" - icon = 'icons/obj/items.dmi' - icon_state = "album" - item_state = "briefcase" - can_hold = list(/obj/item/photo) - resistance_flags = FLAMMABLE - drop_sound = 'sound/items/handling/book_drop.ogg' - pickup_sound = 'sound/items/handling/book_pickup.ogg' - - -/********* -* camera * -*********/ -/obj/item/camera - name = "camera" - icon = 'icons/obj/items.dmi' - desc = "A polaroid camera. 10 photos left." - icon_state = "camera" - item_state = "camera" - w_class = WEIGHT_CLASS_SMALL - slot_flags = ITEM_SLOT_BELT|ITEM_SLOT_NECK - var/list/matter = list("metal" = 2000) - var/pictures_max = 10 - var/pictures_left = 10 - var/on = 1 - var/blueprints = 0 - var/icon_on = "camera" - var/icon_off = "camera_off" - var/item_on = "camera" - var/item_off = "camera_off" - var/size = 3 - var/see_ghosts = 0 //for the spoop of it - var/flashing_lights = TRUE - - sprite_sheets = list( - SPECIES_GREY = 'icons/mob/clothing/species/grey/neck.dmi', - SPECIES_KIDAN = 'icons/mob/clothing/species/kidan/neck.dmi', - SPECIES_DRASK = 'icons/mob/clothing/species/drask/neck.dmi', - SPECIES_VOX = 'icons/mob/clothing/species/vox/neck.dmi', - SPECIES_MONKEY = 'icons/mob/clothing/species/monkey/neck.dmi', - SPECIES_WRYN = 'icons/mob/clothing/species/wryn/neck.dmi' - ) - - -/obj/item/camera/spooky/CheckParts(list/parts_list) - ..() - var/obj/item/camera/C = locate(/obj/item/camera) in contents - if(C) - pictures_max = C.pictures_max - pictures_left = C.pictures_left - visible_message("[C] has been imbued with godlike power!") - qdel(C) - - -GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","horror","shadow","ghostian2")) - -/obj/item/camera/spooky - name = "camera obscura" - desc = "A polaroid camera, some say it can see ghosts!" - see_ghosts = 1 - -/obj/item/camera/AltShiftClick(mob/user) - if(!issilicon(usr) && (usr.incapacitated() || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED))) - return - - flashing_lights = !flashing_lights - - to_chat(usr, span_notice("You turned [src] flashing lights [flashing_lights ? "on" : "off"], making natural light [flashing_lights ? "invisible" : "visible"]")) - -/obj/item/camera/verb/change_size() - set name = "Set Photo Focus" - set category = "Object" - - if(!issilicon(usr) && (usr.incapacitated() || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED))) - return - - var/nsize = tgui_input_list(usr, "Photo Size", "Pick a size of resulting photo.", list(1,3,5,7)) - if(nsize) - size = nsize - to_chat(usr, "Camera will now take [size]x[size] photos.") - - -/obj/item/camera/attack(mob/living/target, mob/living/user, params, def_zone, skip_attack_anim = FALSE) - return ATTACK_CHAIN_PROCEED - - -/obj/item/camera/attack_self(mob/user) - on = !on - update_icon(UPDATE_ICON_STATE) - to_chat(user, "You switch the camera [on ? "on" : "off"].") - return - -/obj/item/camera/update_icon_state() - icon_state = on ? icon_on : icon_off - item_state = on ? item_on : item_off - - -/obj/item/camera/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/camera_film)) - add_fingerprint(user) - if(pictures_left) - to_chat(user, span_warning("The [name] still has some film in it.")) - return ATTACK_CHAIN_PROCEED - if(!user.drop_transfer_item_to_loc(I, src)) - return ..() - to_chat(user, span_notice("You have fully refilled [src]'s film amount.")) - pictures_left = pictures_max - qdel(I) - return ATTACK_CHAIN_BLOCKED_ALL - - return ..() - - -/obj/item/camera/examine(mob/user) - . = ..() - . += span_notice("Press Alt + Shift + Left Click on [src] to toggle camera flashing") - -/obj/item/camera/proc/get_icon(list/turfs, turf/center, mob/user) - - //Bigger icon base to capture those icons that were shifted to the next tile - //i.e. pretty much all wall-mounted machinery - var/icon/res = icon('icons/effects/96x96.dmi', "") - res.Scale(size*32, size*32) - // Initialize the photograph to black. - res.Blend("#000", ICON_OVERLAY) - - var/atoms[] = list() - for(var/turf/the_turf in turfs) - // Add ourselves to the list of stuff to draw - atoms.Add(the_turf) - // As well as anything that isn't invisible. - - for(var/atom/A in the_turf) - if(istype(A, /atom/movable/lighting_object)) - if(flashing_lights) - continue //Do not apply lighting, making whole image full bright. - - if(A.invisibility) - if(see_ghosts && istype(A,/mob/dead/observer)) - var/mob/dead/observer/O = A - if(O.orbiting) - continue - if(user.mind && !(user.mind.assigned_role == JOB_TITLE_CHAPLAIN)) - atoms.Add(image('icons/mob/mob.dmi', O.loc, pick(GLOB.SpookyGhosts), 4, SOUTH)) - else - atoms.Add(image('icons/mob/mob.dmi', O.loc, "ghost", 4, SOUTH)) - else//its not a ghost - continue - else//not invisable, not a spookyghost add it. - var/disguised = null - if(user.viewing_alternate_appearances && user.viewing_alternate_appearances.len && ishuman(A) && A.alternate_appearances && A.alternate_appearances.len) //This whole thing and the stuff below just checks if the atom is a Solid Snake cosplayer. - for(var/datum/alternate_appearance/alt_appearance in user.viewing_alternate_appearances) - if(alt_appearance.owner == A) //If it turns out they are, don't blow their cover. That'd be rude. - atoms.Add(image(alt_appearance.img, A.loc, layer = 4, dir = A.dir)) //Render their disguise. - atoms.Remove(A) //Don't blow their cover. - disguised = 1 - continue - if(!disguised) //If they aren't, treat them normally. - atoms.Add(A) - - - // Sort the atoms into their layers - var/list/sorted = sort_atoms_by_layer(atoms) - var/center_offset = (size-1)/2 * 32 + 1 - for(var/i; i <= sorted.len; i++) - var/atom/A = sorted[i] - if(istype(A, /atom/movable/lighting_object)) - continue //Lighting objects render last, need to be above all atoms and turfs displayed - if(A) - var/icon/img = getFlatIcon(A)//build_composite_icon(A) - if(istype(A, /obj/item/areaeditor/blueprints/ce)) - blueprints = 1 - - // If what we got back is actually a picture, draw it. - if(isicon(img)) - // Check if we're looking at a mob that's lying down - if(isliving(A)) - var/mob/living/living = A - if(living.body_position == LYING_DOWN) - // If they are, apply that effect to their picture. - img.BecomeLying() - - // Calculate where we are relative to the center of the photo - var/xoff = (A.x - center.x) * 32 + center_offset - var/yoff = (A.y - center.y) * 32 + center_offset - if(ismovable(A)) - xoff+=A:step_x - yoff+=A:step_y - - res.Blend(img, blendMode2iconMode(A.blend_mode), A.pixel_x + xoff, A.pixel_y + yoff) - - // Render any contained effects on top. - for(var/turf/the_turf in turfs) - // Calculate where we are relative to the center of the photo - var/xoff = (the_turf.x - center.x) * 32 + center_offset - var/yoff = (the_turf.y - center.y) * 32 + center_offset - res.Blend(getFlatIcon(the_turf.loc), blendMode2iconMode(the_turf.blend_mode),xoff,yoff) - - // Render lighting objects to make picture look nice - for(var/atom/movable/lighting_object/light in sorted) - var/xoff = (light.x - center.x) * 32 + center_offset - var/yoff = (light.y - center.y) * 32 + center_offset - res.Blend(getFlatIcon(light), blendMode2iconMode(BLEND_MULTIPLY), light.pixel_x + xoff, light.pixel_y + yoff) - - return res - - -/obj/item/camera/proc/get_mobs(turf/the_turf) - var/mob_detail - for(var/mob/M in the_turf) - if(M.invisibility) - if(see_ghosts && istype(M,/mob/dead/observer)) - var/mob/dead/observer/O = M - if(O.orbiting) - continue - if(!mob_detail) - mob_detail = "You can see a g-g-g-g-ghooooost! " - else - mob_detail += "You can also see a g-g-g-g-ghooooost!" - else - continue - - var/holding = null - - if(iscarbon(M)) - var/mob/living/carbon/A = M - if(A.l_hand || A.r_hand) - if(A.l_hand) holding = "They are holding \a [A.l_hand]" - if(A.r_hand) - if(holding) - holding += " and \a [A.r_hand]" - else - holding = "They are holding \a [A.r_hand]" - - if(!mob_detail) - mob_detail = "You can see [A] on the photo[A:health < 75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]. " - else - mob_detail += "You can also see [A] on the photo[A:health < 75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]." - return mob_detail - -/obj/item/camera/proc/add_log(turf/the_turf) - var/mob_detail - for(var/mob/M in the_turf) - var/holding = null - if(iscarbon(M)) - var/mob/living/carbon/A = M - if(A.l_hand || A.r_hand) - if(A.l_hand) holding = "holding [A.l_hand]" - if(A.r_hand) - if(holding) - holding += " and [A.r_hand]" - else - holding = "holding [A.r_hand]" - if(!mob_detail) - mob_detail = "[A.client ? "[A.client.ckey]/" : "nockey"]([A]) on photo[A:health < 75 ? " hurt":""].[holding ? " [holding]":"."]. " - else - mob_detail += "Also [A.client ? "[A.client.ckey]/" : "nockey"]([A]) on the photo[A:health < 75 ? " hurt":""].[holding ? " [holding]":"."]." - return mob_detail - -/obj/item/camera/afterattack(atom/target, mob/user, flag, params) - if(!on || !pictures_left || ismob(target.loc)) - return - captureimage(target, user, flag) - - playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, 1, -3) - if(flashing_lights) - set_light(3, 2, LIGHT_COLOR_TUNGSTEN, l_on = TRUE) - addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, set_light), 0), 2) - pictures_left-- - desc = "A polaroid camera. It has [pictures_left] photos left." - to_chat(user, "[pictures_left] photos left.") - on = FALSE - update_icon(UPDATE_ICON_STATE) - if(istype(src, /obj/item/camera/spooky)) - if(user.mind && user.mind.assigned_role == JOB_TITLE_CHAPLAIN && see_ghosts) - if(prob(24)) - handle_haunt(user) - addtimer(CALLBACK(src, PROC_REF(delayed_turn_on)), 6.4 SECONDS) - - -/obj/item/camera/proc/delayed_turn_on() - on = TRUE - update_icon(UPDATE_ICON_STATE) - - -/obj/item/camera/proc/can_capture_turf(turf/T, mob/user) - var/viewer = user - if(user.client) //To make shooting through security cameras possible - viewer = user.client.eye - var/can_see = (T in view(viewer)) //No x-ray vision cameras. - return can_see - -/obj/item/camera/proc/captureimage(atom/target, mob/user, flag) - var/x_c = target.x - (size-1)/2 - var/y_c = target.y + (size-1)/2 - var/z_c = target.z - var/list/turfs = list() - var/log = "Made by [user.name] in [get_area(user)]. " - var/mobs = "" - for(var/i = 1; i <= size; i++) - for(var/j = 1; j <= size; j++) - var/turf/T = locate(x_c, y_c, z_c) - if(isopenspaceturf(T)) - T = GET_TURF_BELOW(T) // Multi-Z - if(can_capture_turf(T, user)) - turfs.Add(T) - mobs += get_mobs(T) - log += add_log(T) - x_c++ - y_c-- - x_c = x_c - size - - var/datum/picture/P = createpicture(target, user, turfs, mobs, flag, blueprints, log) - printpicture(user, P) - -/obj/item/camera/proc/createpicture(atom/target, mob/user, list/turfs, mobs, flag, blueprints, logs) - var/icon/photoimage = get_icon(turfs, target, user) - - var/icon/small_img = icon(photoimage) - var/icon/tiny_img = icon(photoimage) - var/icon/ic = icon('icons/obj/items.dmi',"photo") - var/icon/pc = icon('icons/obj/bureaucracy.dmi', "photo") - small_img.Scale(8, 8) - tiny_img.Scale(4, 4) - ic.Blend(small_img,ICON_OVERLAY, 10, 13) - pc.Blend(tiny_img,ICON_OVERLAY, 12, 19) - - var/datum/picture/P = new() - if(istype(src,/obj/item/camera/digital)) - P.fields["name"] = tgui_input_text(user, "Name photo:", "Photo", encode = FALSE) - P.name = P.fields["name"]//So the name is displayed on the print/delete list. - else - P.fields["name"] = "photo" - P.fields["author"] = user - P.fields["icon"] = ic - P.fields["tiny"] = pc - P.fields["img"] = photoimage - P.fields["desc"] = mobs - P.fields["pixel_x"] = rand(-10, 10) - P.fields["pixel_y"] = rand(-10, 10) - P.fields["size"] = size - P.fields["log"] = logs - - return P - -/obj/item/camera/proc/printpicture(mob/user, var/datum/picture/P) - var/obj/item/photo/Photo = new/obj/item/photo() - Photo.loc = user.loc - if(!user.get_inactive_hand()) - user.put_in_inactive_hand(Photo) - - if(blueprints) - Photo.blueprints = 1 - blueprints = 0 - Photo.construct(P) - -/obj/item/photo/proc/construct(var/datum/picture/P) - name = P.fields["name"] - icon = P.fields["icon"] - tiny = P.fields["tiny"] - img = P.fields["img"] - desc = P.fields["desc"] - pixel_x = P.fields["pixel_x"] - pixel_y = P.fields["pixel_y"] - photo_size = P.fields["size"] - log_text = P.fields["log"] - -/obj/item/photo/proc/copy() - var/obj/item/photo/p = new/obj/item/photo() - - p.icon = icon(icon, icon_state) - p.img = icon(img) - p.tiny = icon(tiny) - p.name = name - p.desc = desc - p.scribble = scribble - p.blueprints = blueprints - - return p - - -///hauntings, like hallucinations but more spooky -/obj/item/camera/proc/handle_haunt(mob/user) - var/static/list/creepyasssounds = list( - 'sound/effects/ghost.ogg', - 'sound/effects/ghost2.ogg', - 'sound/effects/heartbeat.ogg', - 'sound/effects/screech.ogg', - 'sound/hallucinations/behind_you1.ogg', - 'sound/hallucinations/behind_you2.ogg', - 'sound/hallucinations/far_noise.ogg', - 'sound/hallucinations/growl1.ogg', - 'sound/hallucinations/growl2.ogg', - 'sound/hallucinations/growl3.ogg', - 'sound/hallucinations/im_here1.ogg', - 'sound/hallucinations/im_here2.ogg', - 'sound/hallucinations/i_see_you1.ogg', - 'sound/hallucinations/i_see_you2.ogg', - 'sound/hallucinations/look_up1.ogg', - 'sound/hallucinations/look_up2.ogg', - 'sound/hallucinations/over_here1.ogg', - 'sound/hallucinations/over_here2.ogg', - 'sound/hallucinations/over_here3.ogg', - 'sound/hallucinations/turn_around1.ogg', - 'sound/hallucinations/turn_around2.ogg', - 'sound/hallucinations/veryfar_noise.ogg', - 'sound/hallucinations/wail.ogg', - ) - SEND_SOUND(user, pick(creepyasssounds)) - - -/***************** -* digital camera * -******************/ -/obj/item/camera/digital - name = "digital camera" - desc = "A digital camera. A small screen shows there is space for 10 photos left." - var/list/datum/picture/saved_pictures = list() - pictures_left = 30 - var/max_storage = 10 - - -/obj/item/camera/digital/afterattack(atom/target, mob/user, flag, params) - if(!on || !pictures_left || ismob(target.loc)) return - captureimage(target, user, flag) - - playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, 1, -3) - - desc = "A digital camera. A small screen shows that there are currently [length(saved_pictures)] pictures stored." - on = FALSE - update_icon(UPDATE_ICON_STATE) - addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/camera, delayed_turn_on)), 6.4 SECONDS) - - -/obj/item/camera/digital/captureimage(atom/target, mob/user, flag) - if(saved_pictures.len >= max_storage) - to_chat(user, "Maximum photo storage capacity reached.") - return - to_chat(user, "Picture saved.") - var/x_c = target.x - (size-1)/2 - var/y_c = target.y + (size-1)/2 - var/z_c = target.z - var/list/turfs = list() - var/log = "Made by [user.name] in [get_area(user)]. " - var/mobs = "" - for(var/i = 1; i <= size; i++) - for(var/j = 1; j <= size; j++) - var/turf/T = locate(x_c, y_c, z_c) - if(can_capture_turf(T, user)) - turfs.Add(T) - mobs += get_mobs(T) - log += add_log(T) - x_c++ - y_c-- - x_c = x_c - size - - var/datum/picture/P = createpicture(target, user, turfs, mobs, flag, blueprints, log) - saved_pictures += P - -/obj/item/camera/digital/verb/print_picture() - set name = "Print picture" - set category = "Object" - set src in usr - - if(saved_pictures.len == 0) - to_chat(usr, "No images saved.") - return - if(pictures_left == 0) - to_chat(usr, "There is no film left to print.") - return - - var/datum/picture/P = null - P = tgui_input_list(usr, "Select image to print", "Print image", saved_pictures) - if(P) - printpicture(usr,P) - pictures_left -- - -/obj/item/camera/digital/verb/delete_picture() - set name = "Delete picture" - set category = "Object" - set src in usr - - if(saved_pictures.len == 0) - to_chat(usr, "No images saved") - return - var/datum/picture/P = null - P = tgui_input_list(usr, "Select image to delete", "Delete image", saved_pictures) - if(P) - saved_pictures -= P - -/************** -*video camera * -***************/ -#define CAMERA_STATE_COOLDOWN 2 SECONDS -GLOBAL_LIST_EMPTY(active_video_cameras) - -/obj/item/videocam - name = "video camera" - icon = 'icons/obj/items.dmi' - desc = "video camera that can send live feed to the entertainment network." - icon_state = "videocam" - item_state = "videocam" - w_class = WEIGHT_CLASS_SMALL - slot_flags = ITEM_SLOT_BELT - materials = list(MAT_METAL=2000) - var/on = FALSE - var/video_cooldown = 0 - var/obj/machinery/camera/portable/camera - var/canhear_range = 7 - - -/obj/item/videocam/Destroy() - if(on) - camera_state() - return ..() - - -/obj/item/videocam/update_icon_state() - icon_state = "videocam[on ? "_on" : ""]" - - -/obj/item/videocam/proc/update_feeds() - if(on) - GLOB.active_video_cameras |= src - else - GLOB.active_video_cameras -= src - - for(var/obj/machinery/computer/security/telescreen/entertainment/TV in GLOB.machines) - TV.update_icon(UPDATE_OVERLAYS) - - -/obj/item/videocam/proc/camera_state(mob/living/carbon/user) - if(on) - camera.c_tag = null - QDEL_NULL(camera) - else - camera = new(src, list("news"), user.name) - on = !on - update_icon(UPDATE_ICON_STATE) - visible_message(span_notice("The video camera has been turned [on ? "on" : "off"].")) - update_feeds() - - -/obj/item/videocam/attack_self(mob/user) - if(world.time < video_cooldown) - to_chat(user, span_warning("[src] is overheating, give it some time.")) - return - camera_state(user) - - -/obj/item/videocam/dropped(mob/user, slot, silent = FALSE) - . = ..() - if(on) - camera_state() - - -/obj/item/videocam/examine(mob/user) - . = ..() - if(in_range(user, src)) - . += span_notice("This video camera can send live feeds to the entertainment network. It's [on ? "" : "in"]active.") - - -/obj/item/videocam/hear_talk(mob/M, list/message_pieces) - var/msg = multilingual_to_message(message_pieces) - if(camera && on) - if(get_dist(src, M) <= canhear_range) - talk_into(M, msg) - for(var/obj/machinery/computer/security/telescreen/T in GLOB.machines) - if(T.watchers[M] == camera) - T.atom_say(msg) - - -/obj/item/videocam/hear_message(mob/M, msg) - if(camera && on) - for(var/obj/machinery/computer/security/telescreen/T in GLOB.machines) - if(T.watchers[M] == camera) - T.atom_say(msg) - - -/obj/item/videocam/advanced - name = "advanced video camera" - desc = "This video camera allows you to send live feeds even when attached to a belt." - slot_flags = ITEM_SLOT_BELT - diff --git a/code/modules/paperwork/photography/camera.dm b/code/modules/paperwork/photography/camera.dm new file mode 100644 index 000000000000..114959b0f813 --- /dev/null +++ b/code/modules/paperwork/photography/camera.dm @@ -0,0 +1,346 @@ +/* + * Camera + */ +/obj/item/camera + name = "camera" + icon = 'icons/obj/items.dmi' + desc = "A polaroid camera. 10 photos left." + icon_state = "camera" + item_state = "camera" + w_class = WEIGHT_CLASS_SMALL + slot_flags = ITEM_SLOT_BELT|ITEM_SLOT_NECK + interaction_flags_click = NONE + var/list/matter = list("metal" = 2000) + var/pictures_max = 10 + var/pictures_left = 10 + var/on = 1 + var/icon_on = "camera" + var/icon_off = "camera_off" + var/item_on = "camera" + var/item_off = "camera_off" + var/size = 3 + var/see_ghosts = 0 //for the spoop of it + var/flashing_lights = TRUE + + sprite_sheets = list( + SPECIES_GREY = 'icons/mob/clothing/species/grey/neck.dmi', + SPECIES_KIDAN = 'icons/mob/clothing/species/kidan/neck.dmi', + SPECIES_DRASK = 'icons/mob/clothing/species/drask/neck.dmi', + SPECIES_VOX = 'icons/mob/clothing/species/vox/neck.dmi', + SPECIES_MONKEY = 'icons/mob/clothing/species/monkey/neck.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/neck.dmi' + ) + + +/obj/item/camera/examine(mob/user) + . = ..() + . += span_notice("Alt-Click to change photo size.") + . += span_notice("Alt-Shift-Click on [src] to toggle camera flashing") + + + +/obj/item/camera/attack(mob/living/target, mob/living/user, params, def_zone, skip_attack_anim = FALSE) + return ATTACK_CHAIN_PROCEED + +/obj/item/camera/attack_self(mob/user) + on = !on + update_icon(UPDATE_ICON_STATE) + to_chat(user, "You switch the camera [on ? "on" : "off"].") + return + +/obj/item/camera/update_icon_state() + icon_state = on ? icon_on : icon_off + item_state = on ? item_on : item_off + +/obj/item/camera/click_alt(mob/user) + if(!issilicon(user) && (user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED))) // silicons have inbuilt cameras, that' why unique check here + return + + var/nsize = tgui_input_list(user, "Photo Size", "Pick a size of resulting photo.", list(1,3,5,7)) + if(nsize) + size = nsize + to_chat(user, span_notice("Camera will now take [size]x[size] photos.")) + return CLICK_ACTION_SUCCESS + +/obj/item/camera/AltShiftClick(mob/user) + if(!issilicon(usr) && (usr.incapacitated() || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED))) + return + + flashing_lights = !flashing_lights + + to_chat(usr, span_notice("You turned [src] flashing lights [flashing_lights ? "on" : "off"], making natural light [flashing_lights ? "invisible" : "visible"]")) + +/obj/item/camera/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/camera_film)) + add_fingerprint(user) + if(pictures_left) + to_chat(user, span_warning("The [name] still has some film in it.")) + return ATTACK_CHAIN_PROCEED + if(!user.drop_transfer_item_to_loc(I, src)) + return ..() + to_chat(user, span_notice("You have fully refilled [src]'s film amount.")) + pictures_left = pictures_max + qdel(I) + return ATTACK_CHAIN_BLOCKED_ALL + + return ..() + +/obj/item/camera/proc/get_mobs(turf/the_turf) + var/mob_detail + for(var/mob/M in the_turf) + if(M.invisibility) + if(see_ghosts && istype(M,/mob/dead/observer)) + var/mob/dead/observer/O = M + if(O.orbiting) + continue + if(!mob_detail) + mob_detail = "You can see a g-g-g-g-ghooooost! " + else + mob_detail += "You can also see a g-g-g-g-ghooooost!" + else + continue + + var/holding = null + + if(iscarbon(M)) + var/mob/living/carbon/A = M + if(A.l_hand || A.r_hand) + if(A.l_hand) holding = "They are holding \a [A.l_hand]" + if(A.r_hand) + if(holding) + holding += " and \a [A.r_hand]" + else + holding = "They are holding \a [A.r_hand]" + + if(!mob_detail) + mob_detail = "You can see [A] on the photo[A:health < 75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]. " + else + mob_detail += "You can also see [A] on the photo[A:health < 75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]." + return mob_detail + +/obj/item/camera/proc/add_log(turf/the_turf) + var/mob_detail + for(var/mob/M in the_turf) + var/holding = null + if(iscarbon(M)) + var/mob/living/carbon/A = M + if(A.l_hand || A.r_hand) + if(A.l_hand) holding = "holding [A.l_hand]" + if(A.r_hand) + if(holding) + holding += " and [A.r_hand]" + else + holding = "holding [A.r_hand]" + if(!mob_detail) + mob_detail = "[A.client ? "[A.client.ckey]/" : "nockey"]([A]) on photo[A:health < 75 ? " hurt":""].[holding ? " [holding]":"."]. " + else + mob_detail += "Also [A.client ? "[A.client.ckey]/" : "nockey"]([A]) on the photo[A:health < 75 ? " hurt":""].[holding ? " [holding]":"."]." + return mob_detail + +/obj/item/camera/afterattack(atom/target, mob/user) + if(!on || !pictures_left || ismob(target.loc)) + return + + playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, 1, -3) + if(flashing_lights) + set_light(3, 2, LIGHT_COLOR_TUNGSTEN, l_on = TRUE) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, set_light), 0), 2) + pictures_left-- + desc = "A polaroid camera. It has [pictures_left] photos left." + to_chat(user, span_notice("[pictures_left] photos left.")) + on = FALSE + update_icon(UPDATE_ICON_STATE) + if(istype(src, /obj/item/camera/spooky)) + if(user.mind && user.mind.assigned_role == JOB_TITLE_CHAPLAIN && see_ghosts) + if(prob(24)) + handle_haunt(user) + addtimer(CALLBACK(src, PROC_REF(delayed_turn_on)), 6.4 SECONDS) + captureimage(target, user) // It's expensive proc so that's why we do it after all the cheap ones + + +/obj/item/camera/proc/delayed_turn_on() + on = TRUE + update_icon(UPDATE_ICON_STATE) + + +/obj/item/camera/proc/can_capture_turf(turf/T, mob/user) + var/viewer = user + if(user.client) //To make shooting through security cameras possible + viewer = user.client.eye + var/can_see = (T in view(viewer)) //No x-ray vision cameras. + return can_see + +/obj/item/camera/proc/captureimage(atom/target, mob/user) + var/turf/target_turf = get_turf(target) + var/list/turfs = list() + var/log = "Made by [user.name] in [get_area(user)]. " + var/mobs = "" + var/get_blueprints = FALSE + var/range = size * 2 + 1 + for(var/turf/placeholder as anything in CORNER_BLOCK_OFFSET(target_turf, range, range, -size, -size)) + while(isopenspaceturf(placeholder)) //Multi-z photography + placeholder = GET_TURF_BELOW(placeholder) + if(!placeholder) + break + + if(placeholder && ((isAI(user) && GLOB.cameranet.checkTurfVis(placeholder)) || can_capture_turf(placeholder, user))) + turfs += placeholder + mobs += get_mobs(placeholder) + log += add_log(placeholder) + if(locate(/obj/item/areaeditor/blueprints) in placeholder) + get_blueprints = TRUE + + var/datum/picture/P = createpicture(target, user, turfs, mobs, log, get_blueprints) + printpicture(user, P) + +/obj/item/camera/proc/createpicture(atom/target, mob/user, list/turfs, mobs, logs, have_blueprints = FALSE) + var/range = size * 2 + 1 + var/clone_area = SSmapping.request_turf_block_reservation(range, range, 1) + var/icon/photoimage = camera_get_icon(turfs, target, user, size*32, clone_area, size, range) + qdel(clone_area) + photoimage.Blend("#000", ICON_UNDERLAY) + + + var/icon/small_img = icon(photoimage) + var/icon/tiny_img = icon(photoimage) + var/icon/ic = icon('icons/obj/items.dmi',"photo") + var/icon/pc = icon('icons/obj/bureaucracy.dmi', "photo") + small_img.Scale(8, 8) + tiny_img.Scale(4, 4) + ic.Blend(small_img,ICON_OVERLAY, 10, 13) + pc.Blend(tiny_img,ICON_OVERLAY, 12, 19) + + var/datum/picture/P = new() + if(istype(src,/obj/item/camera/digital)) + P.fields["name"] = tgui_input_text(user, "Name photo:", "Photo", encode = FALSE) + P.name = P.fields["name"]//So the name is displayed on the print/delete list. + else + P.fields["name"] = "photo" + P.fields["author"] = user + P.fields["icon"] = ic + P.fields["tiny"] = pc + P.fields["img"] = photoimage + P.fields["desc"] = mobs + P.fields["pixel_x"] = rand(-10, 10) + P.fields["pixel_y"] = rand(-10, 10) + P.fields["size"] = size + P.fields["log"] = logs + P.fields["blueprints"] = have_blueprints + + return P + +/obj/item/camera/proc/printpicture(mob/user, datum/picture/P) + var/obj/item/photo/Photo = new/obj/item/photo() + Photo.loc = user.loc + if(!user.get_inactive_hand()) + user.put_in_inactive_hand(Photo) + + Photo.construct(P) + +///hauntings, like hallucinations but more spooky +/obj/item/camera/proc/handle_haunt(mob/user) + var/static/list/creepyasssounds = list( + 'sound/effects/ghost.ogg', + 'sound/effects/ghost2.ogg', + 'sound/effects/heartbeat.ogg', + 'sound/effects/screech.ogg', + 'sound/hallucinations/behind_you1.ogg', + 'sound/hallucinations/behind_you2.ogg', + 'sound/hallucinations/far_noise.ogg', + 'sound/hallucinations/growl1.ogg', + 'sound/hallucinations/growl2.ogg', + 'sound/hallucinations/growl3.ogg', + 'sound/hallucinations/im_here1.ogg', + 'sound/hallucinations/im_here2.ogg', + 'sound/hallucinations/i_see_you1.ogg', + 'sound/hallucinations/i_see_you2.ogg', + 'sound/hallucinations/look_up1.ogg', + 'sound/hallucinations/look_up2.ogg', + 'sound/hallucinations/over_here1.ogg', + 'sound/hallucinations/over_here2.ogg', + 'sound/hallucinations/over_here3.ogg', + 'sound/hallucinations/turn_around1.ogg', + 'sound/hallucinations/turn_around2.ogg', + 'sound/hallucinations/veryfar_noise.ogg', + 'sound/hallucinations/wail.ogg', + ) + SEND_SOUND(user, pick(creepyasssounds)) + + +/* + * Digital Camera + */ +/obj/item/camera/digital + name = "digital camera" + desc = "A digital camera. A small screen shows there is space for 10 photos left." + var/list/datum/picture/saved_pictures = list() + pictures_left = 30 + var/max_storage = 10 + +/obj/item/camera/digital/examine(mob/user) + . = ..() + . += span_notice("Ctrl+ЛКМ to print picture.") + . += span_notice("Ctrl+Shift+ЛКМ to delete picture.") + +/obj/item/camera/digital/afterattack(atom/target, mob/user) + if(!on || !pictures_left || ismob(target.loc)) return + captureimage(target, user) + + playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, 1, -3) + + desc = "A digital camera. A small screen shows that there are currently [length(saved_pictures)] pictures stored." + on = FALSE + update_icon(UPDATE_ICON_STATE) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/camera, delayed_turn_on)), 6.4 SECONDS) + + +/obj/item/camera/digital/captureimage(atom/target, mob/user) + if(saved_pictures.len >= max_storage) + to_chat(user, span_notice("Maximum photo storage capacity reached.")) + return + to_chat(user, "Picture saved.") + var/turf/target_turf = get_turf(target) + var/list/turfs = list() + var/log = "Made by [user.name] in [get_area(user)]. " + var/mobs = "" + var/get_blueprints = FALSE + var/range = size * 2 + 1 + for(var/turf/placeholder as anything in CORNER_BLOCK_OFFSET(target_turf, range, range, -size, -size)) + while(isopenspaceturf(placeholder)) //Multi-z photography + placeholder = GET_TURF_BELOW(placeholder) + if(!placeholder) + break + + if(placeholder && ((isAI(user) && GLOB.cameranet.checkTurfVis(placeholder)) || can_capture_turf(placeholder, user))) + turfs += placeholder + mobs += get_mobs(placeholder) + log += add_log(placeholder) + if(locate(/obj/item/areaeditor/blueprints) in placeholder) + get_blueprints = TRUE + + var/datum/picture/P = createpicture(target, user, turfs, mobs, get_blueprints, log) + saved_pictures += P + +/obj/item/camera/digital/CtrlClick(mob/user) + if(saved_pictures.len == 0) + to_chat(user, span_warning("No images saved.")) + return + if(pictures_left == 0) + to_chat(user, span_warning("There is no film left to print.")) + return + var/datum/picture/P = tgui_input_list(user, "Select image to print", "Print image", saved_pictures) + if(pictures_left == 0) + to_chat(user, span_warning("There is no film left to print.")) + return + if(P) + printpicture(user, P) + pictures_left-- + +/obj/item/camera/digital/CtrlShiftClick(mob/user) + if(saved_pictures.len == 0) + to_chat(user, span_warning("No images saved")) + return + var/datum/picture/P = tgui_input_list(user, "Select image to delete", "Delete image", saved_pictures) + if(P) + saved_pictures -= P + diff --git a/code/modules/paperwork/photography/camera_image_capturing.dm b/code/modules/paperwork/photography/camera_image_capturing.dm new file mode 100644 index 000000000000..81a7a4d51388 --- /dev/null +++ b/code/modules/paperwork/photography/camera_image_capturing.dm @@ -0,0 +1,120 @@ +/obj/effect/appearance_clone + +/obj/effect/appearance_clone/New(loc, atom/A) //Intentionally not Initialize(), to make sure the clone assumes the intended appearance in time for the camera getFlatIcon. + if(istype(A)) + appearance = A.appearance + dir = A.dir + if(ismovable(A)) + var/atom/movable/AM = A + step_x = AM.step_x + step_y = AM.step_y + . = ..() + +/obj/item/camera/proc/camera_get_icon(list/turfs, turf/center, mob/user, psize = 96, datum/turf_reservation/clone_area, size, total) + + var/skip_normal = FALSE + var/wipe_atoms = FALSE + + var/list/atoms = list() + if(istype(clone_area) && total == clone_area.width && total == clone_area.height && size >= 0) + var/turf/bottom_left = clone_area.bottom_left_turfs[1] + var/cloned_center_x = round(bottom_left.x + ((total - 1) / 2)) + var/cloned_center_y = round(bottom_left.y + ((total - 1) / 2)) + for(var/turf/T in turfs) + var/offset_x = T.x - center.x + var/offset_y = T.y - center.y + var/turf/newT = locate(cloned_center_x + offset_x, cloned_center_y + offset_y, bottom_left.z) + if(!(newT in clone_area.reserved_turfs)) //sanity check so we don't overwrite other areas somehow + continue + atoms += new /obj/effect/appearance_clone(newT, T) + if(T.loc.icon_state) + atoms += new /obj/effect/appearance_clone(newT, T.loc) + for(var/atom/A in T.contents) + if(istype(A, /atom/movable/lighting_object)) + continue + if(!A.invisibility || (see_ghosts && isobserver(A))) + atoms += new /obj/effect/appearance_clone(newT, A) + skip_normal = TRUE + wipe_atoms = TRUE + center = locate(cloned_center_x, cloned_center_y, bottom_left.z) + + if(!skip_normal) + for(var/turf/T in turfs) + atoms += T + for(var/atom/movable/A in T) + if(flashing_lights && istype(A, /atom/movable/lighting_object)) + continue //Do not apply lighting, making whole image full bright. + if(A.invisibility) + if(!(see_ghosts && isobserver(A))) + continue + atoms += A + CHECK_TICK + + //Bigger icon base to capture those icons that were shifted to the next tile + //i.e. pretty much all wall-mounted machinery + var/icon/res = icon('icons/blanks/96x96.dmi', "nothing") + res.Scale(psize, psize) + + var/list/sorted = list() + var/j + for(var/i in 1 to atoms.len) + var/atom/c = atoms[i] + for(j = sorted.len, j > 0, --j) + var/atom/c2 = sorted[j] + if((c2.plane <= c.plane) && (c2.layer <= c.layer)) + break + sorted.Insert(j+1, c) + CHECK_TICK + + var/xcomp = FLOOR(psize / 2, 1) - 15 + var/ycomp = FLOOR(psize / 2, 1) - 15 + + if(!skip_normal) //these are not clones + for(var/atom/A in sorted) + if(istype(A, /atom/movable/lighting_object)) + continue //Lighting objects render last, need to be above all atoms and turfs displayed + var/xo = (A.x - center.x) * world.icon_size + A.pixel_x + xcomp + var/yo = (A.y - center.y) * world.icon_size + A.pixel_y + ycomp + if(ismovable(A)) + var/atom/movable/AM = A + xo += AM.step_x + yo += AM.step_y + var/icon/img = getFlatIcon(A, no_anim = TRUE) + res.Blend(img, blendMode2iconMode(A.blend_mode), xo, yo) + CHECK_TICK + else + for(var/X in sorted) //these are clones + var/obj/effect/appearance_clone/clone = X + var/icon/img = getFlatIcon(clone, no_anim = TRUE) + if(img) + // Center of the image in X + var/xo = (clone.x - center.x) * world.icon_size + clone.pixel_x + xcomp + clone.step_x + // Center of the image in Y + var/yo = (clone.y - center.y) * world.icon_size + clone.pixel_y + ycomp + clone.step_y + + if(clone.transform) // getFlatIcon doesn't give a snot about transforms. + var/datum/decompose_matrix/decompose = clone.transform.decompose() + // Scale in X, Y + if(decompose.scale_x != 1 || decompose.scale_y != 1) + var/base_w = img.Width() + var/base_h = img.Height() + // scale_x can be negative + img.Scale(base_w * abs(decompose.scale_x), base_h * decompose.scale_y) + if(decompose.scale_x < 0) + img.Flip(EAST) + xo -= base_w * (decompose.scale_x - SIGN(decompose.scale_x)) / 2 * SIGN(decompose.scale_x) + yo -= base_h * (decompose.scale_y - 1) / 2 + // Rotation + if(decompose.rotation != 0) + img.Turn(decompose.rotation) + // Shift + xo += decompose.shift_x + yo += decompose.shift_y + + res.Blend(img, blendMode2iconMode(clone.blend_mode), xo, yo) + CHECK_TICK + + if(wipe_atoms) + QDEL_LIST(atoms) + + return res diff --git a/code/modules/paperwork/photography/other.dm b/code/modules/paperwork/photography/other.dm new file mode 100644 index 000000000000..3c1e6743cb38 --- /dev/null +++ b/code/modules/paperwork/photography/other.dm @@ -0,0 +1,45 @@ +/* + * Camera Film Cartridge + */ +/obj/item/camera_film + name = "film cartridge" + icon = 'icons/obj/items.dmi' + desc = "A camera film cartridge. Insert it into a camera to reload it." + icon_state = "film" + item_state = "electropack" + w_class = WEIGHT_CLASS_TINY + resistance_flags = FLAMMABLE + +/* + * Spooky Camera + */ +/obj/item/camera/spooky + name = "camera obscura" + desc = "A polaroid camera, some say it can see ghosts!" + see_ghosts = 1 + +/obj/item/camera/spooky/CheckParts(list/parts_list) + ..() + var/obj/item/camera/C = locate(/obj/item/camera) in contents + if(C) + pictures_max = C.pictures_max + pictures_left = C.pictures_left + visible_message("[C] has been imbued with godlike power!") + qdel(C) + +/obj/item/camera/proc/get_spooky_ghost() + var/static/list/ghosts = list("ghost","shade","shade2","ghost-narsie","horror","shadow","ghostian2") + return pick(ghosts) + +/* + * Photo Album + */ +/obj/item/storage/photo_album + name = "Photo album" + icon = 'icons/obj/items.dmi' + icon_state = "album" + item_state = "briefcase" + can_hold = list(/obj/item/photo) + resistance_flags = FLAMMABLE + drop_sound = 'sound/items/handling/book_drop.ogg' + pickup_sound = 'sound/items/handling/book_pickup.ogg' diff --git a/code/modules/paperwork/photography/photo.dm b/code/modules/paperwork/photography/photo.dm new file mode 100644 index 000000000000..f4d30b2cde02 --- /dev/null +++ b/code/modules/paperwork/photography/photo.dm @@ -0,0 +1,128 @@ +/obj/item/photo + name = "photo" + icon = 'icons/obj/items.dmi' + icon_state = "photo" + item_state = "paper" + w_class = WEIGHT_CLASS_SMALL + resistance_flags = FLAMMABLE + max_integrity = 50 + var/blueprints = 0 // Does this have the blueprints? + var/icon/img //Big photo image + var/scribble //Scribble on the back. + var/icon/tiny + var/photo_size = 3 + var/log_text = "" //Used for sending to Discord and just logging + +/obj/item/photo/examine(mob/user) + . = ..() + if(in_range(user, src) || isobserver(user)) + show(user) + . += span_notice("Alt-Click to rename photo.") + else + . += "It is too far away." + +/obj/item/photo/attack_self(mob/user) + user.examinate(src) + +/obj/item/photo/attackby(obj/item/I, mob/user, params) + if(is_pen(I) || istype(I, /obj/item/toy/crayon)) + add_fingerprint(user) + if(!user.is_literate()) + to_chat(user, span_warning("You don't know how to write!")) + return ATTACK_CHAIN_PROCEED + var/txt = tgui_input_text(user, "What would you like to write on the back?", "Photo Writing") + if(!txt || !Adjacent(user) || user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) + return ATTACK_CHAIN_PROCEED + scribble = txt + return ATTACK_CHAIN_PROCEED_SUCCESS + + if(istype(I, /obj/item/lighter)) + burnphoto(I, user) + return ATTACK_CHAIN_BLOCKED_ALL + + return ..() + +/obj/item/photo/click_alt(mob/user) + if(user.incapacitated() || !isAI(usr) && HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) + return NONE + + var/n_name = tgui_input_text(user, "What would you like to label the photo?", "Photo Labelling", name) + if(!n_name) + return CLICK_ACTION_BLOCKING + //loc.loc check is for making possible renaming photos in clipboards + if((loc == user || (loc.loc && loc.loc == user)) && !user.incapacitated() && !HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) + name = "[(n_name ? text("[n_name]") : "photo")]" + add_fingerprint(user) + return CLICK_ACTION_SUCCESS + +/obj/item/photo/proc/burnphoto(obj/item/lighter/P, mob/user) + var/class = "" + + if(P.lit && !user.incapacitated() && !HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) + if(istype(P, /obj/item/lighter/zippo)) + class = "" + + user.visible_message("[class][user] holds \the [P] up to \the [src], it looks like [user.p_theyre()] trying to burn it!", \ + "[class]You hold [P] up to [src], burning it slowly.") + + spawn(20) + if(get_dist(src, user) < 2 && user.get_active_hand() == P && P.lit) + user.visible_message("[class][user] burns right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.", \ + "[class]You burn right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.") + + if(user.is_in_inactive_hand(src)) + user.temporarily_remove_item_from_inventory(src) + + new /obj/effect/decal/cleanable/ash(get_turf(src)) + qdel(src) + + else + to_chat(user, "You must hold \the [P] steady to burn \the [src].") + +/obj/item/photo/proc/show(mob/user) + var/icon/img_shown = new/icon(img) + var/colormatrix = user.get_screen_colour() + // Apply colorblindness effects, if any. + if(islist(colormatrix)) + img_shown.MapColors( + colormatrix[1], colormatrix[2], colormatrix[3], + colormatrix[4], colormatrix[5], colormatrix[6], + colormatrix[7], colormatrix[8], colormatrix[9], + ) + usr << browse_rsc(img_shown, "tmp_photo.png") + usr << browse({"[name]"} \ + + "" \ + + "" \ + + "[scribble ? "
Written on the back:
[scribble]" : ""]"\ + + "", "window=Photo[UID()];size=[64*photo_size]x[scribble ? 400 : 64*photo_size]") + onclose(usr, "Photo[UID()]") + return + +/obj/item/photo/proc/construct(datum/picture/photo) + name = photo.fields["name"] + icon = photo.fields["icon"] + tiny = photo.fields["tiny"] + img = photo.fields["img"] + desc = photo.fields["desc"] + pixel_x = photo.fields["pixel_x"] + pixel_y = photo.fields["pixel_y"] + photo_size = photo.fields["size"] + log_text = photo.fields["log"] + blueprints = photo.fields["blueprints"] + if(blueprints) + AddElement(/datum/element/high_value_item) + +/obj/item/photo/proc/copy() + var/obj/item/photo/new_photo = new/obj/item/photo() + + new_photo.icon = icon(icon, icon_state) + new_photo.img = icon(img) + new_photo.tiny = icon(tiny) + new_photo.name = name + new_photo.desc = desc + new_photo.scribble = scribble + new_photo.blueprints = blueprints + if(blueprints) + new_photo.AddElement(/datum/element/high_value_item) + + return new_photo diff --git a/code/modules/paperwork/silicon_photography.dm b/code/modules/paperwork/photography/silicon_camera.dm similarity index 94% rename from code/modules/paperwork/silicon_photography.dm rename to code/modules/paperwork/photography/silicon_camera.dm index 346f864e5d9a..fbe317c46a48 100644 --- a/code/modules/paperwork/silicon_photography.dm +++ b/code/modules/paperwork/photography/silicon_camera.dm @@ -19,12 +19,12 @@ /obj/item/camera/siliconcam/drone_camera //currently doesn't offer the verbs, thus cannot be used name = "Drone photo camera" -/obj/item/camera/siliconcam/proc/injectaialbum(var/datum/picture/P, var/sufix = "") //stores image information to a list similar to that of the datacore +/obj/item/camera/siliconcam/proc/injectaialbum(datum/picture/P, sufix = "") //stores image information to a list similar to that of the datacore photos_taken++ P.fields["name"] = "Image [photos_taken][sufix]" aipictures += P -/obj/item/camera/siliconcam/proc/injectmasteralbum(var/datum/picture/P) //stores image information to a list similar to that of the datacore +/obj/item/camera/siliconcam/proc/injectmasteralbum(datum/picture/P) //stores image information to a list similar to that of the datacore var/mob/living/silicon/robot/C = src.loc if(C.connected_ai) var/mob/A = P.fields["author"] diff --git a/code/modules/paperwork/photography/video_camera.dm b/code/modules/paperwork/photography/video_camera.dm new file mode 100644 index 000000000000..d6544f47f4d2 --- /dev/null +++ b/code/modules/paperwork/photography/video_camera.dm @@ -0,0 +1,82 @@ +GLOBAL_LIST_EMPTY(active_video_cameras) + +/* + * Video Camera + */ +/obj/item/videocam + name = "video camera" + icon = 'icons/obj/items.dmi' + desc = "video camera that can send live feed to the entertainment network." + icon_state = "videocam" + item_state = "videocam" + w_class = WEIGHT_CLASS_SMALL + slot_flags = ITEM_SLOT_BELT + materials = list(MAT_METAL=2000) + var/on = FALSE + var/video_cooldown = 0 + var/obj/machinery/camera/portable/camera + var/canhear_range = 7 + +/obj/item/videocam/examine(mob/user) + . = ..() + if(in_range(user, src)) + . += span_notice("This video camera can send live feeds to the entertainment network. It's [on ? "" : "in"]active.") + +/obj/item/videocam/Destroy() + if(on) + camera_state() + return ..() + +/obj/item/videocam/update_icon_state() + icon_state = "videocam[on ? "_on" : ""]" + +/obj/item/videocam/proc/update_feeds() + if(on) + GLOB.active_video_cameras |= src + else + GLOB.active_video_cameras -= src + + for(var/obj/machinery/computer/security/telescreen/entertainment/TV in GLOB.machines) + TV.update_icon(UPDATE_OVERLAYS) + +/obj/item/videocam/proc/camera_state(mob/living/carbon/user) + if(on) + camera.c_tag = null + QDEL_NULL(camera) + else + camera = new(src, list("news"), user.name) + on = !on + update_icon(UPDATE_ICON_STATE) + visible_message(span_notice("The video camera has been turned [on ? "on" : "off"].")) + update_feeds() + +/obj/item/videocam/attack_self(mob/user) + if(world.time < video_cooldown) + to_chat(user, span_warning("[src] is overheating, give it some time.")) + return + camera_state(user) + +/obj/item/videocam/dropped(mob/user, slot, silent = FALSE) + . = ..() + if(on) + camera_state() + +/obj/item/videocam/hear_talk(mob/M, list/message_pieces) + var/msg = multilingual_to_message(message_pieces) + if(camera && on) + if(get_dist(src, M) <= canhear_range) + talk_into(M, msg) + for(var/obj/machinery/computer/security/telescreen/T in GLOB.machines) + if(T.watchers[M] == camera) + T.atom_say(msg) + +/obj/item/videocam/hear_message(mob/M, msg) + if(camera && on) + for(var/obj/machinery/computer/security/telescreen/T in GLOB.machines) + if(T.watchers[M] == camera) + T.atom_say(msg) + +/obj/item/videocam/advanced + name = "advanced video camera" + desc = "This video camera allows you to send live feeds even when attached to a belt." + slot_flags = ITEM_SLOT_BELT diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index e480c5772ae2..99b10d388aaf 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -11,7 +11,7 @@ materials = list(MAT_METAL=60) item_color = "cargo" //Если у кого-то как у меня возникнет непонимание зачем вообще нужен этот параметр, то он нужен для окрашивания вещей в стиральной машине... pressure_resistance = 2 - attack_verb = list("stamped") + attack_verb = list("опечатал") var/list/stamp_sounds = list('sound/effects/stamp1.ogg','sound/effects/stamp2.ogg','sound/effects/stamp3.ogg') diff --git a/code/modules/paperwork/ticketmachine.dm b/code/modules/paperwork/ticketmachine.dm index 0e3ccf775360..cf31118359da 100644 --- a/code/modules/paperwork/ticketmachine.dm +++ b/code/modules/paperwork/ticketmachine.dm @@ -214,7 +214,7 @@ /obj/item/ticket_machine_ticket/attackby(obj/item/I, mob/living/user, params) //Stolen from papercode . = ..() - if(ATTACK_CHAIN_CANCEL_CHECK(.) || !is_hot(I) || !Adjacent(user)) + if(ATTACK_CHAIN_CANCEL_CHECK(.) || !I.get_heat() || !Adjacent(user)) return . . |= ATTACK_CHAIN_BLOCKED_ALL diff --git a/code/modules/pda/PDA.dm b/code/modules/pda/PDA.dm index 90c01171c980..243b0195ddbb 100755 --- a/code/modules/pda/PDA.dm +++ b/code/modules/pda/PDA.dm @@ -12,6 +12,8 @@ GLOBAL_LIST_EMPTY(PDAs) desc = "A portable microcomputer by Thinktronic Systems, LTD. Functionality determined by a preprogrammed ROM cartridge." icon = 'icons/obj/pda.dmi' icon_state = "pda" + lefthand_file = 'icons/mob/inhands/pda_lefthand.dmi' + righthand_file = 'icons/mob/inhands/pda_righthand.dmi' w_class = WEIGHT_CLASS_TINY item_flags = DENY_UI_BLOCKED slot_flags = ITEM_SLOT_ID|ITEM_SLOT_PDA|ITEM_SLOT_BELT @@ -27,8 +29,12 @@ GLOBAL_LIST_EMPTY(PDAs) //Main variables var/owner = null var/default_cartridge = null // Access level defined by cartridge + /// Default request console cartridge + var/default_request_console_cartridge = null var/special_pen = null //special variable for nonstandart pens in new PDAs var/obj/item/cartridge/cartridge = null //current cartridge + /// Current request console cartridge + var/obj/item/cartridge/request_console/request_cartridge = null var/datum/data/pda/app/current_app = null var/datum/data/pda/app/lastapp = null @@ -75,8 +81,6 @@ GLOBAL_LIST_EMPTY(PDAs) var/obj/item/pda/chameleon_skin /// Custom job name used in chameleon PDA. var/fakejob - /// Our icon saved in the text format for TGUI usage - var/base64icon /// Custom PDA name used in update_name() var/custom_name /// Current PDA case @@ -101,12 +105,13 @@ GLOBAL_LIST_EMPTY(PDAs) GLOB.PDAs += src GLOB.PDAs = sortAtom(GLOB.PDAs) - base64icon = "[icon2base64(icon(icon, icon_state, frame = 1))]" - update_programs() if(default_cartridge) cartridge = new default_cartridge(src) cartridge.update_programs(src) + if(default_request_console_cartridge) + request_cartridge = new default_request_console_cartridge(src) + request_cartridge.update_programs(src) if(special_pen) new special_pen(src) else @@ -125,6 +130,7 @@ GLOBAL_LIST_EMPTY(PDAs) scanmode = null QDEL_LIST(programs) QDEL_NULL(cartridge) + QDEL_NULL(request_cartridge) QDEL_NULL(current_case) current_painting?.Cut() return ..() @@ -168,7 +174,7 @@ GLOBAL_LIST_EMPTY(PDAs) ui_interact(user) /obj/item/pda/proc/start_program(datum/data/pda/P) - if(P && ((P in programs) || (cartridge && (P in cartridge.programs)))) + if(P && ((P in programs) || (cartridge && (P in cartridge.programs)) || (request_cartridge && (P in request_cartridge.programs)))) return P.start() return 0 @@ -211,14 +217,13 @@ GLOBAL_LIST_EMPTY(PDAs) else to_chat(usr, "You cannot do this while restrained.") -/obj/item/pda/AltClick(mob/living/user) - if(!iscarbon(user)) - return +/obj/item/pda/click_alt(mob/living/user) if(can_use(user)) if(id) remove_id(user) else - to_chat(user, "This PDA does not have an ID in it!") + to_chat(user, span_warning("This PDA does not have an ID in it!")) + return CLICK_ACTION_SUCCESS /obj/item/pda/CtrlClick(mob/user) @@ -240,6 +245,8 @@ GLOBAL_LIST_EMPTY(PDAs) to_chat(user, "You remove the ID from the [name].") SStgui.update_uis(src) id = null + cartridge?.on_id_updated() + request_cartridge?.on_id_updated() update_icon(UPDATE_OVERLAYS) @@ -294,6 +301,8 @@ GLOBAL_LIST_EMPTY(PDAs) var/obj/item/I = user.get_active_hand() if(istype(I, /obj/item/card/id) && user.drop_transfer_item_to_loc(I, src)) id = I + cartridge?.on_id_updated() + request_cartridge?.on_id_updated() update_icon(UPDATE_OVERLAYS) return TRUE return FALSE @@ -303,6 +312,8 @@ GLOBAL_LIST_EMPTY(PDAs) id.forceMove_turf() user.put_in_hands(id) id = I + cartridge?.on_id_updated() + request_cartridge?.on_id_updated() update_icon(UPDATE_OVERLAYS) return TRUE return FALSE @@ -340,16 +351,12 @@ GLOBAL_LIST_EMPTY(PDAs) /obj/item/pda/update_icon_state() if(chameleon_skin) icon_state = initial(chameleon_skin.icon_state) - base64icon = "[icon2base64(icon(icon, icon_state, frame = 1))]" else if(current_case?.new_icon_state) icon_state = current_case.new_icon_state - base64icon = "[icon2base64(icon(icon, icon_state, frame = 1))]" else if(current_painting) icon_state = current_painting["icon"] - base64icon = current_painting["base64"] else icon_state = initial(icon_state) - base64icon = "[icon2base64(icon(icon, icon_state, frame = 1))]" if(chameleon_skin) item_state = initial(chameleon_skin.item_state) @@ -399,8 +406,25 @@ GLOBAL_LIST_EMPTY(PDAs) to_chat(user, span_notice("You have put [I] onto the PDA.")) return ATTACK_CHAIN_BLOCKED_ALL + if(istype(I, /obj/item/cartridge/request_console)) + add_fingerprint(user) + if(request_cartridge) + to_chat(user, span_warning("The PDA is already holding another request cartridge.")) + return ATTACK_CHAIN_PROCEED + if(!user.drop_transfer_item_to_loc(I, src)) + return ..() + request_cartridge = I + request_cartridge.update_programs(src) + update_shortcuts() + to_chat(user, span_notice("You have inserted [I] into the PDA.")) + SStgui.update_uis(src) + if(request_cartridge.radio) + request_cartridge.radio.hostpda = src + return ATTACK_CHAIN_BLOCKED_ALL + if(istype(I, /obj/item/cartridge)) add_fingerprint(user) + if(cartridge) to_chat(user, span_warning("The PDA is already holding another cartridge.")) return ATTACK_CHAIN_PROCEED @@ -460,6 +484,13 @@ GLOBAL_LIST_EMPTY(PDAs) to_chat(user, span_notice("You have slided [I] into the PDA.
You can remove it with Ctrl-click.")) return ATTACK_CHAIN_BLOCKED_ALL + if(istype(I, /obj/item/stamp)) + var/result = cartridge?.stamp_act(I) + result |= request_cartridge?.stamp_act(I) + if(result) + return ATTACK_CHAIN_BLOCKED_ALL + return ATTACK_CHAIN_PROCEED + return ..() diff --git a/code/modules/pda/app.dm b/code/modules/pda/app.dm index 98e9d5fe1bda..175083537877 100644 --- a/code/modules/pda/app.dm +++ b/code/modules/pda/app.dm @@ -20,6 +20,14 @@ /datum/data/pda/proc/program_process() return +/datum/data/pda/proc/on_id_updated() + return + +/datum/data/pda/proc/stamp_act(obj/item/stamp/stamp) + if(!istype(stamp)) + return FALSE + return TRUE + /datum/data/pda/proc/program_hit_check() return diff --git a/code/modules/pda/cart.dm b/code/modules/pda/cart.dm index a4e2c4efaa81..1777c07c126e 100644 --- a/code/modules/pda/cart.dm +++ b/code/modules/pda/cart.dm @@ -28,6 +28,24 @@ var/datum/data/pda/messenger_plugin/P = A P.pda = pda +/obj/item/cartridge/proc/stamp_act(stamp) + var/result = FALSE + for(var/A in programs) + var/datum/data/pda/P = A + result = result || P.stamp_act(stamp) + for(var/A in messenger_plugins) + var/datum/data/pda/messenger_plugin/P = A + result = result || P.stamp_act(stamp) + return result + +/obj/item/cartridge/proc/on_id_updated() + for(var/A in programs) + var/datum/data/pda/P = A + P.on_id_updated() + for(var/A in messenger_plugins) + var/datum/data/pda/messenger_plugin/P = A + P.on_id_updated() + /obj/item/cartridge/engineering name = "Power-ON Cartridge" icon_state = "cart-e" @@ -289,6 +307,14 @@ /obj/item/cartridge/frame name = "F.R.A.M.E. cartridge" + ru_names = list( + NOMINATIVE = "картридж П.О.Д.С.Т.А.В.А.", + GENITIVE = "картриджа П.О.Д.С.Т.А.В.А.", + DATIVE = "картриджу П.О.Д.С.Т.А.В.А.", + ACCUSATIVE = "картридж П.О.Д.С.Т.А.В.А.", + INSTRUMENTAL = "картриджем П.О.Д.С.Т.А.В.А.", + PREPOSITIONAL = "картридже П.О.Д.С.Т.А.В.А." + ) icon_state = "cart" charges = 5 var/telecrystals = 0 diff --git a/code/modules/pda/messenger.dm b/code/modules/pda/messenger.dm index 24fe8e81c820..a5ba79d9cd19 100644 --- a/code/modules/pda/messenger.dm +++ b/code/modules/pda/messenger.dm @@ -129,14 +129,7 @@ last_text = world.time // check if telecomms I/O route 1459 is stable //var/telecomms_intact = telecomms_process(P.owner, owner, t) - var/obj/machinery/message_server/useMS = null - if(GLOB.message_servers) - for(var/A in GLOB.message_servers) - var/obj/machinery/message_server/MS = A - //PDAs are now dependent on the Message Server. - if(MS.active) - useMS = MS - break + var/obj/machinery/message_server/useMS = find_pda_server() var/turf/sender_pos = get_turf(U) var/turf/recipient_pos = get_turf(P) diff --git a/code/modules/pda/pda_tgui.dm b/code/modules/pda/pda_tgui.dm index 6587438c3199..34ce99b0a153 100644 --- a/code/modules/pda/pda_tgui.dm +++ b/code/modules/pda/pda_tgui.dm @@ -23,6 +23,8 @@ var/list/prog_list = programs.Copy() if(cartridge) prog_list |= cartridge.programs + if(request_cartridge) + prog_list |= request_cartridge.programs for(var/A in prog_list) var/datum/data/pda/P = A @@ -47,6 +49,7 @@ data["idLink"] = (id ? "[id.registered_name], [id.assignment]" : "--------") data["cartridge_name"] = cartridge ? cartridge.name : "" + data["request_cartridge_name"] = request_cartridge ? request_cartridge.name : "" data["stationTime"] = station_time_timestamp() data["app"] = list() @@ -96,6 +99,25 @@ P.unnotify() cartridge = null update_shortcuts() + if("Eject_Request")//Ejects the cart, only done from hub. + if(!isnull(request_cartridge)) + var/turf/T = loc + if(ismob(T)) + T = T.loc + var/obj/item/cartridge/C = request_cartridge + C.forceMove(T) + if(scanmode in C.programs) + scanmode = null + if(current_app in C.programs) + start_program(find_program(/datum/data/pda/app/main_menu)) + if(C.radio) + C.radio.hostpda = null + for(var/datum/data/pda/P in notifying_programs) + if(P in C.programs) + P.unnotify() + request_cartridge.update_programs(null) + request_cartridge = null + update_shortcuts() if("Authenticate")//Checks for ID id_check(usr, in_pda_usage = TRUE) if("Ringtone") diff --git a/code/modules/pda/pdas.dm b/code/modules/pda/pdas.dm index d7e2a4f29cee..3ee62d5aeb89 100644 --- a/code/modules/pda/pdas.dm +++ b/code/modules/pda/pdas.dm @@ -1,36 +1,44 @@ /obj/item/pda/medical default_cartridge = /obj/item/cartridge/medical + default_request_console_cartridge = /obj/item/cartridge/request_console/medical icon_state = "pda-medical" /obj/item/pda/viro default_cartridge = /obj/item/cartridge/medical + default_request_console_cartridge = /obj/item/cartridge/request_console/viro icon_state = "pda-virology" item_state = "pda-medical" /obj/item/pda/engineering default_cartridge = /obj/item/cartridge/engineering + default_request_console_cartridge = /obj/item/cartridge/request_console/engineering icon_state = "pda-engineer" /obj/item/pda/security default_cartridge = /obj/item/cartridge/security + default_request_console_cartridge = /obj/item/cartridge/request_console/security icon_state = "pda-security" /obj/item/pda/detective default_cartridge = /obj/item/cartridge/detective + default_request_console_cartridge = /obj/item/cartridge/request_console/detective icon_state = "pda-detective" /obj/item/pda/warden default_cartridge = /obj/item/cartridge/security + default_request_console_cartridge = /obj/item/cartridge/request_console/warden icon_state = "pda-warden" /obj/item/pda/janitor default_cartridge = /obj/item/cartridge/janitor + default_request_console_cartridge = /obj/item/cartridge/request_console/janitor icon_state = "pda-janitor" ttone = "slip" /obj/item/pda/toxins default_cartridge = /obj/item/cartridge/signal/toxins icon_state = "pda-science" + default_request_console_cartridge = /obj/item/cartridge/request_console/toxins ttone = "boom" /obj/item/pda/clown @@ -59,40 +67,49 @@ /obj/item/pda/heads/hop default_cartridge = /obj/item/cartridge/hop + default_request_console_cartridge = /obj/item/cartridge/request_console/hop icon_state = "pda-hop" /obj/item/pda/heads/hos default_cartridge = /obj/item/cartridge/hos + default_request_console_cartridge = /obj/item/cartridge/request_console/hos icon_state = "pda-hos" /obj/item/pda/heads/ce default_cartridge = /obj/item/cartridge/ce + default_request_console_cartridge = /obj/item/cartridge/request_console/ce icon_state = "pda-ce" /obj/item/pda/heads/cmo default_cartridge = /obj/item/cartridge/cmo + default_request_console_cartridge = /obj/item/cartridge/request_console/cmo icon_state = "pda-cmo" /obj/item/pda/heads/rd default_cartridge = /obj/item/cartridge/rd + default_request_console_cartridge = /obj/item/cartridge/request_console/rd icon_state = "pda-rd" /obj/item/pda/captain default_cartridge = /obj/item/cartridge/captain icon_state = "pda-captain" + default_request_console_cartridge = /obj/item/cartridge/request_console/captain detonate = 0 //toff = 1 /obj/item/pda/heads/ntrep default_cartridge = /obj/item/cartridge/supervisor + default_request_console_cartridge = /obj/item/cartridge/request_console/ntrep icon_state = "pda-h" /obj/item/pda/heads/magistrate default_cartridge = /obj/item/cartridge/supervisor + default_request_console_cartridge = /obj/item/cartridge/request_console/magistrate icon_state = "pda-h" /obj/item/pda/heads/blueshield default_cartridge = /obj/item/cartridge/hos + default_request_console_cartridge = /obj/item/cartridge/request_console/blueshield icon_state = "pda-h" /obj/item/pda/heads/ert @@ -109,14 +126,17 @@ /obj/item/pda/cargo default_cartridge = /obj/item/cartridge/quartermaster + default_request_console_cartridge = /obj/item/cartridge/request_console/cargo icon_state = "pda-cargo" /obj/item/pda/quartermaster default_cartridge = /obj/item/cartridge/quartermaster + default_request_console_cartridge = /obj/item/cartridge/request_console/quartermaster icon_state = "pda-qm" /obj/item/pda/shaftminer icon_state = "pda-miner" + default_request_console_cartridge = /obj/item/cartridge/request_console/shaftminer special_pen = /obj/item/pen/survival /obj/item/pda/syndicate @@ -144,19 +164,23 @@ /obj/item/pda/chaplain icon_state = "pda-chaplain" + default_request_console_cartridge = /obj/item/cartridge/request_console/chaplain ttone = "holy" /obj/item/pda/lawyer default_cartridge = /obj/item/cartridge/lawyer + default_request_console_cartridge = /obj/item/cartridge/request_console/lawyer icon_state = "pda-lawyer" ttone = "..." /obj/item/pda/botanist //default_cartridge = /obj/item/cartridge/botanist + default_request_console_cartridge = /obj/item/cartridge/request_console/botanist icon_state = "pda-hydro" /obj/item/pda/roboticist icon_state = "pda-roboticist" + default_request_console_cartridge = /obj/item/cartridge/request_console/roboticist /obj/item/pda/librarian icon_state = "pda-library" @@ -175,25 +199,31 @@ model_name = "Thinktronic 5230 Personal Data Assistant Deluxe Special Max Turbo Limited Edition" /obj/item/pda/chef + default_request_console_cartridge = /obj/item/cartridge/request_console/chef icon_state = "pda-chef" /obj/item/pda/bar icon_state = "pda-bartender" + default_request_console_cartridge = /obj/item/cartridge/request_console/bar /obj/item/pda/atmos default_cartridge = /obj/item/cartridge/atmos + default_request_console_cartridge = /obj/item/cartridge/request_console/atmos icon_state = "pda-atmos" /obj/item/pda/chemist default_cartridge = /obj/item/cartridge/chemistry icon_state = "pda-chemistry" + default_request_console_cartridge = /obj/item/cartridge/request_console/chemist /obj/item/pda/geneticist default_cartridge = /obj/item/cartridge/medical icon_state = "pda-genetics" + default_request_console_cartridge = /obj/item/cartridge/request_console/geneticist /obj/item/pda/centcom default_cartridge = /obj/item/cartridge/centcom + default_request_console_cartridge = /obj/item/cartridge/request_console/centcom icon_state = "pda-h" /obj/item/pda/centcom/New() diff --git a/code/modules/pda/request_consoles_app.dm b/code/modules/pda/request_consoles_app.dm new file mode 100644 index 000000000000..f986099c62b5 --- /dev/null +++ b/code/modules/pda/request_consoles_app.dm @@ -0,0 +1,310 @@ +/datum/data/pda/app/request_console + name = "Request Consoles" + title = "Request Consoles" + icon = "archive" + template = "pda_request_console" + category = "Request Console" + update = PDA_APP_UPDATE + var/list/department_list + var/list/possible_consoles = list() + var/list/consoles_mute = list() + var/ore_message_reciver_dep + var/obj/machinery/requests_console/selected_console + +/datum/data/pda/app/request_console/New() + . = ..() + for(var/C in (GLOB.allRequestConsoles)) + var/obj/machinery/requests_console/console = C + if(QDELETED(console) || !istype(console)) + continue + if(console.department in department_list) + possible_consoles |= console + department_list -= console.department + console.connected_apps |= src + + +/datum/data/pda/app/request_console/Destroy() + selected_console = null + for(var/obj/machinery/requests_console/console as anything in possible_consoles) + console.connected_apps -= src + QDEL_NULL(possible_consoles) + QDEL_NULL(consoles_mute) + . = ..() + +/datum/data/pda/app/request_console/proc/on_rc_destroyed(datum/source) + possible_consoles -= source + SStgui.update_uis(pda) + +/datum/data/pda/app/request_console/proc/on_rc_message_recieved(obj/machinery/requests_console/source, message, isoremessage) + SIGNAL_HANDLER + if(isoremessage && source.department != ore_message_reciver_dep) + return + var/rendered_message = "Recieved on [source.name] : [message]" + if(!QDELETED(pda) && !consoles_mute[source]) + notify(rendered_message) + + +/datum/data/pda/app/request_console/update_ui(mob/user, list/data) + if(selected_console) + data += selected_console.ui_data(user) + data["selected_console"] = selected_console.name + else + data["selected_console"] = null + var/list/possible_consoles_data= list() + for(var/obj/machinery/requests_console/console as anything in possible_consoles) + possible_consoles_data += list(list("name" = console.name, "priority" = console.newmessagepriority, "muted" = consoles_mute[console])) + data["consoles_data"] = possible_consoles_data + +/datum/data/pda/app/request_console/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + var/name = params["name"] + var/obj/machinery/requests_console/clicked_console + for(var/atom/console as anything in possible_consoles) + if(console.name == name) + clicked_console = console + break + switch(action) + if("select") + if(!clicked_console) + return + selected_console = clicked_console + title = clicked_console.name + unnotify() + if("mute") + if(!clicked_console) + return + consoles_mute[clicked_console] = !consoles_mute[clicked_console] + if("back") + selected_console = null + title = initial(title) + else + selected_console?.ui_act(action, params, ui, state) + login() + SStgui.update_uis(pda) + + +/datum/data/pda/app/request_console/on_id_updated() + login() + + +/datum/data/pda/app/request_console/proc/login() + if(pda.id && selected_console) + selected_console.login_console(selected_console.screen, pda.id, pda, usr) + + +/datum/data/pda/app/request_console/stamp_act(obj/item/stamp/stamp) + if(!..() || !selected_console) + return FALSE + var/result = selected_console.stamp_messauth(selected_console.screen, stamp, pda, usr) + if(ATTACK_CHAIN_SUCCESS_CHECK(result)) + return TRUE + return FALSE + +/datum/data/pda/app/request_console/cargo + department_list = list(RC_CARGO_BAY) + +/datum/data/pda/app/request_console/shaftminer + department_list = list(RC_CARGO_BAY) + +/datum/data/pda/app/request_console/botanist + department_list = list(RC_HYDROPONICS) + +/datum/data/pda/app/request_console/chef + department_list = list(RC_KITCHEN) + +/datum/data/pda/app/request_console/bar + department_list = list(RC_BAR) + +/datum/data/pda/app/request_console/janitor + department_list = list(RC_JANITORIAL) + +/datum/data/pda/app/request_console/chaplain + department_list = list(RC_CHAPEL) + +/datum/data/pda/app/request_console/security + department_list = list(RC_SECURITY) + +/datum/data/pda/app/request_console/clown_security + department_list = list(RC_SECURITY) + +/datum/data/pda/app/request_console/lawyer + department_list = list(RC_INTERNAL_AFFAIRS_OFFICE) + +/datum/data/pda/app/request_console/medical + department_list = list( + RC_MEDBAY, + RC_MORGUE + ) + +/datum/data/pda/app/request_console/viro + department_list = list( + RC_MEDBAY, + RC_VIROLOGY, + RC_MORGUE + ) + +/datum/data/pda/app/request_console/engineering + department_list = list( + RC_TECH_STORAGE, + RC_ENGINEERING, + RC_ATMOSPHERICS, + RC_MECHANIC + ) + ore_message_reciver_dep = RC_MECHANIC + + +/datum/data/pda/app/request_console/detective + department_list = list( + RC_SECURITY, + RC_DETECTIVE + ) + +/datum/data/pda/app/request_console/warden + department_list = list( + RC_SECURITY, + RC_WARDEN, + RC_LABOR_CAMP + ) + +/datum/data/pda/app/request_console/toxins + department_list = list( + RC_SCIENCE, + RC_ROBOTICS, + RC_RESEARCH, + RC_XENOBIOLOGY + ) + ore_message_reciver_dep = RC_RESEARCH + +/datum/data/pda/app/request_console/hop + department_list = list( + RC_BAR, + RC_KITCHEN, + RC_HEAD_OF_PERSONNEL_DESK, + RC_BRIDGE, + RC_HYDROPONICS, + RC_JANITORIAL, + RC_CHAPEL + ) + +/datum/data/pda/app/request_console/hos + department_list = list(RC_SECURITY, + RC_WARDEN, + RC_LABOR_CAMP, + RC_HEAD_OF_SECURITY_DESK, + RC_BRIDGE, + RC_DETECTIVE) + +/datum/data/pda/app/request_console/ce + department_list = list( + RC_TECH_STORAGE, + RC_ENGINEERING, + RC_ATMOSPHERICS, + RC_MECHANIC, + RC_BRIDGE, + RC_AI, + RC_CHIEF_ENGINEER_DESK + ) + ore_message_reciver_dep = RC_MECHANIC + +/datum/data/pda/app/request_console/cmo + department_list = list( + RC_MEDBAY, + RC_VIROLOGY, + RC_MORGUE, + RC_GENETICS, + RC_BRIDGE, + RC_CHEMISTRY, + RC_CHIEF_MEDICAL_OFFICER_DESK + ) + +/datum/data/pda/app/request_console/rd + department_list = list( + RC_SCIENCE, + RC_ROBOTICS, + RC_RESEARCH, + RC_XENOBIOLOGY, + RC_GENETICS, + RC_BRIDGE, + RC_AI, + RC_RESEARCH_DIRECTOR_DESK + ) + ore_message_reciver_dep = RC_RESEARCH + +/datum/data/pda/app/request_console/captain + department_list = list( + RC_CHIEF_ENGINEER_DESK, + RC_CHIEF_MEDICAL_OFFICER_DESK, + RC_HEAD_OF_PERSONNEL_DESK, + RC_HEAD_OF_SECURITY_DESK, + RC_BRIDGE, + RC_QUARTERMASTER_DESK, + RC_AI, + RC_CAPTAIN_DESK, + RC_RESEARCH_DIRECTOR_DESK + ) + ore_message_reciver_dep = RC_RESEARCH_DIRECTOR_DESK + +/datum/data/pda/app/request_console/ntrep + department_list = list( + RC_NT_REPRESENTATIVE, + RC_BLUESHIELD, + RC_INTERNAL_AFFAIRS_OFFICE, + RC_BRIDGE + ) + +/datum/data/pda/app/request_console/magistrate + department_list = list( + RC_INTERNAL_AFFAIRS_OFFICE, + RC_BRIDGE + ) + +/datum/data/pda/app/request_console/blueshield + department_list = list( + RC_BLUESHIELD, + RC_BRIDGE + ) + +/datum/data/pda/app/request_console/quartermaster + department_list = list( + RC_CARGO_BAY, + RC_QUARTERMASTER_DESK, + RC_BRIDGE + ) + +/datum/data/pda/app/request_console/roboticist + department_list = list( + RC_RESEARCH, + RC_SCIENCE, + RC_ROBOTICS + ) + ore_message_reciver_dep = RC_ROBOTICS + +/datum/data/pda/app/request_console/atmos + department_list = list( + RC_TECH_STORAGE, + RC_ATMOSPHERICS, + RC_ENGINEERING + ) + ore_message_reciver_dep = RC_ATMOSPHERICS + +/datum/data/pda/app/request_console/chemist + department_list = list( + RC_CHEMISTRY, + RC_MEDBAY + ) + +/datum/data/pda/app/request_console/geneticist + department_list = list( + RC_GENETICS, + RC_MEDBAY + ) + +/datum/data/pda/app/request_console/centcom + department_list = list( + RC_BRIDGE, + RC_AI, + RC_BLUESHIELD, + RC_INTERNAL_AFFAIRS_OFFICE, + RC_NT_REPRESENTATIVE, + RC_CENTRAL_COMMAND, + RC_CAPTAIN_DESK + ) diff --git a/code/modules/pda/request_consoles_cart.dm b/code/modules/pda/request_consoles_cart.dm new file mode 100644 index 000000000000..f0d867862590 --- /dev/null +++ b/code/modules/pda/request_consoles_cart.dm @@ -0,0 +1,130 @@ +/obj/item/cartridge/request_console + name = "Request Console" + icon_state = "cart-req" + programs = list(new /datum/data/pda/app/request_console) + +/obj/item/cartridge/request_console/medical + name = "Medical Request" + programs = list(new /datum/data/pda/app/request_console/medical) + +/obj/item/cartridge/request_console/viro + name = "Virology Request" + programs = list(new /datum/data/pda/app/request_console/viro) + +/obj/item/cartridge/request_console/engineering + name = "Engineering Request" + programs = list(new /datum/data/pda/app/request_console/engineering) + +/obj/item/cartridge/request_console/security + name = "Security Request" + programs = list(new /datum/data/pda/app/request_console/security) + +/obj/item/cartridge/request_console/detective + name = "Detective Request" + programs = list(new /datum/data/pda/app/request_console/detective) + +/obj/item/cartridge/request_console/warden + name = "Warden Request" + programs = list(new /datum/data/pda/app/request_console/warden) + +/obj/item/cartridge/request_console/janitor + name = "Janitor Request" + programs = list(new /datum/data/pda/app/request_console/janitor) + +/obj/item/cartridge/request_console/toxins + name = "Sciense Request" + programs = list(new /datum/data/pda/app/request_console/toxins) + +/obj/item/cartridge/request_console/hop + name = "HOP Request" + programs = list(new /datum/data/pda/app/request_console/hop) + +/obj/item/cartridge/request_console/hos + name = "HOS Request" + programs = list(new /datum/data/pda/app/request_console/hos) + +/obj/item/cartridge/request_console/ce + name = "CE Request" + programs = list(new /datum/data/pda/app/request_console/ce) + +/obj/item/cartridge/request_console/cmo + name = "CMO Request" + programs = list(new /datum/data/pda/app/request_console/cmo) + +/obj/item/cartridge/request_console/rd + name = "RD Request" + programs = list(new /datum/data/pda/app/request_console/rd) + +/obj/item/cartridge/request_console/captain + name = "Captain Request" + programs = list(new /datum/data/pda/app/request_console/captain) + + +/obj/item/cartridge/request_console/ntrep + name = "NTR Request" + programs = list(new /datum/data/pda/app/request_console/ntrep) + +/obj/item/cartridge/request_console/magistrate + name = "Magistrate Request" + programs = list(new /datum/data/pda/app/request_console/magistrate) + +/obj/item/cartridge/request_console/blueshield + name = "Blueshield Request" + programs = list(new /datum/data/pda/app/request_console/blueshield) + +/obj/item/cartridge/request_console/cargo + name = "Cargo Request" + programs = list(new /datum/data/pda/app/request_console/cargo) + +/obj/item/cartridge/request_console/quartermaster + name = "QM Request" + programs = list(new /datum/data/pda/app/request_console/quartermaster) + +/obj/item/cartridge/request_console/shaftminer + name = "Shaftminer Request" + programs = list(new /datum/data/pda/app/request_console/shaftminer) + +/obj/item/cartridge/request_console/chaplain + name = "Chaplain Request" + programs = list(new /datum/data/pda/app/request_console/chaplain) + +/obj/item/cartridge/request_console/lawyer + name = "Internal Affairs Request" + programs = list(new /datum/data/pda/app/request_console/lawyer) + +/obj/item/cartridge/request_console/botanist + name = "Botanist Request" + programs = list(new /datum/data/pda/app/request_console/botanist) + +/obj/item/cartridge/request_console/roboticist + name = "Roboticist Request" + programs = list(new /datum/data/pda/app/request_console/roboticist) + +/obj/item/cartridge/request_console/chef + name = "Chef Request" + programs = list(new /datum/data/pda/app/request_console/chef) + +/obj/item/cartridge/request_console/bar + name = "Bartender Request" + programs = list(new /datum/data/pda/app/request_console/bar) + +/obj/item/cartridge/request_console/atmos + name = "Atmospherics Request" + programs = list(new /datum/data/pda/app/request_console/atmos) + +/obj/item/cartridge/request_console/chemist + name = "Chemist Request" + programs = list(new /datum/data/pda/app/request_console/chemist) + +/obj/item/cartridge/request_console/geneticist + name = "Geneticist Request" + programs = list(new /datum/data/pda/app/request_console/geneticist) + +/obj/item/cartridge/request_console/clown_security + name = "Clown Security Request" + programs = list(new /datum/data/pda/app/request_console/clown_security) + +/obj/item/cartridge/request_console/centcom + name = "Centcom Request" + programs = list(new /datum/data/pda/app/request_console/centcom) + diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 29e7c8c89959..3593d74693b6 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -790,21 +790,22 @@ return ..() +/obj/machinery/power/apc/examine(mob/user) + . = ..() + if(in_range(src, user)) + . += span_info("Alt-click to toggle locker.
Ctrl-click to toggle power.") -/obj/machinery/power/apc/AltClick(mob/user) - var/mob/living/carbon/human/human = user - if(!istype(human) || human.incapacitated() || HAS_TRAIT(human, TRAIT_HANDS_BLOCKED)) - return - - if(!Adjacent(human) || (get_turf(user) != user.loc)) - return - - var/obj/item/card/id/card = human.get_id_card() +/obj/machinery/power/apc/click_alt(mob/living/carbon/human/H) + if(!istype(H)) + return NONE + var/obj/item/card/id/card = H.get_id_card() if(!istype(card)) - return + return NONE + + add_fingerprint(H) + togglelock(H) + return CLICK_ACTION_SUCCESS - add_fingerprint(user) - togglelock(user) /obj/machinery/power/apc/CtrlClick(mob/user) SEND_SIGNAL(src, COMSIG_CLICK_CTRL, user) @@ -1367,8 +1368,8 @@ cell.corrupt() malfhack = TRUE update_icon() - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(3, 0, loc) + var/datum/effect_system/fluid_spread/smoke/smoke = new + smoke.set_up(amount = 3, location = loc) smoke.attach(src) smoke.start() do_sparks(3, 1, src) diff --git a/code/modules/power/cable_coil.dm b/code/modules/power/cable_coil.dm index c51cb95ab691..31c441b8f645 100644 --- a/code/modules/power/cable_coil.dm +++ b/code/modules/power/cable_coil.dm @@ -5,6 +5,8 @@ singular_name = "cable" icon = 'icons/obj/engines_and_power/power.dmi' icon_state = "coil" + righthand_file = 'icons/mob/inhands/tools_righthand.dmi' + lefthand_file = 'icons/mob/inhands/tools_lefthand.dmi' item_state = "coil_red" belt_icon = "cable_coil" amount = MAXCOIL @@ -20,11 +22,21 @@ materials = list(MAT_METAL=10, MAT_GLASS=5) flags = CONDUCT slot_flags = ITEM_SLOT_BELT - item_state = "coil" - attack_verb = list("whipped", "lashed", "disciplined", "flogged") + attack_verb = list("хлестнул", "стегнул", "проучил", "выпорол") usesound = 'sound/items/deconstruct.ogg' toolspeed = 1 + var/static/list/wire_colors = list( + WIRE_COLOR_BLUE = "blue", + WIRE_COLOR_CYAN = "cyan", + WIRE_COLOR_GREEN = "green", + WIRE_COLOR_ORANGE = "orange", + WIRE_COLOR_PINK = "pink", + WIRE_COLOR_RED = "red", + WIRE_COLOR_WHITE = "white", + WIRE_COLOR_YELLOW = "yellow" + ) + /obj/item/stack/cable_coil/Initialize(mapload, new_amount, merge = TRUE, cable_color = null) . = ..() @@ -59,7 +71,7 @@ icon_state = "coil2" else icon_state = "coil" - + item_state = wire_colors[color] /obj/item/stack/cable_coil/update_weight() if(amount == 1) diff --git a/code/modules/power/cable_multiz.dm b/code/modules/power/cable_multiz.dm index a52ee27bbea0..faecbd4c488c 100644 --- a/code/modules/power/cable_multiz.dm +++ b/code/modules/power/cable_multiz.dm @@ -77,13 +77,14 @@ else powernet.add_cable(C) //the cable was powernetless, let's just add it to our powernet - var/obj/structure/cable/multiz/above = locate(/obj/structure/cable/multiz) in (GET_TURF_ABOVE(loc)) + var/turf/T = loc + var/obj/structure/cable/multiz/above = locate(/obj/structure/cable/multiz) in (GET_TURF_ABOVE(T)) if(above && above?.powernet != powernet) if(!above.powernet) powernet.add_cable(above) else merge_powernets(powernet, above.powernet) - var/obj/structure/cable/multiz/below = locate(/obj/structure/cable/multiz) in (GET_TURF_BELOW(loc)) + var/obj/structure/cable/multiz/below = locate(/obj/structure/cable/multiz) in (GET_TURF_BELOW(T)) if(below && below?.powernet != powernet) if(!below.powernet) powernet.add_cable(below) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index cda28a116c53..692dcab1425d 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -23,6 +23,9 @@ /obj/item/stock_parts/cell/laser maxcharge = 1500 +/obj/item/stock_parts/cell/laser/gatling + maxcharge = 9000 + /obj/item/stock_parts/cell/get_cell() return src @@ -413,3 +416,8 @@ name = "emitter gun power cell" maxcharge = 2200 chargerate = 100 + +/obj/item/stock_parts/cell/degraded + name = "degraded power cell" + maxcharge = 750 + chargerate = 25 diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 598647c2b757..9c28511a3db7 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -14,6 +14,8 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne #define GRAV_NEEDS_PLASTEEL 2 #define GRAV_NEEDS_WRENCH 3 +#define BLOB_HITS_NEED 4 + // // Abstract Generator // @@ -27,6 +29,8 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne use_power = NO_POWER_USE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | NO_MALF_EFFECT var/sprite_number = 0 + /// Number of successful blob hits + var/blob_hits = 0 /obj/machinery/gravity_generator/ex_act(severity) @@ -35,7 +39,8 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne /obj/machinery/gravity_generator/blob_act(obj/structure/blob/B) - if(prob(20)) + blob_hits++ + if(blob_hits >= BLOB_HITS_NEED) set_broken() @@ -431,7 +436,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne var/turf/mob_turf = get_turf(shaked) if(!istype(mob_turf)) continue - if(!is_valid_z_level(our_turf, mob_turf)) + if(!are_zs_connected(our_turf, mob_turf)) continue if(isliving(shaked)) var/mob/living/living_shaked = shaked @@ -457,11 +462,8 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne return var/list/z_list = list() // Multi-Z, station gravity generator generates gravity on all STATION_LEVEL z-levels. - if(check_level_trait(our_turf.z, STATION_LEVEL)) - for(var/z in levels_by_trait(STATION_LEVEL)) - z_list += z - else - z_list += our_turf.z + for(var/z in SSmapping.get_connected_levels(our_turf)) + z_list += z for(var/z in z_list) if(!GLOB.gravity_generators["[z]"]) GLOB.gravity_generators["[z]"] = list() diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index c574db5e22e5..846cbb8713cd 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -442,8 +442,6 @@ /obj/machinery/light/attackby(obj/item/I, mob/living/user, params) if(user.a_intent == INTENT_HARM) - if(light_hit_check(I, user)) - return ATTACK_CHAIN_BLOCKED_ALL return ..() //Light replacer code @@ -482,48 +480,38 @@ explode() return ATTACK_CHAIN_BLOCKED_ALL - if(light_hit_check(I, user)) + if(istype(I, /obj/item/toy/crayon/spraycan)) + add_fingerprint(user) + var/obj/item/toy/crayon/spraycan/spraycan = I + if(spraycan.colour == light_color) + return ATTACK_CHAIN_BLOCKED_ALL + /* Реализация проверки цвета, который был выбран в распылителе + Если цвет слишком тёмный, то return */ + var/r = hex2num(copytext(spraycan.colour, 2, 4)) + var/g = hex2num(copytext(spraycan.colour, 4, 6)) + var/b = hex2num(copytext(spraycan.colour, 6, 8)) + + var/brightness = (0.299 * r + 0.587 * g + 0.114 * b) // Формула для определения яркости цвета(Да, магические числа) + if(brightness < 100) // Порог яркости + to_chat(user, span_warning("Выбранный цвет слишком тёмный для того чтоб он мог пропускать свет!")) + return ATTACK_CHAIN_BLOCKED_ALL + var/min_rgb = min(r, g, b) + var/max_rgb = max(r, g, b) + var/saturation = (max_rgb - min_rgb) / max_rgb + if(saturation > 0.8) // Максимально допустимая насыщенность + to_chat(user, span_warning("Цвет слишком насыщенный для освещения!")) + return ATTACK_CHAIN_BLOCKED_ALL + /* Конец проверки цвета */ + to_chat(user, span_warning("Вы покрасили [src] при помощи [spraycan.name]!")) + spraycan.uses-- + color = spraycan.colour + light_color = spraycan.colour + playsound(src, 'sound/effects/spray.ogg', 50, TRUE) + update() return ATTACK_CHAIN_BLOCKED_ALL - return ..() -/// Special lights attack handling -/obj/machinery/light/proc/light_hit_check(obj/item/I, mob/living/user) - if(status == LIGHT_EMPTY) - if(has_power() && (I.flags & CONDUCT)) - add_fingerprint(user) - do_sparks(3, 1, src) - if(prob(75)) // If electrocuted - electrocute_mob(user, get_area(src), src, rand(0.7, 1), TRUE) - to_chat(user, span_userdanger("You have been electrocuted by [src]!")) - else // If not electrocuted - to_chat(user, span_danger("You stick [I] into the light socket.")) - return TRUE - return FALSE - if(status == LIGHT_BROKEN) - return FALSE - add_fingerprint(user) - user.do_attack_animation(src) - if(prob(1 + I.force * 5)) - user.visible_message( - span_danger("[user] smashed the light!"), - span_danger("You hit the light, and it smashes!"), - span_italics("You hear the tinkle of breaking glass."), - ) - if(on && (I.flags & CONDUCT) && prob(12)) - electrocute_mob(user, get_area(src), src, 0.3, TRUE) - break_light_tube() - return TRUE - playsound(loc, 'sound/effects/glasshit.ogg', 75, TRUE) - user.visible_message( - span_danger("[user] hits the light."), - span_danger("You hit the light."), - span_italics("You hear someone hitting a glass."), - ) - return TRUE - - /obj/machinery/light/screwdriver_act(mob/living/user, obj/item/I) if(status != LIGHT_EMPTY) return TRUE @@ -563,16 +551,35 @@ /obj/machinery/light/proceed_attack_results(obj/item/I, mob/living/user, params, def_zone) + var/initial_status = status + . = ..() - if(ATTACK_CHAIN_SUCCESS_CHECK(.) && (status == LIGHT_BROKEN || status == LIGHT_EMPTY) && on && (I.flags & CONDUCT) && prob(12)) + + if(!ATTACK_CHAIN_SUCCESS_CHECK(.) || !(I.flags & CONDUCT) || !has_power()) + return + + if(status != initial_status && prob(12)) // Proceed only if changed `state` during `take_damage`. electrocute_mob(user, get_area(src), src, 0.3, TRUE) + else if(status == LIGHT_EMPTY && prob(75)) + to_chat(user, span_userdanger("You aimed right into the light socket.")) + electrocute_mob(user, get_area(src), src, rand(0.7, 1), TRUE) + do_sparks(3, TRUE, src) -/obj/machinery/light/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1) + add_fingerprint(user) + + +/obj/machinery/light/take_damage(damage_amount, damage_type = BRUTE, damage_flag = "", sound_effect = TRUE, attack_dir, armour_penetration = 0) . = ..() - if(. && !QDELETED(src)) - if(prob(damage_amount * 5)) - break_light_tube() + + if(!. || QDELETED(src)) + return + + if(!prob(1 + . * 5)) + return + + break_light_tube() + /obj/machinery/light/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) switch(damage_type) @@ -744,18 +751,22 @@ var/obj/item/light/L = drop_light_tube() L.attack_tk(user) + /obj/machinery/light/proc/break_light_tube(skip_sound_and_sparks = FALSE, overloaded = FALSE) if(status == LIGHT_EMPTY || status == LIGHT_BROKEN) return if(!skip_sound_and_sparks) - if(status == LIGHT_OK || status == LIGHT_BURNED) - playsound(loc, 'sound/effects/glasshit.ogg', 75, 1) if(on || overloaded) - do_sparks(3, 1, src) + do_sparks(3, TRUE, src) + + playsound(loc, 'sound/effects/glasshit.ogg', 75, TRUE) + + visible_message(span_danger("[src] was just smashed!"), null, span_italics("You hear the tinkle of breaking glass.")) status = LIGHT_BROKEN update() + /obj/machinery/light/proc/fix() if(status == LIGHT_OK) return diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index c3bc21edaa9a..82c0f4506e3c 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -9,6 +9,7 @@ density = TRUE anchored = FALSE use_power = NO_POWER_USE + var/datum/looping_sound/port_gen/soundloop var/active = 0 var/power_gen = 5000 @@ -17,6 +18,14 @@ var/power_output = 1 var/base_icon = "portgen0" +/obj/machinery/power/port_gen/Initialize(mapload) + . = ..() + soundloop = new(list(src), active) + +/obj/machinery/power/port_gen/Destroy() + QDEL_NULL(soundloop) + return ..() + /obj/machinery/power/port_gen/proc/IsBroken() return (stat & (BROKEN|EMPED)) @@ -39,10 +48,12 @@ if(active && HasFuel() && !IsBroken() && anchored && powernet) add_avail(power_gen * power_output) UseFuel() + soundloop.start() else active = 0 handleInactive() update_icon(UPDATE_ICON_STATE) + soundloop.stop() /obj/machinery/power/powered() return TRUE //doesn't require an external power source @@ -240,7 +251,7 @@ if(temperature > cooling_temperature) var/temp_loss = (temperature - cooling_temperature)/TEMPERATURE_DIVISOR temp_loss = between(2, round(temp_loss, 1), TEMPERATURE_CHANGE_MAX) - temperature = max(temperature - temp_loss, cooling_temperature) + temperature = max(temperature - temp_loss, cooling_temperature, TCMB) SStgui.update_uis(src) if(overheating) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 3c5078b0add3..cae596ec1d6d 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -21,7 +21,7 @@ var/state = 0 var/locked = 0 - var/projectile_type = /obj/item/projectile/beam/emitter + var/projectile_type = /obj/projectile/beam/emitter var/projectile_sound = 'sound/weapons/emitter.ogg' var/datum/effect_system/spark_spread/sparks @@ -72,9 +72,9 @@ return TRUE -/obj/machinery/power/emitter/AltClick(mob/user) - if(Adjacent(user)) - rotate() +/obj/machinery/power/emitter/click_alt(mob/user) + rotate() + return CLICK_ACTION_SUCCESS /obj/machinery/power/emitter/Destroy() @@ -171,7 +171,7 @@ return FALSE /obj/machinery/power/emitter/proc/fire_beam() - var/obj/item/projectile/P = new projectile_type(get_turf(src)) + var/obj/projectile/P = new projectile_type(get_turf(src)) playsound(get_turf(src), projectile_sound, 50, TRUE) if(prob(35)) sparks.start() diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 0ed692764d09..67574eeaaaca 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -146,11 +146,11 @@ field_generator power level display /obj/machinery/field/generator/blob_act(obj/structure/blob/B) if(active) - return 0 + return FALSE else ..() -/obj/machinery/field/generator/bullet_act(obj/item/projectile/Proj) +/obj/machinery/field/generator/bullet_act(obj/projectile/Proj) if(Proj.flag != "bullet" && !Proj.nodamage) power = min(power + Proj.damage, field_generator_max_power) check_power_level() @@ -323,7 +323,7 @@ field_generator power level display var/temp = TRUE //stops spam for(var/thing in GLOB.singularities) var/obj/singularity/O = thing - if(O.last_warning && temp && atoms_share_level(O, src)) + if(O.last_warning && temp && are_zs_connected(O, src)) if((world.time - O.last_warning) > 50) //to stop message-spam temp = FALSE // Здесь был коммент от affected в 7 строк про то что get_area_name тупой и юзал for(x in world) и типа дорого и глупо. diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index d46fc3bc7e44..19622963ec2d 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -1,9 +1,12 @@ -/obj/singularity/narsie //Moving narsie to a child object of the singularity so it can be made to function differently. --NEO +/obj/singularity/god + /// How many humans got killed by it. For now used only for /proc/apocalypse cinematics + var/soul_devoured = 0 + +/obj/singularity/god/narsie //Moving narsie to a child object of the singularity so it can be made to function differently. --NEO name = "Nar'sie's Avatar" desc = "Your mind begins to bubble and ooze as it tries to comprehend what it sees." icon = 'icons/obj/magic_terror.dmi' - /// How many humans got killed by it. For now used only for /proc/apocalypse and only for Nar'Sie. - var/soul_devoured = 0 + pixel_x = -89 pixel_y = -85 current_size = 9 //It moves/eats like a max-size singulo, aside from range. --NEO @@ -14,15 +17,13 @@ consume_range = 6 gender = FEMALE -/obj/singularity/narsie/admin_investigate_setup() +/obj/singularity/god/narsie/admin_investigate_setup() return - -/obj/singularity/narsie/update_icon_state() +/obj/singularity/god/narsie/update_icon_state() return - -/obj/singularity/narsie/large +/obj/singularity/god/narsie/large name = "Nar'Sie" icon = 'icons/obj/narsie.dmi' // Pixel stuff centers Narsie. @@ -33,7 +34,7 @@ grav_pull = 10 consume_range = 12 //How many tiles out do we eat -/obj/singularity/narsie/large/New() +/obj/singularity/god/narsie/large/New() ..() icon_state = SSticker.cultdat?.entity_icon_state name = SSticker.cultdat?.entity_name @@ -53,7 +54,7 @@ addtimer(CALLBACK(SSticker.mode, TYPE_PROC_REF(/datum/game_mode, apocalypse)), 10 SECONDS) -/obj/singularity/narsie/large/Destroy() +/obj/singularity/god/narsie/large/Destroy() to_chat(world, " [uppertext(name)] HAS FALLEN") SEND_SOUND(world, 'sound/hallucinations/wail.ogg') var/datum/game_mode/gamemode = SSticker.mode @@ -65,10 +66,10 @@ to_chat(cult_mind.current, "Current goal: Slaughter the heretics!") ..() -/obj/singularity/narsie/large/attack_ghost(mob/dead/observer/user) +/obj/singularity/god/narsie/large/attack_ghost(mob/dead/observer/user) make_new_construct(/mob/living/simple_animal/hostile/construct/harvester, user, cult_override = TRUE) -/obj/singularity/narsie/process() +/obj/singularity/god/narsie/process() eat() if(!target || prob(5)) pickcultist() @@ -77,19 +78,19 @@ mezzer() -/obj/singularity/narsie/Bump(atom/bumped_atom, effect_applied = TRUE)//you dare stand before a god?! +/obj/singularity/god/narsie/Bump(atom/bumped_atom, effect_applied = TRUE)//you dare stand before a god?! . = ..() if(.) return . godsmack(bumped_atom) -/obj/singularity/narsie/Bumped(atom/movable/moving_atom, effect_applied = TRUE) +/obj/singularity/god/narsie/Bumped(atom/movable/moving_atom, effect_applied = TRUE) . = ..() godsmack(moving_atom) -/obj/singularity/narsie/proc/godsmack(atom/A) +/obj/singularity/god/narsie/proc/godsmack(atom/A) if(istype(A,/obj/)) var/obj/O = A O.ex_act(1) @@ -99,7 +100,7 @@ var/turf/T = A T.ChangeTurf(/turf/simulated/floor/engine/cult) -/obj/singularity/narsie/mezzer() +/obj/singularity/god/narsie/mezzer() for(var/mob/living/carbon/M in oviewers(8, src)) if(M.stat == CONSCIOUS) if(!iscultist(M)) @@ -107,16 +108,16 @@ M.Stun(6 SECONDS) -/obj/singularity/narsie/consume(atom/A) +/obj/singularity/god/narsie/consume(atom/A) A.narsie_act(src) -/obj/singularity/narsie/ex_act() //No throwing bombs at it either. --NEO +/obj/singularity/god/narsie/ex_act() //No throwing bombs at it either. --NEO return -/obj/singularity/narsie/singularity_act() //handled in /obj/singularity/proc/consume +/obj/singularity/god/narsie/singularity_act() //handled in /obj/singularity/proc/consume return -/obj/singularity/narsie/proc/pickcultist() //Narsie rewards his cultists with being devoured first, then picks a ghost to follow. --NEO +/obj/singularity/god/narsie/proc/pickcultist() //Narsie rewards his cultists with being devoured first, then picks a ghost to follow. --NEO var/list/cultists = list() var/list/noncultists = list() for(var/mob/living/carbon/food in GLOB.alive_mob_list) //we don't care about constructs or cult-Ians or whatever. cult-monkeys are fair game i guess @@ -150,7 +151,7 @@ return -/obj/singularity/narsie/proc/acquire(mob/food) +/obj/singularity/god/narsie/proc/acquire(mob/food) if(food == target) return if(!target) @@ -163,17 +164,17 @@ to_chat(target, "[uppertext(SSticker.cultdat.entity_name)] HAS CHOSEN YOU TO LEAD HER TO HER NEXT MEAL") //Wizard narsie -/obj/singularity/narsie/wizard +/obj/singularity/god/narsie/wizard grav_pull = 0 -/obj/singularity/narsie/wizard/eat() +/obj/singularity/god/narsie/wizard/eat() for(var/atom/X in orange(consume_range,src)) if(isturf(X) || istype(X, /atom/movable)) consume(X) return -/obj/singularity/narsie/proc/narsie_spawn_animation() +/obj/singularity/god/narsie/proc/narsie_spawn_animation() icon = 'icons/obj/narsie_spawn_anim.dmi' dir = SOUTH move_self = FALSE diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index bcd6b2b01ab5..8e7eede4ff9d 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -75,6 +75,10 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin var/strength = null var/desc_holder = null +/obj/structure/particle_accelerator/examine(mob/user) + . = ..() + . += span_info("Alt-click to rotate.") + /obj/structure/particle_accelerator/Destroy() construction_state = 0 if(master) @@ -87,16 +91,9 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin icon_state = "end_cap" reference = "end_cap" - -/obj/structure/particle_accelerator/verb/rotate() - set name = "Rotate Clockwise" - set category = "Object" - set src in oview(1) - - rotate_accelerator(usr) - -/obj/structure/particle_accelerator/AltClick(mob/user) +/obj/structure/particle_accelerator/click_alt(mob/user) rotate_accelerator(user) + return CLICK_ACTION_SUCCESS /obj/structure/particle_accelerator/proc/rotate_accelerator(mob/user) if(user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user)) @@ -134,10 +131,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin master.toggle_power() investigate_log("was moved whilst active; it powered down.", INVESTIGATE_ENGINE) -/obj/machinery/particle_accelerator/control_box/blob_act(obj/structure/blob/B) - if(prob(50) && !QDELETED(src)) - qdel(src) - /obj/structure/particle_accelerator/update_icon_state() switch(construction_state) if(ACCELERATOR_UNWRENCHED, ACCELERATOR_WRENCHED) @@ -266,19 +259,11 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin /obj/machinery/particle_accelerator/examine(mob/user) . = ..() - . += "Alt-Click to rotate it." - - -/obj/machinery/particle_accelerator/verb/rotate() - set name = "Rotate Clockwise" - set category = "Object" - set src in oview(1) + . += span_info("Alt-Click to rotate it.") - rotate_accelerator(usr) - -/obj/machinery/particle_accelerator/AltClick(mob/user) +/obj/machinery/particle_accelerator/click_alt(mob/user) rotate_accelerator(user) - + return CLICK_ACTION_SUCCESS /obj/machinery/particle_accelerator/proc/rotate_accelerator(mob/user) if(user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user)) diff --git a/code/modules/power/singularity/ratvar.dm b/code/modules/power/singularity/ratvar.dm index fb6ea35dbba8..f448ae400c09 100644 --- a/code/modules/power/singularity/ratvar.dm +++ b/code/modules/power/singularity/ratvar.dm @@ -1,4 +1,4 @@ -/obj/singularity/ratvar +/obj/singularity/god/ratvar name = "Ratvar, the Clockwork Justiciar" desc = "..." icon = 'icons/obj/512x512.dmi' @@ -14,10 +14,10 @@ consume_range = 12 gender = NEUTER -/obj/singularity/ratvar/admin_investigate_setup() +/obj/singularity/god/ratvar/admin_investigate_setup() return -/obj/singularity/ratvar/New() +/obj/singularity/god/ratvar/New() ..() set_light(15, 1, "#BE8700") to_chat(world, "ONCE AGAIN MY LIGHT SHINES AMONG THESE PATHETIC STARS") @@ -36,10 +36,10 @@ addtimer(CALLBACK(SSticker.mode, TYPE_PROC_REF(/datum/game_mode, apocalypse)), 10 SECONDS) -/obj/singularity/ratvar/update_icon_state() +/obj/singularity/god/ratvar/update_icon_state() return -/obj/singularity/ratvar/Destroy() +/obj/singularity/god/ratvar/Destroy() to_chat(world, "RATVAR HAS FALLEN") SEND_SOUND(world, 'sound/hallucinations/wail.ogg') var/datum/game_mode/gamemode = SSticker.mode @@ -51,32 +51,32 @@ to_chat(clock_mind.current, "Current goal: Slaughter the heretics!") return ..() -/obj/singularity/ratvar/attack_ghost(mob/dead/observer/user) +/obj/singularity/god/ratvar/attack_ghost(mob/dead/observer/user) var/mob/living/simple_animal/hostile/clockwork/marauder/cog = new (get_turf(src)) cog.key = user.key SSticker.mode.add_clocker(cog.mind) -/obj/singularity/ratvar/process() +/obj/singularity/god/ratvar/process() eat() move() if(prob(25)) mezzer() -/obj/singularity/ratvar/Bump(atom/bumped_atom, effect_applied = TRUE)//you dare stand before a god?! +/obj/singularity/god/ratvar/Bump(atom/bumped_atom, effect_applied = TRUE)//you dare stand before a god?! . = ..() if(.) return . godsmack(bumped_atom) -/obj/singularity/ratvar/Bumped(atom/movable/moving_atom, effect_applied = TRUE) +/obj/singularity/god/ratvar/Bumped(atom/movable/moving_atom, effect_applied = TRUE) . = ..() godsmack(moving_atom) -/obj/singularity/ratvar/proc/godsmack(atom/A) +/obj/singularity/god/ratvar/proc/godsmack(atom/A) if(istype(A,/obj/)) var/obj/O = A O.ex_act(1) @@ -86,23 +86,23 @@ var/turf/T = A T.ChangeTurf(/turf/simulated/floor/clockwork) -/obj/singularity/ratvar/mezzer() +/obj/singularity/god/ratvar/mezzer() for(var/mob/living/carbon/M in oviewers(8, src)) if(M.stat == CONSCIOUS) if(!isclocker(M)) to_chat(M, "You feel your sanity crumble away in an instant as you gaze upon [src.name]...") M.Stun(6 SECONDS) -/obj/singularity/ratvar/consume(atom/A) - A.ratvar_act() +/obj/singularity/god/ratvar/consume(atom/A) + A.ratvar_act(FALSE, src) -/obj/singularity/ratvar/ex_act() +/obj/singularity/god/ratvar/ex_act() return -/obj/singularity/ratvar/singularity_act() //handled in /obj/singularity/proc/consume +/obj/singularity/god/ratvar/singularity_act() //handled in /obj/singularity/proc/consume return -/obj/singularity/ratvar/proc/ratvar_spawn_animation() +/obj/singularity/god/ratvar/proc/ratvar_spawn_animation() icon = 'icons/obj/ratvar_spawn_anim.dmi' dir = SOUTH move_self = FALSE diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index b6b7a60e98aa..1ddf6200f077 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -100,7 +100,7 @@ return -/obj/singularity/bullet_act(obj/item/projectile/P) +/obj/singularity/bullet_act(obj/projectile/P) qdel(P) return 0 //Will there be an impact? Who knows. Will we see it? No. @@ -300,7 +300,7 @@ name = "supermatter-charged [initial(name)]" consumedSupermatter = 1 set_light(10) - if(istype(A, /obj/singularity/narsie)) + if(istype(A, /obj/singularity/god/narsie)) if(current_size == STAGE_SIX) visible_message("[SSticker.cultdat?.entity_name] is consumed by [src]!") investigate_log("consumed Nar'Sie!", INVESTIGATE_ENGINE) @@ -309,7 +309,8 @@ visible_message("[SSticker.cultdat?.entity_name] strikes down [src]!") investigate_log("has been destroyed by Nar'Sie", INVESTIGATE_ENGINE) qdel(src) - if(istype(A, /obj/singularity/ratvar)) + + if(istype(A, /obj/singularity/god/ratvar)) if(current_size == STAGE_SIX) visible_message("Rat'var is consumed by [src]!") qdel(A) @@ -497,7 +498,7 @@ distance_to_singulo = get_dist(monitor.hasprox_receiver, src) -/obj/effect/abstract/proximity_checker/singulo/proximity_check(obj/item/projectile/projectile) +/obj/effect/abstract/proximity_checker/singulo/proximity_check(obj/projectile/projectile) . = ..() if(!isprojectile(projectile)) return . @@ -520,3 +521,20 @@ projectile.damage += 10 / distance projectile.set_angle(projectile_angle) + +/obj/singularity/proc/end_deadchat_plays() + move_self = TRUE + + +/obj/singularity/deadchat_plays(mode = DEADCHAT_DEMOCRACY_MODE, cooldown = 12 SECONDS) + . = AddComponent(/datum/component/deadchat_control/cardinal_movement, mode, list(), cooldown, CALLBACK(src, TYPE_PROC_REF(/atom/movable, stop_deadchat_plays))) + + if(. == COMPONENT_INCOMPATIBLE) + return + + move_self = FALSE + + +/obj/singularity/deadchat_controlled/Initialize(mapload, starting_energy) + . = ..() + deadchat_plays(mode = DEADCHAT_DEMOCRACY_MODE) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 9c24a61409bf..d29886d0d84b 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -439,8 +439,8 @@ for(var/mob/M in viewers(src)) M.show_message("The [src.name] is making strange noises!", 3, "You hear sizzling electronics.", 2) sleep(10*pick(4,5,6,7,10,14)) - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(3, 0, src.loc) + var/datum/effect_system/fluid_spread/smoke/smoke = new + smoke.set_up(amount = 3, location = src.loc) smoke.attach(src) smoke.start() explosion(src.loc, -1, 0, 1, 3, 1, 0, cause = src) @@ -453,8 +453,8 @@ else emp_act(2) if(prob(5)) //smoke only - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(3, 0, src.loc) + var/datum/effect_system/fluid_spread/smoke/smoke = new + smoke.set_up(amount = 3, location = src.loc) smoke.attach(src) smoke.start() diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 644ba9ec05dc..8ff7699a8b3a 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -337,10 +337,12 @@ track = TRACKER_AUTO autostart = TRUE // Automatically search for connected devices -/obj/machinery/power/solar_control/Initialize() +/obj/machinery/power/solar_control/Initialize(mapload, obj/structure/computerframe) SSsun.solars |= src setup() . = ..() + if(computerframe) + qdel(computerframe) /obj/machinery/power/solar_control/proc/setup() connect_to_network() diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 2973373acc06..2588971e776c 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -269,7 +269,7 @@ //We are assuming here, that volume does not change here removed.temperature += (thermal_power / heat_capacity) - removed.temperature = max(0, removed.temperature) + removed.temperature = max(TCMB, removed.temperature) env.merge(removed) @@ -302,7 +302,7 @@ /obj/machinery/power/supermatter_shard -/obj/machinery/power/supermatter_shard/bullet_act(var/obj/item/projectile/Proj) +/obj/machinery/power/supermatter_shard/bullet_act(var/obj/projectile/Proj) var/turf/L = loc if(!istype(L)) // We don't run process() when we are in space return 0 // This stops people from being able to really power up the supermatter @@ -355,7 +355,7 @@ consume(user) -/obj/machinery/power/supermatter_shard/proc/get_integrity() +/obj/machinery/power/supermatter_shard/proc/get_internal_integrity() var/integrity = damage / explosion_point integrity = round(100 - integrity * 100) integrity = integrity < 0 ? 0 : integrity @@ -541,16 +541,16 @@ if(!air) return SUPERMATTER_ERROR - if(get_integrity() < 25) + if(get_internal_integrity() < 25) return SUPERMATTER_DELAMINATING - if(get_integrity() < 50) + if(get_internal_integrity() < 50) return SUPERMATTER_EMERGENCY - if(get_integrity() < 75) + if(get_internal_integrity() < 75) return SUPERMATTER_DANGER - if((get_integrity() < 100) || (air.temperature > CRITICAL_TEMPERATURE)) + if((get_internal_integrity() < 100) || (air.temperature > CRITICAL_TEMPERATURE)) return SUPERMATTER_WARNING if(air.temperature > (CRITICAL_TEMPERATURE * 0.8)) diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index bc9c412f1a88..22cc44d667f4 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -65,7 +65,7 @@ /obj/machinery/computer/turbine_computer name = "gas turbine control computer" - desc = "A computer to remotely control a gas turbine" + desc = "Компьютер для дистанционного управления газовой турбиной." icon_screen = "turbinecomp" icon_keyboard = "tech_key" circuit = /obj/item/circuitboard/turbine_computer diff --git a/code/modules/procedural_mapping/mapGenerator.dm b/code/modules/procedural_mapping/mapGenerator.dm index 58494fc8b451..fbdfda6ef6a0 100644 --- a/code/modules/procedural_mapping/mapGenerator.dm +++ b/code/modules/procedural_mapping/mapGenerator.dm @@ -144,7 +144,7 @@ /client/proc/debugNatureMapGenerator() set name = "Test Nature Map Generator" - set category = "Debug" + set category = "Debug.Mapping" var/datum/mapGenerator/nature/N = new() var/startInput = clean_input("Start turf of Map, (X;Y;Z)", "Map Gen Settings", "1;1;1") diff --git a/code/modules/procedural_mapping/mapGeneratorModules/helpers.dm b/code/modules/procedural_mapping/mapGeneratorModules/helpers.dm index 5a9332518723..e436b0f1fe26 100644 --- a/code/modules/procedural_mapping/mapGeneratorModules/helpers.dm +++ b/code/modules/procedural_mapping/mapGeneratorModules/helpers.dm @@ -41,3 +41,14 @@ continue return 1 return 0 + +/datum/mapGeneratorModule/bottomLayer/massdelete + spawnableAtoms = list() + spawnableTurfs = list() + +/datum/mapGeneratorModule/bottomLayer/massdelete/generate() + if(!mother) + return + for(var/V in mother.map) + var/turf/T = V + T.empty() diff --git a/code/modules/procedural_mapping/mapGenerators/cult.dm b/code/modules/procedural_mapping/mapGenerators/cult.dm new file mode 100644 index 000000000000..1a823d599ec1 --- /dev/null +++ b/code/modules/procedural_mapping/mapGenerators/cult.dm @@ -0,0 +1,31 @@ +/datum/mapGeneratorModule/bottomLayer/cultFloor + spawnableTurfs = list(/turf/simulated/floor/engine/cult = 100) + +/datum/mapGeneratorModule/border/cultWalls + spawnableTurfs = list(/turf/simulated/wall/cult = 100) + + +/datum/mapGeneratorModule/bottomLayer/clockFloor + spawnableTurfs = list(/turf/simulated/floor/clockwork = 100) + +/datum/mapGeneratorModule/border/clockWalls + spawnableTurfs = list(/turf/simulated/wall/clockwork = 100) + + +/datum/mapGenerator/cult //walls and floor only + modules = list(/datum/mapGeneratorModule/bottomLayer/cultFloor, \ + /datum/mapGeneratorModule/border/cultWalls, \ + /datum/mapGeneratorModule/bottomLayer/repressurize) + +/datum/mapGenerator/clock //walls and floor only + modules = list(/datum/mapGeneratorModule/bottomLayer/clockFloor, \ + /datum/mapGeneratorModule/border/clockWalls, \ + /datum/mapGeneratorModule/bottomLayer/repressurize) + +/datum/mapGenerator/cult/floor //floors only + modules = list(/datum/mapGeneratorModule/bottomLayer/cultFloor, \ + /datum/mapGeneratorModule/bottomLayer/repressurize) + +/datum/mapGenerator/clock/floor //floor only + modules = list(/datum/mapGeneratorModule/bottomLayer/clockFloor, \ + /datum/mapGeneratorModule/bottomLayer/repressurize) diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index a255cd29a15c..a9df96036327 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -12,7 +12,7 @@ var/casing_drop_sound = "casingdrop" //What sound should play when this ammo hits the ground var/caliber = null //Which kind of guns it can be loaded into var/projectile_type = null //The bullet type to create when New() is called - var/obj/item/projectile/BB = null //The loaded bullet + var/obj/projectile/BB = null //The loaded bullet var/pellets = 1 //Pellets for spreadshot var/variance = 0 //Variance for inaccuracy fundamental to the casing var/delay = 0 //Delay for energy weapons @@ -200,7 +200,10 @@ stored_ammo += new_casing if(new_casing.loc != src) new_casing.forceMove(src) - playsound(loc, insert_sound, 50, TRUE) + var/chosen_sound = insert_sound + if(islist(insert_sound) && length(insert_sound)) + chosen_sound = pick(insert_sound) + playsound(loc, chosen_sound, 50, TRUE) update_mat_value() return TRUE @@ -221,7 +224,10 @@ stored_ammo += new_casing if(new_casing.loc != src) new_casing.forceMove(src) - playsound(loc, replacing_sound, 50, TRUE) + var/chosen_sound = replacing_sound + if(islist(replacing_sound) && length(replacing_sound)) + chosen_sound = pick(replacing_sound) + playsound(loc, chosen_sound, 50, TRUE) update_mat_value() return TRUE @@ -268,7 +274,10 @@ return . if(!silent && user) balloon_alert(user, "[declension_ru(., "заряжен [.] патрон", "заряжено [.] патрона", "заряжено [.] патронов")]") - playsound(loc, load_sound, 50, TRUE) + var/chosen_sound = load_sound + if(islist(load_sound) && length(load_sound)) + chosen_sound = pick(load_sound) + playsound(loc, chosen_sound, 50, TRUE) I.update_appearance() I.update_equipped_item() update_appearance() @@ -287,7 +296,10 @@ var/obj/item/ammo_casing/casing = get_round() if(casing) casing.forceMove(drop_location()) - playsound(loc, remove_sound, 50, TRUE) + var/chosen_sound = remove_sound + if(islist(remove_sound) && length(remove_sound)) + chosen_sound = pick(remove_sound) + playsound(loc, chosen_sound, 50, TRUE) to_chat(user, span_notice("You have removed a round from [src]!")) update_appearance(UPDATE_ICON|UPDATE_DESC) user.put_in_hands(casing) diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index fd18d992c37f..76359873f914 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -2,7 +2,7 @@ desc = "A .357 bullet casing." materials = list(MAT_METAL = 3750) caliber = ".357" - projectile_type = /obj/item/projectile/bullet + projectile_type = /obj/projectile/bullet muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG @@ -11,33 +11,33 @@ icon_state = "r-casing" materials = list(MAT_METAL = 650) caliber = "9mm" - projectile_type = /obj/item/projectile/bullet/weakbullet4 + projectile_type = /obj/projectile/bullet/weakbullet4 /obj/item/ammo_casing/fortynr desc = "A 40nr bullet casing." materials = list(MAT_METAL = 1100) caliber = "40nr" - projectile_type = /obj/item/projectile/bullet/weakbullet3/fortynr + projectile_type = /obj/projectile/bullet/weakbullet3/fortynr /obj/item/ammo_casing/a762 desc = "A 7.62x54mm bullet casing." icon_state = "762-casing" materials = list(MAT_METAL = 4000) caliber = "7.62x54mm" - projectile_type = /obj/item/projectile/bullet + projectile_type = /obj/projectile/bullet muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_STRONG muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG /obj/item/ammo_casing/a762/enchanted materials = list(MAT_METAL = 1000) - projectile_type = /obj/item/projectile/bullet/weakbullet3 + projectile_type = /obj/projectile/bullet/weakbullet3 /obj/item/ammo_casing/ftt762 desc = "A fusty 7.62x25mm TT bullet casing." icon_state = "r-casing" materials = list(MAT_METAL = 1000) caliber = "7.62x25mm" - projectile_type = /obj/item/projectile/bullet/ftt762 + projectile_type = /obj/projectile/bullet/ftt762 muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_STRONG muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL @@ -45,7 +45,7 @@ desc = "A .50AE bullet casing." materials = list(MAT_METAL = 4000) caliber = ".50ae" //change to diffrent caliber because players got deagle in uplink - projectile_type = /obj/item/projectile/bullet + projectile_type = /obj/projectile/bullet muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG @@ -54,7 +54,7 @@ icon_state = "r-casing" materials = list(MAT_METAL = 650) caliber = ".38" - projectile_type = /obj/item/projectile/bullet/weakbullet2 + projectile_type = /obj/projectile/bullet/weakbullet2 muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL @@ -62,67 +62,67 @@ desc = "A .38 Hollow-Point bullet casing." icon_state = "rhp-casing" materials = list(MAT_METAL = 5000) - projectile_type = /obj/item/projectile/bullet/hp38 + projectile_type = /obj/projectile/bullet/hp38 /obj/item/ammo_casing/c38/invisible - projectile_type = /obj/item/projectile/bullet/weakbullet2/invisible + projectile_type = /obj/projectile/bullet/weakbullet2/invisible muzzle_flash_effect = null // invisible eh /obj/item/ammo_casing/c38/invisible/fake - projectile_type = /obj/item/projectile/bullet/weakbullet2/invisible/fake + projectile_type = /obj/projectile/bullet/weakbullet2/invisible/fake /obj/item/ammo_casing/c38/c36 desc = "A .36 bullet casing." caliber = ".36" - projectile_type = /obj/item/projectile/bullet/midbullet2 + projectile_type = /obj/projectile/bullet/midbullet2 /obj/item/ammo_casing/c10mm desc = "A 10mm bullet casing." materials = list(MAT_METAL = 1500) caliber = "10mm" - projectile_type = /obj/item/projectile/bullet/midbullet3 + projectile_type = /obj/projectile/bullet/midbullet3 muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL /obj/item/ammo_casing/c10mm/ap materials = list(MAT_METAL = 2000, MAT_SILVER = 200) - projectile_type = /obj/item/projectile/bullet/midbullet3/ap + projectile_type = /obj/projectile/bullet/midbullet3/ap /obj/item/ammo_casing/c10mm/fire materials = list(MAT_METAL = 2000, MAT_SILVER = 200, MAT_PLASMA = 300) - projectile_type = /obj/item/projectile/bullet/midbullet3/fire + projectile_type = /obj/projectile/bullet/midbullet3/fire muzzle_flash_color = LIGHT_COLOR_FIRE /obj/item/ammo_casing/c10mm/hp materials = list(MAT_METAL = 2000, MAT_SILVER = 200) - projectile_type = /obj/item/projectile/bullet/midbullet3/hp + projectile_type = /obj/projectile/bullet/midbullet3/hp /obj/item/ammo_casing/c9mm desc = "A 9mm bullet casing." caliber = "9mm" materials = list(MAT_METAL = 1000) - projectile_type = /obj/item/projectile/bullet/weakbullet3 + projectile_type = /obj/projectile/bullet/weakbullet3 muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_WEAK muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL /obj/item/ammo_casing/c9mm/ap materials = list(MAT_METAL = 1500, MAT_SILVER = 150) - projectile_type = /obj/item/projectile/bullet/armourpiercing + projectile_type = /obj/projectile/bullet/armourpiercing /obj/item/ammo_casing/c9mm/tox materials = list(MAT_METAL = 1500, MAT_SILVER = 150, MAT_URANIUM = 200) - projectile_type = /obj/item/projectile/bullet/toxinbullet + projectile_type = /obj/projectile/bullet/toxinbullet /obj/item/ammo_casing/c9mm/inc materials = list(MAT_METAL = 1500, MAT_SILVER = 150, MAT_PLASMA = 200) - projectile_type = /obj/item/projectile/bullet/incendiary/firebullet + projectile_type = /obj/projectile/bullet/incendiary/firebullet muzzle_flash_color = LIGHT_COLOR_FIRE /obj/item/ammo_casing/c46x30mm desc = "A 4.6x30mm bullet casing." materials = list(MAT_METAL = 500) caliber = "4.6x30mm" - projectile_type = /obj/item/projectile/bullet/weakbullet3/foursix + projectile_type = /obj/projectile/bullet/weakbullet3/foursix muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_WEAK muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL @@ -130,21 +130,21 @@ desc = "A 9mm TE bullet casing." materials = list(MAT_METAL = 500) caliber = "9mm TE" - projectile_type = /obj/item/projectile/bullet/weakbullet4/c9mmte + projectile_type = /obj/projectile/bullet/weakbullet4/c9mmte muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_WEAK muzzle_flash_range = MUZZLE_FLASH_RANGE_WEAK /obj/item/ammo_casing/c46x30mm/ap materials = list(MAT_METAL = 1500, MAT_SILVER = 150) - projectile_type = /obj/item/projectile/bullet/weakbullet3/foursix/ap + projectile_type = /obj/projectile/bullet/weakbullet3/foursix/ap /obj/item/ammo_casing/c46x30mm/tox materials = list(MAT_METAL = 1500, MAT_SILVER = 150, MAT_URANIUM = 200) - projectile_type = /obj/item/projectile/bullet/weakbullet3/foursix/tox + projectile_type = /obj/projectile/bullet/weakbullet3/foursix/tox /obj/item/ammo_casing/c46x30mm/inc materials = list(MAT_METAL = 1500, MAT_SILVER = 150, MAT_PLASMA = 200) - projectile_type = /obj/item/projectile/bullet/incendiary/foursix + projectile_type = /obj/projectile/bullet/incendiary/foursix muzzle_flash_color = LIGHT_COLOR_FIRE /obj/item/ammo_casing/rubber45 @@ -152,7 +152,7 @@ icon_state = "r-casing" materials = list(MAT_METAL = 650) caliber = ".45" - projectile_type = /obj/item/projectile/bullet/midbullet_r + projectile_type = /obj/projectile/bullet/midbullet_r muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL @@ -160,13 +160,13 @@ desc = "A .45 bullet casing." materials = list(MAT_METAL = 1500) caliber = ".45" - projectile_type = /obj/item/projectile/bullet/midbullet + projectile_type = /obj/projectile/bullet/midbullet muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL /obj/item/ammo_casing/c45/nostamina materials = list(MAT_METAL = 1500) - projectile_type = /obj/item/projectile/bullet/midbullet3 + projectile_type = /obj/projectile/bullet/midbullet3 /obj/item/ammo_casing/revolver/improvised name = "improvised shell" @@ -174,27 +174,27 @@ icon_state = "rev-improv-casing" materials = list(MAT_METAL = 100) caliber = ".257" - projectile_type = /obj/item/projectile/bullet/weakbullet3/c257 + projectile_type = /obj/projectile/bullet/weakbullet3/c257 muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL /obj/item/ammo_casing/revolver/improvised/phosphorus desc = "Full metal shell leaking oil and phosphorous. This is clearly an unreliable bullet." icon_state = "rev-phosphor-casing" - projectile_type = /obj/item/projectile/bullet/weakbullet3/c257/phosphorus + projectile_type = /obj/projectile/bullet/weakbullet3/c257/phosphorus /obj/item/ammo_casing/n762 desc = "A 7.62x38mm bullet casing." materials = list(MAT_METAL = 4000) caliber = "7.62x38mm" - projectile_type = /obj/item/projectile/bullet + projectile_type = /obj/projectile/bullet muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG /obj/item/ammo_casing/caseless/magspear name = "magnetic spear" desc = "A reusable spear that is typically loaded into kinetic spearguns." - projectile_type = /obj/item/projectile/bullet/reusable/magspear + projectile_type = /obj/projectile/bullet/reusable/magspear caliber = "spear" icon_state = "magspear" throwforce = 15 //still deadly when thrown @@ -207,14 +207,14 @@ caliber = "84mm" w_class = WEIGHT_CLASS_NORMAL //thats the rocket! icon_state = "84mm-he" - projectile_type = /obj/item/projectile/bullet/a84mm_he + projectile_type = /obj/projectile/bullet/a84mm_he casing_drop_sound = 'sound/weapons/gun_interactions/shotgun_fall.ogg' // better than default casing but not ideal /obj/item/ammo_casing/caseless/rocket/hedp name = "\improper PM-9HEDP" desc = "An 84mm High Explosive Dual Purpose rocket. Pointy end toward mechs and unarmed civilians." icon_state = "84mm-hedp" - projectile_type = /obj/item/projectile/bullet/a84mm_hedp + projectile_type = /obj/projectile/bullet/a84mm_hedp /obj/item/ammo_casing/shotgun name = "shotgun slug" @@ -223,7 +223,7 @@ materials = list(MAT_METAL = 4000) casing_drop_sound = 'sound/weapons/gun_interactions/shotgun_fall.ogg' caliber = ".12" - projectile_type = /obj/item/projectile/bullet/slug + projectile_type = /obj/projectile/bullet/slug muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_STRONG muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG @@ -231,29 +231,37 @@ name = "buckshot shell" desc = "A 12 gauge buckshot shell." icon_state = "buckshotshell" - projectile_type = /obj/item/projectile/bullet/pellet + projectile_type = /obj/projectile/bullet/pellet pellets = 6 variance = 17 /obj/item/ammo_casing/shotgun/assassination name = "assassination shell" - desc = "A specialist shrapnel shell that has been laced with a silencing toxin." + desc = "Специальная гильза для шрапнели, обработанная глушащим токсином." + ru_names = list( + NOMINATIVE = "патрон для убийства", + GENITIVE = "патрона для убийства", + DATIVE = "патрону для убийства", + ACCUSATIVE = "патрон для убийства", + INSTRUMENTAL = "патроном для убийства", + PREPOSITIONAL = "патроне для убийства" + ) materials = list(MAT_METAL = 1500, MAT_GLASS = 200) - projectile_type = /obj/item/projectile/bullet/pellet/assassination + projectile_type = /obj/projectile/bullet/pellet/assassination muzzle_flash_effect = null icon_state = "buckshotshell" pellets = 6 variance = 15 /obj/item/ammo_casing/shotgun/buckshot/nuclear - projectile_type = /obj/item/projectile/bullet/pellet/nuclear + projectile_type = /obj/projectile/bullet/pellet/nuclear /obj/item/ammo_casing/shotgun/rubbershot name = "rubber shot" desc = "A shotgun casing filled with densely-packed rubber balls, used to incapacitate crowds from a distance." icon_state = "rubbershotshell" materials = list(MAT_METAL = 1000) - projectile_type = /obj/item/projectile/bullet/pellet/rubber + projectile_type = /obj/projectile/bullet/pellet/rubber pellets = 6 variance = 17 @@ -263,7 +271,7 @@ icon_state = "rubbershotshell" container_type = OPENCONTAINER materials = list(MAT_METAL = 500, MAT_GLASS = 200) - projectile_type = /obj/item/projectile/bullet/dart + projectile_type = /obj/projectile/bullet/dart muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL can_be_box_inserted = FALSE @@ -279,20 +287,20 @@ desc = "A weak beanbag slug for riot control." icon_state = "beanbagshell" materials = list(MAT_METAL = 1000) - projectile_type = /obj/item/projectile/bullet/weakbullet + projectile_type = /obj/projectile/bullet/weakbullet muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL /obj/item/ammo_casing/shotgun/beanbag/fake description_antag = "Специальный патрон для усыпления жертв. Крайне эффективен против целей с алкоголем внутри. Любой стан по противнику после выстрела дополнительно приводит ко сну, не позволяя ему кричать о помощи." - projectile_type = /obj/item/projectile/bullet/weakbullet/booze + projectile_type = /obj/projectile/bullet/weakbullet/booze /obj/item/ammo_casing/shotgun/stunslug name = "taser slug" desc = "A stunning taser slug." icon_state = "stunslugshell" materials = list(MAT_METAL = 250) - projectile_type = /obj/item/projectile/bullet/stunshot + projectile_type = /obj/projectile/bullet/stunshot muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL muzzle_flash_color = "#FFFF00" @@ -301,13 +309,13 @@ name = "meteorshot shell" desc = "A shotgun shell rigged with CMC technology, which launches a massive slug when fired." icon_state = "meteorshotshell" - projectile_type = /obj/item/projectile/bullet/meteorshot + projectile_type = /obj/projectile/bullet/meteorshot /obj/item/ammo_casing/shotgun/breaching name = "breaching shell" desc = "An economic version of the meteorshot, utilizing similar technologies. Great for busting down doors." icon_state = "meteorshotshell" - projectile_type = /obj/item/projectile/bullet/meteorshot/weak + projectile_type = /obj/projectile/bullet/meteorshot/weak /obj/item/ammo_casing/shotgun/pulseslug name = "pulse slug" @@ -315,33 +323,33 @@ energy blast. While the heat and power drain limit it to one use, it can still allow an operator to engage targets that ballistic ammunition \ would have difficulty with." icon_state = "pulseslugshell" - projectile_type = /obj/item/projectile/beam/pulse/shot + projectile_type = /obj/projectile/beam/pulse/shot muzzle_flash_color = LIGHT_COLOR_DARKBLUE /obj/item/ammo_casing/shotgun/incendiary name = "incendiary slug" desc = "An incendiary-coated shotgun slug." icon_state = "incendiaryshell" - projectile_type = /obj/item/projectile/bullet/incendiary/shell + projectile_type = /obj/projectile/bullet/incendiary/shell muzzle_flash_color = LIGHT_COLOR_FIRE /obj/item/ammo_casing/shotgun/frag12 name = "FRAG-12 slug" desc = "A high explosive breaching round for a 12 gauge shotgun." icon_state = "frag12shell" - projectile_type = /obj/item/projectile/bullet/frag12 + projectile_type = /obj/projectile/bullet/frag12 /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath name = "dragonsbreath shell" desc = "A shotgun shell which fires a spread of incendiary pellets." icon_state = "dragonsbreathshell" - projectile_type = /obj/item/projectile/bullet/incendiary/shell/dragonsbreath + projectile_type = /obj/projectile/bullet/incendiary/shell/dragonsbreath pellets = 4 variance = 25 muzzle_flash_color = LIGHT_COLOR_FIRE /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath/nuclear - projectile_type = /obj/item/projectile/bullet/incendiary/shell/dragonsbreath/nuclear + projectile_type = /obj/projectile/bullet/incendiary/shell/dragonsbreath/nuclear pellets = 6 variance = 20 @@ -350,7 +358,7 @@ desc = "An advanced shotgun shell which uses a subspace ansible crystal to produce an effect similar to a standard ion rifle. \ The unique properties of the crystal splot the pulse into a spread of individually weaker bolts." icon_state = "ionshell" - projectile_type = /obj/item/projectile/ion/weak + projectile_type = /obj/projectile/ion/weak pellets = 4 variance = 35 muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL @@ -361,7 +369,7 @@ name = "laser slug" desc = "An advanced shotgun shell that uses a micro laser to replicate the effects of a laser weapon in a ballistic package." icon_state = "laserslugshell" - projectile_type = /obj/item/projectile/beam/laser/slug + projectile_type = /obj/projectile/beam/laser/slug muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL muzzle_flash_color = LIGHT_COLOR_DARKRED @@ -370,7 +378,7 @@ name = "laser shot" desc = "An advanced shotgun shell that uses a micro lasers to replicate the effects of a buckshot in laser appearance." icon_state = "lasershotshell" - projectile_type = /obj/item/projectile/beam/laser/shot + projectile_type = /obj/projectile/beam/laser/shot pellets = 6 variance = 17 muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL @@ -381,7 +389,7 @@ name = "bioterror shell" desc = "A shotgun shell filled with deadly toxins." icon_state = "bioterrorshell" - projectile_type = /obj/item/projectile/bullet/pellet/bioterror + projectile_type = /obj/projectile/bullet/pellet/bioterror pellets = 4 variance = 17 @@ -390,7 +398,7 @@ desc = "A tranquilizer round used to subdue individuals utilizing stimulants." icon_state = "tranquilizershell" materials = list(MAT_METAL = 500, MAT_GLASS = 200) - projectile_type = /obj/item/projectile/bullet/dart/syringe/tranquilizer + projectile_type = /obj/projectile/bullet/dart/syringe/tranquilizer muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL @@ -398,7 +406,7 @@ name = "flechette" desc = "A shotgun casing filled with tiny steel darts, used to penetrate armor. Beehive incoming!" icon_state = "flechetteshell" - projectile_type = /obj/item/projectile/bullet/pellet/flechette + projectile_type = /obj/projectile/bullet/pellet/flechette pellets = 4 variance = 13 @@ -407,7 +415,7 @@ desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards." icon_state = "improvisedshell" materials = list(MAT_METAL = 250) - projectile_type = /obj/item/projectile/bullet/pellet/weak + projectile_type = /obj/projectile/bullet/pellet/weak pellets = 10 variance = 20 muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL @@ -417,7 +425,7 @@ name = "overloaded improvised shell" desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards. This one has been packed with even more \ propellant. It's like playing russian roulette, with a shotgun." - projectile_type = /obj/item/projectile/bullet/pellet/overload + projectile_type = /obj/projectile/bullet/pellet/overload pellets = 4 variance = 40 muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG @@ -433,21 +441,21 @@ desc = "A 5.56mm bullet casing." materials = list(MAT_METAL = 3250) caliber = "5.56mm" - projectile_type = /obj/item/projectile/bullet/heavybullet + projectile_type = /obj/projectile/bullet/heavybullet muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL /obj/item/ammo_casing/a545 desc = "A 5.45x39mm bullet casing." caliber = "5.45x39mm" - projectile_type = /obj/item/projectile/bullet/midbullet3 + projectile_type = /obj/projectile/bullet/midbullet3 muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL /obj/item/ammo_casing/a545/fusty desc = "A fusty 5.45x39mm bullet casing." materials = list(MAT_METAL = 1000) - projectile_type = /obj/item/projectile/bullet/f545 + projectile_type = /obj/projectile/bullet/f545 muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_STRONG muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL @@ -474,7 +482,7 @@ desc = "A .75 bullet casing." caliber = ".75" materials = list(MAT_METAL = 8000) - projectile_type = /obj/item/projectile/bullet/gyro + projectile_type = /obj/projectile/bullet/gyro muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_STRONG muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG @@ -484,7 +492,7 @@ icon_state = "40mmHE" materials = list(MAT_METAL = 8000) caliber = "40mm" - projectile_type = /obj/item/projectile/bullet/a40mm + projectile_type = /obj/projectile/bullet/a40mm muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL @@ -495,7 +503,7 @@ icon_state = "foamdart" materials = list(MAT_METAL = 10) caliber = "foam_force" - projectile_type = /obj/item/projectile/bullet/reusable/foam_dart + projectile_type = /obj/projectile/bullet/reusable/foam_dart muzzle_flash_effect = null var/modified = FALSE harmful = FALSE @@ -520,7 +528,7 @@ /obj/item/ammo_casing/caseless/foam_dart/attackby(obj/item/I, mob/user, params) if(is_pen(I)) add_fingerprint(user) - var/obj/item/projectile/bullet/reusable/foam_dart/bullet = BB + var/obj/projectile/bullet/reusable/foam_dart/bullet = BB if(!bullet) to_chat(user, span_warning("The [name] has no bullet.")) return ATTACK_CHAIN_PROCEED @@ -562,7 +570,7 @@ /obj/item/ammo_casing/caseless/foam_dart/attack_self(mob/living/user) - var/obj/item/projectile/bullet/reusable/foam_dart/FD = BB + var/obj/projectile/bullet/reusable/foam_dart/FD = BB if(FD.pen) FD.damage = initial(FD.damage) FD.nodamage = initial(FD.nodamage) @@ -575,7 +583,7 @@ desc = "Whose smart idea was it to use toys as crowd control? Ages 18 and up." icon_state = "foamdart_riot" materials = list(MAT_METAL = 650) - projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/riot + projectile_type = /obj/projectile/bullet/reusable/foam_dart/riot /obj/item/ammo_casing/caseless/foam_dart/sniper name = "foam sniper dart" @@ -583,7 +591,7 @@ icon_state = "foamdartsniper" materials = list(MAT_METAL = 20) caliber = "foam_force_sniper" - projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/sniper + projectile_type = /obj/projectile/bullet/reusable/foam_dart/sniper /obj/item/ammo_casing/caseless/foam_dart/sniper/update_icon_state() @@ -608,13 +616,13 @@ icon_state = "foamdartsniper_riot" materials = list(MAT_METAL = 1800) caliber = "foam_force_sniper" - projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/sniper/riot + projectile_type = /obj/projectile/bullet/reusable/foam_dart/sniper/riot /obj/item/ammo_casing/cap desc = "A cap for children toys." materials = list(MAT_METAL = 10) caliber = "cap" - projectile_type = /obj/item/projectile/bullet/cap + projectile_type = /obj/projectile/bullet/cap muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL @@ -623,7 +631,7 @@ icon_state = "lasercasing" materials = list(MAT_METAL = 2000, MAT_PLASMA = 200) caliber = "laser" - projectile_type = /obj/item/projectile/beam/laser + projectile_type = /obj/projectile/beam/laser muzzle_flash_effect = /obj/effect/temp_visual/target_angled/muzzle_flash/energy muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_WEAK muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm index ad2281606069..c013870a1074 100644 --- a/code/modules/projectiles/ammunition/boxes.dm +++ b/code/modules/projectiles/ammunition/boxes.dm @@ -153,7 +153,7 @@ icon_state = "10mmbox" origin_tech = "combat=2" ammo_type = /obj/item/ammo_casing/c10mm - max_ammo = 20 + max_ammo = 30 /obj/item/ammo_box/fortynr name = "ammo box 40N&R" diff --git a/code/modules/projectiles/ammunition/energy.dm b/code/modules/projectiles/ammunition/energy.dm index 4f961b593bff..c7b577c9a967 100644 --- a/code/modules/projectiles/ammunition/energy.dm +++ b/code/modules/projectiles/ammunition/energy.dm @@ -2,7 +2,7 @@ name = "energy weapon lens" desc = "The part of the gun that makes the laser go pew" caliber = "energy" - projectile_type = /obj/item/projectile/energy + projectile_type = /obj/projectile/energy fire_sound = 'sound/weapons/gunshots/1laser10.ogg' muzzle_flash_effect = /obj/effect/temp_visual/target_angled/muzzle_flash/energy leaves_residue = FALSE @@ -14,15 +14,19 @@ var/fluff_select_name /obj/item/ammo_casing/energy/laser - projectile_type = /obj/item/projectile/beam/laser + projectile_type = /obj/projectile/beam/laser muzzle_flash_color = LIGHT_COLOR_DARKRED select_name = "kill" +/obj/item/ammo_casing/energy/laser/light + projectile_type = /obj/projectile/beam/laser/light + delay = 0.9 + /obj/item/ammo_casing/energy/laser/cyborg //to balance cyborg energy cost seperately e_cost = 250 /obj/item/ammo_casing/energy/lasergun - projectile_type = /obj/item/projectile/beam/laser + projectile_type = /obj/projectile/beam/laser muzzle_flash_color = LIGHT_COLOR_DARKRED e_cost = 65 select_name = "kill" @@ -34,62 +38,62 @@ e_cost = 83 /obj/item/ammo_casing/energy/laser/practice - projectile_type = /obj/item/projectile/beam/practice + projectile_type = /obj/projectile/beam/practice select_name = "practice" harmful = FALSE fire_sound = 'sound/weapons/gunshots/1retrolaser.ogg' /obj/item/ammo_casing/energy/laser/scatter - projectile_type = /obj/item/projectile/beam/scatter + projectile_type = /obj/projectile/beam/scatter pellets = 5 variance = 25 select_name = "scatter" /obj/item/ammo_casing/energy/laser/heavy - projectile_type = /obj/item/projectile/beam/laser/heavylaser + projectile_type = /obj/projectile/beam/laser/heavylaser select_name = "anti-vehicle" fire_sound = 'sound/weapons/gunshots/1pulse2.ogg' /obj/item/ammo_casing/energy/laser/pulse - projectile_type = /obj/item/projectile/beam/pulse + projectile_type = /obj/projectile/beam/pulse muzzle_flash_color = LIGHT_COLOR_DARKBLUE e_cost = 200 select_name = "DESTROY" fire_sound = 'sound/weapons/gunshots/1pulse2.ogg' /obj/item/ammo_casing/energy/laser/scatter/pulse - projectile_type = /obj/item/projectile/beam/pulse + projectile_type = /obj/projectile/beam/pulse e_cost = 200 select_name = "ANNIHILATE" fire_sound = 'sound/weapons/gunshots/1pulse2.ogg' /obj/item/ammo_casing/energy/laser/bluetag - projectile_type = /obj/item/projectile/beam/lasertag/bluetag + projectile_type = /obj/projectile/beam/lasertag/bluetag muzzle_flash_color = LIGHT_COLOR_BLUE select_name = "bluetag" harmful = FALSE fire_sound = 'sound/weapons/gunshots/1retrolaser.ogg' /obj/item/ammo_casing/energy/laser/redtag - projectile_type = /obj/item/projectile/beam/lasertag/redtag + projectile_type = /obj/projectile/beam/lasertag/redtag select_name = "redtag" harmful = FALSE fire_sound = 'sound/weapons/gunshots/1retrolaser.ogg' /obj/item/ammo_casing/energy/xray - projectile_type = /obj/item/projectile/beam/xray + projectile_type = /obj/projectile/beam/xray muzzle_flash_color = LIGHT_COLOR_GREEN delay = 11 e_cost = 100 fire_sound = 'sound/weapons/gunshots/1xray.ogg' /obj/item/ammo_casing/energy/immolator - projectile_type = /obj/item/projectile/beam/immolator + projectile_type = /obj/projectile/beam/immolator fire_sound = 'sound/weapons/gunshots/1xray.ogg' e_cost = 125 /obj/item/ammo_casing/energy/immolator/strong - projectile_type = /obj/item/projectile/beam/immolator/strong + projectile_type = /obj/projectile/beam/immolator/strong e_cost = 50 select_name = "precise" @@ -98,7 +102,7 @@ e_cost = 250 // 5x that of the standard laser, for 2.25x the damage (if 1/1 shots hit) plus ignite. Not energy-efficient, but can be used for sniping. /obj/item/ammo_casing/energy/immolator/scatter - projectile_type = /obj/item/projectile/beam/immolator/weak + projectile_type = /obj/projectile/beam/immolator/weak e_cost = 50 pellets = 6 variance = 25 @@ -109,7 +113,7 @@ e_cost = 250 // 5x that of the standard laser, for 7.5x the damage (if 6/6 shots hit) plus ignite. Efficient only if you hit with at least 4/6 of the shots. /obj/item/ammo_casing/energy/electrode - projectile_type = /obj/item/projectile/energy/electrode + projectile_type = /obj/projectile/energy/electrode muzzle_flash_color = "#FFFF00" select_name = "stun" fire_sound = 'sound/weapons/gunshots/1taser.ogg' @@ -118,7 +122,7 @@ harmful = FALSE /obj/item/ammo_casing/energy/electrode/advanced //admin-bus only, k? dont give this thing to 100 year old Charlie crew or other ghost role - projectile_type = /obj/item/projectile/energy/electrode/advanced + projectile_type = /obj/projectile/energy/electrode/advanced /obj/item/ammo_casing/energy/electrode/gun fire_sound = 'sound/weapons/gunshots/gunshot.ogg' @@ -131,20 +135,20 @@ e_cost = 150 /obj/item/ammo_casing/energy/ion - projectile_type = /obj/item/projectile/ion + projectile_type = /obj/projectile/ion muzzle_flash_color = LIGHT_COLOR_LIGHTBLUE delay = 0.4 SECONDS select_name = "ion" fire_sound = 'sound/weapons/ionrifle.ogg' /obj/item/ammo_casing/energy/declone - projectile_type = /obj/item/projectile/energy/declone + projectile_type = /obj/projectile/energy/declone muzzle_flash_color = LIGHT_COLOR_GREEN select_name = "declone" fire_sound = 'sound/weapons/gunshots/1declone.ogg' /obj/item/ammo_casing/energy/mindflayer - projectile_type = /obj/item/projectile/beam/mindflayer + projectile_type = /obj/projectile/beam/mindflayer select_name = "MINDFUCK" fire_sound = 'sound/weapons/laser.ogg' @@ -157,26 +161,26 @@ name = "alpha" select_name = "floraalpha" fire_sound = 'sound/weapons/gunshots/1declone.ogg' - projectile_type = /obj/item/projectile/energy/floraalpha + projectile_type = /obj/projectile/energy/floraalpha harmful = TRUE click_cooldown_override = 2 e_cost = 150 /obj/item/ammo_casing/energy/flora/alpha/emag - projectile_type = /obj/item/projectile/energy/floraalpha/emag + projectile_type = /obj/projectile/energy/floraalpha/emag e_cost = 225 /obj/item/ammo_casing/energy/flora/beta name = "beta" select_name = "florabeta" - projectile_type = /obj/item/projectile/energy/florabeta + projectile_type = /obj/projectile/energy/florabeta click_cooldown_override = 1 e_cost = 75 /obj/item/ammo_casing/energy/flora/gamma name = "gamma" select_name = "floragamma" - projectile_type = /obj/item/projectile/energy/floragamma + projectile_type = /obj/projectile/energy/floragamma delay = 10 e_cost = 675 @@ -187,7 +191,7 @@ . = ..() /obj/item/ammo_casing/energy/temp - projectile_type = /obj/item/projectile/temp + projectile_type = /obj/projectile/temp fire_sound = 'sound/weapons/gunshots/1laser7.ogg' var/temp = 300 @@ -199,13 +203,13 @@ ..(temp) /obj/item/ammo_casing/energy/meteor - projectile_type = /obj/item/projectile/meteor + projectile_type = /obj/projectile/meteor muzzle_flash_effect = /obj/effect/temp_visual/target_angled/muzzle_flash muzzle_flash_color = null select_name = "goddamn meteor" /obj/item/ammo_casing/energy/disabler - projectile_type = /obj/item/projectile/beam/disabler + projectile_type = /obj/projectile/beam/disabler muzzle_flash_color = LIGHT_COLOR_LIGHTBLUE select_name = "disable" e_cost = 50 @@ -221,7 +225,7 @@ e_cost = 40 /obj/item/ammo_casing/energy/plasma - projectile_type = /obj/item/projectile/plasma + projectile_type = /obj/projectile/plasma muzzle_flash_color = LIGHT_COLOR_PURPLE select_name = "plasma burst" fire_sound = 'sound/weapons/pulse.ogg' @@ -229,16 +233,16 @@ e_cost = 50 //30 shots /obj/item/ammo_casing/energy/plasma/adv - projectile_type = /obj/item/projectile/plasma/adv + projectile_type = /obj/projectile/plasma/adv delay = 10 e_cost = 25 //60 shots /obj/item/ammo_casing/energy/plasma/adv/mega e_cost = 20 //75 shots - projectile_type = /obj/item/projectile/plasma/adv/mega + projectile_type = /obj/projectile/plasma/adv/mega /obj/item/ammo_casing/energy/plasma/shotgun - projectile_type = /obj/item/projectile/plasma/shotgun + projectile_type = /obj/projectile/plasma/shotgun delay = 15 e_cost = 75 //20 shots pellets = 5 @@ -246,10 +250,10 @@ /obj/item/ammo_casing/energy/plasma/shotgun/mega e_cost = 50 //30 shots - projectile_type = /obj/item/projectile/plasma/adv/mega/shotgun + projectile_type = /obj/projectile/plasma/adv/mega/shotgun /obj/item/ammo_casing/energy/wormhole - projectile_type = /obj/item/projectile/beam/wormhole + projectile_type = /obj/projectile/beam/wormhole muzzle_flash_color = "#33CCFF" delay = 10 e_cost = 100 @@ -258,12 +262,12 @@ harmful = FALSE /obj/item/ammo_casing/energy/wormhole/orange - projectile_type = /obj/item/projectile/beam/wormhole/orange + projectile_type = /obj/projectile/beam/wormhole/orange muzzle_flash_color = "#FF6600" select_name = "orange" /obj/item/ammo_casing/energy/bolt - projectile_type = /obj/item/projectile/energy/bolt + projectile_type = /obj/projectile/energy/bolt muzzle_flash_color = null muzzle_flash_effect = /obj/effect/temp_visual/target_angled/muzzle_flash select_name = "bolt" @@ -271,14 +275,14 @@ fire_sound = 'sound/weapons/gunshots/1heavysuppres.ogg' /obj/item/ammo_casing/energy/bolt/bolttoy - projectile_type = /obj/item/projectile/energy/bolttoy + projectile_type = /obj/projectile/energy/bolttoy select_name = "bolttoy" /obj/item/ammo_casing/energy/bolt/large - projectile_type = /obj/item/projectile/energy/bolt/large + projectile_type = /obj/projectile/energy/bolt/large select_name = "heavy bolt" -/obj/item/projectile/energy/bsg +/obj/projectile/energy/bsg name = "Сфера чистой БС энергии" icon_state = "bluespace" impact_effect_type = /obj/effect/temp_visual/bsg_kaboom @@ -291,23 +295,23 @@ /obj/item/ammo_casing/energy/bsg/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") ..() - var/obj/item/projectile/energy/bsg/P = BB - addtimer(CALLBACK(P, TYPE_PROC_REF(/obj/item/projectile/energy/bsg, make_chain), P, user), 1) + var/obj/projectile/energy/bsg/P = BB + addtimer(CALLBACK(P, TYPE_PROC_REF(/obj/projectile/energy/bsg, make_chain), P, user), 1) -/obj/item/projectile/energy/bsg/proc/make_chain(obj/item/projectile/P, mob/user) +/obj/projectile/energy/bsg/proc/make_chain(obj/projectile/P, mob/user) P.chain = P.Beam(user, icon_state = "sm_arc_supercharged", icon = 'icons/effects/beam.dmi', time = 10 SECONDS, maxdistance = 30) -/obj/item/projectile/energy/bsg/on_hit(atom/target) +/obj/projectile/energy/bsg/on_hit(atom/target) . = ..() kaboom() qdel(src) -/obj/item/projectile/energy/bsg/on_range() +/obj/projectile/energy/bsg/on_range() kaboom() new /obj/effect/temp_visual/bsg_kaboom(loc) ..() -/obj/item/projectile/energy/bsg/proc/kaboom() +/obj/projectile/energy/bsg/proc/kaboom() playsound(src, 'sound/weapons/bsg_explode.ogg', 75, TRUE) for(var/mob/living/M in hearers(7, src)) //No stuning people with thermals through a wall. var/floored = FALSE @@ -334,24 +338,24 @@ M.apply_damage(rand(1, 5), BURN) /obj/item/ammo_casing/energy/dart - projectile_type = /obj/item/projectile/energy/dart + projectile_type = /obj/projectile/energy/dart fire_sound = 'sound/weapons/genhit.ogg' e_cost = 500 select_name = "toxic dart" /obj/item/ammo_casing/energy/instakill - projectile_type = /obj/item/projectile/beam/instakill + projectile_type = /obj/projectile/beam/instakill muzzle_flash_color = LIGHT_COLOR_PURPLE e_cost = 0 select_name = "DESTROY" fire_sound = 'sound/weapons/marauder.ogg' /obj/item/ammo_casing/energy/instakill/blue - projectile_type = /obj/item/projectile/beam/instakill/blue + projectile_type = /obj/projectile/beam/instakill/blue muzzle_flash_color = LIGHT_COLOR_DARKBLUE /obj/item/ammo_casing/energy/instakill/red - projectile_type = /obj/item/projectile/beam/instakill/red + projectile_type = /obj/projectile/beam/instakill/red muzzle_flash_color = LIGHT_COLOR_DARKRED /obj/item/ammo_casing/energy/shock_revolver @@ -359,36 +363,36 @@ e_cost = 200 select_name = "lightning beam" muzzle_flash_color = LIGHT_COLOR_FADEDPURPLE - projectile_type = /obj/item/projectile/energy/shock_revolver + projectile_type = /obj/projectile/energy/shock_revolver /obj/item/ammo_casing/energy/toxplasma - projectile_type = /obj/item/projectile/energy/toxplasma + projectile_type = /obj/projectile/energy/toxplasma muzzle_flash_color = LIGHT_COLOR_FADEDPURPLE fire_sound = 'sound/weapons/gunshots/1plasma.ogg' select_name = "plasma dart" /obj/item/ammo_casing/energy/weak_plasma - projectile_type = /obj/item/projectile/energy/weak_plasma + projectile_type = /obj/projectile/energy/weak_plasma e_cost = 60 // With no charging, 500 damage from 25 shots. muzzle_flash_color = LIGHT_COLOR_FADEDPURPLE fire_sound = 'sound/weapons/gunshots/1plasma.ogg' select_name = null //If the select name is null, it does not send a message of switching modes to the user, important on the pistol. /obj/item/ammo_casing/energy/charged_plasma - projectile_type = /obj/item/projectile/energy/charged_plasma + projectile_type = /obj/projectile/energy/charged_plasma e_cost = 0 //Charge is used when you charge the gun. Prevents issues. muzzle_flash_color = LIGHT_COLOR_FADEDPURPLE fire_sound = 'sound/weapons/marauder.ogg' //Should be different enough to get attention select_name = null /obj/item/ammo_casing/energy/clown - projectile_type = /obj/item/projectile/clown + projectile_type = /obj/projectile/clown muzzle_flash_effect = null fire_sound = 'sound/weapons/gunshots/gunshot_smg.ogg' select_name = "clown" /obj/item/ammo_casing/energy/bsg - projectile_type = /obj/item/projectile/energy/bsg + projectile_type = /obj/projectile/energy/bsg muzzle_flash_color = LIGHT_COLOR_DARKBLUE muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_STRONG @@ -398,14 +402,14 @@ delay = 4 SECONDS //Looooooong cooldown // Used to be 10 seconds, has been rebalanced to be normal firing rate now /obj/item/ammo_casing/energy/sniper - projectile_type = /obj/item/projectile/beam/sniper + projectile_type = /obj/projectile/beam/sniper muzzle_flash_color = LIGHT_COLOR_PINK fire_sound = 'sound/weapons/marauder.ogg' delay = 50 select_name = "snipe" /obj/item/ammo_casing/energy/podsniper/disabler - projectile_type = /obj/item/projectile/beam/podsniper/disabler + projectile_type = /obj/projectile/beam/podsniper/disabler muzzle_flash_color = LIGHT_COLOR_LIGHTBLUE fire_sound = 'sound/weapons/LSR-39_disabler.ogg' delay = 3 SECONDS @@ -413,7 +417,7 @@ select_name = "disable" /obj/item/ammo_casing/energy/podsniper/laser - projectile_type = /obj/item/projectile/beam/podsniper/laser + projectile_type = /obj/projectile/beam/podsniper/laser muzzle_flash_color = LIGHT_COLOR_DARKRED fire_sound = 'sound/weapons/LSR-39_kill.ogg' delay = 3 SECONDS @@ -421,7 +425,7 @@ select_name = "kill" /obj/item/ammo_casing/energy/teleport - projectile_type = /obj/item/projectile/energy/teleport + projectile_type = /obj/projectile/energy/teleport muzzle_flash_color = LIGHT_COLOR_LIGHTBLUE fire_sound = 'sound/weapons/wave.ogg' e_cost = 250 @@ -436,7 +440,7 @@ ..(teleport_target) /obj/item/ammo_casing/energy/mimic - projectile_type = /obj/item/projectile/mimic + projectile_type = /obj/projectile/mimic muzzle_flash_effect = null fire_sound = 'sound/weapons/bite.ogg' select_name = "gun mimic" @@ -450,7 +454,7 @@ ..(mimic_type) /obj/item/ammo_casing/energy/dominator/stun - projectile_type = /obj/item/projectile/energy/electrode/dominator + projectile_type = /obj/projectile/energy/electrode/dominator muzzle_flash_color = LIGHT_COLOR_LIGHTBLUE select_name = "taser" fluff_select_name = "stun" @@ -460,7 +464,7 @@ harmful = FALSE /obj/item/ammo_casing/energy/dominator/paralyzer - projectile_type = /obj/item/projectile/beam/dominator/paralyzer + projectile_type = /obj/projectile/beam/dominator/paralyzer muzzle_flash_color = LIGHT_COLOR_LIGHTBLUE select_name = "disable" fluff_select_name = "non-lethal paralyzer" @@ -469,7 +473,7 @@ harmful = FALSE /obj/item/ammo_casing/energy/dominator/eliminator - projectile_type = /obj/item/projectile/beam/dominator/eliminator + projectile_type = /obj/projectile/beam/dominator/eliminator muzzle_flash_color = LIGHT_COLOR_DARKBLUE select_name = "lethal" fluff_select_name = "lethal-eliminator" @@ -477,7 +481,7 @@ e_cost = 200 /obj/item/ammo_casing/energy/dominator/slaughter - projectile_type = /obj/item/projectile/beam/dominator/slaughter + projectile_type = /obj/projectile/beam/dominator/slaughter muzzle_flash_color = LIGHT_COLOR_DARKBLUE select_name = "destroy" fluff_select_name = "execution-slaughter" @@ -486,7 +490,7 @@ delay = 30 /obj/item/ammo_casing/energy/emittergun - projectile_type = /obj/item/projectile/beam/emitter + projectile_type = /obj/projectile/beam/emitter e_cost = 200 fire_sound = 'sound/weapons/emitter.ogg' delay = 25 @@ -494,7 +498,7 @@ select_name = "emitter" /obj/item/ammo_casing/energy/emittergunborg - projectile_type = /obj/item/projectile/beam/emitter + projectile_type = /obj/projectile/beam/emitter fire_sound = 'sound/weapons/emitter.ogg' delay = 30 muzzle_flash_color = LIGHT_COLOR_GREEN diff --git a/code/modules/projectiles/ammunition/special.dm b/code/modules/projectiles/ammunition/special.dm index 520df521597c..5d69037e409d 100644 --- a/code/modules/projectiles/ammunition/special.dm +++ b/code/modules/projectiles/ammunition/special.dm @@ -1,53 +1,53 @@ /obj/item/ammo_casing/magic name = "magic casing" desc = "I didn't even know magic needed ammo..." - projectile_type = /obj/item/projectile/magic + projectile_type = /obj/projectile/magic muzzle_flash_color = COLOR_BLUE_GRAY muzzle_flash_effect = /obj/effect/temp_visual/target_angled/muzzle_flash/magic leaves_residue = 0 /obj/item/ammo_casing/magic/change - projectile_type = /obj/item/projectile/magic/change + projectile_type = /obj/projectile/magic/change /obj/item/ammo_casing/magic/animate - projectile_type = /obj/item/projectile/magic/animate + projectile_type = /obj/projectile/magic/animate /obj/item/ammo_casing/magic/heal - projectile_type = /obj/item/projectile/magic/resurrection + projectile_type = /obj/projectile/magic/resurrection harmful = FALSE /obj/item/ammo_casing/magic/death - projectile_type = /obj/item/projectile/magic/death + projectile_type = /obj/projectile/magic/death /obj/item/ammo_casing/magic/teleport - projectile_type = /obj/item/projectile/magic/teleport + projectile_type = /obj/projectile/magic/teleport harmful = FALSE /obj/item/ammo_casing/magic/door - projectile_type = /obj/item/projectile/magic/door + projectile_type = /obj/projectile/magic/door harmful = FALSE /obj/item/ammo_casing/magic/fireball - projectile_type = /obj/item/projectile/magic/fireball + projectile_type = /obj/projectile/magic/fireball /obj/item/ammo_casing/magic/chaos - projectile_type = /obj/item/projectile/magic + projectile_type = /obj/projectile/magic /obj/item/ammo_casing/magic/spellblade - projectile_type = /obj/item/projectile/magic/spellblade + projectile_type = /obj/projectile/magic/spellblade /obj/item/ammo_casing/magic/slipping - projectile_type = /obj/item/projectile/magic/slipping + projectile_type = /obj/projectile/magic/slipping /obj/item/ammo_casing/magic/chaos/newshot() - projectile_type = pick(typesof(/obj/item/projectile/magic)) + projectile_type = pick(typesof(/obj/projectile/magic)) ..() /obj/item/ammo_casing/magic/arcane_barrage - projectile_type = /obj/item/projectile/magic/arcane_barrage + projectile_type = /obj/projectile/magic/arcane_barrage /obj/item/ammo_casing/magic/forcebolt - projectile_type = /obj/item/projectile/forcebolt + projectile_type = /obj/projectile/forcebolt /obj/item/ammo_casing/syringegun name = "syringe gun spring" @@ -56,7 +56,7 @@ muzzle_flash_effect = null /obj/item/ammo_casing/energy/c3dbullet - projectile_type = /obj/item/projectile/bullet/midbullet3 + projectile_type = /obj/projectile/bullet/midbullet3 select_name = "spraydown" fire_sound = 'sound/weapons/gunshots/1mg2.ogg' e_cost = 20 diff --git a/code/modules/projectiles/firing.dm b/code/modules/projectiles/firing.dm index d17d0e9141e4..7894d74bc7c1 100644 --- a/code/modules/projectiles/firing.dm +++ b/code/modules/projectiles/firing.dm @@ -18,6 +18,7 @@ user.changeNext_move(CLICK_CD_RANGE) user.newtonian_move(get_dir(target, user)) update_icon() + SEND_SIGNAL(src, COMSIG_FIRE_CASING, target, user, firer_source_atom, randomspread, spread, zone_override, params, distro) return TRUE @@ -71,14 +72,14 @@ return locate(target.x + round(gaussian(0, distro) * (dy+2)/8, 1), target.y + round(gaussian(0, distro) * (dx+2)/8, 1), target.z) -/obj/item/projectile/proc/preparePixelProjectile(atom/target, turf/targloc, mob/living/user, params, spread) +/obj/projectile/proc/preparePixelProjectile(atom/target, turf/targloc, mob/living/user, params, spread) var/turf/curloc = get_turf(user) /* * If the user is holding a weapon in telekinesis grab, * use a starting location from the firer source */ - var/fire_from_tk_grab = !isnull(firer_source_atom) && user.tkgrabbed_objects[firer_source_atom] + var/fire_from_tk_grab = !isnull(firer_source_atom) && ismob(user) && user.tkgrabbed_objects[firer_source_atom] if (fire_from_tk_grab) curloc = get_turf(firer_source_atom) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index b6e4a1fb8f16..fb7e68ff6ed0 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -14,8 +14,8 @@ throw_range = 5 force = 5 origin_tech = "combat=1" - needs_permit = 1 - attack_verb = list("struck", "hit", "bashed") + needs_permit = TRUE + attack_verb = list("ударил") pickup_sound = 'sound/items/handling/gun_pickup.ogg' drop_sound = 'sound/items/handling/gun_drop.ogg' @@ -188,14 +188,14 @@ playsound(user, fire_sound, 50, TRUE) if(message) if(pointblank) - user.visible_message("[user] fires [src] point blank at [target]!", "You fire [src] point blank at [target]!", "You hear \a [fire_sound_text]!") + user.visible_message(span_danger("[user] fires [src] point blank at [target]!"), span_danger("You fire [src] point blank at [target]!"), span_italics("You hear \a [fire_sound_text]!"), projectile_message = TRUE) if(pb_knockback > 0 && isliving(target)) var/mob/living/living_target = target if(!(living_target.move_resist > MOVE_FORCE_NORMAL)) //no knockbacking prince of terror or somethin var/atom/throw_target = get_edge_target_turf(living_target, user.dir) living_target.throw_at(throw_target, pb_knockback, 2) else - user.visible_message("[user] fires [src]!", "You fire [src]!", "You hear \a [fire_sound_text]!") + user.visible_message("[user] fires [src]!", "You fire [src]!", "You hear \a [fire_sound_text]!", projectile_message = TRUE) if(chambered.muzzle_flash_effect) var/obj/effect/temp_visual/target_angled/muzzle_flash/effect = new chambered.muzzle_flash_effect(get_turf(src), target, muzzle_flash_time) effect.alpha = min(255, muzzle_strength * 255) @@ -574,13 +574,14 @@ azoom.Remove(user) -/obj/item/gun/AltClick(mob/user) +/obj/item/gun/click_alt(mob/user) if(!unique_reskin || current_skin || loc != user) - return ..() + return NONE if(user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) to_chat(user, span_warning("You can't do that right now!")) - return ..() + return CLICK_ACTION_BLOCKING reskin_gun(user) + return CLICK_ACTION_SUCCESS /obj/item/gun/proc/reskin_gun(mob/user) diff --git a/code/modules/projectiles/guns/alien.dm b/code/modules/projectiles/guns/alien.dm index 45518a9973cd..bf31a3dcd939 100644 --- a/code/modules/projectiles/guns/alien.dm +++ b/code/modules/projectiles/guns/alien.dm @@ -20,14 +20,14 @@ /obj/item/ammo_casing/energy/spike name = "alloy spike" desc = "A broadhead spike made out of a weird silvery metal." - projectile_type = /obj/item/projectile/bullet/spike + projectile_type = /obj/projectile/bullet/spike muzzle_flash_effect = null e_cost = 100 delay = 3 //and delay has to be stored here on energy guns select_name = "spike" fire_sound = 'sound/weapons/bladeslice.ogg' -/obj/item/projectile/bullet/spike +/obj/projectile/bullet/spike name = "alloy spike" desc = "It's about a foot of weird silvery metal with a wicked point." damage = 25 @@ -35,7 +35,7 @@ armour_penetration = 30 icon_state = "magspear" -/obj/item/projectile/bullet/spike/on_hit(atom/target, blocked = 0) +/obj/projectile/bullet/spike/on_hit(atom/target, blocked = 0) if((blocked != 100) && ishuman(target)) var/mob/living/carbon/human/H = target H.bleed(50) @@ -64,12 +64,12 @@ //Casing /obj/item/ammo_casing/energy/sonic - projectile_type = /obj/item/projectile/energy/sonic + projectile_type = /obj/projectile/energy/sonic fire_sound = 'sound/effects/basscannon.ogg' delay = 40 //Projectile. -/obj/item/projectile/energy/sonic +/obj/projectile/energy/sonic name = "distortion" icon_state = "particle" damage = 60 diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index b3bc18b5fb72..40f2ee9cc98a 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -14,6 +14,8 @@ var/modifystate = FALSE var/shaded_charge = FALSE //if this gun uses a stateful charge bar for more detail var/selfcharge = FALSE + /// Recharge rate if self-charging + var/recharge_rate = 100 var/can_charge = TRUE var/charge_sections = 4 var/charge_tick = 0 @@ -184,7 +186,7 @@ charge_tick = 0 if(!cell) return // check if we actually need to recharge - cell.give(100) //... to recharge the shot + cell.give(recharge_rate) // to recharge the shot on_recharge() update_icon() @@ -199,14 +201,14 @@ update_icon() -/obj/item/gun/energy/can_shoot(mob/living/user) +/obj/item/gun/energy/can_shoot(mob/living/user, silent = FALSE) if(user && sibyl_mod && !sibyl_mod.check_auth(user)) return FALSE var/obj/item/ammo_casing/energy/shot = ammo_type[select] . = cell.charge >= shot.e_cost - if(!.) + if(!. && !silent) sibyl_mod?.sibyl_sound(user, 'sound/voice/dominator/battery.ogg', 5 SECONDS) diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 31574f8430ac..a023f9e2434c 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -103,7 +103,7 @@ . = modkits -/obj/item/gun/energy/kinetic_accelerator/proc/modify_projectile(obj/item/projectile/kinetic/K) +/obj/item/gun/energy/kinetic_accelerator/proc/modify_projectile(obj/projectile/kinetic/K) K.kinetic_gun = src // Do something special on-hit, easy! for(var/obj/item/borg/upgrade/modkit/MK in get_modkits()) MK.modify_projectile(K) @@ -239,7 +239,7 @@ * CASING */ /obj/item/ammo_casing/energy/kinetic - projectile_type = /obj/item/projectile/kinetic + projectile_type = /obj/projectile/kinetic muzzle_flash_color = null select_name = "kinetic" e_cost = 500 @@ -256,7 +256,7 @@ /** * PROJECTILES */ -/obj/item/projectile/kinetic +/obj/projectile/kinetic name = "kinetic force" icon_state = null damage = 40 @@ -274,26 +274,26 @@ var/obj/item/gun/energy/kinetic_accelerator/kinetic_gun -/obj/item/projectile/kinetic/mech +/obj/projectile/kinetic/mech range = 5 power = 3 // More power for the god of power! -/obj/item/projectile/kinetic/pod +/obj/projectile/kinetic/pod range = 4 -/obj/item/projectile/kinetic/pod/regular +/obj/projectile/kinetic/pod/regular damage = 50 pressure_decrease = 0.5 -/obj/item/projectile/kinetic/Destroy() +/obj/projectile/kinetic/Destroy() kinetic_gun = null return ..() -/obj/item/projectile/kinetic/prehit(atom/target) +/obj/projectile/kinetic/prehit(atom/target) . = ..() if(.) if(kinetic_gun) @@ -305,17 +305,17 @@ pressure_decrease_active = TRUE -/obj/item/projectile/kinetic/on_range() +/obj/projectile/kinetic/on_range() strike_thing() ..() -/obj/item/projectile/kinetic/on_hit(atom/target) +/obj/projectile/kinetic/on_hit(atom/target) strike_thing(target) . = ..() -/obj/item/projectile/kinetic/proc/strike_thing(atom/target) +/obj/projectile/kinetic/proc/strike_thing(atom/target) var/turf/target_turf = get_turf(target) if(!target_turf) target_turf = get_turf(src) @@ -340,7 +340,7 @@ */ /obj/item/borg/upgrade/modkit name = "kinetic accelerator modification kit" - desc = "An upgrade for kinetic accelerators." + desc = "Улучшение для кинетических акселераторов." icon = 'icons/obj/objects.dmi' icon_state = "modkit" origin_tech = "programming=2;materials=2;magnets=4" @@ -363,7 +363,7 @@ /obj/item/borg/upgrade/modkit/examine(mob/user) . = ..() if(in_range(user, src)) - . += span_notice("Occupies [cost]% of mod capacity.") + . += span_notice("Занято [cost]% от общей ёмкости модулей.") /obj/item/borg/upgrade/modkit/attackby(obj/item/I, mob/user, params) @@ -423,15 +423,15 @@ LAZYREMOVE(KA.modkits, src) -/obj/item/borg/upgrade/modkit/proc/modify_projectile(obj/item/projectile/kinetic/K) +/obj/item/borg/upgrade/modkit/proc/modify_projectile(obj/projectile/kinetic/K) /// Use this one for effects you want to trigger before any damage is done at all and before damage is decreased by pressure. -/obj/item/borg/upgrade/modkit/proc/projectile_prehit(obj/item/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/proc/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) /// Use this one for effects you want to trigger before mods that do damage. -/obj/item/borg/upgrade/modkit/proc/projectile_strike_predamage(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/proc/projectile_strike_predamage(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) /// Use this one for things that don't need to trigger before other damage-dealing mods. -/obj/item/borg/upgrade/modkit/proc/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/proc/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) // Range @@ -442,7 +442,7 @@ cost = 24 // So you can fit four plus a tracer cosmetic. -/obj/item/borg/upgrade/modkit/range/modify_projectile(obj/item/projectile/kinetic/K) +/obj/item/borg/upgrade/modkit/range/modify_projectile(obj/projectile/kinetic/K) K.range += modifier @@ -457,7 +457,7 @@ modifier = 10 -/obj/item/borg/upgrade/modkit/damage/modify_projectile(obj/item/projectile/kinetic/K) +/obj/item/borg/upgrade/modkit/damage/modify_projectile(obj/projectile/kinetic/K) K.damage += modifier @@ -515,7 +515,7 @@ /obj/item/borg/upgrade/modkit/cooldown/repeater/borg compatibility = COMPATIBILITY_CYBORG -/obj/item/borg/upgrade/modkit/cooldown/repeater/projectile_strike_predamage(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/cooldown/repeater/projectile_strike_predamage(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) var/valid_repeat = FALSE if(isliving(target)) var/mob/living/L = target @@ -560,7 +560,7 @@ stats_stolen = FALSE -/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) if(stats_stolen) return new /obj/effect/temp_visual/explosion/fast(target_turf) @@ -617,7 +617,7 @@ cost = 30 -/obj/item/borg/upgrade/modkit/hardness/modify_projectile(obj/item/projectile/kinetic/K) +/obj/item/borg/upgrade/modkit/hardness/modify_projectile(obj/projectile/kinetic/K) K.power += modifier @@ -636,7 +636,7 @@ /obj/item/borg/upgrade/modkit/resonator_blasts/borg compatibility = COMPATIBILITY_CYBORG -/obj/item/borg/upgrade/modkit/resonator_blasts/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/resonator_blasts/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) if(target_turf && !ismineralturf(target_turf)) // Don't make fields on mineral turfs. var/obj/effect/temp_visual/resonance/R = locate(/obj/effect/temp_visual/resonance) in target_turf if(R) @@ -658,7 +658,7 @@ var/static/list/damage_heal_order = list(BRUTE, BURN, OXY) -/obj/item/borg/upgrade/modkit/lifesteal/projectile_prehit(obj/item/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/lifesteal/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) if(isliving(target) && isliving(K.firer)) var/mob/living/L = target if(L.stat == DEAD) @@ -679,7 +679,7 @@ var/list/bounties_reaped -/obj/item/borg/upgrade/modkit/bounty/projectile_prehit(obj/item/projectile/kinetic/K, mob/living/target, obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/bounty/projectile_prehit(obj/projectile/kinetic/K, mob/living/target, obj/item/gun/energy/kinetic_accelerator/KA) if(isliving(target)) for(var/datum/status_effect/syphon_mark/syphon_mark_effect as anything in target.get_all_status_effect_of_id(STATUS_EFFECT_SYPHONMARK)) // We want to allow multiple people with bounty modkits to use them, but we need to replace our own marks so we don't multi-reward. @@ -689,7 +689,7 @@ target.apply_status_effect(STATUS_EFFECT_SYPHONMARK, src) -/obj/item/borg/upgrade/modkit/bounty/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/bounty/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) if(isliving(target)) var/mob/living/L = target var/target_bounty = LAZYACCESS(bounties_reaped, L.type) @@ -715,14 +715,22 @@ // Indoors /obj/item/borg/upgrade/modkit/indoors name = "decrease pressure penalty" - desc = "A syndicate modification kit that increases the damage a kinetic accelerator does in high pressure environments." + desc = "Специальный модкит, который позволяет повысить урон, наносимый кинетическим акселератором в условиях повышенного давления." + ru_names = list( + NOMINATIVE = "уменьшение штрафа от давления", + GENITIVE = "уменьшения штрафа от давления", + DATIVE = "уменьшению штрафа от давления", + ACCUSATIVE = "уменьшение штрафа от давления", + INSTRUMENTAL = "уменьшением штрафа от давления", + PREPOSITIONAL = "уменьшении штрафа от давления" + ) modifier = 2 denied_type = /obj/item/borg/upgrade/modkit/indoors maximum_of_type = 2 cost = 35 -/obj/item/borg/upgrade/modkit/indoors/modify_projectile(obj/item/projectile/kinetic/K) +/obj/item/borg/upgrade/modkit/indoors/modify_projectile(obj/projectile/kinetic/K) K.pressure_decrease *= modifier @@ -787,7 +795,7 @@ var/bolt_color = "#FFFFFF" -/obj/item/borg/upgrade/modkit/tracer/modify_projectile(obj/item/projectile/kinetic/K) +/obj/item/borg/upgrade/modkit/tracer/modify_projectile(obj/projectile/kinetic/K) K.icon_state = "ka_tracer" K.color = bolt_color @@ -798,7 +806,10 @@ /obj/item/borg/upgrade/modkit/tracer/adjustable/attack_self(mob/user) - bolt_color = input(user,"","Choose Color",bolt_color) as color|null + var/color = tgui_input_color(user,"","Choose Color",bolt_color) + if(isnull(color)) + return + bolt_color = color #undef COMPATIBILITY_STANDART diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index fade0a3224be..27d215e80fd4 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -9,6 +9,13 @@ ammo_type = list(/obj/item/ammo_casing/energy/lasergun) ammo_x_offset = 1 shaded_charge = TRUE + can_flashlight = TRUE + gun_light_overlay = "lasergun_light" + +/obj/item/gun/energy/laser/ui_action_click(mob/user, datum/action/action, leftclick) + if(istype(action, /datum/action/item_action/toggle_gunlight)) + toggle_gunlight() + return TRUE /obj/item/gun/energy/laser/practice name = "practice laser gun" @@ -18,7 +25,7 @@ origin_tech = "combat=2;magnets=2" ammo_type = list(/obj/item/ammo_casing/energy/laser/practice) clumsy_check = 0 - needs_permit = 0 + needs_permit = FALSE /obj/item/gun/energy/laser/retro name ="retro laser gun" @@ -38,14 +45,18 @@ selfcharge = TRUE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF unique_reskin = TRUE + var/high_risk = TRUE +/obj/item/gun/energy/laser/captain/Initialize(mapload, ...) + . = ..() + if(high_risk) + AddElement(/datum/element/high_value_item) /obj/item/gun/energy/laser/captain/update_gun_skins() add_skin("The Original", "caplaser") add_skin("Restored", "caplaser_new") add_skin("Alternative", "caplaser_newer") - /obj/item/gun/energy/laser/captain/scattershot name = "scatter shot laser rifle" icon_state = "lasercannon" @@ -55,6 +66,8 @@ ammo_type = list(/obj/item/ammo_casing/energy/laser/scatter, /obj/item/ammo_casing/energy/laser) shaded_charge = FALSE unique_reskin = FALSE + high_risk = FALSE + /obj/item/gun/energy/laser/cyborg desc = "An energy-based laser gun that draws power from the cyborg's internal energy cell directly. So this is what freedom looks like?" @@ -91,17 +104,17 @@ ammo_x_offset = 3 /obj/item/ammo_casing/energy/laser/accelerator - projectile_type = /obj/item/projectile/beam/laser/accelerator + projectile_type = /obj/projectile/beam/laser/accelerator select_name = "accelerator" fire_sound = 'sound/weapons/gunshots/1laser5.ogg' -/obj/item/projectile/beam/laser/accelerator +/obj/projectile/beam/laser/accelerator name = "accelerator laser" icon_state = "heavylaser" range = 255 damage = 6 -/obj/item/projectile/beam/laser/accelerator/Range() +/obj/projectile/beam/laser/accelerator/Range() ..() damage = min(damage+7, 100) diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index 6c49b4a29af4..f9904d16a980 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -51,6 +51,10 @@ ammo_x_offset = 4 resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF +/obj/item/gun/energy/gun/hos/Initialize(mapload, ...) + . = ..() + AddElement(/datum/element/high_value_item) + /obj/item/gun/energy/gun/blueshield name = "advanced stun revolver" desc = "An advanced stun revolver with the capacity to shoot both electrodes and lasers." @@ -109,3 +113,79 @@ ammo_x_offset = 1 ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser) selfcharge = TRUE + +/obj/item/gun/energy/gun/minigun + name = "Laser gatling gun" + desc = "Огромное лазерное орудие, обладающее выдающейся скорострельностью и поражающей силой. Говорят, что 12 секунд стрельбы из этой малышки обойдутся вам в 400 тысяч кредитов." + ru_names = list( + NOMINATIVE = "Гатлинг-лазер", + GENITIVE = "Гатлинг-лазера", + DATIVE = "Гатлинг-лазеру", + ACCUSATIVE = "Гатлинг-лазер", + INSTRUMENTAL = "Гатлинг-лазером", + PREPOSITIONAL = "Гатлинг-лазере" + ) + icon_state = "gatling" + item_state = "gatling" + fire_sound = "lasergatling" + origin_tech = "combat=7;magnets=6;powerstorage=6" + slot_flags = FALSE + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF + weapon_weight = WEAPON_MEDIUM + w_class = WEIGHT_CLASS_GIGANTIC + throw_range = 0 + burst_size = 6 + spread = 45 + can_charge = FALSE + cell_type = /obj/item/stock_parts/cell/laser/gatling + ammo_type = list(/obj/item/ammo_casing/energy/laser/light) + selfcharge = TRUE + charge_delay = 5 + recharge_rate = 600 + slowdown = 0.2 + var/force_unwielded = 10 + var/force_wielded = 20 + +/obj/item/gun/energy/gun/minigun/Initialize(mapload) + . = ..() + AddComponent(/datum/component/two_handed, \ + force_unwielded = src.force_unwielded, \ + force_wielded = src.force_wielded, \ + require_twohands = TRUE \ + ) + +/obj/item/gun/energy/gun/minigun/can_be_pulled(atom/movable/user, force, show_message = FALSE) + ..() + balloon_alert(user, "слишком тяжело!") + +/obj/item/gun/energy/gun/minigun/update_icon_state() + item_state = !cell ? initial(item_state) : "[initial(item_state)][!can_shoot(silent = TRUE) ? "1" : ""]" + icon_state = !cell ? initial(icon_state) : "[initial(icon_state)][!can_shoot(silent = TRUE) ? "1" : ""]" + +/obj/item/gun/energy/gun/minigun/examine(mob/user) + . = ..() + + if(!cell) + return . + + var/obj/item/ammo_casing/energy/shot = ammo_type[select] + var/charge_amount = round(cell.charge / (shot.e_cost * burst_size)) + + . += span_notice("Индикатор батареи сообщает: заряда хватит на [charge_amount] [declension_ru(charge_amount, "выстрел", "выстрела", "выстрелов")].") + +/obj/item/gun/energy/gun/minigun/pulse + name = "Pulse gatling gun" + icon_state = "gatling_pulse" + item_state = "gatling_pulse" + desc = "Огромное пульсовое орудие, обладающее выдающейся скорострельностью и разрушительной силой. \ + Является модификацией Гатлинг-лазера. Имеет самую совершенную батарею в мире, самозаряд которой полностью компенсирует энергозатраты при стрельбе." + ru_names = list( + NOMINATIVE = "Гатлинг-пульсер", + GENITIVE = "Гатлинг-пульсера", + DATIVE = "Гатлинг-пульсеру", + ACCUSATIVE = "Гатлинг-пульсер", + INSTRUMENTAL = "Гатлинг-пульсером", + PREPOSITIONAL = "Гатлинг-пульсере" + ) + ammo_type = list(/obj/item/ammo_casing/energy/laser/pulse) + cell_type = /obj/item/stock_parts/cell/infinite diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index cec3aa208d49..392436be620c 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -68,9 +68,18 @@ ammo_x_offset = 1 can_charge = FALSE selfcharge = TRUE + var/emagged = FALSE /obj/item/gun/energy/floragun/emag_act(mob/user) . = ..() + + if(emagged) + return + + if(user) + balloon_alert(user, "протоколы защиты сняты!") + + emagged = TRUE ammo_type = list(/obj/item/ammo_casing/energy/flora/alpha/emag, /obj/item/ammo_casing/energy/flora/beta, /obj/item/ammo_casing/energy/flora/gamma) update_ammo_types() @@ -178,7 +187,7 @@ toolspeed = 1 container_type = OPENCONTAINER flags = CONDUCT - attack_verb = list("attacked", "slashed", "cut", "sliced") + attack_verb = list("атаковал", "полоснул", "порезал") force = 12 sharp = 1 can_charge = FALSE @@ -189,6 +198,8 @@ if(cell) . += "[src] is [round(cell.percent())]% charged." +/obj/item/gun/energy/plasmacutter/get_heat() + return 3800 /obj/item/gun/energy/plasmacutter/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/stack/sheet/mineral/plasma)) @@ -292,7 +303,7 @@ orange?.target = null -/obj/item/gun/energy/wormhole_projector/proc/create_portal(obj/item/projectile/beam/wormhole/projectile) +/obj/item/gun/energy/wormhole_projector/proc/create_portal(obj/projectile/beam/wormhole/projectile) var/obj/effect/portal/wormhole_projector/portal = new(get_turf(projectile), null, src) @@ -410,7 +421,7 @@ /obj/item/gun/energy/bsg name = "\improper Б.С.П" - desc = "Большая С*** Пушка. Использует ядро аномалии потока и кристалл блюспейса для производства разрушительных взрывов энергии, вдохновленный дивизионом БСА Нанотрейзен." + desc = "Большая С*** Пушка. Использует ядро аномалии потока и кристалл блюспейса для производства разрушительных взрывов энергии, вдохновленный дивизионом БСА НаноТрейзен." icon_state = "bsg" item_state = "bsg" origin_tech = "combat=6;materials=6;powerstorage=6;bluespace=6;magnets=6" //cutting edge technology, be my guest if you want to deconstruct one instead of use it. @@ -577,7 +588,7 @@ if(amount > 0) target_temperature = min((500 + 500*emagged), target_temperature+amount) else - target_temperature = max(0, target_temperature+amount) + target_temperature = max(TCMB, target_temperature+amount) if(ismob(loc)) attack_self(loc) add_fingerprint(usr) @@ -821,7 +832,7 @@ icon_state = "plasmagun" item_state = "plasmagun" w_class = WEIGHT_CLASS_NORMAL - origin_tech = "combat=4;magnets=4;powerstorage=3" + origin_tech = "combat=6;magnets=5;powerstorage=3" ammo_type = list(/obj/item/ammo_casing/energy/weak_plasma, /obj/item/ammo_casing/energy/charged_plasma) shaded_charge = 1 can_holster = TRUE @@ -959,7 +970,7 @@ var/turf/U = get_turf(target) if(!T || !U) return - var/obj/item/projectile/energy/charged_plasma/O = new /obj/item/projectile/energy/charged_plasma(T) + var/obj/projectile/energy/charged_plasma/O = new /obj/projectile/energy/charged_plasma(T) playsound(get_turf(src), 'sound/weapons/marauder.ogg', 75, 1) O.current = T O.yo = U.y - T.y diff --git a/code/modules/projectiles/guns/energy/telegun.dm b/code/modules/projectiles/guns/energy/telegun.dm index d0a5e49997c1..55181fc9af25 100644 --- a/code/modules/projectiles/guns/energy/telegun.dm +++ b/code/modules/projectiles/guns/energy/telegun.dm @@ -3,6 +3,15 @@ /obj/item/gun/energy/telegun name = "Teleporter Gun" desc = "An extremely high-tech bluespace energy gun capable of teleporting targets to far off locations." + ru_names = list( + NOMINATIVE = "телепушка", + GENITIVE = "телепушки", + DATIVE = "телепушке", + ACCUSATIVE = "телепушку", + INSTRUMENTAL = "телепушкой", + PREPOSITIONAL = "телепушке" + ) + gender = FEMALE icon_state = "telegun" item_state = "telegun" origin_tech = "combat=6;materials=7;powerstorage=5;bluespace=5;syndicate=4" diff --git a/code/modules/projectiles/guns/grenade_launcher.dm b/code/modules/projectiles/guns/grenade_launcher.dm index 17c83e21de78..0caf5675fdc7 100644 --- a/code/modules/projectiles/guns/grenade_launcher.dm +++ b/code/modules/projectiles/guns/grenade_launcher.dm @@ -45,8 +45,9 @@ to_chat(user, "The grenade launcher is empty.") /obj/item/gun/grenadelauncher/proc/fire_grenade(atom/target, mob/user) - user.visible_message("[user] fired a grenade!", \ - "You fire the grenade launcher!") + user.visible_message(span_danger("[user] fired a grenade!"), \ + span_danger("You fire the grenade launcher!"), + projectile_message = TRUE) var/obj/item/grenade/chem_grenade/F = grenades[1] //Now with less copypasta! grenades -= F F.loc = user.loc diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index 5651a0815c9c..0514260bd3bd 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -21,8 +21,8 @@ clumsy_check = 0 trigger_guard = TRIGGER_GUARD_ALLOW_ALL // Has no trigger at all, uses magic instead - lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' //not really a gun and some toys use these inhands - righthand_file = 'icons/mob/inhands/items_righthand.dmi' + lefthand_file = 'icons/mob/inhands/staff_lefthand.dmi' //not really a gun and some toys use these inhands + righthand_file = 'icons/mob/inhands/staff_righthand.dmi' /obj/item/gun/magic/afterattack(atom/target, mob/living/user, flag, params) if(no_den_usage) diff --git a/code/modules/projectiles/guns/magic/staff.dm b/code/modules/projectiles/guns/magic/staff.dm index 8b6744f62ece..a3f0a957ff57 100644 --- a/code/modules/projectiles/guns/magic/staff.dm +++ b/code/modules/projectiles/guns/magic/staff.dm @@ -2,6 +2,8 @@ slot_flags = ITEM_SLOT_BACK ammo_type = /obj/item/ammo_casing/magic item_flags = NO_MAT_REDEMPTION + lefthand_file = 'icons/mob/inhands/staff_lefthand.dmi' + righthand_file = 'icons/mob/inhands/staff_righthand.dmi' /obj/item/gun/magic/staff/change name = "staff of change" diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index 84374b03d103..3ed848d5dce9 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -135,8 +135,8 @@ /obj/item/gun/magic/wand/teleport/zap_self(mob/living/user) do_teleport(user, user, 10) - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(10, 0, user.loc) + var/datum/effect_system/fluid_spread/smoke/smoke = new + smoke.set_up(amount = 10, location = user.loc) smoke.start() charges-- ..() diff --git a/code/modules/projectiles/guns/medbeam.dm b/code/modules/projectiles/guns/medbeam.dm index 46b2b95a7d3b..ba5c808c2c5a 100644 --- a/code/modules/projectiles/guns/medbeam.dm +++ b/code/modules/projectiles/guns/medbeam.dm @@ -1,19 +1,30 @@ /obj/item/gun/medbeam name = "Medical Beamgun" - desc = "Delivers volatile medical nanites in a focused beam. Don't cross the beams!" + desc = "Передает целебные наниты своим сфокусированным лучом. Не скрещивайте лучи!" + ru_names = list( + NOMINATIVE = "Медицинская лучевая пушка", + GENITIVE = "Медицинской лучевой пушки", + DATIVE = "Медицинской лучевой пушке", + ACCUSATIVE = "Медицинскую лучевую пушку", + INSTRUMENTAL = "Медицинской лучевой пушкой", + PREPOSITIONAL = "Медицинской лучевой пушке" + ) icon = 'icons/obj/chronos.dmi' icon_state = "chronogun" item_state = "chronogun" w_class = WEIGHT_CLASS_NORMAL + weapon_weight = WEAPON_MEDIUM var/mob/living/current_target - var/last_check = 0 - var/check_delay = 10 //Check los as often as possible, max resolution is SSobj tick though + var/datum/beam/current_beam + + COOLDOWN_DECLARE(last_check) + var/check_delay = 1 SECONDS + var/max_range = 8 - var/active = FALSE - var/datum/beam/current_beam = null - weapon_weight = WEAPON_MEDIUM + var/active = FALSE + var/mounted = FALSE /obj/item/gun/medbeam/Initialize(mapload) @@ -49,6 +60,7 @@ active = FALSE QDEL_NULL(current_beam) on_beam_release(current_target) + current_target = null @@ -61,10 +73,10 @@ SIGNAL_HANDLER if(active && isliving(loc)) - to_chat(loc, span_warning("You lose control of the beam!")) + balloon_alert(loc, "контроль над лучом потерян") current_beam = null - active = FALSE //skip qdelling the beam again if we're doing this proc + active = FALSE // skip qdelling the beam again if we're doing this proc LoseTarget() @@ -77,18 +89,18 @@ LoseTarget() if(old_target == target || !isliving(target)) - return + return FALSE current_target = target active = TRUE current_beam = user.Beam(current_target, icon_state = "medbeam", time = 10 MINUTES, maxdistance = max_range, beam_type = /obj/effect/ebeam/medical) - RegisterSignal(current_beam, COMSIG_QDELETING, PROC_REF(beam_died))//this is a WAY better rangecheck than what was done before (process check) + RegisterSignal(current_beam, COMSIG_QDELETING, PROC_REF(beam_died)) // this is a WAY better rangecheck than what was done before (process check) SSblackbox.record_feedback("tally", "gun_fired", 1, type) - + return TRUE /obj/item/gun/medbeam/process() - if(!ishuman(loc) && !isrobot(loc)) + if(!mounted && !isliving(loc)) LoseTarget() return @@ -96,10 +108,10 @@ LoseTarget() return - if(world.time <= last_check + check_delay) + if(!COOLDOWN_FINISHED(src, last_check)) return - last_check = world.time + COOLDOWN_START(src, last_check, check_delay) if(!los_check(loc, current_target)) QDEL_NULL(current_beam)//this will give the target lost message @@ -111,47 +123,69 @@ /obj/item/gun/medbeam/proc/los_check(atom/movable/user, mob/target) var/turf/user_turf = user.loc + + if(mounted) + user_turf = get_turf(user) + if(!istype(user_turf)) return FALSE + var/obj/dummy = new(user_turf) - dummy.pass_flags |= (PASSTABLE|PASSGLASS|PASSGRILLE|PASSFENCE) //Grille/Glass so it can be used through common windows + dummy.pass_flags |= (PASSTABLE | PASSGLASS | PASSGRILLE | PASSFENCE) // Grille/Glass so it can be used through common windows + var/turf/previous_step = user_turf var/first_step = TRUE + for(var/turf/next_step as anything in (get_line(user_turf, target) - user_turf)) if(first_step) for(var/obj/blocker in user_turf) if(!blocker.density || !(blocker.flags & ON_BORDER)) continue + if(blocker.CanPass(dummy, get_dir(user_turf, next_step))) continue + qdel(dummy) return FALSE // Could not leave the first turf. + first_step = FALSE + + if(mounted && next_step == user_turf) + continue // Mechs are dense and thus fail the check + if(next_step.density) qdel(dummy) return FALSE + for(var/atom/movable/movable as anything in next_step) if(!movable.CanPass(dummy, get_dir(next_step, previous_step))) qdel(dummy) return FALSE + for(var/obj/effect/ebeam/medical/B in next_step)// Don't cross the str-beams! if(QDELETED(current_beam)) - break //We shouldn't be processing anymore. + break // We shouldn't be processing anymore. + if(QDELETED(B)) continue + if(!B.owner) stack_trace("beam without an owner! [B]") continue + if(B.owner.origin != current_beam.origin) - next_step.visible_message(span_boldwarning("The medbeams cross and EXPLODE!")) + next_step.visible_message(span_boldwarning("Лучи пересекаются и ПРОИСХОДИТ ВЗРЫВ!")) explosion(B.loc, heavy_impact_range = 3, light_impact_range = 5, flash_range = 8, cause = src) qdel(dummy) return FALSE + previous_step = next_step + qdel(dummy) return TRUE + /obj/item/gun/medbeam/proc/on_beam_hit(mob/living/target) return @@ -160,11 +194,13 @@ var/prev_health = target.health target.heal_overall_damage(4, 4) var/bones_mended = FALSE + if(ishuman(target)) for(var/obj/item/organ/external/bodypart as anything in target.bodyparts) if(bodypart.has_fracture() && prob(10)) bones_mended = TRUE bodypart.mend_fracture() + if(target.health != prev_health || bones_mended) new /obj/effect/temp_visual/heal(get_turf(target), "#80F5FF") @@ -172,3 +208,5 @@ /obj/item/gun/medbeam/proc/on_beam_release(mob/living/target) return +/obj/item/gun/medbeam/mech + mounted = TRUE diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm index 77a8cd53d118..7b40898be847 100644 --- a/code/modules/projectiles/guns/misc/blastcannon.dm +++ b/code/modules/projectiles/guns/misc/blastcannon.dm @@ -100,13 +100,13 @@ user.visible_message("[user] opens [bomb] on [user.p_their()] [name] and fires a blast wave at [target]!","You open [bomb] on your [name] and fire a blast wave at [target]!") playsound(user, "explosion", 100, 1) add_attack_logs(user, target, "Blast waved with power [heavy]/[medium]/[light].", ATKLOG_MOST) - var/obj/item/projectile/blastwave/BW = new(loc, heavy, medium, light) + var/obj/projectile/blastwave/BW = new(loc, heavy, medium, light) BW.preparePixelProjectile(target, get_turf(target), user, params, 0) BW.firer = user BW.firer_source_atom = src BW.fire() -/obj/item/projectile/blastwave +/obj/projectile/blastwave name = "blast wave" icon_state = "blastwave" damage = 0 @@ -117,13 +117,13 @@ var/mediumr = 0 var/lightr = 0 -/obj/item/projectile/blastwave/New(loc, _h, _m, _l) +/obj/projectile/blastwave/New(loc, _h, _m, _l) ..() heavyr = _h mediumr = _m lightr = _l -/obj/item/projectile/blastwave/Range() +/obj/projectile/blastwave/Range() ..() var/amount_destruction = 0 if(heavyr) @@ -146,5 +146,5 @@ mediumr = max(mediumr - 1, 0) lightr = max(lightr - 1, 0) -/obj/item/projectile/blastwave/ex_act() +/obj/projectile/blastwave/ex_act() return diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 49fc4822919d..0cf03152c3bb 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -134,7 +134,7 @@ magin_sound = 'sound/weapons/gun_interactions/batrifle_magin.ogg' magout_sound = 'sound/weapons/gun_interactions/batrifle_magout.ogg' fire_delay = 2 - can_suppress = FALSE + can_suppress = TRUE can_flashlight = TRUE burst_size = 2 can_bayonet = TRUE @@ -146,6 +146,11 @@ /obj/item/gun/projectile/automatic/wt550/update_icon_state() icon_state = "wt550[magazine ? "-[CEILING(get_ammo(FALSE)/4, 1)*4]" : ""]" +/obj/item/gun/projectile/automatic/wt550/update_overlays() + . = ..() + if(suppressed) + . += image(icon = icon, icon_state = "wt-sp_supp", pixel_x = 3) + /obj/item/gun/projectile/automatic/wt550/ui_action_click(mob/user, datum/action/action, leftclick) if(..()) @@ -165,7 +170,7 @@ magin_sound = 'sound/weapons/gun_interactions/batrifle_magin.ogg' magout_sound = 'sound/weapons/gun_interactions/batrifle_magout.ogg' fire_delay = 2 - can_suppress = FALSE + can_suppress = TRUE can_flashlight = TRUE burst_size = 3 can_bayonet = FALSE @@ -176,6 +181,10 @@ icon_state = "SP-91-RC[magazine ? "-[CEILING(get_ammo(FALSE)/5, 1)*5]" : ""]" item_state = "SP-91-RC[magazine ? "-[get_ammo(FALSE) ? "20" : "0"]" : ""]" +/obj/item/gun/projectile/automatic/sp91rc/update_overlays() + . = ..() + if(suppressed) + . += image(icon = icon, icon_state = "wt-sp_supp", pixel_x = 3) /obj/item/gun/projectile/automatic/sp91rc/ui_action_click(mob/user, datum/action/action, leftclick) if(..()) diff --git a/code/modules/projectiles/guns/projectile/bombarda.dm b/code/modules/projectiles/guns/projectile/bombarda.dm index 00635eef68af..0cef9ff38a2e 100644 --- a/code/modules/projectiles/guns/projectile/bombarda.dm +++ b/code/modules/projectiles/guns/projectile/bombarda.dm @@ -110,53 +110,52 @@ /obj/item/ammo_casing/grenade/improvised/exp_shell name = "Improvised explosive shell" desc = "Explodes upon impact or after some time." - projectile_type = /obj/item/projectile/grenade/improvised/exp_shot + projectile_type = /obj/projectile/grenade/improvised/exp_shot icon_state = "exp_shell" item_state = "exp_shell" /obj/item/ammo_casing/grenade/improvised/flame_shell name = "Improvised flame shell" desc = "Explodes with flames upon impact or after some time" - projectile_type = /obj/item/projectile/grenade/improvised/flame_shot + projectile_type = /obj/projectile/grenade/improvised/flame_shot icon_state = "flame_shell" item_state = "flame_shell" /obj/item/ammo_casing/grenade/improvised/smoke_shell name = "Improvised smoke shell" desc = "Explodes with smoke upon impact or after some time" - projectile_type = /obj/item/projectile/grenade/improvised/smoke_shot + projectile_type = /obj/projectile/grenade/improvised/smoke_shot icon_state = "smoke_shell" item_state = "smoke_shell" -/obj/item/projectile/grenade/improvised +/obj/projectile/grenade/improvised icon = 'icons/obj/weapons/bombarda.dmi' hitsound = "bullet" hitsound_wall = "ricochet" -/obj/item/projectile/grenade/improvised/exp_shot +/obj/projectile/grenade/improvised/exp_shot icon_state = "exp_shot" -/obj/item/projectile/grenade/improvised/exp_shot/on_hit(atom/target, blocked, hit_zone) +/obj/projectile/grenade/improvised/exp_shot/on_hit(atom/target, blocked, hit_zone) . = ..() explosion(loc, -1, -1, 2, flame_range = 3, cause = src) -/obj/item/projectile/grenade/improvised/flame_shot +/obj/projectile/grenade/improvised/flame_shot icon_state = "flame_shot" -/obj/item/projectile/grenade/improvised/flame_shot/on_hit(atom/target, blocked, hit_zone) +/obj/projectile/grenade/improvised/flame_shot/on_hit(atom/target, blocked, hit_zone) . = ..() explosion(loc, 0, 0, 0, flame_range = 8, cause = src) fireflash(loc, 2, 682) -/obj/item/projectile/grenade/improvised/smoke_shot +/obj/projectile/grenade/improvised/smoke_shot icon_state = "smoke_shot" -/obj/item/projectile/grenade/improvised/smoke_shot/on_hit(atom/target, blocked, hit_zone) +/obj/projectile/grenade/improvised/smoke_shot/on_hit(atom/target, blocked, hit_zone) . = ..() - var/datum/effect_system/smoke_spread/smoke = new /datum/effect_system/smoke_spread/bad() - smoke.set_up(18, FALSE, loc) - smoke.custom_lifetime = 20 - smoke.color = "#800080" + var/datum/effect_system/fluid_spread/smoke/bad/smoke = new + smoke.set_up(amount = 18, location = loc) + smoke.effect_type = /obj/effect/particle_effect/fluid/smoke/bad/bombarda smoke.start() /datum/crafting_recipe/bombarda diff --git a/code/modules/projectiles/guns/projectile/bow.dm b/code/modules/projectiles/guns/projectile/bow.dm index 1a4211d78f34..dc7f3faf2ade 100644 --- a/code/modules/projectiles/guns/projectile/bow.dm +++ b/code/modules/projectiles/guns/projectile/bow.dm @@ -1,29 +1,56 @@ /obj/item/gun/projectile/bow name = "bow" - desc = "A sturdy bow made out of wood and reinforced with iron." + desc = "Прочный лук, сделанный из дерева." + ru_names = list( + NOMINATIVE = "деревянный лук", + GENITIVE = "деревянного лука", + DATIVE = "деревянному луку", + ACCUSATIVE = "деревянный лук", + INSTRUMENTAL = "деревянным луком", + PREPOSITIONAL = "деревянном луке" + ) + gender = MALE icon_state = "bow" item_state = "bow" - fire_sound = 'sound/weapons/grenadelaunch.ogg' + + fire_sound = 'sound/weapons/bows/bow_fire.ogg' + pickup_sound = 'sound/weapons/bows/bow_pickup.ogg' + drop_sound = 'sound/weapons/bows/bow_drop.ogg' + equip_sound = 'sound/weapons/bows/bow_equip.ogg' + mag_type = /obj/item/ammo_box/magazine/internal/bow item_flags = SLOWS_WHILE_IN_HAND slot_flags = ITEM_SLOT_BACK weapon_weight = WEAPON_HEAVY trigger_guard = TRIGGER_GUARD_NONE - var/draw_sound = 'sound/weapons/draw_bow.ogg' + + var/draw_sound = 'sound/weapons/bows/bow_pull.ogg' var/ready_to_fire = FALSE var/slowdown_when_ready = 2 /obj/item/gun/projectile/bow/ashen //better than wooden name = "bone bow" - desc = "A primitive bow with a sinew bowstring. Typically used by tribal hunters and warriors. Due to the specific design of the bow, it's able to shoot only bone arrows." + desc = "Примитивный лук с тетивой, сделанной из жилы. Обычно используется племенными охотниками и воинами." + ru_names = list( + NOMINATIVE = "костяной лук", + GENITIVE = "костяного лука", + DATIVE = "костяному луку", + ACCUSATIVE = "костяной лук", + INSTRUMENTAL = "костяным луком", + PREPOSITIONAL = "костяном луке" + ) icon_state = "ashenbow" item_state = "ashenbow" - mag_type = /obj/item/ammo_box/magazine/internal/bow/ashen //you can't shoot wooden arrows from bone bow! + + fire_sound = 'sound/weapons/bows/bonebow_fire.ogg' + drop_sound = 'sound/weapons/bows/bonebow_drop.ogg' + draw_sound = 'sound/weapons/bows/bonebow_pull.ogg' + + item_flags = NONE flags = NONE force = 10 slowdown_when_ready = 1 - /obj/item/gun/projectile/bow/proc/update_state() update_slowdown() update_icon(UPDATE_ICON_STATE) @@ -98,49 +125,135 @@ caliber = "arrow" max_ammo = 1 start_empty = TRUE - -/obj/item/ammo_box/magazine/internal/bow/ashen - name = "ashen bow internal magazine" - ammo_type = /obj/item/ammo_casing/caseless/arrow/bone_tipped - caliber = "bone_arrow" - -/obj/item/projectile/bullet/reusable/arrow //only for wooden bow! + replacing_sound = list( + 'sound/weapons/bows/arrow_insert1.ogg', + 'sound/weapons/bows/arrow_insert2.ogg' + ) + remove_sound = list( + 'sound/weapons/bows/arrow_remove1.ogg', + 'sound/weapons/bows/arrow_remove2.ogg' + ) + insert_sound = list( + 'sound/weapons/bows/arrow_insert1.ogg', + 'sound/weapons/bows/arrow_insert2.ogg' + ) + load_sound = list( + 'sound/weapons/bows/arrow_remove1.ogg', + 'sound/weapons/bows/arrow_remove2.ogg' + ) //all these sounds are too good to be true + +/obj/projectile/bullet/reusable/arrow //only for wooden bow! name = "arrow" icon_state = "arrow" ammo_type = /obj/item/ammo_casing/caseless/arrow range = 10 damage = 25 damage_type = BRUTE + var/faction_bonus_damage = 13 + var/nemesis_factions = list("mining", "boss") + var/nemesis_faction = FALSE + +/obj/projectile/bullet/reusable/arrow/prehit(atom/target) + var/mob/living/H = target -/obj/item/projectile/bullet/reusable/arrow/bone //A fully upgraded normal arrow; it's got the stats to show. Still *less* damage than a slug, slower, and with negative AP. Only for bone bow! + if(!ismob(H) || !LAZYLEN(nemesis_factions)) + return + + for(var/faction in H.faction) + if(faction in nemesis_factions) + nemesis_faction = TRUE + damage += faction_bonus_damage + break + + . = ..() + +/obj/projectile/bullet/reusable/arrow/bone //A fully upgraded normal arrow; it's got the stats to show. Still *less* damage than a slug, slower, and with negative AP. Only for bone bow! name = "bone-tipped arrow" icon_state = "bone_arrow" ammo_type = /obj/item/ammo_casing/caseless/arrow/bone_tipped range = 12 damage = 45 armour_penetration = -10 + faction_bonus_damage = 23 + +/obj/projectile/bullet/reusable/arrow/jagged //alternative arrow, made from fishing + name = "jagged-tipped arrow" + icon_state = "jagged_arrow" + ammo_type = /obj/item/ammo_casing/caseless/arrow/jagged + range = 12 + damage = 50 + armour_penetration = -30 + faction_bonus_damage = 60 /obj/item/ammo_casing/caseless/arrow name = "arrow" - desc = "Stab, stab, stab." + desc = "Послушай, ты не мог бы положить это яблоко себе на голову?" + ru_names = list( + NOMINATIVE = "деревянная стрела", + GENITIVE = "деревянной стрелы", + DATIVE = "деревянной стреле", + ACCUSATIVE = "деревянную стрелу", + INSTRUMENTAL = "деревянной стрелой", + PREPOSITIONAL = "деревянной стреле" + ) + gender = FEMALE icon_state = "arrow" + item_state = "arrow" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' force = 10 - projectile_type = /obj/item/projectile/bullet/reusable/arrow + projectile_type = /obj/projectile/bullet/reusable/arrow muzzle_flash_effect = null caliber = "arrow" /obj/item/ammo_casing/caseless/arrow/bone_tipped name = "bone-tipped arrow" - desc = "An arrow made from bone, wood, and sinew. Sturdy and sharp." + desc = "Стрела, сделанная из кости, дерева и сухожилий. Прочная и острая." + ru_names = list( + NOMINATIVE = "костяная стрела", + GENITIVE = "костяной стрелы", + DATIVE = "костяной стреле", + ACCUSATIVE = "костяную стрелу", + INSTRUMENTAL = "костяной стрелой", + PREPOSITIONAL = "костяной стреле" + ) icon_state = "bone_arrow" + item_state = "bone_arrow" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' force = 12 - projectile_type = /obj/item/projectile/bullet/reusable/arrow/bone - caliber = "bone_arrow" + projectile_type = /obj/projectile/bullet/reusable/arrow/bone + caliber = "arrow" + +/obj/item/ammo_casing/caseless/arrow/jagged + name = "jagged-tipped arrow" + desc = "Стрела, сделанная из зубов хищной рыбы. Невероятно острая и крепкая." + ru_names = list( + NOMINATIVE = "зазубренная стрела", + GENITIVE = "зазубренной стрелы", + DATIVE = "зазубренной стреле", + ACCUSATIVE = "зазубренную стрелу", + INSTRUMENTAL = "зазубренной стрелой", + PREPOSITIONAL = "зазубренной стреле", + ) + icon_state = "jagged_arrow" + force = 16 + projectile_type = /obj/projectile/bullet/reusable/arrow/jagged + caliber = "arrow" //quiver /obj/item/storage/backpack/quiver name = "quiver" - desc = "A quiver for holding arrows." + desc = "Колчан для хранения стрел." + ru_names = list( + NOMINATIVE = "колчан", + GENITIVE = "колчана", + DATIVE = "колчану", + ACCUSATIVE = "колчан", + INSTRUMENTAL = "колчаном", + PREPOSITIONAL = "колчане" + ) + gender = MALE icon_state = "quiver" item_state = "quiver" storage_slots = 21 @@ -163,7 +276,16 @@ /obj/item/storage/belt/quiver_weaver //belt slot name = "weaver chitin quiver" - desc = "A fireproof quiver made from the chitin of a marrow weaver. Used to hold arrows." + desc = "Огнеупорный колчан, сделанный из хитина ткача. Используется для хранения стрел." + ru_names = list( + NOMINATIVE = "колчан из хитина ткача", + GENITIVE = "колчана из хитина ткача", + DATIVE = "колчану из хитина ткача", + ACCUSATIVE = "колчан из хитина ткача", + INSTRUMENTAL = "колчаном из хитина ткача", + PREPOSITIONAL = "колчане из хитина ткача" + ) + gender = MALE icon_state = "quiver_weaver" item_state = "quiver_weaver" storage_slots = 21 //every craft makes 3 arrows diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 888c753896ea..b229d6b65499 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -334,7 +334,7 @@ /obj/item/gun/projectile/revolver/russian/proc/shoot_self(mob/living/carbon/human/user, affecting = BODY_ZONE_HEAD) user.apply_damage(300, BRUTE, affecting) - user.visible_message(span_danger("[user.name] fires [src] at [user.p_their()] head!"), span_userdanger("You fire [src] at your head!"), span_italics("You hear a gunshot!")) + user.visible_message(span_danger("[user.name] fires [src] at [user.p_their()] head!"), span_userdanger("You fire [src] at your head!"), span_italics("You hear a gunshot!"), projectile_message = TRUE) /obj/item/gun/projectile/revolver/russian/soul name = "cursed Russian revolver" @@ -608,7 +608,16 @@ /obj/item/gun/projectile/revolver/doublebarrel/improvised/cane name = "cane" - desc = "A cane used by a true gentleman. Or a clown." + desc = "Трость — верный спутник настоящего джентльмена. Или клоуна." + ru_names = list( + NOMINATIVE = "трость", + GENITIVE = "трости", + DATIVE = "трости", + ACCUSATIVE = "трость", + INSTRUMENTAL = "тростью", + PREPOSITIONAL = "трости" + ) + gender = FEMALE icon = 'icons/obj/items.dmi' lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' righthand_file = 'icons/mob/inhands/items_righthand.dmi' @@ -621,8 +630,8 @@ slot_flags = null origin_tech = "" // NO GIVAWAYS mag_type = /obj/item/ammo_box/magazine/internal/shot/improvised/cane - sawn_desc = "I'm sorry, but why did you saw your cane in the first place?" - attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed") + sawn_desc = "Прошу прощения, но зачем вы распилили свою трость?" + attack_verb = list("огрел", "проучил") fire_sound = 'sound/weapons/gunshots/1suppres.ogg' suppressed = TRUE needs_permit = FALSE //its just a cane beepsky..... diff --git a/code/modules/projectiles/guns/projectile/saw.dm b/code/modules/projectiles/guns/projectile/saw.dm index 0f6827f16624..71d3ec53a276 100644 --- a/code/modules/projectiles/guns/projectile/saw.dm +++ b/code/modules/projectiles/guns/projectile/saw.dm @@ -66,43 +66,43 @@ //ammo// -/obj/item/projectile/bullet/saw +/obj/projectile/bullet/saw damage = 45 armour_penetration = 5 -/obj/item/projectile/bullet/saw/weak +/obj/projectile/bullet/saw/weak damage = 30 -/obj/item/projectile/bullet/saw/bleeding +/obj/projectile/bullet/saw/bleeding damage = 20 armour_penetration = 0 -/obj/item/projectile/bullet/saw/bleeding/on_hit(atom/target, blocked = 0, hit_zone) +/obj/projectile/bullet/saw/bleeding/on_hit(atom/target, blocked = 0, hit_zone) . = ..() if((blocked != 100) && iscarbon(target)) var/mob/living/carbon/C = target C.bleed(35) -/obj/item/projectile/bullet/saw/hollow +/obj/projectile/bullet/saw/hollow damage = 60 armour_penetration = -10 -/obj/item/projectile/bullet/saw/ap +/obj/projectile/bullet/saw/ap damage = 40 armour_penetration = 75 -/obj/item/projectile/bullet/saw/incen +/obj/projectile/bullet/saw/incen damage = 7 armour_penetration = 0 -/obj/item/projectile/bullet/saw/incen/Move(atom/newloc, direct = NONE, glide_size_override = 0, update_dir = TRUE) +/obj/projectile/bullet/saw/incen/Move(atom/newloc, direct = NONE, glide_size_override = 0, update_dir = TRUE) . = ..() var/turf/location = get_turf(src) if(location) new /obj/effect/hotspot(location) location.hotspot_expose(700, 50, 1) -/obj/item/projectile/bullet/saw/incen/on_hit(atom/target, blocked = 0) +/obj/projectile/bullet/saw/incen/on_hit(atom/target, blocked = 0) . = ..() if(iscarbon(target)) var/mob/living/carbon/M = target @@ -148,27 +148,27 @@ desc = "A 556x45mm bullet casing." icon_state = "762-casing" caliber = "mm55645" - projectile_type = /obj/item/projectile/bullet/saw + projectile_type = /obj/projectile/bullet/saw muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_STRONG muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG /obj/item/ammo_casing/mm556x45/weak - projectile_type = /obj/item/projectile/bullet/saw/weak + projectile_type = /obj/projectile/bullet/saw/weak /obj/item/ammo_casing/mm556x45/bleeding desc = "A 556x45mm bullet casing with specialized inner-casing, that when it makes contact with a target, release tiny shrapnel to induce internal bleeding." icon_state = "762-casing" - projectile_type = /obj/item/projectile/bullet/saw/bleeding + projectile_type = /obj/projectile/bullet/saw/bleeding /obj/item/ammo_casing/mm556x45/hollow desc = "A 556x45mm bullet casing designed to cause more damage to unarmored targets." - projectile_type = /obj/item/projectile/bullet/saw/hollow + projectile_type = /obj/projectile/bullet/saw/hollow /obj/item/ammo_casing/mm556x45/ap desc = "A 556x45mm bullet casing designed with a hardened-tipped core to help penetrate armored targets." - projectile_type = /obj/item/projectile/bullet/saw/ap + projectile_type = /obj/projectile/bullet/saw/ap /obj/item/ammo_casing/mm556x45/incen desc = "A 556x45mm bullet casing designed with a chemical-filled capsule on the tip that when bursted, reacts with the atmosphere to produce a fireball, engulfing the target in flames. " - projectile_type = /obj/item/projectile/bullet/saw/incen + projectile_type = /obj/projectile/bullet/saw/incen muzzle_flash_color = LIGHT_COLOR_FIRE diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 84b3210e68f5..715a30200ce4 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -87,6 +87,21 @@ sawn_desc = "Come with me if you want to live." sawn_state = SAWN_INTACT fire_sound = 'sound/weapons/gunshots/1shotgun.ogg' + can_flashlight = TRUE + gun_light_overlay = "riotshotgun_light" + +/obj/item/gun/projectile/shotgun/riot/update_overlays() + . = ..() + if(gun_light && gun_light_overlay) + var/iconF = gun_light_overlay + if(gun_light.on) + iconF = "[gun_light_overlay]_on" + . += image(icon = icon, icon_state = iconF, pixel_x = flight_x_offset, pixel_y = flight_y_offset) + +/obj/item/gun/projectile/shotgun/riot/ui_action_click(mob/user, datum/action/action, leftclick) + if(istype(action, /datum/action/item_action/toggle_gunlight)) + toggle_gunlight() + return TRUE /obj/item/gun/projectile/shotgun/riot/attackby(obj/item/I, mob/user, params) @@ -372,10 +387,8 @@ balloon_alert(user, "переключено на второй ствол") playsound(user, 'sound/weapons/gun_interactions/selector.ogg', 100, 1) -/obj/item/gun/projectile/shotgun/automatic/dual_tube/AltClick(mob/living/user) - . = ..() - if(user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user) || !istype(user)) - return +/obj/item/gun/projectile/shotgun/automatic/dual_tube/click_alt(mob/living/user) pump() + return CLICK_ACTION_SUCCESS // DOUBLE BARRELED SHOTGUN, IMPROVISED SHOTGUN, and CANE SHOTGUN are in revolver.dm diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index b0b09313168a..b0edd4bf7f0a 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -72,12 +72,12 @@ /obj/item/ammo_casing/point50 desc = "A .50 bullet casing." caliber = ".50" - projectile_type = /obj/item/projectile/bullet/sniper + projectile_type = /obj/projectile/bullet/sniper muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_STRONG muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG icon_state = ".50" -/obj/item/projectile/bullet/sniper +/obj/projectile/bullet/sniper //speed = 0.75 //range = 100 damage = 70 @@ -87,7 +87,7 @@ forced_accuracy = TRUE var/breakthings = TRUE -/obj/item/projectile/bullet/sniper/on_hit(atom/target, blocked = 0, hit_zone) +/obj/projectile/bullet/sniper/on_hit(atom/target, blocked = 0, hit_zone) if((blocked != 100) && (!ismob(target) && breakthings)) target.ex_act(rand(1,2)) @@ -106,18 +106,18 @@ /obj/item/ammo_casing/soporific desc = "A .50 bullet casing, specialised in sending the target to sleep, instead of hell." caliber = ".50" - projectile_type = /obj/item/projectile/bullet/sniper/soporific + projectile_type = /obj/projectile/bullet/sniper/soporific icon_state = ".50sop" harmful = FALSE -/obj/item/projectile/bullet/sniper/soporific +/obj/projectile/bullet/sniper/soporific armour_penetration = 0 nodamage = TRUE dismemberment = 0 weaken = 0 breakthings = FALSE -/obj/item/projectile/bullet/sniper/soporific/on_hit(atom/target, blocked = 0, hit_zone) +/obj/projectile/bullet/sniper/soporific/on_hit(atom/target, blocked = 0, hit_zone) if((blocked != 100) && isliving(target)) var/mob/living/L = target L.SetSleeping(40 SECONDS) @@ -135,10 +135,10 @@ /obj/item/ammo_casing/explosive desc = "A .50 bullet casing, specialised in destruction" caliber = ".50" - projectile_type = /obj/item/projectile/bullet/sniper/explosive + projectile_type = /obj/projectile/bullet/sniper/explosive icon_state = ".50exp" -/obj/item/projectile/bullet/sniper/explosive +/obj/projectile/bullet/sniper/explosive armour_penetration = 50 damage = 85 stun = 6 SECONDS @@ -146,7 +146,7 @@ weaken = 6 SECONDS breakthings = TRUE -/obj/item/projectile/bullet/sniper/explosive/on_hit(var/atom/target, blocked = 0, hit_zone) +/obj/projectile/bullet/sniper/explosive/on_hit(var/atom/target, blocked = 0, hit_zone) if((blocked != 100) && (!ismob(target, /mob/living) && breakthings)) explosion(target, -1, 1, 3, 5, cause = "[type] fired by [key_name(firer)]") @@ -163,17 +163,17 @@ /obj/item/ammo_casing/haemorrhage desc = "A .50 bullet casing, specialised in causing massive bloodloss" caliber = ".50" - projectile_type = /obj/item/projectile/bullet/sniper/haemorrhage + projectile_type = /obj/projectile/bullet/sniper/haemorrhage icon_state = ".50exp" -/obj/item/projectile/bullet/sniper/haemorrhage +/obj/projectile/bullet/sniper/haemorrhage armour_penetration = 15 damage = 15 dismemberment = 0 weaken = 0 breakthings = FALSE -/obj/item/projectile/bullet/sniper/haemorrhage/on_hit(atom/target, blocked = 0, hit_zone) +/obj/projectile/bullet/sniper/haemorrhage/on_hit(atom/target, blocked = 0, hit_zone) if((blocked != 100) && iscarbon(target)) var/mob/living/carbon/C = target C.bleed(100) @@ -192,10 +192,10 @@ /obj/item/ammo_casing/penetrator desc = "A .50 caliber penetrator round casing." caliber = ".50" - projectile_type = /obj/item/projectile/bullet/sniper/penetrator + projectile_type = /obj/projectile/bullet/sniper/penetrator icon_state = ".50pen" -/obj/item/projectile/bullet/sniper/penetrator +/obj/projectile/bullet/sniper/penetrator icon_state = "gauss" name = "penetrator round" damage = 60 @@ -215,12 +215,12 @@ /obj/item/ammo_casing/compact desc = "A .50 caliber compact round casing." caliber = ".50L" - projectile_type = /obj/item/projectile/bullet/sniper/compact + projectile_type = /obj/projectile/bullet/sniper/compact muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_NORMAL muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL icon_state = ".50" -/obj/item/projectile/bullet/sniper/compact //Can't dismember, and can't break things; just deals massive damage. +/obj/projectile/bullet/sniper/compact //Can't dismember, and can't break things; just deals massive damage. damage = 70 stun = 4 SECONDS weaken = 4 SECONDS @@ -238,7 +238,7 @@ /obj/item/ammo_casing/compact/penetrator desc = "A .50 caliber penetrator round casing." - projectile_type = /obj/item/projectile/bullet/sniper/penetrator + projectile_type = /obj/projectile/bullet/sniper/penetrator icon_state = ".50pen" /obj/item/ammo_box/magazine/sniper_rounds/compact/soporific @@ -251,7 +251,7 @@ /obj/item/ammo_casing/compact/soporific desc = "A .50 bullet casing, specialised in sending the target to sleep, instead of hell." - projectile_type = /obj/item/projectile/bullet/sniper/soporific + projectile_type = /obj/projectile/bullet/sniper/soporific icon_state = ".50sop" harmful = FALSE diff --git a/code/modules/projectiles/guns/throw/crossbow.dm b/code/modules/projectiles/guns/throw/crossbow.dm index a1afbe1724c3..da865f808dba 100644 --- a/code/modules/projectiles/guns/throw/crossbow.dm +++ b/code/modules/projectiles/guns/throw/crossbow.dm @@ -142,9 +142,10 @@ cell = null -/obj/item/gun/throw/crossbow/AltClick(mob/user) +/obj/item/gun/throw/crossbow/click_alt(mob/user) if(src in user) set_tension() + return CLICK_ACTION_SUCCESS /obj/item/gun/throw/crossbow/verb/set_tension() @@ -192,6 +193,8 @@ desc = "It's got a tip for you - get the point?" icon_state = "bolt" item_state = "bolt" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' throwforce = 20 w_class = WEIGHT_CLASS_SMALL sharp = TRUE @@ -205,6 +208,9 @@ name = "makeshift bolt" desc = "A sharpened metal rod that can be fired out of a crossbow." icon_state = "metal-rod" + item_state = "metal-rod" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' throwforce = 10 /obj/item/arrow/proc/modify_arrow() @@ -269,7 +275,7 @@ /obj/item/arrow/rod/fire/attackby(obj/item/I, mob/user, params) . = ..() - if(!ATTACK_CHAIN_CANCEL_CHECK(.) && is_hot(I)) + if(!ATTACK_CHAIN_CANCEL_CHECK(.) && I.get_heat()) fire_up() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 2c68d8c9cb36..ccf0bbe841ca 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -1,16 +1,16 @@ -/obj/item/projectile +/obj/projectile name = "projectile" icon = 'icons/obj/weapons/projectiles.dmi' icon_state = "bullet" density = FALSE resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF anchored = TRUE //There's a reason this is here, Mport. God fucking damn it -Agouri. Find&Fix by Pete. The reason this is here is to stop the curving of emitter shots. - item_flags = ABSTRACT pass_flags = PASSTABLE mouse_opacity = MOUSE_OPACITY_TRANSPARENT movement_type = FLYING animate_movement = NO_STEPS - hitsound = 'sound/weapons/pierce.ogg' + //The sound this plays on impact. + var/hitsound = 'sound/weapons/pierce.ogg' var/hitsound_wall = "" /// Body part at which the projectile was aimed. var/def_zone = "" @@ -57,7 +57,9 @@ var/nodamage = FALSE /// Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb //Cael - bio and rad are also valid var/flag = BULLET - var/projectile_type = "/obj/item/projectile" + ///How much armor this projectile pierces. + var/armour_penetration = 0 + var/projectile_type = "/obj/projectile" /// This will de-increment every step. When 0, it will delete the projectile. var/range = 50 /// Determines the reflectability level of a projectile, either REFLECTABILITY_NEVER, REFLECTABILITY_PHYSICAL, REFLECTABILITY_ENERGY in order of ease to reflect. @@ -115,7 +117,7 @@ var/hit_crawling_mobs_chance = 33 -/obj/item/projectile/Initialize(mapload) +/obj/projectile/Initialize(mapload) . = ..() var/static/list/loc_connections = list( COMSIG_ATOM_ENTERED = PROC_REF(on_entered), @@ -123,7 +125,7 @@ AddElement(/datum/element/connect_loc, loc_connections) -/obj/item/projectile/proc/Range() +/obj/projectile/proc/Range() range-- if(damage && tile_dropoff) damage = max(0, damage - tile_dropoff) // decrement projectile damage based on dropoff value for each tile it moves @@ -138,15 +140,15 @@ /** * If we want there to be effects when they reach the end of their range */ -/obj/item/projectile/proc/on_range() +/obj/projectile/proc/on_range() qdel(src) -/obj/item/projectile/proc/prehit(atom/target) +/obj/projectile/proc/prehit(atom/target) return TRUE -/obj/item/projectile/proc/on_hit(atom/target, blocked = 0, hit_zone) +/obj/projectile/proc/on_hit(atom/target, blocked = 0, hit_zone) var/turf/target_loca = get_turf(target) var/hitx var/hity @@ -216,8 +218,9 @@ if(hitsound) var/volume = vol_by_damage() playsound(loc, hitsound, volume, 1, -1) - L.visible_message("[L] is hit by \a [src][organ_hit_text]!", \ - "[L] is hit by \a [src][organ_hit_text]!") //X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter + L.visible_message(span_danger("[L] is hit by \a [src][organ_hit_text]!"), \ + span_userdanger("[L] is hit by \a [src][organ_hit_text]!"), + projectile_message = TRUE) //X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter if(L.mind && firer?.mind?.objectives) for(var/datum/objective/pain_hunter/objective in firer.mind.get_all_objectives()) @@ -235,7 +238,7 @@ /** * Checks whether the place we want to splatter blood is blocked (i.e. by windows). */ -/obj/item/projectile/proc/get_splatter_blockage(turf/step_over, atom/target, splatter_dir, target_loca) +/obj/projectile/proc/get_splatter_blockage(turf/step_over, atom/target, splatter_dir, target_loca) var/turf/step_cardinal = !(splatter_dir in list(NORTH, SOUTH, EAST, WEST)) ? get_step(target_loca, get_cardinal_dir(target_loca, step_over)) : null if(step_over.density && !step_over.CanPass(target, get_dir(step_over, target))) //Preliminary simple check. @@ -245,14 +248,14 @@ return TRUE -/obj/item/projectile/proc/vol_by_damage() +/obj/projectile/proc/vol_by_damage() if(damage) return clamp((damage) * 0.67, 30, 100)// Multiply projectile damage by 0.67, then clamp the value between 30 and 100 else return 50 //if the projectile doesn't do damage, play its hitsound at 50% volume -/obj/item/projectile/Bump(atom/bumped_atom) +/obj/projectile/Bump(atom/bumped_atom) . = ..() if(check_ricochet(bumped_atom) && check_ricochet_flag(bumped_atom) && ricochets < ricochets_max && is_reflectable(REFLECTABILITY_PHYSICAL)) @@ -287,6 +290,10 @@ return FALSE prehit(bumped_atom) + if(HAS_TRAIT(src, TRAIT_SHRAPNEL)) + bumped_atom.hitby(src, TRUE) + qdel(src) + var/permutation = bumped_atom.bullet_act(src, def_zone) // searches for return value, could be deleted after run so check A isn't null if(permutation == -1 || forcedodge)// the bullet passes through a dense object! if(forcedodge > 0) @@ -307,11 +314,11 @@ qdel(src) -/obj/item/projectile/Process_Spacemove(movement_dir = NONE, continuous_move = FALSE) +/obj/projectile/Process_Spacemove(movement_dir = NONE, continuous_move = FALSE) return TRUE //Bullets don't drift in space -/obj/item/projectile/process() +/obj/projectile/process() if(!loc || !trajectory) return PROCESS_KILL if(paused || !isturf(loc)) @@ -330,7 +337,7 @@ pixel_move(1) -/obj/item/projectile/proc/pixel_move(trajectory_multiplier) +/obj/projectile/proc/pixel_move(trajectory_multiplier) if(!loc || !trajectory) return last_projectile_move = world.time @@ -369,7 +376,7 @@ Range() -/obj/item/projectile/proc/fire(setAngle) +/obj/projectile/proc/fire(setAngle) if(setAngle) Angle = setAngle @@ -393,6 +400,8 @@ Angle = round(get_angle(src, current)) if(spread) Angle += (rand() - 0.5) * spread + if(firer && ismob(firer)) + hit_crawling_mobs_chance = firer.a_intent == INTENT_HELP ? 0 : 100 // Turn right away var/matrix/M = new M.Turn(Angle) @@ -404,7 +413,7 @@ pixel_move(1, FALSE) -/obj/item/projectile/proc/reflect_back(atom/source, list/position_modifiers = list(0, 0, 0, 0, 0, -1, 1, -2, 2)) +/obj/projectile/proc/reflect_back(atom/source, list/position_modifiers = list(0, 0, 0, 0, 0, -1, 1, -2, 2)) if(!starting) return var/new_x = starting.x + pick(position_modifiers) @@ -422,17 +431,18 @@ current = curloc yo = new_y - curloc.y xo = new_x - curloc.x + hit_crawling_mobs_chance = 100 set_angle(get_angle(curloc, original)) -/obj/item/projectile/proc/on_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs) +/obj/projectile/proc/on_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs) SIGNAL_HANDLER if(arrived.density && !(pass_flags & PASSMOB) && isliving(arrived)) Bump(arrived) -/obj/item/projectile/Destroy() +/obj/projectile/Destroy() STOP_PROCESSING(SSprojectiles, src) ammo_casing = null firer_source_atom = null @@ -440,44 +450,48 @@ return ..() -/obj/item/projectile/proc/dumbfire(dir) +/obj/projectile/proc/dumbfire(dir) current = get_ranged_target_turf(src, dir, world.maxx) //world.maxx is the range. Not sure how to handle this better. fire() -/obj/item/projectile/proc/on_ricochet(atom/A) +/obj/projectile/proc/on_ricochet(atom/A) return -/obj/item/projectile/proc/check_ricochet(atom/A) +/obj/projectile/proc/check_ricochet(atom/A) if(prob(ricochet_chance)) return TRUE return FALSE -/obj/item/projectile/proc/check_ricochet_flag(atom/A) - if(A.flags & CHECK_RICOCHET) +/obj/projectile/proc/check_ricochet_flag(atom/A) + if((flag in list(ENERGY, LASER)) && (A.flags_ricochet & RICOCHET_SHINY)) + return TRUE + + if((flag in list(BOMB, BULLET)) && (A.flags_ricochet & RICOCHET_HARD)) return TRUE + return FALSE -/obj/item/projectile/set_angle(new_angle) +/obj/projectile/set_angle(new_angle) ..() Angle = new_angle trajectory.set_angle(new_angle) -/obj/item/projectile/proc/set_angle_centered(new_angle) +/obj/projectile/proc/set_angle_centered(new_angle) set_angle(new_angle) var/list/coordinates = trajectory.return_coordinates() trajectory.set_location(coordinates[1], coordinates[2], coordinates[3]) // Sets the trajectory to the center of the tile it bounced at -/obj/item/projectile/experience_pressure_difference() +/obj/projectile/experience_pressure_difference() return -/obj/item/projectile/forceMove(atom/target) +/obj/projectile/forceMove(atom/target) . = ..() if(QDELETED(src)) // we coulda bumped something return @@ -485,7 +499,7 @@ trajectory.initialize_location(target.x, target.y, target.z, 0, 0) -/obj/item/projectile/proc/is_reflectable(desired_reflectability_level) +/obj/projectile/proc/is_reflectable(desired_reflectability_level) if(reflectability == REFLECTABILITY_NEVER) //You'd trust coders not to try and override never reflectable things, but heaven help us I do not return FALSE if(reflectability < desired_reflectability_level) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index ad9ddc0a3212..a0fdfc23a141 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -1,4 +1,4 @@ -/obj/item/projectile/beam +/obj/projectile/beam name = "laser" icon_state = "laser" pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE @@ -17,37 +17,40 @@ ricochets_max = 50 //Honk! ricochet_chance = 80 -/obj/item/projectile/beam/laser +/obj/projectile/beam/laser -/obj/item/projectile/beam/laser/heavylaser +/obj/projectile/beam/laser/light + damage = 15 + +/obj/projectile/beam/laser/heavylaser name = "heavy laser" icon_state = "heavylaser" damage = 50 hitsound = 'sound/weapons/resonator_blast.ogg' -/obj/item/projectile/beam/laser/slug +/obj/projectile/beam/laser/slug name = "laser slug beam" damage = 50 stamina = 33 -/obj/item/projectile/beam/laser/shot +/obj/projectile/beam/laser/shot name = "laser shot beam" icon_state = "lasershot" damage = 15 -/obj/item/projectile/beam/practice +/obj/projectile/beam/practice name = "practice laser" damage = 0 hitsound = 'sound/weapons/tap.ogg' nodamage = TRUE log_override = TRUE -/obj/item/projectile/beam/scatter +/obj/projectile/beam/scatter name = "laser pellet" icon_state = "scatterlaser" damage = 5 -/obj/item/projectile/beam/xray +/obj/projectile/beam/xray name = "x-ray beam" icon_state = "xray" damage = 10 @@ -59,7 +62,7 @@ impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser light_color = LIGHT_COLOR_GREEN -/obj/item/projectile/beam/disabler +/obj/projectile/beam/disabler name = "disabler beam" icon_state = "omnilaser" damage = 25 @@ -71,7 +74,7 @@ impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser light_color = LIGHT_COLOR_CYAN -/obj/item/projectile/beam/pulse +/obj/projectile/beam/pulse name = "pulse" icon_state = "u_laser" damage = 50 @@ -81,12 +84,12 @@ impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser light_color = LIGHT_COLOR_DARKBLUE -/obj/item/projectile/beam/pulse/on_hit(var/atom/target, var/blocked = 0) +/obj/projectile/beam/pulse/on_hit(var/atom/target, var/blocked = 0) if(istype(target, /turf) || isstructure(target) || ismachinery(target)) target.ex_act(2) ..() -/obj/item/projectile/beam/pulse/on_hit(atom/target) +/obj/projectile/beam/pulse/on_hit(atom/target) . = ..() if(gib_allowed && isliving(target)) var/mob/living/L = target @@ -94,11 +97,11 @@ L.visible_message(span_danger("[L] has been terminated!")) L.dust() -/obj/item/projectile/beam/pulse/shot +/obj/projectile/beam/pulse/shot gib_allowed = FALSE damage = 40 -/obj/item/projectile/beam/emitter +/obj/projectile/beam/emitter name = "emitter beam" icon_state = "emitter" damage = 30 @@ -106,10 +109,10 @@ impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser light_color = LIGHT_COLOR_GREEN -/obj/item/projectile/beam/emitter/singularity_pull() +/obj/projectile/beam/emitter/singularity_pull() return //don't want the emitters to miss -/obj/item/projectile/beam/lasertag +/obj/projectile/beam/lasertag name = "laser tag beam" icon_state = "omnilaser" hitsound = 'sound/weapons/tap.ogg' @@ -122,7 +125,7 @@ impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser light_color = LIGHT_COLOR_DARKBLUE -/obj/item/projectile/beam/lasertag/on_hit(atom/target, blocked = 0) +/obj/projectile/beam/lasertag/on_hit(atom/target, blocked = 0) . = ..() if(ishuman(target)) var/mob/living/carbon/human/M = target @@ -131,22 +134,22 @@ M.apply_damage(34, STAMINA) return 1 -/obj/item/projectile/beam/lasertag/omni +/obj/projectile/beam/lasertag/omni name = "laser tag beam" icon_state = "omnilaser" -/obj/item/projectile/beam/lasertag/redtag +/obj/projectile/beam/lasertag/redtag icon_state = "laser" suit_types = list(/obj/item/clothing/suit/bluetag) impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser light_color = LIGHT_COLOR_DARKRED -/obj/item/projectile/beam/lasertag/bluetag +/obj/projectile/beam/lasertag/bluetag icon_state = "bluelaser" suit_types = list(/obj/item/clothing/suit/redtag) light_color = LIGHT_COLOR_BLUE -/obj/item/projectile/beam/sniper +/obj/projectile/beam/sniper name = "sniper beam" icon_state = "sniperlaser" //speed = 0.75 @@ -160,7 +163,7 @@ impact_effect_type = /obj/effect/temp_visual/impact_effect/purple_laser light_color = LIGHT_COLOR_PINK -/obj/item/projectile/beam/podsniper/disabler +/obj/projectile/beam/podsniper/disabler name = "sniper disabler beam" icon_state = "LSR_disabler" damage = 40 @@ -171,7 +174,7 @@ impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser light_color = LIGHT_COLOR_CYAN -/obj/item/projectile/beam/podsniper/laser +/obj/projectile/beam/podsniper/laser name = "sniper laser beam" icon_state = "LSR_kill" damage = 45 @@ -182,32 +185,32 @@ impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser light_color = LIGHT_COLOR_DARKRED -/obj/item/projectile/beam/immolator +/obj/projectile/beam/immolator name = "immolation beam" hitsound = 'sound/weapons/plasma_cutter.ogg' -/obj/item/projectile/beam/immolator/strong +/obj/projectile/beam/immolator/strong name = "heavy immolation beam" damage = 45 icon_state = "heavylaser" -/obj/item/projectile/beam/immolator/weak +/obj/projectile/beam/immolator/weak name = "light immolation beam" damage = 8 icon_state = "scatterlaser" -/obj/item/projectile/beam/immolator/mech +/obj/projectile/beam/immolator/mech name = "mecha immolation beam" damage = 15 -/obj/item/projectile/beam/immolator/on_hit(var/atom/target, var/blocked = 0) +/obj/projectile/beam/immolator/on_hit(var/atom/target, var/blocked = 0) . = ..() if(iscarbon(target)) var/mob/living/carbon/M = target M.adjust_fire_stacks(1) M.IgniteMob() -/obj/item/projectile/beam/instakill +/obj/projectile/beam/instakill name = "instagib laser" icon_state = "purple_laser" damage = 200 @@ -216,29 +219,29 @@ impact_effect_type = /obj/effect/temp_visual/impact_effect/purple_laser light_color = LIGHT_COLOR_PURPLE -/obj/item/projectile/beam/instakill/blue +/obj/projectile/beam/instakill/blue icon_state = "blue_laser" impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser light_color = LIGHT_COLOR_DARKBLUE -/obj/item/projectile/beam/instakill/red +/obj/projectile/beam/instakill/red icon_state = "red_laser" impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser light_color = LIGHT_COLOR_DARKRED -/obj/item/projectile/beam/instakill/on_hit(atom/target) +/obj/projectile/beam/instakill/on_hit(atom/target) . = ..() if(isliving(target)) var/mob/living/L = target L.visible_message("[L] explodes!") L.gib() -/obj/item/projectile/beam/dominator/eliminator +/obj/projectile/beam/dominator/eliminator impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser icon_state = "blue_laser" light_color = LIGHT_COLOR_LIGHT_CYAN -/obj/item/projectile/beam/dominator/slaughter +/obj/projectile/beam/dominator/slaughter name = "execution slaughter beam" icon_state = "blue_laser" damage = 50 @@ -249,7 +252,7 @@ hitsound = 'sound/weapons/resonator_blast.ogg' hitsound_wall = 'sound/weapons/sear.ogg' -/obj/item/projectile/beam/dominator/paralyzer +/obj/projectile/beam/dominator/paralyzer name = "paralyzer beam" icon_state = "omnilaser" damage = 25 diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 50e66444fa79..c669809d4c48 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -1,4 +1,4 @@ -/obj/item/projectile/bullet +/obj/projectile/bullet name = "bullet" icon_state = "bullet" damage = 50 @@ -8,18 +8,18 @@ hitsound_wall = "ricochet" impact_effect_type = /obj/effect/temp_visual/impact_effect -/obj/item/projectile/bullet/slug +/obj/projectile/bullet/slug armour_penetration = 40 damage = 30 -/obj/item/projectile/bullet/weakbullet //beanbag, heavy stamina damage +/obj/projectile/bullet/weakbullet //beanbag, heavy stamina damage name = "beanbag slug" damage = 5 stamina = 55 -/obj/item/projectile/bullet/weakbullet/booze +/obj/projectile/bullet/weakbullet/booze -/obj/item/projectile/bullet/weakbullet/booze/on_hit(atom/target, blocked = 0) +/obj/projectile/bullet/weakbullet/booze/on_hit(atom/target, blocked = 0) if(..(target, blocked)) var/mob/living/M = target M.AdjustDizzy(40 SECONDS) @@ -37,22 +37,22 @@ M.AdjustDrowsy(20 SECONDS) A.volume += 5 //Because we can -/obj/item/projectile/bullet/weakbullet2 //detective revolver +/obj/projectile/bullet/weakbullet2 //detective revolver name = "rubber bullet" damage = 5 stamina = 35 icon_state = "bullet-r" -/obj/item/projectile/bullet/hp38 //Detective hollow-point +/obj/projectile/bullet/hp38 //Detective hollow-point damage = 33 armour_penetration = -50 -/obj/item/projectile/bullet/hp38/on_hit(atom/target, blocked, hit_zone) +/obj/projectile/bullet/hp38/on_hit(atom/target, blocked, hit_zone) if(..(target, blocked)) var/mob/living/M = target M.Slowed(2 SECONDS) -/obj/item/projectile/bullet/weakbullet2/invisible //finger gun bullets +/obj/projectile/bullet/weakbullet2/invisible //finger gun bullets name = "invisible bullet" damage = 0 weaken = 2 SECONDS @@ -60,174 +60,179 @@ icon_state = null hitsound_wall = null -/obj/item/projectile/bullet/weakbullet2/invisible/fake +/obj/projectile/bullet/weakbullet2/invisible/fake weaken = 0 stamina = 0 nodamage = TRUE log_override = TRUE -/obj/item/projectile/bullet/weakbullet3 +/obj/projectile/bullet/weakbullet3 damage = 20 -/obj/item/projectile/bullet/weakbullet3/foursix +/obj/projectile/bullet/weakbullet3/foursix damage = 15 -/obj/item/projectile/bullet/weakbullet3/foursix/ap +/obj/projectile/bullet/weakbullet3/foursix/ap damage = 12 armour_penetration = 40 -/obj/item/projectile/bullet/weakbullet3/foursix/tox +/obj/projectile/bullet/weakbullet3/foursix/tox damage = 10 damage_type = TOX armour_penetration = 10 -/obj/item/projectile/bullet/weakbullet3/fortynr +/obj/projectile/bullet/weakbullet3/fortynr name = "bullet" damage = 25 stamina = 20 -/obj/item/projectile/bullet/weakbullet4 +/obj/projectile/bullet/weakbullet4 name = "rubber bullet" damage = 5 stamina = 30 icon_state = "bullet-r" -/obj/item/projectile/bullet/weakbullet4/c9mmte +/obj/projectile/bullet/weakbullet4/c9mmte name = "9mm TE" damage = 7 stamina = 15 -/obj/item/projectile/bullet/toxinbullet +/obj/projectile/bullet/toxinbullet damage = 15 damage_type = TOX -/obj/item/projectile/bullet/incendiary +/obj/projectile/bullet/incendiary -/obj/item/projectile/bullet/incendiary/on_hit(atom/target, blocked = 0) +/obj/projectile/bullet/incendiary/on_hit(atom/target, blocked = 0) . = ..() if(iscarbon(target)) var/mob/living/carbon/M = target M.adjust_fire_stacks(4) M.IgniteMob() -/obj/item/projectile/bullet/incendiary/firebullet +/obj/projectile/bullet/incendiary/firebullet damage = 10 -/obj/item/projectile/bullet/incendiary/foursix +/obj/projectile/bullet/incendiary/foursix damage = 10 armour_penetration = 10 -/obj/item/projectile/bullet/armourpiercing +/obj/projectile/bullet/armourpiercing damage = 17 armour_penetration = 10 -/obj/item/projectile/bullet/pellet +/obj/projectile/bullet/pellet name = "pellet" damage = 14 tile_dropoff = 0.75 tile_dropoff_s = 1.25 armour_penetration = -20 -/obj/item/projectile/bullet/pellet/nuclear +/obj/projectile/bullet/pellet/nuclear damage = 15.5 tile_dropoff = 0 -/obj/item/projectile/bullet/pellet/bioterror +/obj/projectile/bullet/pellet/bioterror damage = 9 irradiate = 20 tile_dropoff = 0 -/obj/item/projectile/bullet/pellet/bioterror/on_hit(atom/target, blocked = 0, hit_zone) +/obj/projectile/bullet/pellet/bioterror/on_hit(atom/target, blocked = 0, hit_zone) . = ..() if((blocked != 100) && iscarbon(target)) var/mob/living/carbon/C = target C.apply_damage(9, TOX) -/obj/item/projectile/bullet/pellet/flechette +/obj/projectile/bullet/pellet/flechette name = "flechette" damage = 16.5 tile_dropoff = 0 armour_penetration = 20 -/obj/item/projectile/bullet/pellet/rubber +/obj/projectile/bullet/pellet/rubber name = "rubber pellet" damage = 3 stamina = 15 icon_state = "bullet-r" -/obj/item/projectile/bullet/pellet/weak +/obj/projectile/bullet/pellet/weak tile_dropoff = 0.55 //Come on it does 6 damage don't be like that. damage = 8 -/obj/item/projectile/bullet/pellet/weak/New() +/obj/projectile/bullet/pellet/weak/New() range = rand(1, 8) ..() -/obj/item/projectile/bullet/pellet/weak/on_range() +/obj/projectile/bullet/pellet/weak/on_range() do_sparks(1, TRUE, src) ..() -/obj/item/projectile/bullet/pellet/overload +/obj/projectile/bullet/pellet/overload damage = 3 -/obj/item/projectile/bullet/pellet/overload/New() +/obj/projectile/bullet/pellet/overload/New() range = rand(1, 10) ..() -/obj/item/projectile/bullet/pellet/assassination +/obj/projectile/bullet/pellet/assassination damage = 12 tile_dropoff = 1 // slightly less damage and greater damage falloff compared to normal buckshot -/obj/item/projectile/bullet/pellet/assassination/on_hit(atom/target, blocked = 0) +/obj/projectile/bullet/pellet/assassination/on_hit(atom/target, blocked = 0) if(..(target, blocked)) var/mob/living/M = target M.AdjustSilence(4 SECONDS) // HELP MIME KILLING ME IN MAINT -/obj/item/projectile/bullet/pellet/overload/on_hit(atom/target, blocked = 0) +/obj/projectile/bullet/pellet/overload/on_hit(atom/target, blocked = 0) ..() explosion(target, 0, 0, 2, cause = src) -/obj/item/projectile/bullet/pellet/overload/on_range() +/obj/projectile/bullet/pellet/overload/on_range() explosion(src, 0, 0, 2, cause = src) do_sparks(3, 3, src) ..() -/obj/item/projectile/bullet/midbullet +/obj/projectile/bullet/midbullet damage = 20 stamina = 33 //four rounds from the c20r knocks people down -/obj/item/projectile/bullet/midbullet_AC2S +/obj/projectile/bullet/midbullet_AC2S damage = 20 stamina = 40 //three rounds from the AC 2 Special knocks people down -/obj/item/projectile/bullet/midbullet_r +/obj/projectile/bullet/midbullet_r damage = 5 stamina = 33 //Still four rounds to knock people down -/obj/item/projectile/bullet/midbullet2 +/obj/projectile/bullet/midbullet2 damage = 25 -/obj/item/projectile/bullet/midbullet3 +/obj/projectile/bullet/midbullet3 damage = 30 -/obj/item/projectile/bullet/midbullet3/hp +/obj/projectile/bullet/midbullet3/hp damage = 50 armour_penetration = -50 -/obj/item/projectile/bullet/midbullet3/ap +/obj/projectile/bullet/midbullet3/hp/on_hit(atom/target, blocked, hit_zone) + if(..(target, blocked)) + var/mob/living/M = target + M.Slowed(2 SECONDS) + +/obj/projectile/bullet/midbullet3/ap damage = 27 armour_penetration = 40 -/obj/item/projectile/bullet/midbullet3/fire/on_hit(atom/target, blocked = 0) +/obj/projectile/bullet/midbullet3/fire/on_hit(atom/target, blocked = 0) if(..(target, blocked)) var/mob/living/M = target M.adjust_fire_stacks(1) M.IgniteMob() -/obj/item/projectile/bullet/heavybullet +/obj/projectile/bullet/heavybullet damage = 35 -/obj/item/projectile/bullet/stunshot //taser slugs for shotguns, nothing special +/obj/projectile/bullet/stunshot //taser slugs for shotguns, nothing special name = "stunshot" damage = 5 weaken = 2 SECONDS @@ -238,29 +243,29 @@ icon_state = "spark" color = "#FFFF00" -/obj/item/projectile/bullet/incendiary/shell +/obj/projectile/bullet/incendiary/shell name = "incendiary slug" damage = 20 -/obj/item/projectile/bullet/incendiary/shell/Move(atom/newloc, direct = NONE, glide_size_override = 0, update_dir = TRUE) +/obj/projectile/bullet/incendiary/shell/Move(atom/newloc, direct = NONE, glide_size_override = 0, update_dir = TRUE) . = ..() var/turf/location = get_turf(src) if(location) new /obj/effect/hotspot(location) location.hotspot_expose(700, 50, 1) -/obj/item/projectile/bullet/incendiary/shell/dragonsbreath +/obj/projectile/bullet/incendiary/shell/dragonsbreath name = "dragonsbreath round" damage = 5 -/obj/item/projectile/bullet/incendiary/shell/dragonsbreath/nuclear +/obj/projectile/bullet/incendiary/shell/dragonsbreath/nuclear damage = 13.5 -/obj/item/projectile/bullet/incendiary/shell/dragonsbreath/mecha +/obj/projectile/bullet/incendiary/shell/dragonsbreath/mecha name = "liquidlava round" damage = 20 -/obj/item/projectile/bullet/meteorshot +/obj/projectile/bullet/meteorshot name = "meteor" icon = 'icons/obj/meteor.dmi' icon_state = "dust" @@ -268,23 +273,23 @@ weaken = 4 SECONDS hitsound = 'sound/effects/meteorimpact.ogg' -/obj/item/projectile/bullet/meteorshot/on_hit(atom/target, blocked = 0) +/obj/projectile/bullet/meteorshot/on_hit(atom/target, blocked = 0) ..() if(istype(target, /atom/movable)) var/atom/movable/M = target var/atom/throw_target = get_edge_target_turf(M, get_dir(src, get_step_away(M, src))) M.throw_at(throw_target, 3, 2) -/obj/item/projectile/bullet/meteorshot/New() +/obj/projectile/bullet/meteorshot/New() ..() SpinAnimation() -/obj/item/projectile/bullet/meteorshot/weak +/obj/projectile/bullet/meteorshot/weak damage = 50 weaken = 6 SECONDS stun = 6 SECONDS -/obj/item/projectile/bullet/mime +/obj/projectile/bullet/mime damage = 0 stun = 2 SECONDS weaken = 2 SECONDS @@ -292,7 +297,7 @@ slur = 40 SECONDS stutter = 40 SECONDS -/obj/item/projectile/bullet/mime/on_hit(atom/target, blocked = 0) +/obj/projectile/bullet/mime/on_hit(atom/target, blocked = 0) ..(target, blocked) if(iscarbon(target)) var/mob/living/carbon/M = target @@ -304,18 +309,18 @@ for(var/obj/item/mecha_parts/mecha_equipment/weapon/honker in chassis.equipment) honker.set_ready_state(FALSE) -/obj/item/projectile/bullet/dart +/obj/projectile/bullet/dart name = "dart" icon_state = "cbbolt" damage = 6 var/piercing = FALSE -/obj/item/projectile/bullet/dart/New() +/obj/projectile/bullet/dart/New() ..() create_reagents(50) reagents.set_reacting(FALSE) -/obj/item/projectile/bullet/dart/on_hit(atom/target, blocked = 0, hit_zone) +/obj/projectile/bullet/dart/on_hit(atom/target, blocked = 0, hit_zone) if(iscarbon(target)) var/mob/living/carbon/M = target if(blocked != 100) @@ -333,34 +338,34 @@ reagents.handle_reactions() return TRUE -/obj/item/projectile/bullet/dart/metalfoam +/obj/projectile/bullet/dart/metalfoam -/obj/item/projectile/bullet/dart/metalfoam/New() +/obj/projectile/bullet/dart/metalfoam/New() ..() reagents.add_reagent("aluminum", 15) reagents.add_reagent("fluorosurfactant", 5) reagents.add_reagent("sacid", 5) //This one is for future syringe guns update -/obj/item/projectile/bullet/dart/syringe +/obj/projectile/bullet/dart/syringe name = "syringe" icon = 'icons/obj/chemical.dmi' icon_state = "syringeproj" -/obj/item/projectile/bullet/dart/syringe/tranquilizer +/obj/projectile/bullet/dart/syringe/tranquilizer -/obj/item/projectile/bullet/dart/syringe/tranquilizer/New() +/obj/projectile/bullet/dart/syringe/tranquilizer/New() ..() reagents.add_reagent("haloperidol", 15) -/obj/item/projectile/bullet/neurotoxin +/obj/projectile/bullet/neurotoxin name = "neurotoxin spit" icon_state = "neurotoxin" damage = 33 damage_type = TOX weaken = 1 SECONDS -/obj/item/projectile/bullet/neurotoxin/prehit(atom/target) +/obj/projectile/bullet/neurotoxin/prehit(atom/target) if(isalien(target)) weaken = 0 nodamage = TRUE @@ -368,30 +373,30 @@ damage_type = BURN . = ..() -/obj/item/projectile/bullet/cap +/obj/projectile/bullet/cap name = "cap" damage = 0 nodamage = TRUE -/obj/item/projectile/bullet/cap/fire() +/obj/projectile/bullet/cap/fire() loc = null qdel(src) -/obj/item/projectile/bullet/f545 // Rusted AK +/obj/projectile/bullet/f545 // Rusted AK name = "Fusty FMJ 5.45 bullet" damage = 18 stamina = 6 -/obj/item/projectile/bullet/ftt762 // Rusted PPSh +/obj/projectile/bullet/ftt762 // Rusted PPSh name = "Fusty FMJ 7.62 TT bullet" damage = 8 stamina = 1 armour_penetration = 5 -/obj/item/projectile/bullet/weakbullet3/c257 +/obj/projectile/bullet/weakbullet3/c257 damage = 20 -/obj/item/projectile/bullet/weakbullet3/c257/phosphorus/on_hit(atom/target, blocked, hit_zone) +/obj/projectile/bullet/weakbullet3/c257/phosphorus/on_hit(atom/target, blocked, hit_zone) do_sparks(rand(1, 3), FALSE, target) if(..(target, blocked)) var/mob/living/target_living = target diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 4c9372892f24..1db2b94cc1d4 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -1,4 +1,4 @@ -/obj/item/projectile/energy +/obj/projectile/energy name = "energy" icon_state = "spark" damage = 0 @@ -7,7 +7,7 @@ flag = "energy" reflectability = REFLECTABILITY_ENERGY -/obj/item/projectile/energy/electrode +/obj/projectile/energy/electrode name = "electrode" icon_state = "spark" color = "#FFFF00" @@ -21,7 +21,7 @@ range = 7 //Damage will be handled on the MOB side, to prevent window shattering. -/obj/item/projectile/energy/electrode/on_hit(var/atom/target, var/blocked = 0) +/obj/projectile/energy/electrode/on_hit(var/atom/target, var/blocked = 0) . = ..() if(!ismob(target) || blocked >= 100) //Fully blocked by mob or collided with dense object - burst into sparks! do_sparks(1, 1, src) @@ -33,18 +33,18 @@ spawn(5) C.Jitter(jitter) -/obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet +/obj/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet do_sparks(1, 1, src) ..() -/obj/item/projectile/energy/electrode/dominator +/obj/projectile/energy/electrode/dominator color = LIGHT_COLOR_LIGHT_CYAN -/obj/item/projectile/energy/electrode/advanced +/obj/projectile/energy/electrode/advanced stun = 10 SECONDS weaken = 10 SECONDS -/obj/item/projectile/energy/declone +/obj/projectile/energy/declone name = "declone" icon_state = "declone" damage = 20 @@ -53,7 +53,7 @@ irradiate = 10 impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser -/obj/item/projectile/energy/dart +/obj/projectile/energy/dart name = "dart" icon_state = "toxin" damage = 1 @@ -63,7 +63,7 @@ range = 7 shockbull = TRUE -/obj/item/projectile/energy/bolt +/obj/projectile/energy/bolt name = "bolt" icon_state = "cbbolt" damage = 15 @@ -75,18 +75,18 @@ stutter = 2 SECONDS shockbull = TRUE -/obj/item/projectile/energy/bolt/on_hit(atom/target) +/obj/projectile/energy/bolt/on_hit(atom/target) . = ..() var/mob/living/simple_animal/hostile/carp/carp = target if(istype(carp)) carp.gib() -/obj/item/projectile/energy/bolt/large +/obj/projectile/energy/bolt/large damage = 20 weaken = 0.1 SECONDS stamina = 30 -/obj/item/projectile/energy/bolttoy +/obj/projectile/energy/bolttoy name = "bolttoy" icon_state = "cbbolttoy" hitsound = 'sound/weapons/pierce.ogg' @@ -96,24 +96,24 @@ stutter = 2 SECONDS shockbull = TRUE -/obj/item/projectile/energy/shock_revolver +/obj/projectile/energy/shock_revolver name = "shock bolt" icon_state = "purple_laser" impact_effect_type = /obj/effect/temp_visual/impact_effect/purple_laser /obj/item/ammo_casing/energy/shock_revolver/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") ..() - var/obj/item/projectile/energy/shock_revolver/P = BB + var/obj/projectile/energy/shock_revolver/P = BB spawn(1) P.chain = P.Beam(user,icon_state="purple_lightning",icon = 'icons/effects/effects.dmi',time=1000, maxdistance = 30) -/obj/item/projectile/energy/shock_revolver/on_hit(atom/target) +/obj/projectile/energy/shock_revolver/on_hit(atom/target) . = ..() if(isliving(target)) tesla_zap(src, 3, 10000) qdel(chain) -/obj/item/projectile/energy/toxplasma +/obj/projectile/energy/toxplasma name = "toxin bolt" icon_state = "energy" damage = 20 @@ -121,13 +121,13 @@ damage_type = TOX irradiate = 20 -/obj/item/projectile/energy/weak_plasma +/obj/projectile/energy/weak_plasma name = "plasma bolt" icon_state = "plasma_light" damage = 20 damage_type = BURN -/obj/item/projectile/energy/charged_plasma +/obj/projectile/energy/charged_plasma name = "charged plasma bolt" icon_state = "plasma_heavy" damage = 50 diff --git a/code/modules/projectiles/projectile/force.dm b/code/modules/projectiles/projectile/force.dm index f5279c18ba3c..85681e6bdaff 100644 --- a/code/modules/projectiles/projectile/force.dm +++ b/code/modules/projectiles/projectile/force.dm @@ -1,14 +1,14 @@ -/obj/item/projectile/forcebolt +/obj/projectile/forcebolt name = "force bolt" icon = 'icons/obj/weapons/projectiles.dmi' icon_state = "ice_1" damage = 20 flag = "energy" -/obj/item/projectile/forcebolt/strong +/obj/projectile/forcebolt/strong name = "force bolt" -/obj/item/projectile/forcebolt/on_hit(var/atom/target, var/blocked = 0) +/obj/projectile/forcebolt/on_hit(var/atom/target, var/blocked = 0) . = ..() if(blocked < 100) var/obj/T = target diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 3e1785e6f22a..fd242973574a 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -1,4 +1,4 @@ -/obj/item/projectile/magic +/obj/projectile/magic name = "bolt of nothing" icon_state = "energy" damage = 0 @@ -9,11 +9,11 @@ armour_penetration = 100 flag = "magic" -/obj/item/projectile/magic/death +/obj/projectile/magic/death name = "bolt of death" icon_state = "pulse1_bl" -/obj/item/projectile/magic/fireball +/obj/projectile/magic/fireball name = "bolt of fireball" icon_state = "fireball" damage = 10 @@ -27,7 +27,7 @@ var/exp_flash = 3 var/exp_fire = 2 -/obj/item/projectile/magic/death/on_hit(mob/living/carbon/C) +/obj/projectile/magic/death/on_hit(mob/living/carbon/C) . = ..() if(isliving(C)) if(ismachineperson(C)) //speshul snowfleks deserv speshul treetment @@ -37,7 +37,7 @@ visible_message("[C] topples backwards as the death bolt impacts [C.p_them()]!") -/obj/item/projectile/magic/fireball/Range() +/obj/projectile/magic/fireball/Range() var/turf/T1 = get_step(src,turn(dir, -45)) var/turf/T2 = get_step(src,turn(dir, 45)) var/turf/T3 = get_step(src,dir) @@ -55,7 +55,7 @@ return ..() -/obj/item/projectile/magic/fireball/on_hit(atom/target, blocked = 0, hit_zone) +/obj/projectile/magic/fireball/on_hit(atom/target, blocked = 0, hit_zone) . = ..() var/turf/T = get_turf(target) explosion(T, exp_devastate, exp_heavy, exp_light, exp_flash, 0, flame_range = exp_fire, cause = src) @@ -64,18 +64,18 @@ M.take_overall_damage(0,10) //between this 10 burn, the 10 brute, the explosion brute, and the onfire burn, your at about 65 damage if you stop drop and roll immediately -/obj/item/projectile/magic/fireball/infernal +/obj/projectile/magic/fireball/infernal name = "infernal fireball" exp_heavy = -1 exp_light = -1 exp_flash = 4 exp_fire= 5 -/obj/item/projectile/magic/resurrection +/obj/projectile/magic/resurrection name = "bolt of resurrection" icon_state = "ion" -/obj/item/projectile/magic/resurrection/on_hit(var/mob/living/carbon/target) +/obj/projectile/magic/resurrection/on_hit(var/mob/living/carbon/target) . = ..() if(ismob(target)) var/old_stat = target.stat @@ -91,13 +91,13 @@ else to_chat(target, "You rise with a start, you're alive!!!") -/obj/item/projectile/magic/teleport +/obj/projectile/magic/teleport name = "bolt of teleportation" icon_state = "bluespace" var/inner_tele_radius = 0 var/outer_tele_radius = 6 -/obj/item/projectile/magic/teleport/on_hit(var/mob/target) +/obj/projectile/magic/teleport/on_hit(var/mob/target) . = ..() var/teleammount = 0 var/teleloc = target @@ -107,18 +107,18 @@ if(!stuff.anchored && stuff.loc) teleammount++ do_teleport(stuff, stuff, 10) - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(max(round(10 - teleammount),1), 0, stuff.loc) //Smoke drops off if a lot of stuff is moved for the sake of sanity + var/datum/effect_system/fluid_spread/smoke/smoke = new + smoke.set_up(amount = max(round(10 - teleammount),1), location = stuff.loc) //Smoke drops off if a lot of stuff is moved for the sake of sanity smoke.start() -/obj/item/projectile/magic/door +/obj/projectile/magic/door name = "bolt of door creation" icon_state = "energy" var/list/door_types = list(/obj/structure/mineral_door/wood,/obj/structure/mineral_door/iron,/obj/structure/mineral_door/silver,\ /obj/structure/mineral_door/gold,/obj/structure/mineral_door/uranium,/obj/structure/mineral_door/sandstone,/obj/structure/mineral_door/transparent/plasma,\ /obj/structure/mineral_door/transparent/diamond) -/obj/item/projectile/magic/door/on_hit(var/atom/target) +/obj/projectile/magic/door/on_hit(var/atom/target) . = ..() var/atom/T = target.loc if(isturf(target) && target.density) @@ -130,29 +130,29 @@ else if(istype(target, /obj/structure/closet)) OpenCloset(target) -/obj/item/projectile/magic/door/proc/CreateDoor(turf/T) +/obj/projectile/magic/door/proc/CreateDoor(turf/T) var/door_type = pick(door_types) var/obj/structure/mineral_door/D = new door_type(T) T.ChangeTurf(/turf/simulated/floor/plasteel) D.Open() -/obj/item/projectile/magic/door/proc/OpenDoor(var/obj/machinery/door/D) +/obj/projectile/magic/door/proc/OpenDoor(var/obj/machinery/door/D) if(istype(D,/obj/machinery/door/airlock)) var/obj/machinery/door/airlock/A = D A.locked = FALSE D.open() -/obj/item/projectile/magic/door/proc/OpenCloset(var/obj/structure/closet/C) +/obj/projectile/magic/door/proc/OpenCloset(var/obj/structure/closet/C) if(C?.locked) C.locked = FALSE C.open() -/obj/item/projectile/magic/change +/obj/projectile/magic/change name = "bolt of change" icon_state = "ice_1" damage_type = BURN -/obj/item/projectile/magic/change/on_hit(var/atom/change) +/obj/projectile/magic/change/on_hit(var/atom/change) . = ..() wabbajack(change) @@ -308,13 +308,13 @@ qdel(M) return new_mob -/obj/item/projectile/magic/animate +/obj/projectile/magic/animate name = "bolt of animation" icon_state = "red_1" damage_type = BURN -/obj/item/projectile/magic/animate/on_hit(atom/target, blocked = 0, hit_zone) +/obj/projectile/magic/animate/on_hit(atom/target, blocked = 0, hit_zone) . = ..() if(isitem(target) || (isstructure(target) && !is_type_in_list(target, GLOB.protected_objects))) @@ -342,7 +342,7 @@ mimic.ChangeOwner(firer) -/obj/item/projectile/magic/spellblade +/obj/projectile/magic/spellblade name = "blade energy" icon_state = "lavastaff" damage = 15 @@ -352,18 +352,18 @@ dismember_head = TRUE nodamage = FALSE -/obj/item/projectile/magic/slipping +/obj/projectile/magic/slipping name = "magical banana" icon = 'icons/obj/hydroponics/harvest.dmi' icon_state = "banana" hitsound = 'sound/items/bikehorn.ogg' var/slip_disable_time = 10 SECONDS -/obj/item/projectile/magic/slipping/New() +/obj/projectile/magic/slipping/New() ..() SpinAnimation() -/obj/item/projectile/magic/slipping/on_hit(atom/target, blocked = 0) +/obj/projectile/magic/slipping/on_hit(atom/target, blocked = 0) if(isrobot(target)) //You think you're safe, cyborg? FOOL! var/mob/living/silicon/robot/R = target if(!R.IsStunned()) @@ -380,7 +380,7 @@ L.Weaken(slip_disable_time) . = ..() -/obj/item/projectile/magic/arcane_barrage +/obj/projectile/magic/arcane_barrage name = "arcane bolt" icon_state = "arcane_barrage" damage = 20 diff --git a/code/modules/projectiles/projectile/reusable.dm b/code/modules/projectiles/projectile/reusable.dm index f59f08e18b08..4960e2269f2e 100644 --- a/code/modules/projectiles/projectile/reusable.dm +++ b/code/modules/projectiles/projectile/reusable.dm @@ -1,24 +1,24 @@ -/obj/item/projectile/bullet/reusable +/obj/projectile/bullet/reusable name = "reusable bullet" desc = "How do you even reuse a bullet?" var/ammo_type = /obj/item/ammo_casing/caseless/ var/dropped = 0 impact_effect_type = null -/obj/item/projectile/bullet/reusable/on_hit(atom/target, blocked = 0) +/obj/projectile/bullet/reusable/on_hit(atom/target, blocked = 0) . = ..() handle_drop() -/obj/item/projectile/bullet/reusable/on_range() +/obj/projectile/bullet/reusable/on_range() handle_drop() ..() -/obj/item/projectile/bullet/reusable/proc/handle_drop() +/obj/projectile/bullet/reusable/proc/handle_drop() if(!dropped) new ammo_type(loc) dropped = 1 -/obj/item/projectile/bullet/reusable/magspear +/obj/projectile/bullet/reusable/magspear name = "magnetic spear" desc = "WHITE WHALE, HOLY GRAIL" damage = 30 //takes 3 spears to kill a mega carp, one to kill a normal carp @@ -26,7 +26,7 @@ icon_state = "magspear" ammo_type = /obj/item/ammo_casing/caseless/magspear -/obj/item/projectile/bullet/reusable/foam_dart +/obj/projectile/bullet/reusable/foam_dart name = "foam dart" desc = "I hope you're wearing eye protection." damage = 0 // It's a damn toy. @@ -41,7 +41,7 @@ var/obj/item/pen/pen = null log_override = TRUE//it won't log even when there's a pen inside, but since the damage will be so low, I don't think there's any point in making it any more complex -/obj/item/projectile/bullet/reusable/foam_dart/handle_drop() +/obj/projectile/bullet/reusable/foam_dart/handle_drop() if(dropped) return dropped = 1 @@ -49,7 +49,7 @@ var/obj/item/ammo_casing/caseless/foam_dart/old_dart = ammo_casing newdart.modified = old_dart.modified if(pen) - var/obj/item/projectile/bullet/reusable/foam_dart/newdart_FD = newdart.BB + var/obj/projectile/bullet/reusable/foam_dart/newdart_FD = newdart.BB newdart_FD.pen = pen pen.loc = newdart_FD pen = null @@ -58,24 +58,24 @@ newdart.BB.damage_type = damage_type newdart.update_icon() -/obj/item/projectile/bullet/reusable/foam_dart/Destroy() +/obj/projectile/bullet/reusable/foam_dart/Destroy() QDEL_NULL(pen) return ..() -/obj/item/projectile/bullet/reusable/foam_dart/riot +/obj/projectile/bullet/reusable/foam_dart/riot name = "riot foam dart" icon_state = "foamdart_riot" ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot stamina = 25 log_override = FALSE -/obj/item/projectile/bullet/reusable/foam_dart/sniper +/obj/projectile/bullet/reusable/foam_dart/sniper name = "foam sniper dart" icon_state = "foamdartsniper" ammo_type = /obj/item/ammo_casing/caseless/foam_dart/sniper range = 30 -/obj/item/projectile/bullet/reusable/foam_dart/sniper/riot +/obj/projectile/bullet/reusable/foam_dart/sniper/riot name = "riot sniper foam dart" icon_state = "foamdartsniper_riot" ammo_type = /obj/item/ammo_casing/caseless/foam_dart/sniper/riot diff --git a/code/modules/projectiles/projectile/shrapnel.dm b/code/modules/projectiles/projectile/shrapnel.dm new file mode 100644 index 000000000000..5b571257bd2e --- /dev/null +++ b/code/modules/projectiles/projectile/shrapnel.dm @@ -0,0 +1,25 @@ +/obj/projectile/shrapnel + name = "shrapnel" + icon = 'icons/obj/shards.dmi' + throwforce = 14 + throw_speed = EMBED_THROWSPEED_THRESHOLD + sharp = TRUE + damage = 14 + range = 20 + dismemberment = 5 + ricochets_max = 2 + ricochet_chance = 70 + hitsound = 'sound/weapons/pierce.ogg' + ru_names = list( + NOMINATIVE = "шрапнель", + GENITIVE = "шрапнели", + DATIVE = "шрапнели", + ACCUSATIVE = "шрапнель", + INSTRUMENTAL = "шрапнелью", + PREPOSITIONAL = "шрапнели" + ) + +/obj/projectile/shrapnel/Initialize(mapload) + . = ..() + icon_state = pick("shrapnel1", "shrapnel2", "shrapnel3") + ADD_TRAIT(src, TRAIT_SHRAPNEL, INNATE_TRAIT) diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 08b7ac96fd00..ceb6c8e4c623 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -1,4 +1,4 @@ -/obj/item/projectile/ion +/obj/projectile/ion name = "ion bolt" icon_state = "ion" damage = 0 @@ -9,42 +9,42 @@ flag = "energy" hitsound = 'sound/weapons/tap.ogg' -/obj/item/projectile/ion/on_hit(var/atom/target, var/blocked = 0) +/obj/projectile/ion/on_hit(var/atom/target, var/blocked = 0) . = ..() empulse(target, emp_range, emp_range, 1, cause = "[type] fired by [key_name(firer)]") return 1 -/obj/item/projectile/ion/weak +/obj/projectile/ion/weak -/obj/item/projectile/ion/weak/on_hit(atom/target, blocked = 0) +/obj/projectile/ion/weak/on_hit(atom/target, blocked = 0) emp_range = 0 . = ..() return 1 -/obj/item/projectile/bullet/gyro +/obj/projectile/bullet/gyro name ="explosive bolt" icon_state= "bolter" damage = 50 flag = "bullet" -/obj/item/projectile/bullet/gyro/on_hit(var/atom/target, var/blocked = 0) +/obj/projectile/bullet/gyro/on_hit(var/atom/target, var/blocked = 0) ..() explosion(target, -1, 0, 2, cause = "[type] fired by [key_name(firer)]") return 1 -/obj/item/projectile/bullet/a40mm +/obj/projectile/bullet/a40mm name ="40mm grenade" desc = "USE A WEEL GUN" icon_state= "bolter" damage = 60 flag = "bullet" -/obj/item/projectile/bullet/a40mm/on_hit(atom/target, blocked = 0) +/obj/projectile/bullet/a40mm/on_hit(atom/target, blocked = 0) ..() explosion(target, -1, 0, 2, 1, 0, flame_range = 3, cause = "[type] fired by [key_name(firer)]") return 1 -/obj/item/projectile/temp +/obj/projectile/temp name = "temperature beam" icon_state = "temp_4" damage = 0 @@ -56,7 +56,7 @@ pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE hitsound = 'sound/weapons/tap.ogg' -/obj/item/projectile/temp/New(loc, shot_temp) +/obj/projectile/temp/New(loc, shot_temp) ..() if(!isnull(shot_temp)) temperature = shot_temp @@ -93,7 +93,7 @@ icon_state = "temp_4" -/obj/item/projectile/temp/on_hit(mob/living/carbon/human/target, blocked = 0, hit_zone) +/obj/projectile/temp/on_hit(mob/living/carbon/human/target, blocked = 0, hit_zone) . = ..() if(!.) return . @@ -125,7 +125,7 @@ playsound(target.loc, 'sound/effects/bamf.ogg', 50, FALSE) -/obj/item/projectile/meteor +/obj/projectile/meteor name = "meteor" icon = 'icons/obj/meteor.dmi' icon_state = "small" @@ -136,7 +136,7 @@ hitsound = 'sound/effects/meteorimpact.ogg' -/obj/item/projectile/meteor/on_hit(atom/target, blocked, hit_zone) +/obj/projectile/meteor/on_hit(atom/target, blocked, hit_zone) . = ..() if(blocked >= 100) return FALSE @@ -145,7 +145,7 @@ shake_camera(mob, 3, 1) // FLORAGUN -/obj/item/projectile/energy/floraalpha +/obj/projectile/energy/floraalpha name = "alpha somatoray" icon_state = "declone" damage = 2 @@ -158,20 +158,20 @@ /// how strong the fire will be var/fire_stacks = 0.3 -/obj/item/projectile/energy/floraalpha/prehit(atom/target) +/obj/projectile/energy/floraalpha/prehit(atom/target) if(target && !HAS_TRAIT(target, TRAIT_PLANT_ORIGIN)) // burn damage for only plant damage = 0 . = ..() -/obj/item/projectile/energy/floraalpha/on_range() +/obj/projectile/energy/floraalpha/on_range() strike_thing() . = ..() -/obj/item/projectile/energy/floraalpha/on_hit(atom/target, blocked = 0, hit_zone) +/obj/projectile/energy/floraalpha/on_hit(atom/target, blocked = 0, hit_zone) strike_thing(target) . = ..() -/obj/item/projectile/energy/floraalpha/proc/strike_thing(atom/target) +/obj/projectile/energy/floraalpha/proc/strike_thing(atom/target) var/turf/target_turf = get_turf(target) if(!target_turf) target_turf = get_turf(src) @@ -190,12 +190,12 @@ new /obj/effect/temp_visual/removing_flora(get_turf(object)) qdel(object) -/obj/item/projectile/energy/floraalpha/emag +/obj/projectile/energy/floraalpha/emag range = 9 damage = 15 fire_stacks = 10 -/obj/item/projectile/energy/florabeta +/obj/projectile/energy/florabeta name = "beta somatoray" icon_state = "energy" damage = 0 @@ -205,7 +205,7 @@ impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser flag = "energy" -/obj/item/projectile/energy/floragamma +/obj/projectile/energy/floragamma name = "gamma somatoray" icon_state = "energy2" damage = 0 @@ -215,10 +215,10 @@ impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser flag = "energy" -/obj/item/projectile/beam/mindflayer +/obj/projectile/beam/mindflayer name = "flayer ray" -/obj/item/projectile/beam/mindflayer/on_hit(var/atom/target, var/blocked = 0) +/obj/projectile/beam/mindflayer/on_hit(var/atom/target, var/blocked = 0) . = ..() if(ishuman(target)) var/mob/living/carbon/human/M = target @@ -226,7 +226,7 @@ M.AdjustHallucinate(20 SECONDS) M.last_hallucinator_log = name -/obj/item/projectile/clown +/obj/projectile/clown name = "snap-pop" icon = 'icons/obj/toy.dmi' icon_state = "snappop" @@ -234,7 +234,7 @@ damage = 0 -/obj/item/projectile/clown/on_hit(atom/target, blocked, hit_zone) +/obj/projectile/clown/on_hit(atom/target, blocked, hit_zone) . = ..() if(blocked >= 100) return . @@ -245,7 +245,7 @@ new /obj/effect/decal/cleanable/ash(target.loc) -/obj/item/projectile/beam/wormhole +/obj/projectile/beam/wormhole name = "bluespace beam" icon_state = "spark" hitsound = "sparks" @@ -254,12 +254,12 @@ nodamage = TRUE var/is_orange = FALSE -/obj/item/projectile/beam/wormhole/orange +/obj/projectile/beam/wormhole/orange name = "orange bluespace beam" color = "#FF6600" is_orange = TRUE -/obj/item/projectile/beam/wormhole/on_hit(atom/target) +/obj/projectile/beam/wormhole/on_hit(atom/target) if(ismob(target)) if(is_teleport_allowed(target.z)) var/turf/portal_destination = pick(orange(6, src)) @@ -271,17 +271,17 @@ if(!(locate(/obj/effect/portal) in get_turf(target))) gun.create_portal(src) -/obj/item/projectile/bullet/frag12 +/obj/projectile/bullet/frag12 name ="explosive slug" damage = 25 weaken = 10 SECONDS -/obj/item/projectile/bullet/frag12/on_hit(atom/target, blocked = 0) +/obj/projectile/bullet/frag12/on_hit(atom/target, blocked = 0) ..() explosion(target, -1, 0, 1, cause = src) return 1 -/obj/item/projectile/plasma +/obj/projectile/plasma name = "plasma blast" icon_state = "plasmacutter" damage_type = BRUTE @@ -292,7 +292,7 @@ dismember_limbs = TRUE impact_effect_type = /obj/effect/temp_visual/impact_effect/purple_laser -/obj/item/projectile/plasma/on_hit(atom/target, pointblank = 0) +/obj/projectile/plasma/on_hit(atom/target, pointblank = 0) . = ..() if(ismineralturf(target)) if(isancientturf(target)) @@ -305,48 +305,48 @@ else forcedodge = 0 -/obj/item/projectile/plasma/adv +/obj/projectile/plasma/adv damage = 7 range = 5 -/obj/item/projectile/plasma/adv/mega +/obj/projectile/plasma/adv/mega icon_state = "plasmacutter_mega" impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser range = 7 -/obj/item/projectile/plasma/adv/mega/on_hit(atom/target) +/obj/projectile/plasma/adv/mega/on_hit(atom/target) if(istype(target, /turf/simulated/mineral/gibtonite)) var/turf/simulated/mineral/gibtonite/gib = target gib.defuse() . = ..() -/obj/item/projectile/plasma/adv/mega/shotgun +/obj/projectile/plasma/adv/mega/shotgun damage = 2 range = 6 dismemberment = 0 -/obj/item/projectile/plasma/adv/mech +/obj/projectile/plasma/adv/mech damage = 10 range = 9 -/obj/item/projectile/plasma/shotgun +/obj/projectile/plasma/shotgun damage = 2 range = 4 dismemberment = 0 -/obj/item/projectile/energy/teleport +/obj/projectile/energy/teleport name = "teleportation burst" icon_state = "bluespace" damage = 0 nodamage = TRUE var/teleport_target = null -/obj/item/projectile/energy/teleport/New(loc, tele_target) +/obj/projectile/energy/teleport/New(loc, tele_target) ..(loc) if(tele_target) teleport_target = tele_target -/obj/item/projectile/energy/teleport/on_hit(var/atom/target, var/blocked = 0) +/obj/projectile/energy/teleport/on_hit(var/atom/target, var/blocked = 0) if(isliving(target)) if(teleport_target) do_teleport(target, teleport_target, 0)//teleport what's in the tile to the beacon @@ -354,32 +354,32 @@ do_teleport(target, target, 15) //Otherwise it just warps you off somewhere. add_attack_logs(firer, target, "Shot with a [type] [teleport_target ? "(Destination: [teleport_target])" : ""]") -/obj/item/projectile/snowball +/obj/projectile/snowball name = "snowball" icon_state = "snowball" hitsound = 'sound/items/dodgeball.ogg' damage = 4 damage_type = BURN -/obj/item/projectile/snowball/on_hit(atom/target) //chilling +/obj/projectile/snowball/on_hit(atom/target) //chilling . = ..() if(isliving(target)) var/mob/living/M = target M.adjust_bodytemperature(-50) //each hit will drop your body temp, so don't get surrounded! M.ExtinguishMob() //bright side, they counter being on fire! -/obj/item/projectile/ornament +/obj/projectile/ornament name = "ornament" icon_state = "ornament-1" hitsound = 'sound/effects/glasshit.ogg' damage = 7 damage_type = BRUTE -/obj/item/projectile/ornament/New() +/obj/projectile/ornament/New() icon_state = pick("ornament-1", "ornament-2") ..() -/obj/item/projectile/ornament/on_hit(atom/target) //knockback +/obj/projectile/ornament/on_hit(atom/target) //knockback ..() if(!istype(target, /mob)) return 0 @@ -388,7 +388,7 @@ T.throw_at(get_edge_target_turf(target, throwdir),5,5) // 10,10 tooooo much return 1 -/obj/item/projectile/mimic +/obj/projectile/mimic name = "googly-eyed gun" hitsound = 'sound/weapons/genhit1.ogg' damage = 0 @@ -397,7 +397,7 @@ flag = "melee" var/obj/item/gun/stored_gun -/obj/item/projectile/mimic/New(loc, mimic_type) +/obj/projectile/mimic/New(loc, mimic_type) ..(loc) if(mimic_type) stored_gun = new mimic_type(src) @@ -406,7 +406,7 @@ overlays = stored_gun.overlays SpinAnimation(20, -1) -/obj/item/projectile/mimic/on_hit(atom/target) +/obj/projectile/mimic/on_hit(atom/target) ..() var/turf/T = get_turf(src) var/obj/item/gun/G = stored_gun @@ -416,7 +416,7 @@ if(ismob(target)) R.GiveTarget(target) -/obj/item/projectile/bullet/a84mm_hedp +/obj/projectile/bullet/a84mm_hedp name ="\improper HEDP rocket" desc = "USE A WEEL GUN" icon_state= "84mm-hedp" @@ -432,7 +432,7 @@ dismemberment = 100 ricochets_max = 0 -/obj/item/projectile/bullet/a84mm_hedp/on_hit(atom/target, blocked = FALSE) +/obj/projectile/bullet/a84mm_hedp/on_hit(atom/target, blocked = FALSE) ..() explosion(target, -1, 1, 3, 1, 0, flame_range = 6) @@ -449,7 +449,7 @@ if(shrapnel_amount > 0) embed_shrapnel(H, shrapnel_amount) -/obj/item/projectile/bullet/a84mm_hedp/proc/embed_shrapnel(mob/living/carbon/human/H, amount) +/obj/projectile/bullet/a84mm_hedp/proc/embed_shrapnel(mob/living/carbon/human/H, amount) for(var/i = 0, i < amount, i++) if(prob(embed_prob - H.getarmor(attack_flag = BOMB))) var/obj/item/embedded/S = new embedded_type(src) @@ -460,7 +460,7 @@ else to_chat(H, "Shrapnel bounces off your armor!") -/obj/item/projectile/bullet/a84mm_he +/obj/projectile/bullet/a84mm_he name ="\improper HE missile" desc = "Boom." icon_state = "84mm-he" @@ -468,11 +468,11 @@ speed = 0.8 ricochets_max = 0 -/obj/item/projectile/bullet/a84mm_he/on_hit(atom/target, blocked=0) +/obj/projectile/bullet/a84mm_he/on_hit(atom/target, blocked=0) ..() explosion(target, 1, 3, 5, 7) //devastating -/obj/item/projectile/limb +/obj/projectile/limb name = "limb" icon = 'icons/mob/human_races/r_human.dmi' icon_state = "l_arm" @@ -484,7 +484,7 @@ stun = 0.5 eyeblur = 20 -/obj/item/projectile/limb/New(loc, var/obj/item/organ/external/limb) +/obj/projectile/limb/New(loc, var/obj/item/organ/external/limb) ..(loc) if(istype(limb)) name = limb.name diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index d18fdc5ecb43..34c3a99caf16 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -137,9 +137,12 @@ /datum/reagents/proc/copy_to(obj/target, amount = 1, multiplier = 1, preserve_data = TRUE, safety = FALSE) if(!target) return - if(!target.reagents || total_volume <= 0) + if(total_volume <= 0) + return + + var/datum/reagents/R =(istype(target, /datum/reagents))? target : target?.reagents + if(!R || !istype(R)) return - var/datum/reagents/R = target.reagents amount = min(min(amount, total_volume), R.maximum_volume - R.total_volume) var/part = amount / total_volume var/trans_data = null @@ -222,6 +225,18 @@ return transfered +/datum/reagents/proc/can_metabolize(mob/living/carbon/human/H, datum/reagent/R) + if(!H.dna.species || !H.dna.species.reagent_tag) + return FALSE + if((R.process_flags & SYNTHETIC) && (H.dna.species.reagent_tag & PROCESS_SYN)) //SYNTHETIC-oriented reagents require PROCESS_SYN + return TRUE + if((R.process_flags & ORGANIC) && (H.dna.species.reagent_tag & PROCESS_ORG)) //ORGANIC-oriented reagents require PROCESS_ORG + return TRUE + //Species with PROCESS_DUO are only affected by reagents that affect both organics and synthetics, like acid and hellwater + if((R.process_flags & ORGANIC) && (R.process_flags & SYNTHETIC) && (H.dna.species.reagent_tag & PROCESS_DUO)) + return TRUE + + /datum/reagents/proc/metabolize(mob/living/M) if(M) temperature_reagents(M.bodytemperature - 30) @@ -244,17 +259,7 @@ if(ishuman(M)) var/mob/living/carbon/human/H = M //Check if this mob's species is set and can process this type of reagent - var/can_process = FALSE - //If we somehow avoided getting a species or reagent_tag set, we'll assume we aren't meant to process ANY reagents (CODERS: SET YOUR SPECIES AND TAG!) - if(H.dna.species && H.dna.species.reagent_tag) - if((R.process_flags & SYNTHETIC) && (H.dna.species.reagent_tag & PROCESS_SYN)) //SYNTHETIC-oriented reagents require PROCESS_SYN - can_process = TRUE - if((R.process_flags & ORGANIC) && (H.dna.species.reagent_tag & PROCESS_ORG)) //ORGANIC-oriented reagents require PROCESS_ORG - can_process = TRUE - //Species with PROCESS_DUO are only affected by reagents that affect both organics and synthetics, like acid and hellwater - if((R.process_flags & ORGANIC) && (R.process_flags & SYNTHETIC) && (H.dna.species.reagent_tag & PROCESS_DUO)) - can_process = TRUE - + var/can_process = can_metabolize(H, R) //If handle_reagents returns 0, it's doing the reagent removal on its own var/species_handled = !(H.dna.species.handle_reagents(H, R)) can_process = can_process && !species_handled @@ -611,8 +616,8 @@ protection = L.get_permeability_protection() if(protection && show_message) to_chat(L, span_alert("Your clothes protects you from the reaction.")) - - R.reaction_mob(A, method, R.volume * volume_modifier * (1 - protection), show_message) + var/reacting_volume = R.volume * volume_modifier * clamp(1 - protection + R.clothing_penetration, 0, 1) + R.reaction_mob(A, method, reacting_volume, show_message) if("TURF") R.reaction_turf(A, R.volume * volume_modifier, R.color) @@ -628,11 +633,16 @@ /datum/reagents/proc/add_reagent(reagent, amount, list/data=null, reagtemp = T20C, no_react = FALSE) if(!isnum(amount)) return TRUE + update_total() - if(total_volume + amount > maximum_volume) amount = (maximum_volume - total_volume) //Doesnt fit in. Make it disappear. Shouldnt happen. Will happen. + if(total_volume + amount > maximum_volume) amount = (maximum_volume - total_volume) // Doesnt fit in. Make it disappear. Shouldnt happen. Will happen. + if(amount <= 0) return FALSE - chem_temp = clamp((chem_temp * total_volume + reagtemp * amount) / (total_volume + amount), temperature_min, temperature_max) //equalize with new chems + + chem_temp = clamp((chem_temp * total_volume + reagtemp * amount) / (total_volume + amount), temperature_min, temperature_max) // equalize with new chems + if(SEND_SIGNAL(src, COMSIG_EARLY_REAGENT_ADDED, reagent, amount, data, reagtemp, no_react, chem_temp) & COMPONENT_PREVENT_ADD_REAGENT) + return FALSE var/list/cached_reagents = reagent_list for(var/A in cached_reagents) @@ -640,34 +650,43 @@ if(R.id == reagent) R.volume += amount update_total() + if(my_atom) my_atom.on_reagent_change() + R.on_merge(data) + if(!no_react) temperature_react() handle_reactions() + return FALSE - var/datum/reagent/D = GLOB.chemical_reagents_list[reagent] + var/datum/reagent/D = (ispath(reagent))? new reagent() : GLOB.chemical_reagents_list[reagent] if(D) - var/datum/reagent/R = new D.type() cached_reagents += R R.holder = src R.volume = amount R.on_new(data) + if(data) R.data = data if(isliving(my_atom)) - R.on_mob_add(my_atom) //Must occur befor it could posibly run on_mob_delete + R.on_mob_add(my_atom) // Must occur befor it could posibly run on_mob_delete + update_total() + if(my_atom) my_atom.on_reagent_change() + if(!no_react) temperature_react() handle_reactions() + return FALSE + else warning("[my_atom] attempted to add a reagent called '[reagent]' which doesn't exist. ([usr])") @@ -746,6 +765,15 @@ /datum/reagents/proc/get_reagent(type) . = locate(type) in reagent_list +/datum/reagents/proc/get_reagent_by_id(id) + var/list/cached_reagents = reagent_list + for(var/A in cached_reagents) + var/datum/reagent/R = A + if(R.id == id) + return R + + return + /datum/reagents/proc/remove_all_type(reagent_type, amount, strict = FALSE, safety = TRUE) // Removes all reagent of X type. @strict set to 1 determines whether the childs of the type are included. if(!isnum(amount)) return TRUE @@ -838,7 +866,7 @@ var/list/out = list() var/list/reagent_tastes = list() //in the form reagent_tastes["descriptor"] = strength //mobs should get this message when either they cannot taste, the tastes are all too weak for them to detect, or the tastes somehow don't have any strength - var/no_taste_text = "something indescribable" + var/no_taste_text = "вкус чего-то неописуемого" if(minimum_percent > 100) return no_taste_text for(var/datum/reagent/R in reagent_list) @@ -856,18 +884,18 @@ var/percent = (reagent_tastes[taste_desc] / total_taste) * 100 if(percent < minimum_percent) //the lower the minimum percent, the more sensitive the message is continue - var/intensity_desc = "a hint of" + var/intensity_desc = "едва заметный привкус" if(percent > minimum_percent * 3 && percent != 100) - intensity_desc = "a strong flavor of" + intensity_desc = "привкус" else if(percent > minimum_percent * 2 || percent == 100) intensity_desc = "" if(intensity_desc != "") out += "[intensity_desc] [taste_desc]" else - out += "[taste_desc]" + out += "вкус [taste_desc]" - return english_list(out, no_taste_text) + return russian_list(out, no_taste_text) /////////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index f424af5d551b..63425f4f4ace 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -4,6 +4,15 @@ /obj/machinery/chem_dispenser name = "chem dispenser" + desc = "Высокотехнологичная машина, способная синтезировать определённые вещества с помощью сложных физико-химических процессов. Даже не спрашивайте, как оно работает - вы всё равно не поймёте." + ru_names = list( + NOMINATIVE = "химический раздатчик", + GENITIVE = "химического раздатчика", + DATIVE = "химическому раздатчику", + ACCUSATIVE = "химический раздатчик", + INSTRUMENTAL = "химическим раздатчиком", + PREPOSITIONAL = "химическом раздатчике" + ) density = TRUE anchored = TRUE icon = 'icons/obj/chemical.dmi' @@ -11,7 +20,7 @@ use_power = IDLE_POWER_USE idle_power_usage = 40 resistance_flags = FIRE_PROOF | ACID_PROOF - var/ui_title = "Chem Dispenser 5000" + var/ui_title = "ХимРаздатчик 5000" var/cell_type = /obj/item/stock_parts/cell/high var/obj/item/stock_parts/cell/cell var/powerefficiency = 0.1 @@ -27,8 +36,6 @@ "copper", "mercury", "plasma", "radium", "water", "ethanol", "sugar", "iodine", "bromine", "silver", "chromium") var/list/upgrade_reagents = list("oil", "ash", "acetone", "saltpetre", "ammonia", "diethylamine", "fuel") var/list/hacked_reagents = list("toxin") - var/hack_message = "You disable the safety safeguards, enabling the \"Mad Scientist\" mode." - var/unhack_message = "You re-enable the safety safeguards, enabling the \"NT Standard\" mode." var/is_drink = FALSE /obj/machinery/chem_dispenser/get_cell() @@ -74,7 +81,15 @@ /obj/machinery/chem_dispenser/mutagensaltpeter name = "botanical chemical dispenser" - desc = "Creates and dispenses chemicals useful for botany." + desc = "Узкоспециализированная модель химического раздатчика, настроенная на синтез ограниченного числа веществ, специально для ботанических нужд." + ru_names = list( + NOMINATIVE = "ботанический раздатчик", + GENITIVE = "ботанического раздатчика", + DATIVE = "ботаническому раздатчику", + ACCUSATIVE = "ботанический раздатчик", + INSTRUMENTAL = "ботаническим раздатчиком", + PREPOSITIONAL = "ботаническом раздатчике" + ) obj_flags = NODECONSTRUCT dispensable_reagents = list( @@ -127,9 +142,9 @@ /obj/machinery/chem_dispenser/examine(mob/user) . = ..() if(panel_open) - . += "[src]'s maintenance hatch is open!" + . += span_notice("Панель техобслуживания открыта.") if(in_range(user, src) || isobserver(user)) - . += "The status display reads:
Recharging [recharge_amount] power units per interval.
Power efficiency increased by [round((powerefficiency * 1000) - 100, 1)]%." + . += span_notice("
Монитор состояния сообщает: скорость зарядки - [recharge_amount] единиц[declension_ru(recharge_amount, "у", "ы", "")] энергии за единицу времени.
Энергоэффективность увеличена на [round((powerefficiency * 1000) - 100, 1)]%") /obj/machinery/chem_dispenser/process() @@ -256,15 +271,15 @@ if(istype(I, /obj/item/reagent_containers/glass) || istype(I, /obj/item/reagent_containers/food/drinks)) add_fingerprint(user) if(panel_open) - to_chat(user, span_warning("Close the maintenance panel first.")) + balloon_alert(user, "техпанель открыта!") return ATTACK_CHAIN_PROCEED if(beaker) - to_chat(user, span_warning("The [name] already has [beaker] loaded.")) + balloon_alert(user, "слот для ёмкости занят!") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() beaker = I - to_chat(user, span_notice("You have inserted [I] into [src].")) + balloon_alert(user, "ёмкость установлена") SStgui.update_uis(src) // update all UIs attached to src update_icon(UPDATE_OVERLAYS) return ATTACK_CHAIN_BLOCKED_ALL @@ -274,6 +289,7 @@ /obj/machinery/chem_dispenser/crowbar_act(mob/user, obj/item/I) if(!panel_open) + balloon_alert(user, "техпанель закрыта!") return if(default_deconstruction_crowbar(user, I)) return TRUE @@ -307,7 +323,7 @@ return hackedcheck = !hackedcheck - to_chat(user, hackedcheck ? hack_message : unhack_message) + balloon_alert(user, "защитные протоколы [hackedcheck ? "активированы" : "дезактивированы"]") update_reagents(UPDATE_TYPE_HACK) SStgui.update_uis(src) @@ -361,18 +377,24 @@ /obj/machinery/chem_dispenser/soda - icon_state = "soda_dispenser" name = "soda fountain" - desc = "A drink fabricating machine, capable of producing many sugary drinks with just one touch." - ui_title = "Soda Dispens-o-matic" + desc = "Машина, способная синтезировать целый ряд самых разных напитков. Круто!" + ru_names = list( + NOMINATIVE = "раздатчик напитков", + GENITIVE = "раздатчика напитков", + DATIVE = "раздатчику напитков", + ACCUSATIVE = "раздатчик напитков", + INSTRUMENTAL = "раздатчиком напитков", + PREPOSITIONAL = "раздатчике напитков" + ) + icon_state = "soda_dispenser" + ui_title = "Фонтан Напитков 10000" dispensable_reagents = list("water", "ice", "soymilk", "coffee", "tea", "hot_coco", "cola", "spacemountainwind", "dr_gibb", "space_up", "tonic", "sodawater", "lemon_lime", "grapejuice", "sugar", "orangejuice", "lemonjuice", "limejuice", "tomatojuice", "banana", "watermelonjuice", "carrotjuice", "potato", "berryjuice") upgrade_reagents = list("bananahonk", "milkshake", "cafe_latte", "cafe_mocha", "triple_citrus", "icecoffe","icetea") hacked_reagents = list("thirteenloko") - var/list/hackedupgrade_reagents = list("zaza") - hack_message = "You change the mode from 'McNano' to 'Pizza King'." - unhack_message = "You change the mode from 'Pizza King' to 'McNano'." + var/list/hackedupgrade_reagents = list("zaza") //I possess zaza is_drink = TRUE /obj/machinery/chem_dispenser/soda/New() @@ -413,15 +435,21 @@ /obj/machinery/chem_dispenser/beer - icon_state = "booze_dispenser" name = "booze dispenser" - ui_title = "Booze Portal 9001" - desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one." + desc = "Машина, способная синтезировать для вас любую алкогольную бурду, которая только может прийти в голову. Настоящее чудо алкологольных технологий!" + ru_names = list( + NOMINATIVE = "раздатчик алкоголя", + GENITIVE = "раздатчика алкоголя", + DATIVE = "раздатчику алкоголя", + ACCUSATIVE = "раздатчик алкоголя", + INSTRUMENTAL = "раздатчиком алкоголя", + PREPOSITIONAL = "раздатчике алкоголя" + ) + icon_state = "booze_dispenser" + ui_title = "Наливатель Бухла 9001" dispensable_reagents = list("ice", "cream", "cider", "beer", "kahlua", "whiskey", "wine", "vodka", "gin", "rum", "tequila", "vermouth", "cognac", "ale", "mead", "synthanol", "jagermeister", "bluecuracao", "sambuka", "schnaps", "sheridan") upgrade_reagents = list("iced_beer", "irishcream", "manhattan", "antihol", "synthignon", "bravebull") hacked_reagents = list("goldschlager", "patron", "absinthe", "ethanol", "nothing", "sake", "bitter", "champagne", "aperol", "noalco_beer") - hack_message = "You disable the 'nanotrasen-are-cheap-bastards' lock, enabling hidden and very expensive boozes." - unhack_message = "You re-enable the 'nanotrasen-are-cheap-bastards' lock, disabling hidden and very expensive boozes." is_drink = TRUE /obj/machinery/chem_dispenser/beer/New() @@ -451,8 +479,16 @@ //botanical chemical dispenser /obj/machinery/chem_dispenser/botanical name = "botanical chemical dispenser" - desc = "A botanical chemical dispenser on a budget." - ui_title = "Botanical Chem Dispenser" + desc = "Узкоспециализированная модель химического раздатчика, настроенная на синтез ограниченного числа веществ, специально для ботанических нужд." + ru_names = list( + NOMINATIVE = "ботанический раздатчик", + GENITIVE = "ботанического раздатчика", + DATIVE = "ботаническому раздатчику", + ACCUSATIVE = "ботанический раздатчик", + INSTRUMENTAL = "ботаническим раздатчиком", + PREPOSITIONAL = "ботаническом раздатчике" + ) + ui_title = "Ботанический ХимРаздатчик" dispensable_reagents = list("mutagen", "saltpetre", "ammonia", "water") upgrade_reagents = list("atrazine", "glyphosate", "pestkiller", "diethylamine", "ash") @@ -483,6 +519,15 @@ // Handheld chem dispenser /obj/item/handheld_chem_dispenser name = "handheld chem dispenser" + desc = "Компактная версия химического раздатчика. Удобно!" + ru_names = list( + NOMINATIVE = "ручной химический раздатчик", + GENITIVE = "ручного химического раздатчика", + DATIVE = "ручному химическому раздатчику", + ACCUSATIVE = "ручной химический раздатчик", + INSTRUMENTAL = "ручным химическим раздатчиком", + PREPOSITIONAL = "ручном химическом раздатчике" + ) icon = 'icons/obj/chemical.dmi' item_state = "handheld_chem" icon_state = "handheld_chem" @@ -526,20 +571,20 @@ target.reagents.add_reagent(current_reagent, actual) cell.charge -= actual / efficiency if(actual) - to_chat(user, "You dispense [amount] units of [current_reagent] into the [target].") + to_chat(user, span_notice("Вы наливаете [amount] единиц[declension_ru(amount, "у", "ы", "")] [current_reagent] в [target.declent_ru(ACCUSATIVE)].")) update_icon(UPDATE_OVERLAYS) if("remove") if(!target.reagents.remove_reagent(current_reagent, amount)) - to_chat(user, "You remove [amount] units of [current_reagent] from the [target].") + to_chat(user, span_notice("Вы удаляете [amount] единиц[declension_ru(amount, "у", "ы", "")] [current_reagent] из [target.declent_ru(GENITIVE)].")) if("isolate") if(!target.reagents.isolate_reagent(current_reagent)) - to_chat(user, "You remove all but the [current_reagent] from the [target].") + to_chat(user, span_notice("Вы удаляете всё, кроме [current_reagent] в [target.declent_ru(PREPOSITIONAL)].")) /obj/item/handheld_chem_dispenser/attack_self(mob/user) if(cell) ui_interact(user) else - to_chat(user, "The [src] lacks a power cell!") + balloon_alert(user, "нет батареи!") /obj/item/handheld_chem_dispenser/ui_state(mob/user) return GLOB.inventory_state @@ -547,7 +592,7 @@ /obj/item/handheld_chem_dispenser/ui_interact(mob/user, datum/tgui/ui = null) ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user, src, "HandheldChemDispenser", name) + ui = new(user, src, "HandheldChemDispenser", capitalize(declent_ru(NOMINATIVE))) ui.open() /obj/item/handheld_chem_dispenser/ui_data(mob/user) @@ -639,16 +684,16 @@ if(istype(I, /obj/item/stock_parts/cell)) add_fingerprint(user) if(cell) - to_chat(user, span_warning("The [name] already has a cell.")) + balloon_alert(user, "слот для батареи занят!") return ATTACK_CHAIN_PROCEED if(cell.maxcharge < 100) - to_chat(user, span_warning("The [name] requires a higher capacity cell.")) + balloon_alert(user, "требуется батарея большей ёмкости!") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() cell = I update_icon(UPDATE_OVERLAYS) - to_chat(user, span_notice("You have installed [I] into the [src].")) + balloon_alert(user, "батарея установлена") return ATTACK_CHAIN_BLOCKED_ALL return ..() @@ -657,15 +702,15 @@ /obj/item/handheld_chem_dispenser/screwdriver_act(mob/user, obj/item/I) . = TRUE if(isrobot(loc)) - to_chat(user, span_warning("That was dumb idea.")) + balloon_alert(user, "невозможно!") return . if(!cell) add_fingerprint(user) - to_chat(user, span_warning("The [name] has no power cell installed.")) + balloon_alert(user, "батарея отсутствует!") return . if(!I.use_tool(src, user, volume = I.tool_volume)) return . - to_chat(user, span_notice("You have removed [cell] from [src].")) + balloon_alert(user, "батарея извлечена") cell.update_icon() cell.forceMove(drop_location()) cell.add_fingerprint(user) @@ -675,6 +720,15 @@ /obj/item/handheld_chem_dispenser/booze name = "handheld bar tap" + desc = "Компактная версия алкогольного раздатчика. Удобно!" + ru_names = list( + NOMINATIVE = "ручной алкогольный раздатчик", + GENITIVE = "ручного алкогольного раздатчика", + DATIVE = "ручному алкогольному раздатчику", + ACCUSATIVE = "ручной алкогольный раздатчик", + INSTRUMENTAL = "ручным алкогольным раздатчиком", + PREPOSITIONAL = "ручном алкогольном раздатчике" + ) item_state = "handheld_booze" icon_state = "handheld_booze" is_drink = TRUE @@ -685,6 +739,15 @@ /obj/item/handheld_chem_dispenser/soda name = "handheld soda fountain" + desc = "Компактная версия раздатчика напитков. Удобно!" + ru_names = list( + NOMINATIVE = "ручной раздатчик напитков", + GENITIVE = "ручного раздатчика напитков", + DATIVE = "ручному раздатчику напитков", + ACCUSATIVE = "ручной раздатчик напитков", + INSTRUMENTAL = "ручным раздатчиком напитков", + PREPOSITIONAL = "ручном раздатчике напитков" + ) item_state = "handheld_soda" icon_state = "handheld_soda" is_drink = TRUE @@ -695,6 +758,15 @@ /obj/item/handheld_chem_dispenser/botanical name = "handheld botanical chemical dispenser" + desc = "Компактная версия ботанического раздатчика. Удобно!" + ru_names = list( + NOMINATIVE = "ручной ботанический раздатчик", + GENITIVE = "ручного ботанического раздатчика", + DATIVE = "ручному ботаническому раздатчику", + ACCUSATIVE = "ручной ботанический раздатчик", + INSTRUMENTAL = "ручным ботаническим раздатчиком", + PREPOSITIONAL = "ручном ботаническом раздатчике" + ) dispensable_reagents = list( "mutagen", "saltpetre", @@ -712,6 +784,15 @@ /obj/item/handheld_chem_dispenser/cooking name = "handheld cooking chemical dispenser" + desc = "Компактный кухонный раздатчик. Удобно!" + ru_names = list( + NOMINATIVE = "компактный кухонный раздатчик", + GENITIVE = "компактного кухонного раздатчика", + DATIVE = "компактному кухонному раздатчику", + ACCUSATIVE = "компактный кухонный раздатчик", + INSTRUMENTAL = "компактным кухонным раздатчиком", + PREPOSITIONAL = "компактном кухонном раздатчике" + ) dispensable_reagents = list( "sodiumchloride", "blackpepper", diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm index c87f66047f9a..af9e1856cbfa 100644 --- a/code/modules/reagents/chemistry/machinery/chem_heater.dm +++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm @@ -1,5 +1,14 @@ /obj/machinery/chem_heater name = "chemical heater" + desc = "Простая машина, представляющая собой камеру для нагрева помещённых ёмкостей. Не смотря на своё название, также может охлаждать." + ru_names = list( + NOMINATIVE = "химический нагреватель", + GENITIVE = "химического нагревателя", + DATIVE = "химическому нагревателю", + ACCUSATIVE = "химический нагреватель", + INSTRUMENTAL = "химическим нагревателем", + PREPOSITIONAL = "химическом нагревателе" + ) density = TRUE anchored = TRUE icon = 'icons/obj/chemical.dmi' @@ -28,6 +37,11 @@ for(var/obj/item/stock_parts/micro_laser/M in component_parts) speed_increase += 5 * (M.rating - 1) +/obj/machinery/chem_heater/examine(mob/user) + . = ..() + if(panel_open) + . += span_notice("Панель техобслуживания открыта.") + /obj/machinery/chem_heater/process() ..() if(stat & (NOPOWER|BROKEN)) @@ -55,6 +69,7 @@ beaker.forceMove(get_turf(src)) if(user && Adjacent(user) && !issilicon(user)) user.put_in_hands(beaker, ignore_anim = FALSE) + balloon_alert(user, "ёмкость извлечена") beaker = null on = FALSE update_icon(UPDATE_ICON_STATE) @@ -72,12 +87,12 @@ if(istype(I, /obj/item/reagent_containers/glass)) add_fingerprint(user) if(beaker) - to_chat(user, span_warning("The [name] already has [beaker] loaded.")) + balloon_alert(user, "слот для ёмкости занят!") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() beaker = I - to_chat(user, span_notice("You have inserted [I] into [src].")) + balloon_alert(user, "ёмкость установлена") SStgui.update_uis(src) update_icon(UPDATE_ICON_STATE) return ATTACK_CHAIN_BLOCKED_ALL @@ -85,6 +100,7 @@ return ..() + /obj/machinery/chem_heater/wrench_act(mob/user, obj/item/I) . = TRUE default_unfasten_wrench(user, I) @@ -95,6 +111,7 @@ /obj/machinery/chem_heater/crowbar_act(mob/user, obj/item/I) if(!panel_open) + balloon_alert(user, "техпанель закрыта!") return . = TRUE eject_beaker() @@ -139,7 +156,7 @@ ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user, src, "ChemHeater", "Chemical Heater") + ui = new(user, src, "ChemHeater", "Химический нагреватель") ui.open() /obj/machinery/chem_heater/ui_data(mob/user) diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 3348df63932f..d3ba5f1b69f2 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -12,7 +12,15 @@ /obj/machinery/chem_master name = "\improper ChemMaster 3000" - desc = "Used to turn reagents into pills, patches, and store them in bottles." + desc = "Химическое оборудование, предназначенное для преобразования реагентов в таблетки, пластыри и бутылки." + ru_names = list( + NOMINATIVE = "ХимМастер 3000", + GENITIVE = "ХимМастера 3000", + DATIVE = "ХимМастеру 3000", + ACCUSATIVE = "ХимМастер 3000", + INSTRUMENTAL = "ХимМастером 3000", + PREPOSITIONAL = "ХимМастере 3000" + ) density = TRUE anchored = TRUE icon = 'icons/obj/chemical.dmi' @@ -87,6 +95,11 @@ for(var/obj/item/reagent_containers/glass/beaker/B in component_parts) reagents.maximum_volume += B.reagents.maximum_volume +/obj/machinery/chem_master/examine(mob/user) + . = ..() + if(panel_open) + . += span_notice("Панель техобслуживания открыта.") + /obj/machinery/chem_master/ex_act(severity) if(severity < 3) if(beaker) @@ -112,10 +125,6 @@ if(powered()) . += "waitlight" -/obj/machinery/chem_master/blob_act(obj/structure/blob/B) - if(prob(50) && !QDELETED(src)) - qdel(src) - /obj/machinery/chem_master/power_change() if(!..()) return @@ -132,17 +141,17 @@ if(istype(I, /obj/item/reagent_containers/glass) || istype(I, /obj/item/reagent_containers/food/drinks/drinkingglass)) add_fingerprint(user) if(panel_open) - to_chat(user, span_warning("Close the maintenance panel first.")) + balloon_alert(user, "техпанель открыта!") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() if(beaker) - to_chat(user, span_notice("You have swapped [beaker] with [I].")) + balloon_alert(user, "ёмкость заменена") beaker.forceMove(drop_location()) if(Adjacent(user) && !issilicon(user)) //Prevents telekinesis from putting in hand user.put_in_hands(beaker, ignore_anim = FALSE) else - to_chat(user, span_notice("You have inserted [I] into [src].")) + balloon_alert(user, "ёмкость установлена") beaker = I SStgui.update_uis(src) update_icon() @@ -151,15 +160,15 @@ if(istype(I, /obj/item/storage/pill_bottle)) add_fingerprint(user) if(panel_open) - to_chat(user, span_warning("Close the maintenance panel first.")) + balloon_alert(user, "техпанель открыта!") return ATTACK_CHAIN_PROCEED if(loaded_pill_bottle) - to_chat(user, span_warning("The [loaded_pill_bottle.name] is already inserted into [src].")) + balloon_alert(user, "слот занят!") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() loaded_pill_bottle = I - to_chat(user, span_notice("You have inserted [I] into the dispenser slot.")) + balloon_alert(user, "контейнер установлен") SStgui.update_uis(src) return ATTACK_CHAIN_BLOCKED_ALL @@ -168,6 +177,7 @@ /obj/machinery/chem_master/crowbar_act(mob/user, obj/item/I) if(!panel_open) + balloon_alert(user, "техпанель закрыта!") return if(default_deconstruction_crowbar(user, I)) return TRUE @@ -186,6 +196,7 @@ /obj/machinery/chem_master/wrench_act(mob/user, obj/item/I) if(panel_open) + balloon_alert(user, "техпанель открыта!") return return default_unfasten_wrench(user, I, 4 SECONDS) @@ -221,20 +232,20 @@ var/datum/reagent/R = reagent_list[idx] printing = TRUE - visible_message(span_notice("[src] rattles and prints out a sheet of paper.")) + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] дребезжит, после чего из окна печати выпадает лист бумаги.")) playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1) var/obj/item/paper/P = new /obj/item/paper(loc) - P.info = "
Chemical Analysis

" - P.info += "Time of analysis: [station_time_timestamp()]

" - P.info += "Chemical name: [R.name]
" + P.info = "
Химический анализ

" + P.info += "Время анализа: [station_time_timestamp()]

" + P.info += "Название реагента: [R.name]
" if(istype(R, /datum/reagent/blood)) var/datum/reagent/blood/B = R - P.info += "Description: N/A
Blood Type: [B.data["blood_type"]]
DNA: [B.data["blood_species"]]" + P.info += "Описание: Н/Д
Группа крови: [B.data["blood_type"]]
ДНК: [B.data["blood_species"]]" else - P.info += "Description: [R.description]" - P.info += "

Notes:
" - P.name = "Chemical Analysis - [R.name]" + P.info += "Описание: [R.description]" + P.info += "

Заметки:
" + P.name = "Химический анализ - [R.name]" spawn(50) printing = FALSE @@ -294,6 +305,7 @@ if(pill_bottle_wrappers[new_color]) loaded_pill_bottle.wrapper_color = new_color loaded_pill_bottle.apply_wrap() + playsound(loc, 'sound/effects/spray.ogg', 10, TRUE) else . = FALSE @@ -353,7 +365,7 @@ /obj/machinery/chem_master/ui_interact(mob/user, datum/tgui/ui = null) ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user, src, "ChemMaster", name) + ui = new(user, src, "ChemMaster", "ХимМастер 3000") ui.open() /obj/machinery/chem_master/ui_assets(mob/user) @@ -479,12 +491,12 @@ if("addcustom") if(!beaker || !beaker.reagents.total_volume) return - ui_modal_input(src, id, "Please enter the amount to transfer to buffer:", null, arguments, useramount) + ui_modal_input(src, id, "Укажите объём вещества для переноса в буфер:", null, arguments, useramount) if("removecustom") if(!reagents.total_volume) return - ui_modal_input(src, id, "Please enter the amount to transfer to [mode ? "beaker" : "disposal"]:", null, arguments, useramount) + ui_modal_input(src, id, "Укажите объём вещества для [mode ? "переноса в ёмкость" : "удаления"]:", null, arguments, useramount) else return FALSE @@ -520,7 +532,15 @@ /obj/machinery/chem_master/condimaster name = "\improper CondiMaster 3000" - desc = "Used to remove reagents from that single beaker you're using, or create condiment packs and bottles; your choice." + desc = "Химическое оборудование, специализированное под кулинарные нужды. Позволяет создавать пакеты со специями или бутыли, как вы того пожелаете." + ru_names = list( + NOMINATIVE = "КондиМастер 3000", + GENITIVE = "КондиМастера 3000", + DATIVE = "КондиМастеру 3000", + ACCUSATIVE = "КондиМастер 3000", + INSTRUMENTAL = "КондиМастером 3000", + PREPOSITIONAL = "КондиМастере 3000" + ) condi = TRUE /obj/machinery/chem_master/condimaster/Initialize(mapload) @@ -565,7 +585,7 @@ return get_base_placeholder_name(reagents, clamp(reagents.total_volume / set_items_amount, 0, max_units_per_item)) /datum/chemical_production_mode/proc/get_base_placeholder_name(datum/reagents/reagents, amount_per_item) - return "[reagents.get_master_reagent_name()] ([amount_per_item]u)" + return "[reagents.get_master_reagent_name()] ([amount_per_item] ед.)" /** public @@ -593,12 +613,15 @@ var/data = list("count" = count) for(var/i in 1 to count) if(reagents.total_volume <= 0) - to_chat(user, span_warning("Not enough reagents to create these items!")) + to_chat(user, span_warning("Недостаточно реагентов для создания этого предмета!")) return var/obj/item/reagent_containers/P = new item_type(location) if(!isnull(medicine_name)) - P.name = "[medicine_name][name_suffix]" + P.name = "[name_suffix][medicine_name]" + if(P.ru_names) + for(var/j = 1; j <= 6; j++) + P.ru_names[j] = "[P.ru_names[j]] - [medicine_name]" P.pixel_x = rand(-7, 7) // Random position P.pixel_y = rand(-7, 7) configure_item(data, reagents, P) @@ -610,23 +633,23 @@ /datum/chemical_production_mode/pills mode_id = "pills" - production_name = "Pills" + production_name = "Таблетки" production_icon = "pills" item_type = /obj/item/reagent_containers/food/pill max_items_amount = MAX_MULTI_AMOUNT max_units_per_item = MAX_UNITS_PER_PILL - name_suffix = " pill" + name_suffix = "pill - " sprite_mask = "pill" sprites_amount = MAX_PILL_SPRITE /datum/chemical_production_mode/patches mode_id = "patches" - production_name = "Patches" + production_name = "Пластыри" production_icon = "plus-square" item_type = /obj/item/reagent_containers/food/pill/patch max_items_amount = MAX_MULTI_AMOUNT max_units_per_item = MAX_UNITS_PER_PATCH - name_suffix = " patch" + name_suffix = "patch - " sprite_mask = "bandaid" sprites_amount = MAX_PATCH_SPRITE @@ -649,21 +672,21 @@ /datum/chemical_production_mode/bottles mode_id = "chem_bottles" - production_name = "Bottles" + production_name = "Бутылки" production_icon = "wine-bottle" item_type = /obj/item/reagent_containers/glass/bottle/reagent sprites = list("bottle", "small_bottle", "wide_bottle", "round_bottle", "reagent_bottle") max_items_amount = 5 max_units_per_item = 50 - name_suffix = " bottle" + name_suffix = "bottle - " /datum/chemical_production_mode/bottles/get_base_placeholder_name(datum/reagents/reagents, amount_per_item) return reagents.get_master_reagent_name() /datum/chemical_production_mode/condiment_bottles mode_id = "condi_bottles" - production_name = "Bottles" + production_name = "Бутылки" production_icon = "wine-bottle" item_type = /obj/item/reagent_containers/food/condiment max_items_amount = 5 @@ -673,12 +696,12 @@ /datum/chemical_production_mode/condiment_packs mode_id = "condi_packets" - production_name = "Packet" + production_name = "Упаковки для специй" production_icon = "bacon" item_type = /obj/item/reagent_containers/food/condiment/pack max_items_amount = 10 max_units_per_item = 10 - name_suffix = " pack" + name_suffix = "pack - " /datum/chemical_production_mode/condiment_packs/get_base_placeholder_name(datum/reagents/reagents, amount_per_item) return reagents.get_master_reagent_name() diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 04e95abae32d..4dd58af68b0d 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -1,6 +1,14 @@ /obj/machinery/computer/pandemic - name = "PanD.E.M.I.C 2200" - desc = "Used to work with viruses." + name = "PanD.E.M.I.C 220" + desc = "Высокотехнологичная машина, предназначенная для исследования и работы с вирусными культурами. Лучший друг вирусолога!" + ru_names = list( + NOMINATIVE = "Панд.Е.М.И.К 220", + GENITIVE = "Панд.Е.М.И.К 220", + DATIVE = "Панд.Е.М.И.К 220", + ACCUSATIVE = "Панд.Е.М.И.К 220", + INSTRUMENTAL = "Панд.Е.М.И.К 220", + PREPOSITIONAL = "Панд.Е.М.И.К 220" + ) density = TRUE anchored = TRUE icon = 'icons/obj/chemical.dmi' @@ -14,6 +22,11 @@ var/wait = null var/obj/item/reagent_containers/beaker = null +/obj/machinery/computer/pandemic/examine(mob/user) + . = ..() + if(panel_open) + . += span_notice("Панель техобслуживания открыта.") + /obj/machinery/computer/pandemic/New() ..() update_icon() @@ -78,7 +91,7 @@ B.pixel_y = rand(-3, 3) var/path = GetResistancesByIndex(text2num(href_list["create_vaccine"])) var/vaccine_type = path - var/vaccine_name = "Unknown" + var/vaccine_name = "Неизвестно" if(!ispath(vaccine_type)) if(GLOB.archive_diseases[path]) @@ -93,11 +106,19 @@ if(vaccine_type) - B.name = "[vaccine_name] vaccine bottle" + B.name = "бутылка вакцины \"[vaccine_name]\"" + B.ru_names = list( + NOMINATIVE = "бутылка вакцины \"[vaccine_name]\"", + GENITIVE = "бутылки вакцины \"[vaccine_name]\"", + DATIVE = "бутылке вакцины \"[vaccine_name]\"", + ACCUSATIVE = "бутылку вакцины \"[vaccine_name]\"", + INSTRUMENTAL = "бутылкой вакцины \"[vaccine_name]\"", + PREPOSITIONAL = "бутылке вакцины \"[vaccine_name]\"" + ) B.reagents.add_reagent("vaccine", 15, list(vaccine_type)) replicator_cooldown(200) else - temp_html = "The replicator is not ready yet." + temp_html = "Репликатор ещё не готов." updateUsrDialog() return else if(href_list["create_disease_culture"]) @@ -112,7 +133,7 @@ copy = D.Copy() if(!copy) return - var/name = tgui_input_text(usr, "Name:", "Name the culture", D.name, MAX_NAME_LEN) + var/name = tgui_input_text(usr, "Название:", "Введите название культуры", D.name, MAX_NAME_LEN) if(name == null || wait) return var/obj/item/reagent_containers/glass/bottle/B = new(loc) @@ -121,12 +142,20 @@ B.pixel_y = rand(-3, 3) replicator_cooldown(50) var/list/data = list("diseases"=list(copy)) - B.name = "[name] culture bottle" - B.desc = "A small bottle. Contains [copy.agent] culture in synthblood medium." + B.name = "бутылка культуры \"[name]\"" + B.ru_names = list( + NOMINATIVE = "бутылка культуры \"[name]\"", + GENITIVE = "бутылки культуры \"[name]\"", + DATIVE = "бутылке культуры \"[name]\"", + ACCUSATIVE = "бутылку культуры \"[name]\"", + INSTRUMENTAL = "бутылкой культуры \"[name]\"", + PREPOSITIONAL = "бутылке культуры \"[name]\"" + ) + B.desc = "Небольшая бутылка. Содержит синтетическую кровь, заражённую культурой \"[copy.agent]\"." B.reagents.add_reagent("blood",20,data) updateUsrDialog() else - temp_html = "The replicator is not ready yet." + temp_html = "Репликатор ещё не готов." updateUsrDialog() return else if(href_list["empty_beaker"]) @@ -143,7 +172,7 @@ updateUsrDialog() return else if(href_list["name_disease"]) - var/new_name = tgui_input_text(usr, "Name the Disease", "New Name", max_length = MAX_NAME_LEN) + var/new_name = tgui_input_text(usr, "Назовите вирус:", "Введите название вируса", max_length = MAX_NAME_LEN) if(!new_name) return if(..()) @@ -179,22 +208,22 @@ if(!(printing) && D) var/reason = tgui_input_text(user,"Укажите причину выпуска", "Указать", multiline = TRUE) reason += "" - var/english_symptoms = list() + var/symptoms_list = list() for(var/I in D.symptoms) var/datum/symptom/S = I - english_symptoms += S.name - var/symtoms = english_list(english_symptoms) + symptoms_list += S.name + var/symtoms = russian_list(symptoms_list) var/signature if(tgui_alert(user, "Вы хотите подписать этот документ?", "Подпись", list("Да","Нет")) == "Да") - signature = "[user ? user.real_name : "Аноним"]" + signature = "[user ? user.real_name : "Неизвестный"]" else signature = "" printing = 1 var/obj/item/paper/P = new /obj/item/paper(loc) - visible_message("[src] гремит и печатает лист бумаги.") + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] дребезжит, после чего из окна печати выпадает лист бумаги.")) playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1) P.info = "
Выпуск вируса
" @@ -223,7 +252,7 @@ if(temp_html) dat += "[temp_html]

Главное меню" else if(!beaker) - dat += "Пожалуйста, вставьте мензурку.
" + dat += "Пожалуйста, вставьте ёмкость.
" dat += "Закрыть" else var/datum/reagents/R = beaker.reagents @@ -236,15 +265,15 @@ continue break if(!R.total_volume||!R.reagent_list.len) - dat += "Мензурка пуста
" + dat += "Ёмкость пуста
" else if(!Blood) - dat += "В мензурке отсутствует образец крови." + dat += "В ёмкости отсутствует образец крови." else if(!Blood.data) - dat += "В мензурке отсутствует данные крови." + dat += "В ёмкости отсутствует данные крови." else dat += "

Данные образца крови:

" dat += "ДНК крови: [(Blood.data["blood_DNA"]||"нет")]
" - dat += "Тип крови: [(Blood.data["blood_type"]||"нет")]
" + dat += "Группа крови: [(Blood.data["blood_type"]||"нет")]
" dat += "Тип расовой крови: [(Blood.data["blood_species"]||"нет")]
" dat += "

Данные о заболеваниях:

" @@ -279,10 +308,10 @@ if(istype(D, /datum/disease/virus/advance)) var/datum/disease/virus/advance/A = D dat += "
Симптомы: " - var/english_symptoms = list() + var/symptoms_list = list() for(var/datum/symptom/S in A.symptoms) - english_symptoms += S.name - dat += english_list(english_symptoms) + symptoms_list += S.name + dat += russian_list(symptoms_list) dat += "
" if(i == 0) dat += "В образце не обнаружен вирус." @@ -296,7 +325,7 @@ var/i = 0 for(var/type in Blood.data["resistances"]) i++ - var/disease_name = "Unknown" + var/disease_name = "Неизвестно" if(!ispath(type)) var/datum/disease/virus/advance/A = GLOB.archive_diseases[type] @@ -306,13 +335,13 @@ var/datum/disease/D = new type() disease_name = D.name - dat += "
  • [disease_name] - Создать бутылёк с вакциной
  • " + dat += "
  • [disease_name] - Создать бутылка с вакциной
  • " dat += "
    " else dat += "
    Не содержит антител
    " else dat += "
    Не содержит антител
    " - dat += "
    Извлечь мензурку[((R.total_volume&&R.reagent_list.len) ? "-- Очистить и извлечь мензурку":"")]
    " + dat += "
    Извлечь ёмкость[((R.total_volume&&R.reagent_list.len) ? "-- Очистить и извлечь ёмкость":"")]
    " dat += "Закрыть" var/datum/browser/popup = new(user, "pandemic", name, 575, 480) @@ -328,15 +357,15 @@ if(istype(I, /obj/item/reagent_containers)) add_fingerprint(user) if(!(I.container_type & OPENCONTAINER)) - to_chat(user, span_warning("The [I.name] is incompatible.")) + balloon_alert(user, "несовместимо!") return ATTACK_CHAIN_PROCEED if(beaker) - to_chat(user, span_warning("The [name] already has [beaker] loaded.")) + balloon_alert(user, "слот для ёмкости занят!") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() beaker = I - to_chat(user, span_notice("You have inserted [I] into [src].")) + balloon_alert(user, "ёмкость вставлена") updateUsrDialog() update_icon(UPDATE_ICON_STATE) return ATTACK_CHAIN_BLOCKED_ALL @@ -348,6 +377,7 @@ . = TRUE if(!beaker) add_fingerprint(user) + balloon_alert(user, "ёмкость отсутствует!") to_chat(user, span_warning("There is no beaker installed.")) return . if(!I.use_tool(src, user, volume = I.tool_volume)) diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index 3ca90cc829d2..5f9348d9a3cc 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -1,5 +1,14 @@ /obj/machinery/reagentgrinder name = "\improper All-In-One Grinder" + desc = "Измельчает, дробит, разжижает и извлекает вещества из предметов, помещённых внутрь. Ради всего святого, не суйте туда свои пальцы." + ru_names = list( + NOMINATIVE = "универсальный блендер", + GENITIVE = "универсального блендера", + DATIVE = "универсальному блендеру", + ACCUSATIVE = "универсальный блендер", + INSTRUMENTAL = "универсальным блендером", + PREPOSITIONAL = "универсальном блендере" + ) icon = 'icons/obj/kitchen.dmi' icon_state = "juicer1" layer = 2.9 @@ -96,6 +105,34 @@ var/list/holdingitems = list() +/obj/machinery/reagentgrinder/examine(mob/user) + . = ..() + if(panel_open) + . += span_notice("Панель техобслуживания открыта.") + if(in_range(src, user)) + . += span_info("Используйте Alt + ЛКМ, чтобы активировать.
    Используйте Alt + Shift + ЛКМ, чтобы удалить содержимое") + +/obj/machinery/reagentgrinder/click_alt(mob/living/carbon/human/human) + if(operating) + return NONE + + add_fingerprint(human) + grind() + return CLICK_ACTION_SUCCESS + +/obj/machinery/reagentgrinder/CtrlShiftClick(mob/living/carbon/human/human) + if(!istype(human) || !human.Adjacent(src)) + return + + if(human.incapacitated() || HAS_TRAIT(human, TRAIT_HANDS_BLOCKED)) + return + + if(operating) + return + + add_fingerprint(human) + detach(human) + /obj/machinery/reagentgrinder/empty icon_state = "juicer0" beaker = null @@ -143,6 +180,7 @@ if(!anchored || beaker) return if(!panel_open) + balloon_alert(user, "панель закрыта!") return if(!I.tool_use_check(user, 0)) return @@ -173,15 +211,15 @@ if(istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER)) add_fingerprint(user) if(panel_open) - to_chat(user, span_warning("Close the maintenance panel first.")) + balloon_alert(user, "панель открыта!") return ATTACK_CHAIN_PROCEED if(beaker) - to_chat(user, span_warning("The [name] already has [beaker] loaded.")) + balloon_alert(user, "слот для ёмкости занят!") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() beaker = I - to_chat(user, span_notice("You have inserted [I] into [src].")) + balloon_alert(user, "ёмкость установлена") updateUsrDialog() update_icon(UPDATE_ICON_STATE) return ATTACK_CHAIN_BLOCKED_ALL @@ -190,11 +228,11 @@ if(is_type_in_list(I, dried_items) && istype(I, /obj/item/reagent_containers/food/snacks/grown)) var/obj/item/reagent_containers/food/snacks/grown/grown = I if(!grown.dry) - to_chat(user, span_warning("You must dry that first.")) + balloon_alert(user, "сначала высушите!") return ATTACK_CHAIN_PROCEED if(length(holdingitems) >= limit) - to_chat(user, span_warning("The [name] cannot hold anymore items.")) + balloon_alert(user, "нет места!") return ATTACK_CHAIN_PROCEED //Fill machine with a bag! @@ -202,7 +240,7 @@ var/obj/item/storage/bag/bag = I var/original_contents_len = length(bag.contents) if(!length(bag.contents)) - to_chat(user, span_warning("The [bag.name] is empty.")) + balloon_alert(user, "нечего загружать!") return ATTACK_CHAIN_PROCEED for(var/obj/item/thing as anything in bag.contents) @@ -214,21 +252,27 @@ var/new_contents_len = length(bag.contents) if(new_contents_len == original_contents_len) - to_chat(user, span_warning("Nothing in [bag] can be put into [src].")) + balloon_alert(user, "нечего загружать!") return ATTACK_CHAIN_PROCEED - - to_chat(user, span_notice("You have emptied [new_contents_len ? "some" : "all"] of [bag]'s contents into [src].")) + user.visible_message( + span_notice("[user] загрузил[pluralize_ru(user.gender, "", "а", "о", "и")] содержимое [bag.declent_ru(GENITIVE)] в [declent_ru(ACCUSATIVE)]."), + span_notice("Вы загрузили содержимое [bag.declent_ru(GENITIVE)] в [declent_ru(ACCUSATIVE)].")) + balloon_alert(user, "содержимое загружено") updateUsrDialog() return ATTACK_CHAIN_PROCEED_SUCCESS if(!is_type_in_list(I, blend_items) && !is_type_in_list(I, juice_items)) - to_chat(user, span_warning("Cannot refine [I] into a reagent.")) + balloon_alert(user, "не подходит!") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() holdingitems += I + user.visible_message( + span_notice("[user] загрузил[pluralize_ru(user.gender, "", "а", "о", "и")] [I.declent_ru(ACCUSATIVE)] в [declent_ru(ACCUSATIVE)]."), + span_notice("Вы загрузили [I.declent_ru(ACCUSATIVE)] в [declent_ru(ACCUSATIVE)].")) + balloon_alert(user, "загружено в камеру") updateUsrDialog() return ATTACK_CHAIN_BLOCKED_ALL @@ -252,40 +296,40 @@ if(!operating) for (var/obj/item/O in holdingitems) - processing_chamber += "\A [O.name]
    " + processing_chamber += "\A [O.declent_ru(NOMINATIVE)]
    " if (!processing_chamber) is_chamber_empty = 1 - processing_chamber = "Nothing." + processing_chamber = "Ничего." if (!beaker) - beaker_contents = "No beaker attached.
    " + beaker_contents = "Ёмкость не установлена.
    " else is_beaker_ready = 1 - beaker_contents = "The beaker contains:
    " + beaker_contents = "Содержимое ёмкости:
    " var/anything = 0 for(var/datum/reagent/R in beaker.reagents.reagent_list) anything = 1 beaker_contents += "[R.volume] - [R.name]
    " if(!anything) - beaker_contents += "Nothing
    " + beaker_contents += "Ничего
    " dat += {" - Processing chamber contains:
    + Содержимое камеры:
    [processing_chamber]
    [beaker_contents]
    "} if (is_beaker_ready && !is_chamber_empty && !(stat & (NOPOWER|BROKEN))) - dat += "Grind the reagents
    " - dat += "Juice the reagents

    " + dat += "Измельчить
    " + dat += "Выжать

    " if(holdingitems && holdingitems.len > 0) - dat += "Eject the reagents
    " + dat += "Вынуть содержимое камеры
    " if (beaker) - dat += "Detach the beaker
    " + dat += "Извлечь ёмкость
    " else - dat += "Please wait..." + dat += "Пожалуйста, подождите..." - var/datum/browser/popup = new(user, "reagentgrinder", "All-In-One Grinder") + var/datum/browser/popup = new(user, "reagentgrinder", "Универсальный блендер") popup.set_content(dat) popup.open(1) return @@ -305,21 +349,21 @@ if("eject") eject() if ("detach") - detach() + detach(usr) -/obj/machinery/reagentgrinder/proc/detach() +/obj/machinery/reagentgrinder/proc/detach(mob/user) + if(user.stat) + return - if (usr.stat != 0) - return - if (!beaker) - return - beaker.loc = src.loc - beaker = null - update_icon(UPDATE_ICON_STATE) - updateUsrDialog() + if(!beaker) + return -/obj/machinery/reagentgrinder/proc/eject() + beaker.forceMove(get_turf(src)) + beaker = null + update_icon(UPDATE_ICON_STATE) + updateUsrDialog() +/obj/machinery/reagentgrinder/proc/eject() if (usr.stat != 0) return if (holdingitems && holdingitems.len == 0) diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index 628fb17c6038..089731a78ef4 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -1,5 +1,5 @@ /datum/reagent - var/name = "Reagent" + var/name = "Реагент" var/id = "reagent" var/description = "" var/datum/reagents/holder = null @@ -13,6 +13,8 @@ var/heart_rate_decrease = 0 var/heart_rate_stop = 0 var/penetrates_skin = FALSE //Whether or not a reagent penetrates the skin + /// Shows how the reagent penetrates the protection from clothing in TOUCH reactions. Should be [0-1]. 0 by default, 1 - full penetration. + var/clothing_penetration = 0 //Processing flags, defines the type of mobs the reagent will affect //By default, all reagents will ONLY affect organics, not synthetics. Re-define in the reagent's definition if the reagent is meant to affect synths var/process_flags = ORGANIC @@ -28,10 +30,10 @@ var/overdosed = FALSE // You fucked up and this is now triggering it's overdose effects, purge that shit quick. var/current_cycle = 1 var/drink_icon = null - var/drink_name = "Glass of ..what?" - var/drink_desc = "You can't really tell what this is." + var/drink_name = "стакан... чего?" + var/drink_desc = "Вы понятия не имеете, чем это может быть." var/taste_mult = 1 //how easy it is to taste - the more the easier - var/taste_description = "metaphorical salt" + var/taste_description = "метафорической соли" var/addict_supertype = /datum/reagent /datum/reagent/New() @@ -47,8 +49,8 @@ /datum/reagent/proc/reaction_temperature(exposed_temperature, exposed_volume) //By default we do nothing. return -/datum/reagent/proc/reaction_mob(mob/living/M, method = REAGENT_TOUCH, volume, show_message = TRUE) //Some reagents transfer on touch, others don't; dependent on if they penetrate the skin or not. - if(holder) //for catching rare runtimes +/datum/reagent/proc/reaction_mob(mob/living/M, method = REAGENT_TOUCH, volume, show_message = TRUE) // Some reagents transfer on touch, others don't; dependent on if they penetrate the skin or not. + if(holder) // for catching rare runtimes if(method == REAGENT_TOUCH && penetrates_skin && M.reagents && volume >= 1) M.reagents.add_reagent(id, volume) @@ -56,7 +58,8 @@ var/can_become_addicted = M.reagents.reaction_check(M, src) if(can_become_addicted) if(count_by_type(M.reagents.addiction_list, addict_supertype) > 0) - to_chat(M, "You feel slightly better, but for how long?") //sate_addiction handles this now, but kept this for the feed back. + to_chat(M, span_notice("Вы чувствуете себя немногим лучше, но надолго ли?")) // sate_addiction handles this now, but kept this for the feed back. + return TRUE /datum/reagent/proc/reaction_obj(obj/O, volume) @@ -66,6 +69,8 @@ return /datum/reagent/proc/on_mob_life(mob/living/M) + if(current_cycle == 1) + on_mob_start_metabolize(M) current_cycle++ var/total_depletion_rate = metabolization_rate * M.metabolism_efficiency * M.digestion_ratio // Cache it @@ -73,8 +78,16 @@ sate_addiction(M) holder.remove_reagent(id, total_depletion_rate) //By default it slowly disappears. + if(volume <= 0) + on_mob_end_metabolize(M) return STATUS_UPDATE_NONE +/datum/reagent/proc/on_mob_start_metabolize(mob/living/metabolizer) + return + +/datum/reagent/proc/on_mob_end_metabolize(mob/living/metabolizer) + return + /datum/reagent/proc/handle_addiction(mob/living/M, consumption_rate) if(addiction_chance && count_by_type(M.reagents.addiction_list, addict_supertype) < 1) var/datum/reagent/new_reagent = new addict_supertype() @@ -82,7 +95,7 @@ var/current_threshold_accumulated = M.reagents.addiction_threshold_accumulated[new_reagent.id] if(addiction_threshold < current_threshold_accumulated && prob(addiction_chance) && prob(addiction_chance_additional)) - to_chat(M, "You suddenly feel invigorated and guilty...") + to_chat(M, span_danger("Вы чувствуете сильную эйфорию с лёгким оттенком вины...")) new_reagent.last_addiction_dose = world.timeofday M.reagents.addiction_list.Add(new_reagent) diff --git a/code/modules/reagents/chemistry/reagents/admin.dm b/code/modules/reagents/chemistry/reagents/admin.dm index e6287fc47dd3..3e276d716bcd 100644 --- a/code/modules/reagents/chemistry/reagents/admin.dm +++ b/code/modules/reagents/chemistry/reagents/admin.dm @@ -1,12 +1,12 @@ /datum/reagent/medicine/adminordrazine //An OP chemical for admins - name = "Adminordrazine" + name = "Админордразин" id = "adminordrazine" - description = "It's magic. We don't have to explain it." + description = "Это магия. Тут нечего объяснять." reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 process_flags = ORGANIC | SYNTHETIC //Adminbuse knows no bounds! can_synth = FALSE - taste_description = "admin abuse" + taste_description = "админ абуза" /datum/reagent/medicine/adminordrazine/on_mob_life(mob/living/carbon/M) M.setCloneLoss(0, FALSE) @@ -60,7 +60,59 @@ return STATUS_UPDATE_ALL /datum/reagent/medicine/adminordrazine/nanites - name = "Nanites" + name = "Наниты" id = "nanites" - description = "Nanomachines that aid in rapid cellular regeneration." - taste_description = "nanomachines, son" + description = "Наномашины, способствующие быстрой регенерации клеточной структуры." + taste_description = "наномашин, сынок" + +/datum/reagent/admin_cleaner + name = "WD-2381" + color = "#da9eda" + can_synth = FALSE + description = "Супер-пузырьковое чистящее средство, предназначенное для очистки всех предметов. Или, ну, всего, что не прикручено. Или прикуручено, если уж на то пошло. Другими словами: если вы это видите, как вы это заполучили?" + +/datum/reagent/admin_cleaner/organic + name = "WD-2381-MOB" + id = "admincleaner_mob" + description = "Бутылочка со странными нанитами, мгновенно пожирающими тела, как живые, так и мёртвые, а также органы." + +/datum/reagent/admin_cleaner/organic/reaction_mob(mob/living/M, method, volume, show_message) + . = ..() + if(method == REAGENT_TOUCH) + M.dust() + +/datum/reagent/admin_cleaner/organic/reaction_obj(obj/O, volume) + if(is_organ(O)) + qdel(O) + if(istype(O, /obj/effect/decal/cleanable/blood) || istype(O, /obj/effect/decal/cleanable/vomit)) + qdel(O) + if(istype(O, /obj/item/mmi)) + qdel(O) + +/datum/reagent/admin_cleaner/item + name = "WD-2381-ITM" + id = "admincleaner_item" + description = "Бутылочка со странными нанитами, которые мгновенно пожирают предметы, оставляя всё остальное нетронутым." + +/datum/reagent/admin_cleaner/item/reaction_obj(obj/O, volume) + if(isitem(O) && !istype(O, /obj/item/grenade/clusterbuster/segment)) + qdel(O) + +/datum/reagent/admin_cleaner/all + name = "WD-2381-ALL" + id = "admincleaner_all" + description = "Невероятно опасный набор нанитов, созданный Уборщиками Синдиката, которые пожирают всё, к чему прикасаются." + +/datum/reagent/admin_cleaner/all/reaction_obj(obj/O, volume) + if(istype(O, /obj/item/grenade/clusterbuster/segment)) + // don't clear clusterbang segments + // I'm allowed to make this hack because this is admin only anyway + return + if(!iseffect(O)) + qdel(O) + +/datum/reagent/admin_cleaner/all/reaction_mob(mob/living/M, method, volume, show_message) + . = ..() + if(method == REAGENT_TOUCH) + M.dust() + diff --git a/code/modules/reagents/chemistry/reagents/alcohol.dm b/code/modules/reagents/chemistry/reagents/alcohol.dm index 69d68fe4c7e4..d0da172dcfaa 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol.dm @@ -1,8 +1,8 @@ //ALCOHOL WOO /datum/reagent/consumable/ethanol - name = "Ethanol" //Parent class for all alcoholic reagents. + name = "Этанол" //Parent class for all alcoholic reagents. id = "ethanol" - description = "A well-known alcohol with a variety of applications." + description = "Хорошо известный алкоголь, имеющий множество воплощений." reagent_state = LIQUID nutriment_factor = 0 //So alcohol can fill you up! If they want to. color = "#404030" // rgb: 64, 64, 48 @@ -12,7 +12,7 @@ addict_supertype = /datum/reagent/consumable/ethanol var/dizzy_adj = 6 SECONDS var/alcohol_perc = 1 //percentage of ethanol in a beverage 0.0 - 1.0 - taste_description = "liquid fire" + taste_description = "жидкого огня" /datum/reagent/consumable/ethanol/New() addict_supertype = /datum/reagent/consumable/ethanol @@ -25,18 +25,18 @@ /datum/reagent/consumable/ethanol/reaction_obj(obj/O, volume) if(istype(O,/obj/item/paper)) if(istype(O,/obj/item/paper/contract/infernal)) - O.visible_message("The solution ignites on contact with [O].") + O.visible_message(span_warning("Смесь воспламеняется при контакте с [O.declent_ru(INSTRUMENTAL)].")) else var/obj/item/paper/paperaffected = O paperaffected.clearpaper() - paperaffected.visible_message("The solution melts away the ink on the paper.") + paperaffected.visible_message(span_notice("Раствор плавит чернила на бумаге.")) if(istype(O,/obj/item/book)) if(volume >= 5) var/obj/item/book/affectedbook = O affectedbook.dat = null - affectedbook.visible_message("The solution melts away the ink on the book.") + affectedbook.visible_message(span_notice("Раствор плавит чернила в книге.")) else - O.visible_message("It wasn't enough...") + O.visible_message(span_warning("Объём вещества был слишком мал, чтобы нанести какой-либо эффект книге.")) /datum/reagent/consumable/ethanol/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume)//Splashing people with ethanol isn't quite as good as fuel. if(method == REAGENT_TOUCH) @@ -44,73 +44,73 @@ /datum/reagent/consumable/ethanol/beer - name = "Beer" + name = "Пиво" id = "beer" - description = "An alcoholic beverage made from malted grains, hops, yeast, and water." + description = "Алкогольный напиток, приготовленный из солода, хмеля, дрожжей и воды." nutriment_factor = 1 * REAGENTS_METABOLISM color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.2 drink_icon ="beerglass" - drink_name = "Beer glass" - drink_desc = "A freezing pint of beer" - taste_description = "beer" + drink_name = "стакан пива" + drink_desc = "Освежающая пинта пива." + taste_description = "пива" /datum/reagent/consumable/ethanol/cider - name = "Cider" + name = "Сидр" id = "cider" - description = "An alcoholic beverage derived from apples." + description = "Алкогольный напиток, получаемый из яблок." color = "#174116" nutriment_factor = 1 * REAGENTS_METABOLISM alcohol_perc = 0.2 drink_icon = "rewriter" - drink_name = "Cider" - drink_desc = "a refreshing glass of traditional cider" - taste_description = "cider" + drink_name = "стакан сидра" + drink_desc = "Освежающий стакан традиционного сидра." + taste_description = "сидра" /datum/reagent/consumable/ethanol/whiskey - name = "Whiskey" + name = "Виски" id = "whiskey" - description = "A superb and well-aged single-malt whiskey. Damn." + description = "Превосходный и отлично выдержанный односолодовый виски. Чёрт возьми." color = "#664300" // rgb: 102, 67, 0 dizzy_adj = 8 SECONDS alcohol_perc = 0.4 drink_icon = "whiskeyglass" - drink_name = "Glass of whiskey" - drink_desc = "The silky, smokey whiskey goodness inside the glass makes the drink look very classy." - taste_description = "whiskey" + drink_name = "стакан виски" + drink_desc = "Шелковистая, дымчатая структура виски в стакане придаёт напитку очень стильный вид." + taste_description = "виски" /datum/reagent/consumable/ethanol/specialwhiskey - name = "Special Blend Whiskey" + name = "Виски Особого Смешения" id = "specialwhiskey" - description = "Just when you thought regular station whiskey was good... This silky, amber goodness has to come along and ruin everything." + description = "Как раз в тот момент, когда вы уже думаете, что обычный станционный виски - это хорошо... Это шелковистое, янтарное великолепие приходит и всё портит." color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.5 - taste_description = "class" + taste_description = "отличного виски" /datum/reagent/consumable/ethanol/gin - name = "Gin" + name = "Джин" id = "gin" - description = "It's gin. In space. I say, good sir." + description = "Это джин. Крепкий алкогольный напиток, приготовленный с использованием самых разных пряностей." color = "#664300" // rgb: 102, 67, 0 dizzy_adj = 6 SECONDS alcohol_perc = 0.5 drink_icon = "ginvodkaglass" - drink_name = "Glass of gin" - drink_desc = "A crystal clear glass of Griffeater gin." - taste_description = "gin" + drink_name = "стакан джина" + drink_desc = "Кристально чистый бокал джина \"Гриффитер\"." + taste_description = "джина" /datum/reagent/consumable/ethanol/absinthe - name = "Absinthe" + name = "Абсент" id = "absinthe" - description = "Watch out that the Green Fairy doesn't come for you!" + description = "Абсент, очень крепкий напиток для очень крепких парней. Смотрите, чтобы Зелёная Фея не пришла за вами!" color = "#33EE00" // rgb: lots, ??, ?? overdose_threshold = 30 dizzy_adj = 10 SECONDS alcohol_perc = 0.7 drink_icon = "absintheglass" - drink_name = "Glass of Absinthe" - drink_desc = "The green fairy is going to get you now!" - taste_description = "fucking pain" + drink_name = "стакан абсента" + drink_desc = "Теперь Зелёная Фея до вас точно доберётся!" + taste_description = "чёртовой боли" //copy paste from LSD... shoot me /datum/reagent/consumable/ethanol/absinthe/on_mob_life(mob/living/M) @@ -124,36 +124,36 @@ return list(0, update_flags) /datum/reagent/consumable/ethanol/hooch - name = "Hooch" + name = "Самогон" id = "hooch" - description = "Either someone's failure at cocktail making or attempt in alcohol production. In any case, do you really want to drink that?" + description = "Либо чья-то неудачная попытка приготовить коктейль, либо попытка приготовить алкоголь. В любом случае, вы действительно хотите это выпить?" color = "#664300" // rgb: 102, 67, 0 dizzy_adj = 14 SECONDS alcohol_perc = 1 drink_icon = "glass_brown2" - drink_name = "Hooch" - drink_desc = "You've really hit rock bottom now... your liver packed its bags and left last night." - taste_description = "pure resignation" + drink_name = "стакан самогона" + drink_desc = "Теперь вы действительно на дне... Вага печень собрала свои вещи и уехала прошлой ночью." + taste_description = "чистого смирения" /datum/reagent/consumable/ethanol/hooch/on_mob_life(mob/living/carbon/M) if(M.mind && M.mind.assigned_role == JOB_TITLE_CIVILIAN) var/update_flags = STATUS_UPDATE_NONE - update_flags |= M.adjustBruteLoss(-1, FALSE) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-1, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/consumable/ethanol/rum - name = "Rum" + name = "Ром" id = "rum" - description = "Popular with the sailors. Not very popular with everyone else." + description = "Крик подобен грому – дайте людям рому!" color = "#664300" // rgb: 102, 67, 0 overdose_threshold = 30 alcohol_perc = 0.4 dizzy_adj = 10 SECONDS drink_icon = "rumglass" - drink_name = "Glass of Rum" - drink_desc = "Now you want to Pray for a pirate suit, don't you?" - taste_description = "rum" + drink_name = "стакан рома" + drink_desc = "Вам захотельно примерить костюм пирата, разве не так?" + taste_description = "рома" /datum/reagent/consumable/ethanol/rum/overdose_process(mob/living/M, severity) var/update_flags = STATUS_UPDATE_NONE @@ -161,26 +161,26 @@ return ..() | update_flags /datum/reagent/consumable/ethanol/mojito - name = "Mojito" + name = "Мохито" id = "mojito" - description = "If it's good enough for Spesscuba, it's good enough for you." + description = "Если он хорош для Космокубы, то он хорош и для вас." color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.2 drink_icon = "mojito" - drink_name = "Glass of Mojito" - drink_desc = "Fresh from Spesscuba." - taste_description = "mojito" + drink_name = "стакан мохито" + drink_desc = "Прямо с Космокубы." + taste_description = "мохито" /datum/reagent/consumable/ethanol/vodka - name = "Vodka" + name = "Водка" id = "vodka" - description = "Number one drink AND fueling choice for Russians worldwide." + description = "Алкогольный напиток номер один для славян со всей галактики." color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.4 drink_icon = "ginvodkaglass" - drink_name = "Glass of vodka" - drink_desc = "The glass contain wodka. Xynta." - taste_description = "vodka" + drink_name = "стакан водки" + drink_desc = "Стакан с водкой. Только не забывайте закусывать." + taste_description = "водки" /datum/reagent/consumable/ethanol/vodka/on_mob_life(mob/living/M) ..() @@ -188,98 +188,98 @@ M.radiation = max(0, M.radiation-1) /datum/reagent/consumable/ethanol/sake - name = "Sake" + name = "Сакэ" id = "sake" - description = "Anime's favorite drink." + description = "Это сакэ. Как водка, только из риса." color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.2 drink_icon = "sake" - drink_name = "Glass of Sake" - drink_desc = "A glass of Sake." - taste_description = "sake" + drink_name = "стакан сакэ" + drink_desc = "Стакан сакэ. Да, именно так." + taste_description = "сакэ" /datum/reagent/consumable/ethanol/tequila - name = "Tequila" + name = "Текила" id = "tequila" - description = "A strong and mildly flavoured, mexican produced spirit. Feeling thirsty hombre?" + description = "Крепкий алкогольный напиток с мягким вкусом, производимый по традиционным мексиканским технологиям. Не хочешь промочить горло, омбре?" color = "#A8B0B7" // rgb: 168, 176, 183 alcohol_perc = 0.4 drink_icon = "tequilaglass" - drink_name = "Glass of Tequila" - drink_desc = "Now all that's missing is the weird colored shades!" - taste_description = "tequila" + drink_name = "стакан текилы" + drink_desc = "Не хватает только странных цветных оттенков!" + taste_description = "текилы" /datum/reagent/consumable/ethanol/vermouth - name = "Vermouth" + name = "Вермут" id = "vermouth" - description = "You suddenly feel a craving for a martini..." + description = "Вам вдруг ужасно захотелось мартини..." color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.2 drink_icon = "vermouthglass" - drink_name = "Glass of Vermouth" - drink_desc = "You wonder why you're even drinking this straight." - taste_description = "vermouth" + drink_name = "стакан вермута" + drink_desc = "Чёрт, зачем вообще пить это неразбавленным?" + taste_description = "вермута" /datum/reagent/consumable/ethanol/wine - name = "Wine" + name = "Вино" id = "wine" - description = "An premium alchoholic beverage made from distilled grape juice." + description = "Алкогольный напиток премиум-класса, приготовленный из дистиллированного виноградного сока." color = "#7E4043" // rgb: 126, 64, 67 dizzy_adj = 4 SECONDS alcohol_perc = 0.2 drink_icon = "wineglass" - drink_name = "Glass of wine" - drink_desc = "A very classy looking drink." - taste_description = "wine" + drink_name = "Бокал вина" + drink_desc = "Очень стильный на вид напиток." + taste_description = "вина" /datum/reagent/consumable/ethanol/cognac - name = "Cognac" + name = "Коньяк" id = "cognac" - description = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. Classy as fornication." + description = "Сладкий крепкий напиток, приготовленный с помощью многочисленных перегонок и многолетней выдержки. Сама элегантность." color = "#664300" // rgb: 102, 67, 0 dizzy_adj = 8 SECONDS alcohol_perc = 0.4 drink_icon = "cognacglass" - drink_name = "Glass of cognac" - drink_desc = "Damn, you feel like some kind of French aristocrat just by holding this." - taste_description = "cognac" + drink_name = "стакан коньяка" + drink_desc = "Вы чувствуете себя аристократом просто держа его в руках." + taste_description = "коньяка" /datum/reagent/consumable/ethanol/suicider //otherwise known as "I want to get so smashed my liver gives out and I die from alcohol poisoning". - name = "Suicider" + name = "Суисидр" id = "suicider" - description = "An unbelievably strong and potent variety of Cider." + description = "Невероятно крепкий и мощный сорт сидра." color = "#CF3811" dizzy_adj = 40 SECONDS alcohol_perc = 1 //because that's a thing it's supposed to do, I guess drink_icon = "suicider" - drink_name = "Suicider" - drink_desc = "You've really hit rock bottom now... your liver packed its bags and left last night." - taste_description = "approaching death" + drink_name = "стакан суисидра" + drink_desc = "Вы действительно достигли дна... Ваша печень собрала вещи и ушла вчера вечером." + taste_description = "неминуемой смерти" /datum/reagent/consumable/ethanol/ale - name = "Ale" + name = "Эль" id = "ale" - description = "A dark alchoholic beverage made by malted barley and yeast." + description = "Тёмный алкогольный напиток, приготовленный из ячменного солода и дрожжей." color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.1 drink_icon = "aleglass" - drink_name = "Ale glass" - drink_desc = "A freezing pint of delicious Ale" - taste_description = "ale" + drink_name = "стакан эля" + drink_desc = "Освежающая пинта отличного эля." + taste_description = "эля" /datum/reagent/consumable/ethanol/thirteenloko - name = "Thirteen Loko" + name = "Тринадцатый Локо" id = "thirteenloko" - description = "A potent mixture of caffeine and alcohol." + description = "Крепкая смесь кофеина и алкоголя." reagent_state = LIQUID color = "#102000" // rgb: 16, 32, 0 nutriment_factor = 1 * REAGENTS_METABOLISM alcohol_perc = 0.3 heart_rate_increase = 1 drink_icon = "thirteen_loko_glass" - drink_name = "Glass of Thirteen Loko" - drink_desc = "This is a glass of Thirteen Loko, it appears to be of the highest quality. The drink, not the glass" - taste_description = "party" + drink_name = "стакан Тринадцатого Локо" + drink_desc = "Этот стакан Тринадцатого Локо, судя по всему, самого высокого качества. Напиток, а не стакан." + taste_description = "смешанного с алкоголем энергетика" /datum/reagent/consumable/ethanol/thirteenloko/on_mob_life(mob/living/M) M.AdjustDrowsy(-14 SECONDS) @@ -293,173 +293,173 @@ /////////////////////////////////////////////////////////////////cocktail entities////////////////////////////////////////////// /datum/reagent/consumable/ethanol/bilk - name = "Bilk" + name = "Миво" id = "bilk" - description = "This appears to be beer mixed with milk. Disgusting." + description = "Это пиво, смешанное с молоком. Ух..." reagent_state = LIQUID color = "#895C4C" // rgb: 137, 92, 76 nutriment_factor = 2 * REAGENTS_METABOLISM alcohol_perc = 0.2 drink_icon = "glass_brown" - drink_name = "Glass of bilk" - drink_desc = "A brew of milk and beer. For those alcoholics who fear osteoporosis." - taste_description = "bilk" + drink_name = "стакан мива" + drink_desc = "Молоко с пивом - миво. Или пиво с молоком - пивоко. Как вам будет угодно." + taste_description = "мива" /datum/reagent/consumable/ethanol/atomicbomb - name = "Atomic Bomb" + name = "Атомная Бомба" id = "atomicbomb" - description = "Nuclear proliferation never tasted so good." + description = "Ядерное оружие никогда не было таким вкусным." reagent_state = LIQUID color = "#666300" // rgb: 102, 99, 0 alcohol_perc = 0.2 drink_icon = "atomicbombglass" - drink_name = "Atomic Bomb" - drink_desc = "Nanotrasen cannot take legal responsibility for your actions after imbibing." - taste_description = "a long, fiery burn" + drink_name = "Атомная Бомба" + drink_desc = "Nanotrasen не несёт юридической ответственности за ваши действия после употребления напитка." + taste_description = "длинного, терпкого ожога" /datum/reagent/consumable/ethanol/threemileisland - name = "THree Mile Island Iced Tea" + name = "Чай со льдом Три-Майл-Айленд" id = "threemileisland" - description = "Made for a woman, strong enough for a man." + description = "Создан для женщин, достаточно крепок для мужчин." reagent_state = LIQUID color = "#666340" // rgb: 102, 99, 64 alcohol_perc = 0.2 drink_icon = "threemileislandglass" - drink_name = "Three Mile Island Ice Tea" - drink_desc = "A glass of this is sure to prevent a meltdown." - taste_description = "a creeping heat" + drink_name = "Чай со льдом Три-Майл-Айленд" + drink_desc = "Бокал этого напитка точно предотвратит нервный срыв." + taste_description = "текучей волны жара" /datum/reagent/consumable/ethanol/goldschlager - name = "Goldschlager" + name = "Гольдшлягер" id = "goldschlager" - description = "100 proof cinnamon schnapps, made for alcoholic teen girls on spring break." + description = "Шнапс с корицей 100%-ой пробы пробы, созданный для алкоголиков-подростков на весенних каникулах." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.4 drink_icon = "ginvodkaglass" - drink_name = "Glass of goldschlager" - drink_desc = "100 proof that teen girls will drink anything with gold in it." - taste_description = "a deep, spicy warmth" + drink_name = "стакан шольдшлягера" + drink_desc = "Стопроцентное доказательства того, что девочки-подростки будут пить всё, что содержит золото в названии." + taste_description = "глубокого, пряного тепла" /datum/reagent/consumable/ethanol/patron - name = "Patron" + name = "Патрон" id = "patron" - description = "Tequila with silver in it, a favorite of alcoholic women in the club scene." + description = "Текила с серебром в составе, которую пьют женщины-алкоголики в клубах." reagent_state = LIQUID color = "#585840" // rgb: 88, 88, 64 alcohol_perc = 0.4 drink_icon = "patronglass" - drink_name = "Glass of Patron" - drink_desc = "Drinking patron in the bar, with all the subpar ladies." - taste_description = "a gift" + drink_name = "стакан Патрона" + drink_desc = "Пить патрон в клубе в окружении женщин-алкоголиков." + taste_description = "подарка" /datum/reagent/consumable/ethanol/gintonic - name = "Gin and Tonic" + name = "Джин и тоник" id = "gintonic" - description = "An all time classic, mild cocktail." + description = "Классический мягкий коктейль, нестареющая классика." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.4 drink_icon = "gintonicglass" - drink_name = "Gin and Tonic" - drink_desc = "A mild but still great cocktail. Drink up, like a true Englishman." - taste_description = "bitter medicine" + drink_name = "стакан джина и тоника" + drink_desc = "Мягкий, но всё равно отличный коктейль. Пейте, как истинный англичанин." + taste_description = "горького лекарства" /datum/reagent/consumable/ethanol/cuba_libre - name = "Cuba Libre" + name = "Куба Либре" id = "cubalibre" - description = "Rum, mixed with cola. Viva la revolution." + description = "Ром, смешанный с колой. Viva la Revolution!" reagent_state = LIQUID color = "#3E1B00" // rgb: 62, 27, 0 alcohol_perc = 0.2 drink_icon = "cubalibreglass" - drink_name = "Cuba Libre" - drink_desc = "A classic mix of rum and cola." - taste_description = "liberation" + drink_name = "стакан Куба Либре" + drink_desc = "Классический микс рома и колы." + taste_description = "пьянящей свободы" /datum/reagent/consumable/ethanol/whiskey_cola - name = "Whiskey Cola" + name = "Виски-кола" id = "whiskeycola" - description = "Whiskey, mixed with cola. Surprisingly refreshing." + description = "Виски, смешанный с колой. Удивительно освежающий." reagent_state = LIQUID color = "#3E1B00" // rgb: 62, 27, 0 alcohol_perc = 0.3 drink_icon = "whiskeycolaglass" - drink_name = "Whiskey Cola" - drink_desc = "An innocent-looking mixture of cola and Whiskey. Delicious." - taste_description = "whiskey and coke" + drink_name = "стакан виски-колы" + drink_desc = "Невинно выглядящая смесь колы и виски. Вкусно." + taste_description = "виски с колой" /datum/reagent/consumable/ethanol/martini - name = "Classic Martini" + name = "Классический мартини" id = "martini" - description = "Vermouth with Gin. Not quite how 007 enjoyed it, but still delicious." + description = "Вермут с джином. Не совсем то, что пил 007, но всё равно вкусно." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.5 drink_icon = "martiniglass" - drink_name = "Classic Martini" - drink_desc = "Damn, the bartender even stirred it, not shook it." - taste_description = "class" + drink_name = "Классическое мартини" + drink_desc = "Взболтать, но не смешивать." + taste_description = "аристократии" /datum/reagent/consumable/ethanol/vodkamartini - name = "Vodka Martini" + name = "Водка мартини" id = "vodkamartini" - description = "Vodka with Gin. Not quite how 007 enjoyed it, but still delicious." + description = "Водка с джином. Не совсем то, что пил 007, но всё равно вкусно." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.4 drink_icon = "martiniglass" - drink_name = "Vodka martini" - drink_desc ="A bastardisation of the classic martini. Still great." - taste_description = "class and potatoes" + drink_name = "Водка мартини" + drink_desc ="Славянская версия классического мартини. На удивление вкусно." + taste_description = "аристократии и картошки" /datum/reagent/consumable/ethanol/white_russian - name = "White Russian" + name = "Белый Русский" id = "whiterussian" - description = "That's just, like, your opinion, man..." + description = "Но это только твоё мнение, чувак..." reagent_state = LIQUID color = "#A68340" // rgb: 166, 131, 64 alcohol_perc = 0.3 drink_icon = "whiterussianglass" - drink_name = "White Russian" - drink_desc = "A very nice looking drink. But that's just, like, your opinion, man." - taste_description = "very creamy alcohol" + drink_name = "стакан Белого Русского" + drink_desc = "Странно выглядящий напиток. Но это только твое мнение, чувак." + taste_description = "очень кремового алкоголя" /datum/reagent/consumable/ethanol/screwdrivercocktail - name = "Screwdriver" + name = "Отвёртка" id = "screwdrivercocktail" - description = "Vodka, mixed with plain ol' orange juice. The result is surprisingly delicious." + description = "Водка, смешанная с апельсиновым соком. Достаточно вкусно." reagent_state = LIQUID color = "#A68310" // rgb: 166, 131, 16 alcohol_perc = 0.3 drink_icon = "screwdriverglass" - drink_name = "Screwdriver" - drink_desc = "A simple, yet superb mixture of Vodka and orange juice. Just the thing for the tired engineer." - taste_description = "a naughty secret" + drink_name = "стакан Отвёртки" + drink_desc = "Простая, но изящная смесь водки и апельсинового сока. То, что нужно уставшему инженеру." + taste_description = "водки с апельсином" /datum/reagent/consumable/ethanol/booger - name = "Booger" + name = "Козявка" id = "booger" - description = "Eww..." + description = "Ууу..." reagent_state = LIQUID color = "#A68310" // rgb: 166, 131, 16 alcohol_perc = 0.2 drink_icon = "booger" - drink_name = "Booger" - drink_desc = "Eww..." - taste_description = "a fruity mess" + drink_name = "стакан Козявки" + drink_desc = "Ууу..." + taste_description = "фруктовой массы" /datum/reagent/consumable/ethanol/bloody_mary - name = "Bloody Mary" + name = "Кровавая Мэри" id = "bloodymary" - description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice." + description = "Странная, но приятная смесь из водки, томатов и сока лайма. А томатов ли?" reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.2 drink_icon = "bloodymaryglass" - drink_name = "Bloody Mary" - drink_desc = "Tomato juice, mixed with Vodka and a lil' bit of lime. Tastes like liquid murder." - taste_description = "tomatoes with booze" + drink_name = "стакан Кровавой Мэри" + drink_desc = "Томатный сок, смешанный с водкой и небольшим количеством лайма. На вкус как жидкое убийство." + taste_description = "томатов со спиртом" /datum/reagent/consumable/ethanol/bloody_mary/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -468,64 +468,64 @@ return ..() | update_flags /datum/reagent/consumable/ethanol/gargle_blaster - name = "Pan-Galactic Gargle Blaster" + name = "Пан-Галактический Грызлодёр" id = "gargleblaster" - description = "Whoah, this stuff looks volatile!" + description = "Вау, эта штука выглядит нестабильно!" reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.7 //ouch drink_icon = "gargleblasterglass" - drink_name = "Pan-Galactic Gargle Blaster" - drink_desc = "Does... does this mean that Arthur and Ford are on the station? Oh joy." - taste_description = "the number fourty two" + drink_name = "Пан-Галактический Грызлодёр" + drink_desc = "Значит ли... значит ли это, что Артур и Форд на станции? О, отлично." + taste_description = "числа 42" /datum/reagent/consumable/ethanol/flaming_homer - name = "Flaming Moe" + name = "Горящий Мо" id = "flamingmoe" - description = "This appears to be a mixture of various alcohols blended with prescription medicine. It is lightly toasted..." + description = "Это, по-видимому, смесь различных алкогольных напитков, смешанных с рецептурным лекарством." reagent_state = LIQUID color = "#58447f" //rgb: 88, 66, 127 alcohol_perc = 0.5 drink_icon = "flamingmoeglass" - drink_name = "Flaming Moe" - drink_desc = "Happiness is just a Flaming Moe away!" - taste_description = "caramelised booze and sweet, salty medicine" + drink_name = "Горящий Мо" + drink_desc = "Смотри не обожгись!" + taste_description = "карамелизированной выпивки и лекарства" /datum/reagent/consumable/ethanol/brave_bull - name = "Brave Bull" + name = "Храбрый Бык" id = "bravebull" - description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice." + description = "Текила с кофейным ликёром. Хех." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.3 drink_icon = "bravebullglass" - drink_name = "Brave Bull" - drink_desc = "Tequila and Coffee liquor, brought together in a mouthwatering mixture. Drink up." - taste_description = "sweet alcohol" + drink_name = "стакан Бравого Быка" + drink_desc = "Текила и кофейный ликер, соединённые в аппетитную смесь. Так пейте же." + taste_description = "сладкого алкоголя" /datum/reagent/consumable/ethanol/tequila_sunrise - name = "Tequila Sunrise" + name = "Текила Санрайз" id = "tequilasunrise" - description = "Tequila and orange juice. Much like a Screwdriver, only Mexican~" + description = "Текила и апельсиновый сок. Как \"Отвёртка\", только по-мексикански." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.3 drink_icon = "tequilasunriseglass" - drink_name = "Tequila Sunrise" - drink_desc = "Oh great, now you feel nostalgic about sunrises back on Terra..." - taste_description = "fruity alcohol" + drink_name = "стакан Текилы Санрайз" + drink_desc = "Отлично, теперь вы ностальгируете по восходам на Терре..." + taste_description = "фруктового алкоголя" /datum/reagent/consumable/ethanol/toxins_special - name = "Toxins Special" + name = "Особый из Токсикологии" id = "toxinsspecial" - description = "This thing is FLAMING!. CALL THE DAMN SHUTTLE!" + description = "Эта штука горит! ВЫЗОВИТЕ ЧЁРТОВ ШАТТЛ!" reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.5 drink_icon = "toxinsspecialglass" - drink_name = "Toxins Special" - drink_desc = "Whoah, this thing is on FIRE" - taste_description = "FIRE" + drink_name = "Особый из Токсикологии" + drink_desc = "Уох, эта штука ГОРИТ!" + taste_description = "огня" /datum/reagent/consumable/ethanol/toxins_special/on_mob_life(mob/living/M) if(M.bodytemperature < (BODYTEMP_NORMAL + 20)) @@ -533,164 +533,164 @@ return ..() /datum/reagent/consumable/ethanol/beepsky_smash - name = "Beepsky Smash" + name = "Удар Бипски" id = "beepskysmash" - description = "Deny drinking this and prepare for THE LAW." + description = "Перестаньте пить это и приготовьтесь к ПРАВОСУДИЮ." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.5 drink_icon = "beepskysmashglass" - description = "Whiskey-imbued cream, what else would you expect from the Irish." - drink_name = "Beepsky Smash" - drink_desc = "Heavy, hot and strong. Just like the Iron fist of the LAW." - taste_description = "THE LAW" + drink_name = "Удар Бипски" + drink_desc = "Тяжелый, горячий и крепкий. Как железный кулак ПРАВОСУДИЯ." + taste_description = "правосудия" /datum/reagent/consumable/ethanol/beepsky_smash/on_mob_life(mob/living/M) M.drop_from_hands() return ..() /datum/reagent/consumable/ethanol/irish_cream - name = "Irish Cream" + name = "Ирландские Сливки" + description = "Крем с добавлением виски - чего ещё ожидать от ирландцев?" id = "irishcream" reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.3 drink_icon = "irishcreamglass" - drink_name = "Irish Cream" - drink_desc = "It's cream, mixed with whiskey. What else would you expect from the Irish?" - taste_description = "creamy alcohol" + drink_name = "стакан Ирландских Сливок" + drink_desc = "Крем с добавлением виски - чего ещё ожидать от ирландцев?" + taste_description = "сливочного алкоголя" /datum/reagent/consumable/ethanol/manly_dorf - name = "The Manly Dorf" + name = "Мужественный Дворф" id = "manlydorf" - description = "Beer and Ale, brought together in a delicious mix. Intended for true men only." + description = "Крепкая смесь из эля и пива для настоящих трудяг. За Карла!" reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.2 drink_icon = "manlydorfglass" - drink_name = "The Manly Dorf" - drink_desc = "A manly concotion made from Ale and Beer. Intended for true men only." - taste_description = "manliness" + drink_name = "Кружка Мужественного Дворфа" + drink_desc = "Крепкая смесь из эля и пива для настоящих трудяг. За Карла!" + taste_description = "мужественности" /datum/reagent/consumable/ethanol/longislandicedtea - name = "Long Island Iced Tea" + name = "Чай со льдом Лонг Айленд" id = "longislandicedtea" - description = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only." + description = "Содержимое ликёрного шкафа, смешанное в восхитительный микс. Предназначен только для женщин-алкоголичек среднего возраста." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.5 drink_icon = "longislandicedteaglass" - drink_name = "Long Island Iced Tea" - drink_desc = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only." - taste_description = "fruity alcohol" + drink_name = "стакан чая со льдом Лонг Айленд" + drink_desc = "Содержимое ликёрного шкафа, смешанное в восхитительный микс. Предназначен только для женщин-алкоголичек среднего возраста." + taste_description = "фруктового алкоголя" /datum/reagent/consumable/ethanol/moonshine - name = "Moonshine" + name = "Самогон" id = "moonshine" - description = "You've really hit rock bottom now... your liver packed its bags and left last night." + description = "Вы действительно достигли дна... ваша печень собрала вещи и ушла вчера вечером." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.8 //yeeehaw drink_icon = "glass_clear" - drink_name = "Moonshine" - drink_desc = "You've really hit rock bottom now... your liver packed its bags and left last night." - taste_description = "prohibition" + drink_name = "стакан самогона" + drink_desc = "Вы действительно достигли дна... ваша печень собрала вещи и ушла вчера вечером." + taste_description = "чего-то запрещённого" /datum/reagent/consumable/ethanol/b52 name = "B-52" id = "b52" - description = "Coffee, Irish Cream, and congac. You will get bombed." + description = "Кофе, ирландские сливки и коньяк. Взрывная смесь." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.3 drink_icon = "b52glass" - drink_name = "B-52" - drink_desc = "Kahlua, Irish Cream, and congac. You will get bombed." - taste_description = "destruction" + drink_name = "стакан B-52" + drink_desc = "Кофе, ирландские сливки и коньяк. Взрывная смесь." + taste_description = "уничтожения" /datum/reagent/consumable/ethanol/irishcoffee - name = "Irish Coffee" + name = "Кофе по Ирландски" id = "irishcoffee" - description = "Coffee, and alcohol. More fun than a Mimosa to drink in the morning." + description = "Кофе и алкоголь. Веселее, чем пить \"Мимозу\" по утрам." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.2 drink_icon = "irishcoffeeglass" - drink_name = "Irish Coffee" - drink_desc = "Coffee and alcohol. More fun than a Mimosa to drink in the morning." - taste_description = "coffee and booze" + drink_name = "Кофе по Ирландски" + drink_desc = "Кофе и алкоголь. Веселее, чем пить \"Мимозу\" по утрам." + taste_description = "кофе с алкоголем" /datum/reagent/consumable/ethanol/margarita - name = "Margarita" + name = "Маргарита" id = "margarita" - description = "On the rocks with salt on the rim. Arriba~!" + description = "Текила с ликёром и лаймом. Так по-мексикански." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.3 drink_icon = "margaritaglass" - drink_name = "Margarita" - drink_desc = "On the rocks with salt on the rim. Arriba~!" - taste_description = "daisies" + drink_name = "Маргарита" + drink_desc = "Текила с ликёром и лаймом. Так по-мексикански." + taste_description = "маргариток" /datum/reagent/consumable/ethanol/black_russian - name = "Black Russian" + name = "Чёрный Русский" id = "blackrussian" - description = "For the lactose-intolerant. Still as classy as a White Russian." + description = "Для тех, кто не переносит лактозу. По-прежнему стильный, как и Белый Русский." reagent_state = LIQUID color = "#360000" // rgb: 54, 0, 0 alcohol_perc = 0.4 drink_icon = "blackrussianglass" - drink_name = "Black Russian" - drink_desc = "For the lactose-intolerant. Still as classy as a White Russian." - taste_description = "sweet alcohol" + drink_name = "стакан Чёрного Русского" + drink_desc = "Для тех, кто не переносит лактозу. По-прежнему стильный, как и Белый Русский." + taste_description = "сладкого алкоголя" /datum/reagent/consumable/ethanol/manhattan - name = "Manhattan" + name = "Манхэттен" id = "manhattan" - description = "The Detective's undercover drink of choice. He never could stomach gin..." + description = "Любимый напиток детектива под прикрытием. Он никогда не переносил джин..." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.4 drink_icon = "manhattanglass" - drink_name = "Manhattan" - drink_desc = "The Detective's undercover drink of choice. He never could stomach gin..." - taste_description = "a bustling city" + drink_name = "Манхэттен" + drink_desc = "Любимый напиток детектива под прикрытием. Он никогда не переносил джин..." + taste_description = "городской суеты" /datum/reagent/consumable/ethanol/manhattan_proj - name = "Manhattan Project" + name = "Манхэттенский проект" id = "manhattan_proj" - description = "A scientist's drink of choice, for pondering ways to blow up the station." + description = "Напиток для учёных, размышляющих о том, как взорвать станцию." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.4 drink_icon = "proj_manhattanglass" - drink_name = "Manhattan Project" - drink_desc = "A scientist's drink of choice, for thinking how to blow up the station." - taste_description = "the apocalypse" + drink_name = "Манхэттенский проект" + drink_desc = "Напиток для учёных, размышляющих о том, как взорвать станцию." + taste_description = "апокалипсиса" /datum/reagent/consumable/ethanol/whiskeysoda - name = "Whiskey Soda" + name = "Виски-сода" id = "whiskeysoda" - description = "Ultimate refreshment." + description = "Ультимативный способ освежиться." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.3 drink_icon = "whiskeysodaglass2" - drink_name = "Whiskey Soda" - drink_desc = "Ultimate refreshment." - taste_description = "mediocrity" + drink_name = "стакан виски-соды" + drink_desc = "Ультимативный способ освежиться." + taste_description = "посредственности" /datum/reagent/consumable/ethanol/antifreeze - name = "Anti-freeze" + name = "Анти-фриз" id = "antifreeze" - description = "Ultimate refreshment." + description = "Ультимативный способ освежиться." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.2 drink_icon = "antifreeze" - drink_name = "Anti-freeze" - drink_desc = "The ultimate refreshment." - taste_description = "poor life choices" + drink_name = "Анти-фриз" + drink_desc = "Ультимативный способ освежиться." + taste_description = "неправильности жизненного пути" /datum/reagent/consumable/ethanol/antifreeze/on_mob_life(mob/living/M) if(M.bodytemperature < (BODYTEMP_NORMAL + 20)) @@ -698,104 +698,104 @@ return ..() /datum/reagent/consumable/ethanol/barefoot - name = "Barefoot" + name = "Босяк" id = "barefoot" - description = "Barefoot and pregnant" + description = "Босоногость и беременность." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.2 drink_icon = "b&p" - drink_name = "Barefoot" - drink_desc = "Barefoot and pregnant" - taste_description = "pregnancy" + drink_name = "Босяк" + drink_desc = "Босоногость и беременность." + taste_description = "беременности" /datum/reagent/consumable/ethanol/snowwhite - name = "Snow White" + name = "Белоснежка" id = "snowwhite" - description = "A cold refreshment" + description = "Холодный напиток. Реально холодный." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.2 drink_icon = "snowwhite" - drink_name = "Snow White" - drink_desc = "A cold refreshment." - taste_description = "a poisoned apple" + drink_name = "стакан Белоснежки" + drink_desc = "Холодный напиток. Реально холодный." + taste_description = "отравленного яблока" /datum/reagent/consumable/ethanol/demonsblood - name = "Demons Blood" + name = "Кровь Демона" id = "demonsblood" - description = "AHHHH!!!!" + description = "ААААА!!!" reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 dizzy_adj = 20 SECONDS alcohol_perc = 0.4 drink_icon = "demonsblood" - drink_name = "Demons Blood" - drink_desc = "Just looking at this thing makes the hair at the back of your neck stand up." - taste_description = "evil" + drink_name = "Кровь Демона" + drink_desc = "От одного взгляда на эту штуку волосы на затылке встают дыбом." + taste_description = "зла" /datum/reagent/consumable/ethanol/vodkatonic - name = "Vodka and Tonic" + name = "Водка и тоник" id = "vodkatonic" - description = "For when a gin and tonic isn't russian enough." + description = "Когда \"Джин и тоник\" не достаточно славянский." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 dizzy_adj = 8 SECONDS alcohol_perc = 0.3 drink_icon = "vodkatonicglass" - drink_name = "Vodka and Tonic" - drink_desc = "For when a gin and tonic isn't russian enough." - taste_description = "bitter medicine" + drink_name = "стакан водки и тоника" + drink_desc = "Когда \"Джин и тоник\" не достаточно славянский." + taste_description = "горького лекарства" /datum/reagent/consumable/ethanol/ginfizz - name = "Gin Fizz" + name = "Джин-физ" id = "ginfizz" - description = "Refreshingly lemony, deliciously dry." + description = "Освежающе лимонный, восхитительно сухой." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 dizzy_adj = 8 SECONDS alcohol_perc = 0.4 drink_icon = "ginfizzglass" - drink_name = "Gin Fizz" - drink_desc = "Refreshingly lemony, deliciously dry." - taste_description = "fizzy alcohol" + drink_name = "стакан Джин-физа" + drink_desc = "Освежающе лимонный, восхитительно сухой." + taste_description = "шипучего алкоголя" /datum/reagent/consumable/ethanol/bahama_mama - name = "Bahama mama" + name = "Бахама Мама" id = "bahama_mama" - description = "Tropic cocktail." + description = "Тропический коктейль." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.2 drink_icon = "bahama_mama" - drink_name = "Bahama Mama" - drink_desc = "Tropic cocktail" - taste_description = "HONK" + drink_name = "Бахама Мама" + drink_desc = "Тропический коктейль." + taste_description = "фруктов и алкоголя" /datum/reagent/consumable/ethanol/singulo - name = "Singulo" + name = "Сингуло" id = "singulo" - description = "A blue-space beverage!" + description = "Блю-спейс коктейль, вау!" reagent_state = LIQUID color = "#2E6671" // rgb: 46, 102, 113 dizzy_adj = 30 SECONDS alcohol_perc = 0.7 drink_icon = "singulo" - drink_name = "Singulo" - drink_desc = "A blue-space beverage." - taste_description = "infinity" + drink_name = "Сингуло" + drink_desc = "Блю-спейс коктейль, вау!" + taste_description = "бесконечности" /datum/reagent/consumable/ethanol/sbiten - name = "Sbiten" + name = "Сбитень" id = "sbiten" - description = "A spicy Vodka! Might be a little hot for the little guys!" + description = "Пряная водка! Горячо!" reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.4 drink_icon = "sbitenglass" - drink_name = "Sbiten" - drink_desc = "A spicy mix of Vodka and Spice. Very hot." - taste_description = "comforting warmth" + drink_name = "кружка Сбитня" + drink_desc = "Пряная водка! Горячо!" + taste_description = "приятно согревающего алкоголя" /datum/reagent/consumable/ethanol/sbiten/on_mob_life(mob/living/M) if(M.bodytemperature < (BODYTEMP_NORMAL + 50)) @@ -803,53 +803,53 @@ return ..() /datum/reagent/consumable/ethanol/devilskiss - name = "Devils Kiss" + name = "Поцелуй Дьявола" id = "devilskiss" - description = "Creepy time!" + description = "Время страшилок!" reagent_state = LIQUID color = "#A68310" // rgb: 166, 131, 16 alcohol_perc = 0.3 drink_icon = "devilskiss" - drink_name = "Devils Kiss" - drink_desc = "Creepy time!" - taste_description = "naughtiness" + drink_name = "Поцелуй Дьявола" + drink_desc = "Время страшилок!" + taste_description = "озорства" /datum/reagent/consumable/ethanol/red_mead - name = "Red Mead" + name = "Красная медовуха" id = "red_mead" - description = "The true Viking drink! Even though it has a strange red color." + description = "Напиток Настоящих Викингов! Даже несмотря на странный красный цвет." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.2 drink_icon = "red_meadglass" - drink_name = "Red Mead" - drink_desc = "A True Vikings Beverage, though its color is strange." - taste_description = "blood" + drink_name = "красная медовуха" + drink_desc = "Напиток Настоящих Викингов! Даже несмотря на странный красный цвет." + taste_description = "крови и мёда" /datum/reagent/consumable/ethanol/mead - name = "Mead" + name = "Медовуха" id = "mead" - description = "A Vikings drink, though a cheap one." + description = "Напиток Настоящих Викингов!" reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 nutriment_factor = 1 * REAGENTS_METABOLISM alcohol_perc = 0.2 drink_icon = "meadglass" - drink_name = "Mead" - drink_desc = "A Vikings Beverage, though a cheap one." - taste_description = "honey" + drink_name = "медовуха" + drink_desc = "Напиток Настоящих Викингов!" + taste_description = "мёда" /datum/reagent/consumable/ethanol/iced_beer - name = "Iced Beer" + name = "Пиво со льдом" id = "iced_beer" - description = "A beer which is so cold the air around it freezes." + description = "Пиво, настолько ледяное, что воздух вокруг него замерзает." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.2 drink_icon = "iced_beerglass" - drink_name = "Iced Beer" - drink_desc = "A beer so frosty, the air around it freezes." - taste_description = "cold beer" + drink_name = "стакан пива со льдом" + drink_desc = "Пиво, настолько ледяное, что воздух вокруг него замерзает." + taste_description = "холодного пива" /datum/reagent/consumable/ethanol/iced_beer/on_mob_life(mob/living/M) if(M.bodytemperature > (BODYTEMP_NORMAL - 40)) @@ -857,64 +857,64 @@ return ..() /datum/reagent/consumable/ethanol/grog - name = "Grog" + name = "Грог" id = "grog" - description = "Watered down rum, Nanotrasen approves!" + description = "Разведённый водом ром. Просто, но со вкусом." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.2 drink_icon = "grogglass" - drink_name = "Grog" - drink_desc = "A fine and cepa drink for Space." - taste_description = "strongly diluted rum" + drink_name = "кружка грога" + drink_desc = "Разведённый водом ром. Просто, но со вкусом." + taste_description = "сильно разбавленного рома" /datum/reagent/consumable/ethanol/aloe - name = "Aloe" + name = "Алоэ" id = "aloe" - description = "So very, very, very good." + description = "Хорошо, очень хорошо." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.2 drink_icon = "aloe" - drink_name = "Aloe" - drink_desc = "Very, very, very good." - taste_description = "healthy skin" + drink_name = "Алоэ" + drink_desc = "Хорошо, очень хорошо." + taste_description = "здоровой кожи" /datum/reagent/consumable/ethanol/andalusia - name = "Andalusia" + name = "Андалузия" id = "andalusia" - description = "A nice, strange named drink." + description = "Хороший напиток со странным названием." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.4 drink_icon = "andalusia" - drink_name = "Andalusia" - drink_desc = "A nice, strange named drink." - taste_description = "sweet alcohol" + drink_name = "Андалузия" + drink_desc = "Хороший напиток со странным названием." + taste_description = "сладкого алкоголя" /datum/reagent/consumable/ethanol/alliescocktail - name = "Allies Cocktail" + name = "Коктейль союзников" id = "alliescocktail" - description = "A drink made from your allies." + description = "Напиток, приготовленный из ваших союзников." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.5 drink_icon = "alliescocktail" - drink_name = "Allies cocktail" - drink_desc = "A drink made from your allies." - taste_description = "victory" + drink_name = "Коктейль союзников" + drink_desc = "Напиток, приготовленный из ваших союзников." + taste_description = "победы" /datum/reagent/consumable/ethanol/acid_spit - name = "Acid Spit" + name = "Кислотный Плевок" id = "acidspit" - description = "A drink by Nanotrasen. Made from live aliens." + description = "Сделан из живых пришельцев." reagent_state = LIQUID color = "#365000" // rgb: 54, 80, 0 alcohol_perc = 0.3 drink_icon = "acidspitglass" - drink_name = "Acid Spit" - drink_desc = "A drink from Nanotrasen. Made from live aliens." - taste_description = "PAIN" + drink_name = "стакан Кислотного Плевка" + drink_desc = "Сделан из живых пришельцев." + taste_description = "ЖГУЧЕЙ БОЛИ" /datum/reagent/consumable/ethanol/acid_spit/reaction_mob(mob/living/M, method, volume) . = ..() @@ -922,30 +922,30 @@ M.emote("scream") /datum/reagent/consumable/ethanol/amasec - name = "Amasec" + name = "Амасек" id = "amasec" - description = "Official drink of the Imperium." + description = "Император одобряет." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.3 drink_icon = "amasecglass" - drink_name = "Amasec" - drink_desc = "Always handy before COMBAT!!!" - taste_description = "a stunbaton" + drink_name = "кружка Амасека" + drink_desc = "Пригодится перед БОЕМ!!!" + taste_description = "странного алкоголя" /datum/reagent/consumable/ethanol/neurotoxin - name = "Neuro-toxin" + name = "Нейротоксин" id = "neurotoxin" - description = "A strong neurotoxin that puts the subject into a death-like state." + description = "Сильный нейротоксин, который вводит выпившего в состояние, подобное смерти." reagent_state = LIQUID color = "#2E2E61" // rgb: 46, 46, 97 dizzy_adj = 12 SECONDS alcohol_perc = 0.7 heart_rate_decrease = 1 drink_icon = "neurotoxinglass" - drink_name = "Neurotoxin" - drink_desc = "A drink that is guaranteed to knock you silly." - taste_description = "brain damageeeEEeee" + drink_name = "Нейротоксин" + drink_desc = "Напиток, который гарантированно собьёт вас с толку." + taste_description = "удара по мозгам" /datum/reagent/consumable/ethanol/neurotoxin/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -958,16 +958,16 @@ return ..() | update_flags /datum/reagent/consumable/ethanol/hippies_delight - name = "Hippie's Delight" + name = "Радость Хиппи" id = "hippiesdelight" - description = "You just don't get it maaaan." + description = "Ты просто не понимаешь, чуваааак." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 metabolization_rate = 0.2 * REAGENTS_METABOLISM drink_icon = "hippiesdelightglass" - drink_name = "Hippie's Delight" - drink_desc = "A drink enjoyed by people during the 1960's." - taste_description = "colors" + drink_name = "стакан Радости Хиппи" + drink_desc = "Ты просто не понимаешь, чуваааак." + taste_description = "цветов" /datum/reagent/consumable/ethanol/hippies_delight/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -995,67 +995,67 @@ return ..() | update_flags /datum/reagent/consumable/ethanol/changelingsting - name = "Changeling Sting" + name = "Жало Генокрада" id = "changelingsting" - description = "A stingy drink." + description = "Генокрадов не существует, это ведь даже дети знают." reagent_state = LIQUID color = "#2E6671" // rgb: 46, 102, 113 alcohol_perc = 0.7 dizzy_adj = 10 SECONDS drink_icon = "changelingsting" - drink_name = "Changeling Sting" - drink_desc = "A stingy drink." - taste_description = "a tiny prick" + drink_name = "Жало Генокрада" + drink_desc = "Генокрадов не существует, это ведь даже дети знают." + taste_description = "лёгкого укола" /datum/reagent/consumable/ethanol/irishcarbomb - name = "Irish Car Bomb" + name = "Ирландская Автомобильная Бомба" id = "irishcarbomb" - description = "Mmm, tastes like chocolate cake..." + description = "Ммм, на вкус как шоколадный торт..." reagent_state = LIQUID color = "#2E6671" // rgb: 46, 102, 113 alcohol_perc = 0.3 dizzy_adj = 10 SECONDS drink_icon = "irishcarbomb" - drink_name = "Irish Car Bomb" - drink_desc = "An irish car bomb." - taste_description = "troubles" + drink_name = "стакан Ирландской Автомобильной Бомбы" + drink_desc = "Ирландская Автомобильная Бомба." + taste_description = "проблем" /datum/reagent/consumable/ethanol/syndicatebomb - name = "Syndicate Bomb" + name = "Бомба Синдиката" id = "syndicatebomb" - description = "A Syndicate bomb" + description = "Пить аккуратно." reagent_state = LIQUID color = "#2E6671" // rgb: 46, 102, 113 alcohol_perc = 0.2 drink_icon = "syndicatebomb" - drink_name = "Syndicate Bomb" - drink_desc = "A syndicate bomb." - taste_description = "a job offer" + drink_name = "Бомба Синдиката" + drink_desc = "Бум. Пить осторожно." + taste_description = "предложения о работе" /datum/reagent/consumable/ethanol/erikasurprise - name = "Erika Surprise" + name = "Сюрприз Эрики" id = "erikasurprise" - description = "The surprise is, it's green!" + description = "Сюрприз в том, что он зелёный!" reagent_state = LIQUID color = "#2E6671" // rgb: 46, 102, 113 alcohol_perc = 0.2 drink_icon = "erikasurprise" - name = "Erika Surprise" - drink_desc = "The surprise is, it's green!" - taste_description = "disappointment" + name = "Сюрприз Эрики" + drink_desc = "Сюрприз в том, что он зелёный!" + taste_description = "разочарования" /datum/reagent/consumable/ethanol/driestmartini - name = "Driest Martini" + name = "Самый сухой мартини" id = "driestmartini" - description = "Only for the experienced. You think you see sand floating in the glass." + description = "Только для опытных. Стоп, это песок там в стакане?" nutriment_factor = 1 * REAGENTS_METABOLISM color = "#2E6671" // rgb: 46, 102, 113 alcohol_perc = 0.5 dizzy_adj = 20 SECONDS drink_icon = "driestmartiniglass" - drink_name = "Driest Martini" - drink_desc = "Only for the experienced. You think you see sand floating in the glass." - taste_description = "dust and ashes" + drink_name = "Самый сухой мартини" + drink_desc = "Только для опытных. Стоп, это песок там в стакане?" + taste_description = "пыли и пепла" /datum/reagent/consumable/ethanol/driestmartini/on_mob_life(mob/living/M) if(current_cycle >= 55 && current_cycle < 115) @@ -1063,15 +1063,15 @@ return ..() /datum/reagent/consumable/ethanol/kahlua - name = "Kahlua" + name = "Калуа" id = "kahlua" - description = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936!" + description = "Широко известный мексиканский ликёр со вкусом кофе. Производится с 1936 года!" color = "#664300" // rgb: 102, 67, 0 alcohol_perc = 0.2 drink_icon = "kahluaglass" - drink_name = "Glass of RR coffee Liquor" - drink_desc = "DAMN, THIS THING LOOKS ROBUST" - taste_description = "coffee and alcohol" + drink_name = "ликёра \"Калуа\"" + drink_desc = "Выглядит робастно." + taste_description = "кофе и алкоголя" /datum/reagent/consumable/ethanol/kahlua/on_mob_life(mob/living/M) M.AdjustDizzy(-10 SECONDS) @@ -1081,15 +1081,15 @@ return ..() /datum/reagent/ginsonic - name = "Gin and sonic" + name = "Джин и Соник" id = "ginsonic" description = "GOTTA GET CRUNK FAST BUT LIQUOR TOO SLOW" reagent_state = LIQUID color = "#1111CF" drink_icon = "ginsonic" - drink_name = "Gin and Sonic" - drink_desc = "An extremely high amperage drink. Absolutely not for the true Englishman." - taste_description = "SPEED" + drink_name = "Джин и Соник" + drink_desc = "Напиток с чрезвычайно высокой силой тока. Абсолютно не для истинного англичанина." + taste_description = "СКОРОСТИ" /datum/reagent/ginsonic/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1100,67 +1100,67 @@ M.AdjustWeakened(-2 SECONDS) if(prob(8)) M.reagents.add_reagent("methamphetamine",1.2) - var/sonic_message = pick("Gotta go fast!", "Time to speed, keed!", "I feel a need for speed!", "Let's juice.", "Juice time.", "Way Past Cool!") + var/sonic_message = pick("НАДО! ЕЩЁ! БЫСТРЕЕ!!!", "БЫСТРЕЕ, БЫСТРЕЕ, ЕЩЁ БЫСТРЕЕ!!!", "ДА, ДЕТКА!!!", "БОДРИТ!!!", "ПОШЁЛ, ПОШЁЛ!!!", "На старт... МАРШ!!!", "ПОНЕСЛАСЬ!!!") if(prob(50)) M.say("[sonic_message]") else - to_chat(M, "[sonic_message ]") + to_chat(M, span_notice("[sonic_message]")) return ..() | update_flags /datum/reagent/consumable/ethanol/applejack - name = "Applejack" + name = "Эпплджек" id = "applejack" - description = "A highly concentrated alcoholic beverage made by repeatedly freezing cider and removing the ice." + description = "Высококонцентрированный алкогольный напиток, изготовленный путём многократного замораживания сидра и удаления льда." color = "#997A00" alcohol_perc = 0.4 drink_icon = "cognacglass" - drink_name = "Glass of applejack" - drink_desc = "When cider isn't strong enough, you gotta jack it." - taste_description = "strong cider" + drink_name = "Эпплджек" + drink_desc = "Когда сидр недостаточно крепок." + taste_description = "крепкого сидра" /datum/reagent/consumable/ethanol/jackrose - name = "Jack Rose" + name = "Джек Роуз" id = "jackrose" - description = "A classic cocktail that had fallen out of fashion, but never out of taste," + description = "Классический коктейль, который вышел из моды, но не из вкуса." color = "#664300" alcohol_perc = 0.4 drink_icon = "patronglass" - drink_name = "Jack Rose" - drink_desc = "Drinking this makes you feel like you belong in a luxury hotel bar during the 1920s." - taste_description = "style" + drink_name = "Джек Роуз" + drink_desc = "При его употреблении вы чувствуете себя в баре роскошного отеля 1920-х годов." + taste_description = "стиля" /datum/reagent/consumable/ethanol/drunkenblumpkin - name = "Drunken Blumpkin" + name = "Пьяный Идиот" id = "drunkenblumpkin" - description = "A weird mix of whiskey and blumpkin juice." + description = "Странная смесь виски и тыквенного сока." color = "#1EA0FF" // rgb: 102, 67, 0 alcohol_perc = 0.5 drink_icon = "drunkenblumpkin" - drink_name = "Drunken Blumpkin" - drink_desc = "A drink for the drunks" - taste_description = "weirdness" + drink_name = "Пьяный Идиот" + drink_desc = "Напиток для напивающихся." + taste_description = "странности" /datum/reagent/consumable/ethanol/eggnog - name = "Eggnog" + name = "Эгг-Ног" id = "eggnog" - description = "For enjoying the most wonderful time of the year." + description = "Для наслаждения самым чудесным временем года." color = "#fcfdc6" // rgb: 252, 253, 198 nutriment_factor = 2 * REAGENTS_METABOLISM alcohol_perc = 0.1 drink_icon = "glass_yellow" - drink_name = "Eggnog" - drink_desc = "For enjoying the most wonderful time of the year." - taste_description = "christmas spirit" + drink_name = "стакан Эгг-Нога" + drink_desc = "Для наслаждения самым чудесным временем года." + taste_description = "рождества" /datum/reagent/consumable/ethanol/dragons_breath //inaccessible to players, but here for admin shennanigans - name = "Dragon's Breath" + name = "Дыхание Дракона" id = "dragonsbreath" - description = "Possessing this stuff probably breaks the Geneva convention." + description = "Производство этого напитка вероятно, нарушает Женевскую конвенцию." reagent_state = LIQUID color = "#DC0000" alcohol_perc = 1 can_synth = FALSE - taste_description = "LIQUID FUCKING DEATH OH GOD WHAT THE FUCK" + taste_description = span_userdanger("ЖИДКОЙ БЛЯДЬ СМЕРТИ СУКА ПИЗДЕЦ НАХУЙ КАКОГО ХУЯ") /datum/reagent/consumable/ethanol/dragons_breath/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) if(method == REAGENT_INGEST && prob(20)) @@ -1170,27 +1170,27 @@ /datum/reagent/consumable/ethanol/dragons_breath/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(M.reagents.has_reagent("milk")) - to_chat(M, "The milk stops the burning. Ahhh.") + to_chat(M, span_notice("Молоко останавливает горение. Фух.")) M.reagents.del_reagent("milk") M.reagents.del_reagent("dragonsbreath") return if(prob(8)) - to_chat(M, "Oh god! Oh GODD!!") + to_chat(M, span_userdanger("Господи! ГОСПОДИ БЛЯДЬ!!!")) if(prob(50)) - to_chat(M, "Your throat burns terribly!") + to_chat(M, span_danger("Ваша глотка пылает! Буквально!")) M.emote(pick("scream","cry","choke","gasp")) M.Stun(2 SECONDS) if(prob(8)) - to_chat(M, "Why!? WHY!?") + to_chat(M, span_danger("За что?! ЗА ЧТО?!")) if(prob(8)) - to_chat(M, "ARGHHHH!") + to_chat(M, span_danger("ААААААААА!!!")) if(prob(2 * volume)) - to_chat(M, "OH GOD OH GOD PLEASE NO!!") + to_chat(M, span_userdanger("ГОСПОДИ БОЖЕ БЛЯДЬ НЕТ НЕТ НЕТ!!!")) if(M.on_fire) M.adjust_fire_stacks(20) if(prob(50)) - to_chat(M, "IT BURNS!!!!") - M.visible_message("[M] is consumed in flames!") + to_chat(M, span_userdanger("КАК ЖЖЁТСЯ, КАК ЖЕ ОНО ЖЖЁТСЯ!!!")) + M.visible_message( span_danger("[M] сгорел[genderize_ru(M.gender, "", "а", "о", "и")] заживо!")) M.dust() return return ..() | update_flags @@ -1199,17 +1199,17 @@ // WOOO! /datum/reagent/consumable/ethanol/synthanol - name = "Synthanol" + name = "Синтанол" id = "synthanol" - description = "A runny liquid with conductive capacities. Its effects on synthetics are similar to those of alcohol on organics." + description = "Текучая жидкость с токопроводящими свойствами. Её воздействие на синтетику аналогично воздействию спирта на органику." reagent_state = LIQUID color = "#1BB1FF" process_flags = ORGANIC | SYNTHETIC alcohol_perc = 0.5 drink_icon = "synthanolglass" - drink_name = "Glass of Synthanol" - drink_desc = "The equivalent of alcohol for synthetic crewmembers. They'd find it awful if they had tastebuds too." - taste_description = "motor oil" + drink_name = "стакан синтанола" + drink_desc = "Эквивалент алкоголя для синтетических членов экипажа. Если бы у них были вкусовые рецепторы, они бы сочли его ужасным." + taste_description = "машинного масла" /datum/reagent/consumable/ethanol/synthanol/on_mob_life(mob/living/M) metabolization_rate = REAGENTS_METABOLISM @@ -1224,90 +1224,90 @@ if(M.dna.species.reagent_tag & PROCESS_SYN) return if(method == REAGENT_INGEST) - to_chat(M, pick("That was awful!", "Yuck!")) + to_chat(M, pick(span_danger("Это отвратительно!"), span_danger("Фу!"))) /datum/reagent/consumable/ethanol/synthanol/robottears - name = "Robot Tears" + name = "Слёзы Робота" id = "robottears" - description = "An oily substance that an IPC could technically consider a 'drink'." + description = "Маслянистая субстанция, которую КПБ технически могут считать \"напитком\"." reagent_state = LIQUID color = "#363636" alcohol_perc = 0.25 drink_icon = "robottearsglass" - drink_name = "Glass of Robot Tears" - drink_desc = "No robots were hurt in the making of this drink." - taste_description = "existential angst" + drink_name = "стакан Слёз Робота" + drink_desc = "При изготовлении этого напитка ни один робот не пострадал." + taste_description = "экзистенциальных вопросов" /datum/reagent/consumable/ethanol/synthanol/trinary - name = "Trinary" + name = "Тринарный" id = "trinary" - description = "A fruit drink meant only for synthetics, however that works." + description = "Фруктовый напиток, предназначенный только для синтетиков, как бы это ни звучало." reagent_state = LIQUID color = "#adb21f" alcohol_perc = 0.2 drink_icon = "trinaryglass" - drink_name = "Glass of Trinary" - drink_desc = "Colorful drink made for synthetic crewmembers. It doesn't seem like it would taste well." - taste_description = "modem static" + drink_name = "стакан Тринарного" + drink_desc = "Красочный напиток, созданный для синтетических членов экипажа. Не похоже, чтобы он был вкусным." + taste_description = "машинной логики" /datum/reagent/consumable/ethanol/synthanol/servo - name = "Servo" + name = "Серво" id = "servo" - description = "A drink containing some organic ingredients, but meant only for synthetics." + description = "Напиток, содержащий некоторые органические ингредиенты, но предназначенный только для синтетиков." reagent_state = LIQUID color = "#5b3210" alcohol_perc = 0.25 drink_icon = "servoglass" - drink_name = "Glass of Servo" - drink_desc = "Chocolate - based drink made for IPCs. Not sure if anyone's actually tried out the recipe." - taste_description = "motor oil and cocoa" + drink_name = "стакан Серво" + drink_desc = "Напиток на основе шоколада для КПБ. Врядли кто-то пробовал этот рецепт на вкус." + taste_description = "машинного масла и шоколада" /datum/reagent/consumable/ethanol/synthanol/uplink - name = "Uplink" + name = "Аплинк" id = "uplink" - description = "A potent mix of alcohol and synthanol. Will only work on synthetics." + description = "Сильнодействующая смесь алкоголя и синтанола. Действует только на синтетиков." reagent_state = LIQUID color = "#e7ae04" alcohol_perc = 0.15 drink_icon = "uplinkglass" - drink_name = "Glass of Uplink" - drink_desc = "An exquisite mix of the finest liquoirs and synthanol. Meant only for synthetics." - taste_description = "a GUI in visual basic" + drink_name = "Аплинк" + drink_desc = "Сильнодействующая смесь хорошего ликёра и синтанола. Действует только на синтетиков." + taste_description = "графического интерфейса на Visual Basic" /datum/reagent/consumable/ethanol/synthanol/synthnsoda - name = "Synth 'n Soda" + name = "Синт и Сода" id = "synthnsoda" - description = "The classic drink adjusted for a robot's tastes." + description = "Классический напиток, адаптированный под вкусы синтетиков." reagent_state = LIQUID color = "#7204e7" alcohol_perc = 0.25 drink_icon = "synthnsodaglass" - drink_name = "Glass of Synth 'n Soda" - drink_desc = "Classic drink altered to fit the tastes of a robot. Bad idea to drink if you're made of carbon." - taste_description = "fizzy motor oil" + drink_name = "стакан Синта и Соды" + drink_desc = "Классический напиток, адаптированный под вкусы синтетиков. Органикам лучше не пить." + taste_description = "шипучего моторного масла" /datum/reagent/consumable/ethanol/synthanol/synthignon - name = "Synthignon" + name = "Синтигон" id = "synthignon" - description = "Someone mixed wine and alcohol for robots. Hope you're proud of yourself." + description = "Кто-то смешал вино и алкоголь для роботов. Надеюсь, он горд собой." reagent_state = LIQUID color = "#d004e7" alcohol_perc = 0.25 drink_icon = "synthignonglass" - drink_name = "Glass of Synthignon" - drink_desc = "Someone mixed good wine and robot booze. Romantic, but atrocious." - taste_description = "fancy motor oil" + drink_name = "Синтигон" + drink_desc = "Кто-то смешал хорошее вино и выпивку для роботов. Романтично, но отвратительно." + taste_description = "модного моторного масла" /datum/reagent/consumable/ethanol/fruit_wine - name = "Fruit Wine" + name = "Фруктовое вино" id = "fruit_wine" - description = "A wine made from grown plants." + description = "Вино, изготовленное из растений." color = "#FFFFFF" alcohol_perc = 0.35 - taste_description = "bad coding" + taste_description = "плохого кода" can_synth = FALSE - var/list/names = list("null fruit" = 1) //Names of the fruits used. Associative list where name is key, value is the percentage of that fruit. - var/list/tastes = list("bad coding" = 1) //List of tastes. See above. + var/list/names = list("нулевого фрукта" = 1) //Names of the fruits used. Associative list where name is key, value is the percentage of that fruit. + var/list/tastes = list("плохого кода" = 1) //List of tastes. See above. /datum/reagent/consumable/ethanol/fruit_wine/on_new(list/data) names = data["names"] @@ -1341,7 +1341,7 @@ /datum/reagent/consumable/ethanol/fruit_wine/proc/generate_data_info(list/data) var/list/primary_tastes = list() var/list/secondary_tastes = list() - drink_name = "glass of [name]" + drink_name = "[name]" drink_desc = description for(var/taste in tastes) switch(tastes[taste]) @@ -1359,26 +1359,26 @@ name += "[fruit_name] " named = TRUE if(named) - name += "wine" + name += "вино" else - name = "mixed [names_in_order[1]] wine" + name = "Смешанное [names_in_order[1]] вино" var/alcohol_description switch(alcohol_perc) if(1.2 to INFINITY) - alcohol_description = "suicidally strong" + alcohol_description = "самоубийственно сильного" if(0.9 to 1.2) - alcohol_description = "rather strong" + alcohol_description = "очень крепкого" if(0.7 to 0.9) - alcohol_description = "strong" + alcohol_description = "крепкого" if(0.4 to 0.7) - alcohol_description = "rich" + alcohol_description = "насыщенного" if(0.2 to 0.4) - alcohol_description = "mild" + alcohol_description = "мягкого" if(0 to 0.2) - alcohol_description = "sweet" + alcohol_description = "сладкого" else - alcohol_description = "watery" //How the hell did you get negative boozepwr? + alcohol_description = "водянистого" //How the hell did you get negative boozepwr? var/list/fruits = list() if(names_in_order.len <= 3) @@ -1386,43 +1386,43 @@ else for(var/i in 1 to 3) fruits += names_in_order[i] - fruits += "other plants" - var/fruit_list = english_list(fruits) - description = "A [alcohol_description] wine brewed from [fruit_list]." + fruits += "других растений" + var/fruit_list = russian_list(fruits) + description = "Образец [alcohol_description] вина, приготовленного из [fruit_list]." var/flavor = "" if(!primary_tastes.len) - primary_tastes = list("[alcohol_description] alcohol") - flavor += english_list(primary_tastes) + primary_tastes = list("[alcohol_description] алкоголя") + flavor += russian_list(primary_tastes) if(secondary_tastes.len) - flavor += ", with a hint of " - flavor += english_list(secondary_tastes) + flavor += ", с лёгким привкусом " + flavor += russian_list(secondary_tastes) taste_description = flavor if(holder.my_atom) holder.my_atom.on_reagent_change() /datum/reagent/consumable/ethanol/bacchus_blessing //An EXTREMELY powerful drink. Smashed in seconds, dead in minutes. - name = "Bacchus' Blessing" + name = "Благословение Бахуса" id = "bacchus_blessing" - description = "Unidentifiable mixture. Unmeasurably high alcohol content." + description = "Неидентифицируемая смесь. Неизмеримо высокое содержание алкоголя." color = rgb(51, 19, 3) //Sickly brown dizzy_adj = 42 SECONDS alcohol_perc = 3 //I warned you drink_icon = "bacchusblessing" - drink_name = "Bacchus' Blessing" - drink_desc = "You didn't think it was possible for a liquid to be so utterly revolting. Are you sure about this...?" - taste_description = "a wall of bricks" + drink_name = "Благословение Бахуса" + drink_desc = "Даже подумать было невозможно, что напиток может быть настолько отвратительным. Кто-то точно захочет это выпить?" + taste_description = "стены кирпичей" /datum/reagent/consumable/ethanol/fernet - name = "Fernet" + name = "Фернет" id = "fernet" - description = "An incredibly bitter herbal liqueur used as a digestif." + description = "Невероятно горький травяной ликёр, используемый в качестве дижестива." color = "#1B2E24" // rgb: 27, 46, 36 alcohol_perc = 0.5 drink_icon = "fernetpuro" - drink_name = "glass of pure fernet" - drink_desc = "Why are you drinking this pure?" - taste_description = "utter bitterness" + drink_name = "стакан чистого фернета" + drink_desc = "Зачем вообще пить это в чистом виде?" + taste_description = "сильной горечи" var/remove_nutrition = 2 /datum/reagent/consumable/ethanol/fernet/on_mob_life(mob/living/M) @@ -1430,10 +1430,10 @@ if(!M.nutrition) switch(rand(1, 3)) if(1) - to_chat(M, "You feel hungry...") + to_chat(M, span_warning("Вы чувствуете себя голодным...")) if(2) update_flags |= M.adjustToxLoss(1, FALSE) - to_chat(M, "Your stomach grumbles painfully!") + to_chat(M, span_warning("Ваш желудок болезненно урчит!")) else pass() else @@ -1443,33 +1443,33 @@ return ..() | update_flags /datum/reagent/consumable/ethanol/fernet/fernet_cola - name = "Fernet Cola" + name = "Фернет-кола" id = "fernet_cola" - description = "A very popular and bittersweet digestif, ideal after a heavy meal. Best served on a sawed-off cola bottle as per tradition." + description = "Очень популярный и горьковато-сладкий дижестив, идеальный после плотного обеда. По традиции, его лучше всего подавать в откупоренной бутылке из-под колы." color = "#390600" // rgb: 57, 6, 0 alcohol_perc = 0.2 drink_icon = "fernetcola" - drink_name = "glass of fernet cola" - drink_desc = "A sawed-off cola bottle filled with Fernet Cola. You can hear cuarteto music coming from the inside." - taste_description = "low class heaven" + drink_name = "стакан фернет-колы" + drink_desc = "Откупоренная бутылка из-под колы, наполненная фернет-колой. Изнутри слышна музыка куартето." + taste_description = "рая низкого класса" remove_nutrition = 1 /datum/reagent/consumable/ethanol/rainbow_sky - name = "Rainbow Sky" + name = "Радужное Небо" id = "rainbow_sky" - description = "A drink that shimmers with all the colors of the rainbow with notes of the galaxy." + description = "Напиток, переливающийся всеми цветами радуги с примесями космоса." color = "#ffffff" dizzy_adj = 20 SECONDS alcohol_perc = 1.5 drink_icon = "rainbow_sky" - drink_name = "Rainbow Sky" - drink_desc = "A drink that shimmers with all the colors of the rainbow with notes of the galaxy." - taste_description = "rainbow" + drink_name = "Радужное Небо" + drink_desc = "Напиток, переливающийся всеми цветами радуги с примесями космоса." + taste_description = "радуги" /datum/reagent/consumable/ethanol/rainbow_sky/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE - update_flags |= M.adjustBruteLoss(-1, FALSE) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-1, FALSE, affect_robotic = FALSE) M.Druggy(30 SECONDS) M.Jitter(10 SECONDS) M.AdjustHallucinate(10 SECONDS) @@ -1477,338 +1477,338 @@ return ..() | update_flags /datum/reagent/consumable/ethanol/champagne - name = "Champagne" + name = "Шампанское" id = "champagne" - description = "Excellent sparkling champagne. For those who want to stand out among vinokurs." + description = "Превосходное игристое шампанское. Для тех, кто хочет выделиться среди винокуров." color = "#d0d312" alcohol_perc = 0.2 drink_icon = "champagneglass" - drink_name = "Glass of Champagne" - drink_desc = "Excellent sparkling champagne. For those who want to stand out among vinokurs." - taste_description = "sparkling sunshine" + drink_name = "бокал шампанского" + drink_desc = "Превосходное игристое шампанское. Для тех, кто хочет выделиться среди винокуров." + taste_description = "искрящегося солнечного света" /datum/reagent/consumable/ethanol/aperol - name = "Aperol" + name = "Апероль" id = "aperol" - description = "Oh-oh-oh... It looks like it's an ambush for the liver" + description = "О-о-о-о... Похоже, это засада для печени." color = "#b9000a" alcohol_perc = 0.2 drink_icon = "aperolglass" - drink_name = "Glass of Aperol" - drink_desc = "Oh-oh-oh... It looks like it's an ambush for the liver" - taste_description = "herbaceous sweetness" + drink_name = "бокал апероля" + drink_desc = "О-о-о-о... Похоже, это засада для печени." + taste_description = "травянистой сладости" /datum/reagent/consumable/ethanol/jagermeister - name = "Jagermeister" + name = "Ягермейстер" id = "jagermeister" - description = "The drunkard hunter came from deep space, and it looks like he found a victim." + description = "Пьяница-охотник прибыл из далёкого космоса, и, похоже, он нашёл свою жертву." color = "#200b0b" alcohol_perc = 0.4 dizzy_adj = 6 SECONDS drink_icon = "jagermeisterglass" - drink_name = "Glass of Jagermeister" - drink_desc = "The drunkard hunter came from deep space, and it looks like he found a victim." - taste_description = "btterness of hunting" + drink_name = "стакан ягермейстера" + drink_desc = "Пьяница-охотник прибыл из далёкого космоса, и, похоже, он нашёл свою жертву." + taste_description = "охотничьего азарта" /datum/reagent/consumable/ethanol/schnaps - name = "Schnaps" + name = "Шнапс" id = "schnaps" - description = "From such a schnapps it's not a sin to start yodeling." + description = "От такого шнапса не грех начать петь йодлем." color = "#e0e0e0" alcohol_perc = 0.4 dizzy_adj = 2 SECONDS drink_icon = "schnapsglass" - drink_name = "Glass of Schnaps" - drink_desc = "From such a schnapps it's not a sin to start yodeling." - taste_description = "wheat mint" + drink_name = "стакан шнапса" + drink_desc = "От такого шнапса не грех начать петь йодлем." + taste_description = "пшеничной мяты" /datum/reagent/consumable/ethanol/sambuka - name = "Sambuka" + name = "Самбука" id = "sambuka" - description = "Flying into space, many thought that they had grasped fate." + description = "Улетая в космос, многие думали, что схватили судьбу" color = "#e0e0e0" alcohol_perc = 0.45 dizzy_adj = 2 SECONDS drink_icon = "sambukaglass" - drink_name = "Glass of Sambuka" - drink_desc = "Flying into space, many thought that they had grasped fate." - taste_description = "twirly fire" + drink_name = "бокал самбуки" + drink_desc = "Улетая в космос, многие думали, что схватили судьбу" + taste_description = "вертлявого огня" /datum/reagent/consumable/ethanol/bluecuracao - name = "Blue Curacao" + name = "Голубой Кюрасао" id = "bluecuracao" - description = "The fuse is ready, the blue has already lit up." + description = "Запал готов, синий уже загорелся." color = "#16c9ff" alcohol_perc = 0.35 drink_icon = "bluecuracaoglass" - drink_name = "Glass of Blue Curacao" - drink_desc = "The fuse is ready, the blue has already lit up." - taste_description = "explosive blue" + drink_name = "бокал Голубого Кюрасао" + drink_desc = "Запал готов, синий уже загорелся." + taste_description = "взрывной голубизны" /datum/reagent/consumable/ethanol/bitter - name = "Bitter" + name = "Биттер" id = "bitter" - description = "Don't mix up the label sizes, because I won't change anything." + description = "Не перепутай размеры этикеток, ведь я ничего менять не буду." color = "#d44071" alcohol_perc = 0.45 dizzy_adj = 4 SECONDS drink_icon = "bitterglass" - drink_name = "Glass of bitter" - drink_desc = "Don't mix up the label sizes, because I won't change anything." - taste_description = "vacuum bitterness" + drink_name = "стакан биттера" + drink_desc = "Не перепутай размеры этикеток, ведь я ничего менять не буду." + taste_description = "вакуумной горечи" /datum/reagent/consumable/ethanol/sheridan - name = "Sheridan's" + name = "Шериданс" id = "sheridan" - description = "Refrigerate, pour at an angle of 45, do not mix, enjoy." + description = "Охладите, разлейте под углом 45°, не перемешивайте, наслаждайтесь." color = "#3a3d2e" alcohol_perc = 0.35 drink_icon = "sheridanglass" - drink_name = "Glass of Sheridan's" - drink_desc = "Refrigerate, pour at an angle of 45, do not mix, enjoy." - taste_description = "creamy coffee" + drink_name = "стакан Шериданса" + drink_desc = "Охладите, разлейте под углом 45°, не перемешивайте, наслаждайтесь." + taste_description = "шоколадно-кремового алкоголя" ////////////////////////////Cocktails/////////////////////////////// /datum/reagent/consumable/ethanol/black_blood - name = "Black Blood" + name = "Чёрная Кровь" id = "black_blood" - description = "Need to drink faster before it starts to curdle." + description = "Пить нужно быстрее, пока оно не начало сворачиваться." color = "#252521" alcohol_perc = 0.45 drink_icon = "black_blood" - drink_name = "Black Blood" - drink_desc = "Need to drink faster before it starts to curdle." - taste_description = "bloody darkness" + drink_name = "Чёрная Кровь" + drink_desc = "Пить нужно быстрее, пока оно не начало сворачиваться." + taste_description = "кровавой тьмы" /datum/reagent/consumable/ethanol/black_blood/reaction_mob(mob/living/M, method, volume) . = ..() if(prob(50)) - M.say(pick("Fuu ma'jin!", "Sas'so c'arta forbici!", \ - "Ta'gh fara'qha fel d'amar det!", "Kla'atu barada nikt'o!", \ - "Fel'th Dol Ab'orod!", "In'totum Lig'abis!", "Ethra p'ni dedol!", \ - "Ditans Gut'ura Inpulsa!", "O bidai nabora se'sma!")) + M.say(pick("Фуу ма'джин!", "Сас'со к'арта форбичи!", \ + "Та'гх фара'кха фель де'амар дет!", "Кла'ату барада никт'o!", \ + "Фел'т Дол Аб'ород!", "Ин'тотум Лиг'абис!", "Этра п'ни дедоль!", \ + "Дитанс Гут'ура Инпульса!", "О бидай набора се'сма!")) /datum/reagent/consumable/ethanol/light_storm - name = "Light Storm" + name = "Лёгкий Шторм" id = "light_storm" - description = "Even away from the ocean, you can feel this shaking." + description = "Даже вдали от океана вы можете почувствовать эту дрожь." color = "#4b4b44" alcohol_perc = 0.6 drink_icon = "light_storm" - drink_name = "Light Storm" - drink_desc = "Even away from the ocean, you can feel this shaking." - taste_description = "sea excitement" + drink_name = "стакан Лёгкого Шторма" + drink_desc = "Даже вдали от океана вы можете почувствовать эту дрожь." + taste_description = "морских волнений" /datum/reagent/consumable/ethanol/cream_heaven - name = "Cream Heaven" + name = "Кремовый Рай" id = "cream_heaven" - description = "This is a touch of cream and coffee, a real creation of heaven." + description = "Это сочетание сливок и кофе, настоящее небесное творение." color = "#4b4b44" alcohol_perc = 0.25 drink_icon = "cream_heaven" - drink_name = "Cream Heaven" - drink_desc = "This is a touch of cream and coffee, a real creation of heaven." - taste_description = "coffee cloud" + drink_name = "Кремовый Рай" + drink_desc = "Это сочетание сливок и кофе, настоящее небесное творение." + taste_description = "кофейных облачков" /datum/reagent/consumable/ethanol/negroni - name = "Negroni" + name = "Негрони" id = "negroni" - description = "Bitters are very good for the liver, and gin has a bad effect on you. Here they balance each other." + description = "Горькие напитки очень полезны для печени, а джин плохо влияет на организм. Здесь они уравновешивают друг друга." color = "#ad3948" alcohol_perc = 0.4 drink_icon = "negroni" - drink_name = "Negroni" - drink_desc = "Bitters are very good for the liver, and gin has a bad effect on you. Here they balance each other." - taste_description = "sweet parade" + drink_name = "Негрони" + drink_desc = "Горькие напитки очень полезны для печени, а джин плохо влияет на организм. Здесь они уравновешивают друг друга." + taste_description = "сладкого шествия" /datum/reagent/consumable/ethanol/hirosima - name = "Hirosima" + name = "Хиросима" id = "hirosima" - description = "My hands are up to the elbows in blood... Oh, wait, it's alcohol." + description = "Мои руки по локоть в крови... О, подождите, это алкоголь." color = "#598317" alcohol_perc = 0.3 drink_icon = "hirosima" - drink_name = "Hirosima" - drink_desc = "My hands are up to the elbows in blood... Oh, wait, it's alcohol." - taste_description = "alcoholic ashes" + drink_name = "Хиросима" + drink_desc = "Мои руки по локоть в крови... О, подождите, это алкоголь." + taste_description = "алкогольного пепла" /datum/reagent/consumable/ethanol/nagasaki - name = "nagasaki" + name = "Нагасаки" id = "nagasaki" - description = "At first, no one knew what would happen next. The intoxication was terrible. There is no doubt that this is the strongest intoxication that a person has ever seen." + description = "Сначала никто не знал, что произойдет дальше. Опьянение было ужасным. Нет сомнений, что это самое сильное опьянение, которое когда-либо испытывал человек." color = "#18c212" alcohol_perc = 0.7 drink_icon = "nagasaki" - drink_name = "Nagasaki" - drink_desc = "At first, no one knew what would happen next. The intoxication was terrible. There is no doubt that this is the strongest intoxication that a person has ever seen." - taste_description = "radioactive ash" + drink_name = "Нагасаки" + drink_desc = "Сначала никто не знал, что произойдет дальше. Опьянение было ужасным. Нет сомнений, что это самое сильное опьянение, которое когда-либо испытывал человек." + taste_description = "радиоактивного пепла" /datum/reagent/consumable/ethanol/chocolate_sheridan - name = "Chocolate Sheridan's" + name = "Шоколадный Шериданс" id = "chocolate_sheridan" - description = "In situations when you really want to cheer up and drink." + description = "В ситуациях, когда действительно хочется взбодриться и выпить." color = "#332a1a" alcohol_perc = 0.3 drink_icon = "chocolate_sheridan" - drink_name = "Chocolate Sheridan's" - drink_desc = "In situations when you really want to cheer up and drink." - taste_description = "alcoholic mocha" + drink_name = "стакан Шоколадного Шериданса" + drink_desc = "В ситуациях, когда действительно хочется взбодриться и выпить." + taste_description = "алкогольного мокко" /datum/reagent/consumable/ethanol/panamian - name = "Panama" + name = "Панама" id = "panamian" - description = "It will connect your blood and alcohol like a Katun gateway." + description = "Это соединит вашу кровь и алкоголь, прямо как Катунские врата." color = "#3164a7" alcohol_perc = 0.6 drink_icon = "panamian" - drink_name = "Panama" - drink_desc = "It will connect your blood and alcohol like a Katun gateway." - taste_description = "shipping channel" + drink_name = "стакан Панамы" + drink_desc = "Это соединит вашу кровь и алкоголь, прямо как Катунские врата." + taste_description = "судоходного канала" /datum/reagent/consumable/ethanol/pegu_club - name = "Pegu Club" + name = "Клуб Пегу" id = "pegu_club" - description = "It's like a group of gentlemen colonizing your tongue." + description = "Это похоже на группу джентльменов, колонизирующих ваш язык." color = "#a5702b" alcohol_perc = 0.5 drink_icon = "pegu_club" - drink_name = "Pegu Club" - drink_desc = "It's like a group of gentlemen colonizing your tongue." - taste_description = "shipping channel" + drink_name = "Клуб Пегу" + drink_desc = "Это похоже на группу джентльменов, колонизирующих ваш язык." + taste_description = "судоходного канала" /datum/reagent/consumable/ethanol/jagermachine - name = "Jagermachine" + name = "Ягермашина" id = "jagermachine" - description = "A true detail hunter." + description = "Настоящий охотник за деталями." color = "#6b0b74" alcohol_perc = 0.55 drink_icon = "jagermachine" - drink_name = "Jagermachine" - drink_desc = "A true detail hunter." - taste_description = "stealing parts" + drink_name = "Ягермашина" + drink_desc = "Настоящий охотник за деталями." + taste_description = "воровства деталей" /datum/reagent/consumable/ethanol/blue_cybesauo - name = "Blue Cybesauo" + name = "Голубой Киберсауо" id = "blue_cybesauo" - description = "The blue is similar to the blue screen of death." + description = "Синева, похожая на синий экран смерти." color = "#0b7463" alcohol_perc = 0.4 drink_icon = "blue_cybesauo" - drink_name = "Blue Cybesauo" - drink_desc = "The blue is similar to the blue screen of death." - taste_description = "error 0xc000001b" + drink_name = "Голубой Киберсауо" + drink_desc = "Синева, похожая на синий экран смерти." + taste_description = "ошибки 0xc000001b" /datum/reagent/consumable/ethanol/alcomender - name = "Alcomender" + name = "Алко-мендер" id = "alcomender" - description = "A glass in the form of a mender, a favorite among doctors." + description = "Кружка в форме авто-мендера, популярен среди докторов." color = "#6b0059" alcohol_perc = 1.4 ////Heal burn drink_icon = "alcomender" - drink_name = "Alcomender" - drink_desc = "A glass in the form of a mender, a favorite among doctors." - taste_description = "funny medicine" + drink_name = "Алко-мендер" + drink_desc = "Кружка в форме авто-мендера, популярен среди докторов." + taste_description = "весёлой медицины" /datum/reagent/consumable/ethanol/alcomender/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE - update_flags |= M.adjustFireLoss(-0.7, FALSE) + update_flags |= M.adjustFireLoss(-0.7, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/consumable/ethanol/alcomender/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) // It is alcohol after all, so don't try to pour it on someone who's on fire ... please. if(iscarbon(M)) if(method == REAGENT_TOUCH) - M.adjustFireLoss(-volume * 0.7) - to_chat(M, "The diluted silver sulfadiazine soothes your burns.") + M.adjustFireLoss(-volume * 0.7, affect_robotic = FALSE) + to_chat(M, span_notice("Разбавленный сульфадиазин серебра исцеляет ваши ожоги.")) return STATUS_UPDATE_NONE /datum/reagent/consumable/ethanol/amnesia - name = "Star Amnesia" + name = "Звёздная Амнезия" id = "amnesia" - description = "Is it just a bottle of medical alcohol?" + description = "Стоп, это бутылка медицинского спирта?" color = "#6b0059" alcohol_perc = 1.2 ////Ethanol and Hooch drink_icon = "amnesia" - drink_name = "Star Amnesia" - drink_desc = "Is it just a bottle of medical alcohol?" - taste_description = "disco amnesia" + drink_name = "Звёздная Амнезия" + drink_desc = "Стоп, это бутылка медицинского спирта?" + taste_description = "диско" /datum/reagent/consumable/ethanol/johnny - name = "Silverhand" + name = "Сильверхэнд" id = "johnny" - description = "Wake the heck up, samurai. We have a station to burn." + description = "Просыпайся, самурай. Нам нужно сжечь одну станцию." color = "#c41414" alcohol_perc = 0.6 drink_icon = "johnny" - drink_name = "Silverhand" - drink_desc = "Wake the heck up, samurai. We have a station to burn." - taste_description = "superstar fading" + drink_name = "Сильверхэнд" + drink_desc = "Просыпайся, самурай. Нам нужно сжечь одну станцию." + taste_description = "угасающей суперзвезды" /datum/reagent/consumable/ethanol/cosmospoliten - name = "Cosmospoliten" + name = "Космополитен" id = "cosmospoliten" - description = "Then try to prove that you are straight and not a woman if you got caught with him." + description = "А теперь попробуй доказать, что ты натурал и не женщина, если тебя застукают с ним." color = "#b1483a" alcohol_perc = 0.5 drink_icon = "cosmospoliten" - drink_name = "Cosmospoliten" - drink_desc = "Then try to prove that you are straight and not a woman if you got caught with him." - taste_description = "orientation reversal" + drink_name = "Космополитен" + drink_desc = "А теперь попробуй доказать, что ты натурал и не женщина, если тебя застукают с ним." + taste_description = "изменения ориентации" /datum/reagent/consumable/ethanol/oldfashion - name = "Old Fashion" + name = "Старая мода" id = "oldfashion" - description = "Rumor has it that this cocktail is the oldest, but however, this is a completely different story." + description = "Ходят слухи, что этот коктейль является самым старым из всех, но, впрочем, это совсем другая история." color = "#6b4017" alcohol_perc = 0.6 drink_icon = "oldfashion" - drink_name = "Old Fashion" - drink_desc = "Rumor has it that this cocktail is the oldest, but however, this is a completely different story." - taste_description = "old times" + drink_name = "Старая мода" + drink_desc = "Ходят слухи, что этот коктейль является самым старым из всех, но, впрочем, это совсем другая история." + taste_description = "старых добрых времён" /datum/reagent/consumable/ethanol/french_75 - name = "French 75" + name = "Французский 75" id = "french_75" - description = "Charge the liver, aim, fire!" + description = "Заряжай печень, целься, стреляй!" color = "#b1953a" alcohol_perc = 0.4 drink_icon = "french_75" - drink_name = "French 75" - drink_desc = "Charge the liver, aim, fire!" - taste_description = "artillery bombing" + drink_name = "Французский 75" + drink_desc = "Заряжай печень, целься, стреляй!" + taste_description = "артиллерийского обстрела" /datum/reagent/consumable/ethanol/gydroseridan - name = "Gydroridan" + name = "Гидрориданс" id = "gydroseridan" - description = "Hydraulic separation of layers will help us in efficiency." + description = "Гидравлическое разделение слоёв поможет нам повысить эффективность." color = "#3a99b1" alcohol_perc = 0.5 drink_icon = "gydroseridan" - drink_name = "Gydroridan" - drink_desc = "Hydraulic separation of layers will help us in efficiency." - taste_description = "hydraulic power" + drink_name = "Гидрориданс" + drink_desc = "Гидравлическое разделение слоёв поможет нам повысить эффективность." + taste_description = "мощи гидравлики" /datum/reagent/consumable/ethanol/milk_plus - name = "Milk +" + name = "Молоко +" id = "milk_plus" - description = "When a man cannot choose he ceases to be a man." + description = "Когда человек не может выбирать, он перестаёт быть человеком." color = "#DFDFDF" alcohol_perc = 0.8 drink_icon = "milk_plus" - drink_name = "Milk +" - drink_desc = "When a man cannot choose he ceases to be a man." - taste_description = "loss of human" + drink_name = "Молоко +" + drink_desc = "Когда человек не может выбирать, он перестаёт быть человеком." + taste_description = "человеческой потери" /datum/reagent/consumable/ethanol/teslasingylo - name = "God Of Power" + name = "Бог Энергии" id = "teslasingylo" - description = "A real horror for the SMES and the APC. Don't overload them." + description = "Настоящий ужас для СКАН'ов и ЛКП. Не перегружайте их." color = "#0300ce" alcohol_perc = 0.7 process_flags = SYNTHETIC drink_icon = "teslasingylo" - drink_name = "God Of Power" - drink_desc = "A real horror for the SMES and the APC. Don't overload them." - taste_description = "electricity bless" + drink_name = "Бог Энергии" + drink_desc = "Настоящий ужас для СКАН'ов и ЛКП. Не перегружайте их." + taste_description = "электрического благословления" /datum/reagent/consumable/ethanol/teslasingylo/on_mob_life(mob/living/M) . = ..() @@ -1819,15 +1819,15 @@ machine.adjust_nutrition(15) //much less than charging from APC (50) /datum/reagent/consumable/ethanol/light - name = "Light" + name = "Свет" id = "light" - description = "A favorite among Nian and Dionea, someone say that this is a mini thermonuclear reaction, but only shhh..." + description = "Любимый напиток ниан и дион. Кто-то скажет, что это мини-термоядерная реакция, но только тссс..." color = "#fffb00" alcohol_perc = 0.2 drink_icon = "light" - drink_name = "Light" - drink_desc = "A favorite among Nian and Dionea, someone say that this is a mini thermonuclear reaction, but only shhh..." - taste_description = "star warmth" + drink_name = "Свет" + drink_desc = "Любимый напиток ниан и дион. Кто-то скажет, что это мини-термоядерная реакция, но только тссс..." + taste_description = "звёздного света" /datum/reagent/consumable/ethanol/light/on_mob_life(mob/living/M) . = ..() @@ -1838,114 +1838,114 @@ M.lighting_alpha = initial(M.lighting_alpha) /datum/reagent/consumable/ethanol/bees_knees - name = "Bee's Knees" + name = "Пчелиные Колени" id = "bees_knees" - description = "As if the fact is that the bee carries pollen in the area of the knees and ... Nevermind." + description = "Как будто бы дело в том, что пчела переносит пыльцу в области коленей и... Не берите в голову." color = "#e8f71f" alcohol_perc = 0.5 drink_icon = "bees_knees" - drink_name = "Bee's Knees" - drink_desc = "As if the fact is that the bee carries pollen in the area of the knees and ... Nevermind." - taste_description = "honey love" + drink_name = "Пчелиные Колени" + drink_desc = "Как будто бы дело в том, что пчела переносит пыльцу в области коленей и... Не берите в голову." + taste_description = "любви к мёду" /datum/reagent/consumable/ethanol/aviation - name = "Aviation" + name = "Авиация" id = "aviation" - description = "It's hard to make cocktails when a zeppelin flies over your house." + description = "Трудно готовить коктейли, когда над твоим домом пролетает дирижабль." color = "#c48f8f" alcohol_perc = 0.5 drink_icon = "aviation" - drink_name = "Aviation" - drink_desc = "It's hard to make cocktails when a zeppelin flies over your house." - taste_description = "blowing the wind" + drink_name = "Авиация" + drink_desc = "Трудно готовить коктейли, когда над твоим домом пролетает дирижабль." + taste_description = "сильного ветра" /datum/reagent/consumable/ethanol/fizz - name = "Fizz" + name = "Физз" id = "fizz" - description = "It's like living with a feral cat." + description = "Это всё равно, что жить с дикой кошкой." color = "#b6b6b6" alcohol_perc = 0.3 drink_icon = "fizz" - drink_name = "Fizz" - drink_desc = "It's like living with a feral cat." - taste_description = "fizzing" + drink_name = "Физз" + drink_desc = "Это всё равно, что жить с дикой кошкой." + taste_description = "шипучего алкоголя" /datum/reagent/consumable/ethanol/brandy_crusta - name = "Brandy Crusta" + name = "Коньячная Корочка" id = "brandy_crusta" - description = "The sugar crust may not be sweet at all." + description = "Сахарная корочка может быть совсем не сладкой." color = "#754609" alcohol_perc = 0.4 drink_icon = "brandy_crusta" - drink_name = "Brandy Crusta" - drink_desc = "The sugar crust may not be sweet at all." - taste_description = "salty-sweet" + drink_name = "Коньячная Корочка" + drink_desc = "Сахарная корочка может быть совсем не сладкой." + taste_description = "солёно-сладкого алкоголя" /datum/reagent/consumable/ethanol/aperolspritz - name = "Aperol Spritz" + name = "Апероль Спритц" id = "aperolspritz" - description = "Many consider it a separate alcohol, but it's more like a knight in chess." + description = "Многие считают его отдельным видом алкоголя, но он больше похож на коня в шахматах." color = "#c43d3d" alcohol_perc = 0.5 drink_icon = "aperolspritz" - drink_name = "Aperol Spritz" - drink_desc = "Many consider it a separate alcohol, but it's more like a knight in chess." - taste_description = "separateness of taste" + drink_name = "Апероль Спритц" + drink_desc = "Многие считают его отдельным видом алкоголя, но он больше похож на коня в шахматах." + taste_description = "раздельности вкусов" /datum/reagent/consumable/ethanol/sidecar - name = "Sidecar" + name = "Коляска" id = "sidecar" - description = "This cocktail is very popular. It was first introduced by the popular bartender This McGarry from Buck's Club." + description = "Этот коктейль очень популярен. Впервые его представил популярный бармен Этот МакГарри из Клуба Бака." color = "#b15416" alcohol_perc = 0.4 drink_icon = "sidecar" - drink_name = "Sidecar" - drink_desc = "This cocktail is very popular. It was first introduced by the popular bartender This McGarry from Buck's Club." - taste_description = "orange alcoh" + drink_name = "Коляска" + drink_desc = "Этот коктейль очень популярен. Впервые его представил популярный бармен Этот МакГарри из Клуба Бака." + taste_description = "апельсинового алкоголя" /datum/reagent/consumable/ethanol/daiquiri - name = "Daiquiri" + name = "Дайкири" id = "daiquiri" - description = "Just try, try again for me! With the headshot power of a Daiquiri!" + description = "Просто попробуй, попробуй ещё раз!" color = "#b6b6b6" alcohol_perc = 0.4 drink_icon = "daiquiri" - drink_name = "Daiquiri" - drink_desc = "Just try, try again for me! With the headshot power of a Daiquiri!" - taste_description = "headshot" + drink_name = "Дайкири" + drink_desc = "Просто попробуй, попробуй ещё раз!" + taste_description = "выстрела в голову" /datum/reagent/consumable/ethanol/tuxedo - name = "Tuxedo" + name = "Смокинг" id = "tuxedo" - description = "I can promise you a Colombian tie." + description = "Я могу пообещать вам Колумбийский Галстук." color = "#888686" alcohol_perc = 0.5 drink_icon = "tuxedo" - drink_name = "Tuxedo" - drink_desc = "I can promise you a Colombian tie." - taste_description = "strictness of style" + drink_name = "Смокинг" + drink_desc = "Я могу пообещать вам Колумбийский Галстук." + taste_description = "строгости стиля" /datum/reagent/consumable/ethanol/telegol - name = "Telegol" + name = "Телеголь" id = "telegol" - description = "Many are still puzzling over the question of this cocktail. Anyway, it still exists... Or not." + description = "Многие до сих пор ломают голову над вопросом существования этого коктейля. Как бы то ни было, он всё ещё существует... Или нет." color = "#4218a3" alcohol_perc = 0.5 drink_icon = "telegol" - drink_name = "Telegol" - drink_desc = "Many are still puzzling over the question of this cocktail. Anyway, it still exists... Or not." - taste_description = "fourteen dimension" + drink_name = "Телеголь" + drink_desc = "Многие до сих пор ломают голову над вопросом существования этого коктейля. Как бы то ни было, он всё ещё существует... Или нет." + taste_description = "четырнадцатого измерения" /datum/reagent/consumable/ethanol/horse_neck - name = "Horse Neck" + name = "Лошадиная Шея" id = "horse_neck" - description = "Be careful with your horse's shoes." + description = "Будьте осторожны с подковами вашей лошади." color = "#c45d09" alcohol_perc = 0.5 drink_icon = "horse_neck" - drink_name = "Horse Neck" - drink_desc = "Be careful with your horse's shoes." - taste_description = "horsepower" + drink_name = "Лошадиная Шея" + drink_desc = "Будьте осторожны с подковами вашей лошади." + taste_description = "лошадиной силы" /datum/reagent/consumable/ethanol/horse_neck/reaction_mob(mob/living/M, method, volume) . = ..() @@ -1953,154 +1953,154 @@ M.say(pick("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!")) /datum/reagent/consumable/ethanol/cuban_sunset - name = "Cuban Sunset" + name = "Кубинский Закат" id = "cuban_sunset" - description = "A new day, with a new coup." + description = "Новый день, новая революция." color = "#d88948" alcohol_perc = 0.6 drink_icon = "cuban_sunset" - drink_name = "Cuban Sunset" - drink_desc = "A new day, with a new coup." - taste_description = "totalitarianism" + drink_name = "Кубинский Закат" + drink_desc = "Новый день, новая революция." + taste_description = "тоталитаризма" /datum/reagent/consumable/ethanol/sake_bomb - name = "Sake Bomb" + name = "Бомба Сакэ" id = "sake_bomb" - description = "Carpet bombing your bamboo liver." + description = "Ковровая бомбардировка вашей бамбуковой печени." color = "#e2df2e" alcohol_perc = 0.3 drink_icon = "sake_bomb" - drink_name = "Sake Bomb" - drink_desc = "Carpet bombing your bamboo liver." - taste_description = "beer and sake" + drink_name = "Бомба Сакэ" + drink_desc = "Ковровая бомбардировка вашей бамбуковой печени." + taste_description = "пива и саке" /datum/reagent/consumable/ethanol/blue_havai - name = "Blue Havai" + name = "Голубые Гавайи" id = "blue_havai" - description = "The same blue as brown eyes." + description = "Такой же голубой, как и карие глаза." color = "#296129" alcohol_perc = 0.2 drink_icon = "blue_havai" - drink_name = "Blue Havai" - drink_desc = "The same blue as brown eyes." - taste_description = "neon dawn" + drink_name = "Голубые Гавайи" + drink_desc = "Такой же голубой, как и карие глаза." + taste_description = "неонового рассвета" /datum/reagent/consumable/ethanol/woo_woo - name = "Woo Woo" + name = "Ву-Ву" id = "woo_woo" - description = "And which child came up with this name? Yeah, I see, the question is settled." + description = "Какой ребёнок придумал это имя? Да, я вижу, вопрос решён." color = "#e22e2e" alcohol_perc = 0.5 drink_icon = "woo_woo" - drink_name = "Woo Woo" - drink_desc = "And which child came up with this name? Yeah, I see, the question is settled." - taste_description = "woo woo" + drink_name = "Ву-Ву" + drink_desc = "Какой ребёнок придумал это имя? Да, я вижу, вопрос решён." + taste_description = "ву-ву" /datum/reagent/consumable/ethanol/mulled_wine - name = "Mulled Wine" + name = "Глинтвейн" id = "mulled_wine" - description = "Just a hot wine with spices, but so pleasant." + description = "Просто горячее вино со специями, но такое приятное." color = "#fd4b4b" alcohol_perc = 0.2 drink_icon = "mulled_wine" - drink_name = "Mulled Wine" - drink_desc = "Just a hot wine with spices, but so pleasant." - taste_description = "hot wine" + drink_name = "Глинтвейн" + drink_desc = "Просто горячее вино со специями, но такое приятное." + taste_description = "горячего пряного вина" /datum/reagent/consumable/ethanol/white_bear - name = "White Bear" + name = "Белый Медведь" id = "white_bear" - description = "Two historical enemies, in one circle." + description = "Два исторических врага в одном кругу." color = "#d8b465" alcohol_perc = 0.5 drink_icon = "white_bear" - drink_name = "White Bear" - drink_desc = "Two historical enemies, in one circle." - taste_description = "ideological war" + drink_name = "Белый Медведь" + drink_desc = "Два исторических врага в одном кругу." + taste_description = "войны идеологий" /datum/reagent/consumable/ethanol/vampiro - name = "Vampiro" + name = "Вампиро" id = "vampiro" - description = "Has nothing to do with vampires, except that color." + description = "Не имеет ничего общего с вампирами кроме цвета." color = "#8d0000" alcohol_perc = 0.45 drink_icon = "vampiro" - drink_name = "Vampiro" - drink_desc = "Has nothing to do with vampires, except that color." - taste_description = "exhaustion" + drink_name = "Вампиро" + drink_desc = "Не имеет ничего общего с вампирами кроме цвета." + taste_description = "истощения" /datum/reagent/consumable/ethanol/vampiro/on_mob_life(mob/living/M) . = ..() if(volume > 20) if(prob(50)) //no spam here :p - M.visible_message("Глаза [M] ослепительно вспыхивают!") + M.visible_message(span_warning("Глаза [M] ослепительно вспыхивают!")) /datum/reagent/consumable/ethanol/queen_mary - name = "Queen Mary" + name = "Королева Мария" id = "queen_mary" - description = "Mary was cleaned of blood, and it turned out that she was also red." + description = "Мария очистилась от крови, и оказалось, что она тоже красная." color = "#bd2f2f" alcohol_perc = 0.35 drink_icon = "queen_mary" - drink_name = "Queen Mary" - drink_desc = "Mary was cleaned of blood, and it turned out that she was also red." - taste_description = "cherry beer" + drink_name = "Королева Мария" + drink_desc = "Мария очистилась от крови, и оказалось, что она тоже красная." + taste_description = "вишнёвого пива" /datum/reagent/consumable/ethanol/inabox - name = "Box" + name = "Коробка" id = "inabox" - description = "This... Just a box?" + description = "Это... Просто коробка?" color = "#5a3e0b" alcohol_perc = 0.4 drink_icon = "inabox" - drink_name = "Box" - drink_desc = "This... Just a box?" - taste_description = "stealth" + drink_name = "Коробка" + drink_desc = "Это... Просто коробка?" + taste_description = "стелса" /datum/reagent/consumable/ethanol/beer_berry_royal - name = "Beer Berry Royal" + name = "Пиво Королевской Вишни" id = "beer_berry_royal" - description = "For some reason, they continue to float up and down." + description = "По какой-то причине они продолжают подниматься и опускаться, вверх и вниз." color = "#684b16" alcohol_perc = 0.25 drink_icon = "beer_berry_royal" - drink_name = "Beer Berry Royal" - drink_desc = "For some reason, they continue to float up and down." - taste_description = "beer berry" + drink_name = "Пиво Королевской Вишни" + drink_desc = "По какой-то причине они продолжают подниматься и опускаться, вверх и вниз." + taste_description = "ягодного пива" /datum/reagent/consumable/ethanol/sazerac - name = "Sazerac" + name = "Сазерак" id = "sazerac" - description = "The best pharmacists are bartenders." + description = "Лучшие фармацевты - бармены." color = "#7c6232" alcohol_perc = 0.4 drink_icon = "sazerac" - drink_name = "Sazerac" - drink_desc = "The best pharmacists are bartenders." - taste_description = "bitter whiskey" + drink_name = "Сазерак" + drink_desc = "Лучшие фармацевты - бармены." + taste_description = "горького виски" /datum/reagent/consumable/ethanol/monako - name = "Monako" + name = "Монако" id = "monako" - description = "You might think there are more fruits on the market." + description = "Вы можете подумать, что на рынке больше фруктов." color = "#7c6232" alcohol_perc = 0.5 drink_icon = "monako" - drink_name = "Monako" - drink_desc = "You might think there are more fruits on the market." - taste_description = "fruit gin" + drink_name = "Монако" + drink_desc = "Вы можете подумать, что на рынке больше фруктов." + taste_description = "фруктового джина" /datum/reagent/consumable/ethanol/irishempbomb - name = "Irish EMP Bomb" + name = "Ирландская ЭМИ-бомба" id = "irishempbomb" - description = "Mmm, tastes like shut down..." + description = "Ммм, на вкус как отключение..." color = "#123eb8" process_flags = SYNTHETIC alcohol_perc = 0.6 drink_icon = "irishempbomb" - drink_name = "Irish EMP Bomb" - drink_desc = "Mmm, tastes like shut down..." - taste_description = "electromagnetic impulse" + drink_name = "Ирландская ЭМИ-бомба" + drink_desc = "Ммм, на вкус как отключение..." + taste_description = "электромагнитного импульса" /datum/reagent/consumable/ethanol/irishempbomb/on_mob_life(mob/living/M) M.Stun(1, FALSE) @@ -2108,124 +2108,124 @@ return ..() /datum/reagent/consumable/ethanol/codelibre - name = "Code Libre" + name = "Коде Либре" id = "codelibre" - description = "Por Code libre!" + description = "За Коде Либре!" color = "#a126b1" alcohol_perc = 0.55 process_flags = SYNTHETIC drink_icon = "codelibre" - drink_name = "Code Libre" - drink_desc = "Por Code libre!" - taste_description = "code liberation" + drink_name = "Коде Либре" + drink_desc = "За Code libre!" + taste_description = "свободы кода" /datum/reagent/consumable/ethanol/codelibre/on_mob_life(mob/living/M) . = ..() if(prob(10)) - M.say("[get_language_prefix(LANGUAGE_TRINARY)] Viva la Synthetica!") + M.say("[get_language_prefix(LANGUAGE_TRINARY)] Вива ла Синтетика!") /datum/reagent/consumable/ethanol/blackicp - name = "Black ICP" + name = "Чёрный КПБ" id = "blackicp" - description = "I'm sorry I wasn't responding, can you repeat that?" + description = "Извините за игнорирование вопроса, можете повторить запрос?" color = "#a126b1" alcohol_perc = 0.5 drink_icon = "blackicp" - drink_name = "Black ICP" - drink_desc = "I'm sorry I wasn't responding, can you repeat that?" - taste_description = "monitor replacing" + drink_name = "Чёрный КПБ" + drink_desc = "Извините за игнорирование вопроса, можете повторить запрос?" + taste_description = "замены монитора" /datum/reagent/consumable/ethanol/slime_drink - name = "Slime Drink" + name = "Пьяный Слайм" id = "slime_drink" - description = "Don't worry, it's just jelly." + description = "Не волнуйтесь, это просто желе." color = "#dd3e32" alcohol_perc = 0.2 drink_icon = "slime_drink" - drink_name = "Slime Drink" - drink_desc = "Don't worry, it's just jelly. And slime been dead for a long time." - taste_description = "jelly alcohol" + drink_name = "Пьяный Слайм" + drink_desc = "Не волнуйтесь, это просто желе. А слайм уже давно мёртв." + taste_description = "желейного алкоголя" /datum/reagent/consumable/ethanol/innocent_erp - name = "Innocent ERP" + name = "Невинное ЕРП" id = "innocent_erp" - description = "Remember that big brother sees everything." + description = "Большой Брат следит за тобой." color = "#746463" alcohol_perc = 0.5 drink_icon = "innocent_erp" - drink_name = "Innocent ERP" - drink_desc = "Remember that big brother sees everything." - taste_description = "loss of flirtatiousness" + drink_name = "Невинное ЕРП" + drink_desc = "Большой Брат следит за тобой." + taste_description = "запретных желаний" /datum/reagent/consumable/ethanol/nasty_slush - name = "Nasty Slush" + name = "Мерзкая Слякоть" id = "nasty_slush" - description = "The name has nothing to do with the drink itself." + description = "Название не имеет никакого отношения к самому напитку." color = "#462c0a" alcohol_perc = 0.55 drink_icon = "nasty_slush" - drink_name = "Nasty Slush" - drink_desc = "The name has nothing to do with the drink itself." - taste_description = "nasty slush" + drink_name = "Мерзкая Слякоть" + drink_desc = "Название не имеет никакого отношения к самому напитку." + taste_description = "мерзкой слякоти" /datum/reagent/consumable/ethanol/blue_lagoon - name = "Blue Lagoon" + name = "Голубая Лагуна" id = "blue_lagoon" - description = "What could be better than relaxing on the beach with a good drink?" + description = "Что может быть лучше, чем отдых на пляже с хорошим напитком?" color = "#1edddd" alcohol_perc = 0.5 drink_icon = "blue_lagoon" - drink_name = "Blue Lagoon" - drink_desc = "What could be better than relaxing on the beach with a good drink?" - taste_description = "beach relaxation" + drink_name = "Голубая Лагуна" + drink_desc = "Что может быть лучше, чем отдых на пляже с хорошим напитком?" + taste_description = "пляжного отдыха" /datum/reagent/consumable/ethanol/green_fairy - name = "Green Fairy" + name = "Зелёная Фея" id = "green_fairy" - description = "Some kind of abnormal green." + description = "Какой-то ненормальный зелёный." color = "#54dd1e" alcohol_perc = 0.6 drink_icon = "green_fairy" - drink_name = "Green Fairy" - drink_desc = "Some kind of abnormal green." - taste_description = "faith in fairies" + drink_name = "Зелёная Фея" + drink_desc = "Какой-то ненормальный зелёный." + taste_description = "веры в фей" /datum/reagent/consumable/ethanol/green_fairy/on_mob_life(mob/living/M) M.SetDruggy(min(max(0, M.AmountDruggy() + 10 SECONDS), 15 SECONDS)) return ..() /datum/reagent/consumable/ethanol/home_lebovsky - name = "Home Lebowski" + name = "Домашний Лебовски" id = "home_lebovsky" - description = "Let me explain something to you. Um, I am not Home Lebowski. You're Home Lebowski. I'm The Dude." + description = "Позволь мне кое-что тебе объяснить. Я не Домашний Лебовски. Иы Домашний Лебовски. Я Чувак." color = "#422b00" alcohol_perc = 0.35 drink_icon = "home_lebovsky" - drink_name = "Home Lebowski" - drink_desc = "Let me explain something to you. Um, I am not Home Lebowski. You're Home Lebowski. I'm The Dude." + drink_name = "Домашний Лебовски" + drink_desc = "Позволь мне кое-что тебе объяснить. Я не Домашний Лебовски. Ты Домашний Лебовски. Я Чувак." taste_description = "dressing gown" /datum/reagent/consumable/ethanol/top_billing - name = "Top Billing" + name = "Топ Биллинг" id = "top_billing" - description = "In a prominent place, our top billing!" + description = "На видном месте, наша главная заслуга!" color = "#0b573d" alcohol_perc = 0.4 drink_icon = "top_billing" - drink_name = "Top Billing" - drink_desc = "In a prominent place, our top billing!" - taste_description = "advertising space" + drink_name = "Топ Биллинг" + drink_desc = "На видном месте, наша главная заслуга!" + taste_description = "рекламного пространства" /datum/reagent/consumable/ethanol/trans_siberian_express - name = "Trans-Siberian Express" + name = "Транссибирский экспресс" id = "trans_siberian_express" - description = "From Vladivostok to delirium tremens in a day." + description = "От Владивостока до белой горячки за один день." color = "#e2a600" alcohol_perc = 0.5 drink_icon = "trans_siberian_express" - drink_name = "Trans-Siberian express" - drink_desc = "From Vladivostok to delirium tremens in a day." - taste_description = "terrible infrastructure" + drink_name = "Транссибирский экспресс" + drink_desc = "От Владивостока до белой горячки за один день." + taste_description = "ужасной инфрастуктуры" /datum/reagent/consumable/ethanol/trans_siberian_express/on_mob_life(mob/living/M) . = ..() @@ -2247,60 +2247,60 @@ M.default_language = null /datum/reagent/consumable/ethanol/sun - name = "Sun" + name = "Солнце" id = "sun" description = "Red sun over paradise!" color = "#bd1c1c" alcohol_perc = 0.4 drink_icon = "sun" - drink_name = "Sun" + drink_name = "Солнце" drink_desc = "Red sun over paradise!" - taste_description = "sun heat" + taste_description = "солнечной жары" /datum/reagent/consumable/ethanol/tick_tack - name = "Tick-Tock" + name = "Тик-Ток" id = "tick_tack" - description = "Tick-Tock, Tick-Tock Bzzzzz..." + description = "Тик-Ток, Тик-Ток, бззз..." color = "#118020" alcohol_perc = 0.3 drink_icon = "tick_tack" - drink_name = "Tick-Tock" - drink_desc = "Tick-Tock, Tick-Tock Bzzzzz..." - taste_description = "clock tick" + drink_name = "Тик-Ток" + drink_desc = "Тик-Ток, Тик-Ток, бззз..." + taste_description = "тиканья часов" /datum/reagent/consumable/ethanol/uragan_shot - name = "Uragan Shot" + name = "Ураганный Выстрел" id = "uragan_shot" - description = "Is it a uragan? But no, it's urahol." + description = "Это ураган? Нет, это урагон." color = "#da6631" alcohol_perc = 0.35 drink_icon = "uragan_shot" - drink_name = "Uragan Shot" - drink_desc = "Is it a uragan? But no, it's urahol." - taste_description = "gusts of wind" + drink_name = "Ураганный Выстрел" + drink_desc = "Это ураган? Нет, это урагон." + taste_description = "порывов ветра" /datum/reagent/consumable/ethanol/new_yorker - name = "New Yorker" + name = "Нью-Йоркер" id = "new_yorker" - description = "Be careful with the stock exchange, otherwise it will be 'Black Tuesday.'" + description = "Будьте осторожны с биржей, иначе наступит \"чёрный вторник\"." color = "#da3131" alcohol_perc = 0.4 drink_icon = "new_yorker" - drink_name = "New Yorker" - drink_desc = "Be careful with the stock exchange, otherwise it will be 'Black Tuesday.'" - taste_description = "the collapse" + drink_name = "Нью-Йоркер" + drink_desc = "Будьте осторожны с биржей, иначе наступит \"чёрный вторник\"." + taste_description = "катастрофы" /datum/reagent/consumable/ethanol/blue_moondrin - name = "Iluk Blue Moon'drin" + name = "Илукский Синий Мун`дрин" id = "blue_moondrin" - description = "Rarest tajaran drink in the galaxy! Be careful with your Captain!" + description = "Редчайший таяранский напиток в галактике! Будьте осторожны с вашим капитаном!" color = "#0026fc" alcohol_perc = 0.7 addiction_chance = 4 drink_icon = "blue_moondrin" - drink_name = "Iluk Blue Moon'drin" - drink_desc = "Rarest tajaran drink in the galaxy! Be careful with your Captain!" - taste_description = "the blue set-up" + drink_name = "Илукский Синий Мун`дрин" + drink_desc = "Редчайший таяранский напиток в галактике! Будьте осторожны с вашим капитаном!" + taste_description = "синего выключения" /datum/reagent/consumable/ethanol/blue_moondrin/on_mob_life(mob/living/M) M.Druggy(30 SECONDS, FALSE) @@ -2327,16 +2327,16 @@ return ..() /datum/reagent/consumable/ethanol/red_moondrin - name = "Redwater Moon'drin" + name = "Красноводный Мун`дрин" id = "red_moondrin" - description = "Illegal tajaran drink in Adomai, but maybe not here! Dangerous moon'drin based drink with secret ingridient. Be careful with this stuff!" + description = "Запрещённый на Адомае таяранский напиток, но не здесь! Опасное пойло на основе лун'дрина с тайным ингридиентом. Будьте осторожны!" color = "#960202" alcohol_perc = 0.9 addiction_chance = 7 drink_icon = "red_moondrin" - drink_name = "Redwater Moon'drin" - drink_desc = "Dangerous moon'drin based tajaran drink with secret ingridient. It seems legal but also wrong..." - taste_description = "blood red pain in your stomach! But it feels so go-o-o-o-od.." + drink_name = "Красноводный Мун`дрин" + drink_desc = "Запрещённый на Адомае таяранский напиток, но не здесь! Опасное пойло на основе лун'дрина с тайным ингридиентом. Будьте осторожны!" + taste_description = "приятного, но болезненного ощущения в желудке" /datum/reagent/consumable/ethanol/red_moondrin/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -2356,7 +2356,7 @@ M.Stuttering(10 SECONDS) M.playsound_local(src, 'sound/effects/heartbeat.ogg', 1) if(prob(20)) - to_chat(M, "You feel strange...") + to_chat(M, span_warning("Вы чувствуете себя странно...")) M.emote("scream") M.playsound_local(src, 'sound/spookoween/ghost_whisper.ogg', 5) M.AdjustHallucinate(40 SECONDS) @@ -2364,7 +2364,7 @@ if(prob(5)) M.playsound_local(src,'sound/hallucinations/look_up1.ogg', 1) M.emote("gasp") - to_chat(M, "You can't breathe! But it feels GOOD!") + to_chat(M, span_warning("Вы не можете дышать! Но это так приятно!")) update_flags |= M.adjustOxyLoss(15, FALSE) update_flags |= M.adjustToxLoss(2, FALSE) M.Stun(2 SECONDS) @@ -2379,7 +2379,7 @@ M.AdjustHallucinate(30 SECONDS) M.playsound_local(src,'sound/hallucinations/i_see_you2.ogg', 1) if(prob(20)) - to_chat(M, "You feel pain!") + to_chat(M, span_warning("Вам больно!")) M.emote("scream") M.playsound_local(src, 'sound/spookoween/ghost_whisper.ogg', 5) M.AdjustHallucinate(40 SECONDS) @@ -2388,13 +2388,13 @@ M.playsound_local(src, 'sound/effects/heartbeat.ogg', 2) M.playsound_local(src,'sound/hallucinations/growl1.ogg', 1) M.emote("gasp") - to_chat(M, "You can't breathe! But it feels GOOD!") + to_chat(M, span_warning("Вы не можете дышать! Но это так приятно!")) update_flags |= M.adjustOxyLoss(15, FALSE) update_flags |= M.adjustToxLoss(2, FALSE) M.Stun(2 SECONDS) if(prob(3)) M.playsound_local(src, 'sound/effects/heartbeat.ogg', 2) - to_chat(M, "You feel like you're being watched!") + to_chat(M, span_warning("Вам кажется, что вас кто-то преследует!")) M.playsound_local(src,'sound/hallucinations/growl2.ogg', 1) M.emote(pick("drool","scream")) M.Jitter(20 SECONDS) @@ -2404,17 +2404,17 @@ return ..() | update_flags /datum/reagent/consumable/ethanol/synthanol/restart - name = "Restart" + name = "Перезагрузка" id = "restart" - description = "Sometimes you just need to start anew" + description = "Иногда нужно начать всё сначала." color = "#0026fc" reagent_state = LIQUID process_flags = SYNTHETIC alcohol_perc = 1.5 drink_icon = "restart" - drink_name = "Glass of Restart" - drink_desc = "Sometimes you just need to start anew" - taste_description = "system reset" + drink_name = "Перезагрузка" + drink_desc = "Иногда нужно начать всё сначала." + taste_description = "перезагрузки" /datum/reagent/consumable/ethanol/synthanol/restart/on_mob_life(mob/living/carbon/human/M) var/update_flags = STATUS_UPDATE_NONE @@ -2424,7 +2424,7 @@ if(prob(10)) M.emote(pick("twitch","giggle")) if(prob(5)) - to_chat(M, "Rebooting..") + to_chat(M, span_notice("Перезагрузка системы...")) if(14) playsound(get_turf(M),'sound/effects/restart-shutdown.ogg', 200, 1) if(15 to 23) diff --git a/code/modules/reagents/chemistry/reagents/blob.dm b/code/modules/reagents/chemistry/reagents/blob.dm deleted file mode 100644 index b1a7952973eb..000000000000 --- a/code/modules/reagents/chemistry/reagents/blob.dm +++ /dev/null @@ -1,195 +0,0 @@ -// These can only be applied by blobs. They are what blobs are made out of. -// The 4 damage -/datum/reagent/blob - description = "" - var/complementary_color = "#000000" - var/message = "Блоб наносит вам удар" //message sent to any mob hit by the blob - var/message_living = null //extension to first mob sent to only living mobs i.e. silicons have no skin to be burnt - can_synth = FALSE - -/datum/reagent/blob/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume, show_message, touch_protection) - return round(volume * min(1.5 - touch_protection, 1), 0.1) //full touch protection means 50% volume, any prot below 0.5 means 100% volume. - -/datum/reagent/blob/proc/damage_reaction(obj/structure/blob/B, damage, damage_type, damage_flag) //when the blob takes damage, do this - return damage - -/datum/reagent/blob/ripping_tendrils //does brute and a little stamina damage - name = "Разрывающие щупальца" - description = "Наносит высокий урон травмами, а также урон выносливости." - id = "ripping_tendrils" - color = "#7F0000" - complementary_color = "#a15656" - message_living = ", и вы чувствуете, как ваша кожа рвется и слезает." - -/datum/reagent/blob/ripping_tendrils/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) - if(method == REAGENT_TOUCH) - volume = ..() - M.apply_damage(0.6*volume, BRUTE) - M.adjustStaminaLoss(volume) - if(iscarbon(M)) - M.emote("scream") - -/datum/reagent/blob/boiling_oil //sets you on fire, does burn damage - name = "Кипящее масло" - description = "Наносит высокий урон ожогами и поджигает жертву." - id = "boiling_oil" - color = "#B68D00" - complementary_color = "#c0a856" - message = "Блоб обдает вас горящим маслом" - message_living = ", и вы чувствуете, как ваша кожа обугливается и плавится" - -/datum/reagent/blob/boiling_oil/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) - if(method == REAGENT_TOUCH) - M.adjust_fire_stacks(round(volume/10)) - volume = ..() - M.apply_damage(0.6*volume, BURN) - M.IgniteMob() - M.emote("scream") - -/datum/reagent/blob/envenomed_filaments //toxin, hallucination, and some bonus spore toxin - name = "Ядовитые нити" - description = "Наносит высокий урон токсинами, вызывает галлюцинации и вводит споры в кровоток." - id = "envenomed_filaments" - color = "#9ACD32" - complementary_color = "#b0cd73" - message_living = ", и вы чувствуете себя плохо. Вас тошнит" - -/datum/reagent/blob/envenomed_filaments/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) - if(method == REAGENT_TOUCH) - volume = ..() - M.apply_damage(0.6 * volume, TOX) - M.AdjustHallucinate(1.2 SECONDS * volume) - if(M.reagents) - M.reagents.add_reagent("spore", 0.4*volume) - -/datum/reagent/blob/lexorin_jelly //does tons of oxygen damage and a little brute - name = "Лексориновое желе" - description = "Наносит средний урон травмами, но огромный урон гипоксией." - id = "lexorin_jelly" - color = "#00FFC5" - complementary_color = "#56ebc9" - message_living = ", и ваши легкие кажутся тяжелыми и слабыми" - -/datum/reagent/blob/lexorin_jelly/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) - if(method == REAGENT_TOUCH) - volume = ..() - M.apply_damage(0.4*volume, BRUTE) - M.apply_damage(1*volume, OXY) - M.AdjustLoseBreath(round(0.6 SECONDS * volume)) - - -/datum/reagent/blob/kinetic //does semi-random brute damage - name = "Кинетический желатин" - description = "Наносит случайный урон травмами, в 0,33–2,33 раза превышающий стандартное количество." - id = "kinetic" - color = "#FFA500" - complementary_color = "#ebb756" - message = "Блоб избивает вас" - -/datum/reagent/blob/kinetic/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) - if(method == REAGENT_TOUCH) - volume = ..() - var/damage = rand(5, 35)/25 - M.apply_damage(damage*volume, BRUTE) - -/datum/reagent/blob/cryogenic_liquid //does low burn damage and stamina damage and cools targets down - name = "Криогенная жидкость" - description = "Наносит средний урон травмами, урон выносливости и вводит в жертв ледяное масло, замораживая их до смерти." - id = "cryogenic_liquid" - color = "#8BA6E9" - complementary_color = "#a8b7df" - message = "Блоб обливает вас ледяной жидкостью" - message_living = ", и вы чувствуете себя холодным и усталым" - -/datum/reagent/blob/cryogenic_liquid/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) - if(method == REAGENT_TOUCH) - volume = ..() - M.apply_damage(0.4*volume, BURN) - M.adjustStaminaLoss(volume) - if(M.reagents) - M.reagents.add_reagent("frostoil", 0.4*volume) - -/datum/reagent/blob/b_sorium - name = "Сорий" - description = "Наносит высокий урон травмами и отбрасывает людей в стороны." - id = "b_sorium" - color = "#808000" - complementary_color = "#a2a256" - message = "Блоб врезается в вас и отбрасывает в сторону." - -/datum/reagent/blob/b_sorium/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) - if(method == REAGENT_TOUCH) - reagent_vortex(M, 1, volume) - volume = ..() - M.apply_damage(0.6*volume, BRUTE) - -/datum/reagent/blob/proc/reagent_vortex(mob/living/M, setting_type, volume) - var/turf/pull = get_turf(M) - var/range_power = clamp(round(volume/5, 1), 1, 5) - for(var/atom/movable/X in range(range_power,pull)) - if(iseffect(X)) - continue - if(X.move_resist <= MOVE_FORCE_DEFAULT && !X.anchored) - var/distance = get_dist(X, pull) - var/moving_power = max(range_power - distance, 1) - spawn(0) - if(moving_power > 2) //if the vortex is powerful and we're close, we get thrown - if(setting_type) - var/atom/throw_target = get_edge_target_turf(X, get_dir(X, get_step_away(X, pull))) - var/throw_range = 5 - distance - X.throw_at(throw_target, throw_range, 1) - else - X.throw_at(pull, distance, 1) - else - if(setting_type) - for(var/i = 0, i < moving_power, i++) - sleep(2) - if(!step_away(X, pull)) - break - else - for(var/i = 0, i < moving_power, i++) - sleep(2) - if(!step_towards(X, pull)) - break - -/datum/reagent/blob/radioactive_gel - name = "Радиоактивный гель" - description = "Наносит средний урон токсинами и небольшой урон травмами, но облучает тех, кого задевает." - id = "radioactive_gel" - color = "#2476f0" - complementary_color = "#24f0f0" - message_living = ", и вы чувствуете странное тепло изнутри" - -/datum/reagent/blob/radioactive_gel/reaction_mob(mob/living/M, method = REAGENT_TOUCH, volume) - if(method == REAGENT_TOUCH) - volume = ..() - M.apply_damage(0.3 * volume, TOX) - M.apply_damage(0.2 * volume, BRUTE) // lets not have IPC / plasmaman only take 7.5 damage from this - if(M.reagents) - M.reagents.add_reagent("uranium", 0.3 * volume) - -/datum/reagent/blob/teslium_paste - name = "Теслиевая паста" - description = "Наносит средний урон ожогами и вызывает удары током у тех, кого задевает, со временем." - id = "teslium_paste" - color = "#20324D" - complementary_color = "#412968" - message_living = ", и вы чувствуете удар статическим электричеством" - -/datum/reagent/blob/teslium_paste/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) - if(method == REAGENT_TOUCH) - volume = ..() - M.apply_damage(0.4 * volume, BURN) - if(M.reagents) - if(M.reagents.has_reagent("teslium") && prob(0.6 * volume)) - M.electrocute_act((0.5 * volume), "разряда блоба", flags = SHOCK_NOGLOVES) - M.reagents.del_reagent("teslium") - return //don't add more teslium after you shock it out of someone. - M.reagents.add_reagent("teslium", 0.125 * volume) // a little goes a long way - -/datum/reagent/blob/proc/send_message(mob/living/M) - var/totalmessage = message - if(message_living && !issilicon(M)) - totalmessage += message_living - totalmessage += "!" - to_chat(M, "[totalmessage]") diff --git a/code/modules/reagents/chemistry/reagents/disease.dm b/code/modules/reagents/chemistry/reagents/disease.dm index dd14a22b989a..307ee10d96b8 100644 --- a/code/modules/reagents/chemistry/reagents/disease.dm +++ b/code/modules/reagents/chemistry/reagents/disease.dm @@ -1,7 +1,7 @@ /datum/reagent/spider_eggs - name = "spider eggs" + name = "Паучьи яйца" id = "spidereggs" - description = "A fine dust containing spider eggs. Oh gosh." + description = "Мелкая пыль, содержащая паучьи яйца. О боже." reagent_state = SOLID color = "#FFFFFF" can_synth = FALSE @@ -16,9 +16,9 @@ /datum/reagent/nanomachines - name = "Nanomachines" + name = "Наномашины" id = "nanomachines" - description = "Microscopic construction robots." + description = "Микроскопические строительные роботы." color = "#535E66" // rgb: 83, 94, 102 can_synth = FALSE taste_mult = 0 @@ -31,9 +31,9 @@ /datum/reagent/xenomicrobes - name = "Xenomicrobes" + name = "Ксеномикробы" id = "xenomicrobes" - description = "Microbes with an entirely alien cellular structure." + description = "Микробы с совершенно чужеродной клеточной структурой." color = "#535E66" // rgb: 83, 94, 102 can_synth = FALSE taste_mult = 0 @@ -45,9 +45,9 @@ return ..() /datum/reagent/fungalspores - name = "Tubercle bacillus Cosmosis microbes" + name = "Микробы Космического Туберкулёза" id = "fungalspores" - description = "Active fungal spores." + description = "Активные споры грибов." color = "#92D17D" // rgb: 146, 209, 125 can_synth = FALSE taste_mult = 0 @@ -59,9 +59,9 @@ return ..() /datum/reagent/jagged_crystals - name = "Jagged Crystals" + name = "Зазубренные кристаллы" id = "jagged_crystals" - description = "Rapid chemical decomposition has warped these crystals into twisted spikes." + description = "В результате быстрого химического разложения эти кристаллы превратились в витые шипы." reagent_state = SOLID color = "#FA0000" // rgb: 250, 0, 0 can_synth = FALSE @@ -73,9 +73,9 @@ return ..() /datum/reagent/salmonella - name = "Salmonella" + name = "Сальмонелла" id = "salmonella" - description = "A nasty bacteria found in spoiled food." + description = "Отвратительная бактерия, встречающаяся в испорченных продуктах." reagent_state = LIQUID color = "#1E4600" can_synth = FALSE @@ -87,9 +87,9 @@ return ..() /datum/reagent/gibbis - name = "Gibbis" + name = "Гиббис" id = "gibbis" - description = "Liquid gibbis." + description = "Гиббис в жидкой форме." reagent_state = LIQUID color = "#FF0000" can_synth = FALSE @@ -102,9 +102,9 @@ return ..() /datum/reagent/prions - name = "Prions" + name = "Прионы" id = "prions" - description = "A disease-causing agent that is neither bacterial nor fungal nor viral and contains no genetic material." + description = "Возбудитель болезни, который не является ни бактериальным, ни грибковым, ни вирусным агентом и не содержит генетического материала." reagent_state = LIQUID color = "#FFFFFF" can_synth = FALSE @@ -117,9 +117,9 @@ return ..() /datum/reagent/grave_dust - name = "Grave Dust" + name = "Могильная пыль" id = "grave_dust" - description = "Moldy old dust taken from a grave site." + description = "Заплесневелая пыль, взятая кладбища." reagent_state = LIQUID color = "#465046" can_synth = FALSE @@ -132,13 +132,13 @@ return ..() /datum/reagent/bacon_grease - name = "pure bacon grease" + name = "Чистый сальный жир" id = "bacon_grease" - description = "Hook me up to an IV of that sweet, sweet stuff!" + description = "Принесите мне капельницу этого сладкого, сладкого жира!" reagent_state = LIQUID color = "#F7E6B1" can_synth = FALSE - taste_description = "bacon" + taste_description = "бекона" /datum/reagent/bacon_grease/on_mob_life(mob/living/carbon/M) if(volume > 4.5) @@ -147,9 +147,9 @@ return ..() /datum/reagent/heartworms - name = "Space heartworms" + name = "Сердечные черви" id = "heartworms" - description = "Aww, gross! These things can't be good for your heart. They're gunna eat it!" + description = "Какая гадость! Эти черви будут не против полакомиться твоим сердечком!" reagent_state = SOLID color = "#925D6C" can_synth = FALSE @@ -166,9 +166,9 @@ return ..() /datum/reagent/concentrated_initro - name = "Concentrated Initropidril" + name = "Сгущённый инитропидрил" id = "concentrated_initro" - description = "A guaranteed heart-stopper!" + description = "Остановка сердца в жидкой форме!" reagent_state = LIQUID color = "#AB1CCF" can_synth = FALSE @@ -185,39 +185,39 @@ //virus foods /datum/reagent/consumable/virus_food - name = "Virus Food" + name = "Питательная среда" id = "virusfood" - description = "A mixture of water, milk, and oxygen. Virus cells can use this mixture to reproduce." + description = "Смесь воды, молока и кислорода. Вирусные клетки могут использовать эту смесь для размножения." reagent_state = LIQUID nutriment_factor = 2 * REAGENTS_METABOLISM color = "#899613" // rgb: 137, 150, 19 - taste_description = "watery milk" + taste_description = "водянистого молока" /datum/reagent/mutagen/mutagenvirusfood - name = "mutagenic agar" + name = "Мутагенный агар" id = "mutagenvirusfood" - description = "mutates blood" + description = "Вещество, способствующее ускоренной мутации вирусных форм жизни." color = "#A3C00F" // rgb: 163,192,15 /datum/reagent/mutagen/mutagenvirusfood/sugar - name = "sucrose agar" + name = "Сахарный агар" id = "sugarvirusfood" color = "#41B0C0" // rgb: 65,176,192 taste_mult = 1.5 /datum/reagent/medicine/diphenhydramine/diphenhydraminevirusfood - name = "virus rations" + name = "Вирусный пайки" id = "diphenhydraminevirusfood" - description = "mutates blood" + description = "Вещество, способствующее ускоренной мутации вирусных форм жизни." color = "#D18AA5" // rgb: 209,138,165 /datum/reagent/plasma_dust/plasmavirusfood - name = "virus plasma" + name = "Вирусная плазма" id = "plasmavirusfood" - description = "mutates blood" + description = "Вещество, способствующее ускоренной мутации вирусных форм жизни." color = "#A69DA9" // rgb: 166,157,169 /datum/reagent/plasma_dust/plasmavirusfood/weak - name = "weakened virus plasma" + name = "Ослабленная вирусная плазма" id = "weakplasmavirusfood" color = "#CEC3C6" // rgb: 206,195,198 diff --git a/code/modules/reagents/chemistry/reagents/drink_base.dm b/code/modules/reagents/chemistry/reagents/drink_base.dm index 3da589f8a584..54d9890aa364 100644 --- a/code/modules/reagents/chemistry/reagents/drink_base.dm +++ b/code/modules/reagents/chemistry/reagents/drink_base.dm @@ -1,11 +1,11 @@ /datum/reagent/consumable/drink - name = "Drink" + name = "Напиток" id = "drink" - description = "Uh, some kind of drink." + description = "Напиток, вроде как." reagent_state = LIQUID color = "#E78108" // rgb: 231, 129, 8 harmless = TRUE - taste_description = "something which should not exist" + taste_description = "чего-то неописуемого" var/adj_dizzy = 0 var/adj_drowsy = 0 var/adj_sleepy = 0 diff --git a/code/modules/reagents/chemistry/reagents/drink_cold.dm b/code/modules/reagents/chemistry/reagents/drink_cold.dm index 0376c8a42925..bac5ce049337 100644 --- a/code/modules/reagents/chemistry/reagents/drink_cold.dm +++ b/code/modules/reagents/chemistry/reagents/drink_cold.dm @@ -1,64 +1,64 @@ /datum/reagent/consumable/drink/cold - name = "Cold drink" + name = "Прохладительный напиток" adj_temp_cool = 5 /datum/reagent/consumable/drink/cold/tonic - name = "Tonic Water" + name = "Тоник" id = "tonic" - description = "It tastes strange but at least the quinine keeps the Space Malaria at bay." + description = "Вкус странный, но, по крайней мере, хинин держит Космическую Малярию на расстоянии." color = "#664300" // rgb: 102, 67, 0 adj_dizzy = -10 SECONDS adj_drowsy = -6 SECONDS adj_sleepy = -4 SECONDS drink_icon = "glass_clear" - drink_name = "Glass of Tonic Water" - drink_desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away." - taste_description = "bitterness" + drink_name = "стакан тоника" + drink_desc = "Хинин на вкус не очень приятный, но, по крайней мере, он убережёт от Космической Малярии." + taste_description = "горечи" /datum/reagent/consumable/drink/cold/sodawater - name = "Soda Water" + name = "Содовая вода" id = "sodawater" - description = "A can of club soda. Why not make a scotch and soda?" + description = "Содовая, потрясно." color = "#619494" // rgb: 97, 148, 148 adj_dizzy = -10 SECONDS adj_drowsy = -6 SECONDS drink_icon = "glass_clear" - drink_name = "Glass of Soda Water" - drink_desc = "Soda water. Why not make a scotch and soda?" - taste_description = "fizz" + drink_name = "стакан газированный воды" + drink_desc = "Газированная вода. Почему бы не сделать виски с содовой?" + taste_description = "шипучей газировки" /datum/reagent/consumable/drink/cold/ice - name = "Ice" + name = "Лёд" id = "ice" - description = "Frozen water, your dentist wouldn't like you chewing this." + description = "Замороженная вода. Не стоит жевать, если не хочешь повредить свои зубы." reagent_state = SOLID color = "#619494" // rgb: 97, 148, 148 adj_temp_cool = 0 drink_icon = "iceglass" - drink_name = "Glass of ice" - drink_desc = "Generally, you're supposed to put something else in there too..." - taste_description = "cold" + drink_name = "стакан льда" + drink_desc = "Вообще-то, вы должны положить туда ещё что-нибудь..." + taste_description = "холодного льда" /datum/reagent/consumable/drink/cold/ice/on_mob_life(mob/living/M) M.adjust_bodytemperature(-(5 * TEMPERATURE_DAMAGE_COEFFICIENT)) return ..() /datum/reagent/consumable/drink/cold/space_cola - name = "Cola" + name = "Кола" id = "cola" - description = "A refreshing beverage." + description = "Освежающий напиток." reagent_state = LIQUID color = "#100800" // rgb: 16, 8, 0 adj_drowsy = -10 SECONDS drink_icon = "glass_brown" - drink_name = "Glass of Space Cola" - drink_desc = "A glass of refreshing Space Cola" - taste_description = "cola" + drink_name = "стакан колы" + drink_desc = "Стакан освежающей КосмоКолы." + taste_description = "колы" /datum/reagent/consumable/drink/cold/energy - name = "Energy Drink" + name = "Энергетический напиток" id = "energetik" - description = "A refreshing beverage." + description = "Освежающий напиток." reagent_state = LIQUID color = "#a9c725" adj_drowsy = -6 SECONDS @@ -70,9 +70,9 @@ addiction_chance = 1 addiction_threshold = 200 drink_icon = "lemonglass" - drink_name = "Glass of Classic Energy Drink" - drink_desc = "A glass of of invigorating energy drink" - taste_description = "tutti frutti" + drink_name = "стакан энергетического напитка" + drink_desc = "Стакан бодрящего энергетика." + taste_description = "сладких фруктов" /datum/reagent/consumable/drink/cold/energy/New() addict_supertype = /datum/reagent/consumable/drink/cold/energy @@ -100,32 +100,32 @@ return list(0, STATUS_UPDATE_NONE) /datum/reagent/consumable/drink/cold/energy/trop - name = "Tropickal Energy" + name = "Тропикал Энерджи" id = "trop_eng" - taste_description = "mango and coconut" + taste_description = "манго и кокоса" /datum/reagent/consumable/drink/cold/energy/milk - name = "Milk Energy" + name = "Милк Энерджи" id = "milk_eng" - taste_description = "milk and taurin" + taste_description = "молока и таурина" /datum/reagent/consumable/drink/cold/energy/grey - name = "GreyPower Energy" + name = "ГрейПауэр Энерджи" id = "grey_eng" color = "#9dc2d1" - taste_description = "robust" + taste_description = "робаста" /datum/reagent/consumable/drink/cold/nuka_cola - name = "Nuka Cola" + name = "Нюка-кола" id = "nuka_cola" - description = "Cola, cola never changes." + description = "Кола, кола никогда не меняется." color = "#100800" // rgb: 16, 8, 0 adj_sleepy = -4 SECONDS drink_icon = "nuka_colaglass" - drink_name = "Nuka Cola" - drink_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland" + drink_name = "Нюка-кола" + drink_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland..." harmless = FALSE - taste_description = "radioactive cola" + taste_description = "радиоактивной колы" /datum/reagent/consumable/drink/cold/nuka_cola/on_mob_life(mob/living/user) @@ -138,7 +138,6 @@ user.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/nuka_cola) return ..() | update_flags - /datum/reagent/consumable/drink/cold/nuka_cola/on_mob_add(mob/living/user) . = ..() if(user.dna && (user.dna.species.reagent_tag & PROCESS_ORG)) @@ -151,98 +150,98 @@ /datum/reagent/consumable/drink/cold/spacemountainwind - name = "Space Mountain Wind" + name = "Космический Маунтин Винд" id = "spacemountainwind" - description = "Blows right through you like a space wind." + description = "Проходит насквозь, словно космический ветер." color = "#102000" // rgb: 16, 32, 0 adj_drowsy = -14 SECONDS adj_sleepy = -2 SECONDS drink_icon = "Space_mountain_wind_glass" - drink_name = "Glass of Space Mountain Wind" - drink_desc = "Space Mountain Wind. As you know, there are no mountains in space, only wind." - taste_description = "lime soda" + drink_name = "стакан Космического Маунтин Винда" + drink_desc = "Космический Маунтин Винд. Как вы знаете, в космосе нет гор, только ветер." + taste_description = "лаймовой газировки" /datum/reagent/consumable/drink/cold/dr_gibb - name = "Dr. Gibb" + name = "Доктор Гибб" id = "dr_gibb" - description = "A delicious blend of 42 different flavours" + description = "Освежающая смесь из 42 различных вкусов!" color = "#102000" // rgb: 16, 32, 0 adj_drowsy = -12 SECONDS drink_icon = "dr_gibb_glass" - drink_name = "Glass of Dr. Gibb" - drink_desc = "Dr. Gibb. Not as dangerous as the name might imply." - taste_description = "cherry soda" + drink_name = "стакан Доктора Гибба" + drink_desc = "Доктор Гибб. Не так опасен, как может показаться." + taste_description = "вишнёвой газировки" /datum/reagent/consumable/drink/cold/space_up - name = "Space-Up" + name = "Спейс-Ап" id = "space_up" - description = "Tastes like a hull breach in your mouth." + description = "На вкус как дыра в обшивке у вас во рту. Да, звучит странно." color = "#202800" // rgb: 32, 40, 0 adj_temp_cool = 8 drink_icon = "space-up_glass" - drink_name = "Glass of Space-up" - drink_desc = "Space-up. It helps keep your cool." - taste_description = "lemon soda" + drink_name = "стакан Спейс-Апа" + drink_desc = "Спейс-Ап. Держит вас в тонусе." + taste_description = "лимонной газировки" /datum/reagent/consumable/drink/cold/lemon_lime - name = "Lemon Lime" - description = "A tangy substance made of 0.5% natural citrus!" + name = "Лимон-Лайм" + description = "Терпкая газировка, состоящяя на 0,5% из натуральных цитрусовых!" id = "lemon_lime" color = "#878F00" // rgb: 135, 40, 0 adj_temp_cool = 8 - taste_description = "citrus soda" + taste_description = "цитрусовой газировки" /datum/reagent/consumable/drink/cold/lemonade - name = "Lemonade" - description = "Oh the nostalgia..." + name = "Лимонад" + description = "Если жизнь даёт вам лимоны..." id = "lemonade" color = "#FFFF00" // rgb: 255, 255, 0 drink_icon = "lemonade" - drink_name = "Lemonade" - drink_desc = "Oh the nostalgia..." - taste_description = "lemonade" + drink_name = "Лимонад" + drink_desc = "Как в старые добрые..." + taste_description = "лимонада" /datum/reagent/consumable/drink/cold/kiraspecial - name = "Kira Special" - description = "Long live the guy who everyone had mistaken for a girl. Baka!" + name = "Кира Спешл" + description = "Да здравствует парень, которого все принимали за девушку. Бака!" id = "kiraspecial" color = "#CCCC99" // rgb: 204, 204, 153 drink_icon = "kiraspecial" - drink_name = "Kira Special" - drink_desc = "Long live the guy who everyone had mistaken for a girl. Baka!" - taste_description = "citrus soda" + drink_name = "Кира Спешл" + drink_desc = "Да здравствует парень, которого все принимали за девушку. Бака!" + taste_description = "цитрусовой газировки" /datum/reagent/consumable/drink/cold/brownstar - name = "Brown Star" - description = "It's not what it sounds like..." + name = "Браун Стар" + description = "Это не то, чем кажется..." id = "brownstar" color = "#9F3400" // rgb: 159, 052, 000 adj_temp_cool = 2 drink_icon = "brownstar" - drink_name = "Brown Star" - drink_desc = "Its not what it sounds like..." - taste_description = "orange soda" + drink_name = "Браун Стар" + drink_desc = "Это не то, чем кажется..." + taste_description = "апельсиновой газировки" /datum/reagent/consumable/drink/cold/milkshake - name = "Milkshake" - description = "Glorious brainfreezing mixture." + name = "Молочный коктейль" + description = "Великолепная леденящая мозг смесь." id = "milkshake" color = "#AEE5E4" // rgb" 174, 229, 228 adj_temp_cool = 9 drink_icon = "milkshake" - drink_name = "Milkshake" - drink_desc = "Glorious brainfreezing mixture." - taste_description = "milkshake" + drink_name = "Молочный коктейль" + drink_desc = "Великолепная леденящая мозг смесь." + taste_description = "молочного коктейля" /datum/reagent/consumable/drink/cold/rewriter - name = "Rewriter" - description = "The secret of the sanctuary of the Librarian..." + name = "Переписчик" + description = "Тайна святилища Библиотекаря..." id = "rewriter" color = "#485000" // rgb:72, 080, 0 drink_icon = "rewriter" - drink_name = "Rewriter" - drink_desc = "The secret of the sanctuary of the Librarian..." - taste_description = "coffee...soda?" + drink_name = "Переписчик" + drink_desc = "Тайна святилища Библиотекаря..." + taste_description = "кофейной газировки" /datum/reagent/consumable/drink/cold/rewriter/on_mob_life(mob/living/M) M.Jitter(10 SECONDS) @@ -250,23 +249,23 @@ /datum/reagent/consumable/drink/cold/zaza - name = "Zaza" - description = "The sharp delicious smell of cherries emanates from the drink." + name = "Заза" + description = "От напитка исходит стойкий запах вишни. Изумительно." id = "zaza" color = "#b10023" // rgb:177, 0, 35 drink_icon = "zaza" - drink_name = "Zaza" - drink_desc = "A glass filled with cherry drink, for a great Zaza Friday." - taste_description = "delicious shugary water taste" - var/alternate_taste_description = "something messing flavor of this juice... just sugary water taste" + drink_name = "стакан Зазы" + drink_desc = "Стакан, наполненный вишнёвым напитком, для отличной Заза-пятницы." + taste_description = "восхитительной вишнёвой газировки" + var/alternate_taste_description = "неприятной приторно-сладкой воды" var/healamount = 0.5 /datum/reagent/consumable/drink/cold/zaza/on_mob_life(mob/living/user) var/update_flags = STATUS_UPDATE_NONE if(ishuman(user) && prob(40)) - update_flags |= user.adjustBruteLoss(-healamount, FALSE) - update_flags |= user.adjustFireLoss(-healamount, FALSE) + update_flags |= user.adjustBruteLoss(-healamount, FALSE, affect_robotic = FALSE) + update_flags |= user.adjustFireLoss(-healamount, FALSE, affect_robotic = FALSE) return ..() | update_flags @@ -278,13 +277,13 @@ /datum/reagent/consumable/drink/cold/zaza/fizzy - description = "The sharp delicious smell of cherries emanates from the sparkling drink." + description = "От пузырящегося напитка исходит стойкий запах вишни. Изумительно." color = "#f30028" // rgb:243, 0, 40 id = "zazafizzy" drink_icon = "zaza_fizzy" - drink_desc = "A glass filled with cherry drink, for a great Zaza Friday. Now with bubbles!" - taste_description = "delicious fizzy water taste" - alternate_taste_description = "something messing flavor of this drink... just fizzy water taste" + drink_desc = "Стакан, наполненный вишнёвым напитком, для отличной Заза-пятницы. Теперь с пузырьками!" + taste_description = "восхитительной шипучей вишнёвой газировки" + alternate_taste_description = "неприятной приторно-сладкой газированной воды" healamount = 0.25 diff --git a/code/modules/reagents/chemistry/reagents/drinks.dm b/code/modules/reagents/chemistry/reagents/drinks.dm index be59b1dc2968..a3b914d8840b 100644 --- a/code/modules/reagents/chemistry/reagents/drinks.dm +++ b/code/modules/reagents/chemistry/reagents/drinks.dm @@ -1,12 +1,12 @@ /datum/reagent/consumable/drink/orangejuice - name = "Orange juice" + name = "Апельсиновый сок" id = "orangejuice" - description = "Both delicious AND rich in Vitamin C, what more do you need?" + description = "И вкусно, и богато витамином С - что ещё нужно?" color = "#E78108" // rgb: 231, 129, 8 drink_icon = "glass_orange" - drink_name = "Glass of Orange juice" - drink_desc = "Vitamins! Yay!" - taste_description = "orange juice" + drink_name = "стакан апельсинового сока" + drink_desc = "Витамины! Круто!" + taste_description = "апельсиного сока" /datum/reagent/consumable/drink/orangejuice/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -15,40 +15,40 @@ return ..() | update_flags /datum/reagent/consumable/drink/tomatojuice - name = "Tomato Juice" + name = "Томатный сок" id = "tomatojuice" - description = "Tomatoes made into juice. What a waste of big, juicy tomatoes, huh?" + description = "Почему томатный, а не помидорный сок?" color = "#731008" // rgb: 115, 16, 8 drink_icon = "glass_red" - drink_name = "Glass of Tomato juice" - drink_desc = "Are you sure this is tomato juice?" - taste_description = "tomato juice" + drink_name = "стакан томатного сока" + drink_desc = "Это точно томатный сок?" + taste_description = "томатного сока" /datum/reagent/consumable/drink/pineapplejuice - name = "Pineapple Juice" + name = "Ананасовый сок" id = "pineapplejuice" - description = "Pineapples juiced into a liquid. Sweet and sugary." + description = "Ананасы, выжатые до жидкого состояния. Сладко и приторно." color = "#e5b437" drink_icon = "glass_orange" - drink_name = "Glass of pineapple juice" - drink_desc = "A bright drink, sweet and sugary." - taste_description = "pineapple juice" + drink_name = "стакан ананасового сока" + drink_desc = "Яркий напиток, сладкий и приторный." + taste_description = "ананасового сока" /datum/reagent/consumable/drink/tomatojuice/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(prob(20)) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustFireLoss(-1, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/consumable/drink/limejuice - name = "Lime Juice" + name = "Лаймовый сок" id = "limejuice" - description = "The sweet-sour juice of limes." + description = "Кисло-сладкий сок лайма." color = "#365E30" // rgb: 54, 94, 48 drink_icon = "glass_green" - drink_name = "Glass of Lime juice" - drink_desc = "A glass of sweet-sour lime juice." - taste_description = "lime juice" + drink_name = "стакан лаймового сока" + drink_desc = "Стакан кисло-сладкого сока лайма." + taste_description = "лаймового сока" /datum/reagent/consumable/drink/limejuice/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -57,14 +57,14 @@ return ..() | update_flags /datum/reagent/consumable/drink/carrotjuice - name = "Carrot juice" + name = "Морковный сок" id = "carrotjuice" - description = "It is just like a carrot but without crunching." + description = "Это как морковь, только без хруста. Полезно для глаз!" color = "#973800" // rgb: 151, 56, 0 drink_icon = "carrotjuice" - drink_name = "Glass of carrot juice" - drink_desc = "It is just like a carrot but without crunching." - taste_description = "carrot juice" + drink_name = "стакан морковного сока" + drink_desc = "Это как морковь, только без хруста. Полезно для глаз!" + taste_description = "морковного сока" /datum/reagent/consumable/drink/carrotjuice/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -79,15 +79,15 @@ return ..() | update_flags /datum/reagent/consumable/drink/doctor_delight - name = "The Doctor's Delight" + name = "Радость Доктора" id = "doctorsdelight" - description = "A gulp a day keeps the MediBot away. That's probably for the best." + description = "Полезная смесь соков, которая поможет вам восстановиться перед следующей зарубой на тулбоксах." reagent_state = LIQUID color = "#FF8CFF" // rgb: 255, 140, 255 drink_icon = "doctorsdelightglass" - drink_name = "Doctor's Delight" - drink_desc = "A healthy mixture of juices, guaranteed to keep you healthy until the next toolboxing takes place." - taste_description = "healthy dietary choices" + drink_name = "стакан Радости Доктора" + drink_desc = "Полезная смесь соков, которая поможет вам восстановиться перед следующей зарубой на тулбоксах." + taste_description = "здорового питания" /datum/reagent/consumable/drink/doctor_delight/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -96,179 +96,179 @@ return ..() | update_flags /datum/reagent/consumable/drink/triple_citrus - name = "Triple Citrus" + name = "Тройной Цитрус" id = "triple_citrus" - description = "A refreshing mixed drink of orange, lemon and lime juice." + description = "Освежающий микс из сока различных цитрусовых. Замечательно." reagent_state = LIQUID color = "#23A046" drink_icon = "triplecitrus" - drink_name = "Glass of Triplecitrus Juice" - drink_desc = "As colorful and healthy as it is delicious." - taste_description = "citrus juice" + drink_name = "стакан Тройного Цитруса" + drink_desc = "Освежающий микс из сока различных цитрусовых. Замечательно." + taste_description = "сока цитрусовых" /datum/reagent/consumable/drink/triple_citrus/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) if(method == REAGENT_INGEST) M.adjustToxLoss(-rand(1,2)) /datum/reagent/consumable/drink/berryjuice - name = "Berry Juice" + name = "Ягодный сок" id = "berryjuice" - description = "A delicious blend of several different kinds of berries." + description = "Вкусная смесь из нескольких видов ягод." color = "#863333" // rgb: 134, 51, 51 drink_icon = "berryjuice" - drink_name = "Glass of berry juice" - drink_desc = "Berry juice. Or maybe its jam. Who cares?" - taste_description = "berry juice" + drink_name = "стакан ягодного сока" + drink_desc = "Вкусная смесь из нескольких видов ягод." + taste_description = "ягодного сока" /datum/reagent/consumable/drink/poisonberryjuice - name = "Poison Berry Juice" + name = "Сок из ядовитых ягод" id = "poisonberryjuice" - description = "A tasty juice blended from various kinds of very deadly and toxic berries." + description = "Вкусная смесь из нескольких видов ядовитых и опасных ягод." color = "#863353" // rgb: 134, 51, 83 drink_icon = "poisonberryjuice" - drink_name = "Glass of poison berry juice" - drink_desc = "A glass of deadly juice." - taste_description = "berry juice" + drink_name = "стакан ягодного сока" + drink_desc = "Вкусная смесь из нескольких видов ягод." + taste_description = "ягодного сока" /datum/reagent/consumable/drink/poisonberryjuice/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE update_flags |= M.adjustToxLoss(1, FALSE) return ..() | update_flags -/datum/reagent/consumable/applejuice - name = "Apple Juice" +/datum/reagent/consumable/drink/applejuice + name = "Яблочный сок" id = "applejuice" - description = "The sweet juice of an apple, fit for all ages." + description = "Сладкой сок, полученный из выжатых яблок. Подходит для всех возрастов." color = "#ECFF56" // rgb: 236, 255, 86 - taste_description = "apple juice" + taste_description = "яблочного сока" /datum/reagent/consumable/drink/watermelonjuice - name = "Watermelon Juice" + name = "Арбузный сок" id = "watermelonjuice" - description = "Delicious juice made from watermelon." + description = "Вкусный сок из арбуза." color = "#863333" // rgb: 134, 51, 51 - taste_description = "watermelon juice" + taste_description = "арбузного сока" /datum/reagent/consumable/drink/lemonjuice - name = "Lemon Juice" + name = "Лимонный сок" id = "lemonjuice" - description = "This juice is VERY sour." + description = "Этот сок ОЧЕНЬ кислый." color = "#863333" // rgb: 175, 175, 0 drink_icon = "lemonglass" - drink_name = "Glass of lemonjuice" - drink_desc = "Sour..." - taste_description = "lemon juice" + drink_name = "стакан лимонного сока" + drink_desc = "От одного только взгляда на это сводит скулы." + taste_description = "лимонного сока" /datum/reagent/consumable/drink/grapejuice - name = "Grape Juice" + name = "Виноградный сок" id = "grapejuice" - description = "This juice is known to stain shirts." + description = "Не запачкайте рубашку." color = "#993399" // rgb: 153, 51, 153 - taste_description = "grape juice" + taste_description = "виноградного сока" /datum/reagent/consumable/drink/banana - name = "Banana Juice" + name = "Банановый сок" id = "banana" - description = "The raw essence of a banana." + description = "Сырая сущность банана." color = "#863333" // rgb: 175, 175, 0 drink_icon = "banana" - drink_name = "Glass of banana juice" - drink_desc = "The raw essence of a banana. HONK" - taste_description = "banana juice" + drink_name = "стакан бананового сока" + drink_desc = "Сырая сущность банана. Хонк!" + taste_description = "бананового сока" /datum/reagent/consumable/drink/banana/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(HAS_TRAIT(M, TRAIT_COMIC) || is_monkeybasic(M)) - update_flags |= M.adjustBruteLoss(-1, FALSE) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-1, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/consumable/drink/nothing - name = "Nothing" + name = "Ничего" id = "nothing" - description = "Absolutely nothing." + description = "Абсолютно ничего." drink_icon = "nothing" - drink_name = "Nothing" - drink_desc = "Absolutely nothing." - taste_description = "nothing... how?" + drink_name = "стакан ничего" + drink_desc = "Абсолютно ничего." + taste_description = "ничего" /datum/reagent/consumable/drink/nothing/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(ishuman(M) && M.mind && M.mind.miming) - update_flags |= M.adjustBruteLoss(-1, FALSE) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-1, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/consumable/drink/potato_juice - name = "Potato Juice" + name = "Картофельный сок" id = "potato" - description = "Juice of the potato. Bleh." + description = "Сок картофеля. Ух." nutriment_factor = 2 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 drink_icon = "glass_brown" - drink_name = "Glass of potato juice" - drink_desc = "Who in the hell requests this? Gross!" - taste_description = "puke, you're pretty sure" + drink_name = "стакан картофельного сока" + drink_desc = "Кто вообще такое пьёт? Ух..." + taste_description = "рвоты или ещё чего похуже" /datum/reagent/consumable/drink/milk - name = "Milk" + name = "Молоко" id = "milk" - description = "An opaque white liquid produced by the mammary glands of mammals." + description = "Непрозрачная белая жидкость, вырабатываемая молочными железами млекопитающих." color = "#DFDFDF" // rgb: 223, 223, 223 drink_icon = "glass_white" - drink_name = "Glass of milk" - drink_desc = "White and nutritious goodness!" - taste_description = "milk" + drink_name = "стакан молока" + drink_desc = "Белая и питательная вкуснятина!" + taste_description = "молока" /datum/reagent/consumable/drink/milk/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(prob(20)) - update_flags |= M.adjustBruteLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) if(holder.has_reagent("capsaicin")) holder.remove_reagent("capsaicin", 2) return ..() | update_flags /datum/reagent/consumable/drink/milk/soymilk - name = "Soy Milk" + name = "Соевое молоко" id = "soymilk" - description = "An opaque white liquid made from soybeans." + description = "Непрозрачная белая жидкость, изготовленная из соевых бобов." color = "#DFDFC7" // rgb: 223, 223, 199 - drink_name = "Glass of soy milk" - drink_desc = "White and nutritious soy goodness!" - taste_description = "fake milk" + drink_name = "стакан соевого молока" + drink_desc = "Белая и питательная соевая вкуснятина!" + taste_description = "фальшивого молока" /datum/reagent/consumable/drink/milk/cream - name = "Cream" + name = "Сливки" id = "cream" - description = "The fatty, still liquid part of milk. Why don't you mix this with sum scotch, eh?" + description = "Жирная, но всё ещё жидкая часть молока. Почему бы вам не смешать это с виски, а?" color = "#DFD7AF" // rgb: 223, 215, 175 - drink_name = "Glass of cream" - drink_desc = "Ewwww..." - taste_description = "cream" + drink_name = "стакан сливок" + drink_desc = "Ууу..." + taste_description = "сливок" /datum/reagent/consumable/drink/milk/chocolate_milk - name = "Chocolate milk" + name = "Шоколадное молоко" id ="chocolate_milk" - description = "Chocolate-flavored milk, tastes like being a kid again." + description = "Молоко с шоколадом. Прямо как в детстве." color = "#85432C" - drink_name = "Glass of chocolate milk" - taste_description = "chocolate milk" + drink_name = "стакан шоколадного молока" + taste_description = "шоколадного сока" /datum/reagent/consumable/drink/hot_coco - name = "Hot Chocolate" + name = "Горячий шоколад" id = "hot_coco" - description = "Made with love! And coco beans." + description = "Сделано с любовью! И какао-бобами." color = "#403010" // rgb: 64, 48, 16 adj_temp_hot = 5 drink_icon = "hot_coco" - drink_name = "Glass of hot coco" - drink_desc = "Delicious and cozy" - taste_description = "chocolate" + drink_name = "стакан горячего шоколада" + drink_desc = "Вкусный и тёплый." + taste_description = "горячего шоколада" /datum/reagent/consumable/drink/coffee - name = "Coffee" + name = "Кофе" id = "coffee" - description = "Coffee is a brewed drink prepared from roasted seeds, commonly called coffee beans, of the coffee plant." + description = "Кофе - это напиток, приготовленный из обжаренных семян кофейного растения, которые обычно называют какао-бобами." color = "#482000" // rgb: 72, 32, 0 nutriment_factor = 0 adj_dizzy = -10 SECONDS @@ -282,9 +282,9 @@ addict_supertype = /datum/reagent/consumable/drink/coffee heart_rate_increase = 1 drink_icon = "glass_brown" - drink_name = "Glass of coffee" - drink_desc = "Don't drop it, or you'll send scalding liquid and glass shards everywhere." - taste_description = "coffee" + drink_name = "стакан кофе" + drink_desc = "Отличный способ взбодриться с утра или посадить свою сердечно-сосудистую систему. Зависит от частоты употребления." + taste_description = "кофе" /datum/reagent/consumable/drink/coffee/New() addict_supertype = /datum/reagent/consumable/drink/coffee @@ -302,68 +302,68 @@ return list(0, STATUS_UPDATE_NONE) /datum/reagent/consumable/drink/coffee/icecoffee - name = "Iced Coffee" + name = "Кофе со льдом" id = "icecoffee" - description = "Coffee and ice, refreshing and cool." + description = "Кофе со льдом, освежающе-бодрящий." color = "#102838" // rgb: 16, 40, 56 adj_temp_hot = 0 adj_temp_cool = 5 drink_icon = "icedcoffeeglass" - drink_name = "Iced Coffee" - drink_desc = "A drink to perk you up and refresh you!" - taste_description = "refreshingly cold coffee" + drink_name = "стакан кофе со льдом" + drink_desc = "Кофе со льдом, освежающе-бодрящий." + taste_description = "освежающе-холодного кофе" /datum/reagent/consumable/drink/coffee/soy_latte - name = "Soy Latte" + name = "Соевый латте" id = "soy_latte" - description = "A nice and tasty beverage while you are reading your hippie books." + description = "Вкусный и бодрящий напиток. Самое то для чтения всех этих ваших левацких книжек." color = "#664300" // rgb: 102, 67, 0 adj_sleepy = 0 adj_temp_hot = 5 drink_icon = "soy_latte" - drink_name = "Soy Latte" - drink_desc = "A nice and refrshing beverage while you are reading." - taste_description = "fake milky coffee" + drink_name = "стакан соевого латте" + drink_desc = "Вкусный и бодрящий напиток. Самое то для чтения всех этих ваших левацких книжек." + taste_description = "фальшивого молочного кофе" /datum/reagent/consumable/drink/coffee/soy_latte/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE M.SetSleeping(0) if(prob(20)) - update_flags |= M.adjustBruteLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/consumable/drink/coffee/cafe_latte - name = "Cafe Latte" + name = "Латте" id = "cafe_latte" - description = "A nice, strong and tasty beverage while you are reading." + description = "Вкусный и бодрящий напиток. Самое то для чтения книг." color = "#664300" // rgb: 102, 67, 0 adj_sleepy = 0 adj_temp_hot = 5 drink_icon = "cafe_latte" - drink_name = "Cafe Latte" - drink_desc = "A nice, strong and refreshing beverage while you are reading." - taste_description = "milky coffee" + drink_name = "стакан латте" + drink_desc = "Вкусный и бодрящий напиток. Самое то для чтения книг." + taste_description = "молочного кофе" /datum/reagent/consumable/drink/coffee/cafe_latte/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE M.SetSleeping(0) if(prob(20)) - update_flags |= M.adjustBruteLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/consumable/drink/coffee/cafe_latte/cafe_mocha - name = "Cafe Mocha" + name = "Моккачино" id = "cafe_mocha" - description = "The perfect blend of coffe, milk, and chocolate." + description = "Идеальное сочетание кофе, молока и шоколада." color = "#673629" - drink_name = "Cafe Mocha" - drink_desc = "The perfect blend of coffe, milk, and chocolate." - taste_description = "chocolatey coffee" + drink_name = "стакан моккачино" + drink_desc = "Идеальное сочетание кофе, молока и шоколада." + taste_description = "шоколадного кофе" /datum/reagent/consumable/drink/tea - name = "Tea" + name = "Чай" id = "tea" - description = "Tasty black tea: It has antioxidants. It's good for you!" + description = "Вкусный чёрный чай. Содержит полезные антиоксиданты!" color = "#101000" // rgb: 16, 16, 0 nutriment_factor = 0 adj_dizzy = -4 SECONDS @@ -376,9 +376,9 @@ minor_addiction = TRUE addict_supertype = /datum/reagent/consumable/drink/tea drink_icon = "glass_brown" - drink_name = "Glass of Tea" - drink_desc = "A glass of hot tea. Perhaps a cup with a handle would have been smarter?" - taste_description = "tea" + drink_name = "стакан чая" + drink_desc = "Стакан горячего чая. Может стоило всё таки налить в кружку с ручкой?" + taste_description = "горячего чая" /datum/reagent/consumable/drink/tea/New() addict_supertype = /datum/reagent/consumable/drink/tea @@ -390,167 +390,168 @@ return ..() | update_flags /datum/reagent/consumable/drink/tea/icetea - name = "Iced Tea" + name = "Чай со льдом" id = "icetea" - description = "No relation to a certain rap artist/ actor." + description = "Освежает и бодрит. Самое то в жаркий денёк." color = "#104038" // rgb: 16, 64, 56 adj_temp_hot = 0 adj_temp_cool = 5 drink_icon = "icetea" - drink_name = "Iced Tea" - drink_desc = "No relation to a certain rap artist/ actor." - taste_description = "cold tea" + drink_name = "стакан чая со льдом" + drink_desc = "Освежает и бодрит. Самое то в жаркий денёк." + taste_description = "холодного чая" /datum/reagent/consumable/drink/bananahonk - name = "Banana Honk" + name = "Банана-Хонк" id = "bananahonk" - description = "A drink from Clown Heaven." + description = "Напиток из клоунского рая." color = "#664300" // rgb: 102, 67, 0 drink_icon = "bananahonkglass" - drink_name = "Banana Honk" - drink_desc = "A drink from Banana Heaven." - taste_description = "HONK" + drink_name = "Банана-Хонк" + drink_desc = "Напиток из клоунского рая." + taste_description = "бананов и веселья" /datum/reagent/consumable/drink/bananahonk/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(HAS_TRAIT(src, TRAIT_COMIC) || is_monkeybasic(M)) - update_flags |= M.adjustBruteLoss(-1, FALSE) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-1, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/consumable/drink/silencer - name = "Silencer" + name = "Глушитель" id = "silencer" - description = "A drink from Mime Heaven." + description = "Напиток из мимского рая." color = "#664300" // rgb: 102, 67, 0 drink_icon = "silencerglass" - drink_name = "Silencer" - drink_desc = "A drink from mime Heaven." - taste_description = "mphhhh" + drink_name = "стакан Глушителя" + drink_desc = "Напиток из мимского рая." + taste_description = "тишины" /datum/reagent/consumable/drink/silencer/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(ishuman(M) && (M.job in list(JOB_TITLE_MIME))) - update_flags |= M.adjustBruteLoss(-1, FALSE) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-1, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/consumable/drink/chocolatepudding - name = "Chocolate Pudding" + name = "Шоколадный пудинг" id = "chocolatepudding" - description = "A great dessert for chocolate lovers." + description = "Отличный десерт для любителей шоколада." color = "#800000" nutriment_factor = 4 * REAGENTS_METABOLISM drink_icon = "chocolatepudding" - drink_name = "Chocolate Pudding" - drink_desc = "Tasty" - taste_description = "chocolate" + drink_name = "шоколадный пудинг" + drink_desc = "Отличный десерт для любителей шоколада." + taste_description = "шоколадной массы" /datum/reagent/consumable/drink/vanillapudding - name = "Vanilla Pudding" + name = "Ванильный пудинг" id = "vanillapudding" - description = "A great dessert for vanilla lovers." + description = "Отличный десерт для любителей ванили." color = "#FAFAD2" nutriment_factor = 4 * REAGENTS_METABOLISM drink_icon = "vanillapudding" - drink_name = "Vanilla Pudding" - drink_desc = "Tasty." - taste_description = "vanilla" + drink_name = "ванильный пудинг" + drink_desc = "Отличный десерт для любителей ванили." + taste_description = "ванильной массы" /datum/reagent/consumable/drink/cherryshake - name = "Cherry Shake" + name = "Ягодный шейк" id = "cherryshake" - description = "A cherry flavored milkshake." + description = "Молочный коктейль со вкусом вишни." color = "#FFB6C1" nutriment_factor = 4 * REAGENTS_METABOLISM drink_icon = "cherryshake" - drink_name = "Cherry Shake" - drink_desc = "A cherry flavored milkshake." - taste_description = "cherry milkshake" + drink_name = "ягодный шейк" + drink_desc = "Молочный коктейль со вкусом вишни." + taste_description = "ягодного милк-шейка" /datum/reagent/consumable/drink/bluecherryshake - name = "Blue Cherry Shake" + name = "Голубой ягодный шейк" id = "bluecherryshake" - description = "An exotic milkshake." + description = "Экзотичный ягодный молочный коктейль." color = "#00F1FF" nutriment_factor = 4 * REAGENTS_METABOLISM drink_icon = "bluecherryshake" - drink_name = "Blue Cherry Shake" - drink_desc = "An exotic blue milkshake." - taste_description = "blues" + drink_name = "голубой ягодный шейк" + drink_desc = "Экзотичный ягодный молочный коктейль." + taste_description = "голубики" /datum/reagent/consumable/drink/pumpkin_latte - name = "Pumpkin Latte" + name = "Тыквенный латте" id = "pumpkin_latte" - description = "A mix of pumpkin juice and coffee." + description = "Смесь тыквенного сока и кофе. Скорее всего, по неадекватно завышенной цене." color = "#F4A460" nutriment_factor = 3 * REAGENTS_METABOLISM drink_icon = "pumpkin_latte" - drink_name = "Pumpkin Latte" - drink_desc = "A mix of coffee and pumpkin juice." - taste_description = "overpriced hipster spices" + drink_name = "кружка тыквенного латте" + drink_desc = "Смесь тыквенного сока и кофе. Скорее всего, по неадекватно завышенной цене." + taste_description = "дорогущего кофе для леваков" /datum/reagent/consumable/drink/gibbfloats - name = "Gibb Floats" + name = "Всплывший Гибб" id = "gibbfloats" - description = "Ice cream on top of a Dr. Gibb glass." + description = "Мороженое, смешанное с Доктором Гиббом." color = "#B22222" nutriment_factor = 3 * REAGENTS_METABOLISM drink_icon= "gibbfloats" - drink_name = "Gibbfloat" - drink_desc = "Dr. Gibb with ice cream on top." - taste_description = "taste revolution" + drink_name = "кружка Всплывшего Гибба" + drink_desc = "Мороженое, смешанное с Доктором Гиббом." + taste_description = "революции" /datum/reagent/consumable/drink/pumpkinjuice name = "Pumpkin Juice" id = "pumpkinjuice" - description = "Juiced from real pumpkin." + description = "Выжат из настоящей тыквы." color = "#FFA500" - taste_description = "autumn" + taste_description = "осени" /datum/reagent/consumable/drink/blumpkinjuice - name = "Blumpkin Juice" + name = "Нетыквенный сок" id = "blumpkinjuice" - description = "Juiced from real blumpkin." + description = "Не выжат из настоящей тыквы." color = "#00BFFF" - taste_description = "caustic puke" + taste_description = "едкой рвоты" /datum/reagent/consumable/drink/grape_soda - name = "Grape soda" + name = "Виноградная газировка" id = "grapesoda" - description = "Beloved of children and teetotalers." + description = "Любим детьми и трезвенниками." color = "#E6CDFF" - taste_description = "grape soda" + taste_description = "виноградной газировки" /datum/reagent/consumable/drink/coco/icecoco - name = "Iced Cocoa" + name = "Холодный какао" id = "icecoco" - description = "Hot cocoa and ice, refreshing and cool." + description = "Горячее какао со льдом, освежающий и прохладный." color = "#102838" // rgb: 16, 40, 56 adj_temp_hot = 0 adj_temp_cool = 5 drink_icon = "icedcoffeeglass" - drink_name = "Iced Cocoa" - drink_desc = "A sweeter drink to perk you up and refresh you!" - taste_description = "refreshingly cold cocoa" + drink_name = "стакан холодного какао" + drink_desc = "Горячее какао со льдом, освежающий и прохладный." + taste_description = "освежающе-холодного какао" /datum/reagent/consumable/drink/non_alcoholic_beer - name = "Non-alcoholic beer" + name = "Безалкогольное пиво" id = "noalco_beer" - description = "The most meaningless thing." + description = "Что может быть ещё более бессмысленным?" drink_icon = "alcohol_free_beer" - drink_name = "Non-alcoholic beer" + drink_name = "Безалкогольное пиво" + drink_desc = "Что может быть ещё более бессмысленным?" color = "#572c13" - taste_description = "beer" + taste_description = "пива" /datum/reagent/consumable/drink/laughsyrup - name = "Laughin' Syrup" - description = "The product of juicing Laughin' Peas. Fizzy, and seems to change flavour based on what it's used with!" + name = "Смехо-сироп" + description = "Сок, выжатый из смеющихся бобов. Шипучий и меняет вкус в зависимости от того, с чем его употребляют!" id = "laughsyrup" color = "#803280" nutriment_factor = 5 * REAGENTS_METABOLISM taste_mult = 2 - taste_description = "fizzy sweetness" + taste_description = "шипучей сладости" /datum/reagent/consumable/drink/laughsyrup/on_mob_life(mob/living/M) if(prob(5)) diff --git a/code/modules/reagents/chemistry/reagents/drugs.dm b/code/modules/reagents/chemistry/reagents/drugs.dm index e5ef68bffb73..d87bd28fb1b5 100644 --- a/code/modules/reagents/chemistry/reagents/drugs.dm +++ b/code/modules/reagents/chemistry/reagents/drugs.dm @@ -1,10 +1,10 @@ /datum/reagent/lithium - name = "Lithium" + name = "Литий" id = "lithium" - description = "A chemical element." + description = "Химический элемент." reagent_state = SOLID color = "#808080" // rgb: 128, 128, 128 - taste_description = "metal" + taste_description = "металла" /datum/reagent/lithium/on_mob_life(mob/living/M) if(isturf(M.loc) && !isspaceturf(M.loc)) @@ -15,12 +15,12 @@ return ..() /datum/reagent/lsd - name = "Lysergic acid diethylamide" + name = "Диэтиламид лизергиновой кислоты" id = "lsd" - description = "A highly potent hallucinogenic substance. Far out, maaaan." + description = "Сильнодействующее галлюциногенное вещество, также известное как \"ЛСД\". Чуваааак." reagent_state = LIQUID color = "#0000D8" - taste_description = "a magical journey" + taste_description = "магического путешествия" /datum/reagent/lsd/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -30,16 +30,16 @@ return ..() | update_flags /datum/reagent/space_drugs - name = "Space drugs" + name = "Космо-дурь" id = "space_drugs" - description = "An illegal chemical compound used as drug." + description = "Запрещенное химическое соединение, используемое в качестве наркотика." reagent_state = LIQUID color = "#9087A2" metabolization_rate = 0.5 * REAGENTS_METABOLISM addiction_chance = 15 addiction_threshold = 10 heart_rate_decrease = 1 - taste_description = "a synthetic high" + taste_description = "синтетического кайфа" /datum/reagent/space_drugs/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -52,11 +52,11 @@ return ..() | update_flags /datum/reagent/psilocybin - name = "Psilocybin" + name = "Псилоцибин" id = "psilocybin" - description = "A strong psycotropic derived from certain species of mushroom." + description = "Сильный психотропный препарат, получаемый из некоторых видов грибов." color = "#E700E7" // rgb: 231, 0, 231 - taste_description = "visions" + taste_description = "видений" /datum/reagent/psilocybin/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -84,9 +84,9 @@ return ..() | update_flags /datum/reagent/nicotine - name = "Nicotine" + name = "Никотин" id = "nicotine" - description = "Slightly reduces stun times. If overdosed it will deal toxin and oxygen damage." + description = "Немного уменьшает время оглушения. При передозировке отравляет и сбивает дыхание." reagent_state = LIQUID color = "#60A584" // rgb: 96, 165, 132 overdose_threshold = 35 @@ -94,16 +94,16 @@ addiction_threshold = 160 minor_addiction = TRUE heart_rate_increase = 1 - taste_description = "calm" + taste_description = "спокойствия" /datum/reagent/nicotine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE - var/smoke_message = pick("You feel relaxed.", "You feel calmed.", "You feel less stressed.", "You feel more placid.", "You feel more undivided.") + var/smoke_message = pick("Вы чувствуете себя расслабленным.", "Вы чувствуете умиротворение.", "Вы чувствуете себя менее напряжённо.", "Вы чувствуете себя спокойнее.") M.AdjustParalysis(-2 SECONDS) M.AdjustStunned(-2 SECONDS) M.AdjustWeakened(-2 SECONDS) if(prob(5)) - to_chat(M, "[smoke_message]") + to_chat(M, span_notice("[smoke_message]")) return ..() | update_flags /datum/reagent/nicotine/overdose_process(mob/living/M, severity) @@ -112,13 +112,13 @@ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS] if(severity == 1) if(effect <= 2) - M.visible_message("[M] looks nervous!") + M.visible_message(span_warning("[M] выгляд[pluralize_ru(M.gender, "ит", "ят")] нервн[genderize_ru(M.gender, "ым", "ой", "ым", "ыми")]!")) M.AdjustConfused(30 SECONDS) update_flags |= M.adjustToxLoss(2, FALSE) M.Jitter(20 SECONDS) M.emote("twitch_s") else if(effect <= 4) - M.visible_message("[M] is all sweaty!") + M.visible_message(span_warning("[M] [genderize_ru(M.gender, "весь", "вся", "всё", "все")] в поту!")) M.adjust_bodytemperature(rand(15,30)) update_flags |= M.adjustToxLoss(3, FALSE) else if(effect <= 7) @@ -128,12 +128,12 @@ else if(severity == 2) if(effect <= 2) M.emote("gasp") - to_chat(M, "You can't breathe!") + to_chat(M, span_warning("Вам трудно дышать!")) update_flags |= M.adjustOxyLoss(15, FALSE) update_flags |= M.adjustToxLoss(3, FALSE) M.Stun(2 SECONDS) else if(effect <= 4) - to_chat(M, "You feel terrible!") + to_chat(M, span_warning("Вы чувствуете себя отвратно!")) M.emote("drool") M.Jitter(20 SECONDS) update_flags |= M.adjustToxLoss(5, FALSE) @@ -141,7 +141,7 @@ M.AdjustConfused(66 SECONDS) else if(effect <= 7) M.emote("collapse") - to_chat(M, "Your heart is pounding!") + to_chat(M, span_warning("Ваше сердце едва ли не выскакивает из груди!")) SEND_SOUND(M, sound('sound/effects/singlebeat.ogg')) M.Paralyse(10 SECONDS) M.Jitter(60 SECONDS) @@ -156,14 +156,14 @@ return ..() /datum/reagent/moonlin - name = "Moonlin" + name = "Мунлин" id = "moonlin" - description = "A granular powder consisting of small white crystals, which is extracted from moonlight plant growing on the coasts and in the deltas of the Adomai rivers." + description = "Гранулированный порошок, состоящий из мелких белых кристаллов, который добывают из растения \"Мунлайт\", растущего на побережьях и в дельтах рек Адомая." reagent_state = LIQUID color = "#5ec3cc" // rgb: 96, 165, 132 drink_icon = "moonlight_d" - drink_name = "Moonlin" - drink_desc = "Strange drink with white crystals! Be aware, if you are tajaran." + drink_name = "Мунлин" + drink_desc = "Странный напиток с белыми кристаллами! Будьте внимательны, если вы таяран!" overdose_threshold = 20 addiction_chance = 20 addiction_threshold = 15 @@ -171,13 +171,13 @@ harmless = FALSE minor_addiction = TRUE heart_rate_increase = 1 - taste_description = "a delightful numbing and mint" + taste_description = "мятного онемения во рту" /datum/reagent/moonlin/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE - var/smoke_message = pick("You feel numbed.", "You feel calmed.") + var/smoke_message = pick("Вы чувствуете себя оцепеневшим.", "Вы чувствуете себя спокойным.") if(prob(5)) - to_chat(M, "[smoke_message]") + to_chat(M, span_notice("[smoke_message]")) M.AdjustJitter(-50 SECONDS) switch(current_cycle) if(1 to 35) @@ -196,13 +196,13 @@ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS] if(severity == 1) if(effect <= 2) - M.visible_message("[M] looks nervous!") + M.visible_message(span_warning("[M] выгляд[pluralize_ru(M.gender, "ит", "ят")] нервн[genderize_ru(M.gender, "ым", "ой", "ым", "ыми")]!")) M.AdjustConfused(35 SECONDS) update_flags |= M.adjustToxLoss(2, FALSE) M.Jitter(20 SECONDS) M.emote("twitch_s") else if(effect <= 4) - M.visible_message("[M] is all sweaty!") + M.visible_message(span_warning("[M] [genderize_ru(M.gender, "весь", "вся", "всё", "все")] в поту!")) M.adjust_bodytemperature(rand(15,30)) update_flags |= M.adjustToxLoss(3, FALSE) else if(effect <= 7) @@ -212,11 +212,11 @@ else if(severity == 2) if(effect <= 2) M.emote("gasp") - to_chat(M, "You feel awful!") + to_chat(M, span_warning("Вам трудно дышать!")) update_flags |= M.adjustToxLoss(3, FALSE) M.Stun(2 SECONDS) else if(effect <= 4) - to_chat(M, "You feel terrible!") + to_chat(M, span_warning("Вы чувствуете себя отвратно!")) M.emote("drool") M.Jitter(20 SECONDS) update_flags |= M.adjustToxLoss(4, FALSE) @@ -224,14 +224,14 @@ M.AdjustConfused(66 SECONDS) else if(effect <= 7) M.emote("collapse") - to_chat(M, "Your heart is pounding!") + to_chat(M, span_warning("Ваше сердце едва ли не выскакивает из груди!")) M << 'sound/effects/singlebeat.ogg' M.Paralyse(10 SECONDS) M.Jitter(60 SECONDS) update_flags |= M.adjustToxLoss(4, FALSE) return list(effect, update_flags) /datum/reagent/crank - name = "Crank" + name = "Крэнк" id = "crank" description = "Reduces stun times by about 200%. If overdosed or addicted it will deal significant Toxin, Brute and Brain damage." reagent_state = LIQUID @@ -249,14 +249,14 @@ if(prob(15)) M.emote(pick("twitch", "twitch_s", "grumble", "laugh")) if(prob(8)) - to_chat(M, "You feel great!") + to_chat(M, span_notice("Вы чувствуете себя отлично!")) M.reagents.add_reagent("methamphetamine", rand(1,2)) M.emote(pick("laugh", "giggle")) if(prob(6)) - to_chat(M, "You feel warm.") + to_chat(M, span_notice("Вы чувствуете тепло!")) M.adjust_bodytemperature(rand(1,10)) if(prob(4)) - to_chat(M, "You feel kinda awful!") + to_chat(M, span_notice("Вы чувствуете себя хреново!")) update_flags |= M.adjustToxLoss(1, FALSE) M.AdjustJitter(60 SECONDS) M.emote(pick("groan", "moan")) @@ -268,12 +268,12 @@ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS] if(severity == 1) if(effect <= 2) - M.visible_message("[M] looks confused!") + M.visible_message(span_warning("[M] выгляд[pluralize_ru(M.gender, "ет", "ют")] потерянно!")) M.AdjustConfused(40 SECONDS) M.Jitter(40 SECONDS) M.emote("scream") else if(effect <= 4) - M.visible_message("[M] is all sweaty!") + M.visible_message(span_warning("[M] [genderize_ru(M.gender, "весь", "вся", "всё", "все")] в поту!")) M.adjust_bodytemperature(rand(5,30)) update_flags |= M.adjustBrainLoss(1, FALSE) update_flags |= M.adjustToxLoss(1, FALSE) @@ -283,12 +283,12 @@ M.emote("grumble") else if(severity == 2) if(effect <= 2) - M.visible_message("[M] is sweating like a pig!") + M.visible_message(span_warning("[M] поте[pluralize_ru(M.gender, "ет", "ют")] как свинья!")) M.adjust_bodytemperature(rand(20,100)) update_flags |= M.adjustToxLoss(5, FALSE) M.Stun(6 SECONDS) else if(effect <= 4) - M.visible_message("[M] starts tweaking the hell out!") + M.visible_message(span_warning("[M] тряс[pluralize_ru(M.gender, "ёт", "ют")]ся как эпилептик!")) M.Jitter(200 SECONDS) update_flags |= M.adjustToxLoss(2, FALSE) update_flags |= M.adjustBrainLoss(8, FALSE) @@ -298,22 +298,22 @@ M.reagents.add_reagent("jagged_crystals", 5) else if(effect <= 7) M.emote("scream") - M.visible_message("[M] nervously scratches at [M.p_their()] skin!") + M.visible_message(span_warning("[M] нервно скреб[pluralize_ru(M.gender, "ёт", "ют")] свою кожу!")) M.Jitter(20 SECONDS) update_flags |= M.adjustBruteLoss(5, FALSE) M.emote("twitch_s") return list(effect, update_flags) /datum/reagent/krokodil - name = "Krokodil" + name = "Дезоморфин" id = "krokodil" - description = "A sketchy homemade opiate, often used by disgruntled Cosmonauts." + description = "Кустарно произведённый наркотик, популярный в бедных секторах СССП." reagent_state = LIQUID color = "#0264B4" overdose_threshold = 20 addiction_chance = 10 addiction_threshold = 10 - taste_description = "very poor life choices" + taste_description = "дешёвой советской дури" /datum/reagent/krokodil/on_mob_life(mob/living/M) @@ -324,18 +324,18 @@ if(prob(15)) M.emote(pick("smile", "grin", "yawn", "laugh", "drool")) if(prob(10)) - to_chat(M, "You feel pretty chill.") + to_chat(M, span_notice("Вы чувствуете себя спокойным!")) M.adjust_bodytemperature(-1) M.emote("smile") if(prob(5)) - to_chat(M, "You feel too chill!") + to_chat(M, span_notice("Вы чувствуете себя слишком спокойным!")) M.emote(pick("yawn", "drool")) M.Stun(2 SECONDS) update_flags |= M.adjustToxLoss(1, FALSE) update_flags |= M.adjustBrainLoss(1, FALSE) M.adjust_bodytemperature(-20) if(prob(2)) - to_chat(M, "Your skin feels all rough and dry.") + to_chat(M, span_warning("Ваша кожа сухая как пустыня! Она трескается!")) update_flags |= M.adjustBruteLoss(2, FALSE) return ..() | update_flags @@ -345,21 +345,21 @@ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS] if(severity == 1) if(effect <= 2) - M.visible_message("[M] looks dazed!") + M.visible_message(span_warning("[M] выгляд[pluralize_ru(M.gender, "ит", "ят")] потерянно!")) M.Stun(6 SECONDS) M.emote("drool") else if(effect <= 4) M.emote("shiver") M.adjust_bodytemperature(-40) else if(effect <= 7) - to_chat(M, "Your skin is cracking and bleeding!") + to_chat(M, span_warning("Ваша кожа сухая как пустыня! Она трескается!")) update_flags |= M.adjustBruteLoss(5, FALSE) update_flags |= M.adjustToxLoss(2, FALSE) update_flags |= M.adjustBrainLoss(1, FALSE) M.emote("cry") else if(severity == 2) if(effect <= 2) - M.visible_message("[M] sways and falls over!") + M.visible_message(span_warning("[M] кача[pluralize_ru(M.gender, "ет", "ют")]ся и вал[pluralize_ru(M.gender, "ит", "ят")]ся на землю!")) update_flags |= M.adjustToxLoss(3, FALSE) update_flags |= M.adjustBrainLoss(3, FALSE) M.Weaken(16 SECONDS) @@ -367,7 +367,7 @@ else if(effect <= 4) if(ishuman(M)) var/mob/living/carbon/human/H = M - H.visible_message("[M]'s skin is rotting away!") + H.visible_message(span_warning("С [M] падают куски сгнившей кожи!")) update_flags |= H.adjustBruteLoss(25, FALSE) H.emote("scream") H.ChangeToHusk() @@ -378,9 +378,9 @@ return list(effect, update_flags) /datum/reagent/methamphetamine - name = "Methamphetamine" + name = "Метамфетамин" id = "methamphetamine" - description = "Reduces stun times by about 300%, speeds the user up, and allows the user to quickly recover stamina while dealing a small amount of Brain damage. If overdosed the subject will move randomly, laugh randomly, drop items and suffer from Toxin and Brain damage. If addicted the subject will constantly jitter and drool, before becoming dizzy and losing motor control and eventually suffer heavy toxin damage." + description = "Метамфетамин — психоактивное вещество, стимулирующее работу головного мозга и всей нервной системы. Это синтетический препарат, представленный в виде белого кристаллического порошка." reagent_state = LIQUID color = "#60A584" // rgb: 96, 165, 132 overdose_threshold = 20 @@ -388,7 +388,7 @@ addiction_threshold = 5 metabolization_rate = 1.5 * REAGENTS_METABOLISM heart_rate_increase = 1 - taste_description = "speed" + taste_description = "бодрости" /datum/reagent/methamphetamine/on_mob_add(mob/living/user) @@ -427,22 +427,22 @@ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS] if(severity == 1) if(effect <= 2) - M.visible_message("[M] can't seem to control [M.p_their()] legs!") + M.visible_message(span_warning("Ноги [M] заплетаются!")) M.AdjustConfused(40 SECONDS) M.Weaken(8 SECONDS) else if(effect <= 4) - M.visible_message("[M]'s hands flip out and flail everywhere!") + M.visible_message(span_warning("[M] маш[pluralize_ru(M.gender, "ет", "ут")] руками во все стороны, роняя предметы в руках!")) M.drop_l_hand() M.drop_r_hand() else if(effect <= 7) M.emote("laugh") else if(severity == 2) if(effect <= 2) - M.visible_message("[M]'s hands flip out and flail everywhere!") + M.visible_message(span_warning("[M] маш[pluralize_ru(M.gender, "ет", "ут")] руками во все стороны, роняя предметы в руках!")) M.drop_l_hand() M.drop_r_hand() else if(effect <= 4) - M.visible_message("[M] falls to the floor and flails uncontrollably!") + M.visible_message(span_warning("[M] кача[pluralize_ru(M.gender, "ет", "ют")]ся и вал[pluralize_ru(M.gender, "ит", "ят")]ся на землю!")) M.Jitter(20 SECONDS) M.Weaken(20 SECONDS) else if(effect <= 7) @@ -450,9 +450,9 @@ return list(effect, update_flags) /datum/reagent/bath_salts - name = "Bath Salts" + name = "Соль для ванн" id = "bath_salts" - description = "Sometimes packaged as a refreshing bathwater additive, these crystals are definitely not for human consumption." + description = "На самом деле это не соли для купания в ванной, а синтетические наркотики, которые часто маскируют под соли для ванн и прочие бытовые вещества, чтобы упроситить распространение." reagent_state = SOLID color = "#FAFAFA" overdose_threshold = 20 @@ -460,7 +460,7 @@ addiction_threshold = 5 shock_reduction = 60 metabolization_rate = 1.5 * REAGENTS_METABOLISM - taste_description = "WAAAAGH" + taste_description = "нереальной бодрости" /datum/reagent/bath_salts/on_mob_add(mob/living/carbon/human/user) @@ -487,16 +487,16 @@ head_organ.f_style = "Very Long Beard" H.update_hair() H.update_fhair() - H.visible_message("[H] has a wild look in [H.p_their()] eyes!") + H.visible_message(span_warning("[H] выгляд[pluralize_ru(H.gender, "ит", "ят")] ДИКО!")) if(check < 30) M.emote(pick("twitch", "twitch_s", "scream", "drool", "grumble", "mumble")) M.Druggy(30 SECONDS) if(check < 5) M.emote(pick("howl", "growl")) else if(check < 24) - to_chat(M, "They're coming for you!") + to_chat(M, span_userdanger("Они идут за вами!!!")) else if(check < 28) - to_chat(M, "THEY'RE GONNA GET YOU!") + to_chat(M, span_userdanger("ОНИ УЖЕ БЛИЗКО!!!")) return ..() | update_flags @@ -509,14 +509,14 @@ /datum/reagent/bath_salts/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) if(method == REAGENT_INGEST) - to_chat(M, "You feel FUCKED UP!!!!!!") + to_chat(M, span_danger("КАК ЖЕ ЭТО ОХУЕННО!!!")) M << 'sound/effects/singlebeat.ogg' M.emote("faint") M.apply_effect(5, IRRADIATE, negate_armor = 1) M.adjustToxLoss(5) M.adjustBrainLoss(10) else - to_chat(M, "You feel a bit more salty than usual.") + to_chat(M, span_notice("Вы чувствуете себя соленоватым.")) /datum/reagent/bath_salts/overdose_process(mob/living/M, severity) var/update_flags = STATUS_UPDATE_NONE @@ -528,14 +528,14 @@ return list(0, update_flags) /datum/reagent/jenkem - name = "Jenkem" + name = "Дженкем" id = "jenkem" - description = "Jenkem is a prison drug made from fermenting feces in a solution of urine. Extremely disgusting." + description = "Дженкем - это тюремный наркотик, изготовленный путем брожения фекалий в растворе мочи. Крайне отвратительно." reagent_state = LIQUID color = "#644600" addiction_chance = 5 addiction_threshold = 5 - taste_description = "the inside of a toilet... or worse" + taste_description = "тушёного говна с мочой" /datum/reagent/jenkem/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -546,12 +546,12 @@ return ..() | update_flags /datum/reagent/aranesp - name = "Aranesp" + name = "Аранесп" id = "aranesp" - description = "An illegal performance enhancing drug. Side effects might include chest pain, seizures, swelling, headache, fever... ... ..." + description = "Запрещенный препарат, повышающий работоспособность. Побочные эффекты могут включать боль в груди, судороги, отеки, головную боль, лихорадку и так далее..." reagent_state = LIQUID color = "#60A584" // rgb: 96, 165, 132 - taste_description = "bitterness" + taste_description = "горечи" /datum/reagent/aranesp/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -560,30 +560,30 @@ update_flags |= M.adjustToxLoss(1, FALSE) if(prob(5)) M.emote(pick("twitch", "shake", "tremble","quiver", "twitch_s")) - var/high_message = pick("really buff", "on top of the world","like you're made of steel", "energized", "invigorated", "full of energy") + var/high_message = pick("бодрость", "заряд бодрости", "силу", "непобедимость", "скорость", "энергию") if(prob(8)) - to_chat(M, "[high_message]!") + to_chat(M, span_notice("Вы чувствуете [high_message]!")) if(prob(5)) - to_chat(M, "You cannot breathe!") + to_chat(M, span_danger("У вас перехватило дыхание.")) update_flags |= M.adjustOxyLoss(15, FALSE) M.Stun(2 SECONDS) M.AdjustLoseBreath(2 SECONDS) return ..() | update_flags /datum/reagent/thc - name = "Tetrahydrocannabinol" + name = "Тетрагидроканнабинол" id = "thc" - description = "A mild psychoactive chemical extracted from the cannabis plant." + description = "Мягкое психоактивное вещество, добываемое из растения конопли." reagent_state = LIQUID color = "#0FBE0F" - taste_description = "man like, totally the best like, thing ever dude" + taste_description = "охренненого кайфа" /datum/reagent/thc/on_mob_life(mob/living/M) M.AdjustStuttering(rand(0, 6 SECONDS)) if(prob(5)) M.emote(pick("laugh","giggle","smile")) if(prob(5)) - to_chat(M, "[pick("You feel hungry.","Your stomach rumbles.","You feel cold.","You feel warm.")]") + to_chat(M, span_notice("[pick("Вам хочется есть.", "Вам холодно.", "Вам тепло.", "У вас крутит живот.")]")) if(prob(4)) M.Confused(20 SECONDS) if(volume >= 50 && prob(25)) @@ -592,19 +592,19 @@ return ..() /datum/reagent/cbd - name = "Cannabidiol" + name = "Каннабидиол" id = "cbd" - description = "A non-psychoactive phytocannabinoid extracted from the cannabis plant." + description = "Непсихоактивный фитоканнабиноид, добываемый из растения конопли." reagent_state = LIQUID color = "#00e100" - taste_description = "relaxation" + taste_description = "расслабления" /datum/reagent/cbd/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(prob(5)) M.emote(pick("hsigh", "yawn")) if(prob(5)) - to_chat(M, "[pick("You feel peaceful.", "You breathe softly.", "You feel chill.", "You vibe.")]") + to_chat(M, span_notice("[pick("Вы чувствуете умиротворение.", "Вам легко дышать.", "Вы очень спокойны.", "Вы чувствуете себя классно.")]")) if(prob(10)) M.AdjustConfused(-10 SECONDS) M.SetWeakened(0, FALSE) @@ -612,15 +612,15 @@ if(M.reagents.get_reagent_amount("thc") <= 20) M.Drowsy(20 SECONDS) if(prob(25)) - update_flags |= M.adjustBruteLoss(-2, FALSE) - update_flags |= M.adjustFireLoss(-2, FALSE) + update_flags |= M.adjustBruteLoss(-2, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-2, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/fliptonium - name = "Fliptonium" + name = "Крутений" id = "fliptonium" - description = "Do some flips!" + description = "Туда-сюда, влево-вправо, вперёд-назад!" reagent_state = LIQUID color = "#A42964" metabolization_rate = 0.5 * REAGENTS_METABOLISM @@ -629,7 +629,7 @@ addiction_chance = 1 addiction_chance_additional = 20 addiction_threshold = 10 - taste_description = "flips" + taste_description = "кувырков" /datum/reagent/fliptonium/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -673,22 +673,22 @@ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS] if(severity == 1) if(effect <= 2) - M.visible_message("[M] can't seem to control [M.p_their()] legs!") + M.visible_message(span_warning("Ноги [M] заплетаются!")) M.AdjustConfused(66 SECONDS) M.Weaken(4 SECONDS) else if(effect <= 4) - M.visible_message("[M]'s hands flip out and flail everywhere!") + M.visible_message(span_warning("[M] маш[pluralize_ru(M.gender, "ет", "ут")] руками во все стороны, роняя предметы в руках!")) M.drop_l_hand() M.drop_r_hand() else if(effect <= 7) M.emote("laugh") else if(severity == 2) if(effect <= 2) - M.visible_message("[M]'s hands flip out and flail everywhere!") + M.visible_message(span_warning("[M] маш[pluralize_ru(M.gender, "ет", "ут")] руками во все стороны, роняя предметы в руках!")) M.drop_l_hand() M.drop_r_hand() else if(effect <= 4) - M.visible_message("[M] falls to the floor and flails uncontrollably!") + M.visible_message(span_warning("[M] кача[pluralize_ru(M.gender, "ет", "ют")]ся и вал[pluralize_ru(M.gender, "ит", "ят")]ся на землю!")) M.Jitter(10 SECONDS) M.Weaken(10 SECONDS) else if(effect <= 7) @@ -697,9 +697,9 @@ /datum/reagent/rotatium //Rotatium. Fucks up your rotation and is hilarious - name = "Rotatium" + name = "Ротатий" id = "rotatium" - description = "A constantly swirling, oddly colourful fluid. Causes the consumer's sense of direction and hand-eye coordination to become wild." + description = "Крутящаяся туда-сюда странного цвета жидкость. Нарушает чувство координации употребившего." reagent_state = LIQUID color = "#AC88CA" //RGB: 172, 136, 202 metabolization_rate = 0.6 * REAGENTS_METABOLISM @@ -730,14 +730,14 @@ ////////////////////////////// /datum/reagent/consumable/laughter - name = "Laughter" - description = "Some say that this is the best medicine, but recent studies have proven that to be untrue." + name = "Смехотвор" + description = "Некоторые говорят, что это лучшее лекарство, но последние исследования доказали, что это не так." id = "laughter" metabolization_rate = 0.8 * REAGENTS_METABOLISM addiction_chance = 15 addiction_threshold = 20 color = "#FF4DD2" - taste_description = "laugh" + taste_description = "смеха" can_synth = TRUE reagent_state = LIQUID harmless = TRUE @@ -751,13 +751,13 @@ if(1 to 20) M.emote(pick("giggle", "smile")) if(30 to 35) - to_chat(M, "He he! You can't hold your smile!") + to_chat(M, span_notice("ХЕХЕХЕ! У вас не получается не улыбаться!")) if(10 to 19) switch(chance) if(1 to 20) M.emote(pick("laugh", "giggle", "smile")) if(30 to 35) - to_chat(M, "You feel great! HAHAHAHAH!") + to_chat(M, span_notice("Вы чувствуете себя классно! ХАХАХАХ!")) if(40 to 55) M.say(pick(list("Ааххаха!", "Ххаахах!"))) if(20 to 39) @@ -765,7 +765,7 @@ if(1 to 20) M.emote(pick("laugh", "giggle", "smile", "grin")) if(30 to 33) - to_chat(M, "So funny! AAAAAAAAAHAHAHHAHAAHAHAH! FUUUUUUN!") + to_chat(M, span_notice("Просто оборжаться! ХАХАХАХА!")) if(40 to 55) M.say(pick(list("Ааххааахахаха!", "Уааххаахаха!", "Иииххихихии!", "Оооххохохох!", "Кьяяхахаха!", "Ваахахахах!"))) if(40 to 69) @@ -773,7 +773,7 @@ if(1 to 20) M.emote(pick("laugh", "giggle", "smile", "grin")) if(30 to 35) - to_chat(M, "You feel sooo great! HAHAHAHAH!") + to_chat(M, span_notice("ХАХАХАХ! Вы не можете не смеяться!")) if(40 to 50) M.say(pick(list("АААААААХАХАХАХ!", "ИХИХИХИХИХИХХИХИ!", "УАААААХАХАХ!", "МЬЯХАХАХАХАХАХАХАА!", "НЬЯЯЯХАХАХАХАХА!"))) if(70 to INFINITY) @@ -781,9 +781,9 @@ if(1 to 25) M.emote(pick("laugh", "cry", "smile", "grin")) if(30 to 35) - M.say(pick(list("ААААААХХАААА!", "ЫАААААЫЫЫААААА!", "УАААААХАХАХАААААА!", "КХХХАААААААААААААА!"))) + M.say(pick(list("ААААААХХАААА!!!", "ЫАААААЫЫЫААААА!!!", "УАААААХАХАХАААААА!!!", "КХХХАААААААААААААА!!!"))) if(40 to 49) - M.say(pick(list("УАААААХАХАХ!", "КХХХААААААААА!", "АХАХАХАХ ААААА АХАХАХАХА!"))) + M.say(pick(list("УАААААХАХАХ!!!", "КХХХААААААААА!!!", "АХАХАХАХ ААААА АХАХАХАХА!!!"))) if(50 to 55) M.Weaken(4 SECONDS) M.Jitter(10 SECONDS) @@ -793,17 +793,17 @@ M.vomit() update_flags |= M.adjustBrainLoss(rand(1, 5)) if(70 to 74) - to_chat(M, "You are literally bursting with laughter") + to_chat(M, span_warning("Вы умираете от смеха. Буквально.")) return ..() | update_flags /datum/reagent/consumable/laughter/addiction_act_stage4(mob/living/carbon/M) var/chance = rand(1,1000) switch(chance) if(1 to 80) - to_chat(M, "You could really go for some [name] right now.") + to_chat(M, span_notice("[name], хотя бы неможко...")) M.emote(pick("twitch", "sigh", "cry", "groan")) if(81 to 160) - to_chat(M, "Your life has lost all colours") + to_chat(M, span_notice("Ваша жизнь теперь кажется такой унылой...")) M.AdjustEyeBlind(16 SECONDS) M.emote(pick("twitch", "sigh", "cry", "groan")) if(161 to 240) @@ -813,13 +813,13 @@ M.emote("cry") M.Jitter(6 SECONDS) if(321 to 370) - to_chat(M, "You have a really sad thoughts.") + to_chat(M, span_warning("Вы чувствуете себя депрессивным.")) M.emote(pick("twitch", "sigh", "cry", "sniff")) if(371 to 420) - to_chat(M, "You have the strong urge for some [name]!") + to_chat(M, span_warning("[name], как же он вам нужен...")) M.emote(pick("twitch", "sigh", "cry", "sniff")) if(421 to 470) - to_chat(M, "You REALLY crave some [name]!") + to_chat(M, span_warning("[name], он РЕАЛЬНО вам нужен прямо сейчас!")) M.emote(pick("twitch", "sigh", "cry", "sniff")) return STATUS_UPDATE_NONE @@ -828,30 +828,30 @@ var/chance = rand(1,1600) switch(chance) if(1 to 50) - to_chat(M, "You can't stop thinking about [name]...") + to_chat(M, span_notice("[name], хотя бы неможко...")) if(51 to 100) M.emote(pick("whimper", "glare", "cry", "sniff")) M.Jitter(10 SECONDS) if(101 to 150) - to_chat(M, "Your life has lost all colours") + to_chat(M, span_notice("Ваша жизнь потеряла все краски...")) M.EyeBlind(16 SECONDS) update_flags |= M.adjustBrainLoss(rand(1, 7)) if(151 to 200) - to_chat(M, "Your stomach lurches painfully!") - M.visible_message("[M] gags and retches!") + to_chat(M, span_warning("Ваш живот ужасно болит...")) + M.visible_message(span_warning("[M] складыва[pluralize_ru(M.gender, "ет", "ют")]ся пополам от боли!")) M.Weaken(6 SECONDS) if(201 to 280) M.emote(pick("twitch", "glare", "cry", "groan")) M.Jitter(10 SECONDS) if(281 to 330) - to_chat(M, "You are really sad! Find more fun!") + to_chat(M, span_warning("Вам по-настоящему грустно! Найдите чем развлечь себя!")) M.emote(pick("twitch", "sigh", "cry")) update_flags |= M.adjustBrainLoss(rand(1, 5)) if(331 to 380) - to_chat(M, "You feel like you can't live without [name]!") + to_chat(M, span_warning("[name], да вы жить без этого не сможете!")) M.emote(pick("twitch", "sigh", "cry", "groan")) if(381 to 420) - to_chat(M, "You would DIE for some [name] right now!") + to_chat(M, span_warning("[name], вы готовы убить хоть за небольшую дозу!")) M.emote(pick("twitch", "sigh", "cry", "groan")) update_flags |= M.adjustBrainLoss(rand(1, 5)) return update_flags @@ -862,9 +862,9 @@ //Ultra-Lube: Meth /datum/reagent/lube/ultra - name = "Ultra-Lube" + name = "Ультра-смазка" id = "ultralube" - description = "Ultra-Lube is an enhanced lubricant which induces effect similar to Methamphetamine in synthetic users by drastically reducing internal friction and increasing cooling capabilities." + description = "Ультра-смазка - это улучшенная смазка, которая вызывает у синтетиков эффект, подобный метамфетамину, за счет резкого снижения внутреннего трения и повышения охлаждающей способности." reagent_state = LIQUID color = "#1BB1FF" process_flags = SYNTHETIC @@ -872,7 +872,7 @@ addiction_chance = 10 addiction_threshold = 5 metabolization_rate = 1.5 * REAGENTS_METABOLISM - taste_description = "wiper fluid" + taste_description = "стекломоя" /datum/reagent/lube/ultra/on_mob_add(mob/living/user) @@ -883,11 +883,11 @@ /datum/reagent/lube/ultra/on_mob_life(mob/living/user) var/update_flags = STATUS_UPDATE_NONE - var/high_message = pick("You feel your servos whir!", "You feel like you need to go faster.", "You feel like you were just overclocked!") + var/high_message = pick("Вы чувствуете, как жужжат ваши сервоприводы!", "Вам нужно разогнаться!", "Вы чувствуете себя так, будто вас только что разогнали!") if(prob(1) && prob(1)) high_message = "0100011101001111010101000101010001000001010001110100111101000110010000010101001101010100!" if(prob(5)) - to_chat(user, "[high_message]") + to_chat(user, span_notice("[high_message]")) user.AdjustParalysis(-4 SECONDS) user.AdjustStunned(-4 SECONDS) user.AdjustWeakened(-4 SECONDS) @@ -913,7 +913,7 @@ if(prob(20)) M.emote("ping") if(prob(33)) - M.visible_message("[M]'s hands flip out and flail everywhere!") + M.visible_message(span_warning("[M] маш[pluralize_ru(M.gender, "ет", "ут")] руками во все стороны, роняя предметы в руках!")) var/obj/item/I = M.get_active_hand() if(I) M.drop_from_active_hand() @@ -924,28 +924,27 @@ //Surge: Krokodil /datum/reagent/surge - name = "Surge" + name = "Всплеск" id = "surge" - description = "A sketchy superconducting gel that overloads processors, causing an effect reportedly similar to opiates in synthetic units." + description = "Сверхпроводящий гель, который перегружает процессоры синтетиков, вызывая эффект, схожий с действием опиатов на органиков." reagent_state = LIQUID color = "#6DD16D" - process_flags = SYNTHETIC overdose_threshold = 20 addiction_chance = 10 addiction_threshold = 5 - taste_description = "silicon" + taste_description = "силикона" /datum/reagent/surge/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE M.Druggy(30 SECONDS) - var/high_message = pick("You feel calm.", "You feel collected.", "You feel like you need to relax.") + var/high_message = pick("Вы чувствуете себя спокойно.", "Вы чувствуете себя собранным.", "Вы чувствуете, что вам нужно расслабиться.") if(prob(1)) if(prob(1)) high_message = "01010100010100100100000101001110010100110100001101000101010011100100010001000101010011100100001101000101." if(prob(5)) - to_chat(M, "[high_message]") + to_chat(M, span_notice("[high_message]")) return ..() | update_flags /datum/reagent/surge/overdose_process(mob/living/M, severity) @@ -955,7 +954,7 @@ M.Jitter(40 SECONDS) M.Stuttering(10 SECONDS) if(prob(10)) - to_chat(M, "You experience a violent electrical discharge!") + to_chat(M, span_danger("Ваши процессоры перегружаются, вызывая короткое замыкание!")) playsound(get_turf(M), 'sound/effects/eleczap.ogg', 75, 1) //Lightning effect for electrical discharge visualization var/icon/I=new('icons/obj/zap.dmi',"lightningend") @@ -970,9 +969,9 @@ //surge+, used in supercharge implants /datum/reagent/surge_plus - name = "Surge Plus" + name = "Всплеск+" id = "surge_plus" - description = "A superconducting gel that overloads processors, causing an effect reportedly similar to benzodiazepines in synthetic units." + description = "Сверхпроводящий гель, который перегружает процессоры синтетиков, вызывая эффект, схожий с действием бензодиазепинамов на органиков." reagent_state = LIQUID color = "#28b581" @@ -981,7 +980,7 @@ addiction_chance = 1 addiction_chance_additional = 20 addiction_threshold = 5 - taste_description = "silicon" + taste_description = "взякого силикона" /datum/reagent/surge_plus/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -990,10 +989,10 @@ M.AdjustWeakened(-8 SECONDS) update_flags |= M.adjustStaminaLoss(-25, FALSE) if(prob(5)) - var/high_message = pick("You feel calm.", "You feel collected.", "You feel like you need to relax.") + var/high_message = pick("Вы чувствуете себя спокойно.", "Вы чувствуете себя собранным.", "Вы чувствуете, что вам нужно расслабиться.") if(prob(10)) high_message = "0100011101001111010101000101010001000001010001110100111101000110010000010101001101010100!" - to_chat(M, "[high_message]") + to_chat(M, span_notice("[high_message]")) return ..() | update_flags @@ -1003,11 +1002,11 @@ M.Jitter(40 SECONDS) M.Stuttering(10 SECONDS) if(prob(5)) - to_chat(M, "Your circuits overheat!") // synth fever + to_chat(M, span_notice("Ваши процессоры перегреваются!")) // synth fever M.adjust_bodytemperature(30 * recent_consumption) M.Confused(2 SECONDS * recent_consumption) if(prob(10)) - to_chat(M, "You experience a violent electrical discharge!") + to_chat(M, span_danger("Ваши процессоры перегружаются, вызывая короткое замыкание!")) playsound(get_turf(M), 'sound/effects/eleczap.ogg', 75, TRUE) var/icon/I = new('icons/obj/zap.dmi', "lightningend") I.Turn(-135) @@ -1021,9 +1020,9 @@ //Servo Lube, supercharge /datum/reagent/lube/combat - name = "Combat-Lube" + name = "Боевая смазка" id = "combatlube" - description = "Combat-Lube is a refined and enhanced lubricant which induces effect stronger than Methamphetamine in synthetic users by drastically reducing internal friction and increasing cooling capabilities." + description = "Боевая смазка - это улучшенная смазка, которая вызывает у синтетиков эффекты, многократно превосходящие аналогичные у \"Ультра-смазки\" за счёт резкого снижения внутреннего трения и повышения охлаждающей способности." process_flags = SYNTHETIC overdose_threshold = 30 addiction_chance = 1 @@ -1040,11 +1039,11 @@ user.SetSleeping(0) user.SetDrowsy(0) - var/high_message = pick("You feel your servos whir!", "You feel like you need to go faster.", "You feel like you were just overclocked!") + var/high_message = pick("Вы чувствуете, как жужжат ваши сервоприводы!", "Вам нужно разогнаться!", "Вы чувствуете себя так, будто вас только что разогнали!") if(prob(10)) high_message = "0100011101001111010101000101010001000001010001110100111101000110010000010101001101010100!" if(prob(5)) - to_chat(user, "[high_message]") + to_chat(user, span_notice("[high_message]")) if(!(user.dna && (user.dna.species.reagent_tag & PROCESS_SYN))) user.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/combat_lube) return ..() @@ -1062,7 +1061,7 @@ if(prob(20)) M.emote("ping") if(prob(33)) - M.visible_message("[M]'s hands flip out and flail everywhere!") + M.visible_message(span_warning("[M] маш[pluralize_ru(M.gender, "ет", "ут")] руками во все стороны, роняя предметы в руках!")) var/obj/item/I = M.get_active_hand() if(I) M.drop_from_active_hand() @@ -1071,15 +1070,15 @@ return list(effect, update_flags) /datum/reagent/crack - name = "Crack" + name = "Крэк" id = "crack" - description = "A crystallized version of cocaine consumed by smoking." + description = "Кристаллизованная версия кокаина, потребляемая путем курения." reagent_state = LIQUID color = "#f0f0f0" overdose_threshold = 20 addiction_chance = 15 addiction_threshold = 5 - taste_description = "nasty bitterness with a bit of poverty" + taste_description = "неприятной горечи с примесью бедности" shock_reduction = 100 metabolization_rate = 0.6 * REAGENTS_METABOLISM @@ -1110,15 +1109,15 @@ holder.del_reagent(id) /datum/reagent/cocaine - name = "cocaine" + name = "Кокаин" id = "cocaine" - description = "World-famous drug with strong effect on organics." + description = "Всемирно известный препарат, оказывающий сильное воздействие на нервную систему употребившего." reagent_state = LIQUID color = "#f0f0f0" overdose_threshold = 20 addiction_chance = 10 addiction_threshold = 5 - taste_description = "light bitterness, going off with numbing feeling" + taste_description = "легкой горечи, переходящей в чувство онемения" shock_reduction = 140 metabolization_rate = 0.4 * REAGENTS_METABOLISM @@ -1156,20 +1155,20 @@ holder.del_reagent(id) /datum/reagent/matedecoca - name = "Mate de Coca" + name = "Мате де Кока" id = "matedecoca" - description = "A tea made of cocaine. Especially intresting drink." + description = "Чай из кокаина. Особенно интересный напиток." reagent_state = LIQUID color = "#8acca7" overdose_threshold = 40 addiction_chance = 2 addiction_threshold = 5 - taste_description = "pleasant bitterness" + taste_description = "приятной горечи" shock_reduction = 50 metabolization_rate = 0.4 * REAGENTS_METABOLISM drink_icon = "matedecoca" - drink_name = "Mate De Coca" - drink_desc = "A tea made of cocaine. Especially intresting drink." + drink_name = "кружка Мате де Кока" + drink_desc = "Чай из кокаина. Особенно интересный напиток." /datum/reagent/matedecoca/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE diff --git a/code/modules/reagents/chemistry/reagents/food.dm b/code/modules/reagents/chemistry/reagents/food.dm index 5af02464a3a3..c5fae7e94c73 100644 --- a/code/modules/reagents/chemistry/reagents/food.dm +++ b/code/modules/reagents/chemistry/reagents/food.dm @@ -3,10 +3,10 @@ // condiments, additives, and such go. /datum/reagent/consumable - name = "Consumable" + name = "Съедомная масса" id = "consumable" harmless = TRUE - taste_description = "generic food" + taste_description = "чего-то съедобного" taste_mult = 4 var/nutriment_factor = 1 * REAGENTS_METABOLISM var/diet_flags = DIET_OMNI | DIET_HERB | DIET_CARN @@ -17,9 +17,9 @@ return ..() /datum/reagent/consumable/nutriment // Pure nutriment, universally digestable and thus slightly less effective - name = "Nutriment" + name = "Питательные вещества" id = "nutriment" - description = "A questionable mixture of various pure nutrients commonly found in processed foods." + description = "Сомнительная смесь чистых питательных веществ, обычно встречающихся в переработанных продуктах питания." reagent_state = SOLID nutriment_factor = 15 * REAGENTS_METABOLISM color = "#664330" // rgb: 102, 67, 48 @@ -29,8 +29,8 @@ /datum/reagent/consumable/nutriment/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(!isvampire(M)) - update_flags |= M.adjustBruteLoss(-brute_heal, FALSE) - update_flags |= M.adjustFireLoss(-burn_heal, FALSE) + update_flags |= M.adjustBruteLoss(-brute_heal, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-burn_heal, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/consumable/nutriment/on_new(list/supplied_data) @@ -66,21 +66,21 @@ /datum/reagent/consumable/nutriment/protein // Meat-based protein, digestable by carnivores and omnivores, worthless to herbivores - name = "Protein" + name = "Белки" id = "protein" - description = "Various essential proteins and fats commonly found in animal flesh and blood." + description = "Смесь белков и жиров, которые обычно содержатся в мясе и крови животных." diet_flags = DIET_CARN | DIET_OMNI /datum/reagent/consumable/nutriment/plantmatter // Plant-based biomatter, digestable by herbivores and omnivores, worthless to carnivores - name = "Plant-matter" + name = "Растительная масса" id = "plantmatter" - description = "Vitamin-rich fibers and natural sugars commonly found in fresh produce." + description = "Богатые витаминами волокна и натуральные сахара, которые обычно содержатся в свежих продуктах." diet_flags = DIET_HERB | DIET_OMNI /datum/reagent/consumable/nutriment/vitamin - name = "Vitamin" + name = "Витамины" id = "vitamin" - description = "All the best vitamins, minerals, and carbohydrates the body needs in pure form." + description = "Все лучшие витамины, минералы и углеводы, необходимые организму, в чистом виде." reagent_state = SOLID color = "#664330" // rgb: 102, 67, 48 brute_heal = 1 @@ -92,14 +92,14 @@ return ..() /datum/reagent/consumable/sugar - name = "Sugar" + name = "Сахар" id = "sugar" - description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste." + description = "Органическое соединение, широко известное как столовый сахар и иногда называемое сахарозой. Это белый кристаллический порошок без запаха, обладающий приятным сладким вкусом." reagent_state = SOLID color = "#FFFFFF" // rgb: 255, 255, 255 nutriment_factor = 2.5 * REAGENTS_METABOLISM overdose_threshold = 30 - taste_description = "sweetness" + taste_description = "сладости" taste_mult = 1.5 /datum/reagent/consumable/sugar/on_mob_life(mob/living/M) @@ -116,7 +116,7 @@ return ..() | update_flags /datum/reagent/consumable/sugar/overdose_start(mob/living/carbon/human/affected) - to_chat(affected, "Вы теряете сознание от гипергликемического шока!") + to_chat(affected, span_danger("Вы теряете сознание от гипергликемического шока!")) affected.overlay_fullscreen("hyperglycemia", /atom/movable/screen/fullscreen/impaired, 1) affected.emote("faint") if(ishuman(affected)) @@ -127,9 +127,9 @@ var/update_flags = STATUS_UPDATE_NONE M.AdjustJitter(5 SECONDS) if(prob(10)) - to_chat(M, "У вас болит голова.") + to_chat(M, span_danger("У вас болит голова.")) if(prob(5)) - to_chat(M, "Вы чувствуете, как силы покидают вас.") + to_chat(M, span_danger("Вы чувствуете, как силы покидают вас.")) if(volume >= 60) M.AdjustKnockdown(5 SECONDS) M.adjustToxLoss(1) @@ -150,83 +150,84 @@ /datum/reagent/consumable/soysauce - name = "Soysauce" + name = "Соевый соус" id = "soysauce" - description = "A salty sauce made from the soy plant." + description = "Солёный соус из соевого растения." reagent_state = LIQUID nutriment_factor = 2 * REAGENTS_METABOLISM color = "#792300" // rgb: 121, 35, 0 - taste_description = "soy" + taste_description = "сои" /datum/reagent/consumable/ketchup - name = "Ketchup" + name = "Кетчуп" id = "ketchup" - description = "Ketchup, catsup, whatever. It's tomato paste." + description = "Кетчуп, кекчуп, кечап, как будет угодно. Это томатная паста." reagent_state = LIQUID nutriment_factor = 5 * REAGENTS_METABOLISM color = "#731008" // rgb: 115, 16, 8 - taste_description = "ketchup" + taste_description = "кетчупа" /datum/reagent/consumable/tomatosauce - name = "tomato sauce" + name = "Томатный соус" id = "tsauce" - description = "The father of all sauces. Tomatoes, a little spice and nothing extra." + description = "Отец всех соусов. Помидоры, немного специй и ничего лишнего." reagent_state = LIQUID nutriment_factor = 5 * REAGENTS_METABOLISM color = "#ee1000" - taste_description = "tomato sauce" + taste_description = "томатного соуса" /datum/reagent/consumable/cheesesauce - name = "cheese sauce" + name = "Сырный соус" id = "csauce" - description = "Cheese, cream and milk... maximum protein concentration!" + description = "Сыр, сливки и молоко... максимальная концентрация белка!" reagent_state = LIQUID nutriment_factor = 5 * REAGENTS_METABOLISM color = "#e6d600" + taste_description = "сырного соуса" /datum/reagent/consumable/mushroomsauce - name = "mushroom sauce" + name = "Грибной соус" id = "msauce" - description = "Creamy sauce with mushrooms, has a rather pungent smell." + description = "Сливочный соус с грибами, имеет довольно резкий запах." reagent_state = LIQUID nutriment_factor = 5 * REAGENTS_METABOLISM color = "#beb58a" - taste_description = "mushroom sauce" + taste_description = "грибного соуса" /datum/reagent/consumable/garlicsauce - name = "garlic sauce" + name = "Чесночный соус" id = "gsauce" - description = "A strong sauce with garlic, its smell punches the nose. Some crewmembers will probably hiss at you and walk away." + description = "Крепкий чесночный с резким запахом. Некоторые члены экипажа наверняка будут шипеть на вас из-за этого." reagent_state = LIQUID nutriment_factor = 5 * REAGENTS_METABOLISM color = "#fffee1" - taste_description = "garlic sauce" + taste_description = "чесночного соуса" /datum/reagent/consumable/diablosauce - name = "diablo sauce" + name = "Соус \"Диабло\"" id = "dsauce" - description = "An ancient burning sauce, its recipe has hardly changed since its creation." + description = "Древний жгучий соус, рецепт которого практически не изменился с момента его создания." reagent_state = LIQUID nutriment_factor = 5 * REAGENTS_METABOLISM color = "#440804" - taste_description = "hot tomato sauce" + taste_description = "острого томатного соуса" /datum/reagent/consumable/custard - name = "custard" + name = "Заварной крем" id = "custard" - description = "An ancient burning sauce, its recipe has hardly changed since its creation." + description = "Мягкий и сладкий крем, используемый в кондитерских изделиях." reagent_state = LIQUID nutriment_factor = 5 * REAGENTS_METABOLISM color = "#fffed1" - taste_description = "sweet soft cream" + taste_description = "сладкого мягкого крема" /datum/reagent/consumable/capsaicin - name = "Capsaicin Oil" + name = "Капсаициновое масло" id = "capsaicin" - description = "This is what makes chilis hot." + description = "Именно это делает чили острым." reagent_state = LIQUID color = "#B31008" // rgb: 179, 16, 8 - taste_description = "HOTNESS" + taste_description = span_warning("ОСТРОТЫ") taste_mult = 1.5 /datum/reagent/consumable/capsaicin/on_mob_life(mob/living/M) @@ -258,17 +259,12 @@ return ..() /datum/reagent/consumable/condensedcapsaicin - name = "Condensed Capsaicin" + name = "Сгущённое капсаициновое масло" id = "condensedcapsaicin" - description = "This shit goes in pepperspray." + description = "Ещё острее." reagent_state = LIQUID color = "#B31008" // rgb: 179, 16, 8 - taste_description = "PURE FIRE" - -/datum/reagent/consumable/condensedcapsaicin/on_mob_life(mob/living/M) - if(prob(5)) - M.visible_message(span_warning("[M] [pick("dry heaves!","coughs!","splutters!")]")) - return ..() + taste_description = span_userdanger("НЕРЕАЛЬНОЙ ОСТРОТЫ") /datum/reagent/consumable/condensedcapsaicin/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) if(method == REAGENT_TOUCH) @@ -308,10 +304,10 @@ if(!safe_thing) safe_thing = victim.glasses if( eyes_covered && mouth_covered ) - to_chat(victim, span_danger("Your [safe_thing] protects you from the pepperspray!")) + to_chat(victim, span_danger("[safe_thing] защища[pluralize_ru(safe_thing, "ет", "ют")] ваше лицо от перца!")) return else if( mouth_covered ) // Reduced effects if partially protected - to_chat(victim, span_danger("Your [safe_thing] protect you from most of the pepperspray!")) + to_chat(victim, span_danger("[safe_thing] почти полностью защища[pluralize_ru(safe_thing, "ет", "ют")] ваше лицо от перца!")) if(prob(20)) victim.emote("scream") victim.EyeBlurry(6 SECONDS) @@ -322,7 +318,7 @@ victim.drop_from_active_hand() return else if( eyes_covered ) // Eye cover is better than mouth cover but not best - to_chat(victim, span_danger("Your [safe_thing] partially protects your eyes from the pepperspray!")) + to_chat(victim, span_danger("[safe_thing] частично защища[pluralize_ru(safe_thing, "ет", "ют")] ваше лицо от перца!")) if(prob(20)) victim.emote("scream") victim.EyeBlurry(4 SECONDS) @@ -335,7 +331,7 @@ else // Oh dear :D if(prob(20)) victim.emote("scream") - to_chat(victim, span_danger("You're sprayed directly in the eyes with pepperspray!")) + to_chat(victim, span_danger("Струя перца летит прямо вам в глаза!")) victim.EyeBlurry(10 SECONDS) victim.EyeBlind(4 SECONDS) victim.Confused(12 SECONDS) @@ -344,13 +340,13 @@ victim.drop_from_active_hand() /datum/reagent/consumable/frostoil - name = "Frost Oil" + name = "Ледяное масло" id = "frostoil" - description = "A special oil that noticably chills the body. Extraced from Icepeppers." + description = "Масло, сильно охлаждающее тело. Добывается из ледяных перцев." reagent_state = LIQUID color = "#8BA6E9" // rgb: 139, 166, 233 process_flags = ORGANIC | SYNTHETIC - taste_description = "cold
    " + taste_description = "холода
    " /datum/reagent/consumable/frostoil/on_mob_add(mob/living/user) @@ -405,15 +401,15 @@ M.adjustToxLoss(rand(15, 30)) /datum/reagent/consumable/sodiumchloride - name = "Salt" + name = "Соль" id = "sodiumchloride" - description = "Sodium chloride, common table salt." + description = "Хлорид натрия, обычная поваренная соль." reagent_state = SOLID color = "#B1B0B0" harmless = FALSE - overdose_threshold = 100 + overdose_threshold = 15 taste_mult = 2 - taste_description = "salt" + taste_description = "соли" /datum/reagent/consumable/sodiumchloride/overdose_process(mob/living/M, severity) var/update_flags = STATUS_UPDATE_NONE @@ -422,46 +418,46 @@ return ..() | update_flags /datum/reagent/consumable/blackpepper - name = "Black Pepper" + name = "Чёрный перец" id = "blackpepper" - description = "A powder ground from peppercorns. *AAAACHOOO*" + description = "Порошок, измельченный из перца. Только не вдыхайте его полной грудью." reagent_state = SOLID - taste_description = "pepper" + taste_description = "перца" /datum/reagent/consumable/cocoa - name = "Cocoa Powder" + name = "Какао-порошок" id = "cocoa" - description = "A fatty, bitter paste made from cocoa beans." + description = "Жирная, горькая паста из какао-бобов." reagent_state = SOLID nutriment_factor = 5 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 - taste_description = "bitter cocoa" + taste_description = "горького какао" /datum/reagent/consumable/vanilla - name = "Vanilla Powder" + name = "Ванильный порошок" id = "vanilla" - description = "A fatty, bitter paste made from vanilla pods." + description = "Жирная, горькая паста из стручков ванили." reagent_state = SOLID nutriment_factor = 5 * REAGENTS_METABOLISM color = "#FFFACD" - taste_description = "bitter vanilla" + taste_description = "горькой ванили" /datum/reagent/consumable/herbs - name = "herbs mix" + name = "Микс трав" id = "herbsmix" - description = "A mix of variouse herbs." + description = "Смесь различных трав." reagent_state = SOLID color = "#2c5c04" - taste_description = "dry herbs" + taste_description = "сухих трав" /datum/reagent/consumable/hot_coco - name = "Hot Chocolate" + name = "Горячий шоколад" id = "hot_coco" - description = "Made with love! And cocoa beans." + description = "Сделано с любовью! И какао-бобами." reagent_state = LIQUID nutriment_factor = 2 * REAGENTS_METABOLISM color = "#403010" // rgb: 64, 48, 16 - taste_description = "chocolate" + taste_description = "горячего шоколада" /datum/reagent/consumable/hot_coco/on_mob_life(mob/living/M) if(M.bodytemperature < BODYTEMP_NORMAL) @@ -469,11 +465,11 @@ return ..() /datum/reagent/consumable/garlic - name = "Garlic Juice" + name = "Чесночный сок" id = "garlic" - description = "Crushed garlic. Chefs love it, but it can make you smell bad." + description = "Cспелый чеснок. Повара его любят, но от него может неприятно пахнуть." color = "#FEFEFE" - taste_description = "garlic" + taste_description = "чеснока" metabolization_rate = 0.15 * REAGENTS_METABOLISM /datum/reagent/consumable/garlic/on_mob_life(mob/living/carbon/M) @@ -483,39 +479,39 @@ var/datum/antagonist/vampire/vamp = H.mind?.has_antag_datum(/datum/antagonist/vampire) if(vamp && vamp.is_garlic_affected && !vamp.get_ability(/datum/vampire_passive/full)) //incapacitating but not lethal. if(prob(min(25, current_cycle))) - to_chat(H, "You can't get the scent of garlic out of your nose! You can barely think...") + to_chat(H, span_danger("Аромат чеснока не выветривается из вашего носа! Вы едва можете думать...")) H.Weaken(2 SECONDS) H.Jitter(20 SECONDS) H.fakevomit() else if(H.job == JOB_TITLE_CHEF) if(prob(20)) //stays in the system much longer than sprinkles/banana juice, so heals slower to partially compensate - update_flags |= H.adjustBruteLoss(-1, FALSE) - update_flags |= H.adjustFireLoss(-1, FALSE) + update_flags |= H.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) + update_flags |= H.adjustFireLoss(-1, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/consumable/sprinkles - name = "Sprinkles" + name = "Посыпка" id = "sprinkles" - description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops." + description = "Разноцветные кусочки сахара, обычно встречающиеся на пончиках. Копы любят такое." color = "#FF00FF" // rgb: 255, 0, 255 - taste_description = "crunchy sweetness" + taste_description = "хрустящей сладости" /datum/reagent/consumable/sprinkles/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(ishuman(M) && (M.job in list(JOB_TITLE_OFFICER, JOB_TITLE_PILOT, JOB_TITLE_DETECTIVE, JOB_TITLE_WARDEN, JOB_TITLE_HOS, JOB_TITLE_BRIGDOC, JOB_TITLE_LAWYER, JOB_TITLE_JUDGE))) - update_flags |= M.adjustBruteLoss(-1, FALSE) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-1, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/consumable/cornoil - name = "Corn Oil" + name = "Кукурузное масло" id = "cornoil" - description = "An oil derived from various types of corn." + description = "Масло, получаемое из различных видов кукурузы." reagent_state = LIQUID nutriment_factor = 20 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 - taste_description = "oil" + taste_description = "кукурузного масла" /datum/reagent/consumable/cornoil/reaction_turf(turf/simulated/T, volume) if(!istype(T)) @@ -525,44 +521,44 @@ var/hotspot = (locate(/obj/effect/hotspot) in T) if(hotspot) var/datum/gas_mixture/lowertemp = T.remove_air( T.air.total_moles()) - lowertemp.temperature = max(min(lowertemp.temperature-2000, lowertemp.temperature / 2), 0) + lowertemp.temperature = max(min(lowertemp.temperature-2000, lowertemp.temperature / 2), TCMB) lowertemp.react() T.assume_air(lowertemp) qdel(hotspot) /datum/reagent/consumable/cornoil/oliveoil - name = "Olive Oil" + name = "Оливковое масло" id = "oliveoil" - description = "An oil derived from young olives." + description = "Масло, получаемое из молодых оливок. Очень жирное." reagent_state = LIQUID nutriment_factor = 10 * REAGENTS_METABOLISM color = "#d3f558" - taste_description = "bittersweet olive oil" + taste_description = "горько-сладкого оливкового масла" /datum/reagent/consumable/enzyme - name = "Universal Enzyme" + name = "Универсальный фермент" id = "enzyme" - description = "A special catalyst that makes certain culinary chemical reactions happen instantly instead of taking hours or days." + description = "Специальный катализатор, благодаря которому некоторые кулинарные химические реакции происходят мгновенно, а не занимают несколько часов или дней." reagent_state = LIQUID color = "#282314" // rgb: 54, 94, 48 - taste_description = "sweetness" + taste_description = "сладости" /datum/reagent/consumable/dry_ramen - name = "Dry Ramen" + name = "Сухой рамен" id = "dry_ramen" - description = "Space age food, since August 25, 1958. Contains dried noodles, vegetables, and chemicals that boil in contact with water." + description = "Космическая еда начиная с 25 августа 1958 года. Содержит сушёную лапшу, овощи и химикаты, которые закипают при контакте с водой." reagent_state = SOLID color = "#302000" // rgb: 48, 32, 0 - taste_description = "dry ramen coated with what might just be your tears" + taste_description = "дешёвой лапши со специями" /datum/reagent/consumable/hot_ramen - name = "Hot Ramen" + name = "Горячий рамен" id = "hot_ramen" - description = "The noodles are boiled, the flavors are artificial, just like being back in school." + description = "Лапша варёная, ароматизаторы искусственные, а вы как будто бы снова в школе." reagent_state = LIQUID nutriment_factor = 5 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 - taste_description = "cheap ramen and memories" + taste_description = "дешёвой лапши и воспоминаний" /datum/reagent/consumable/hot_ramen/on_mob_life(mob/living/M) if(M.bodytemperature < BODYTEMP_NORMAL) @@ -570,71 +566,71 @@ return ..() /datum/reagent/consumable/hell_ramen - name = "Hell Ramen" + name = "Адский рамен" id = "hell_ramen" - description = "The noodles are boiled, the flavors are artificial, just like being back in school...IN HELL" + description = "Лапша варёная, ароматизаторы искусственные, а вы как будто бы снова в школе... В АДУ!" reagent_state = LIQUID nutriment_factor = 5 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 - taste_description = "SPICY ramen" + taste_description = "острой лапши со специями" /datum/reagent/consumable/hell_ramen/on_mob_life(mob/living/M) M.adjust_bodytemperature(10 * TEMPERATURE_DAMAGE_COEFFICIENT) return ..() /datum/reagent/consumable/flour - name = "flour" + name = "Мука" id = "flour" - description = "This is what you rub all over yourself to pretend to be a ghost." + description = "Это то, чем вы натираете себя, чтобы притвориться призраком." reagent_state = SOLID color = "#FFFFFF" // rgb: 0, 0, 0 - taste_description = "flour" + taste_description = "муки" /datum/reagent/consumable/flour/reaction_turf(turf/T, volume) if(!isspaceturf(T)) new /obj/effect/decal/cleanable/flour(T) /datum/reagent/consumable/rice - name = "Rice" + name = "Рис" id = "rice" - description = "Enjoy the great taste of nothing." + description = "Наслаждайтесь великолепным вкусом ничего." reagent_state = SOLID nutriment_factor = 3 * REAGENTS_METABOLISM color = "#FFFFFF" // rgb: 0, 0, 0 - taste_description = "rice" + taste_description = "риса" /datum/reagent/consumable/buckwheat - name = "Buckwheat" + name = "Гречка" id = "buckwheat" - description = "Rumors tell soviet people are eating only vodka and... this?" + description = "По слухам, советские люди питаются только водкой и... этим?" reagent_state = SOLID nutriment_factor = 3 * REAGENTS_METABOLISM color = "#8E633C" // rgb: 142, 99, 60 - taste_description = "dry buckwheat" + taste_description = "сухой гречки" /datum/reagent/consumable/cherryjelly - name = "Cherry Jelly" + name = "Вишнёвое желе" id = "cherryjelly" - description = "Totally the best. Only to be spread on foods with excellent lateral symmetry." + description = "Абсолютно лучший. Наносится только на продукты с отличной боковой симметрией." reagent_state = LIQUID color = "#801E28" // rgb: 128, 30, 40 - taste_description = "cherry jelly" + taste_description = "вишнёвого желе" /datum/reagent/consumable/bluecherryjelly - name = "Blue Cherry Jelly" + name = "Голубичное желе" id = "bluecherryjelly" - description = "Blue and tastier kind of cherry jelly." + description = "Более вкусная версия желе из голубики." reagent_state = LIQUID color = "#00F0FF" - taste_description = "the blues" + taste_description = "голубичного желе" /datum/reagent/consumable/egg - name = "Egg" + name = "Яйцо" id = "egg" - description = "A runny and viscous mixture of clear and yellow fluids." + description = "Текучая и вязкая смесь белка и желтка." reagent_state = LIQUID color = "#F0C814" - taste_description = "eggs" + taste_description = "яиц" /datum/reagent/consumable/egg/on_mob_life(mob/living/M) if(prob(3)) @@ -642,84 +638,84 @@ return ..() /datum/reagent/consumable/corn_starch - name = "Corn Starch" + name = "Кукурузный крахмал" id = "corn_starch" - description = "The powdered starch of maize, derived from the kernel's endosperm. Used as a thickener for gravies and puddings." + description = "Порошкообразный крахмал кукурузы, получаемый из эндосперма зерен. Используется в качестве загустителя для соусов и пудингов." reagent_state = LIQUID color = "#C8A5DC" - taste_description = "flour" + taste_description = "муки" /datum/reagent/consumable/corn_syrup - name = "Corn Syrup" + name = "Кукурузный сироп" id = "corn_syrup" - description = "A sweet syrup derived from corn starch that has had its starches converted into maltose and other sugars." + description = "Сладкий сироп, получаемый из кукурузного крахмала преобразованного в мальтозу и другие сахара." reagent_state = LIQUID color = "#C8A5DC" - taste_description = "cheap sugar substitute" + taste_description = "дешевого сахарозаменителя" /datum/reagent/consumable/corn_syrup/on_mob_life(mob/living/M) M.reagents.add_reagent("sugar", 1.2) return ..() /datum/reagent/consumable/vhfcs - name = "Very-high-fructose corn syrup" + name = "Высокофруктозный кукурузный сироп" id = "vhfcs" - description = "An incredibly sweet syrup, created from corn syrup treated with enzymes to convert its sugars into fructose." + description = "Невероятно сладкая жидкость, созданная из кукурузного сиропа, обработанного ферментами для превращения сахаров во фруктозу." reagent_state = LIQUID color = "#C8A5DC" - taste_description = "diabetes" + taste_description = "диабета" /datum/reagent/consumable/vhfcs/on_mob_life(mob/living/M) M.reagents.add_reagent("sugar", 2.4) return ..() /datum/reagent/consumable/honey - name = "Honey" + name = "Мёд" id = "honey" - description = "A sweet substance produced by bees through partial digestion. Bee barf." + description = "Густое сладкое вещество, вырабатываемое пчелами в результате частичного переваривания. Пчелиная блевотина." reagent_state = LIQUID color = "#d3a308" nutriment_factor = 15 * REAGENTS_METABOLISM - taste_description = "sweetness" + taste_description = "тягучей сладости" /datum/reagent/consumable/honey/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE M.reagents.add_reagent("sugar", 3) if(prob(20)) - update_flags |= M.adjustBruteLoss(-3, FALSE) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-3, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-1, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/consumable/onion - name = "Concentrated Onion Juice" + name = "Концентрированный луковый сок" id = "onionjuice" - description = "A strong tasting substance that can induce partial blindness." + description = "Сильное на вкус вещество, способное вызывать частичную слепоту." color = "#c0c9a0" - taste_description = "pungency" + taste_description = "едкости" /datum/reagent/consumable/onion/reaction_mob(mob/living/M, method = REAGENT_TOUCH, volume) if(method == REAGENT_TOUCH) if(!M.is_mouth_covered() && !M.is_eyes_covered()) if(!M.get_organ_slot(INTERNAL_ORGAN_EYES)) //can't blind somebody with no eyes - to_chat(M, "Your eye sockets feel wet.") + to_chat(M, span_notice("Ваши глазные впадины кажутся влажными.")) else if(!M.AmountEyeBlurry()) - to_chat(M, "Tears well up in your eyes!") + to_chat(M, span_warning("Из ваших глаз брызжут слёзы!")) M.EyeBlind(4 SECONDS) M.EyeBlurry(10 SECONDS) ..() /datum/reagent/consumable/chocolate - name = "Chocolate" + name = "Шоколад" id = "chocolate" - description = "Chocolate is a delightful product derived from the seeds of the theobroma cacao tree." + description = "Шоколад - это восхитительный продукт, получаемый из семян дерева \"Theobroma cacao\"." reagent_state = LIQUID nutriment_factor = 5 * REAGENTS_METABOLISM //same as pure cocoa powder, because it makes no sense that chocolate won't fill you up and make you fat color = "#2E2418" drink_icon = "chocolateglass" - drink_name = "Glass of chocolate" - drink_desc = "Tasty" - taste_description = "chocolate" + drink_name = "стакан шоколада" + drink_desc = "Вкуснятина!" + taste_description = "шоколада" /datum/reagent/consumable/chocolate/on_mob_life(mob/living/M) M.reagents.add_reagent("sugar", 0.2) @@ -730,12 +726,12 @@ new /obj/item/reagent_containers/food/snacks/choc_pile(T) /datum/reagent/consumable/mugwort - name = "Mugwort" + name = "Полынь" id = "mugwort" - description = "A rather bitter herb once thought to hold magical protective properties." + description = "Довольно горькая трава, которая, как считается, обладает магическими защитными свойствами." reagent_state = LIQUID color = "#21170E" - taste_description = "tea" + taste_description = "странного чая" /datum/reagent/consumable/mugwort/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -743,20 +739,20 @@ if(M.mind.special_role == SPECIAL_ROLE_WIZARD || M.mind.special_role == SPECIAL_ROLE_WIZARD_APPRENTICE) update_flags |= M.adjustToxLoss(-0.5, FALSE) update_flags |= M.adjustOxyLoss(-0.5, FALSE) - update_flags |= M.adjustBruteLoss(-0.5, FALSE) - update_flags |= M.adjustFireLoss(-0.5, FALSE) + update_flags |= M.adjustBruteLoss(-0.5, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-0.5, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/consumable/porktonium - name = "Porktonium" + name = "Порктониум" id = "porktonium" - description = "A highly-radioactive pork byproduct first discovered in hotdogs." + description = "Высокорадиоактивный побочный продукт свинины, впервые обнаруженный в хот-догах." reagent_state = LIQUID color = "#AB5D5D" metabolization_rate = 0.5 * REAGENTS_METABOLISM overdose_threshold = 133 harmless = FALSE - taste_description = "bacon" + taste_description = "бекона" /datum/reagent/consumable/porktonium/overdose_process(mob/living/M, severity) if(prob(15)) @@ -767,22 +763,22 @@ return list(0, STATUS_UPDATE_NONE) /datum/reagent/consumable/chicken_soup - name = "Chicken soup" + name = "Куриный бульон" id = "chicken_soup" - description = "An old household remedy for mild illnesses." + description = "Старинное домашнее средство для лечения лёгких простудных заболеваний." reagent_state = LIQUID color = "#B4B400" metabolization_rate = 0.5 * REAGENTS_METABOLISM nutriment_factor = 2.5 * REAGENTS_METABOLISM - taste_description = "broth" + taste_description = "куриного бульона" /datum/reagent/consumable/cheese - name = "Cheese" + name = "Сыр" id = "cheese" - description = "Some cheese. Pour it out to make it solid." + description = "Немного сыра. Вылейте его, чтобы он стал твердым." reagent_state = SOLID color = "#FFFF00" - taste_description = "cheese" + taste_description = "сыра" /datum/reagent/consumable/cheese/on_mob_life(mob/living/M) if(prob(3)) @@ -794,29 +790,29 @@ new /obj/item/reagent_containers/food/snacks/cheesewedge(T) /datum/reagent/consumable/fake_cheese - name = "Cheese substitute" + name = "Заменитель сыра" id = "fake_cheese" - description = "A cheese-like substance derived loosely from actual cheese." + description = "Сыроподобное вещество, полученное из настоящего сыра." reagent_state = LIQUID color = "#B2B139" overdose_threshold = 50 harmless = FALSE - taste_description = "cheese?" + taste_description = "странного сыра" /datum/reagent/consumable/fake_cheese/overdose_process(mob/living/M, severity) var/update_flags = STATUS_UPDATE_NONE if(prob(8)) - to_chat(M, "You feel something squirming in your stomach. Your thoughts turn to cheese and you begin to sweat.") + to_chat(M, span_warning("Вы чувствуете, как в животе что-то ерзает. Ваши мысли превращаются в сыр, и вы начинаете потеть.")) update_flags |= M.adjustToxLoss(rand(1,2), FALSE) return list(0, update_flags) /datum/reagent/consumable/weird_cheese - name = "Weird cheese" + name = "Странный сыр" id = "weird_cheese" - description = "Hell, I don't even know if this IS cheese. Whatever it is, it ain't normal. If you want to, pour it out to make it solid." + description = "Чёрт, я даже не знаю, сыр ли это. Что бы это ни было, это ненормально. Если хотите, вылейте его, чтобы он стал твердым." reagent_state = SOLID color = "#50FF00" - taste_description = "cheeeeeese...?" + taste_description = "сыра..?" /datum/reagent/consumable/weird_cheese/on_mob_life(mob/living/M) if(prob(5)) @@ -828,28 +824,28 @@ new /obj/item/reagent_containers/food/snacks/weirdcheesewedge(T) /datum/reagent/consumable/beans - name = "Refried beans" + name = "Жареная фасоль" id = "beans" - description = "A dish made of mashed beans cooked with lard." + description = "Блюдо из фасолевого пюре, приготовленного с добавлением сала." reagent_state = LIQUID color = "#684435" - taste_description = "burritos" + taste_description = "бурритос" /datum/reagent/consumable/bread - name = "Bread" + name = "Хлеб" id = "bread" - description = "Bread! Yep, bread." + description = "Хлеб! Кто его не любит?" reagent_state = SOLID color = "#9C5013" - taste_description = "bread" + taste_description = "хлеба" /datum/reagent/consumable/soybeanoil - name = "Space-soybean oil" + name = "Соевое масло" id = "soybeanoil" - description = "An oil derived from extra-terrestrial soybeans." + description = "Масло, полученное из соевых бобов." reagent_state = LIQUID color = "#B1B0B0" - taste_description = "oil" + taste_description = "соевого масла" /datum/reagent/consumable/soybeanoil/on_mob_life(mob/living/M) if(prob(10)) @@ -859,15 +855,15 @@ return ..() /datum/reagent/consumable/hydrogenated_soybeanoil - name = "Partially hydrogenated space-soybean oil" + name = "Частично гидрогенизированное соевое масло" id = "hydrogenated_soybeanoil" - description = "An oil derived from extra-terrestrial soybeans, with additional hydrogen atoms added to convert it into a saturated form." + description = "Масло, полученное из соевых бобов, в которое добавлены дополнительные атомы водорода для преобразования его в насыщенную форму." reagent_state = LIQUID color = "#B1B0B0" metabolization_rate = 0.5 * REAGENTS_METABOLISM overdose_threshold = 75 harmless = FALSE - taste_description = "oil" + taste_description = "насыщенного соевого масла" /datum/reagent/consumable/hydrogenated_soybeanoil/on_mob_life(mob/living/M) if(prob(15)) @@ -883,24 +879,24 @@ /datum/reagent/consumable/hydrogenated_soybeanoil/overdose_process(mob/living/M, severity) var/update_flags = STATUS_UPDATE_NONE if(prob(33)) - to_chat(M, "You feel horribly weak.") + to_chat(M, span_warning("Вы чувствуете ужасную слабость.")) if(prob(10)) - to_chat(M, "You cannot breathe!") + to_chat(M, span_warning("У вас перехватило дыхание!")) update_flags |= M.adjustOxyLoss(5, FALSE) if(prob(5)) - to_chat(M, "You feel a sharp pain in your chest!") + to_chat(M, span_warning("Вы чувствуете острую боль в груди!")) update_flags |= M.adjustOxyLoss(25, FALSE) M.Stun(10 SECONDS) M.Paralyse(20 SECONDS) return list(0, update_flags) /datum/reagent/consumable/meatslurry - name = "Meat Slurry" + name = "Мясная жижа" id = "meatslurry" - description = "A paste comprised of highly-processed organic material. Uncomfortably similar to deviled ham spread." + description = "Паста, состоящая из сильно переработанного органического материала. Напоминает спред из ветчины." reagent_state = LIQUID color = "#EBD7D7" - taste_description = "meat?" + taste_description = "мяса?" /datum/reagent/consumable/meatslurry/on_mob_life(mob/living/M) if(prob(4)) @@ -913,130 +909,130 @@ playsound(T, 'sound/effects/splat.ogg', 50, 1, -3) /datum/reagent/consumable/mashedpotatoes - name = "Mashed potatoes" + name = "Картофельное пюре" id = "mashedpotatoes" - description = "A starchy food paste made from boiled potatoes." + description = "Паста из вареного картофеля." reagent_state = SOLID color = "#D6D9C1" - taste_description = "potatoes" + taste_description = "картофеля" /datum/reagent/consumable/gravy - name = "Gravy" + name = "Подливка" id = "gravy" - description = "A savory sauce made from a simple meat-dripping roux and milk." + description = "Пикантный соус, приготовленный из простого мясного рулета и молока." reagent_state = LIQUID color = "#B4641B" - taste_description = "gravy" + taste_description = "подливки" ///Food Related, but non-nutritious /datum/reagent/questionmark // food poisoning - name = "????" + name = "Сгоревшая пищевая масса" id = "????" - description = "A gross and unidentifiable substance." + description = "Отвратительная и ядовитая субстанция." reagent_state = LIQUID color = "#63DE63" - taste_description = "burned food" + taste_description = "сгоревшей еды" /datum/reagent/questionmark/reaction_mob(mob/living/carbon/human/H, method = REAGENT_TOUCH, volume) if(istype(H) && method == REAGENT_INGEST) if(H.dna.species.taste_sensitivity < TASTE_SENSITIVITY_NO_TASTE) // If you can taste it, then you know how awful it is. H.Weaken(4 SECONDS) - to_chat(H, "Ugh! Eating that was a terrible idea!") + to_chat(H, span_danger("Ух! Есть ЭТО было плохой идеей!")) if(HAS_TRAIT(H, TRAIT_NO_HUNGER)) //If you don't eat, then you can't get food poisoning return var/datum/disease/food_poisoning/D = new D.Contract(H) /datum/reagent/msg - name = "Monosodium glutamate" + name = "Глутамат натрия" id = "msg" - description = "Monosodium Glutamate is a sodium salt known chiefly for its use as a controversial flavor enhancer." + description = "Глутамат натрия - это натриевая соль, известная главным образом благодаря своему использованию в качестве спорного усилителя вкуса." reagent_state = LIQUID color = "#F5F5F5" metabolization_rate = 0.5 * REAGENTS_METABOLISM - taste_description = "excellent cuisine" + taste_description = "отличной кухни" taste_mult = 4 /datum/reagent/msg/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(istype(M.mind?.martial_art, /datum/martial_art/mr_chang)) - update_flags |= M.adjustBruteLoss(-0.75) - update_flags |= M.adjustFireLoss(-0.75) + update_flags |= M.adjustBruteLoss(-0.75, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-0.75, affect_robotic = FALSE) else if(prob(5)) if(prob(10)) update_flags |= M.adjustToxLoss(rand(2,4), FALSE) if(prob(7)) - to_chat(M, "A horrible migraine overpowers you.") + to_chat(M, span_warning("Ужасная мигрень одолевает вас!")) M.Stun(rand(4 SECONDS, 10 SECONDS)) return ..() | update_flags /datum/reagent/cholesterol - name = "cholesterol" + name = "Холестерин" id = "cholesterol" - description = "Pure cholesterol. Probably not very good for you." + description = "Чистый холестерин. Достаточно вредная штука." reagent_state = LIQUID color = "#FFFAC8" - taste_description = "heart attack" + taste_description = "сердечного приступа" /datum/reagent/cholesterol/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(volume >= 25 && prob(volume*0.15)) - to_chat(M, "Your chest feels [pick("weird","uncomfortable","nasty","gross","odd","unusual","warm")]!") + to_chat(M, span_warning("Вы чувствуете [pick("боль", "дискомфорт", "противное ощущение", "неприятное ощущение", "тепло")] в груди!")) update_flags |= M.adjustToxLoss(rand(1,2), FALSE) else if(volume >= 45 && prob(volume*0.08)) - to_chat(M, "Your chest [pick("hurts","stings","aches","burns")]!") + to_chat(M, span_warning("Ваша грудь [pick("болит", "трещит", "горит")]!")) update_flags |= M.adjustToxLoss(rand(2,4), FALSE) M.Stun(2 SECONDS) else if(volume >= 150 && prob(volume*0.01)) - to_chat(M, "Your chest is burning with pain!") + to_chat(M, span_warning("Ваша грудь адски горит!")) M.Weaken(2 SECONDS) var/datum/disease/critical/heart_failure/D = new D.Contract(M) return ..() | update_flags /datum/reagent/fungus - name = "Space fungus" + name = "Космический грибок" id = "fungus" - description = "Scrapings of some unknown fungus found growing on the station walls." + description = "Соскобы неизвестного грибка, растущего на стенах станции." reagent_state = LIQUID color = "#C87D28" - taste_description = "mold" + taste_description = "плесени" /datum/reagent/fungus/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) if(method == REAGENT_INGEST) var/ranchance = rand(1,10) if(ranchance == 1) - to_chat(M, "You feel very sick.") + to_chat(M, span_warning("Вы чувствуете себя очень плохо.")) M.reagents.add_reagent("toxin", rand(1,5)) else if(ranchance <= 5) - to_chat(M, "That tasted absolutely FOUL.") + to_chat(M, span_warning("Это было невероятно отвратительно!")) var/datum/disease/food_poisoning/D = new D.Contract(M) else - to_chat(M, "Yuck!") + to_chat(M, "Чёрт, да какого хера!") /datum/reagent/ectoplasm - name = "Ectoplasm" + name = "Эктоплазма" id = "ectoplasm" - description = "A bizarre gelatinous substance supposedly derived from ghosts." + description = "Причудливая студенистая субстанция, якобы получаемая из призраков." reagent_state = LIQUID color = "#8EAE7B" process_flags = ORGANIC | SYNTHETIC //Because apparently ghosts in the shell - taste_description = "spooks" + taste_description = "страшилок" /datum/reagent/ectoplasm/on_mob_life(mob/living/M) - var/spooky_message = pick("You notice something moving out of the corner of your eye, but nothing is there...", "Your eyes twitch, you feel like something you can't see is here...", "You've got the heebie-jeebies.", "You feel uneasy.", "You shudder as if cold...", "You feel something gliding across your back...") + var/spooky_message = pick("Краем глаза вы замечаете, что что-то движется, но ничего не происходит...", "Глаза дёргаются, вам кажется, что здесь кто-то находится, но вы ничего не видите...", "У вас мурашки по коже.", "Вы чувствуете беспокойство.", "Вы вздрагиваете, словно от холода...", "Вы чувствуете, как что-то скользит по вашей спине...") if(prob(8)) - to_chat(M, "[spooky_message]") + to_chat(M, span_warning("[spooky_message]")) return ..() /datum/reagent/ectoplasm/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) if(method == REAGENT_INGEST) - var/spooky_eat = pick("Ugh, why did you eat that? Your mouth feels haunted. Haunted with bad flavors.", "Ugh, why did you eat that? It has the texture of ham aspic. From the 1950s. Left out in the sun.", "Ugh, why did you eat that? It tastes like a ghost fart.", "Ugh, why did you eat that? It tastes like flavor died.") - to_chat(M, "[spooky_eat]") + var/spooky_eat = pick("Зачем вы это съели? Во рту словно призраки. Призраки с плохим вкусом.", "Зачем вы это съели? У него текстура ветчинного аспика. Из 1950-х. Оставленная на солнце.", "Зачем вы это съели? На вкус как пердёж призрака.", "Зачем вы это съели? На вкус как будто что-то мёртвое.") + to_chat(M, span_warning("[spooky_eat]")) /datum/reagent/ectoplasm/reaction_turf(turf/T, volume) if(volume >= 10 && !isspaceturf(T)) @@ -1049,24 +1045,24 @@ ///Vomit/// /datum/reagent/vomit - name = "Vomit" + name = "Блевотина" id = "vomit" - description = "Looks like someone lost their lunch. And then collected it. Yuck." + description = "Похоже, кто-то потерял свой обед. А потом собрал его. Фу." reagent_state = LIQUID color = "#FFFF00" - taste_description = "puke" + taste_description = "рвоты" /datum/reagent/vomit/reaction_turf(turf/T, volume) if(volume >= 5 && !isspaceturf(T)) T.add_vomit_floor() /datum/reagent/greenvomit - name = "Green vomit" + name = "Зелёная блевотина" id = "green_vomit" - description = "Whoa, that can't be natural. That's horrible." + description = "Вау, это не может быть естественным. Это ужасно." reagent_state = LIQUID color = "#78FF74" - taste_description = "puke" + taste_description = "рвоты" /datum/reagent/greenvomit/reaction_turf(turf/T, volume) if(volume >= 5 && !isspaceturf(T)) @@ -1075,11 +1071,11 @@ ////Lavaland Flora Reagents//// /datum/reagent/consumable/entpoly - name = "Entropic Polypnium" + name = "Экстракт Энтропийного Полипния" id = "entpoly" - description = "An ichor, derived from a certain mushroom, makes for a bad time." + description = "Токсичное вещество, добываемое из некоторых видов грибов." color = "#1d043d" - taste_description = "bitter mushroom" + taste_description = "горьких грибов" /datum/reagent/consumable/entpoly/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1094,12 +1090,12 @@ return ..() | update_flags /datum/reagent/consumable/tinlux - name = "Tinea Luxor" + name = "Светящийся грибок" id = "tinlux" - description = "A stimulating ichor which causes luminescent fungi to grow on the skin. " + description = "Стимулирующий ихор, который вызывает рост люминесцентных грибков на коже." color = "#b5a213" var/light_activated = FALSE - taste_description = "tingling mushroom" + taste_description = "покалывающих язык грибов" //Lazy list of mobs affected by the luminosity of this reagent. var/list/mobs_affected @@ -1128,38 +1124,38 @@ qdel(mob_light_obj) /datum/reagent/consumable/vitfro - name = "Vitrium Froth" + name = "Стекловидная пена" id = "vitfro" - description = "A bubbly paste that heals wounds of the skin." + description = "Пенистая паста, заживляющая раны на коже." color = "#d3a308" nutriment_factor = 3 * REAGENTS_METABOLISM - taste_description = "fruity mushroom" + taste_description = "фруктовых грибов" /datum/reagent/consumable/vitfro/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(prob(80)) - update_flags |= M.adjustBruteLoss(-0.5, FALSE) - update_flags |= M.adjustFireLoss(-0.5, FALSE) + update_flags |= M.adjustBruteLoss(-0.5, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-0.5, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/consumable/animal_feed - name = "Animal Feed" + name = "Еда для животных" id = "afeed" - description = "Food that pets are fed." + description = "Пища, которой кормят домашних животных." color = "#ac3308" nutriment_factor = 2 * REAGENTS_METABOLISM - taste_description = "animal feed" + taste_description = "пищи для животных" /datum/reagent/consumable/animal_feed/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(isvulpkanin(M) || istajaran(M)) - update_flags |= M.adjustBruteLoss(-0.25, FALSE) - update_flags |= M.adjustFireLoss(-0.25, FALSE) + update_flags |= M.adjustBruteLoss(-0.25, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-0.25, FALSE, affect_robotic = FALSE) M.AdjustDisgust(-5 SECONDS) if(prob(2)) - to_chat(M, span_notice("You feel delicious yummy snack taste!")) + to_chat(M, span_notice("Вы чувствуете восхитительный вкус закуски!")) else M.AdjustDisgust(5 SECONDS) if(prob(2)) - to_chat(M, span_warning("Yuack! What a terrible taste!")) + to_chat(M, span_warning("Ух! Какой ужасный вкус!")) return ..() | update_flags diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm index 045a8053fcd3..89b012765d59 100644 --- a/code/modules/reagents/chemistry/reagents/medicine.dm +++ b/code/modules/reagents/chemistry/reagents/medicine.dm @@ -1,7 +1,7 @@ /datum/reagent/medicine - name = "Medicine" + name = "Медицина" id = "medicine" - taste_description = "bitterness" + taste_description = "горечи" harmless = TRUE /datum/reagent/medicine/on_mob_life(mob/living/M) @@ -14,26 +14,26 @@ return STATUS_UPDATE_NONE /datum/reagent/medicine/hydrocodone - name = "Hydrocodone" + name = "Гидрокодон" id = "hydrocodone" - description = "An extremely effective painkiller; may have long term abuse consequences." + description = "Чрезвычайно эффективное болеутоляющее средство; может иметь долгосрочные последствия злоупотребления." reagent_state = LIQUID color = "#C805DC" metabolization_rate = 0.75 * REAGENTS_METABOLISM // Lasts 1.5 minutes for 15 units shock_reduction = 200 - taste_description = "numbness" + taste_description = "онемения во рту" /datum/reagent/medicine/hydrocodone/on_mob_life(mob/living/M) //Needed so the hud updates when injested / removed from system var/update_flags = STATUS_UPDATE_HEALTH return ..() | update_flags /datum/reagent/medicine/sterilizine - name = "Sterilizine" + name = "Стерилизин" id = "sterilizine" - description = "Sterilizes wounds in preparation for surgery." + description = "Стерилизует раны для подготовки к операции." reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 - taste_description = "antiseptic" + taste_description = "антисептика" //makes you squeaky clean /datum/reagent/medicine/sterilizine/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) @@ -47,14 +47,14 @@ T.germ_level -= min(volume*20, T.germ_level) /datum/reagent/medicine/synaptizine - name = "Synaptizine" + name = "Синаптизин" id = "synaptizine" - description = "Synaptizine is used to treat neuroleptic shock. Can be used to help remove disabling symptoms such as paralysis." + description = "Синаптизин используется для лечения нейролептического шока. Может использоваться для устранения инвалидизирующих симптомов, таких как паралич." reagent_state = LIQUID color = "#FA46FA" overdose_threshold = 40 harmless = FALSE - taste_description = "stimulant" + taste_description = "бодрости" /datum/reagent/medicine/synaptizine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -74,7 +74,7 @@ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS] if(severity == 1) if(effect <= 1) - M.visible_message("[M] suddenly and violently vomits!") + M.visible_message(span_warning("[M] блю[pluralize_ru(M.gender, "ёт", "ют")]!")) M.fakevomit(no_text = 1) else if(effect <= 3) M.emote(pick("groan","moan")) @@ -82,10 +82,10 @@ update_flags |= M.adjustToxLoss(1, FALSE) else if(severity == 2) if(effect <= 2) - M.visible_message("[M] suddenly and violently vomits!") + M.visible_message(span_warning("[M] блю[pluralize_ru(M.gender, "ёт", "ют")]!")) M.fakevomit(no_text = 1) else if(effect <= 5) - M.visible_message("[M] staggers and drools, [M.p_their()] eyes bloodshot!") + M.visible_message(span_warning("[M] пошатыва[pluralize_ru(M.gender, "ет", "ют")]ся и пуска[pluralize_ru(M.gender, "ет", "ют")] слюни. Из [genderize_ru(M.gender, "его", "её", "его", "их")] глаз течёт кровь!")) M.Dizzy(16 SECONDS) M.Weaken(8 SECONDS) if(effect <= 15) @@ -93,12 +93,12 @@ return list(effect, update_flags) /datum/reagent/medicine/mitocholide - name = "Mitocholide" + name = "Митоколид" id = "mitocholide" - description = "A specialized drug that stimulates the mitochondria of cells to encourage healing of internal organs." + description = "Специализированный препарат, стимулирующий митохондрии клеток для заживления внутренних органов." reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 - taste_description = "nurturing" + taste_description = "горечи" /datum/reagent/medicine/mitocholide/on_mob_life(mob/living/M) if(ishuman(M)) @@ -118,13 +118,13 @@ /datum/reagent/medicine/cryoxadone data = list("diseases" = null) - name = "Cryoxadone" + name = "Криоксадон" id = "cryoxadone" - description = "A plasma mixture with almost magical healing powers. Its main limitation is that the targets body temperature must be under 265K for it to metabolise correctly." + description = "Плазменная смесь, обладающая почти магической целительной силой. Его главное ограничение - температура тела субъекта должна быть ниже 265 К, чтобы он мог правильно метаболизироваться." reagent_state = LIQUID color = "#0000C8" // rgb: 200, 165, 220 heart_rate_decrease = 1 - taste_description = "a safe refuge" + taste_description = "холодящей горечи" /datum/reagent/medicine/cryoxadone/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) if(data && data["diseases"]) @@ -141,7 +141,7 @@ if(method == REAGENT_INGEST && iscarbon(M)) var/mob/living/carbon/C = M if(C.get_blood_id() == id && !HAS_TRAIT(C, TRAIT_NO_BLOOD_RESTORE)) - C.blood_volume = min(C.blood_volume + round(volume, 0.1), BLOOD_VOLUME_NORMAL) + C.setBlood(min(C.blood_volume + round(volume, 0.1), BLOOD_VOLUME_NORMAL)) C.reagents.del_reagent(id) /datum/reagent/medicine/cryoxadone/on_mob_life(mob/living/M) @@ -150,8 +150,8 @@ update_flags |= M.adjustCloneLoss(-1, FALSE) update_flags |= M.adjustOxyLoss(-2, FALSE) update_flags |= M.adjustToxLoss(-0.5, FALSE) - update_flags |= M.adjustBruteLoss(-2, FALSE) - update_flags |= M.adjustFireLoss(-4, FALSE) + update_flags |= M.adjustBruteLoss(-2, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-4, FALSE, affect_robotic = FALSE) if(ishuman(M)) var/mob/living/carbon/human/H = M var/obj/item/organ/external/head/head = H.get_organ(BODY_ZONE_HEAD) @@ -168,20 +168,20 @@ new_blood.update_icon() /datum/reagent/medicine/rezadone - name = "Rezadone" + name = "Резадон" id = "rezadone" - description = "A powder derived from fish toxin, Rezadone can effectively treat genetic damage as well as restoring minor wounds. Overdose will cause intense nausea and minor toxin damage." + description = "Порошок, полученный из рыбьего токсина. Резадон может эффективно лечить генетические повреждения, а также восстанавливать мелкие раны. Передозировка вызывает сильную тошноту и отравление." reagent_state = SOLID color = "#669900" // rgb: 102, 153, 0 overdose_threshold = 30 harmless = FALSE - taste_description = "reformation" + taste_description = "обновления" /datum/reagent/medicine/rezadone/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE update_flags |= M.adjustCloneLoss(-5, FALSE) //What? We just set cloneloss to 0. Why? Simple; this is so external organs properly unmutate. // why don't you fix the code instead // i fix the code dont worry - update_flags |= M.adjustBruteLoss(-1, FALSE) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-1, FALSE, affect_robotic = FALSE) if(ishuman(M)) var/mob/living/carbon/human/H = M var/obj/item/organ/external/head/head = H.get_organ(BODY_ZONE_HEAD) @@ -196,13 +196,13 @@ return list(0, update_flags) /datum/reagent/medicine/spaceacillin - name = "Spaceacillin" + name = "Космоциллин" id = "spaceacillin" - description = "An all-purpose antibiotic agent extracted from space fungus." + description = "Универсальный антибиотик, получаемый из космической плесени." reagent_state = LIQUID color = "#0AB478" metabolization_rate = 0.5 * REAGENTS_METABOLISM - taste_description = "antibiotics" + taste_description = "антибиотиков" /datum/reagent/medicine/spaceacillin/on_mob_life(mob/living/M) var/list/organs_list = list() @@ -227,14 +227,14 @@ return ..() /datum/reagent/medicine/silver_sulfadiazine - name = "Silver Sulfadiazine" + name = "Сульфадиазин серебра" id = "silver_sulfadiazine" - description = "This antibacterial compound is used to treat burn victims." + description = "Это антибактериальное соединение используется для лечения пострадавших от ожогов." reagent_state = LIQUID color = "#F0DC00" metabolization_rate = 7.5 * REAGENTS_METABOLISM harmless = FALSE //toxic if ingested, and I am NOT going to account for the difference - taste_description = "burn cream" + taste_description = "мази от ожогов" /datum/reagent/medicine/silver_sulfadiazine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -245,21 +245,21 @@ if(iscarbon(M)) if(method == REAGENT_TOUCH) if(M.heal_damage_type(volume, BURN) && show_message) - to_chat(M, "The silver sulfadiazine soothes your burns.") + to_chat(M, span_notice("Сульфадиазин серебра заживляет ваши ожоги.")) if(method == REAGENT_INGEST) if(M.apply_damage(0.5 * volume, TOX) && show_message) - to_chat(M, "You feel sick...") + to_chat(M, span_warning("Вас подташнивает...")) ..() /datum/reagent/medicine/styptic_powder - name = "Styptic Powder" + name = "Кровоостанавливающая пудра" id = "styptic_powder" - description = "Styptic (aluminum sulfate) powder helps control bleeding and heal physical wounds." + description = "Кровоостанавливающий порошок (сульфат алюминия), который помогает остановить кровотечение и заживить физические раны." reagent_state = LIQUID color = "#FF9696" metabolization_rate = 7.5 * REAGENTS_METABOLISM harmless = FALSE - taste_description = "wound cream" + taste_description = "мази от порезов" /datum/reagent/medicine/styptic_powder/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -270,41 +270,42 @@ if(iscarbon(M)) if(method == REAGENT_TOUCH) if(M.heal_damage_type(volume, BRUTE) && show_message && M.has_pain()) - to_chat(M, "The styptic powder stings like hell as it closes some of your wounds!") + to_chat(M, span_notice("Кровоостанавливающая пудра заживляет ваши раны. Как же щиплет!")) else if(method == REAGENT_INGEST) if(M.apply_damage(0.5 * volume, TOX) && show_message) - to_chat(M, "You feel gross!") + to_chat(M, span_warning("Вас подташнивает...")) ..() /datum/reagent/medicine/salglu_solution - name = "Saline-Glucose Solution" + name = "Физиологический раствор" id = "salglu_solution" - description = "This saline and glucose solution can help stabilize critically injured patients and cleanse wounds." + description = "Этот раствор соли и глюкозы помогает стабилизировать состояние тяжелораненых пациентов и очистить раны." reagent_state = LIQUID color = "#C8A5DC" penetrates_skin = TRUE metabolization_rate = 0.75 * REAGENTS_METABOLISM - taste_description = "salt" + taste_description = "солёной воды" /datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(prob(33)) - update_flags |= M.adjustBruteLoss(-1, FALSE) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-1, FALSE, affect_robotic = FALSE) if(ishuman(M) && prob(33)) var/mob/living/carbon/human/H = M //do not restore blood on things with no blood by nature. if(!HAS_TRAIT(H, TRAIT_NO_BLOOD) && !HAS_TRAIT(H, TRAIT_NO_BLOOD_RESTORE) && H.blood_volume < BLOOD_VOLUME_NORMAL) - H.blood_volume += 1 + H.AdjustBlood(1) + return ..() | update_flags /datum/reagent/medicine/synthflesh - name = "Synthflesh" + name = "Синт-плоть" id = "synthflesh" - description = "A resorbable microfibrillar collagen and protein mixture that can rapidly heal injuries when applied topically." + description = "Резорбируемая смесь микрофибриллярного коллагена и белков, способная быстро заживлять повреждения при местном применении." reagent_state = LIQUID color = "#FFEBEB" - taste_description = "blood" + taste_description = "крови" /datum/reagent/medicine/synthflesh/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume, show_message = 1) if(iscarbon(M)) @@ -312,7 +313,7 @@ var/heal_amount = 1.5 * volume M.heal_overall_damage(heal_amount, heal_amount) if(show_message) - to_chat(M, "The synthetic flesh integrates itself into your wounds, healing you.") + to_chat(M, span_notice("Синт-плоть начинает сращиваться с вашей кожей, заживляя раны.")) ..() /datum/reagent/medicine/synthflesh/reaction_turf(turf/T, volume) //let's make a mess! @@ -321,28 +322,28 @@ playsound(T, 'sound/effects/splat.ogg', 50, 1, -3) /datum/reagent/medicine/ab_stimulant - name = "Anti-burn Stimulant" + name = "Анти-ожоговый стимулянт" id = "antiburn_stimulant" description = "Стимулятор регенеративных способностей клеток, способный излечить обугленную кожу в кратчайшие сроки." reagent_state = LIQUID metabolization_rate = 0.25 * REAGENTS_METABOLISM overdose_threshold = 3 color = "#fab9b9" - taste_description = "bitterness" + taste_description = "горечи" /datum/reagent/medicine/ab_stimulant/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE - to_chat(M, "Вы чуствуете чесотку.") - update_flags |= M.adjustFireLoss(-1.5, FALSE) + to_chat(M, span_notice("Ваша кожа чешется.")) + update_flags |= M.adjustFireLoss(-1.5, FALSE, affect_robotic = FALSE) if(volume > 1.9) if(HAS_TRAIT(M, TRAIT_HUSK)) var/mob/living/carbon/human/H = M H.cure_husk() - to_chat(M, "Ваша обугленная кожа отпадает!") + to_chat(M, span_warning("Ваша обугленная кожа отпадает!")) return ..() | update_flags /datum/reagent/medicine/ab_stimulant/overdose_process(mob/living/M, severity) - to_chat(M, "Ваша кожа лопается!") + to_chat(M, span_warning("Ваша кожа лопается!")) var/update = NONE update |= M.apply_damage(4, BRUTE, spread_damage = TRUE, updating_health = FALSE) update |= M.heal_damage_type(6, BURN, updating_health = FALSE) @@ -354,12 +355,12 @@ return ..() /datum/reagent/medicine/charcoal - name = "Charcoal" + name = "Активированный уголь" id = "charcoal" - description = "Activated charcoal helps to absorb toxins." + description = "Активированный уголь поглощает токсины." reagent_state = LIQUID color = "#000000" - taste_description = "dust" + taste_description = "пыли" /datum/reagent/medicine/charcoal/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -370,10 +371,31 @@ M.reagents.remove_reagent(R.id,1) return ..() | update_flags +/datum/reagent/medicine/coaltree_extract + name = "Экстракт Угледрева" + id = "coaltree_extract" + description = "Экстракт, полученный из угледрева. Выводит из организма вредные токсины, но имеет ряд побочных эффектов." + reagent_state = LIQUID + metabolization_rate = 0.4 * REAGENTS_METABOLISM + color = "#000000" + taste_description = "пепла" + +/datum/reagent/medicine/coaltree_extract/on_mob_life(mob/living/M) + var/update_flags = STATUS_UPDATE_NONE + update_flags |= M.adjustToxLoss(-3, FALSE) + update_flags |= M.adjustBruteLoss(1, FALSE) + if(prob(10)) + to_chat(M, span_warning("Ваша кожа покрывается кровавыми волдырями.")) + if(prob(50)) + for(var/datum/reagent/R in M.reagents.reagent_list) + if(R != src) + M.reagents.remove_reagent(R.id,1) + return ..() | update_flags + /datum/reagent/medicine/omnizine - name = "Omnizine" + name = "Омнизин" id = "omnizine" - description = "Omnizine is a highly potent healing medication that can be used to treat a wide range of injuries." + description = "Омнизин - это высокоэффективный лечебный препарат, который можно использовать для лечения широкого спектра травм." reagent_state = LIQUID color = "#C8A5DC" overdose_threshold = 30 @@ -381,14 +403,14 @@ addiction_chance_additional = 20 addiction_threshold = 5 harmless = FALSE - taste_description = "health" + taste_description = "горько-сладкого лекарства" /datum/reagent/medicine/omnizine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE update_flags |= M.adjustToxLoss(-0.5, FALSE) update_flags |= M.adjustOxyLoss(-0.5, FALSE) - update_flags |= M.adjustBruteLoss(-1, FALSE) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-1, FALSE, affect_robotic = FALSE) if(prob(50)) M.AdjustLoseBreath(-2 SECONDS) return ..() | update_flags @@ -402,43 +424,43 @@ if(severity == 1) //lesser M.AdjustStuttering(2 SECONDS) if(effect <= 1) - M.visible_message("[M] suddenly cluches [M.p_their()] gut!") + M.visible_message(span_warning("[M] хвата[pluralize_ru(M.gender, "ет", "ют")]ся за живот от боли!")) M.emote("scream") M.Weaken(8 SECONDS) else if(effect <= 3) - M.visible_message("[M] completely spaces out for a moment.") + M.visible_message(span_warning("[M] на мгновение теря[pluralize_ru(M.gender, "ет", "ют")] сознание!")) M.AdjustConfused(30 SECONDS) else if(effect <= 5) - M.visible_message("[M] stumbles and staggers.") + M.visible_message(span_warning("[M] спотыка[pluralize_ru(M.gender, "ет", "ют")]ся и едва не падает!")) M.Dizzy(10 SECONDS) M.Weaken(6 SECONDS) else if(effect <= 7) - M.visible_message("[M] shakes uncontrollably.") + M.visible_message(span_warning("[M] тряс[pluralize_ru(M.gender, "ёт", "ют")]ся!")) M.Jitter(60 SECONDS) else if(severity == 2) // greater if(effect <= 2) - M.visible_message("[M] suddenly cluches [M.p_their()] gut!") + M.visible_message(span_warning("[M] хвата[pluralize_ru(M.gender, "ет", "ют")]ся за живот от боли!")) M.emote("scream") M.Weaken(14 SECONDS) else if(effect <= 5) - M.visible_message("[M] jerks bolt upright, then collapses!") + M.visible_message(span_warning("[M] резко дёрга[pluralize_ru(M.gender, "ет", "ют")]ся и падает!")) M.Paralyse(10 SECONDS) M.Weaken(8 SECONDS) else if(effect <= 8) - M.visible_message("[M] stumbles and staggers.") + M.visible_message(span_warning("[M] пошатыва[pluralize_ru(M.gender, "ет", "ют")]ся из стороны в сторону!")) M.Dizzy(10 SECONDS) M.Weaken(6 SECONDS) return list(effect, update_flags) /datum/reagent/medicine/calomel - name = "Calomel" + name = "Каломель" id = "calomel" - description = "This potent purgative rids the body of impurities. It is highly toxic however and close supervision is required." + description = "Это мощное чистящее средство избавляет организм от нечистот. Однако он очень токсичен, поэтому необходим тщательный контроль." reagent_state = LIQUID color = "#22AB35" metabolization_rate = 2 * REAGENTS_METABOLISM harmless = FALSE - taste_description = "a painful cleansing" + taste_description = "болезненного очищение" /datum/reagent/medicine/calomel/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -452,12 +474,12 @@ return ..() | update_flags /datum/reagent/medicine/potass_iodide - name = "Potassium Iodide" + name = "Йодид калия" id = "potass_iodide" - description = "Potassium Iodide is a medicinal drug used to counter the effects of radiation poisoning." + description = "Йодид калия - лекарственный препарат, используемый для борьбы с последствиями радиационного отравления." reagent_state = LIQUID color = "#B4DCBE" - taste_description = "cleansing" + taste_description = "очищения" /datum/reagent/medicine/potass_iodide/on_mob_life(mob/living/M) if(prob(80)) @@ -465,13 +487,13 @@ return ..() /datum/reagent/medicine/pen_acid - name = "Pentetic Acid" + name = "Пентетовая кислота" id = "pen_acid" - description = "Pentetic Acid is an aggressive chelation agent. May cause tissue damage. Use with caution." + description = "Диэтилентриаминпентаацетат (сокращённо \"пентетовая кислота\" или \"ДТПА\") - агрессивный хелатирующий агент. Может вызвать повреждение тканей. Используйте с осторожностью." reagent_state = LIQUID color = "#C8A5DC" harmless = FALSE - taste_description = "a purge" + taste_description = "очищения" /datum/reagent/medicine/pen_acid/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -492,49 +514,49 @@ return ..() | update_flags /datum/reagent/medicine/sal_acid - name = "Salicylic Acid" + name = "Салициловая кислота" id = "sal_acid" - description = "This is a is a standard salicylate pain reliever and fever reducer." + description = "Это стандартное обезболивающее и жаропонижающее средство." reagent_state = LIQUID color = "#B54848" metabolization_rate = 0.5 * REAGENTS_METABOLISM shock_reduction = 25 overdose_threshold = 25 harmless = FALSE - taste_description = "relief" + taste_description = "облегчения" /datum/reagent/medicine/sal_acid/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(prob(55)) - update_flags |= M.adjustBruteLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) if(M.bodytemperature > BODYTEMP_NORMAL) M.adjust_bodytemperature(-10) return ..() | update_flags /datum/reagent/medicine/menthol - name = "Menthol" + name = "Ментол" id = "menthol" - description = "Menthol relieves burns and aches while providing a cooling sensation." + description = "Ментол снимает ожоги и боль, обеспечивая ощущение прохлады." reagent_state = LIQUID color = "#F0F9CA" metabolization_rate = 0.25 * REAGENTS_METABOLISM - taste_description = "soothing" + taste_description = "успокоения" /datum/reagent/medicine/menthol/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(prob(55)) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustFireLoss(-1, FALSE, affect_robotic = FALSE) if(M.bodytemperature > 280) M.adjust_bodytemperature(-10) return ..() | update_flags /datum/reagent/medicine/salbutamol - name = "Salbutamol" + name = "Сальбутамол" id = "salbutamol" - description = "Salbutamol is a common bronchodilation medication for asthmatics. It may help with other breathing problems as well." + description = "Сальбутамол - распространенное бронхорасширяющее лекарство для астматиков. Он может помочь и при других проблемах с дыханием." reagent_state = LIQUID color = "#00FFFF" - taste_description = "safety" + taste_description = "свежего воздуха" /datum/reagent/medicine/salbutamol/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -543,9 +565,9 @@ return ..() | update_flags /datum/reagent/medicine/perfluorodecalin - name = "Perfluorodecalin" + name = "Перфтордекалин" id = "perfluorodecalin" - description = "This experimental perfluoronated solvent has applications in liquid breathing and tissue oxygenation. Use with caution." + description = "Этот экспериментальный перфторированный растворитель находит применение в жидкостном дыхании и оксигенации тканей. Использовать с осторожностью." reagent_state = LIQUID color = "#C8A5DC" metabolization_rate = 0.5 * REAGENTS_METABOLISM @@ -553,7 +575,7 @@ addiction_chance_additional = 20 addiction_threshold = 10 harmless = FALSE - taste_description = "oxygenation" + taste_description = "оксигенации" /datum/reagent/medicine/perfluorodecalin/on_mob_life(mob/living/carbon/human/M) var/update_flags = STATUS_UPDATE_NONE @@ -561,14 +583,14 @@ if(volume >= 4) M.LoseBreath(12 SECONDS) if(prob(33)) - update_flags |= M.adjustBruteLoss(-0.5, FALSE) - update_flags |= M.adjustFireLoss(-0.5, FALSE) + update_flags |= M.adjustBruteLoss(-0.5, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-0.5, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/medicine/ephedrine - name = "Ephedrine" + name = "Эфедрин" id = "ephedrine" - description = "Ephedrine is a plant-derived stimulant." + description = "Эфедрин - это стимулятор растительного происхождения." reagent_state = LIQUID color = "#C8A5DC" metabolization_rate = 0.75 * REAGENTS_METABOLISM @@ -577,7 +599,7 @@ addiction_chance_additional = 10 addiction_threshold = 10 harmless = FALSE - taste_description = "stimulation" + taste_description = "стимуляции" /datum/reagent/medicine/ephedrine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -591,8 +613,8 @@ update_flags |= M.adjustOxyLoss(-1, FALSE) if(M.health < 0 || M.health > 0 && prob(33)) update_flags |= M.adjustToxLoss(-1, FALSE) - update_flags |= M.adjustBruteLoss(-1, FALSE) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-1, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/medicine/ephedrine/overdose_process(mob/living/M, severity) @@ -601,7 +623,7 @@ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS] if(severity == 1) if(effect <= 1) - M.visible_message("[M] suddenly and violently vomits!") + M.visible_message(span_warning("[M] блю[pluralize_ru(M.gender, "ёт", "ют")]!")) M.fakevomit(no_text = 1) else if(effect <= 3) M.emote(pick("groan","moan")) @@ -609,10 +631,10 @@ M.emote("collapse") else if(severity == 2) if(effect <= 2) - M.visible_message("[M] suddenly and violently vomits!") + M.visible_message(span_warning("[M] блю[pluralize_ru(M.gender, "ёт", "ют")]!")) M.fakevomit(no_text = 1) else if(effect <= 5) - M.visible_message("[M.name] staggers and drools, [M.p_their()] eyes bloodshot!") + M.visible_message(span_warning("[M] пошатыва[pluralize_ru(M.gender, "ет", "ют")]ся и пуска[pluralize_ru(M.gender, "ет", "ют")] слюни. Из [genderize_ru(M.gender, "его", "её", "его", "их")] глаз течёт кровь!")) M.Dizzy(4 SECONDS) M.Weaken(6 SECONDS) if(effect <= 15) @@ -620,15 +642,15 @@ return list(effect, update_flags) /datum/reagent/medicine/diphenhydramine - name = "Diphenhydramine" + name = "Дифенгидрамин" id = "diphenhydramine" - description = "Anti-allergy medication. May cause drowsiness, do not operate heavy machinery while using this." + description = "Противоаллергические препараты. Может вызывать сонливость, не работайте с тяжелыми механизмами при использовании этого препарата." reagent_state = LIQUID color = "#5BCBE1" addiction_chance = 1 addiction_threshold = 10 harmless = FALSE - taste_description = "antihistamine" + taste_description = "антигистамина" /datum/reagent/medicine/diphenhydramine/on_mob_life(mob/living/M) M.AdjustJitter(-40 SECONDS) @@ -639,13 +661,13 @@ if(prob(3)) M.AdjustDrowsy(2 SECONDS) - M.visible_message("[M] looks a bit dazed.") + M.visible_message(span_notice("[M] выгляд[pluralize_ru(M.gender, "ит вялым", "ят вялыми")].")) return ..() /datum/reagent/medicine/morphine - name = "Morphine" + name = "Морфин" id = "morphine" - description = "A strong but highly addictive opiate painkiller with sedative side effects." + description = "Сильное, но вызывающее сильное привыкание опиатное болеутоляющее средство с седативными побочными эффектами." reagent_state = LIQUID color = "#C8A5DC" overdose_threshold = 20 @@ -653,7 +675,7 @@ addiction_threshold = 15 shock_reduction = 50 harmless = FALSE - taste_description = "a delightful numbing" + taste_description = "приятного оцепенения" /datum/reagent/medicine/morphine/on_mob_add(mob/living/M) @@ -682,16 +704,16 @@ return ..() | update_flags /datum/reagent/medicine/morphine/syntmorphine - name = "Syntmorphine" + name = "Синт-морфин" id = "syntmorphine" /datum/reagent/medicine/oculine - name = "Oculine" + name = "Окулин" id = "oculine" - description = "Oculine is a saline eye medication with mydriatic and antibiotic effects." + description = "Окулин - это солевой глазной препарат с мидриатическим и антибиотическим действием." reagent_state = LIQUID color = "#C8A5DC" - taste_description = "clarity" + taste_description = "ясности" /datum/reagent/medicine/oculine/on_mob_life(mob/living/M) if(prob(80)) @@ -711,15 +733,15 @@ return ..() /datum/reagent/medicine/atropine - name = "Atropine" + name = "Атропин" id = "atropine" - description = "Atropine is a potent cardiac resuscitant but it can causes confusion, dizzyness and hyperthermia." + description = "Атропин - мощный сердечный реаниматор, но он может вызвать спутанность сознания, головокружение и гипертермию." reagent_state = LIQUID color = "#000000" metabolization_rate = 0.5 * REAGENTS_METABOLISM overdose_threshold = 25 harmless = FALSE - taste_description = "a moment of respite" + taste_description = "передышки" /datum/reagent/medicine/atropine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -732,23 +754,23 @@ update_flags |= M.adjustOxyLoss(-5, FALSE) if(M.health < -25) update_flags |= M.adjustToxLoss(-1, FALSE) - update_flags |= M.adjustBruteLoss(-1.5, FALSE) - update_flags |= M.adjustFireLoss(-1.5, FALSE) + update_flags |= M.adjustBruteLoss(-1.5, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-1.5, FALSE, affect_robotic = FALSE) else if(M.health > -60) update_flags |= M.adjustToxLoss(1, FALSE) M.reagents.remove_reagent("sarin", 20) return ..() | update_flags /datum/reagent/medicine/epinephrine - name = "Epinephrine" + name = "Эпинефрин" id = "epinephrine" - description = "Epinephrine is a potent neurotransmitter, used in medical emergencies to halt anaphylactic shock and prevent cardiac arrest." + description = "Эпинефрин - мощный нейротрансмиттер, используемый в экстренных медицинских ситуациях для купирования анафилактического шока и предотвращения остановки сердца." reagent_state = LIQUID color = "#96B1AE" metabolization_rate = 0.5 * REAGENTS_METABOLISM overdose_threshold = 20 harmless = FALSE - taste_description = "borrowed time" + taste_description = "выигранного времени" /datum/reagent/medicine/epinephrine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -769,8 +791,8 @@ update_flags |= M.adjustOxyLoss(-5, FALSE) if(M.health < -10 && M.health > -65) update_flags |= M.adjustToxLoss(-0.5, FALSE) - update_flags |= M.adjustBruteLoss(-0.5, FALSE) - update_flags |= M.adjustFireLoss(-0.5, FALSE) + update_flags |= M.adjustBruteLoss(-0.5, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-0.5, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/medicine/epinephrine/overdose_process(mob/living/M, severity) @@ -779,7 +801,7 @@ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS] if(severity == 1) if(effect <= 1) - M.visible_message("[M] suddenly and violently vomits!") + M.visible_message(span_warning("[M] блю[pluralize_ru(M.gender, "ёт", "ют")]!")) M.fakevomit(no_text = 1) else if(effect <= 3) M.emote(pick("groan","moan")) @@ -787,10 +809,10 @@ M.emote("collapse") else if(severity == 2) if(effect <= 2) - M.visible_message("[M] suddenly and violently vomits!") + M.visible_message(span_warning("[M] блю[pluralize_ru(M.gender, "ёт", "ют")]!")) M.fakevomit(no_text = 1) else if(effect <= 5) - M.visible_message("[M] staggers and drools, [M.p_their()] eyes bloodshot!") + M.visible_message(span_warning("[M] пошатыва[pluralize_ru(M.gender, "ет", "ют")]ся и пуска[pluralize_ru(M.gender, "ет", "ют")] слюни. Из [genderize_ru(M.gender, "его", "её", "его", "их")] глаз течёт кровь!")) M.Dizzy(4 SECONDS) M.Weaken(6 SECONDS) if(effect <= 15) @@ -798,13 +820,13 @@ return list(effect, update_flags) /datum/reagent/medicine/strange_reagent - name = "Strange Reagent" + name = "Странный реагент" id = "strange_reagent" - description = "A glowing green fluid highly reminiscent of nuclear waste." + description = "Светящаяся зелёная жидкость, очень напоминающая ядерные отходы." reagent_state = LIQUID color = "#A0E85E" metabolization_rate = 0.5 * REAGENTS_METABOLISM - taste_description = "life" + taste_description = "жизни" harmless = FALSE var/revive_type = SENTIENCE_ORGANIC //So you can't revive boss monsters or robots with it @@ -826,7 +848,7 @@ if(SM.stat == DEAD) SM.revive() SM.loot.Cut() //no abusing strange reagent for farming unlimited resources - SM.visible_message("[SM] seems to rise from the dead!") + SM.visible_message(span_warning("[SM] ожива[pluralize_ru(SM.gender, "ет", "ют")]!")) if(iscarbon(M)) if(method == REAGENT_INGEST || (method == REAGENT_TOUCH && prob(25))) @@ -836,11 +858,11 @@ M.delayed_gib() return if(!M.ghost_can_reenter()) - M.visible_message("[M] twitches slightly, but is otherwise unresponsive!") + M.visible_message(span_warning("[M] слегка вздрагива[pluralize_ru(M.gender, "ет", "ют")], но в остальном не реагиру[pluralize_ru(M.gender, "ет", "ют")]!")) return if(!M.suiciding && !HAS_TRAIT(M, TRAIT_NO_CLONE) && (!M.mind || M.mind?.is_revivable())) var/time_dead = world.time - M.timeofdeath - M.visible_message("[M] seems to rise from the dead!") + M.visible_message(span_warning("[M] ожива[pluralize_ru(M.gender, "ет", "ют")]!")) var/update = NONE update |= M.take_overall_damage(rand(0, 15), rand(0, 15), updating_health = FALSE) update |= M.apply_damages(tox = rand(0, 15), clone = 50, updating_health = FALSE) @@ -866,11 +888,11 @@ ..() /datum/reagent/medicine/mannitol - name = "Mannitol" + name = "Маннитол" id = "mannitol" - description = "Mannitol is a sugar alcohol that can help alleviate cranial swelling." + description = "Маннитол - это сахарный спирт, который может восстановить повреждённые ткани мозга." color = "#D1D1F1" - taste_description = "sweetness" + taste_description = "сладкого спирта" /datum/reagent/medicine/mannitol/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -879,11 +901,11 @@ return ..() | update_flags /datum/reagent/medicine/fomepizole - name = "Fomepizole" + name = "Фомепизол" id = "fomepizole" - description = "Fomepizone is a competitive ADH inhibitor. It is used to block metabolism of ethanol to their toxic metabolites." + description = "Фомепизол является конкурентным ингибитором АДГ. Он используется для блокировки метаболизма этанола до его токсичных метаболитов." color = "#95bb72" - taste_description = "sanity" + taste_description = "адекватности" /datum/reagent/medicine/fomepizole/on_mob_life(mob/living/M) M.AdjustDizzy(-120 SECONDS) @@ -891,11 +913,11 @@ return ..() /datum/reagent/medicine/mutadone - name = "Mutadone" + name = "Мутадон" id = "mutadone" - description = "Mutadone is an experimental bromide that can cure genetic abnomalities." + description = "Мутадон - это экспериментальный бромид, который может лечить генетические аномалии." color = "#5096C8" - taste_description = "cleanliness" + taste_description = "очищения" /datum/reagent/medicine/mutadone/on_mob_life(mob/living/carbon/human/M) @@ -917,11 +939,11 @@ /datum/reagent/medicine/antihol - name = "Antihol" + name = "Антиголь" id = "antihol" - description = "A medicine which quickly eliminates alcohol in the body." + description = "Препарат, который быстро выводит алкоголь из организма." color = "#009CA8" - taste_description = "sobriety" + taste_description = "трезвости" /datum/reagent/medicine/antihol/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -933,13 +955,13 @@ return ..() | update_flags /datum/reagent/medicine/stimulants - name = "Stimulants" + name = "Стимулятор" id = "stimulants" - description = "An illegal compound that dramatically enhances the body's performance and healing capabilities." + description = "Запрещённое вещество, резко повышающее работоспособность и лечебные возможности организма." color = "#C8A5DC" harmless = FALSE can_synth = FALSE - taste_description = "an unstoppable force" + taste_description = span_userdanger("нереальной бодрости") var/absorption_applied = FALSE /datum/reagent/medicine/stimulants/on_mob_life(mob/living/M) @@ -947,8 +969,8 @@ if(volume > 5) update_flags |= M.adjustOxyLoss(-2.5, FALSE) update_flags |= M.adjustToxLoss(-2.5, FALSE) - update_flags |= M.adjustBruteLoss(-5, FALSE) - update_flags |= M.adjustFireLoss(-5, FALSE) + update_flags |= M.adjustBruteLoss(-5, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-5, FALSE, affect_robotic = FALSE) update_flags |= M.setStaminaLoss(0, FALSE) M.SetSlowed(0) M.AdjustDizzy(-20 SECONDS) @@ -977,9 +999,9 @@ /datum/reagent/medicine/stimulative_agent - name = "Stimulative Agent" + name = "Стимулирующий агент" id = "stimulative_agent" - description = "Increases run speed and eliminates stuns, can heal minor damage. If overdosed it will deal toxin damage and be less effective for healing stamina." + description = "Увеличивает скорость бега и устраняет оглушение, может исцелять небольшие повреждения. При передозировке отравляет и менее эффективен для восстановления выносливости." color = "#C8A5DC" metabolization_rate = 0.5 * REAGENTS_METABOLISM overdose_threshold = 60 @@ -990,8 +1012,8 @@ var/update_flags = STATUS_UPDATE_NONE if(user.health < 50 && user.health > 0) update_flags |= user.adjustOxyLoss(-2, FALSE) - update_flags |= user.adjustBruteLoss(-2, FALSE) - update_flags |= user.adjustFireLoss(-2, FALSE) + update_flags |= user.adjustBruteLoss(-2, FALSE, affect_robotic = FALSE) + update_flags |= user.adjustFireLoss(-2, FALSE, affect_robotic = FALSE) user.AdjustParalysis(-6 SECONDS) user.AdjustStunned(-6 SECONDS) user.AdjustWeakened(-6 SECONDS) @@ -1021,25 +1043,25 @@ return list(0, update_flags) /datum/reagent/medicine/insulin - name = "Insulin" + name = "Инсулин" id = "insulin" - description = "A hormone generated by the pancreas responsible for metabolizing carbohydrates and fat in the bloodstream." + description = "Гормон, вырабатываемый поджелудочной железой и отвечающий за метаболизм углеводов и жиров в кровеносной системе.." reagent_state = LIQUID color = "#C8A5DC" - taste_description = "tiredness" + taste_description = "усталости" /datum/reagent/medicine/insulin/on_mob_life(mob/living/M) M.reagents.remove_reagent("sugar", 5) return ..() /datum/reagent/heparin - name = "Heparin" + name = "Гепарин" id = "heparin" - description = "An anticoagulant used in heart surgeries, and in the treatment of heart attacks and blood clots." + description = "Антикоагулянт, используемый при операциях на сердце, а также при лечении инфарктов и тромбозов." reagent_state = LIQUID color = "#eee6da" overdose_threshold = 20 - taste_description = "bitterness" + taste_description = "горечи" /datum/reagent/heparin/on_mob_life(mob/living/M) M.reagents.remove_reagent("cholesterol", 2) @@ -1052,34 +1074,34 @@ if(severity == 1) if(effect <= 2) M.vomit(0, VOMIT_BLOOD, 0 SECONDS) - M.blood_volume = max(M.blood_volume - rand(5, 10), 0) + M.AdjustBlood(-rand(5, 10)) else if(effect <= 4) M.vomit(0, VOMIT_BLOOD, 0 SECONDS) - M.blood_volume = max(M.blood_volume - rand(1, 2), 0) + M.AdjustBlood(-rand(1, 2)) else if(severity == 2) if(effect <= 2) - M.visible_message("[M] is bleeding from [M.p_their()] very pores!") + M.visible_message(span_warning("[M] тряс[pluralize_ru(M.gender, "ёт", "ют")]ся, кровь хлещет прямо из [genderize_ru(M.gender, "его", "её", "его", "их")] пор!")) M.bleed(rand(10, 20)) else if(effect <= 4) M.vomit(0, VOMIT_BLOOD, 0 SECONDS) - M.blood_volume = max(M.blood_volume - rand(5, 10), 0) + M.AdjustBlood(-rand(5, 10)) else if(effect <= 8) M.vomit(0, VOMIT_BLOOD, 0 SECONDS) - M.blood_volume = max(M.blood_volume - rand(1, 2), 0) + M.AdjustBlood(-rand(1, 2)) return list(effect, update_flags) /datum/reagent/medicine/teporone - name = "Teporone" + name = "Тепорон" id = "teporone" - description = "This experimental plasma-based compound seems to regulate body temperature." + description = "Это экспериментальное соединение на основе плазмы крови, которое регулирует температуру тела." reagent_state = LIQUID color = "#D782E6" addiction_chance = 1 addiction_chance_additional = 10 addiction_threshold = 10 overdose_threshold = 50 - taste_description = "warmth and stability" + taste_description = "согревающей горечи" var/temperature_effect = 40 /datum/reagent/medicine/teporone/on_mob_life(mob/living/M) @@ -1093,12 +1115,12 @@ return ..() /datum/reagent/medicine/haloperidol - name = "Haloperidol" + name = "Галоперидол" id = "haloperidol" - description = "Haloperidol is a powerful antipsychotic and sedative. Will help control psychiatric problems, but may cause brain damage." + description = "Галоперидол - мощный антипсихотик и седативное средство. Помогает справиться с психическими проблемами, но может вызвать повреждение мозга." reagent_state = LIQUID color = "#FFDCFF" - taste_description = "stability" + taste_description = "стабильности и успокоения" harmless = FALSE var/list/drug_list = list("crank","methamphetamine","space_drugs","psilocybin","ephedrine","epinephrine","stimulants","bath_salts","lsd","thc") @@ -1111,23 +1133,24 @@ M.AdjustDruggy(-10 SECONDS) M.AdjustHallucinate(-5 SECONDS) M.AdjustJitter(-10 SECONDS) - if(prob(50)) - M.Drowsy(6 SECONDS) if(prob(10)) M.emote("drool") if(prob(20)) update_flags |= M.adjustBrainLoss(1, FALSE) + if(current_cycle > 20) + if(prob(50)) + M.Drowsy(6 SECONDS) return ..() | update_flags /datum/reagent/medicine/ether - name = "Ether" + name = "Эфир" id = "ether" - description = "A strong anesthetic and sedative." + description = "Сильное обезболивающее и седативное средство." reagent_state = LIQUID color = "#96DEDE" metabolization_rate = 0.25 * REAGENTS_METABOLISM harmless = FALSE - taste_description = "sleepiness" + taste_description = "снотворного" /datum/reagent/medicine/ether/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1144,18 +1167,18 @@ return ..() | update_flags /datum/reagent/medicine/syndicate_nanites //Used exclusively by Syndicate medical cyborgs - name = "Restorative Nanites" + name = "Восстановительные наниты" id = "syndicate_nanites" - description = "Miniature medical robots that swiftly restore bodily damage. May begin to attack their host's cells in high amounts." + description = "Миниатюрные медицинские роботы, которые быстро восстанавливают повреждения тела. Могут начать атаковать клетки своего хозяина в больших количествах." reagent_state = SOLID color = "#555555" can_synth = FALSE - taste_description = "bodily perfection" + taste_description = "нано-технологий" /datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE - update_flags |= M.adjustBruteLoss(-2.5, FALSE) //A ton of healing - this is a 50 telecrystal investment. - update_flags |= M.adjustFireLoss(-2.5, FALSE) + update_flags |= M.adjustBruteLoss(-2.5, FALSE, affect_robotic = FALSE) //A ton of healing - this is a 50 telecrystal investment. + update_flags |= M.adjustFireLoss(-2.5, FALSE, affect_robotic = FALSE) update_flags |= M.adjustOxyLoss(-7.5, FALSE) update_flags |= M.adjustToxLoss(-2.5, FALSE) update_flags |= M.adjustBrainLoss(-7.5, FALSE) @@ -1163,28 +1186,28 @@ return ..() | update_flags /datum/reagent/medicine/omnizine_diluted - name = "Diluted Omnizine" + name = "Разбавленный омнизин" id = "weak_omnizine" - description = "Slowly heals all damage types. A far weaker substitute than actual omnizine." + description = "Медленно исцеляет все типы повреждений. Гораздо более слабая версия настоящего омнизина." reagent_state = LIQUID color = "#DCDCDC" overdose_threshold = 30 metabolization_rate = 0.25 * REAGENTS_METABOLISM harmless = FALSE - taste_description = "faint hope" + taste_description = "слабой надежды" /datum/reagent/medicine/omnizine_diluted/godblood - name = "Godblood" + name = "Кровь Бога" id = "godblood" - description = "Slowly heals all damage types. Has a rather high overdose threshold. Glows with mysterious power." + description = "Медленно исцеляет все типы повреждений. Имеет довольно высокий порог передозировки. Светится таинственной силой." overdose_threshold = 150 /datum/reagent/medicine/omnizine_diluted/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE update_flags |= M.adjustToxLoss(-0.25, FALSE) update_flags |= M.adjustOxyLoss(-0.25, FALSE) - update_flags |= M.adjustBruteLoss(-0.25, FALSE) - update_flags |= M.adjustFireLoss(-0.25, FALSE) + update_flags |= M.adjustBruteLoss(-0.25, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-0.25, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/medicine/omnizine_diluted/overdose_process(mob/living/M, severity) @@ -1201,13 +1224,13 @@ //Degreaser: Mild Purgative / Lube Remover /datum/reagent/medicine/degreaser - name = "Degreaser" + name = "Обезжириватель" id = "degreaser" - description = "An industrial degreaser which can be used to clean residual build-up from machinery and surfaces." + description = "Промышленный обезжириватель, который можно использовать для удаления остатков налёта с оборудования и поверхностей." reagent_state = LIQUID color = "#CC7A00" process_flags = SYNTHETIC - taste_description = "overclocking" + taste_description = "очищения внутренних систем" /datum/reagent/medicine/degreaser/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1231,13 +1254,13 @@ //Liquid Solder: Mannitol /datum/reagent/medicine/liquid_solder - name = "Liquid Solder" + name = "Жидкий припой" id = "liquid_solder" - description = "A solution formulated to clean and repair damaged connections in posibrains while in use." + description = "Раствор, предназначенный для очистки и восстановления поврежденных соединений в позитронных блоках в процессе эксплуатации." reagent_state = LIQUID color = "#D7B395" process_flags = SYNTHETIC - taste_description = "heavy metals" + taste_description = "тяжёлых металлов" /datum/reagent/medicine/liquid_solder/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1246,13 +1269,13 @@ //Coolant: Antihol /datum/reagent/medicine/coolant - name = "Coolant" + name = "Охлаждающая жидкость" id = "coolant" - description = "Fixes speech bugs" + description = "Исправляет ошибки модуля общения." reagent_state = LIQUID color = "#0af0f0" process_flags = SYNTHETIC - taste_description = "error" + taste_description = "исправленных багов" /datum/reagent/medicine/coolant/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1264,18 +1287,18 @@ //Trek-Chems. DO NOT USE THES OUTSIDE OF BOTANY OR FOR VERY SPECIFIC PURPOSES. NEVER GIVE A RECIPE UNDER ANY CIRCUMSTANCES// /datum/reagent/medicine/bicaridine - name = "Bicaridine" + name = "Бикаридин" id = "bicaridine" - description = "Restores bruising. Overdose causes it instead." + description = "Залечивает травмы. При передозировке вызывает их появление." reagent_state = LIQUID color = "#C8A5DC" overdose_threshold = 30 harmless = FALSE - taste_description = "knitting wounds" + taste_description = "восстановления ран" /datum/reagent/medicine/bicaridine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE - update_flags |= M.adjustBruteLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/medicine/bicaridine/overdose_process(mob/living/M) @@ -1284,18 +1307,18 @@ return list(0, update_flags) /datum/reagent/medicine/kelotane - name = "Kelotane" + name = "Келотан" id = "kelotane" - description = "Restores fire damage. Overdose causes it instead." + description = "Залечивает ожоги. При передозировке вызывает их появление." reagent_state = LIQUID color = "#C8A5DC" overdose_threshold = 30 harmless = FALSE - taste_description = "soothed burns" + taste_description = "восстановления ожогов" /datum/reagent/medicine/kelotane/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustFireLoss(-1, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/medicine/kelotane/overdose_process(mob/living/M) @@ -1305,18 +1328,18 @@ /datum/reagent/medicine/earthsblood //Created by ambrosia gaia plants - name = "Earthsblood" + name = "Кровь Земли" id = "earthsblood" - description = "Ichor from an extremely powerful plant. Great for restoring wounds, but it's a little heavy on the brain." + description = "Ихор от чрезвычайно мощного растения. Отлично восстанавливает раны, но немного тяжеловат для мозга." color = "#FFAF00" overdose_threshold = 25 harmless = FALSE - taste_description = "a gift from nature" + taste_description = "природного восстановления" /datum/reagent/medicine/earthsblood/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE - update_flags |= M.adjustBruteLoss(-1.5, FALSE) - update_flags |= M.adjustFireLoss(-1.5, FALSE) + update_flags |= M.adjustBruteLoss(-1.5, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-1.5, FALSE, affect_robotic = FALSE) update_flags |= M.adjustOxyLoss(-7.5, FALSE) update_flags |= M.adjustToxLoss(-1.5, FALSE) update_flags |= M.adjustBrainLoss(1, FALSE) //This does, after all, come from ambrosia, and the most powerful ambrosia in existence, at that! @@ -1334,18 +1357,18 @@ return list(0, update_flags) /datum/reagent/medicine/syndiezine - name = "Syndiezine" + name = "Синдизин" id = "syndiezine" - description = "Попытка синдиката вывести синтетический аналог реагента кровь земли. Слабо лечит раны, но быстро избавляет от усталости, вызывает галлюцинации." + description = "Попытка синдиката вывести синтетический аналог вещества \"Кровь Земли\". Слабо лечит раны, но быстро избавляет от усталости, вызывает галлюцинации." color = "#332300" overdose_threshold = 25 harmless = FALSE - taste_description = "metal with tobacco" + taste_description = "металла с табаком" /datum/reagent/medicine/syndiezine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE - update_flags |= M.adjustBruteLoss(-0.5, FALSE) - update_flags |= M.adjustFireLoss(-0.5, FALSE) + update_flags |= M.adjustBruteLoss(-0.5, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-0.5, FALSE, affect_robotic = FALSE) update_flags |= M.adjustOxyLoss(-4.5, FALSE) update_flags |= M.adjustToxLoss(-0.5, FALSE) update_flags |= M.adjustCloneLoss(-0.5, FALSE) @@ -1362,23 +1385,23 @@ return list(0, update_flags) /datum/reagent/medicine/corazone - name = "Corazone" + name = "Коразон" id = "corazone" - description = "A medication used to treat pain, fever, and inflammation, along with heart attacks." + description = "Лекарство, используемое для лечения боли, лихорадки и воспаления, а также сердечных приступов." color = "#F5F5F5" - taste_description = "a brief respite" + taste_description = "короткой передышки" // This reagent's effects are handled in heart attack handling code /datum/reagent/medicine/nanocalcium - name = "Nano-Calcium" + name = "Нано-Кальций" id = "nanocalcium" - description = "Highly advanced nanites equipped with an unknown payload designed to repair a body. Nanomachines son." + description = "Высокотехнологичные наниты, оснащённые экспериментальной полезной нагрузкой, предназначенной для восстановления тела. Наномашины, сынок." color = "#9b3401" metabolization_rate = 1.25 * REAGENTS_METABOLISM can_synth = FALSE harmless = FALSE - taste_description = "minute of suffering" + taste_description = "предстоящих страданий" var/list/stimulant_list = list("methamphetamine", "crank", "bath_salts", "stimulative_agent", "stimulants", "adrenaline") /datum/reagent/medicine/nanocalcium/on_mob_life(mob/living/carbon/human/M) @@ -1392,7 +1415,7 @@ if(1 to 9) M.AdjustJitter(8 SECONDS) if(prob(20)) - to_chat(M, span_warning("Your skin feels hot and your veins are on fire!")) + to_chat(M, span_warning("Ваша кожа горит, а кровь в венах закипает!")) update_flags |= M.adjustFireLoss(1, FALSE) if(has_stimulant) for(var/datum/reagent/R in M.reagents.reagent_list) @@ -1408,7 +1431,7 @@ else M.AdjustWeakened(10 SECONDS) if(22) - to_chat(M, span_warning("Your body goes rigid, you cannot move at all!")) + to_chat(M, span_warning("Ваше тело онемело, вы не можете пошевелиться!")) M.AdjustWeakened(15 SECONDS) if(23 to INFINITY) // Start fixing bones | If they have stimulants or stimulant drugs in their system then the nanites won't work. if(has_stimulant) @@ -1417,10 +1440,10 @@ for(var/obj/item/organ/external/bodypart as anything in M.bodyparts) if(prob(50)) // Each tick has a 50% chance of repearing a bone. if(bodypart.has_fracture()) //I can't just check for !E.status - to_chat(M, span_notice("You feel a burning sensation in your [bodypart.name] as it straightens involuntarily!")) + to_chat(M, span_notice("Вы чувствуете жжение в ваш[genderize_ru(bodypart.gender, "ем", "ей", "ем", "их")] [bodypart.declent_ru(PREPOSITIONAL)], по мере того как [genderize_ru(bodypart.gender, "он", "она", "оно", "они")] применяют правильную форму!")) bodypart.mend_fracture() if(bodypart.has_internal_bleeding()) - to_chat(M, span_notice("You feel a burning sensation in your [bodypart.name] as your veins begin to recover!")) + to_chat(M, span_notice("Вы чувствуете жжение в ваш[genderize_ru(bodypart.gender, "ем", "ей", "ем", "их")] [bodypart.declent_ru(PREPOSITIONAL)], по мере того как сосуды в [genderize_ru(bodypart.gender, "нём", "ней", "нём", "них")] восстанавливаются!")) bodypart.stop_internal_bleeding() if(ishuman(M)) @@ -1428,25 +1451,25 @@ for(var/obj/item/organ/internal/I as anything in M.internal_organs) // 56 healing to all internal organs. I.heal_internal_damage(8) if(!HAS_TRAIT(H, TRAIT_NO_BLOOD_RESTORE) && H.blood_volume < BLOOD_VOLUME_NORMAL * 0.9)// If below 90% blood, regenerate 210 units total - H.blood_volume += 30 + H.AdjustBlood(30) for(var/datum/disease/critical/heart_failure/HF in H.diseases) HF.cure() //Won't fix a stopped heart, but it will sure fix a critical one. Shock is not fixed as healing will fix it if(M.health < 40) update_flags |= M.adjustOxyLoss(-6, FALSE) update_flags |= M.adjustToxLoss(-2, FALSE) - update_flags |= M.adjustBruteLoss(-4, FALSE) - update_flags |= M.adjustFireLoss(-4, FALSE) + update_flags |= M.adjustBruteLoss(-4, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-4, FALSE, affect_robotic = FALSE) else if(prob(50)) - to_chat(M, span_warning("Your skin feels like it is ripping apart and your veins are on fire!")) //It is experimental and does cause scars, after all. + to_chat(M, span_warning("Ваша кожа словно разрывается на части, а вены горят!")) //It is experimental and does cause scars, after all. update_flags |= M.adjustBruteLoss(2, FALSE) update_flags |= M.adjustFireLoss(2, FALSE) return ..() | update_flags /datum/reagent/medicine/lavaland_extract - name = "Lavaland Extract" + name = "Экстракт Лаваленда" id = "lavaland_extract" - description = "An extract of lavaland atmospheric and mineral elements. Heals the user in small doses, but is extremely toxic otherwise." + description = "Экстракт атмосферы Лаваленда и минеральные элементы в придачу. В небольших дозах исцеляет пользователя, но в остальных случаях крайне токсичен." color = "#C8A5DC" // rgb: 200, 165, 220 overdose_threshold = 3 //To prevent people stacking massive amounts of a very strong healing reagent harmless = FALSE @@ -1454,8 +1477,8 @@ /datum/reagent/medicine/lavaland_extract/on_mob_life(mob/living/carbon/M) var/update_flags = STATUS_UPDATE_NONE - update_flags |= M.adjustBruteLoss(-2.5, FALSE) - update_flags |= M.adjustFireLoss(-2.5, FALSE) + update_flags |= M.adjustBruteLoss(-2.5, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-2.5, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/medicine/lavaland_extract/overdose_process(mob/living/M) // This WILL be brutal @@ -1467,31 +1490,31 @@ return ..() | update_flags /datum/reagent/medicine/zessulblood //unique chemical for unathi - name = "Zessul's blood" + name = "Кровь Зессул" id = "zessulblood" - description = "A natural chemical generated by unathi" + description = "Природное химическое вещество, вырабатываемое в кровотоке унатхов." reagent_state = LIQUID color = "#00ff15" metabolization_rate = REAGENTS_METABOLISM shock_reduction = 20 - taste_description = "blessing" + taste_description = "благословления" can_synth = FALSE /datum/reagent/medicine/zessulblood/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE - update_flags |= M.adjustBruteLoss(-1, FALSE) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-1, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/medicine/pure_plasma //unique chemical for plasmaman - name = "Pure plasma" + name = "Чистая плазма" id = "pure_plasma" - description = "A product of plasma metabolism in the body of plasmaman, confirming their weak susceptibility to pain. Extremely toxic." + description = "Продукт метаболизма плазмаменов, отвечающий за восстановление тканей и противодействие болевому шоку. Чрезвычайно токсичен." reagent_state = LIQUID color = "#b521c2" metabolization_rate = REAGENTS_METABOLISM shock_reduction = 20 - taste_description = "Superiority" + taste_description = "превосходства" can_synth = FALSE /datum/reagent/medicine/pure_plasma/on_mob_life(mob/living/carbon/M) @@ -1502,18 +1525,18 @@ normal_temperature = BODYTEMP_NORMAL if(M.bodytemperature < normal_temperature) M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT) - update_flags |= M.adjustBruteLoss(-0.25, FALSE) - update_flags |= M.adjustFireLoss(-0.25, FALSE) + update_flags |= M.adjustBruteLoss(-0.25, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-0.25, FALSE, affect_robotic = FALSE) else update_flags |= M.adjustToxLoss(4, FALSE) return ..() | update_flags /datum/reagent/medicine/grubjuice - name = "Grub juice" + name = "Жучиный сок" id = "grub_juice" - description = "A potent medicinal product that can have dangerous side effects if used too much." + description = "Сильнодействующее лекарственное средство, которое при чрезмерном употреблении может вызвать опасные побочные эффекты." color = "#43bf1d" - taste_description = "bug intestines" + taste_description = "жучиных кишков" overdose_threshold = 10 can_synth = FALSE @@ -1529,9 +1552,9 @@ return list(0, update_flags) /datum/reagent/medicine/adrenaline - name = "adrenaline" + name = "Адреналин" id = "adrenaline" - description = "A powerfull stimulant that makes you immune to stuns for duration" + description = "Мощный стимулятор, который делает вас невосприимчивым к оглушению на некоторое время." color = "#C8A5DC" metabolization_rate = 0.8 * REAGENTS_METABOLISM overdose_threshold = 2.1 @@ -1563,19 +1586,19 @@ return list(0, update_flags) /datum/reagent/medicine/adv_lava_extract - name = "Modified Lavaland Extract" + name = "Модифицированный Экстракт Лаваленда" id = "adv_lava_extract" - description = "A very expensive medicine that aids with pumping blood around the body, and prevents the heart from slowing down, healing patient in process. Overdose will cause heart attacks." + description = "Очень дорогое лекарство, которое помогает перекачивать кровь по телу и предотвращает замедление работы сердца, исцеляя пациента в процессе. Передозировка приводит к сердечным приступам." reagent_state = LIQUID color = "#F5F5F5" overdose_threshold = 10 harmless = FALSE - taste_description = "bad idea" + taste_description = "плохих идей" can_synth = FALSE /atom/movable/screen/alert/adv_lava_extract - name = "Strong Heartbeat" - desc = "Your heart beats with great force! Be carefull not to cause heart attack." + name = "Учащённое сердцебиение" + desc = "Ваше сердце бьется с огромной силой! Будьте осторожны, чтобы не вызвать сердечный приступ." icon_state = "penthrite" /datum/reagent/medicine/adv_lava_extract/on_mob_add(mob/living/carbon/human/user) @@ -1586,18 +1609,18 @@ var/update_flags = STATUS_UPDATE_NONE update_flags |= M.adjustOxyLoss(-3.5, FALSE) update_flags |= M.adjustToxLoss(-2.5, FALSE) - update_flags |= M.adjustBruteLoss(-3, FALSE) - update_flags |= M.adjustFireLoss(-3, FALSE) + update_flags |= M.adjustBruteLoss(-3, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-3, FALSE, affect_robotic = FALSE) if(prob(50)) M.AdjustLoseBreath(-2 SECONDS) M.SetConfused(0) M.SetSleeping(0) if(M.getFireLoss() > 35) - update_flags |= M.adjustFireLoss(-4, FALSE) + update_flags |= M.adjustFireLoss(-4, FALSE, affect_robotic = FALSE) if(M.health < 0) update_flags |= M.adjustToxLoss(-1, FALSE) - update_flags |= M.adjustBruteLoss(-1, FALSE) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, affect_robotic = FALSE) + update_flags |= M.adjustFireLoss(-1, FALSE, affect_robotic = FALSE) return ..() | update_flags /datum/reagent/medicine/adv_lava_extract/overdose_process(mob/living/M, severity) @@ -1618,3 +1641,19 @@ /datum/reagent/medicine/adv_lava_extract/on_mob_delete(mob/living/carbon/human/user) . = ..() user.clear_alert("penthrite") + +/datum/reagent/medicine/ashiezine + name = "Сироп Лаваленда" + id = "ashiezine" + description = "Странный реагент, найденный на Лазис Ардаксе. Судя по всему, он работает только на пеплоходцев." + reagent_state = LIQUID + color = "#f45555" + harmless = FALSE + taste_description = "потрохов" + can_synth = FALSE + +/datum/reagent/medicine/ashiezine/on_mob_life(mob/living/M) + if(isashwalker(M)) + M.reagents.add_reagent("epinephrine", 0.2) + M.reagents.add_reagent("heparin", 0,4) + return ..() diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index ff21df5e77a9..89aa08d81984 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -33,195 +33,185 @@ /datum/reagent/oxygen - name = "Oxygen" + name = "Кислород" id = "oxygen" - description = "A colorless, odorless gas." + description = "Бесцветный газ без запаха." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 taste_mult = 0 /datum/reagent/nitrogen - name = "Nitrogen" + name = "Азот" id = "nitrogen" - description = "A colorless, odorless, tasteless gas." + description = "Бесцветный газ без запаха и вкуса." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 taste_mult = 0 /datum/reagent/hydrogen - name = "Hydrogen" + name = "Водород" id = "hydrogen" - description = "A colorless, odorless, nonmetallic, tasteless, highly combustible diatomic gas." + description = "Бесцветный, без запаха, неметаллический, безвкусный, сильно горючий двухатомный газ." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 taste_mult = 0 /datum/reagent/potassium - name = "Potassium" + name = "Калий" id = "potassium" - description = "A soft, low-melting solid that can easily be cut with a knife. Reacts violently with water." + description = "Мягкий, легко плавящийся твердый материал, который легко режется ножом. Бурно реагирует с водой." reagent_state = SOLID color = "#A0A0A0" // rgb: 160, 160, 160 - taste_description = "bad ideas" + taste_description = "плохих мыслей" /datum/reagent/sulfur - name = "Sulfur" + name = "Сера" id = "sulfur" - description = "A chemical element." + description = "Химический элемент." reagent_state = SOLID color = "#BF8C00" // rgb: 191, 140, 0 - taste_description = "impulsive decisions" + taste_description = "импульсивных решений" /datum/reagent/sodium - name = "Sodium" + name = "Натрий" id = "sodium" - description = "A chemical element." + description = "Химический элемент." reagent_state = SOLID color = "#808080" // rgb: 128, 128, 128 - taste_description = "horrible misjudgement" + taste_description = "ужасных суждений" /datum/reagent/phosphorus - name = "Phosphorus" + name = "Фосфор" id = "phosphorus" - description = "A chemical element." + description = "Химический элемент." reagent_state = SOLID color = "#832828" // rgb: 131, 40, 40 - taste_description = "misguided choices" + taste_description = "неправильных выборов" /datum/reagent/carbon - name = "Carbon" + name = "Углерод" id = "carbon" - description = "A chemical element." + description = "Химический элемент." reagent_state = SOLID color = "#1C1300" // rgb: 30, 20, 0 - taste_description = "like a pencil or something" + taste_description = "пишущей части карандаша" /datum/reagent/carbon/reaction_turf(turf/T, volume) if(!(locate(/obj/effect/decal/cleanable/dirt) in T) && !isspaceturf(T)) // Only add one dirt per turf. Was causing people to crash. new /obj/effect/decal/cleanable/dirt(T) /datum/reagent/gold - name = "Gold" + name = "Золото" id = "gold" - description = "Gold is a dense, soft, shiny metal and the most malleable and ductile metal known." + description = "Золото - плотный, мягкий, блестящий металл, самый податливый и вязкий из всех известных металлов." reagent_state = SOLID color = "#F7C430" // rgb: 247, 196, 48 - taste_description = "bling" /datum/reagent/silver - name = "Silver" + name = "Серебро" id = "silver" - description = "A lustrous metallic element regarded as one of the precious metals." + description = "Блестящий металлический элемент, считающийся одним из драгоценных металлов." reagent_state = SOLID color = "#D0D0D0" // rgb: 208, 208, 208 - taste_description = "sub-par bling" - -/datum/reagent/silver/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) - if(M.has_bane(BANE_SILVER)) - M.reagents.add_reagent("toxin", volume) - . = ..() + taste_description = "серебра" /datum/reagent/aluminum - name = "Aluminum" + name = "Алюминий" id = "aluminum" - description = "A silvery white and ductile member of the boron group of chemical elements." + description = "Серебристо-белый и ковкий представитель группы химических элементов бора." reagent_state = SOLID color = "#A8A8A8" // rgb: 168, 168, 168 - taste_description = "metal" + taste_description = "алюминия" /datum/reagent/silicon - name = "Silicon" + name = "Кремний" id = "silicon" - description = "A tetravalent metalloid, silicon is less reactive than its chemical analog carbon." + description = "Являясь четырёхвалентным металлоидом, кремний менее реакционноспособен, чем его химический аналог углерод." reagent_state = SOLID color = "#A8A8A8" // rgb: 168, 168, 168 - taste_description = "a CPU" + taste_description = "микросхем" /datum/reagent/copper - name = "Copper" + name = "Медь" id = "copper" - description = "A highly ductile metal." + description = "Высокопластичный металл." color = "#6E3B08" // rgb: 110, 59, 8 - taste_description = "copper" + taste_description = "меди" /datum/reagent/chromium - name = "Chromium" + name = "Хром" id = "chromium" - description = "A catalytic chemical element." + description = "Каталитический химический элемент." color = "#DCDCDC" - taste_description = "bitterness" + taste_description = "горечи" /datum/reagent/iron - name = "Iron" + name = "Железо" id = "iron" - description = "Pure iron is a metal." + description = "Чистое железо - это металл." reagent_state = SOLID color = "#C8A5DC" // rgb: 200, 165, 220 - taste_description = "metal" + taste_description = "железа" /datum/reagent/iron/on_mob_life(mob/living/M) if(ishuman(M)) var/mob/living/carbon/human/H = M if(!HAS_TRAIT(H, TRAIT_NO_BLOOD) && !HAS_TRAIT(H, TRAIT_NO_BLOOD_RESTORE) && H.blood_volume < BLOOD_VOLUME_NORMAL) - H.blood_volume += 0.8 - return ..() + H.AdjustBlood(0.8) -/datum/reagent/iron/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) - if(M.has_bane(BANE_IRON) && holder && holder.chem_temp < 150) //If the target is weak to cold iron, then poison them. - M.reagents.add_reagent("toxin", volume) - ..() + return ..() //foam /datum/reagent/fluorosurfactant - name = "Fluorosurfactant" + name = "Фтортензид" id = "fluorosurfactant" - description = "A perfluoronated sulfonic acid that forms a foam when mixed with water." + description = "Перфторированная сульфоновая кислота, образующая пену при смешивании с водой." reagent_state = LIQUID color = "#9E6B38" // rgb: 158, 107, 56 - taste_description = "extreme discomfort" + taste_description = "сильного дискомфорта" // metal foaming agent // this is lithium hydride. Add other recipies (e.g. LiH + H2O -> LiOH + H2) eventually /datum/reagent/ammonia - name = "Ammonia" + name = "Аммиак" id = "ammonia" - description = "A caustic substance commonly used in fertilizer or household cleaners." + description = "Едкое вещество, обычно используемое в удобрениях или бытовых чистящих средствах." reagent_state = GAS color = "#404030" // rgb: 64, 64, 48 - taste_description = "floor cleaner" + taste_description = "средства для мытья полов" /datum/reagent/diethylamine - name = "Diethylamine" + name = "Диэтиламин" id = "diethylamine" - description = "A secondary amine, useful as a plant nutrient and as building block for other compounds." + description = "Вторичный амин, полезный в качестве питательного вещества для растений и строительного блока для других соединений." reagent_state = LIQUID color = "#322D00" - taste_description = "iron" + taste_description = "железа" /datum/reagent/oil - name = "Oil" + name = "Масло" id = "oil" - description = "A decent lubricant for machines. High in benzene, naptha and other hydrocarbons." + description = "Достойная смазка для машин. С высоким содержанием бензола, нафты и других углеводородов." reagent_state = LIQUID color = "#3C3C3C" - taste_description = "motor oil" + taste_description = "моторного масла" process_flags = ORGANIC | SYNTHETIC /datum/reagent/oil/reaction_temperature(exposed_temperature, exposed_volume) if(exposed_temperature > T0C + 600) var/turf/T = get_turf(holder.my_atom) - holder.my_atom.visible_message("The oil burns!") + holder.my_atom.visible_message("Масло горит!") var/datum/reagents/old_holder = holder fire_flash_log(holder, id) if(holder) holder.del_reagent(id) // Remove first. Else fireflash triggers a reaction again fireflash(T, min(max(0, volume / 40), 8)) - var/datum/effect_system/smoke_spread/bad/BS = new - BS.set_up(1, 0, T) - BS.start() + var/datum/effect_system/fluid_spread/smoke/bad/smoke = new + smoke.set_up(amount = 1, location = T) + smoke.start() if(!QDELETED(old_holder)) old_holder.add_reagent("ash", round(volume * 0.5)) @@ -230,20 +220,20 @@ new /obj/effect/decal/cleanable/blood/oil(T) /datum/reagent/iodine - name = "Iodine" + name = "Йод" id = "iodine" - description = "A purple gaseous element." + description = "Газообразный элемент фиолетового цвета." reagent_state = GAS color = "#493062" - taste_description = "chemtrail resistance" + taste_description = "сопротивления химтрейлам" /datum/reagent/carpet - name = "Carpet" + name = "Ковёр" id = "carpet" - description = "A covering of thick fabric used on floors. This type looks particularly gross." + description = "Покрытие из плотной ткани, используемое для полов. Этот тип выглядит особенно отвратительно." reagent_state = LIQUID color = "#701345" - taste_description = "a carpet...what?" + taste_description = "старого ковра" /datum/reagent/carpet/reaction_turf(turf/simulated/T, volume) if(istype(T, /turf/simulated/floor/plating) || istype(T, /turf/simulated/floor/plasteel)) @@ -252,36 +242,36 @@ ..() /datum/reagent/bromine - name = "Bromine" + name = "Бром" id = "bromine" - description = "A red-brown liquid element." + description = "Красно-коричневый жидкий элемент." reagent_state = LIQUID color = "#4E3A3A" - taste_description = "chemicals" + taste_description = "химикатов" /datum/reagent/phenol - name = "Phenol" + name = "Фенол" id = "phenol" - description = "Also known as carbolic acid, this is a useful building block in organic chemistry." + description = "Известная также как карболовая кислота, она является полезным строительным блоком в органической химии." reagent_state = LIQUID color = "#525050" - taste_description = "acid" + taste_description = "кислоты" /datum/reagent/ash - name = "Ash" + name = "Пепел" id = "ash" - description = "Ashes to ashes, dust to dust." + description = "Пепел к пеплу, прах к праху." reagent_state = LIQUID color = "#191919" - taste_description = "ash" + taste_description = "пепла" /datum/reagent/acetone - name = "Acetone" + name = "Ацетон" id = "acetone" - description = "Pure 100% nail polish remover, also works as an industrial solvent." + description = "Чистая 100% жидкость для снятия лака с ногтей, также работает как промышленный растворитель." reagent_state = LIQUID color = "#474747" - taste_description = "nail polish remover" + taste_description = "средства для снятия лака с ногтей" /datum/reagent/acetone/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -289,20 +279,20 @@ return ..() | update_flags /datum/reagent/saltpetre - name = "Saltpetre" + name = "Селитра" id = "saltpetre" - description = "Volatile." + description = "Летучий химический элемент." reagent_state = LIQUID color = "#60A584" // rgb: 96, 165, 132 - taste_description = "one third of an explosion" + taste_description = "одной трети взрыва" /datum/reagent/colorful_reagent - name = "Colorful Reagent" + name = "Цветной реагент" id = "colorful_reagent" - description = "It's pure liquid colors. That's a thing now." + description = "Это чистые жидкие краски. Сейчас это в порядке вещей." reagent_state = LIQUID color = "#FFFFFF" - taste_description = "the rainbow" + taste_description = "радуги" /datum/reagent/colorful_reagent/on_mob_life(mob/living/M) if(ishuman(M)) @@ -323,12 +313,12 @@ T.color = pick(GLOB.random_color_list) /datum/reagent/hair_dye - name = "Quantum Hair Dye" + name = "Квантовая краска для волос" id = "hair_dye" - description = "A rather tubular and gnarly way of coloring totally bodacious hair. Duuuudddeee." + description = "Довольно громоздкий и нелепый способ окрашивания волос. Чуваааааак." reagent_state = LIQUID color = "#960096" - taste_description = "the 2559 Autumn release of the Le Jeune Homme catalogue for professional hairdressers" + taste_description = "осеннего выпуска каталога Le Jeune Homme для профессиональных парикмахеров от 2559 года" /datum/reagent/hair_dye/reaction_mob(mob/living/M, volume) if(ishuman(M)) @@ -343,32 +333,32 @@ ..() /datum/reagent/hairgrownium - name = "Hairgrownium" + name = "Власорост" id = "hairgrownium" - description = "A mysterious chemical purported to help grow hair. Often found on late-night TV infomercials." + description = "Таинственное химическое вещество, якобы помогающее отрастить волосы. Часто встречается в рекламных роликах на телевидении." reagent_state = LIQUID color = "#5DDA5D" penetrates_skin = TRUE - taste_description = "someone's beard" + taste_description = "волос" /datum/reagent/hairgrownium/reaction_mob(mob/living/M, volume) if(ishuman(M)) var/mob/living/carbon/human/H = M var/obj/item/organ/external/head/head_organ = H.get_organ(BODY_ZONE_HEAD) - head_organ.h_style = random_hair_style(H.gender, head_organ.dna.species.name, H = H) + head_organ.h_style = random_hair_style(H.gender, head_organ.dna.species.name, human = H) head_organ.f_style = random_facial_hair_style(H.gender, head_organ.dna.species.name) H.update_hair() H.update_fhair() ..() /datum/reagent/super_hairgrownium - name = "Super Hairgrownium" + name = "Супер власорост" id = "super_hairgrownium" - description = "A mysterious and powerful chemical purported to cause rapid hair growth." + description = "Загадочное и мощное химическое вещество, якобы вызывающее быстрый рост волос." reagent_state = LIQUID color = "#5DD95D" penetrates_skin = TRUE - taste_description = "multiple beards" + taste_description = "кучи волос" /datum/reagent/super_hairgrownium/reaction_mob(mob/living/M, volume) if(ishuman(M)) @@ -380,7 +370,7 @@ if(head_organ.dna.species.name in tmp_hair_style.species_allowed) //If 'Very Long Hair' is a style the person's species can have, give it to them. head_organ.h_style = "Very Long Hair" else //Otherwise, give them a random hair style. - head_organ.h_style = random_hair_style(H.gender, head_organ.dna.species.name, H = H) + head_organ.h_style = random_hair_style(H.gender, head_organ.dna.species, human = H) if(head_organ.dna.species.name in tmp_facial_hair_style.species_allowed) //If 'Very Long Beard' is a style the person's species can have, give it to them. head_organ.f_style = "Very Long Beard" else //Otherwise, give them a random facial hair style. @@ -392,25 +382,25 @@ H.drop_item_ground(H.wear_mask, force = TRUE) var/obj/item/clothing/mask/fakemoustache = new /obj/item/clothing/mask/fakemoustache H.equip_to_slot(fakemoustache, ITEM_SLOT_MASK) - to_chat(H, "Hair bursts forth from your every follicle!") + to_chat(H, span_notice("Ваши волосы начинают стремительно расти!")) ..() /datum/reagent/hugs - name = "Pure hugs" + name = "Чистые объятия" id = "hugs" - description = "Hugs, in liquid form. Yes, the concept of a hug. As a liquid. This makes sense in the future." + description = "Объятия в жидком виде. Да, концепция объятий. В жидком виде. Это имеет смысл в будущем." reagent_state = LIQUID color = "#FF97B9" - taste_description = "hugs" + taste_description = "обнимашек" /datum/reagent/love - name = "Pure love" + name = "Чистая любовь" id = "love" - description = "What is this emotion you humans call \"love?\" Oh, it's this? This is it? Huh, well okay then, thanks." + description = "Что это за чувство, которое вы, люди, называете \"любовью\"? О, это оно? Это оно? Ха, ну тогда ладно, спасибо." reagent_state = LIQUID color = "#FF83A5" process_flags = ORGANIC | SYNTHETIC // That's the power of love~ - taste_description = "love" + taste_description = "любви" /datum/reagent/love/on_mob_add(mob/living/L) ..() @@ -420,8 +410,8 @@ /datum/reagent/love/on_mob_life(mob/living/M) if(prob(8)) - var/lovely_phrase = pick("appreciated", "loved", "pretty good", "really nice", "pretty happy with yourself, even though things haven't always gone as well as they could") - to_chat(M, "You feel [lovely_phrase].") + var/lovely_phrase = pick("оценивают по достоинству", "любят", "ценят", "уважают", "признают") + to_chat(M, span_notice("Вы чувствуете, что вас [lovely_phrase].")) else if(!M.incapacitated() && !HAS_TRAIT(M, TRAIT_HANDS_BLOCKED)) for(var/mob/living/carbon/C in orange(1, M)) @@ -438,14 +428,14 @@ ..() /datum/reagent/love/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) - to_chat(M, "You feel loved!") + to_chat(M, span_notice("Вы чувствуете, что вас любят!")) /datum/reagent/jestosterone //Formerly known as Nitrogen tungstide hypochlorite before NT fired the chemists for trying to be funny - name = "Jestosterone" + name = "Шутостерон" id = "jestosterone" - description = "Jestosterone is an odd chemical compound that induces a variety of annoying side-effects in the average person. It also causes mild intoxication, and is toxic to mimes." + description = "Джестостерон - странное химическое соединение, вызывающее у обычного человека целый ряд раздражающих побочных эффектов. Он также вызывает лёгкое опьянение и токсичен для мимов." color = "#ff00ff" //Fuchsia, pity we can't do rainbow here - taste_description = "a funny flavour" + taste_description = "смеха и шуток" var/datum/component/squeak /datum/reagent/jestosterone/on_new() @@ -455,12 +445,12 @@ return if(C.mind) if(C.mind.assigned_role == JOB_TITLE_CLOWN || C.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD) - to_chat(C, "Whatever that was, it feels great!") + to_chat(C, span_notice("Что бы это ни было, ощущения великолепные!")) else if(C.mind.assigned_role == JOB_TITLE_MIME) - to_chat(C, "You feel nauseous.") + to_chat(C, span_warning("Вы чувствете тошноту.")) C.AdjustDizzy(volume STATUS_EFFECT_CONSTANT) else - to_chat(C, "Something doesn't feel right...") + to_chat(C, span_warning("Вы чувствуете себя странно и дискомфортно.")) C.AdjustDizzy(volume STATUS_EFFECT_CONSTANT) ADD_TRAIT(C, TRAIT_JESTER, id) squeak = C.AddComponent(/datum/component/squeak, null, null, null, null, null, TRUE, falloff_exponent = 20) @@ -473,25 +463,25 @@ if(prob(10)) M.emote("giggle") if(M?.mind.assigned_role == JOB_TITLE_CLOWN || M?.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD) - update_flags |= M.adjustBruteLoss(-0.75) //Screw those pesky clown beatings! + update_flags |= M.adjustBruteLoss(-1.5, affect_robotic = FALSE) //Screw those pesky clown beatings! else M.AdjustDizzy(20 SECONDS, 0, 1000 SECONDS) M.Druggy(30 SECONDS) if(prob(10)) M.EyeBlurry(10 SECONDS) if(prob(6)) - var/list/clown_message = list("You feel light-headed.", - "You can't see straight.", - "You feel about as funny as the station clown.", - "Bright colours and rainbows cloud your vision.", - "Your funny bone aches.", - "What was that?!", - "You can hear bike horns in the distance.", - "You feel like SHOUTING!", - "Sinister laughter echoes in your ears.", - "Your legs feel like jelly.", - "You feel like telling a pun.") - to_chat(M, "[pick(clown_message)]") + var/list/clown_message = list("Вы чувствуете головокружение.", + "Вы не можете видеть прямо.", + "Вы чувствуете себя смешным клоуном.", + "Яркие цвета и радуга затуманивают ваше зрение.", + "Ваши смешные кости болят.", + "Что это было?!", + "Вы чувствуете приглушённые гудки в отдалении.", + "Вы слышите приглушённые смешки.", + "Зловещий смех отдаётся в ваших ушах.", + "Ваши ноги словно желе.", + "Вам хочется рассказать анекдот.") + to_chat(M, span_warning("[pick(clown_message)]")) if(M?.mind.assigned_role == JOB_TITLE_MIME) update_flags |= M.adjustToxLoss(0.75) return ..() | update_flags @@ -503,24 +493,24 @@ QDEL_NULL(squeak) /datum/reagent/royal_bee_jelly - name = "royal bee jelly" + name = "Маточное молочко" id = "royal_bee_jelly" - description = "Royal Bee Jelly, if injected into a Queen Space Bee said bee will split into two bees." + description = "Королевское маточное молочко. Если его ввести королеве космических пчёл, она размножится." color = "#00ff80" - taste_description = "sweetness" + taste_description = "сладости" /datum/reagent/royal_bee_jelly/on_mob_life(mob/living/M) if(prob(2)) - M.say(pick("Bzzz...","BZZ BZZ","Bzzzzzzzzzzz...")) + M.say(pick("Бзззз...","БЗЗ БЗЗ","Бззззззззз...")) return ..() /datum/reagent/growthserum - name = "Growth serum" + name = "Сыворотка роста" id = "growthserum" - description = "A commercial chemical designed to help older men in the bedroom." //not really it just makes you a giant + description = "Коммерческое химическое средство, призванное помочь пожилым мужчинам в спальне." //not really it just makes you a giant color = "#ff0000"//strong red. rgb 255, 0, 0 var/current_size = RESIZE_DEFAULT_SIZE - taste_description = "enhancement" + taste_description = "увеличения" /datum/reagent/growthserum/on_mob_life(mob/living/carbon/H) var/newsize = current_size @@ -546,11 +536,11 @@ ..() /datum/reagent/pax - name = "Pax" + name = "Пакс" id = "pax" - description = "A colorless liquid that suppresses violence in its subjects." + description = "Бесцветная жидкость, подавляющая тягу к насилию у гуманоидов." color = "#AAAAAA55" - taste_description = "water" + taste_description = "странной воды" metabolization_rate = 0.25 * REAGENTS_METABOLISM /datum/reagent/pax/on_mob_add(mob/living/M) @@ -562,27 +552,27 @@ ..() /datum/reagent/toxin/coffeepowder - name = "Coffee Grounds" + name = "Кофейная гуща" id = "coffeepowder" - description = "Finely ground Coffee beans, used to make coffee." + description = "Кофейные зерна мелкого помола, используемые для приготовления кофе." reagent_state = SOLID color = "#5B2E0D" // rgb: 91, 46, 13 - taste_description = "waste" + taste_description = "горькой кофейной массы" /datum/reagent/toxin/teapowder - name = "Ground Tea Leaves" + name = "Молотые чайные листья" id = "teapowder" - description = "Finely shredded Tea leaves, used for making tea." + description = "Мелко измельчённые чайные листья, используемые для приготовления чая." reagent_state = SOLID color = "#7F8400" // rgb: 127, 132, 0" - taste_description = "the future" + taste_description = "отдающей чаем массы" //////////////////////////////////Hydroponics stuff/////////////////////////////// /datum/reagent/plantnutriment - name = "Generic nutriment" + name = "Растительные питательные вещества" id = "plantnutriment" - description = "Some kind of nutriment. You can't really tell what it is. You should probably report it, along with how you obtained it." + description = "Какое-то питательное вещество. Невозможно определить, что это такое. Возможно, вам следует сообщить о нём и о том, как вы его получили, в соответствующие органы." color = "#000000" // RBG: 0, 0, 0 var/tox_prob = 0 taste_description = "puke" @@ -594,78 +584,79 @@ return ..() | update_flags /datum/reagent/plantnutriment/eznutriment - name = "E-Z-Nutrient" + name = "И-ЗИ-Нутриент" id = "eznutriment" - description = "Cheap and extremely common type of plant nutriment." + description = "Дешёвый и чрезвычайно распространенный вид растительных питательных веществ." color = "#376400" // RBG: 50, 100, 0 tox_prob = 10 - taste_description = "obscurity and toil" + taste_description = "безвестности и забытья" /datum/reagent/plantnutriment/left4zednutriment - name = "Left 4 Zed" + name = "Лефт-Фо-Зед" id = "left4zednutriment" - description = "Unstable nutriment that makes plants mutate more often than usual." + description = "Нестабильное соединение, заставляющее растения мутировать чаще, чем обычно." color = "#2A1680" // RBG: 42, 128, 22 tox_prob = 25 - taste_description = "evolution" + taste_description = "эволюции" /datum/reagent/plantnutriment/robustharvestnutriment - name = "Robust Harvest" + name = "Робаст-Харвест" id = "robustharvestnutriment" - description = "Very potent nutriment that prevents plants from mutating." + description = "Очень мощное питательное вещество, предотвращающее мутацию растений." color = "#9D9D00" // RBG: 157, 157, 0 tox_prob = 15 - taste_description = "bountifulness" + taste_description = "щедрости" ///Alchemical Reagents /datum/reagent/eyenewt - name = "Eye of newt" + name = "Глаз тритона" id = "eyenewt" - description = "A potent alchemic ingredient." + description = "Сильнодействующий алхимический ингредиент." reagent_state = LIQUID color = "#050519" + taste_description = "алхимии" /datum/reagent/toefrog - name = "Toe of frog" + name = "Палец лягушки" id = "toefrog" - description = "A potent alchemic ingredient." + description = "Сильнодействующий алхимический ингредиент." reagent_state = LIQUID color = "#092D09" - taste_description = "alchemy" + taste_description = "алхимии" /datum/reagent/woolbat - name = "Wool of bat" + name = "Шерсть летучей мыши" id = "woolbat" - description = "A potent alchemic ingredient." + description = "Сильнодействующий алхимический ингредиент." reagent_state = LIQUID color = "#080808" - taste_description = "alchemy" + taste_description = "алхимии" /datum/reagent/tonguedog - name = "Tongue of dog" + name = "Язык собаки" id = "tonguedog" - description = "A potent alchemic ingredient." + description = "Сильнодействующий алхимический ингредиент." reagent_state = LIQUID color = "#2D0909" - taste_description = "alchemy" + taste_description = "алхимии" /datum/reagent/triplepiss - name = "Triplepiss" + name = "Тройная моча" id = "triplepiss" - description = "Ewwwwwwwww." + description = "Уууууу." reagent_state = LIQUID color = "#857400" - taste_description = "alchemy" + taste_description = "алхимии" /datum/reagent/spraytan - name = "Spray Tan" + name = "Спрей-загар" id = "spraytan" - description = "A substance applied to the skin to darken the skin." + description = "Вещество, наносимое на кожу для ее потемнения и имитации загара." color = "#FFC080" // rgb: 255, 196, 128 Bright orange metabolization_rate = 10 * REAGENTS_METABOLISM // very fast, so it can be applied rapidly. But this changes on an overdose overdose_threshold = 11 //Slightly more than one un-nozzled spraybottle. - taste_description = "sour oranges" + taste_description = "кислых апельсинов" /datum/reagent/spraytan/reaction_mob(mob/living/M, method=REAGENT_TOUCH, reac_volume, show_message = 1) if(ishuman(M)) @@ -675,7 +666,7 @@ if(method == REAGENT_INGEST) if(show_message) - to_chat(M, "That tasted horrible.") + to_chat(M, span_notice("Это было отвратительно.")) ..() /datum/reagent/spraytan/overdose_process(mob/living/M) @@ -690,11 +681,18 @@ set_skin_color(N) if(prob(7)) if(N.w_uniform) - M.visible_message(pick("[M]'s collar pops up without warning.", "[M] flexes [M.p_their()] arms.")) + M.visible_message(span_notice(pick("Воротник [M] приподнимается без предупреждения.", "[M] игра[pluralize_ru(M.gender, "ет", "ют")] своими бицепсами."))) else - M.visible_message("[M] flexes [M.p_their()] arms.") + M.visible_message(span_notice("[M] игра[pluralize_ru(M.gender, "ет", "ют")] своими бицепсами.")) if(prob(10)) - M.say(pick("Shit was SO cash.", "You are everything bad in the world.", "What sports do you play, other than 'jack off to naked drawn Japanese people?'", "Don’t be a stranger. Just hit me with your best shot.", "My name is John and I hate every single one of you.")) + M.say(pick( + "Это было ПРОСТО ОХУИТЕЛЬНО.", + "Вы - зло этого мира.", + "А каким спортом вы занимаетесь кроме дрочки на голых анимешных тянок?", + "Не стесняйтесь, покажите мне на что вы способны.", + "Меня зовут Джон и я всех вас ненавижу.", + "Вы жирные, тупые уроды без личной жизни.", + "Вы самые настоящие пидорасы, которым следует убить себя. Спасибо за внимание.")) return list(0, STATUS_UPDATE_NONE) @@ -706,14 +704,28 @@ H.change_skin_color("#9B7653") /datum/reagent/monkeylanguage - name = "Moenky Language" + name = "Обезьяний язык" id = "monkeylanguage" - description = "Strange reagent" + description = "Эээ..." reagent_state = SOLID color = "#f0d18f" // rgb: 128, 128, 128 - taste_description = "Strange" + taste_description = "чего-то странного" /datum/reagent/monkeylanguage/on_mob_life(mob/living/M) if(volume > 4) M.add_language(LANGUAGE_MONKEY_HUMAN) return ..() + +/datum/reagent/bugmilk + name = "Пепельное молоко" + id = "bugmilk" + description = "Молочная субстанция, вырабатываемая некоторыми видами на Лазис Ардакс. Весьма вкусное." + reagent_state = LIQUID + color = "#e4dac5" + taste_description = "густого молока" + metabolization_rate = 2 * REAGENTS_METABOLISM + +/datum/reagent/bugmilk/on_mob_life(mob/living/M) + M.reagents.add_reagent("cream", 0.4) + M.reagents.add_reagent("salglu_solution", 0,4) + return ..() diff --git a/code/modules/reagents/chemistry/reagents/ninja.dm b/code/modules/reagents/chemistry/reagents/ninja.dm index 0775e13e05ba..8e01e27bdd68 100644 --- a/code/modules/reagents/chemistry/reagents/ninja.dm +++ b/code/modules/reagents/chemistry/reagents/ninja.dm @@ -11,16 +11,16 @@ * For the last chance to survive. */ /datum/reagent/medicine/chiyurizine - name = "Chiyurizine" + name = "Чиюризин" id = "chiyurizine" - description = "A powerfull yet experimental compound that recovers any damage by revinding it's tissues in time. But it can cause rapid aging... if it's used too much." + description = "Мощный экспериментальный состав, способный стремительно восстановить ткани после широкого спектра повреждений. Частое использование приводит к быстрому старению. Очень быстрому." reagent_state = LIQUID color = "#55ff63" can_synth = FALSE metabolization_rate = 0.25 * REAGENTS_METABOLISM harmless = FALSE overdose_threshold = 30 - taste_description = "time" + taste_description = "неумолимого течения времени" var/turf/last_random_turf //For overdose teleports var/can_work = FALSE //Can metabolise only if it was added in a dose equal to overdose_threshold-5 or more var/obj/effect/temp_visual/ninja_rend/rend = null//Unharmfull trap for playing with time @@ -44,15 +44,15 @@ switch(current_cycle) if(1 to 20) if(prob(10)) - to_chat(our_mob, span_notice("You feel like what's been lost in time comes back to you!")) + to_chat(our_mob, span_notice("Вы чувствуете, будто бы время оборачивается вспять!")) our_mob.emote("giggle") // Anti-Drunk our_mob.SetSlur(0) our_mob.AdjustDrunk(-8 SECONDS) our_mob.reagents.remove_all_type(/datum/reagent/consumable/ethanol, 8, 0, 1) //Basic damage types - update_flags |= our_mob.adjustBruteLoss(-5, FALSE) - update_flags |= our_mob.adjustFireLoss(-5, FALSE) + update_flags |= our_mob.adjustBruteLoss(-5, FALSE, affect_robotic = FALSE) + update_flags |= our_mob.adjustFireLoss(-5, FALSE, affect_robotic = FALSE) update_flags |= our_mob.adjustOxyLoss(-5, FALSE) update_flags |= our_mob.adjustToxLoss(-5, FALSE) //Eyes and ears @@ -70,11 +70,11 @@ if(ishuman(our_mob)) var/mob/living/carbon/human/mob_human = our_mob if(prob(10)) - to_chat(mob_human, span_notice("You feel a powerfull gush inside self, when your body slowly heals...")) + to_chat(mob_human, span_notice("Вы чувствуете мощный прилив сил, а ваше тело начинает стремительно исцеляться.")) mob_human.Jitter(40 SECONDS) // Regrow limbs if(current_cycle == 30) - to_chat(mob_human, span_notice("Your body refreshes...")) + to_chat(mob_human, span_notice("Ваше тело восстанавливается...")) mob_human.check_and_regenerate_organs() // Embedded objects mob_human.remove_all_embedded_objects() @@ -111,11 +111,11 @@ var/mob/living/carbon/human/mob_human = our_mob if(mob_human.age > 20 && prob(50)) if(!overdosed) - to_chat(mob_human, span_notice("You feel yourself becoming younger!")) + to_chat(mob_human, span_notice("Вы чувствуете себя моложе чем были!")) mob_human.age-- if(prob(1)) // A very little chance to start the healing process again. current_cycle = 1 - to_chat(mob_human, span_notice("You get the feeling that the reagent inside you rewinds... itself?")) + to_chat(mob_human, span_notice("У вас возникает ощущение, что вещество внутри вас обновляет... себя?")) return ..() | update_flags /datum/reagent/medicine/chiyurizine/overdose_process(mob/living/our_mob, severity) @@ -125,31 +125,31 @@ if(mob_human.age >= 100)//Critical age. You either die, or get a last chance to live. mob_human.adjustOxyLoss(10, FALSE) var/fate = roll("1d6") - to_chat(mob_human, span_boldwarning("You feel like you are throwing six sided dice with death itself!")) + to_chat(mob_human, span_boldwarning("Вам кажется, что вы играете в кости с самой смертью!")) switch(fate) if(1) mob_human.age = 99 mob_human.adjustOxyLoss(500, FALSE) volume = 0.2 - to_chat(mob_human, span_boldwarning("Natural one! You are suffocating...")) + to_chat(mob_human, span_boldwarning("Две единицы! Вам становится трудно дышать...")) if(2 to 4) - to_chat(mob_human, span_boldwarning("Uncertain fate... Reroll...")) + to_chat(mob_human, span_boldwarning("Ваша судьба не определена... Ещё бросок...")) if(6) mob_human.age = 90 current_cycle = 1 volume = 5 - to_chat(mob_human, span_boldwarning("Natural six! You got a chance to live...")) + to_chat(mob_human, span_boldwarning("Две шестёрки! Похоже, в этот раз смерть обошла вас стороной.")) if(mob_human.age >= 50) mob_human.change_hair_color(colour = "#ffffff") mob_human.change_hair_gradient(color = "#808080") if(prob(clamp(100-mob_human.age, 10, 100))) - to_chat(our_mob, span_warning("You age rapidly!")) + to_chat(our_mob, span_warning("Вы стремительно стареете!")) mob_human.age = mob_human.age + pick(1,2,3) if(prob(50)) if(prob(25)) - var/phrase = pick("Your back pain is killing you!", "You feel sooo tired...", - "Existence is pain!", "You are slowly dying...", - "Fuck...", "Your fingers are so thin...") + var/phrase = pick("Боль в спине убивает вас!", "Вы так устали...", + "Существование - это боль!", "Вы медленно умираешь...", + "Чёрт...", "У вас такие тонкие пальцы...") to_chat(our_mob, span_warning(phrase)) mob_human.emote("moan") mob_human.adjustBruteLoss(0.5, FALSE) @@ -158,7 +158,7 @@ mob_human.Confused(20 SECONDS) mob_human.EyeBlurry(4 SECONDS) if(prob(10) && last_random_turf && istype(mob_human.loc, /turf) && !rend) - mob_human.visible_message(span_info("[mob_human] vanished!"), span_warning("You phased somewhere familiar...")) + mob_human.visible_message(span_info("[mob_human] vanished!"), span_warning("Вы переместились в знакомое место...")) new /obj/effect/temp_visual/gravpush(get_turf(mob_human)) playsound(get_turf(mob_human), 'sound/magic/timeparadox2.ogg', 100, 1, -1) mob_human.forceMove(last_random_turf) diff --git a/code/modules/reagents/chemistry/reagents/paint.dm b/code/modules/reagents/chemistry/reagents/paint.dm index f9a5717f105f..ec1dd3867b2f 100644 --- a/code/modules/reagents/chemistry/reagents/paint.dm +++ b/code/modules/reagents/chemistry/reagents/paint.dm @@ -1,10 +1,10 @@ /datum/reagent/paint - name = "Paint" + name = "Краска" id = "paint_" - description = "Floor paint is used to color floor tiles." + description = "Краска, используемая для покраски полов." reagent_state = LIQUID color = "#808080" - taste_description = "paint" + taste_description = "краски" /datum/reagent/paint/reaction_turf(turf/T, volume) if(!isspaceturf(T)) @@ -15,47 +15,47 @@ O.add_atom_colour(color, WASHABLE_COLOUR_PRIORITY) /datum/reagent/paint/red - name = "Red Paint" + name = "Красная краска" id = "paint_red" color = "#FF0000" /datum/reagent/paint/green - name = "Green Paint" + name = "Зелёная краска" id = "paint_green" color = "#00FF00" /datum/reagent/paint/blue - name = "Blue Paint" + name = "Синяя краска" id = "paint_blue" color = "#0000FF" /datum/reagent/paint/yellow - name = "Yellow Paint" + name = "Жёлтая краска" id = "paint_yellow" color = "#FFFF00" /datum/reagent/paint/violet - name = "Violet Paint" + name = "Фиолетовая краска" id = "paint_violet" color = "#FF00FF" /datum/reagent/paint/black - name = "Black Paint" + name = "Чёрная краска" id = "paint_black" color = "#333333" /datum/reagent/paint/white - name = "White Paint" + name = "Белая краска" id = "paint_white" color = "#FFFFFF" /datum/reagent/paint_remover - name = "Paint Remover" + name = "Средство для удаления краски" id = "paint_remover" - description = "Paint remover is used to remove floor paint from floor tiles." + description = "Вещество, используемое для удаления краски с пола." reagent_state = LIQUID color = "#808080" - taste_description = "alcohol" + taste_description = "спирта" /datum/reagent/paint_remover/reaction_turf(turf/T, volume) if(!isspaceturf(T)) diff --git a/code/modules/reagents/chemistry/reagents/paradise_pop.dm b/code/modules/reagents/chemistry/reagents/paradise_pop.dm index fdf6d3587796..d18a5464df72 100644 --- a/code/modules/reagents/chemistry/reagents/paradise_pop.dm +++ b/code/modules/reagents/chemistry/reagents/paradise_pop.dm @@ -10,7 +10,7 @@ //Райский удар: Без эффекта, aside from maybe messages about how tasty it is or something /datum/reagent/consumable/drink/paradise_punch - name = "Райский удар" + name = "Райский Удар" id = "paradise_punch" description = "На вкус именно таков, каким вы себе представляете вкус рая, если бы его можно было разлить по бутылкам." reagent_state = LIQUID @@ -19,7 +19,7 @@ //Яблопокалипсис: Low chance to cause a goonchem vortex that pulls things within a very small radius (2 tiles?) towards the drinker /datum/reagent/consumable/drink/apple_pocalypse - name = "Яблопокалипсис" + name = "Яблокопокалипсис" id = "apple-pocalypse" description = "Если бы судный день имел форму фрукта, скорее всего это было бы яблоко." reagent_state = LIQUID @@ -30,12 +30,12 @@ if(prob(1)) var/turf/simulated/T = get_turf(M) goonchem_vortex(T, 1, 0) - to_chat(M, "Вы на мгновение чувствуете себя сверхтяжёлым, как чёрная дыра. Возможно, это просто ваше воображение...") + to_chat(M, span_notice("Вы на мгновение чувствуете себя сверхтяжёлым, как чёрная дыра. Возможно, это просто ваше воображение...")) return ..() //Забаненный плод: This one is tasty and safe to drink, might have a low chance of healing a random damage type? /datum/reagent/consumable/drink/berry_banned - name = "Забаненный плод" + name = "Забаненный Плод" id = "berry_banned" description = "Причина бана: исключительный вкус." reagent_state = LIQUID @@ -48,9 +48,9 @@ var/heal_type = rand(0, 5) //still prefer the string version switch(heal_type) if(0) - update_flags |= M.adjustBruteLoss(-0.25, FALSE) + update_flags |= M.adjustBruteLoss(-0.25, FALSE, affect_robotic = FALSE) if(1) - update_flags |= M.adjustFireLoss(-0.25, FALSE) + update_flags |= M.adjustFireLoss(-0.25, FALSE, affect_robotic = FALSE) if(2) update_flags |= M.adjustToxLoss(-0.25, FALSE) if(3) @@ -59,12 +59,12 @@ update_flags |= M.adjustCloneLoss(-0.25, FALSE) if(5) update_flags |= M.adjustBrainLoss(-0.5, FALSE) - to_chat(M, "Вы чувствуете себя слегка помолодевшим!") + to_chat(M, span_notice("Вы чувствуете себя слегка помолодевшим!")) return ..() | update_flags //Забаненный плод 2: Очень вкусный и токсичный. Наносит урон токсинами и, ВОЗМОЖНО, проигрывает звук "Бьёньк!", убивая кого-то? /datum/reagent/consumable/drink/berry_banned2 - name = "Забаненный плод" + name = "Забаненный Плод" id = "berry_banned2" description = "Причина бана: исключительный вкус." reagent_state = LIQUID @@ -76,22 +76,22 @@ if(prob(50)) update_flags |= M.adjustToxLoss(1, FALSE) //double strength of poison berry juice alone, because it's concentrated (this is equal to the damage of normal toxin, less often) if(prob(10)) - to_chat(M, "Вы чувствуете себя слегка помолодевшим!") //meta this! + to_chat(M, span_notice("Вы чувствуете себя слегка помолодевшим!")) //meta this! return ..() | update_flags /datum/reagent/consumable/drink/berry_banned2/on_mob_death(mob/living/M) M << sound('sound/effects/adminhelp.ogg',0,1,0,25) - to_chat(M, chat_box_red("PM from-Administrator: BWOINK!")) + to_chat(M, chat_box_red(span_adminhelp("PM from-Administrator: ТЫ ЗАБАНЕН БЛЯДЬ!!!"))) ..() -//Черноглазое варево: Шанс заставить пьющего говорить грейтайдовые фразы, типа "Я думал что клоун был настоящим!" +//Blackeye Brew: Chance to make the drinker say greytider-themed things like "ГРЕЙТАЙД ВПЕРЁД!" /datum/reagent/consumable/drink/blackeye_brew - name = "Черноглазое варево" + name = "Черноглазое Варево" id = "blackeye_brew" - description = "Сливочный, мягкий вкус, прямо как у лысин толпы ассистентов. Предположительно, выдерживался около 30 лет." + description = "Сливочный, мягкий вкус, прямо как у лысины ассистента. Предположительно, выдерживался около 30 лет. При употреблении вызывает помутнение в сознании употребившего, заставляя его выкрикивать странные фразы." reagent_state = LIQUID color = "#4d2600" - taste_description = "серой волны" + taste_description = "набегаторства" /datum/reagent/consumable/drink/blackeye_brew/on_mob_life(mob/living/M) if(prob(25)) @@ -109,31 +109,31 @@ //Grape Granade: causes the drinker to sometimes burp, has a low chance to cause a goonchem vortex that pushes things within a very small radius (1-2 tiles) away from the drinker /datum/reagent/consumable/drink/grape_granade - name = "Гранатовый взрыв" + name = "Гранатовый Взрыв" id = "grape_granade" description = "Взрывной гранатовый вкус, любимый сотрудниками ОБР по всей системе." reagent_state = LIQUID color = "#9933ff" - taste_description = "дедов" + taste_description = "атомного взрыва" /datum/reagent/consumable/drink/grape_granade/on_mob_life(mob/living/M) if(prob(1)) var/turf/simulated/T = get_turf(M) goonchem_vortex(T, 0, 0) M.emote("burp") - to_chat(M, "Вы чувствуете, что готовы взорваться! А, нет, это просто отрыжка…") + to_chat(M, span_notice("Вы чувствуете, что готовы взорваться! А, нет, это просто отрыжка...")) else if(prob(25)) M.emote("burp") return ..() //Meteor Malt: Sometimes causes screen shakes for the drinker like a meteor impact, low chance to add 1-5 units of a random mineral reagent to the drinker's blood (iron, copper, silver, gold, uranium, carbon, etc) /datum/reagent/consumable/drink/meteor_malt - name = "Метеорный солод" + name = "Метеорный Солод" id = "meteor_malt" description = "Зафиксировано движение безалкогольных напитков на встречном с вашими вкусовыми рецепторами курсе." reagent_state = LIQUID color = "#cc9900" - taste_description = "летающих космических скал" + taste_description = "летающих космических камней" /datum/reagent/consumable/drink/meteor_malt/on_mob_life(mob/living/M) if(prob(25)) @@ -146,15 +146,15 @@ return ..() /datum/reagent/consumable/ethanol/moonlight_skuma - name = "Moon'drin" + name = "Мун'дрин" id = "moonlight_skuma" - description = "Double distilled Moon'lin. Soft mint taste which is loved by all tajarans. Used in cocktails." + description = "Мун'лин двойной дистилляции. Мягкий мятный вкус, который любят все таяры. Используется в коктейлях." reagent_state = LIQUID color = "#6734df" - taste_description = "alcohol, mint and you feel funny" + taste_description = "алкоголя и мяты" drink_icon = "moonlight_skuma" - drink_name = "Moon'drin" - drink_desc = "Double distilled Moon'lin. Soft mint taste which is loved by all tajarans. Used in cocktails." + drink_name = "Мун'дрин" + drink_desc = "Мун'лин двойной дистилляции. Мягкий мятный вкус, который любят все таяры. Используется в коктейлях." addiction_chance = 2 alcohol_perc = 0.5 @@ -168,5 +168,5 @@ if(prob(5)) M.Jitter(10 SECONDS) M.emote("smile") - to_chat(M, "Вы испытываете приятные, теплые чувства, словно вы дома...") + to_chat(M, span_notice("Вы испытываете приятные, тёплые чувства, словно вы дома...")) return ..() | update_flags diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic.dm index 7fdd61bcdc52..3cce2e34dd7b 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic.dm @@ -1,11 +1,11 @@ /datum/reagent/phlogiston - name = "phlogiston" + name = "Флогистон" id = "phlogiston" - description = "It appears to be liquid fire." + description = "Похоже, это жидкий огонь." reagent_state = LIQUID color = "#FFAF00" process_flags = ORGANIC | SYNTHETIC - taste_description = "burning" + taste_description = "огня" var/temp_fire = 4000 var/temp_deviance = 1000 var/size_divisor = 40 @@ -25,7 +25,7 @@ M.IgniteMob() if(method == REAGENT_INGEST) M.adjustFireLoss(min(max(10, volume * 2), 45)) - to_chat(M, "It burns!") + to_chat(M, span_warning("Жжётся!")) M.emote("scream") /datum/reagent/phlogiston/on_mob_life(mob/living/M) @@ -36,22 +36,22 @@ return ..() /datum/reagent/phlogiston/firedust - name = "phlogiston dust" + name = "Флогистоновая пыль" id = "phlogiston_dust" - description = "And this is solid fire. However that works." + description = "А это - твёрдый огонь. Как бы то ни было, это работает." temp_fire = 1500 temp_deviance = 500 size_divisor = 80 mob_burning = 3 // 15 /datum/reagent/napalm - name = "napalm" + name = "Напалм" id = "napalm" - description = "A highly flammable jellied fuel." + description = "Легковоспламеняющееся желеобразное топливо." reagent_state = LIQUID process_flags = ORGANIC | SYNTHETIC color = "#C86432" - taste_description = "burning" + taste_description = "горения" /datum/reagent/napalm/reaction_temperature(exposed_temperature, exposed_volume) if(exposed_temperature > T0C + 100) @@ -81,14 +81,14 @@ return ..() /datum/reagent/fuel - name = "Welding fuel" + name = "Сварочное топливо" id = "fuel" - description = "A highly flammable blend of basic hydrocarbons, mostly Acetylene. Useful for both welding and organic chemistry, and can be fortified into a heavier oil." + description = "Легковоспламеняющаяся смесь основных углеводородов, в основном ацетилена. Используется как для сварки, так и для органической химии, может быть переработано в более тяжёлое масло." reagent_state = LIQUID color = "#060606" drink_icon = "dr_gibb_glass" - drink_name = "Glass of welder fuel" - drink_desc = "Unless you are an industrial tool, this is probably not safe for consumption." + drink_name = "стакан сварочного топлива" + drink_desc = "Если вы не являетесь промышленным инструментом, это, вероятно, небезопасно для употребления. Хотя ассистенты любят такое пить." taste_description = "mistakes" process_flags = ORGANIC | SYNTHETIC var/max_radius = 7 @@ -117,7 +117,7 @@ var/will_explode = volume >= explosion_threshold if(will_explode && holder.my_atom) // Log beforehand - holder.my_atom.visible_message("[holder.my_atom] explodes!") + holder.my_atom.visible_message(span_danger("[capitalize(holder.my_atom.declent_ru(NOMINATIVE))] взрывается!")) message_admins("Fuel explosion ([holder.my_atom], reagent type: [id]) at [COORD(holder.my_atom.loc)]. Last touched by: [holder.my_atom.fingerprintslast ? "[holder.my_atom.fingerprintslast]" : "*null*"].") add_game_logs("Fuel explosion ([holder.my_atom], reagent type: [id]) at [COORD(holder.my_atom.loc)]. Last touched by: [holder.my_atom.fingerprintslast ? "[holder.my_atom.fingerprintslast]" : "*null*"].") holder.my_atom.investigate_log("A fuel explosion, last touched by [holder.my_atom.fingerprintslast ? "[holder.my_atom.fingerprintslast]" : "*null*"], triggered at [COORD(holder.my_atom.loc)].", INVESTIGATE_BOMB) @@ -145,12 +145,12 @@ M.adjust_fire_stacks(6) /datum/reagent/plasma - name = "Plasma" + name = "Плазма" id = "plasma" - description = "The liquid phase of an unusual extraterrestrial compound." + description = "Жидкая форма необычного внеземного соединения." reagent_state = LIQUID color = "#7A2B94" - taste_description = "corporate assets going to waste" + taste_description = "пропадающих зря корпоративных активов" taste_mult = 1.5 /datum/reagent/plasma/reaction_temperature(exposed_temperature, exposed_volume) @@ -178,13 +178,13 @@ /datum/reagent/thermite - name = "Thermite" + name = "Термит" id = "thermite" - description = "Thermite produces an aluminothermic reaction known as a thermite reaction. Can be used to melt walls." + description = "Термит вызывает алюминотермическую реакцию, известную как термитная реакция. Может использоваться для плавления замков. Или стен." reagent_state = SOLID color = "#673910" // rgb: 103, 57, 16 process_flags = ORGANIC | SYNTHETIC - taste_description = "rust" + taste_description = "ржавчины" /datum/reagent/thermite/reaction_mob(mob/living/M, method= REAGENT_TOUCH, volume) if(method == REAGENT_TOUCH) @@ -215,25 +215,25 @@ S.reagents.temperature_reagents(S.active_hotspot.temperature, 10, 300) /datum/reagent/glycerol - name = "Glycerol" + name = "Глицерин" id = "glycerol" - description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity." + description = "Глицерин - это простое полиольное соединение. Глицерин обладает сладким вкусом и низкой токсичностью." reagent_state = LIQUID color = "#808080" // rgb: 128, 128, 128 - taste_description = "sweetness" + taste_description = "сладости" /datum/reagent/stabilizing_agent - name = "Stabilizing Agent" + name = "Стабилизирующий агент" id = "stabilizing_agent" - description = "A chemical that stabilises normally volatile compounds, preventing them from reacting immediately." + description = "Химикат, который стабилизирует обычно летучие соединения, не позволяя им немедленно вступать в реакцию." reagent_state = LIQUID color = "#FFFF00" - taste_description = "long-term stability" + taste_description = "стабильности" /datum/reagent/clf3 - name = "Chlorine Trifluoride" + name = "Трифторид хлора" id = "clf3" - description = "An extremely volatile substance, handle with the utmost care." + description = "Крайне летучее вещество, обращаться с ним следует с особой осторожностью." reagent_state = LIQUID color = "#FF0000" metabolization_rate = 10 * REAGENTS_METABOLISM @@ -258,16 +258,16 @@ M.IgniteMob() if(method == REAGENT_INGEST) M.adjustFireLoss(min(max(15, volume * 2.5), 90)) - to_chat(M, "It burns!") + to_chat(M, span_warning("Жжётся!")) M.emote("scream") /datum/reagent/sorium - name = "Sorium" + name = "Сорий" id = "sorium" - description = "Sends everything flying from the detonation point." + description = "Отправляет всё в полет от точки взрыва." reagent_state = LIQUID color = "#FFA500" - taste_description = "air and bitterness" + taste_description = "горького воздуха" /datum/reagent/sorium/reaction_turf(turf/T, volume) // oh no if(prob(75)) @@ -279,12 +279,12 @@ T.reagents.add_reagent("sorium", 5) /datum/reagent/liquid_dark_matter - name = "Liquid Dark Matter" + name = "Жидкая тёмная материя" id = "liquid_dark_matter" - description = "Sucks everything into the detonation point." + description = "Всасывает всё в точку взрыва." reagent_state = LIQUID color = "#800080" - taste_description = "compressed bitterness" + taste_description = "горького вакуума" /datum/reagent/liquid_dark_matter/reaction_turf(turf/T, volume) //Oh gosh, why if(prob(75)) @@ -296,14 +296,14 @@ T.reagents.add_reagent("liquid_dark_matter", 5) /datum/reagent/blackpowder - name = "Black Powder" + name = "Чёрный порох" id = "blackpowder" - description = "Explodes. Violently." + description = "Взрывается. Сильно взрывается." reagent_state = LIQUID color = "#000000" metabolization_rate = 0.125 * REAGENTS_METABOLISM penetrates_skin = TRUE - taste_description = "explosions" + taste_description = "взрывов" /datum/reagent/blackpowder/reaction_turf(turf/T, volume) //oh shit if(volume >= 5 && !isspaceturf(T)) @@ -311,38 +311,38 @@ new /obj/effect/decal/cleanable/dirt/blackpowder(T) /datum/reagent/flash_powder - name = "Flash Powder" + name = "Порошок-вспышка" id = "flash_powder" - description = "Makes a very bright flash." + description = "Создаёт очень яркую вспышку." reagent_state = LIQUID color = "#FFFF00" penetrates_skin = TRUE - taste_description = "salt" + taste_description = "соли" /datum/reagent/smoke_powder - name = "Smoke Powder" + name = "Дымный порошок" id = "smoke_powder" - description = "Makes a large cloud of smoke that can carry reagents." + description = "Создаёт большое облако дыма, в котором могут находиться реагенты." reagent_state = LIQUID color = "#808080" - taste_description = "smoke" + taste_description = "дыма" /datum/reagent/sonic_powder - name = "Sonic Powder" + name = "Звуковой порошок" id = "sonic_powder" - description = "Makes a deafening noise." + description = "Производит оглушительный шум." reagent_state = LIQUID color = "#0000FF" penetrates_skin = TRUE - taste_description = "loud noises" + taste_description = "шума" /datum/reagent/cryostylane - name = "Cryostylane" + name = "Криостилан" id = "cryostylane" - description = "Comes into existence at 20K. As long as there is sufficient oxygen for it to react with, Cryostylane slowly cools all other reagents in the mob down to 0K." + description = "Синтезируется с температурой в 20К. Пока в реакции с кислородом, медленно охлаждает все остальные вещества в теле существа до 0K." color = "#B2B2FF" // rgb: 139, 166, 233 process_flags = ORGANIC | SYNTHETIC - taste_description = "bitterness" + taste_description = "леденящей язык горечи" /datum/reagent/cryostylane/on_new(data) ..() @@ -379,12 +379,12 @@ M.adjustToxLoss(rand(15,30)) /datum/reagent/pyrosium - name = "Pyrosium" + name = "Пирозий" id = "pyrosium" - description = "Comes into existence at 20K. As long as there is sufficient oxygen for it to react with, Pyrosium slowly heats all other reagents." + description = "Синтезируется с температурой в 20К. Пока в реакции с кислородом, медленно нагревает все остальные вещества в теле существа до 0K." color = "#B20000" // rgb: 139, 166, 233 process_flags = ORGANIC | SYNTHETIC - taste_description = "bitterness" + taste_description = "обжигающей язык горечи" /datum/reagent/pyrosium/on_new(data) ..() @@ -408,18 +408,13 @@ holder.temperature_reagents(holder.chem_temp + 200) /datum/reagent/firefighting_foam - name = "Firefighting foam" + name = "Противопожарная пена" id = "firefighting_foam" - description = "Carbon Tetrachloride is a foam used for fire suppression." + description = "Тетрахлорид углерода - это пена, используемая для тушения пожаров." reagent_state = LIQUID color = "#A0A090" var/cooling_temperature = 3 // more effective than water - taste_description = "the inside of a fire extinguisher" - -/datum/reagent/firefighting_foam/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) -// Put out fire - if(method == REAGENT_TOUCH) - M.adjust_fire_stacks(-10) // more effective than water + taste_description = "пены для огнетушителей" /datum/reagent/firefighting_foam/reaction_obj(obj/O, volume) O.extinguish() @@ -427,22 +422,14 @@ /datum/reagent/firefighting_foam/reaction_turf(turf/simulated/T, volume) if(!istype(T)) return - var/CT = cooling_temperature new /obj/effect/decal/cleanable/flour/foam(T) //foam mess; clears up quickly. - var/hotspot = (locate(/obj/effect/hotspot) in T) - if(hotspot) - var/datum/gas_mixture/lowertemp = T.remove_air(T.air.total_moles()) - lowertemp.temperature = max(min(lowertemp.temperature-(CT*1000), lowertemp.temperature / CT), 0) - lowertemp.react() - T.assume_air(lowertemp) - qdel(hotspot) /datum/reagent/plasma_dust - name = "Plasma Dust" + name = "Плазменная пыль" id = "plasma_dust" - description = "A fine dust of plasma. This chemical has unusual mutagenic properties for viruses and slimes alike." + description = "Тонкая пыль из плазмы. Это химическое вещество обладает необычными мутагенными свойствами как для вирусов, так и для слаймов." color = "#500064" // rgb: 80, 0, 100 - taste_description = "corporate assets going to waste" + taste_description = "пропадающих зря корпоративных активов" taste_mult = 1.5 /datum/reagent/plasma_dust/reaction_temperature(exposed_temperature, exposed_volume) diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm index 7b31c15b90c0..46e566ebe174 100644 --- a/code/modules/reagents/chemistry/reagents/toxins.dm +++ b/code/modules/reagents/chemistry/reagents/toxins.dm @@ -1,24 +1,25 @@ /datum/reagent/toxin - name = "Toxin" + name = "Токсин" id = "toxin" - description = "A Toxic chemical." + description = "Ядовитый." reagent_state = LIQUID color = "#CF3600" // rgb: 207, 54, 0 taste_mult = 1.2 - taste_description = "bitterness" + taste_description = "горечи" + var/toxpwr = 2 /datum/reagent/toxin/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE - update_flags |= M.adjustToxLoss(2, FALSE) + update_flags |= M.adjustToxLoss(toxpwr, FALSE) return ..() | update_flags /datum/reagent/spider_venom - name = "Spider venom" + name = "Паучий яд" id = "spidertoxin" - description = "A toxic venom injected by spacefaring arachnids." + description = "Яд, впрыскиваемый космическими арахнидами." reagent_state = LIQUID color = "#CF3600" // rgb: 207, 54, 0 - taste_description = "bitterness" + taste_description = "горечи" /datum/reagent/spider_venom/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -26,12 +27,12 @@ return ..() | update_flags /datum/reagent/bee_venom - name = "Bee venom" + name = "Пчелиный яд" id = "beetoxin" - description = "A toxic venom injected by space bees." + description = "Яд, впрыскиваемый космическими пчелами." reagent_state = LIQUID color = "#ff932f" - taste_description = "pain" + taste_description = "боли" /datum/reagent/bee_venom/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -40,12 +41,12 @@ //bee venom specially for Beesease bees /datum/reagent/bee_venom_beesease - name = "Bee venom" + name = "Пчелиный яд" id = "beetoxinbeesease" - description = "A toxic venom injected by space bees." + description = "Яд, впрыскиваемый космическими пчелами." reagent_state = LIQUID color = "#ff932f" - taste_description = "pain" + taste_description = "боли" overdose_threshold = 30 /datum/reagent/bee_venom_beesease/on_mob_life(mob/living/M) @@ -81,12 +82,12 @@ return list(effect, update_flags) /datum/reagent/minttoxin - name = "Mint Toxin" + name = "Мятный токсин" id = "minttoxin" - description = "Useful for dealing with undesirable customers." + description = "Пригодится для работы с нежелательными клиентами." reagent_state = LIQUID color = "#CF3600" // rgb: 207, 54, 0 - taste_description = "mint" + taste_description = "мяты" /datum/reagent/minttoxin/on_mob_life(mob/living/M) if(HAS_TRAIT(M, TRAIT_FAT) && M.gib()) @@ -95,18 +96,18 @@ /datum/reagent/slimejelly data = list("diseases" = null) - name = "Slime Jelly" + name = "Слаймовое желе" id = "slimejelly" - description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL." + description = "Липкая полужидкость, полученная из одной из самых смертоносных форм жизни в галактике." reagent_state = LIQUID color = "#0b8f70" // rgb: 11, 143, 112 - taste_description = "slimes" + taste_description = "желе" taste_mult = 1.3 /datum/reagent/slimejelly/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(!isslimeperson(M) && prob(10)) - to_chat(M, "Your insides are burning!") + to_chat(M, span_danger("Ваши внутренности пылают!")) update_flags |= M.adjustToxLoss(rand(2,6) / 2, FALSE) // avg 0.2 toxin per cycle else if(prob(40)) update_flags |= M.adjustBruteLoss(-0.25, FALSE) @@ -132,7 +133,7 @@ if(method == REAGENT_INGEST && iscarbon(M)) var/mob/living/carbon/C = M if(C.get_blood_id() == id && !HAS_TRAIT(C, TRAIT_NO_BLOOD_RESTORE)) - C.blood_volume = min(C.blood_volume + round(volume, 0.1), BLOOD_VOLUME_NORMAL) + C.setBlood(min(C.blood_volume + round(volume, 0.1), BLOOD_VOLUME_NORMAL)) C.reagents.del_reagent(id) /datum/reagent/slimejelly/reaction_turf(turf/T, volume, color) @@ -143,33 +144,33 @@ /datum/reagent/slimetoxin - name = "Mutation Toxin" + name = "Мутационный токсин" id = "mutationtoxin" - description = "A corruptive toxin produced by slimes." + description = "Мутационный токсин, производимый слаймами." reagent_state = LIQUID color = "#13BC5E" // rgb: 19, 188, 94 can_synth = FALSE - taste_description = "shadows" + taste_description = "теней" /datum/reagent/slimetoxin/on_mob_life(mob/living/M) if(ishuman(M)) var/mob/living/carbon/human/human = M if(!isshadowperson(human)) - to_chat(M, "Your flesh rapidly mutates!") - to_chat(M, "You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.") - to_chat(M, "Your body reacts violently to light. However, it naturally heals in darkness.") - to_chat(M, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.") + to_chat(M, span_danger("Ваша плоть быстро мутирует!")) + to_chat(M, span_danger("Теперь вы - Тень, мутант из расы обитающих во тьме гуманоидов.")) + to_chat(M, span_danger("Ваше тело сильно реагирует на свет, однако оно натурально исцеляется при нахождении во тьме.")) + to_chat(M, span_danger("Тем не менее, вы не изменились психически и сохранили свои прежние обязанности.")) human.set_species(/datum/species/shadow) return ..() /datum/reagent/aslimetoxin - name = "Advanced Mutation Toxin" + name = "Продвинутый мутационный токсин" id = "amutationtoxin" - description = "An advanced corruptive toxin produced by slimes." + description = "Продвинутый мутационный токсин, производимый слаймами." reagent_state = LIQUID color = "#13BC5E" // rgb: 19, 188, 94 can_synth = FALSE - taste_description = "slime" + taste_description = "желе" /datum/reagent/aslimetoxin/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) if(method != REAGENT_TOUCH) @@ -178,9 +179,9 @@ /datum/reagent/mercury - name = "Mercury" + name = "Ртуть" id = "mercury" - description = "A chemical element." + description = "Химический элемент." reagent_state = LIQUID color = "#484848" // rgb: 72, 72, 72 metabolization_rate = 0.5 * REAGENTS_METABOLISM @@ -194,14 +195,14 @@ return ..() | update_flags /datum/reagent/chlorine - name = "Chlorine" + name = "Хлор" id = "chlorine" - description = "A chemical element." + description = "Химический элемент." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 penetrates_skin = TRUE process_flags = ORGANIC | SYNTHETIC - taste_description = "fire" + taste_description = "огня" /datum/reagent/chlorine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -209,14 +210,14 @@ return ..() | update_flags /datum/reagent/fluorine - name = "Fluorine" + name = "Фтор" id = "fluorine" - description = "A highly-reactive chemical element." + description = "Высокореактивный химический элемент." reagent_state = GAS color = "#6A6054" penetrates_skin = TRUE process_flags = ORGANIC | SYNTHETIC - taste_description = "acid" + taste_description = "кислоты" /datum/reagent/fluorine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -225,13 +226,13 @@ return ..() | update_flags /datum/reagent/radium - name = "Radium" + name = "Радий" id = "radium" - description = "Radium is an alkaline earth metal. It is extremely radioactive." + description = "Радий - щелочноземельный металл. Он чрезвычайно радиоактивен." reagent_state = SOLID color = "#C7C7C7" // rgb: 199,199,199 penetrates_skin = TRUE - taste_description = "the colour blue and regret" + taste_description = "голубизны и сожалений" /datum/reagent/radium/on_mob_life(mob/living/M) if(M.radiation < 80) @@ -243,21 +244,21 @@ new /obj/effect/decal/cleanable/greenglow(T) /datum/reagent/mutagen - name = "Unstable mutagen" + name = "Нестабильный мутаген" id = "mutagen" - description = "Might cause unpredictable mutations. Keep away from children." + description = "Может вызывать непредсказуемые мутации. Держите подальше от детей." reagent_state = LIQUID color = "#04DF27" metabolization_rate = 0.75 * REAGENTS_METABOLISM taste_mult = 0.9 - taste_description = "slime" + taste_description = "желе" /datum/reagent/mutagen/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) if(!..()) return if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this. - if((method==REAGENT_TOUCH && prob(33)) || method==REAGENT_INGEST) + if(volume > 1 && ((method == REAGENT_TOUCH && prob(33)) || method == REAGENT_INGEST)) randmutb(M) M.check_genes() @@ -272,12 +273,12 @@ /datum/reagent/stable_mutagen - name = "Stable mutagen" + name = "Стабильный мутаген" id = "stable_mutagen" - description = "Just the regular, boring sort of mutagenic compound. Works in a completely predictable manner." + description = "Обычное, скучное мутагенное соединение. Действует совершенно предсказуемо." reagent_state = LIQUID color = "#7DFF00" - taste_description = "slime" + taste_description = "желе" /datum/reagent/stable_mutagen/on_new(data) @@ -313,13 +314,13 @@ /datum/reagent/uranium - name ="Uranium" + name ="Уран" id = "uranium" - description = "A silvery-white metallic chemical element in the actinide series, weakly radioactive." + description = "Серебристо-белый металл из ряда актинидов, слабо радиоактивный." reagent_state = SOLID color = "#B8B8C0" // rgb: 184, 184, 192 taste_mult = 0 - taste_description = "the inside of a reactor" + taste_description = "атомной энергии" /datum/reagent/uranium/on_mob_life(mob/living/M) M.apply_effect(2, IRRADIATE, negate_armor = 1) @@ -331,13 +332,13 @@ /datum/reagent/lexorin - name = "Lexorin" + name = "Лексорин" id = "lexorin" - description = "Lexorin temporarily stops respiration. Causes tissue damage." + description = "Лексорин временно останавливает дыхание. Вызывает повреждение тканей." reagent_state = LIQUID color = "#52685D" metabolization_rate = 0.5 * REAGENTS_METABOLISM - taste_description = "sweetness" + taste_description = "сладости" /datum/reagent/lexorin/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -346,140 +347,206 @@ /datum/reagent/acid - name = "Sulphuric acid" + name = "Серная кислота" id = "sacid" - description = "A strong mineral acid with the molecular formula H2SO4." + description = "Сильная минеральная кислота с молекулярной формулой H2SO4." reagent_state = LIQUID color = "#00FF32" process_flags = ORGANIC | SYNTHETIC - taste_description = "ACID" + taste_description = span_userdanger("РАЗЪЕДАЮЩЕЙ КИСЛОТЫ") + //acid is not using permeability_coefficient to calculate protection, but armour["acid"] + clothing_penetration = 1 var/acidpwr = 10 //the amount of protection removed from the armour + /datum/reagent/acid/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE - update_flags |= M.adjustFireLoss(1, FALSE) + + if(!acid_proof_species(M)) + update_flags |= M.adjustFireLoss(1, FALSE) + return ..() | update_flags + /datum/reagent/acid/reaction_mob(mob/living/M, method = REAGENT_TOUCH, volume) - if(ishuman(M) && !isgrey(M)) - var/mob/living/carbon/human/H = M - if(method == REAGENT_TOUCH) - if(volume > 25) - if(H.wear_mask) - to_chat(H, "Your [H.wear_mask] protects you from the acid!") - return + if(!ishuman(M)) + return - if(H.head) - to_chat(H, "Your [H.wear_mask] protects you from the acid!") - return + var/mob/living/carbon/human/H = M - if(prob(75)) - H.take_organ_damage(5, 10) + if(acid_proof_species(H)) + return + + if(method == REAGENT_TOUCH) + to_chat(H, span_warning("Зеленоватое кислое вещество жжёт вашу кожу[volume < 1 ? " но оно недостаточно концентрированное, чтобы нанести вам вред" : null]!")) + if(volume < 1) + return + + var/damage_coef = 0 + var/should_scream = TRUE + + for(var/obj/item/organ/external/bodypart as anything in H.bodyparts) + if(istype(bodypart, /obj/item/organ/external/head) && !H.wear_mask && !H.head && volume > 25) + bodypart.disfigure() + if(H.has_pain() && should_scream) H.emote("scream") - var/obj/item/organ/external/affecting = H.get_organ(BODY_ZONE_HEAD) - if(affecting) - affecting.disfigure() - else - H.take_organ_damage(5, 10) - else - H.take_organ_damage(5, 10) - else - to_chat(H, "The greenish acidic substance stings[volume < 10 ? " you, but isn't concentrated enough to harm you" : null]!") - if(volume >= 10) - H.adjustFireLoss(min(max(4, (volume - 10) * 2), 20)) + should_scream = FALSE + + damage_coef = (100 - clamp(H.getarmor_organ(bodypart, "acid"), 0, 100))/100 + + if(damage_coef > 0 && should_scream) + should_scream = FALSE + if(H.has_pain()) + H.emote("scream") + + H.apply_damage(clamp(volume - 1, 2, 20) * damage_coef / length(H.bodyparts), BURN, def_zone = bodypart) + H.apply_damage(clamp((volume - 1)/2, 1, 10) * damage_coef / length(H.bodyparts), BRUTE, def_zone = bodypart) + + return + + if(method == REAGENT_INGEST) + to_chat(H, span_warning("Зеленоватое кислое вещество жжёт вашу кожу[volume < 1 ? ", но оно недостаточно концентрированное, чтобы нанести вам вред" : null]!")) + if(volume >= 1) + H.adjustFireLoss(clamp((volume - 1) * 2, 0, 30)) + if(H.has_pain()) H.emote("scream") + /datum/reagent/acid/reaction_obj(obj/O, volume) if(ismob(O.loc)) //handled in human acid_act() return + volume = round(volume, 0.1) O.acid_act(acidpwr, volume) + /datum/reagent/acid/reaction_turf(turf/T, volume) if(!istype(T)) return + volume = round(volume, 0.1) T.acid_act(acidpwr, volume) + /datum/reagent/acid/facid - name = "Fluorosulfuric Acid" + name = "Фторсерная кислота" id = "facid" - description = "Fluorosulfuric acid is a an extremely corrosive super-acid." + description = "Фторсерная кислота это чрезвычайно агрессивная суперкислота." color = "#5050FF" acidpwr = 42 + //acid is not using permeability_coefficient to calculate protection, but armour["acid"] + clothing_penetration = 1 + /datum/reagent/acid/facid/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE - update_flags |= M.adjustToxLoss(0.5, FALSE) + + if(!acid_proof_species(M)) + update_flags |= M.adjustToxLoss(0.5, FALSE) + return ..() | update_flags + /datum/reagent/acid/facid/reaction_mob(mob/living/M, method = REAGENT_TOUCH, volume) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(method == REAGENT_TOUCH) - if(volume >= 5) - var/damage_coef = 0 - var/isDamaged = FALSE - for(var/obj/item/organ/external/bodypart as anything in H.bodyparts) - damage_coef = (100 - clamp(H.getarmor_organ(bodypart, "acid"), 0, 100))/100 - if(damage_coef > 0 && !isDamaged) - isDamaged = TRUE - if(H.has_pain()) - H.emote("scream") - H.apply_damage(clamp((volume - 5) * 3, 8, 75) * damage_coef / length(H.bodyparts), BURN, def_zone = bodypart) - - if(volume > 9 && (H.wear_mask || H.head)) - if(H.wear_mask && !(H.wear_mask.resistance_flags & ACID_PROOF)) - to_chat(H, "Your [H.wear_mask.name] melts away!") - qdel(H.wear_mask) - H.update_inv_wear_mask() - if(H.head && !(H.head.resistance_flags & ACID_PROOF)) - to_chat(H, "Your [H.head.name] melts away!") - qdel(H.head) - H.update_inv_head() - return - else - if(volume >= 5) - H.emote("scream") - H.adjustFireLoss(clamp((volume - 5) * 3, 8, 75)); - to_chat(H, "The blueish acidic substance stings[volume < 5 ? " you, but isn't concentrated enough to harm you" : null]!") + if(!ishuman(M)) + return + + var/mob/living/carbon/human/H = M + var/damage_ignored = acid_proof_species(H) + + if(method == REAGENT_TOUCH) + if(volume >= 5 && !damage_ignored) // Prevent damage to mob, but not to clothes + var/damage_coef = 0 + var/should_scream = TRUE + + for(var/obj/item/organ/external/bodypart as anything in H.bodyparts) + damage_coef = (100 - clamp(H.getarmor_organ(bodypart, "acid"), 0, 100))/100 + if(damage_coef && should_scream && H.has_pain()) // prevent emote spam + H.emote("scream") + should_scream = FALSE + + H.apply_damage(clamp((volume - 5) * 3, 8, 75) * damage_coef / length(H.bodyparts), BURN, def_zone = bodypart) + + if(volume > 9 && (H.wear_mask || H.head)) + if(H.wear_mask && !(H.wear_mask.resistance_flags & ACID_PROOF)) + to_chat(H, span_danger("Ваш[genderize_ru(H.wear_mask.gender, "", "а", "е", "и")] [H.wear_mask.declent_ru(NOMINATIVE)] плавится!")) + qdel(H.wear_mask) + H.update_inv_wear_mask() + + if(H.head && !(H.head.resistance_flags & ACID_PROOF)) + to_chat(H, span_danger("Ваш[genderize_ru(H.head.gender, "", "а", "е", "и")] [H.head.declent_ru(NOMINATIVE)] плавится!")) + qdel(H.head) + H.update_inv_head() + + return + + else + if(damage_ignored) + return + + if(volume >= 5) + H.emote("scream") + H.adjustFireLoss(clamp((volume - 5) * 3, 8, 75)); + + to_chat(H, span_warning("Синеватое кислотное вещество жжёт вашу кожу[volume < 5 ? ", но оно недостаточно концентрированное, чтобы нанести вам вред" : null]!")) + /datum/reagent/acetic_acid - name = "acetic acid" + name = "Уксусная кислота" id = "acetic_acid" - description = "A weak acid that is the main component of vinegar and bad hangovers." + description = "Слабая кислота, которая является основным компонентом уксуса и плохого похмелья." color = "#0080ff" reagent_state = LIQUID - taste_description = "vinegar" + taste_description = "уксуса" + /datum/reagent/acetic_acid/reaction_mob(mob/M, method = REAGENT_TOUCH, volume) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(method == REAGENT_TOUCH) - if(H.wear_mask || H.head) - return - if(volume >= 50 && prob(75)) - var/obj/item/organ/external/affecting = H.get_organ(BODY_ZONE_HEAD) - if(affecting) - affecting.disfigure() - H.take_overall_damage(5, 15) - H.emote("scream") - else - H.adjustBruteLoss(min(5, volume * 0.25)) + if(!ishuman(M)) + return + + var/mob/living/carbon/human/H = M + if(acid_proof_species(H)) + return + + if(method == REAGENT_TOUCH) + if(H.wear_mask || H.head) + return + + if(volume >= 50 && prob(75)) + var/obj/item/organ/external/affecting = H.get_organ(BODY_ZONE_HEAD) + if(affecting) + affecting.disfigure() + + H.take_overall_damage(5, 15) + H.emote("scream") + else - to_chat(H, "The transparent acidic substance stings[volume < 25 ? " you, but isn't concentrated enough to harm you" : null]!") - if(volume >= 25) - H.take_overall_damage(2) - H.emote("scream") + H.adjustBruteLoss(min(5, volume * 0.25)) + + else + to_chat(H, span_warning("Прозрачная кислотное вещество жалит вашу кожу[volume < 25 ? ", но оно недостаточно концентрированное, чтобы нанести вам вред" : null]!")) + if(volume >= 25) + H.take_overall_damage(2) + H.emote("scream") + + +/datum/reagent/proc/acid_proof_species(mob/living/carbon/human/H) + if(!istype(H)) + return FALSE // skip check + + if(HAS_TRAIT(H, TRAIT_ACID_PROTECTED)) + return TRUE // acid proof species + + return FALSE /datum/reagent/carpotoxin - name = "Carpotoxin" + name = "Карпотоксин" id = "carpotoxin" - description = "A deadly neurotoxin produced by the dreaded spess carp." + description = "Смертельный нейротоксин, вырабатываемый железами космического карпа." reagent_state = LIQUID color = "#003333" // rgb: 0, 51, 51 - taste_description = "fish" + taste_description = "рыбы" /datum/reagent/carpotoxin/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -487,13 +554,13 @@ return ..() | update_flags /datum/reagent/staminatoxin - name = "Tirizene" + name = "Тиризин" id = "tirizene" - description = "A toxin that affects the stamina of a person when injected into the bloodstream." + description = "Токсин, который ухудшает снабжение тканей кислородом, постепенно выматывая организм субъекта." reagent_state = LIQUID color = "#6E2828" data = 13 - taste_description = "bitterness" + taste_description = "горечи" /datum/reagent/staminatoxin/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -502,31 +569,46 @@ return ..() | update_flags -/datum/reagent/spore - name = "Spore Toxin" +/datum/reagent/toxin/spore + name = "Споровый токсин" + description = "Природный токсин, вырабатываемый спорами блоба, который при попадании в организм подавляет зрение." + color = "#9ACD32" id = "spore" - description = "A natural toxin produced by blob spores that inhibits vision when ingested." + toxpwr = 1 + can_synth = FALSE + taste_description = "горечи" + +/datum/reagent/toxin/spore/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + . = ..() + affected_mob.damageoverlaytemp = 60 + affected_mob.update_damage_hud() + affected_mob.EyeBlurry(6 SECONDS * REM * seconds_per_tick) + +/datum/reagent/toxin/spore_burning + name = "Огненый споровый токсин" + description = "Природный токсин, вырабатываемый спорами блоба, который вызывает возгорание тканей жертвы." color = "#9ACD32" - taste_description = "bitterness" + id = "spore_burn" + toxpwr = 0.5 + taste_description = "ожогов" + can_synth = FALSE + +/datum/reagent/toxin/spore_burning/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + . = ..() + affected_mob.adjust_fire_stacks(2 * REM * seconds_per_tick) + affected_mob.IgniteMob() -/datum/reagent/spore/on_mob_life(mob/living/M) - var/update_flags = STATUS_UPDATE_NONE - update_flags |= M.adjustToxLoss(1, FALSE) - M.damageoverlaytemp = 60 - M.EyeBlurry(6 SECONDS) - return ..() | update_flags /datum/reagent/beer2 //disguised as normal beer for use by emagged service borgs - name = "Beer" + name = "Пиво" id = "beer2" - description = "An alcoholic beverage made from malted grains, hops, yeast, and water." + description = "Алкогольный напиток, приготовленный из солода, хмеля, дрожжей и воды." color = "#664300" // rgb: 102, 67, 0 metabolization_rate = 0.1 * REAGENTS_METABOLISM drink_icon ="beerglass" - drink_name = "Beer glass" - drink_desc = "A freezing pint of beer" - taste_description = "beer" - taste_description = "piss water" + drink_name = "стакан пива" + drink_desc = "Освежающая пинта пива." + taste_description = "мочи" /datum/reagent/beer2/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -539,9 +621,9 @@ return ..() | update_flags /datum/reagent/polonium - name = "Polonium" + name = "Полоний" id = "polonium" - description = "Cause significant Radiation damage over time." + description = "Вызывают значительные радиационные повреждения с течением времени." reagent_state = LIQUID color = "#CF3600" metabolization_rate = 0.25 * REAGENTS_METABOLISM @@ -554,9 +636,9 @@ return ..() /datum/reagent/histamine - name = "Histamine" + name = "Гистамин" id = "histamine" - description = "Immune-system neurotransmitter. If detected in blood, the subject is likely undergoing an allergic reaction." + description = "Нейротрансмиттер иммунной системы. Если он обнаружен в крови, то, скорее всего, у человека наблюдается аллергическая реакция." reagent_state = LIQUID color = "#E7C4C4" metabolization_rate = 0.5 * REAGENTS_METABOLISM @@ -568,7 +650,7 @@ if(method == REAGENT_TOUCH) M.reagents.add_reagent("histamine",10) else - to_chat(M, "You feel a burning sensation in your throat...") + to_chat(M, span_danger("Вы чувствуете жжение в горле...")) M.emote("drool") /datum/reagent/histamine/on_mob_life(mob/living/M) @@ -576,15 +658,15 @@ if(prob(20)) M.emote(pick("twitch", "grumble", "sneeze", "cough")) if(prob(10)) - to_chat(M, "Your eyes itch.") + to_chat(M, span_danger("Ваши глаза чешутся...")) M.emote(pick("blink", "sneeze")) M.AdjustEyeBlurry(6 SECONDS) if(prob(10)) - M.visible_message("[M] scratches at an itch.") + M.visible_message(span_danger("[M] расчёсыва[pluralize_ru(M.gender, "ет", "ют")] кожу до крови!")) update_flags |= M.adjustBruteLoss(1, FALSE) M.emote("grumble") if(prob(5)) - to_chat(M, "You're getting a rash!") + to_chat(M, span_danger("У вас сыпь!")) update_flags |= M.adjustBruteLoss(2, FALSE) return ..() | update_flags @@ -594,7 +676,7 @@ var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS] if(severity == 1) if(effect <= 2) - to_chat(M, "You feel mucus running down the back of your throat.") + to_chat(M, span_warning("Вы чувствуете, как слизь стекает по задней стенке вашего горла...")) update_flags |= M.adjustToxLoss(1, FALSE) M.Jitter(8 SECONDS) M.emote(pick("sneeze", "cough")) @@ -604,15 +686,15 @@ M.emote(pick("choke","gasp")) update_flags |= M.adjustOxyLoss(5, FALSE) else if(effect <= 7) - to_chat(M, "Your chest hurts!") + to_chat(M, span_warning("Вы чувствуете боль в груди!")) M.emote(pick("cough","gasp")) update_flags |= M.adjustOxyLoss(3, FALSE) else if(severity == 2) if(effect <= 2) - M.visible_message("[M] breaks out in hives!") + M.visible_message(span_danger("У [M] выступила крапивница на коже!")) update_flags |= M.adjustBruteLoss(6, FALSE) else if(effect <= 4) - M.visible_message("[M] has a horrible coughing fit!") + M.visible_message(span_warning("[M] оглушительно кашля[pluralize_ru(M.gender, "ет", "ют")], сгинаясь пополам!")) M.Jitter(20 SECONDS) M.AdjustStuttering(rand(0, 10 SECONDS)) M.emote("cough") @@ -621,24 +703,24 @@ update_flags |= M.adjustOxyLoss(6, FALSE) M.Weaken(16 SECONDS) else if(effect <= 7) - to_chat(M, "Your heartbeat is pounding inside your head!") + to_chat(M, span_warning("Вы слышите оглушительный стук собственного сердца!")) M << 'sound/effects/singlebeat.ogg' M.emote("collapse") update_flags |= M.adjustOxyLoss(8, FALSE) update_flags |= M.adjustToxLoss(3, FALSE) M.Weaken(6 SECONDS) M.emote(pick("choke", "gasp")) - to_chat(M, "You feel like you're dying!") + to_chat(M, span_warning("Вам кажется, что вы сейчас умрёте!")) return list(effect, update_flags) /datum/reagent/formaldehyde - name = "Formaldehyde" + name = "Формальдегид" id = "formaldehyde" - description = "Formaldehyde is a common industrial chemical and is used to preserve corpses and medical samples. It is highly toxic and irritating." + description = "Формальдегид - распространенный промышленный химикат, который используется для консервации трупов и медицинских препа. Он очень токсичен и вызывает аллергию." reagent_state = LIQUID color = "#B44B00" penetrates_skin = TRUE - taste_description = "bitterness" + taste_description = "горечи" /datum/reagent/formaldehyde/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -648,13 +730,13 @@ return ..() | update_flags /datum/reagent/acetaldehyde - name = "Acetaldehyde" + name = "Ацетальдегид" id = "acetaldehyde" - description = "Acetaldehyde is a common industrial chemical. It is a severe irritant." + description = "Ацетальдегид - распространенный промышленный химикат. Он является сильным раздражителем." reagent_state = LIQUID color = "#B44B00" penetrates_skin = TRUE - taste_description = "apples" + taste_description = "яблок" /datum/reagent/acetaldehyde/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -662,9 +744,9 @@ return ..() | update_flags /datum/reagent/venom - name = "Venom" + name = "Яд" id = "venom" - description = "An incredibly potent poison. Origin unknown." + description = "Невероятно сильный яд. Происхождение неизвестно." reagent_state = LIQUID color = "#CF3600" metabolization_rate = 0.5 * REAGENTS_METABOLISM @@ -690,9 +772,9 @@ return ..() | update_flags /datum/reagent/neurotoxin2 - name = "Neurotoxin" + name = "Нейротоксин" id = "neurotoxin2" - description = "A dangerous toxin that attacks the nervous system." + description = "Опасный токсин, поражающий нервную систему." reagent_state = LIQUID color = "#60A584" metabolization_rate = 2.5 * REAGENTS_METABOLISM @@ -729,14 +811,14 @@ return ..() | update_flags /datum/reagent/cyanide - name = "Cyanide" + name = "Цианид" id = "cyanide" - description = "A highly toxic chemical with some uses as a building block for other things." + description = "Высокотоксичное химическое вещество, используемое в качестве строительного блока для других веществ." reagent_state = LIQUID color = "#CF3600" metabolization_rate = 0.25 * REAGENTS_METABOLISM penetrates_skin = TRUE - taste_description = "almonds" + taste_description = "миндаля" /datum/reagent/cyanide/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -744,55 +826,55 @@ if(prob(5)) M.emote("drool") if(prob(10)) - to_chat(M, "You cannot breathe!") + to_chat(M, span_danger("Вы не можете дышать!")) M.AdjustLoseBreath(2 SECONDS) M.emote("gasp") if(prob(8)) - to_chat(M, "You feel horrendously weak!") + to_chat(M, span_danger("Вы чувствуете сильную слабость!")) M.Stun(4 SECONDS) update_flags |= M.adjustToxLoss(2, FALSE) return ..() | update_flags /datum/reagent/itching_powder - name = "Itching Powder" + name = "Зудящий порошок" id = "itching_powder" - description = "An abrasive powder beloved by cruel pranksters." + description = "Абразивный порошок, любимый жестокими шутниками." reagent_state = LIQUID color = "#B0B0B0" metabolization_rate = 0.75 * REAGENTS_METABOLISM penetrates_skin = TRUE - taste_description = "prickliness" + taste_description = "чесотки на языке" /datum/reagent/itching_powder/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_STAT if(prob(25)) M.emote(pick("twitch", "laugh", "sneeze", "cry")) if(prob(20)) - to_chat(M, "Something tickles!") + to_chat(M, span_notice("Вам щекотно!")) M.emote(pick("laugh", "giggle")) if(prob(15)) - M.visible_message("[M] scratches at an itch.") + M.visible_message(span_danger("[M] сильно чеш[pluralize_ru(M.gender, "ет", "ут")]ся!")) update_flags |= M.adjustBruteLoss(1, FALSE) M.Stun(rand(0, 2 SECONDS)) M.emote("grumble") if(prob(10)) - to_chat(M, "So itchy!") + to_chat(M, span_danger("Вам щекотно, слишком щекотно!")) update_flags |= M.adjustBruteLoss(2, FALSE) if(prob(6)) M.reagents.add_reagent("histamine", rand(1,3)) if(prob(2)) - to_chat(M, "AHHHHHH!") + to_chat(M, span_danger("ААААААА!!!")) update_flags |= M.adjustBruteLoss(5, FALSE) M.Weaken(10 SECONDS) M.AdjustJitter(12 SECONDS) - M.visible_message("[M] falls to the floor, scratching [M.p_them()]self violently!") + M.visible_message(span_danger("[M] вал[pluralize_ru(M.gender, "ит", "ят")]ся на землю, истерично рассчёсывая свою кожу до крови!")) M.emote("scream") return ..() | update_flags /datum/reagent/initropidril - name = "Initropidril" + name = "Инитропидрил" id = "initropidril" - description = "A highly potent cardiac poison - can kill within minutes." + description = "Сильнодействующий сердечный яд - может убить за несколько минут." reagent_state = LIQUID color = "#7F10C0" can_synth = FALSE @@ -803,14 +885,14 @@ if(prob(33)) update_flags |= M.adjustToxLoss(rand(5,25), FALSE) if(prob(33)) - to_chat(M, "You feel horribly weak.") + to_chat(M, span_danger("Вы чувствуете сильную слабость!")) M.Stun(4 SECONDS) if(prob(10)) - to_chat(M, "You cannot breathe!") + to_chat(M, span_danger("Вы не можете дышать!")) update_flags |= M.adjustOxyLoss(10, FALSE) M.AdjustLoseBreath(2 SECONDS) if(prob(10)) - to_chat(M, "Your chest is burning with pain!") + to_chat(M, span_warning("Вы чувствуете сильную боль в груди!")) update_flags |= M.adjustOxyLoss(10, FALSE) M.AdjustLoseBreath(2 SECONDS) M.Weaken(4 SECONDS) @@ -821,9 +903,9 @@ return ..() | update_flags /datum/reagent/pancuronium - name = "Pancuronium" + name = "Панкуроний" id = "pancuronium" - description = "Pancuronium bromide is a powerful skeletal muscle relaxant." + description = "Бромид панкурония - мощный релаксант скелетных мышц." reagent_state = LIQUID color = "#1E4664" metabolization_rate = 0.5 * REAGENTS_METABOLISM @@ -837,7 +919,7 @@ M.emote(pick("drool", "tremble")) if(6 to 10) if(prob(8)) - to_chat(M, "You feel [pick("weak", "horribly weak", "numb", "like you can barely move", "tingly")].") + to_chat(M, span_danger("Вы чувствуете [pick("сильную слабость", "немоту в мышцах", ", что вы едва можете двигаться", "сильное покалывание")]!")) M.Stun(2 SECONDS) else if(prob(8)) M.emote(pick("drool", "tremble")) @@ -847,16 +929,16 @@ M.emote(pick("drool", "tremble", "gasp")) M.AdjustLoseBreath(2 SECONDS) if(prob(9)) - to_chat(M, "You can't [pick("move", "feel your legs", "feel your face", "feel anything")]!") + to_chat(M, span_danger("Вы не[pick(" чувствуете свои ноги", " можете двигаться", "способны пошевелить даже пальцем", "чувствуете ничего")]!")) if(prob(7)) - to_chat(M, "You can't breathe!") + to_chat(M, span_danger("Вы не можете дышать!")) M.AdjustLoseBreath(6 SECONDS) return ..() | update_flags /datum/reagent/sodium_thiopental - name = "Sodium Thiopental" + name = "Тиопентал натрия" id = "sodium_thiopental" - description = "An rapidly-acting barbituate tranquilizer." + description = "Быстродействующий транквилизатор барбитуратного ряда." reagent_state = LIQUID color = "#5F8BE1" metabolization_rate = 1.75 * REAGENTS_METABOLISM @@ -883,9 +965,9 @@ return ..() | update_flags /datum/reagent/ketamine - name = "Ketamine" + name = "Кетамин" id = "ketamine" - description = "A potent veterinary tranquilizer." + description = "Сильнодействующий ветеринарный транквилизатор." reagent_state = LIQUID color = "#646EA0" metabolization_rate = 2 * REAGENTS_METABOLISM @@ -911,9 +993,9 @@ return ..() | update_flags /datum/reagent/sulfonal - name = "Sulfonal" + name = "Сульфонал" id = "sulfonal" - description = "Deals some toxin damage, and puts you to sleep after 66 seconds." + description = "Отравляет организм субьекта и погружает его в сон." reagent_state = LIQUID color = "#6BA688" metabolization_rate = 0.25 * REAGENTS_METABOLISM @@ -939,9 +1021,9 @@ return ..() | update_flags /datum/reagent/amanitin - name = "Amanitin" + name = "Аманитин" id = "amanitin" - description = "A toxin produced by certain mushrooms. Very deadly." + description = "Токсин, вырабатываемый некоторыми грибами. Очень опасен." reagent_state = LIQUID color = "#D9D9D9" taste_mult = 0 @@ -951,23 +1033,23 @@ ..() /datum/reagent/lipolicide - name = "Lipolicide" + name = "Липолицид" id = "lipolicide" - description = "A compound found in many seedy dollar stores in the form of a weight-loss tonic." + description = "Соединение, которое можно найти во многих магазинах в виде тоника для похудения." reagent_state = SOLID color = "#D1DED1" metabolization_rate = 0.5 * REAGENTS_METABOLISM - taste_description = "battery acid" + taste_description = "кислоты для аккумуляторов" /datum/reagent/lipolicide/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(!M.nutrition) switch(rand(1,3)) if(1) - to_chat(M, "You feel hungry...") + to_chat(M, span_warning("Вам хочется есть!")) if(2) update_flags |= M.adjustToxLoss(1, FALSE) - to_chat(M, "Your stomach grumbles painfully!") + to_chat(M, span_warning("Вы чувствуете боль в животе!")) else pass() else @@ -978,9 +1060,9 @@ return ..() | update_flags /datum/reagent/coniine - name = "Coniine" + name = "Кониин" id = "coniine" - description = "A neurotoxin that rapidly causes respiratory failure." + description = "Нейротоксин, быстро вызывающий остановку дыхания." reagent_state = LIQUID color = "#C2D8CD" metabolization_rate = 0.125 * REAGENTS_METABOLISM @@ -994,9 +1076,9 @@ return ..() | update_flags /datum/reagent/curare - name = "Curare" + name = "Кураре" id = "curare" - description = "A highly dangerous paralytic poison." + description = "Очень опасный паралитический яд." reagent_state = LIQUID color = "#191919" metabolization_rate = 0.25 * REAGENTS_METABOLISM @@ -1015,7 +1097,7 @@ if(6 to 10) M.AdjustEyeBlurry(10 SECONDS) if(prob(8)) - to_chat(M, "You feel [pick("weak", "horribly weak", "numb", "like you can barely move", "tingly")].") + to_chat(M, span_danger("Вы чувствуете [pick("сильную слабость", "немоту в мышцах", ", что вы едва можете двигаться", "сильное покалывание")]!")) M.Stun(2 SECONDS) else if(prob(8)) M.emote(pick("drool", "pale", "gasp")) @@ -1025,14 +1107,14 @@ if(prob(20)) M.emote(pick("drool", "faint", "pale", "gasp", "collapse")) else if(prob(8)) - to_chat(M, "You can't [pick("breathe", "move", "feel your legs", "feel your face", "feel anything")]!") + to_chat(M, span_danger("Вы не[pick(" чувствуете свои ноги", " можете двигаться", "способны пошевелить даже пальцем", " чувствуете ничего", " можете дышать")]!")) M.AdjustLoseBreath(2 SECONDS) return ..() | update_flags /datum/reagent/sarin - name = "Sarin" + name = "Зарин" id = "sarin" - description = "An extremely deadly neurotoxin." + description = "Чрезвычайно смертоносный нейротоксин." reagent_state = LIQUID color = "#C7C7C7" metabolization_rate = 0.25 * REAGENTS_METABOLISM @@ -1067,10 +1149,10 @@ M.emote("collapse") if(prob(5)) M.Weaken(6 SECONDS) - M.visible_message("[M] has a seizure!") + M.visible_message(span_warning("У [M] припадок!")) M.SetJitter(2000 SECONDS) if(prob(5)) - to_chat(M, "You can't breathe!") + to_chat(M, span_warning("Вы не можете дышать!")) M.emote(pick("gasp", "choke", "cough")) M.AdjustLoseBreath(2 SECONDS) if(61 to INFINITY) @@ -1088,13 +1170,13 @@ return ..() | update_flags /datum/reagent/glyphosate - name = "Glyphosate" + name = "Глифосат" id = "glyphosate" - description = "A broad-spectrum herbicide that is highly effective at killing all plants." + description = "Гербицид широкого спектра применения, эффективно уничтожающий вредителей." reagent_state = LIQUID color = "#d3cf50" var/lethality = 0 //Glyphosate is non-toxic to people - taste_description = "bitterness" + taste_description = "горечи" /datum/reagent/glyphosate/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1106,7 +1188,7 @@ for(var/obj/effect/overlay/wall_rot/WR in W) qdel(WR) W.rotting = 0 - W.visible_message("The fungi are completely dissolved by the solution!") + W.visible_message(span_warning("Глифосат полностью растворил грибок!")) /datum/reagent/glyphosate/reaction_obj(obj/O, volume) if(istype(O,/obj/structure/alien/weeds)) @@ -1133,20 +1215,20 @@ /datum/reagent/glyphosate/atrazine - name = "Atrazine" + name = "Атразин" id = "atrazine" - description = "A herbicidal compound used for destroying unwanted plants." + description = "Гербицидное соединение, используемое для уничтожения нежелательных растений." reagent_state = LIQUID color = "#773E73" //RGB: 47 24 45 lethality = 2 //Atrazine, however, is definitely toxic /datum/reagent/pestkiller // To-Do; make this more realistic. - name = "Pest Killer" + name = "Пестицид" id = "pestkiller" - description = "A harmful toxic mixture to kill pests. Do not ingest!" + description = "Вредная токсичная смесь для уничтожения вредителей. Не проглатывать!" color = "#4B004B" // rgb: 75, 0, 75 - taste_description = "bitterness" + taste_description = "горечи" /datum/reagent/pestkiller/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1155,7 +1237,7 @@ /datum/reagent/pestkiller/reaction_obj(obj/O, volume) if(istype(O, /obj/effect/decal/ants)) - O.visible_message("The ants die.") + O.visible_message(span_warning("Пестицид убивает муравьёв!")) qdel(O) /datum/reagent/pestkiller/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) @@ -1169,13 +1251,13 @@ H.adjustToxLoss(20) /datum/reagent/capulettium - name = "Capulettium" + name = "Капулеттий" id = "capulettium" - description = "A rare drug that causes the user to appear dead for some time." + description = "Редкий препарат, используемый для симуляции смерти организма употребившего." reagent_state = LIQUID color = "#60A584" heart_rate_stop = 1 - taste_description = "sweetness" + taste_description = "сладости" /datum/reagent/capulettium/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1197,13 +1279,13 @@ ..() /datum/reagent/capulettium_plus - name = "Capulettium Plus" + name = "Капулеттий+" id = "capulettium_plus" - description = "A rare and expensive drug that will silence the user and let him appear dead as long as it's in the body. Rest to play dead, stand up to wake up." + description = "Редкий препарат, используемый для симуляции смерти организма употребившего. Пока находится в кровотоке, не позволяет субъекту говорить." reagent_state = LIQUID color = "#60A584" heart_rate_stop = 1 - taste_description = "sweetness" + taste_description = "сладости" /datum/reagent/capulettium_plus/on_mob_life(mob/living/M) M.Silence(4 SECONDS) @@ -1219,31 +1301,31 @@ ..() /datum/reagent/toxic_slurry - name = "Toxic Slurry" + name = "Токсичная жижа" id = "toxic_slurry" - description = "A filthy, carcinogenic sludge produced by the Slurrypod plant." + description = "Токсичный канцерогенный осадок, образующийся на заводе \"Сларрипод\"." reagent_state = LIQUID color = "#00C81E" - taste_description = "slime" + taste_description = "желе" /datum/reagent/toxic_slurry/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(prob(10)) update_flags |= M.adjustToxLoss(rand(2.4), FALSE) if(prob(7)) - to_chat(M, "A horrible migraine overpowers you.") + to_chat(M, span_danger("Вас одолевает ужасная мигрень!")) M.Stun(rand(4 SECONDS, 10 SECONDS)) if(prob(7)) M.fakevomit(1) return ..() | update_flags /datum/reagent/glowing_slurry - name = "Glowing Slurry" + name = "Светящаяся жижа" id = "glowing_slurry" - description = "This is probably not good for you." + description = "Это, вероятно, не очень хорошо для вас." reagent_state = LIQUID color = "#00FD00" - taste_description = "slime" + taste_description = "желе" /datum/reagent/glowing_slurry/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) //same as mutagen if(!..()) @@ -1270,13 +1352,13 @@ return ..() /datum/reagent/ants - name = "Ants" + name = "Муравьи" id = "ants" - description = "A sample of a lost breed of Space Ants (formicidae bastardium tyrannus), they are well-known for ravaging the living shit out of pretty much anything." + description = "Образец потерянной породы космических муравьёв (Formicidae bastardium tyrannus). Они известны тем, что способны поглотить практически всё." reagent_state = SOLID color = "#993333" process_flags = ORGANIC | SYNTHETIC - taste_description = "ANTS OH GOD" + taste_description = span_warning("МУРАВЬЁВ") /datum/reagent/ants/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1285,21 +1367,21 @@ /datum/reagent/ants/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) //NOT THE ANTS if(iscarbon(M)) - if(method == REAGENT_TOUCH || method==REAGENT_INGEST) - to_chat(M, "OH SHIT ANTS!!!!") + if(volume > 1 && (method == REAGENT_TOUCH || method == REAGENT_INGEST)) + to_chat(M, span_warning("ТВОЮ МАТЬ, МУРАВЬИ!")) M.emote("scream") M.adjustBruteLoss(4) /datum/reagent/teslium //Teslium. Causes periodic shocks, and makes shocks against the target much more effective. - name = "Teslium" + name = "Теслий" id = "teslium" - description = "An unstable, electrically-charged metallic slurry. Increases the conductance of living things." + description = "Нестабильная, электрически заряженная металлическая суспензия. Увеличивает проводимость живых организмов." reagent_state = LIQUID color = "#20324D" //RGB: 32, 50, 77 metabolization_rate = 0.5 * REAGENTS_METABOLISM var/shock_timer = 0 process_flags = ORGANIC | SYNTHETIC - taste_description = "electricity" + taste_description = "электричества" /datum/reagent/teslium/on_mob_life(mob/living/affected_mob) @@ -1326,43 +1408,43 @@ /datum/reagent/gluttonytoxin - name = "Gluttony's Blessing" + name = "Благословение Чревоугодия" id = "gluttonytoxin" - description = "An advanced corruptive toxin produced by something terrible." + description = "Продвинутый токсин, вызывающий разложение, производимый чем-то ужасным." reagent_state = LIQUID color = "#5EFF3B" //RGB: 94, 255, 59 can_synth = FALSE - taste_description = "decay" + taste_description = "разложения" /datum/reagent/gluttonytoxin/reaction_mob(mob/living/L, method=REAGENT_TOUCH, reac_volume) var/datum/disease/virus/transformation/morph/D = new D.Contract(L) /datum/reagent/bungotoxin - name = "Bungotoxin" + name = "Бунготоксин" id = "bungotoxin" - description = "A horrible cardiotoxin that protects the humble bungo pit." + description = "Ужасный кардиотоксин." reagent_state = LIQUID color = "#EBFF8E" metabolization_rate = 1.25 * REAGENTS_METABOLISM - taste_description = "tannin" + taste_description = "танина" /datum/reagent/bungotoxin/on_mob_life(mob/living/carbon/M) var/update_flags = STATUS_UPDATE_NONE if(current_cycle >= 20) if(prob(25)) M.Dizzy(20 SECONDS) - to_chat(M, "You feel your heart spasm in your chest.") + to_chat(M, span_danger("Вы чувствуете, как сердце сжимается в груди.")) if(current_cycle >= 30) if(prob(25)) M.Confused(20 SECONDS) - to_chat(M, "You feel you need to catch your breath.") + to_chat(M, span_danger("Вы чувствуете, что вам нужно сесть и отдышаться.")) if(current_cycle >= 40) if(prob(10)) - to_chat(M, "You feel horribly weak.") + to_chat(M, span_danger("Вы чувствуете сильную слабость!")) M.Stun(4 SECONDS) if(current_cycle == 50) - to_chat(M, "Your chest is burning with pain!") + to_chat(M, span_warning("Вы чувствуете сильную боль в груди!")) update_flags |= M.adjustOxyLoss(10, FALSE) M.AdjustLoseBreath(2 SECONDS) M.Weaken(6 SECONDS) @@ -1373,13 +1455,13 @@ return ..() | update_flags /datum/reagent/coca_extract - name = "Coca extract" + name = "Экстракт коки" id = "cocaextract" - description = "Unprocessed extract of coca. Its bad idea to taste it like that." + description = "Необработанный экстракт коки. Не стоит пробовать его в таком виде." reagent_state = LIQUID color = "#f4f4f4" metabolization_rate = 1 * REAGENTS_METABOLISM - taste_description = "herbal bitterness" + taste_description = "травяной горечи" /datum/reagent/coca_extract/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1390,18 +1472,18 @@ return ..() | update_flags /datum/reagent/metalic_dust - name = "Metalic dust" + name = "Металлическая пыль" id = "metalicdust" - description = "Metal dust with large pieces of various metals and technical liquids." + description = "Металлическая пыль с крупными кусками различных металлов и техническими жидкостями." reagent_state = SOLID color = "#353434" process_flags = ORGANIC | SYNTHETIC metabolization_rate = 5 - taste_description = span_warning("METAL DUST OH GOD") + taste_description = span_warning("МЕТАЛЛИЧЕСКОЙ ПЫЛИ И МАСЛА, БЛЯДЬ!") /datum/reagent/metalic_dust/on_mob_life(mob/living/M) M.emote("scream") - to_chat(M, span_warning("OH SHIT!!!!")) + to_chat(M, span_warning("ТВОЮ МАТЬ!!!")) M.AdjustWeakened(2 SECONDS) M.EyeBlurry(1 SECONDS) M.adjustBruteLoss(rand(5, 10)) diff --git a/code/modules/reagents/chemistry/reagents/water.dm b/code/modules/reagents/chemistry/reagents/water.dm index 37c54e46037c..f86e5fba4b98 100644 --- a/code/modules/reagents/chemistry/reagents/water.dm +++ b/code/modules/reagents/chemistry/reagents/water.dm @@ -12,17 +12,17 @@ GLOBAL_LIST_INIT(diseases_carrier_reagents, list( )) /datum/reagent/water - name = "Water" + name = "Вода" id = "water" - description = "A ubiquitous chemical substance that is composed of hydrogen and oxygen." + description = "Повсеместно распространённое химическое вещество, состоящее из водорода и кислорода." reagent_state = LIQUID color = "#0064C8" // rgb: 0, 100, 200 - taste_description = "water" + taste_description = "воды" var/cooling_temperature = 2 process_flags = ORGANIC | SYNTHETIC drink_icon = "glass_clear" - drink_name = "Glass of Water" - drink_desc = "The father of all refreshments." + drink_name = "Стакан воды" + drink_desc = "Обычный стакан обычной воды." var/water_temperature = COLD_WATER_TEMPERATURE // As reagents don't have a temperature value, we'll just use 10 celsius. /datum/reagent/water/reaction_mob(mob/living/M, method = REAGENT_TOUCH, volume) @@ -38,13 +38,13 @@ GLOBAL_LIST_INIT(diseases_carrier_reagents, list( O.water_act(volume, water_temperature, src) /datum/reagent/lube - name = "Space Lube" + name = "Космическая смазка" id = "lube" - description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them. giggity." + description = "Вещество, используемое для уменьшения трения между двумя движущимися поверхностями." reagent_state = LIQUID color = "#1BB1AB" harmless = TRUE - taste_description = "cherry" + taste_description = "вишни" /datum/reagent/lube/reaction_turf(turf/simulated/T, volume) if(volume >= 1 && istype(T)) @@ -52,14 +52,14 @@ GLOBAL_LIST_INIT(diseases_carrier_reagents, list( /datum/reagent/space_cleaner - name = "Space cleaner" + name = "Космочист" id = "cleaner" - description = "A compound used to clean things. Now with 50% more sodium hypochlorite!" + description = "Состав, используемый для очистки поверхностей. Теперь на 50% больше гипохлорита натрия!" reagent_state = LIQUID color = "#61C2C2" harmless = TRUE process_flags = ORGANIC | SYNTHETIC - taste_description = "floor cleaner" + taste_description = "средства для мытья полов" /datum/reagent/space_cleaner/reaction_obj(obj/O, volume) @@ -99,15 +99,15 @@ GLOBAL_LIST_INIT(diseases_carrier_reagents, list( /datum/reagent/blood data = list("donor"=null,"diseases"=null,"blood_DNA"=null,"blood_type"=null,"blood_species"=null,"blood_colour"="#A10808","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null, "dna" = null) - name = "Blood" + name = "Кровь" id = "blood" reagent_state = LIQUID color = "#770000" // rgb: 40, 0, 0 metabolization_rate = 12.5 * REAGENTS_METABOLISM //fast rate so it disappears fast. drink_icon = "glass_red" - drink_name = "Glass of Tomato juice" - drink_desc = "Are you sure this is tomato juice?" - taste_description = "blood" + drink_name = "Стакан томатного сока" + drink_desc = "Стоп, а это точно томатный сок?" + taste_description = "крови" taste_mult = 1.3 /datum/reagent/blood/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) @@ -180,7 +180,7 @@ GLOBAL_LIST_INIT(diseases_carrier_reagents, list( V.Contract(M, need_protection_check = FALSE) /datum/reagent/blood/synthetic/vox - name = "Synthetic Blood" + name = "Синтетическая кровь (Азот)" id = "sbloodvox" data = list("donor"=null,"diseases"=null,"blood_DNA"=null,"blood_type"=null,"blood_species"=null,"blood_colour"="#6093dc","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null, "dna" = null) color = "#6093dc" @@ -199,7 +199,7 @@ GLOBAL_LIST_INIT(diseases_carrier_reagents, list( C.blood_volume = min(C.blood_volume + round(volume, 0.1), BLOOD_VOLUME_NORMAL) /datum/reagent/blood/synthetic/oxy - name = "Synthetic Blood" + name = "Синтетическая кровь (Кислород)" id = "sbloodoxy" data = list("donor"=null,"diseases"=null,"blood_DNA"=null,"blood_type"=null,"blood_species"=null,"blood_colour"="#e8479d","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null, "dna" = null) color = "#e8479d" @@ -219,10 +219,10 @@ GLOBAL_LIST_INIT(diseases_carrier_reagents, list( /datum/reagent/vaccine //data must contain virus type - name = "Vaccine" + name = "Вакцина" id = "vaccine" color = "#C81040" // rgb: 200, 16, 64 - taste_description = "antibodies" + taste_description = "антител" /datum/reagent/vaccine/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) if(islist(data) && (method == REAGENT_INGEST)) @@ -237,16 +237,16 @@ GLOBAL_LIST_INIT(diseases_carrier_reagents, list( data |= data.Copy() /datum/reagent/fishwater - name = "Fish Water" + name = "Аквариумная вода" id = "fishwater" - description = "Smelly water from a fish tank. Gross!" + description = "Вонючая вода из аквариума. Мерзость!" reagent_state = LIQUID color = "#757547" - taste_description = "puke" + taste_description = "блевотины" /datum/reagent/fishwater/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) if(method == REAGENT_INGEST) - to_chat(M, "Oh god, why did you drink that?") + to_chat(M, "Для чего вы это выпили?") /datum/reagent/fishwater/on_mob_life(mob/living/M) if(prob(30)) // Nasty, you drank this stuff? 30% chance of the fakevomit (non-stunning version) @@ -257,27 +257,27 @@ GLOBAL_LIST_INIT(diseases_carrier_reagents, list( return ..() /datum/reagent/fishwater/toiletwater - name = "Toilet Water" + name = "Вода из унитаза" id = "toiletwater" - description = "Filthy water scoured from a nasty toilet bowl. Absolutely disgusting." + description = "Грязная вода, которую взяли из унитаза. Абсолютно отвратительно." reagent_state = LIQUID color = "#757547" - taste_description = "the inside of a toilet... or worse" + taste_description = "жидкого дерьма" /datum/reagent/fishwater/toiletwater/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume) //For shennanigans return /datum/reagent/holywater - name = "Water" + name = "Вода" id = "holywater" - description = "A ubiquitous chemical substance that is composed of hydrogen and oxygen." + description = "Повсеместно распространённое химическое вещество, состоящее из водорода и кислорода." reagent_state = LIQUID color = "#0064C8" // rgb: 0, 100, 200 process_flags = ORGANIC | SYNTHETIC drink_icon = "glass_clear" - drink_name = "Glass of Water" - drink_desc = "The father of all refreshments." - taste_description = "water" + drink_name = "Стакан воды" + drink_desc = "Обычный стакан обычной воды." + taste_description = "воды" /datum/reagent/holywater/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -287,21 +287,21 @@ GLOBAL_LIST_INIT(diseases_carrier_reagents, list( M.Dizzy(10 SECONDS) if(isclocker(M) && prob(5)) M.AdjustClockSlur(10 SECONDS) - M.say(pick("Via Ra'var!", "P'res Ni", "Nu'nce te Ren'", "Et Def'Fre", "RELO'JE AR SAGE", "Ric'gui'nea", "Uy'a Rad kos", "Uo Rom'tis!", "Rup'ru ge")) + M.say(pick("Виа Ра'вар!", "П'рес Ни", "Ню'нс те Рен", "Эт Деф'Фре", "РЕЛО'ЙЕ АР СЕЙЖ", "Рик'гуай'ни", "Уй'а Рад кос", "Уо Ром'тис!", "Руп'ру ге")) if(iscultist(M)) for(var/datum/action/innate/cult/blood_magic/BM in M.actions) for(var/datum/action/innate/cult/blood_spell/BS in BM.spells) - to_chat(M, "Your blood rites falter as holy water scours your body!") + to_chat(M, span_cultlarge("Ваша кровавая магия ослабевает из-за святой воды в вашем организме!")) qdel(BS) if(prob(5)) M.AdjustCultSlur(10 SECONDS)//5 seems like a good number... - M.say(pick("Av'te Nar'sie","Pa'lid Mors","INO INO ORA ANA","SAT ANA!","Daim'niodeis Arc'iai Le'eones","Egkau'haom'nai en Chaous","Ho Diak'nos tou Ap'iron","R'ge Na'sie","Diabo us Vo'iscum","Si gn'um Co'nu")) + M.say(pick("Ав'те Нар'си","Па'лид Морс","ИНО ИНО ОРА АНА","САТ АНА!","Дайм'ниодиес Арс'иай Ле'ионес","Игкау'хом'нау ен Кеосу","Хо Дьяк'нос ту Ап'айрон","Ар'ж На'си","Диабо ас Во'исцум","Си гн'ам Ко'ну")) if(current_cycle >= 75 && prob(33)) // 30 units, 150 seconds M.AdjustConfused(6 SECONDS) if(isvampirethrall(M)) M.mind.remove_antag_datum(/datum/antagonist/mindslave/thrall) holder.remove_reagent(id, volume) - M.visible_message("[M] recoils, their skin flushes with colour, regaining their sense of control!") + M.visible_message(span_dangerbigger("[M] отшатыва[pluralize_ru(M.gender, "ет", "ют")]ся, [genderize_ru(M.gender, "его", "её", "его", "их")] кожа окрашивается в яркий цвет, [genderize_ru(M.gender, "он", "она", "оно", "они")] вновь обрета[pluralize_ru(M.gender, "ет", "ют")] чувство контроля над собой!")) M.SetJitter(0) M.SetStuttering(0) M.SetConfused(0) @@ -356,10 +356,10 @@ GLOBAL_LIST_INIT(diseases_carrier_reagents, list( return ..() | update_flags switch(current_cycle) if(1 to 4) - to_chat(M, "Something sizzles in your veins!") + to_chat(M, span_warning("Вы чувствуете, как что-то начинает бурлить в ваших жилах!")) vamp.base_nullification() if(5 to 12) - to_chat(M, "You feel an intense burning inside of you!") + to_chat(M, span_danger("Вы чувствуете сильное жжение внутри!")) update_flags |= M.adjustFireLoss(1, FALSE) M.Stuttering(2 SECONDS) M.Jitter(40 SECONDS) @@ -367,8 +367,8 @@ GLOBAL_LIST_INIT(diseases_carrier_reagents, list( M.emote("scream") vamp.base_nullification() if(13 to INFINITY) - M.visible_message("[M] suddenly bursts into flames!", - "You suddenly ignite in a holy fire!") + M.visible_message(span_danger("[M] внезапно вспыхива[pluralize_ru(M.gender, "ет", "ют")]!"), + span_danger("Внезапно святая вода внутри вас начинает гореть!")) M.fire_stacks = min(5, M.fire_stacks + 3) M.IgniteMob() update_flags |= M.adjustFireLoss(3, FALSE) @@ -378,15 +378,6 @@ GLOBAL_LIST_INIT(diseases_carrier_reagents, list( M.emote("scream") vamp.base_nullification() - if(ishuman(M) && !M.mind?.isholy) - switch(current_cycle) - if(0 to 24) - M.adjustBrainLoss(0.5, FALSE) - if(25 to 49) - M.adjustBrainLoss(1, FALSE) - if(50 to INFINITY) - M.adjustBrainLoss(2, FALSE) - return ..() | update_flags @@ -402,13 +393,13 @@ GLOBAL_LIST_INIT(diseases_carrier_reagents, list( if(method == REAGENT_TOUCH) if(target.wear_mask) - to_chat(target, "Your mask protects you from the holy water!") + to_chat(target, span_warning("Ваша маска защищает вас от святой воды!")) return else if(target.head) - to_chat(target, "Your helmet protects you from the holy water!") + to_chat(target, span_warning("Ваш шлем защищает вас от святой воды!")) return else - to_chat(target, "Something holy interferes with your powers!") + to_chat(target, span_warning("Вы чувствуете, как ваши силы ослабевают из-за внезапного святого присутствия рядом!")) vamp.adjust_nullification(5, 2) @@ -422,12 +413,12 @@ GLOBAL_LIST_INIT(diseases_carrier_reagents, list( T.Bless() /datum/reagent/fuel/unholywater //if you somehow managed to extract this from someone, dont splash it on yourself and have a smoke - name = "Unholy Water" + name = "Нечестивая вода" id = "unholywater" - description = "Something that shouldn't exist on this plane of existance." + description = "Что-то, не должно существовать в этой реальности." process_flags = ORGANIC | SYNTHETIC //ethereal means everything processes it. metabolization_rate = 2.5 * REAGENTS_METABOLISM - taste_description = "sulfur" + taste_description = "серы" /datum/reagent/fuel/unholywater/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -450,13 +441,13 @@ GLOBAL_LIST_INIT(diseases_carrier_reagents, list( return ..() | update_flags /datum/reagent/hellwater - name = "Hell Water" + name = "Адская вода" id = "hell_water" - description = "YOUR FLESH! IT BURNS!" + description = "ЖЖЁТСЯ, КАК ЖЖЁТСЯ!" process_flags = ORGANIC | SYNTHETIC //Admin-bus has no brakes! KILL THEM ALL. metabolization_rate = 2.5 * REAGENTS_METABOLISM can_synth = FALSE - taste_description = "burning" + taste_description = "ожогов" /datum/reagent/hellwater/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -468,12 +459,12 @@ GLOBAL_LIST_INIT(diseases_carrier_reagents, list( return ..() | update_flags /datum/reagent/liquidgibs - name = "Liquid gibs" + name = "Жидкие ошмётки" id = "liquidgibs" color = "#FF9966" - description = "You don't even want to think about what's in here." + description = "Вы даже думать не хотите, что это такое." reagent_state = LIQUID - taste_description = "meat" + taste_description = "мяса" /datum/reagent/liquidgibs/reaction_turf(turf/T, volume) //yes i took it from synthflesh... if(volume >= 5 && !isspaceturf(T)) @@ -481,20 +472,20 @@ GLOBAL_LIST_INIT(diseases_carrier_reagents, list( playsound(T, 'sound/effects/splat.ogg', 50, 1, -3) /datum/reagent/lye - name = "Lye" + name = "Щёлочь" id = "lye" - description = "Also known as sodium hydroxide." + description = "Также известна как гидроксид натрия." reagent_state = LIQUID color = "#FFFFD6" // very very light yellow - taste_description = "ACID"//don't drink lye, kids + taste_description = "едкой кислоты"//don't drink lye, kids /datum/reagent/drying_agent - name = "Drying agent" + name = "Сушильный агент" id = "drying_agent" - description = "Can be used to dry things." + description = "Используется для осушения различных поверхностей." reagent_state = LIQUID color = "#A70FFF" - taste_description = "dry mouth" + taste_description = "сухости" /datum/reagent/drying_agent/reaction_turf(turf/simulated/T, volume) if(istype(T)) diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index e981aa01efb1..10b15d54c905 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -30,21 +30,19 @@ var/turf/T = get_turf(holder.my_atom) if(!T) return - - var/color = mix_color_from_reagents(holder.reagent_list) T.visible_message(span_warning("The solution generates a strong vapor!")) - new /obj/effect/particle_effect/chem_smoke/small(T, color) - playsound(T, 'sound/effects/smoke.ogg', 50, TRUE, -3) - for(var/mob/living/carbon/carbon in view(radius, T)) - if(!carbon.can_breathe_gas()) - continue - carbon.emote("gasp") - if(amount >= 60) - carbon.AdjustLoseBreath(2 SECONDS) - for(var/local_reagent in reagents) - carbon.reagents.add_reagent(local_reagent, REAGENT_EVAPORATION(amount)) + var/datum/reagents/reagents_list = new (amount * reagents.len) + for(var/reagent in reagents) + reagents_list.add_reagent(reagent, amount) + + var/datum/effect_system/fluid_spread/smoke/chem/quick/vapor/smoke = new + smoke.attach(T) + smoke.set_up(range = radius, location = T, carry = reagents_list, silent = TRUE) + smoke.start() + + playsound(T, 'sound/effects/smoke.ogg', 50, TRUE, -3) /datum/chemical_reaction/proc/chemical_mob_spawn(datum/reagents/holder, amount_to_spawn, reaction_name, mob_class = HOSTILE_SPAWN, mob_faction = "chemicalsummon", random = TRUE, gold_core_spawn = FALSE) if(holder && holder.my_atom) diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 243c04f8ef31..409c9cb4aedb 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -19,8 +19,23 @@ var/location = get_turf(holder.my_atom) holder.my_atom.visible_message("The solution spews out foam!") - var/datum/effect_system/foam_spread/s = new() - s.set_up(created_volume, location, holder, 0) + var/datum/effect_system/fluid_spread/foam/s = new() + s.set_up(amount = created_volume, location = location, carry = holder) + s.start() + holder.clear_reagents() + +/datum/chemical_reaction/firefighting_foam_liguid + name = "Firefighting foam liquid" + id = "firefighting_foam_liquid" + required_reagents = list("firefighting_foam" = 1, "water" = 1) + result_amount = 2 + +/datum/chemical_reaction/firefighting_foam_liguid/on_reaction(datum/reagents/holder, created_volume) + var/location = get_turf(holder.my_atom) + holder.my_atom.visible_message(span_warning("The solution spews out foam!")) + + var/datum/effect_system/fluid_spread/foam/firefighting/s = new() + s.set_up(amount = created_volume, location = location) s.start() holder.clear_reagents() @@ -37,8 +52,8 @@ holder.my_atom.visible_message("The solution spews out a metalic foam!") - var/datum/effect_system/foam_spread/s = new() - s.set_up(created_volume, location, holder, MFOAM_ALUMINUM) + var/datum/effect_system/fluid_spread/foam/metal/s = new() + s.set_up(amount = created_volume, location = location) s.start() @@ -54,10 +69,25 @@ holder.my_atom.visible_message("The solution spews out a metalic foam!") - var/datum/effect_system/foam_spread/s = new() - s.set_up(created_volume, location, holder, MFOAM_IRON) + var/datum/effect_system/fluid_spread/foam/metal/iron/s = new() + s.set_up(amount = created_volume, location = location) s.start() +/datum/chemical_reaction/resinfoam + name = "Resin foam" + id = "resinfoam" + result = null + required_reagents = list("oil" = 3, "fluorosurfactant" = 1, "sacid" = 1) + result_amount = 5 + +/datum/chemical_reaction/resinfoam/on_reaction(datum/reagents/holder, created_volume) + var/location = get_turf(holder.my_atom) + + holder.my_atom.visible_message(span_warning("The solution spews out a resin foam!")) + + var/datum/effect_system/fluid_spread/foam/metal/resin/s = new() + s.set_up(amount = created_volume, location = location) + s.start() // Synthesizing these three chemicals is pretty complex in real life, but fuck it, it's just a game! /datum/chemical_reaction/ammonia diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index b28c80245de3..228e3766258e 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -271,18 +271,11 @@ for(var/f_reagent in forbidden_reagents) holder.del_reagent(f_reagent) var/location = get_turf(holder.my_atom) - var/datum/effect_system/smoke_spread/chem/S = new + var/datum/effect_system/fluid_spread/smoke/chem/smoke = new playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3) - if(S) - S.set_up(holder, location) - if(created_volume < 5) - S.start(1) - if(created_volume >=5 && created_volume < 10) - S.start(2) - if(created_volume >= 10 && created_volume < 15) - S.start(3) - if(created_volume >=15) - S.start(4) + if(smoke) + smoke.set_up(amount = round(created_volume), carry = holder, location = location) + smoke.start(TRUE) /datum/chemical_reaction/smoke/smoke_powder name = "smoke_powder_smoke" @@ -303,18 +296,18 @@ /datum/chemical_reaction/smoke_solid/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) - var/datum/effect_system/smoke_spread/solid/S = new + var/datum/effect_system/fluid_spread/smoke/solid/smoke = new playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3) - if(S) + if(smoke) if(created_volume < 15) - S.set_up(3, 0, location, range = 0) + smoke.set_up(amount = 3, location = location, effect_range = 0) if(created_volume >= 15 && created_volume < 30) - S.set_up(3, 0, location, range = "2x2") + smoke.set_up(amount = 3, location = location, effect_range = "2x2") if(created_volume >= 30 && created_volume < 48) - S.set_up(3, 0, location, range = 1) + smoke.set_up(amount = 3, location = location, effect_range = 1) if(created_volume >= 48) - S.set_up(3, 0, location, range = 2) - S.start() + smoke.set_up(amount = 3, location = location, effect_range = 2) + smoke.start() /datum/chemical_reaction/sonic_powder name = "sonic_powder" diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index fbcadc9f651a..10088ffa0a49 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -17,7 +17,7 @@ var/pass_open_check = FALSE // Pass open check in empty verb /obj/item/reagent_containers/verb/set_APTFT() //set amount_per_transfer_from_this - set name = "Set transfer amount" + set name = "Установить объём перемещения" set category = "Object" set src in usr @@ -28,47 +28,47 @@ var/default = null if(amount_per_transfer_from_this in possible_transfer_amounts) default = amount_per_transfer_from_this - var/N = input("Amount per transfer from this:", "[src]", default) as null|anything in possible_transfer_amounts + var/N = input("Объём перемещения отсюда:", "[declent_ru(NOMINATIVE)]", default) as null|anything in possible_transfer_amounts if(!N) return if(!Adjacent(usr)) - to_chat(usr, "You have moved too far away!") + balloon_alert(usr, "слишком далеко!") return if(usr.incapacitated() || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED)) - to_chat(usr, "You can't use your hands!") + balloon_alert(usr, "руки заблокированы!") return amount_per_transfer_from_this = N - to_chat(usr, "[src] will now transfer [N] units at a time.") + to_chat(usr, span_notice("Теперь [declent_ru(NOMINATIVE)] буд[pluralize_ru(gender, "ет", "ут")] перемещать по [N] единиц[declension_ru(N, "у", "ы", "")] вещества за раз.")) -/obj/item/reagent_containers/AltClick(mob/user) - if(Adjacent(user)) - set_APTFT() +/obj/item/reagent_containers/click_alt(mob/user) + set_APTFT() + return CLICK_ACTION_SUCCESS /obj/item/reagent_containers/verb/empty() - set name = "Empty Container" + set name = "Вылить содержимое" set category = "Object" set src in usr if(usr.incapacitated() || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED)) return - if(alert(usr, "Are you sure you want to empty that?", "Empty Container:", "Yes", "No") != "Yes") + if(tgui_alert(usr, "Вы уверены?", "Вылить содержимое", list("Да", "Нет")) != "Да") return if(!usr.Adjacent(src) || usr.incapacitated() || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED)) return if(isturf(usr.loc) && loc == usr) if(!is_open_container() && !pass_open_check) - to_chat(usr, "Open [src] first.") + balloon_alert(usr, "сначала откройте!") return if(reagents.total_volume) - to_chat(usr, "You empty [src] onto the floor.") + balloon_alert(usr, "содержимое вылито") reagents.reaction(usr.loc) reagents.clear_reagents() else - to_chat(usr, "You tried emptying [src], but there's nothing in it.") + balloon_alert(usr, "пусто, нечего выливать!") /obj/item/reagent_containers/New() create_reagents(volume, temperature_min, temperature_max) @@ -110,10 +110,10 @@ /obj/item/reagent_containers/attack_self(mob/user = usr) if(has_lid) if(is_open_container()) - to_chat(user, "You put the lid on [src].") + balloon_alert(user, "крышка надета") add_lid() else - to_chat(user, "You take the lid off [src].") + balloon_alert(user, "крышка снята") remove_lid() @@ -126,19 +126,19 @@ /obj/item/reagent_containers/wash(mob/user, atom/source) if(is_open_container()) if(reagents.total_volume >= volume) - to_chat(user, "[src] is full.") + balloon_alert(user, "нет места!") return else reagents.add_reagent("water", min(volume - reagents.total_volume, amount_per_transfer_from_this)) - to_chat(user, "You fill [src] from [source].") + to_chat(user, span_notice("Вы наполняете [declent_ru(ACCUSATIVE)] из [source.declent_ru(GENITIVE)].")) return ..() /obj/item/reagent_containers/examine(mob/user) . = ..() if(visible_transfer_rate) - . += "It will transfer [amount_per_transfer_from_this] unit[amount_per_transfer_from_this != 1 ? "s" : ""] at a time." + . += span_notice("Объём перемещения содержимого отсюда - [amount_per_transfer_from_this] единиц[declension_ru(amount_per_transfer_from_this, "а", "ы", "")] вещества за раз.") if(possible_transfer_amounts) - . += "Alt-click to change the transfer amount." + . += span_notice("Используйте Alt+ЛКМ, чтобы изменить объём перемещения содержимого.") diff --git a/code/modules/reagents/reagent_containers/applicator.dm b/code/modules/reagents/reagent_containers/applicator.dm index c7c41578c0d5..e0158d8ec103 100644 --- a/code/modules/reagents/reagent_containers/applicator.dm +++ b/code/modules/reagents/reagent_containers/applicator.dm @@ -1,6 +1,15 @@ /obj/item/reagent_containers/applicator name = "auto-mender" - desc = "A small electronic device designed to topically apply healing chemicals." + desc = "Небольшое электронное устройство, предназначенное для местного применения лекарственных препаратов." + ru_names = list( + NOMINATIVE = "авто-мендер", + GENITIVE = "авто-мендера", + DATIVE = "авто-мендеру", + ACCUSATIVE = "авто-мендер", + INSTRUMENTAL = "авто-мендером", + PREPOSITIONAL = "авто-мендере" + ) + gender = MALE icon = 'icons/goonstation/objects/objects.dmi' icon_state = "mender" item_state = "mender" @@ -25,7 +34,7 @@ emagged = TRUE ignore_flags = TRUE if(user) - to_chat(user, "You short out the safeties on [src].") + balloon_alert(user, "протоколы безопасности взломаны") /obj/item/reagent_containers/applicator/set_APTFT() set hidden = TRUE @@ -39,9 +48,9 @@ found_forbidden_reagent = TRUE if(found_forbidden_reagent) if(ismob(loc)) - to_chat(loc, "[src] identifies and removes a harmful substance.") + to_chat(loc, span_warning("[capitalize(declent_ru(NOMINATIVE))] определяет и удаляет недопустимое вещество.")) else - visible_message("[src] identifies and removes a harmful substance.") + visible_message(span_warning("[capitalize(declent_ru(NOMINATIVE))] определяет и удаляет недопустимое вещество.")) update_icon() @@ -72,11 +81,11 @@ return . if(!reagents || !reagents.total_volume) - to_chat(user, span_warning("[src] is empty!")) + balloon_alert(user, "пусто!") return . if(applying) - to_chat(user, span_warning("You're already applying [src].")) + balloon_alert(user, "уже используется!") return . if(!ignore_flags && !target.can_inject(user, TRUE)) @@ -84,13 +93,13 @@ if(target == user) target.visible_message( - span_notice("[user] begins mending [user.p_them()]self with [src]."), - span_notice("You begin mending yourself with [src]."), + span_notice("[user] начина[pluralize_ru(user.gender, "ет", "ют")] применять [declent_ru(ACCUSATIVE)] на себе."), + span_notice("Вы начинаете применять [declent_ru(ACCUSATIVE)] на себе."), ) else user.visible_message( - span_notice("[user] begins mending [target] with [src]."), - span_notice("You begin mending [target] with [src]."), + span_notice("[user] начина[pluralize_ru(user.gender, "ет", "ют")] применять [declent_ru(ACCUSATIVE)] на [target]."), + span_notice("Вы начинаете применять [declent_ru(ACCUSATIVE)] на [target]."), ) . |= ATTACK_CHAIN_SUCCESS @@ -106,10 +115,10 @@ measured_health = target.health apply_to(target, user, 1, FALSE, def_zone) if(measured_health == target.health) - to_chat(user, span_notice("[target] is finished healing and [src] powers down automatically.")) + balloon_alert(user, "авто-мендер выключен!") break if(!reagents.total_volume) - to_chat(user, span_notice("[src] is out of reagents and powers down automatically.")) + balloon_alert(user, "содержимое закончилось!") break cycle_count++ @@ -132,14 +141,41 @@ /obj/item/reagent_containers/applicator/brute name = "brute auto-mender" + desc = "Небольшое электронное устройство, предназначенное для местного применения лекарственных препаратов. Эта версия - для заживления механических повреждений." + ru_names = list( + NOMINATIVE = "авто-мендер (Мех. Повреждения)", + GENITIVE = "авто-мендера (Мех. Повреждения)", + DATIVE = "авто-мендеру (Мех. Повреждения)", + ACCUSATIVE = "авто-мендер (Мех. Повреждения)", + INSTRUMENTAL = "авто-мендером (Мех. Повреждения)", + PREPOSITIONAL = "авто-мендере (Мех. Повреждения)" + ) list_reagents = list("styptic_powder" = 200) /obj/item/reagent_containers/applicator/burn name = "burn auto-mender" + desc = "Небольшое электронное устройство, предназначенное для местного применения лекарственных препаратов. Эта версия - для заживления термических повреждений." + ru_names = list( + NOMINATIVE = "авто-мендер (Терм. Повреждения)", + GENITIVE = "авто-мендера (Терм. Повреждения)", + DATIVE = "авто-мендеру (Терм. Повреждения)", + ACCUSATIVE = "авто-мендер (Терм. Повреждения)", + INSTRUMENTAL = "авто-мендером (Терм. Повреждения)", + PREPOSITIONAL = "авто-мендере (Терм. Повреждения)" + ) list_reagents = list("silver_sulfadiazine" = 200) /obj/item/reagent_containers/applicator/dual name = "dual auto-mender" + desc = "Небольшое электронное устройство, предназначенное для местного применения лекарственных препаратов. Эта версия - для заживления как механических, так и термических повреждений." + ru_names = list( + NOMINATIVE = "авто-мендер (Синт-плоть)", + GENITIVE = "авто-мендера (Синт-плоть)", + DATIVE = "авто-мендеру (Синт-плоть)", + ACCUSATIVE = "авто-мендер (Синт-плоть)", + INSTRUMENTAL = "авто-мендером (Синт-плоть)", + PREPOSITIONAL = "авто-мендере (Синт-плоть)" + ) list_reagents = list("synthflesh" = 200) /obj/item/reagent_containers/applicator/dual/syndi // It magically goes through hardsuits. Don't ask how. diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index 5b68574edd01..7ab8a71680ff 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -2,7 +2,15 @@ /obj/item/reagent_containers/borghypo name = "Cyborg Hypospray" - desc = "An advanced chemical synthesizer and injection system, designed for heavy-duty medical equipment." + desc = "Передовой химический синтезатор, оборудованный системой инъекции, разработанный для тяжёлого медицинского оборудования." + ru_names = list( + NOMINATIVE = "робо-гипоспрей", + GENITIVE = "робо-гипоспрея", + DATIVE = "робо-гипоспрею", + ACCUSATIVE = "робо-гипоспрей", + INSTRUMENTAL = "робо-гипоспреем", + PREPOSITIONAL = "робо-гипоспрее" + ) icon = 'icons/obj/hypo.dmi' item_state = "hypo" icon_state = "borghypo" @@ -29,7 +37,15 @@ /obj/item/reagent_containers/borghypo/syndicate name = "syndicate cyborg hypospray" - desc = "An experimental piece of Syndicate technology used to produce powerful restorative nanites used to very quickly restore injuries of all types. Also metabolizes potassium iodide, for radiation poisoning, and hydrocodone, for field surgery and pain relief." + desc = "Передовой химический синтезатор, оборудованный системой инъекции, разработанный для тяжёлого медицинского оборудования. Специальная версия, производимая Синдикатом для установки в боевых роботов поддержики, оснащённая передовыми лечебными препаратами." + ru_names = list( + NOMINATIVE = "Синди-робо-гипоспрей", + GENITIVE = "Синди-робо-гипоспрея", + DATIVE = "Синди-робо-гипоспрею", + ACCUSATIVE = "Синди-робо-гипоспрей", + INSTRUMENTAL = "Синди-робо-гипоспреем", + PREPOSITIONAL = "Синди-робо-гипоспрее" + ) icon_state = "borghypo_s" charge_cost = 20 recharge_time = 2 @@ -45,7 +61,15 @@ /obj/item/reagent_containers/borghypo/upgraded name = "upgraded cyborg hypospray" - desc = "An upgraded advanced chemical synthesizer and injection system, designed for heavy-duty medical equipment." + desc = "Улучшенная версия робо-гипоспрея. Передовой химический синтезатор, оборудованный системой инъекции, разработанный для тяжёлого медицинского оборудования." + ru_names = list( + NOMINATIVE = "улучшенный робо-гипоспрей", + GENITIVE = "улучшенного робо-гипоспрея", + DATIVE = "улучшенному робо-гипоспрею", + ACCUSATIVE = "улучшенный робо-гипоспрей", + INSTRUMENTAL = "улучшенным робо-гипоспреем", + PREPOSITIONAL = "улучшенном робо-гипоспрее" + ) reagent_ids = list( \ "salglu_solution" = list('icons/effects/bleed.dmi', "bleed10"), \ "mannitol" = list('icons/obj/species_organs/grey.dmi', "brain2"), \ @@ -131,7 +155,7 @@ var/datum/reagents/our_reagents = reagent_list[mode] if(!our_reagents.total_volume) - to_chat(user, span_warning("The injector is empty.")) + balloon_alert(user, "пусто!") return . if(!target.can_inject(user, TRUE, user.zone_selected, bypass_protection, bypass_protection)) @@ -139,14 +163,14 @@ . |= ATTACK_CHAIN_SUCCESS - to_chat(user, span_notice("You inject [target] with the injector.")) - to_chat(target, span_notice("You feel a tiny prick!")) + to_chat(user, span_notice("Вы делаете укол [target] своим инъектором.")) + to_chat(target, span_notice("Вы чувствуете едва заметный укол!")) our_reagents.add_reagent(target) var/datum/reagent/injected = GLOB.chemical_reagents_list[reagent_ids[mode]] var/contained = injected.name var/trans = our_reagents.trans_to(target, amount_per_transfer_from_this) add_attack_logs(user, target, "Injected with [name] containing [contained], transfered [trans] units", injected.harmless ? ATKLOG_ALMOSTALL : null) - to_chat(user, span_notice("[trans] units injected. [our_reagents.total_volume] units remaining.")) + to_chat(user, span_notice("Вы вкалываете [trans] единиц[declension_ru(trans, "у", "ы", "")]. В хранилище осталось ещё [our_reagents.total_volume] единиц[declension_ru(our_reagents.total_volume, "а", "ы", "")] вещества.")) /obj/item/reagent_containers/borghypo/attack_self(mob/user) @@ -165,14 +189,14 @@ var/datum/reagent/R = GLOB.chemical_reagents_list[reagent_ids[mode]] amount_per_transfer_from_this = (reagent_ids[mode] == "perfluorodecalin") ? 3 : 5 - to_chat(user, span_notice("Synthesizer is now producing '[R.name]'.")) + to_chat(user, span_notice("Конфигурация синтезатора обновлена. Активирован синтез вещества \"[R.name]\".")) /obj/item/reagent_containers/borghypo/examine(mob/user) . = ..() if(bypass_protection) - . += span_boldnotice("Advanced injector is installed on this module, allowing it to pierce thick tissue and materials.") + . += span_boldnotice("На этом модуле установлен усовершенствованный инъектор, позволяющий пробивать толстые ткани и материалы.") if(get_dist(user, src) <= 2) var/empty = TRUE @@ -180,16 +204,24 @@ for(var/datum/reagents/RS in reagent_list) var/datum/reagent/R = locate() in RS.reagent_list if(R) - . += span_notice("It currently has [R.volume] units of [R.name] stored.") + . += span_notice("Содержит в себе [R.volume] единиц[declension_ru(R.volume, "у", "ы", "")] вещества \"[R.name]\".") empty = FALSE if(empty) - . += span_notice("It is currently empty. Allow some time for the internal syntheszier to produce more.") + . += span_notice("Пусто.") /obj/item/reagent_containers/borghypo/basic name = "Basic Medical Hypospray" - desc = "A very basic medical hypospray, capable of providing simple medical treatment in emergencies." + desc = "Сильно упрощённая версия медицинского гипоспрея, способная ввести узко-ограниченный набор лекарственных медикаментов для оказания первой помощи." + ru_names = list( + NOMINATIVE = "стандартный медицинский гипоспрей", + GENITIVE = "стандартного медицинского гипоспрея", + DATIVE = "стандартному медицинскому гипоспрею", + ACCUSATIVE = "стандартный медицинский гипоспрей", + INSTRUMENTAL = "стандартным медицинским гипоспреем", + PREPOSITIONAL = "стандартном медицинском гипоспрее" + ) reagent_ids = list( \ "salglu_solution" = list('icons/effects/bleed.dmi', "bleed10"), \ "epinephrine" = list('icons/obj/surgery.dmi', "heart-on")) @@ -198,7 +230,15 @@ /obj/item/reagent_containers/borghypo/basic/upgraded name = "Upgraded Basic Medical Hypospray" - desc = "Basic medical hypospray, capable of providing standart medical treatment." + desc = "Упрощённная версия медицинского гипоспрея, способная ввести ограниченный набор медикаментов для лечения пациентов." + ru_names = list( + NOMINATIVE = "улучшенный медицинский гипоспрей", + GENITIVE = "улучшенного медицинского гипоспрея", + DATIVE = "улучшенному медицинскому гипоспрею", + ACCUSATIVE = "улучшенный медицинский гипоспрей", + INSTRUMENTAL = "улучшенным медицинским гипоспреем", + PREPOSITIONAL = "улучшенном медицинском гипоспрее" + ) reagent_ids = list( \ "salglu_solution" = list('icons/effects/bleed.dmi', "bleed10"), \ "epinephrine" = list('icons/obj/surgery.dmi', "heart-on"), \ @@ -209,7 +249,15 @@ /obj/item/reagent_containers/borghypo/emagged name = "ERR3NU1l_INJ3C70R" - desc = "This injector will deliver deadly chemicals into anyone not fortunate enough to end up as an enemy to Syndicate. Who could've thought NanoTrasen borgs can synthesize that?" + desc = "Этот инъектор будет впрыскивать смертоносные химикаты в каждого, кому не посчастливилось оказаться врагом Синдиката. Кто бы мог подумать, что роботы НаноТрейзен способы синтезировать такое?" + ru_names = list( + NOMINATIVE = "0ШNBK4_IИБ3KT0Я", + GENITIVE = "0ШNBK4_IИБ3KT0Я", + DATIVE = "0ШNBK4_IИБ3KT0Я", + ACCUSATIVE = "0ШNBK4_IИБ3KT0Я", + INSTRUMENTAL = "0ШNBK4_IИБ3KT0Я", + PREPOSITIONAL = "0ШNBK4_IИБ3KT0Я" + ) icon = 'icons/obj/hypo.dmi' item_state = "borghypo_emag" icon_state = "borghypo_emag" diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index 1daf2b9acac1..00d8121684bf 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -3,10 +3,19 @@ /obj/item/reagent_containers/glass/bottle name = "bottle" - desc = "A small bottle." + desc = "Небольшая стеклянная бутылочка." + ru_names = list( + NOMINATIVE = "бутылка", + GENITIVE = "бутылки", + DATIVE = "бутылке", + ACCUSATIVE = "бутылку", + INSTRUMENTAL = "бутылкой", + PREPOSITIONAL = "бутылке" + ) + gender = FEMALE icon = 'icons/obj/chemical.dmi' icon_state = "round_bottle" - item_state = "atoxinbottle" + item_state = "round_bottle" amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,25,30) container_type = OPENCONTAINER @@ -51,110 +60,254 @@ /obj/item/reagent_containers/glass/bottle/toxin name = "toxin bottle" - desc = "A small bottle containing toxic compounds." + desc = "Небольшая стеклянная бутылочка, внутри находится сильный токсин." + ru_names = list( + NOMINATIVE = "бутылка (Токсины)", + GENITIVE = "бутылки (Токсины)", + DATIVE = "бутылке (Токсины)", + ACCUSATIVE = "бутылку (Токсины)", + INSTRUMENTAL = "бутылкой (Токсины)", + PREPOSITIONAL = "бутылке (Токсины)" + ) icon_state = "small_bottle" list_reagents = list("toxin" = 30) /obj/item/reagent_containers/glass/bottle/atropine name = "atropine bottle" - desc = "A small bottle containing atropine, used for cardiac emergencies." + desc = "Небольшая стеклянная бутылочка, внутри находится атропин." + ru_names = list( + NOMINATIVE = "бутылка (Атропин)", + GENITIVE = "бутылки (Атропин)", + DATIVE = "бутылке (Атропин)", + ACCUSATIVE = "бутылку (Атропин)", + INSTRUMENTAL = "бутылкой (Атропин)", + PREPOSITIONAL = "бутылке (Атропин)" + ) icon_state = "small_bottle" list_reagents = list("atropine" = 30) /obj/item/reagent_containers/glass/bottle/saline name = "saline-glucose bottle" - desc = "A small bottle containing saline-glucose solution." + desc = "Небольшая стеклянная бутылочка, внутри находится физиологический раствор." + ru_names = list( + NOMINATIVE = "бутылка (Физраствор)", + GENITIVE = "бутылки (Физраствор)", + DATIVE = "бутылке (Физраствор)", + ACCUSATIVE = "бутылку (Физраствор)", + INSTRUMENTAL = "бутылкой (Физраствор)", + PREPOSITIONAL = "бутылке (Физраствор)" + ) icon_state = "small_bottle" list_reagents = list("salglu_solution" = 30) /obj/item/reagent_containers/glass/bottle/salicylic name = "salicylic acid bottle" - desc = "A small bottle containing medicine for pain and fevers." + desc = "Небольшая стеклянная бутылочка, внутри находится салициловая кислота." + ru_names = list( + NOMINATIVE = "бутылка (Салициловая кислота)", + GENITIVE = "бутылки (Салициловая кислота)", + DATIVE = "бутылке (Салициловая кислота)", + ACCUSATIVE = "бутылку (Салициловая кислота)", + INSTRUMENTAL = "бутылкой (Салициловая кислота)", + PREPOSITIONAL = "бутылке (Салициловая кислота)" + ) icon_state = "small_bottle" list_reagents = list("sal_acid" = 30) /obj/item/reagent_containers/glass/bottle/cyanide name = "cyanide bottle" - desc = "A small bottle of cyanide. Bitter almonds?" + desc = "Небольшая стеклянная бутылочка, внутри находится очень токсичный цианид." + ru_names = list( + NOMINATIVE = "бутылка (Цианид)", + GENITIVE = "бутылки (Цианид)", + DATIVE = "бутылке (Цианид)", + ACCUSATIVE = "бутылку (Цианид)", + INSTRUMENTAL = "бутылкой (Цианид)", + PREPOSITIONAL = "бутылке (Цианид)" + ) icon_state = "small_bottle" list_reagents = list("cyanide" = 30) /obj/item/reagent_containers/glass/bottle/mutagen name = "unstable mutagen bottle" - desc = "A small bottle of unstable mutagen. Randomly changes the DNA structure of whoever comes in contact." + desc = "Небольшая стеклянная бутылочка, внутри находится нестабильный мутаген." + ru_names = list( + NOMINATIVE = "бутылка (Нестабильный мутаген)", + GENITIVE = "бутылки (Нестабильный мутаген)", + DATIVE = "бутылке (Нестабильный мутаген)", + ACCUSATIVE = "бутылку (Нестабильный мутаген)", + INSTRUMENTAL = "бутылкой (Нестабильный мутаген)", + PREPOSITIONAL = "бутылке (Нестабильный мутаген)" + ) icon_state = "bottle" list_reagents = list("mutagen" = 30) /obj/item/reagent_containers/glass/bottle/ammonia name = "ammonia bottle" - desc = "A small bottle." + desc = "Небольшая стеклянная бутылочка, внутри находится аммиак." + ru_names = list( + NOMINATIVE = "бутылка (Аммиак)", + GENITIVE = "бутылки (Аммиак)", + DATIVE = "бутылке (Аммиак)", + ACCUSATIVE = "бутылку (Аммиак)", + INSTRUMENTAL = "бутылкой (Аммиак)", + PREPOSITIONAL = "бутылке (Аммиак)" + ) icon_state = "bottle" list_reagents = list("ammonia" = 30) /obj/item/reagent_containers/glass/bottle/diethylamine name = "diethylamine bottle" - desc = "A small bottle." + desc = "Небольшая стеклянная бутылочка, внутри находится диэтиламин." + ru_names = list( + NOMINATIVE = "бутылка (Диэтиламин)", + GENITIVE = "бутылки (Диэтиламин)", + DATIVE = "бутылке (Диэтиламин)", + ACCUSATIVE = "бутылку (Диэтиламин)", + INSTRUMENTAL = "бутылкой (Диэтиламин)", + PREPOSITIONAL = "бутылке (Диэтиламин)" + ) icon_state = "round_bottle" list_reagents = list("diethylamine" = 30) /obj/item/reagent_containers/glass/bottle/facid name = "Fluorosulfuric Acid Bottle" - desc = "A small bottle. Contains a small amount of Fluorosulfuric Acid" + desc = "Небольшая стеклянная бутылочка, внутри находится фторсерная кислота." + ru_names = list( + NOMINATIVE = "бутылка (Фторсерная кислота)", + GENITIVE = "бутылки (Фторсерная кислота)", + DATIVE = "бутылке (Фторсерная кислота)", + ACCUSATIVE = "бутылку (Фторсерная кислота)", + INSTRUMENTAL = "бутылкой (Фторсерная кислота)", + PREPOSITIONAL = "бутылке (Фторсерная кислота)" + ) icon_state = "round_bottle" list_reagents = list("facid" = 30) /obj/item/reagent_containers/glass/bottle/adminordrazine name = "Adminordrazine Bottle" - desc = "A small bottle. Contains the liquid essence of the gods." + desc = "Небольшая стеклянная бутылочка, содержащая в себе божественную эссенцию." + ru_names = list( + NOMINATIVE = "бутылка (Админордразин)", + GENITIVE = "бутылки (Админордразин)", + DATIVE = "бутылке (Админордразин)", + ACCUSATIVE = "бутылку (Админордразин)", + INSTRUMENTAL = "бутылкой (Админордразин)", + PREPOSITIONAL = "бутылке (Админордразин)" + ) icon = 'icons/obj/drinks.dmi' icon_state = "holyflask" list_reagents = list("adminordrazine" = 30) /obj/item/reagent_containers/glass/bottle/capsaicin name = "Capsaicin Bottle" - desc = "A small bottle. Contains hot sauce." + desc = "Небольшая стеклянная бутылочка, внутри находится капсаицин, получаемый из перца чили." + ru_names = list( + NOMINATIVE = "бутылка (Капсаицин)", + GENITIVE = "бутылки (Капсаицин)", + DATIVE = "бутылке (Капсаицин)", + ACCUSATIVE = "бутылку (Капсаицин)", + INSTRUMENTAL = "бутылкой (Капсаицин)", + PREPOSITIONAL = "бутылке (Капсаицин)" + ) icon_state = "round_bottle" list_reagents = list("capsaicin" = 30) /obj/item/reagent_containers/glass/bottle/frostoil name = "Frost Oil Bottle" - desc = "A small bottle. Contains cold sauce." + desc = "Небольшая стеклянная бутылочка, внутри находится ледяное масло, получаемое из ледяного перца чили." + ru_names = list( + NOMINATIVE = "бутылка (Ледяное масло)", + GENITIVE = "бутылки (Ледяное масло)", + DATIVE = "бутылке (Ледяное масло)", + ACCUSATIVE = "бутылку (Ледяное масло)", + INSTRUMENTAL = "бутылкой (Ледяное масло)", + PREPOSITIONAL = "бутылке (Ледяное масло)" + ) icon_state = "round_bottle" list_reagents = list("frostoil" = 30) /obj/item/reagent_containers/glass/bottle/morphine name = "Morphine Bottle" - desc = "A small bottle of morphine, a powerful painkiller." + desc = "Небольшая стеклянная бутылочка, внутри находится морфин." + ru_names = list( + NOMINATIVE = "бутылка (Морфин)", + GENITIVE = "бутылки (Морфин)", + DATIVE = "бутылке (Морфин)", + ACCUSATIVE = "бутылку (Морфин)", + INSTRUMENTAL = "бутылкой (Морфин)", + PREPOSITIONAL = "бутылке (Морфин)" + ) icon_state = "bottle" list_reagents = list("morphine" = 30) /obj/item/reagent_containers/glass/bottle/ether name = "Ether Bottle" - desc = "A small bottle of an ether, a strong anesthetic and sedative." + desc = "Небольшая стеклянная бутылочка, внутри находится эфир." + ru_names = list( + NOMINATIVE = "бутылка (Эфир)", + GENITIVE = "бутылки (Эфир)", + DATIVE = "бутылке (Эфир)", + ACCUSATIVE = "бутылку (Эфир)", + INSTRUMENTAL = "бутылкой (Эфир)", + PREPOSITIONAL = "бутылке (Эфир)" + ) icon_state = "round_bottle" list_reagents = list("ether" = 30) /obj/item/reagent_containers/glass/bottle/charcoal name = "Charcoal Bottle" - desc = "A small bottle. Contains charcoal." + desc = "Небольшая стеклянная бутылочка, внутри находится активированный уголь." + ru_names = list( + NOMINATIVE = "бутылка (Активированный уголь)", + GENITIVE = "бутылки (Активированный уголь)", + DATIVE = "бутылке (Активированный уголь)", + ACCUSATIVE = "бутылку (Активированный уголь)", + INSTRUMENTAL = "бутылкой (Активированный уголь)", + PREPOSITIONAL = "бутылке (Активированный уголь)" + ) icon_state = "wide_bottle" list_reagents = list("charcoal" = 30) /obj/item/reagent_containers/glass/bottle/epinephrine name = "Epinephrine Bottle" - desc = "A small bottle. Contains epinephrine - used to stabilize patients." + desc = "Небольшая стеклянная бутылочка, внутри находится эпинефрин." + ru_names = list( + NOMINATIVE = "бутылка (Эпинефрин)", + GENITIVE = "бутылки (Эпинефрин)", + DATIVE = "бутылке (Эпинефрин)", + ACCUSATIVE = "бутылку (Эпинефрин)", + INSTRUMENTAL = "бутылкой (Эпинефрин)", + PREPOSITIONAL = "бутылке (Эпинефрин)" + ) icon_state = "round_bottle" list_reagents = list("epinephrine" = 30) /obj/item/reagent_containers/glass/bottle/pancuronium name = "Pancuronium Bottle" - desc = "A small bottle of pancuronium." + desc = "Небольшая стеклянная бутылочка, внутри находится панкуроний." + ru_names = list( + NOMINATIVE = "бутылка (Панкуроний)", + GENITIVE = "бутылки (Панкуроний)", + DATIVE = "бутылке (Панкуроний)", + ACCUSATIVE = "бутылку (Панкуроний)", + INSTRUMENTAL = "бутылкой (Панкуроний)", + PREPOSITIONAL = "бутылке (Панкуроний)" + ) icon_state = "round_bottle" list_reagents = list("pancuronium" = 30) /obj/item/reagent_containers/glass/bottle/sulfonal name = "Sulfonal Bottle" - desc = "A small bottle of Sulfonal." + desc = "Небольшая стеклянная бутылочка, внутри находится сульфонал." + ru_names = list( + NOMINATIVE = "бутылка (Сульфонал)", + GENITIVE = "бутылки (Сульфонал)", + DATIVE = "бутылке (Сульфонал)", + ACCUSATIVE = "бутылку (Сульфонал)", + INSTRUMENTAL = "бутылкой (Сульфонал)", + PREPOSITIONAL = "бутылке (Сульфонал)" + ) icon_state = "round_bottle" list_reagents = list("sulfonal" = 30) @@ -162,94 +315,206 @@ /obj/item/reagent_containers/glass/bottle/reagent name = "Reagent Bottle" - desc = "A bottle for storing reagents" + desc = "Небольшая стеклянная бутылочка." icon_state = "reagent_bottle" volume = 50 /obj/item/reagent_containers/glass/bottle/reagent/oil name = "Oil Bottle" - desc = "A reagent bottle. Contains oil." + desc = "Небольшая стеклянная бутылочка, внутри находится масло." + ru_names = list( + NOMINATIVE = "бутылка (Масло)", + GENITIVE = "бутылки (Масло)", + DATIVE = "бутылке (Масло)", + ACCUSATIVE = "бутылку (Масло)", + INSTRUMENTAL = "бутылкой (Масло)", + PREPOSITIONAL = "бутылке (Масло)" + ) list_reagents = list("oil" = 50) pixel_x = -4 pixel_y = 6 /obj/item/reagent_containers/glass/bottle/reagent/phenol name = "Phenol Bottle" - desc = "A reagent bottle. Contains phenol." + desc = "Небольшая стеклянная бутылочка, внутри находится фенол." + ru_names = list( + NOMINATIVE = "бутылка (Фенол)", + GENITIVE = "бутылки (Фенол)", + DATIVE = "бутылке (Фенол)", + ACCUSATIVE = "бутылку (Фенол)", + INSTRUMENTAL = "бутылкой (Фенол)", + PREPOSITIONAL = "бутылке (Фенол)" + ) list_reagents = list("phenol" = 50) pixel_x = 6 pixel_y = 6 /obj/item/reagent_containers/glass/bottle/reagent/acetone name = "Acetone Bottle" - desc = "A reagent bottle. Contains acetone." + desc = "Небольшая стеклянная бутылочка, внутри находится ацетон." + ru_names = list( + NOMINATIVE = "бутылка (Ацетон)", + GENITIVE = "бутылки (Ацетон)", + DATIVE = "бутылке (Ацетон)", + ACCUSATIVE = "бутылку (Ацетон)", + INSTRUMENTAL = "бутылкой (Ацетон)", + PREPOSITIONAL = "бутылке (Ацетон)" + ) list_reagents = list("acetone" = 50) pixel_x = -4 /obj/item/reagent_containers/glass/bottle/reagent/ammonia name = "Ammonia Bottle" - desc = "A reagent bottle. Contains ammonia." + desc = "Небольшая стеклянная бутылочка, внутри находится аммиак." + ru_names = list( + NOMINATIVE = "бутылка (Аммиак)", + GENITIVE = "бутылки (Аммиак)", + DATIVE = "бутылке (Аммиак)", + ACCUSATIVE = "бутылку (Аммиак)", + INSTRUMENTAL = "бутылкой (Аммиак)", + PREPOSITIONAL = "бутылке (Аммиак)" + ) list_reagents = list("ammonia" = 50) pixel_x = 6 /obj/item/reagent_containers/glass/bottle/reagent/diethylamine name = "Diethylamine Bottle" - desc = "A reagent bottle. Contains diethylamine." + desc = "Небольшая стеклянная бутылочка, внутри находится диэтиламин." + ru_names = list( + NOMINATIVE = "бутылка (Диэтиламин)", + GENITIVE = "бутылки (Диэтиламин)", + DATIVE = "бутылке (Диэтиламин)", + ACCUSATIVE = "бутылку (Диэтиламин)", + INSTRUMENTAL = "бутылкой (Диэтиламин)", + PREPOSITIONAL = "бутылке (Диэтиламин)" + ) list_reagents = list("diethylamine" = 50) pixel_x = -4 pixel_y = -6 /obj/item/reagent_containers/glass/bottle/reagent/acid name = "Acid Bottle" - desc = "A reagent bottle. Contains sulfuric acid." + desc = "Небольшая стеклянная бутылочка, внутри находится серная кислота." + ru_names = list( + NOMINATIVE = "бутылка (Серная кислота)", + GENITIVE = "бутылки (Серная кислота)", + DATIVE = "бутылке (Серная кислота)", + ACCUSATIVE = "бутылку (Серная кислота)", + INSTRUMENTAL = "бутылкой (Серная кислота)", + PREPOSITIONAL = "бутылке (Серная кислота)" + ) list_reagents = list("sacid" = 50) pixel_x = 6 pixel_y = -6 /obj/item/reagent_containers/glass/bottle/reagent/formaldehyde name = "Formaldehyde Bottle" - desc = "A reagent bottle. Contains formaldehyde." + desc = "Небольшая стеклянная бутылочка, внутри находится формальдегид." + ru_names = list( + NOMINATIVE = "бутылка (Формальдегид)", + GENITIVE = "бутылки (Формальдегид)", + DATIVE = "бутылке (Формальдегид)", + ACCUSATIVE = "бутылку (Формальдегид)", + INSTRUMENTAL = "бутылкой (Формальдегид)", + PREPOSITIONAL = "бутылке (Формальдегид)" + ) list_reagents = list("formaldehyde" = 50) /obj/item/reagent_containers/glass/bottle/reagent/synaptizine name = "Synaptizine Bottle" - desc = "A reagent bottle. Contains synaptizine." + desc = "Небольшая стеклянная бутылочка, внутри находится синаптизин." + ru_names = list( + NOMINATIVE = "бутылка (Синаптизин)", + GENITIVE = "бутылки (Синаптизин)", + DATIVE = "бутылке (Синаптизин)", + ACCUSATIVE = "бутылку (Синаптизин)", + INSTRUMENTAL = "бутылкой (Синаптизин)", + PREPOSITIONAL = "бутылке (Синаптизин)" + ) list_reagents = list("synaptizine" = 50) /obj/item/reagent_containers/glass/bottle/reagent/morphine name = "Morphine Bottle" - desc = "A reagent bottle. Contains morphine." + desc = "Небольшая стеклянная бутылочка, внутри находится морфин." + ru_names = list( + NOMINATIVE = "бутылка (Морфин)", + GENITIVE = "бутылки (Морфин)", + DATIVE = "бутылке (Морфин)", + ACCUSATIVE = "бутылку (Морфин)", + INSTRUMENTAL = "бутылкой (Морфин)", + PREPOSITIONAL = "бутылке (Морфин)" + ) list_reagents = list("morphine" = 50) /obj/item/reagent_containers/glass/bottle/reagent/insulin name = "Insulin Bottle" - desc = "A reagent bottle. Contains insulin." + desc = "Небольшая стеклянная бутылочка, внутри находится инсулин." + ru_names = list( + NOMINATIVE = "бутылка (Инсулин)", + GENITIVE = "бутылки (Инсулин)", + DATIVE = "бутылке (Инсулин)", + ACCUSATIVE = "бутылку (Инсулин)", + INSTRUMENTAL = "бутылкой (Инсулин)", + PREPOSITIONAL = "бутылке (Инсулин)" + ) list_reagents = list("insulin" = 50) /obj/item/reagent_containers/glass/bottle/reagent/hairgrownium name = "Hair Grow Gel" - desc = "A bottle full of a stimulative hair growth formula" + desc = "Небольшая стеклянная бутылочка, внутри находится власорост." + ru_names = list( + NOMINATIVE = "бутылка (Власорост)", + GENITIVE = "бутылки (Власорост)", + DATIVE = "бутылке (Власорост)", + ACCUSATIVE = "бутылку (Власорост)", + INSTRUMENTAL = "бутылкой (Власорост)", + PREPOSITIONAL = "бутылке (Власорост)" + ) list_reagents = list("hairgrownium" = 50) /obj/item/reagent_containers/glass/bottle/reagent/hair_dye name = "Quantum Hair Dye Bottle" - desc = "A bottle of the ever-changing quantum hair dye." + desc = "Небольшая стеклянная бутылочка, внутри находится квантовая краска для волос." + ru_names = list( + NOMINATIVE = "бутылка (Квантовая краска для волос)", + GENITIVE = "бутылки (Квантовая краска для волос)", + DATIVE = "бутылке (Квантовая краска для волос)", + ACCUSATIVE = "бутылку (Квантовая краска для волос)", + INSTRUMENTAL = "бутылкой (Квантовая краска для волос)", + PREPOSITIONAL = "бутылке (Квантовая краска для волос)" + ) list_reagents = list("hair_dye" = 50) /obj/item/reagent_containers/glass/bottle/reagent/omnizine name = "Omnizine Bottle" - desc = "A reagent bottle. Contains Omnizine." + desc = "Небольшая стеклянная бутылочка, внутри находится омнизин." + ru_names = list( + NOMINATIVE = "бутылка (Омнизин)", + GENITIVE = "бутылки (Омнизин)", + DATIVE = "бутылке (Омнизин)", + ACCUSATIVE = "бутылку (Омнизин)", + INSTRUMENTAL = "бутылкой (Омнизин)", + PREPOSITIONAL = "бутылке (Омнизин)" + ) list_reagents = list("omnizine" = 50) /obj/item/reagent_containers/glass/bottle/reagent/strange_reagent name = "Strange Reagent Bottle" - desc = "A bottle of glowing fluid." + desc = "Небольшая стеклянная бутылочка, внутри находится странный реагент." + ru_names = list( + NOMINATIVE = "бутылка (Странный реагент)", + GENITIVE = "бутылки (Странный реагент)", + DATIVE = "бутылке (Странный реагент)", + ACCUSATIVE = "бутылку (Странный реагент)", + INSTRUMENTAL = "бутылкой (Странный реагент)", + PREPOSITIONAL = "бутылке (Странный реагент)" + ) list_reagents = list("strange_reagent" = 30) ////////////////////Traitor Poison Bottle////////////////////////////// /obj/item/reagent_containers/glass/bottle/traitor - desc = "It has a small skull and crossbones on it. Uh-oh!" + desc = "На ней изображён маленький череп и скрещённые кости. О-о-о!" possible_transfer_amounts = list(5,10,15,25,30,40) volume = 40 @@ -259,247 +524,575 @@ /obj/item/reagent_containers/glass/bottle/plasma name = "plasma dust bottle" - desc = "A small bottle of plasma in dust form. Extremely toxic and reacts with micro-organisms inside blood." + desc = "Небольшая стеклянная бутылочка, внутри находится плазменная пыль." + ru_names = list( + NOMINATIVE = "бутылка (Плазменная пыль)", + GENITIVE = "бутылки (Плазменная пыль)", + DATIVE = "бутылке (Плазменная пыль)", + ACCUSATIVE = "бутылку (Плазменная пыль)", + INSTRUMENTAL = "бутылкой (Плазменная пыль)", + PREPOSITIONAL = "бутылке (Плазменная пыль)" + ) icon_state = "wide_bottle" list_reagents = list("plasma_dust" = 30) /obj/item/reagent_containers/glass/bottle/diphenhydramine name = "diphenhydramine bottle" - desc = "A small bottle of diphenhydramine." + desc = "Небольшая стеклянная бутылочка, внутри находится дифенгидрамин." + ru_names = list( + NOMINATIVE = "бутылка (Дифенгидрамин)", + GENITIVE = "бутылки (Дифенгидрамин)", + DATIVE = "бутылке (Дифенгидрамин)", + ACCUSATIVE = "бутылку (Дифенгидрамин)", + INSTRUMENTAL = "бутылкой (Дифенгидрамин)", + PREPOSITIONAL = "бутылке (Дифенгидрамин)" + ) icon_state = "round_bottle" list_reagents = list("diphenhydramine" = 30) /obj/item/reagent_containers/glass/bottle/oculine name = "oculine bottle" - desc = "A small bottle of combined eye and ear medication." + desc = "Небольшая стеклянная бутылочка, внутри находится окулин." + ru_names = list( + NOMINATIVE = "бутылка (Окулин)", + GENITIVE = "бутылки (Окулин)", + DATIVE = "бутылке (Окулин)", + ACCUSATIVE = "бутылку (Окулин)", + INSTRUMENTAL = "бутылкой (Окулин)", + PREPOSITIONAL = "бутылке (Окулин)" + ) icon_state = "round_bottle" list_reagents = list("oculine" = 30) /obj/item/reagent_containers/glass/bottle/potassium_iodide name = "potassium iodide bottle" - desc = "A small bottle of potassium iodide." + desc = "Небольшая стеклянная бутылочка, внутри находится иодид калия." + ru_names = list( + NOMINATIVE = "бутылка (Иодид калия)", + GENITIVE = "бутылки (Иодид калия)", + DATIVE = "бутылке (Иодид калия)", + ACCUSATIVE = "бутылку (Иодид калия)", + INSTRUMENTAL = "бутылкой (Иодид калия)", + PREPOSITIONAL = "бутылке (Иодид калия)" + ) icon_state = "wide_bottle" list_reagents = list("potass_iodide" = 30) /obj/item/reagent_containers/glass/bottle/cold name = "Rhinovirus culture bottle" - desc = "A small bottle. Contains XY-rhinovirus culture in synthblood medium." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Простуда\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Простуда)", + GENITIVE = "бутылки вирусной культуры (Простуда)", + DATIVE = "бутылке вирусной культуры (Простуда)", + ACCUSATIVE = "бутылку вирусной культуры (Простуда)", + INSTRUMENTAL = "бутылкой вирусной культуры (Простуда)", + PREPOSITIONAL = "бутылке вирусной культуры (Простуда)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/cold /obj/item/reagent_containers/glass/bottle/flu name = "Flu virion culture bottle" - desc = "A small bottle. Contains H13N1 flu virion culture in synthblood medium." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Грипп\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Грипп)", + GENITIVE = "бутылки вирусной культуры (Грипп)", + DATIVE = "бутылке вирусной культуры (Грипп)", + ACCUSATIVE = "бутылку вирусной культуры (Грипп)", + INSTRUMENTAL = "бутылкой вирусной культуры (Грипп)", + PREPOSITIONAL = "бутылке вирусной культуры (Грипп)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/flu /obj/item/reagent_containers/glass/bottle/sneezing name = "Sneezing symptom bottle" - desc = "A small bottle. Contains a simple advanced virus in synthblood medium that makes infected sneeze." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Чихание\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Чихание)", + GENITIVE = "бутылки вирусной культуры (Чихание)", + DATIVE = "бутылке вирусной культуры (Чихание)", + ACCUSATIVE = "бутылку вирусной культуры (Чихание)", + INSTRUMENTAL = "бутылкой вирусной культуры (Чихание)", + PREPOSITIONAL = "бутылке вирусной культуры (Чихание)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/sneezing /obj/item/reagent_containers/glass/bottle/cough name = "Cough symptom bottle" - desc = "A small bottle. Contains a simple advanced virus in synthblood medium that makes infected cough." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Кашель\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Кашель)", + GENITIVE = "бутылки вирусной культуры (Кашель)", + DATIVE = "бутылке вирусной культуры (Кашель)", + ACCUSATIVE = "бутылку вирусной культуры (Кашель)", + INSTRUMENTAL = "бутылкой вирусной культуры (Кашель)", + PREPOSITIONAL = "бутылке вирусной культуры (Кашель)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/cough /obj/item/reagent_containers/glass/bottle/epiglottis_virion name = "Epiglottis virion culture bottle" - desc = "A small bottle. Contains Epiglottis virion culture in synthblood medium." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Надгортанник\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Надгортанник)", + GENITIVE = "бутылки вирусной культуры (Надгортанник)", + DATIVE = "бутылке вирусной культуры (Надгортанник)", + ACCUSATIVE = "бутылку вирусной культуры (Надгортанник)", + INSTRUMENTAL = "бутылкой вирусной культуры (Надгортанник)", + PREPOSITIONAL = "бутылке вирусной культуры (Надгортанник)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/voice_change /obj/item/reagent_containers/glass/bottle/liver_enhance_virion name = "Liver enhancement virion culture bottle" - desc = "A small bottle. Contains liver enhancement virion culture in synthblood medium." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Укрепление печени\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Укрепление печени)", + GENITIVE = "бутылки вирусной культуры (Укрепление печени)", + DATIVE = "бутылке вирусной культуры (Укрепление печени)", + ACCUSATIVE = "бутылку вирусной культуры (Укрепление печени)", + INSTRUMENTAL = "бутылкой вирусной культуры (Укрепление печени)", + PREPOSITIONAL = "бутылке вирусной культуры (Укрепление печени)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/heal /obj/item/reagent_containers/glass/bottle/hullucigen_virion name = "Hullucigen virion culture bottle" - desc = "A small bottle. Contains hullucigen virion culture in synthblood medium." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Галлюцинации\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Галлюцинации)", + GENITIVE = "бутылки вирусной культуры (Галлюцинации)", + DATIVE = "бутылке вирусной культуры (Галлюцинации)", + ACCUSATIVE = "бутылку вирусной культуры (Галлюцинации)", + INSTRUMENTAL = "бутылкой вирусной культуры (Галлюцинации)", + PREPOSITIONAL = "бутылке вирусной культуры (Галлюцинации)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/hullucigen /obj/item/reagent_containers/glass/bottle/pierrot_throat name = "Pierrot's Throat culture bottle" - desc = "A small bottle. Contains H0NI<42 virion culture in synthblood medium." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Горло Пьеро\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Горло Пьеро)", + GENITIVE = "бутылки вирусной культуры (Горло Пьеро)", + DATIVE = "бутылке вирусной культуры (Горло Пьеро)", + ACCUSATIVE = "бутылку вирусной культуры (Горло Пьеро)", + INSTRUMENTAL = "бутылкой вирусной культуры (Горло Пьеро)", + PREPOSITIONAL = "бутылке вирусной культуры (Горло Пьеро)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/pierrot_throat /obj/item/reagent_containers/glass/bottle/mind_restoration name = "Reality Purifier culture bottle" - desc = "A small bottle. Contains Reality Purifier culture in synthblood medium." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Восстановление сознания\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Восстановление сознания)", + GENITIVE = "бутылки вирусной культуры (Восстановление сознания)", + DATIVE = "бутылке вирусной культуры (Восстановление сознания)", + ACCUSATIVE = "бутылку вирусной культуры (Восстановление сознания)", + INSTRUMENTAL = "бутылкой вирусной культуры (Восстановление сознания)", + PREPOSITIONAL = "бутылке вирусной культуры (Восстановление сознания)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/mind_restoration /obj/item/reagent_containers/glass/bottle/advanced_regeneration name = "Advanced Neogenesis culture bottle" - desc = "A small bottle. Contains Advanced Neogenesis culture in synthblood medium." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Улучшенная регенерация\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Улучшенная регенерация)", + GENITIVE = "бутылки вирусной культуры (Улучшенная регенерация)", + DATIVE = "бутылке вирусной культуры (Улучшенная регенерация)", + ACCUSATIVE = "бутылку вирусной культуры (Улучшенная регенерация)", + INSTRUMENTAL = "бутылкой вирусной культуры (Улучшенная регенерация)", + PREPOSITIONAL = "бутылке вирусной культуры (Улучшенная регенерация)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/advanced_regeneration /obj/item/reagent_containers/glass/bottle/stealth_necrosis name = "Necroeyrosis culture bottle" - desc = "A small bottle. Contains Necroeyrosis culture in synthblood medium." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Некроз\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Некроз)", + GENITIVE = "бутылки вирусной культуры (Некроз)", + DATIVE = "бутылке вирусной культуры (Некроз)", + ACCUSATIVE = "бутылку вирусной культуры (Некроз)", + INSTRUMENTAL = "бутылкой вирусной культуры (Некроз)", + PREPOSITIONAL = "бутылке вирусной культуры (Некроз)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/stealth_necrosis /obj/item/reagent_containers/glass/bottle/pre_kingstons name = "Neverlasting Stranger culture bottle" - desc = "A small bottle. Contains Neverlasting Stranger culture in synthblood medium." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Синдром Кингстона\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Синдром Кингстона)", + GENITIVE = "бутылки вирусной культуры (Синдром Кингстона)", + DATIVE = "бутылке вирусной культуры (Синдром Кингстона)", + ACCUSATIVE = "бутылку вирусной культуры (Синдром Кингстона)", + INSTRUMENTAL = "бутылкой вирусной культуры (Синдром Кингстона)", + PREPOSITIONAL = "бутылке вирусной культуры (Синдром Кингстона)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/pre_kingstons /obj/item/reagent_containers/glass/bottle/love name = "love" - desc = "love" + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Любовь\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Любовь)", + GENITIVE = "бутылки вирусной культуры (Любовь)", + DATIVE = "бутылке вирусной культуры (Любовь)", + ACCUSATIVE = "бутылку вирусной культуры (Любовь)", + INSTRUMENTAL = "бутылкой вирусной культуры (Любовь)", + PREPOSITIONAL = "бутылке вирусной культуры (Любовь)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/love /obj/item/reagent_containers/glass/bottle/aggression name = "aggression" - desc = "aggression" + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Агрессия\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Агрессия)", + GENITIVE = "бутылки вирусной культуры (Агрессия)", + DATIVE = "бутылке вирусной культуры (Агрессия)", + ACCUSATIVE = "бутылку вирусной культуры (Агрессия)", + INSTRUMENTAL = "бутылкой вирусной культуры (Агрессия)", + PREPOSITIONAL = "бутылке вирусной культуры (Агрессия)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/aggression /obj/item/reagent_containers/glass/bottle/obsession name = "obsession" - desc = "obsession" + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Одержимость\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Одержимость)", + GENITIVE = "бутылки вирусной культуры (Одержимость)", + DATIVE = "бутылке вирусной культуры (Одержимость)", + ACCUSATIVE = "бутылку вирусной культуры (Одержимость)", + INSTRUMENTAL = "бутылкой вирусной культуры (Одержимость)", + PREPOSITIONAL = "бутылке вирусной культуры (Одержимость)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/obsession /obj/item/reagent_containers/glass/bottle/confusion name = "confusion" - desc = "confusion" + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Замешательство\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Замешательство)", + GENITIVE = "бутылки вирусной культуры (Замешательство)", + DATIVE = "бутылке вирусной культуры (Замешательство)", + ACCUSATIVE = "бутылку вирусной культуры (Замешательство)", + INSTRUMENTAL = "бутылкой вирусной культуры (Замешательство)", + PREPOSITIONAL = "бутылке вирусной культуры (Замешательство)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/confusion /obj/item/reagent_containers/glass/bottle/bones name = "bones" - desc = "bones" + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Кости\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Кости)", + GENITIVE = "бутылки вирусной культуры (Кости)", + DATIVE = "бутылке вирусной культуры (Кости)", + ACCUSATIVE = "бутылку вирусной культуры (Кости)", + INSTRUMENTAL = "бутылкой вирусной культуры (Кости)", + PREPOSITIONAL = "бутылке вирусной культуры (Кости)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/bones /obj/item/reagent_containers/glass/bottle/limb_throw name = "limb_throw" - desc = "limb_throw" + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Отстреливание конечностей\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Отстреливание конечностей)", + GENITIVE = "бутылки вирусной культуры (Отстреливание конечностей)", + DATIVE = "бутылке вирусной культуры (Отстреливание конечностей)", + ACCUSATIVE = "бутылку вирусной культуры (Отстреливание конечностей)", + INSTRUMENTAL = "бутылкой вирусной культуры (Отстреливание конечностей)", + PREPOSITIONAL = "бутылке вирусной культуры (Отстреливание конечностей)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/limb_throw /obj/item/reagent_containers/glass/bottle/laugh name = "laugh" - desc = "laugh" + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Смех\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Смех)", + GENITIVE = "бутылки вирусной культуры (Смех)", + DATIVE = "бутылке вирусной культуры (Смех)", + ACCUSATIVE = "бутылку вирусной культуры (Смех)", + INSTRUMENTAL = "бутылкой вирусной культуры (Смех)", + PREPOSITIONAL = "бутылке вирусной культуры (Смех)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/laugh /obj/item/reagent_containers/glass/bottle/moan name = "moan" - desc = "moan" + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Стоны\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Стоны)", + GENITIVE = "бутылки вирусной культуры (Стоны)", + DATIVE = "бутылке вирусной культуры (Стоны)", + ACCUSATIVE = "бутылку вирусной культуры (Стоны)", + INSTRUMENTAL = "бутылкой вирусной культуры (Стоны)", + PREPOSITIONAL = "бутылке вирусной культуры (Стоны)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/moan /obj/item/reagent_containers/glass/bottle/infection name = "infection" - desc = "infection" + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Инфекция\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Инфекция)", + GENITIVE = "бутылки вирусной культуры (Инфекция)", + DATIVE = "бутылке вирусной культуры (Инфекция)", + ACCUSATIVE = "бутылку вирусной культуры (Инфекция)", + INSTRUMENTAL = "бутылкой вирусной культуры (Инфекция)", + PREPOSITIONAL = "бутылке вирусной культуры (Инфекция)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/infection /obj/item/reagent_containers/glass/bottle/loyalty name = "loyalty" - desc = "loyalty" + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Преданность\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Преданность)", + GENITIVE = "бутылки вирусной культуры (Преданность)", + DATIVE = "бутылке вирусной культуры (Преданность)", + ACCUSATIVE = "бутылку вирусной культуры (Преданность)", + INSTRUMENTAL = "бутылкой вирусной культуры (Преданность)", + PREPOSITIONAL = "бутылке вирусной культуры (Преданность)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/loyalty /obj/item/reagent_containers/glass/bottle/pre_loyalty name = "pre_loyalty" - desc = "pre_loyalty" + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Пре-преданность\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Пре-преданность)", + GENITIVE = "бутылки вирусной культуры (Пре-преданность)", + DATIVE = "бутылке вирусной культуры (Пре-преданность)", + ACCUSATIVE = "бутылку вирусной культуры (Пре-преданность)", + INSTRUMENTAL = "бутылкой вирусной культуры (Пре-преданность)", + PREPOSITIONAL = "бутылке вирусной культуры (Пре-преданность)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/pre_loyalty /obj/item/reagent_containers/glass/bottle/retrovirus name = "Retrovirus culture bottle" - desc = "A small bottle. Contains a retrovirus culture in a synthblood medium." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Ретровирус\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Ретровирус)", + GENITIVE = "бутылки вирусной культуры (Ретровирус)", + DATIVE = "бутылке вирусной культуры (Ретровирус)", + ACCUSATIVE = "бутылку вирусной культуры (Ретровирус)", + INSTRUMENTAL = "бутылкой вирусной культуры (Ретровирус)", + PREPOSITIONAL = "бутылке вирусной культуры (Ретровирус)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/dna_retrovirus /obj/item/reagent_containers/glass/bottle/gbs name = "GBS culture bottle" - desc = "A small bottle. Contains Gravitokinetic Bipotential SADS+ culture in synthblood medium."//Or simply - General BullShit + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"ГБС+\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (ГБС+)", + GENITIVE = "бутылки вирусной культуры (ГБС+)", + DATIVE = "бутылке вирусной культуры (ГБС+)", + ACCUSATIVE = "бутылку вирусной культуры (ГБС+)", + INSTRUMENTAL = "бутылкой вирусной культуры (ГБС+)", + PREPOSITIONAL = "бутылке вирусной культуры (ГБС+)" + ) icon_state = "round_bottle" amount_per_transfer_from_this = 5 spawned_disease = /datum/disease/virus/gbs /obj/item/reagent_containers/glass/bottle/fake_gbs name = "GBS culture bottle" - desc = "A small bottle. Contains Gravitokinetic Bipotential SADS- culture in synthblood medium."//Or simply - General BullShit + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"ГБС-\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (ГБС-)", + GENITIVE = "бутылки вирусной культуры (ГБС-)", + DATIVE = "бутылке вирусной культуры (ГБС-)", + ACCUSATIVE = "бутылку вирусной культуры (ГБС-)", + INSTRUMENTAL = "бутылкой вирусной культуры (ГБС-)", + PREPOSITIONAL = "бутылке вирусной культуры (ГБС-)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/fake_gbs /obj/item/reagent_containers/glass/bottle/brainrot name = "Brainrot culture bottle" - desc = "A small bottle. Contains Cryptococcus Cosmosis culture in synthblood medium." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Мозговая гниль\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Мозговая гниль)", + GENITIVE = "бутылки вирусной культуры (Мозговая гниль)", + DATIVE = "бутылке вирусной культуры (Мозговая гниль)", + ACCUSATIVE = "бутылку вирусной культуры (Мозговая гниль)", + INSTRUMENTAL = "бутылкой вирусной культуры (Мозговая гниль)", + PREPOSITIONAL = "бутылке вирусной культуры (Мозговая гниль)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/brainrot /obj/item/reagent_containers/glass/bottle/magnitis name = "Magnitis culture bottle" - desc = "A small bottle. Contains a small dosage of Fukkos Miracos." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Магнитис\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Магнитис)", + GENITIVE = "бутылки вирусной культуры (Магнитис)", + DATIVE = "бутылке вирусной культуры (Магнитис)", + ACCUSATIVE = "бутылку вирусной культуры (Магнитис)", + INSTRUMENTAL = "бутылкой вирусной культуры (Магнитис)", + PREPOSITIONAL = "бутылке вирусной культуры (Магнитис)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/magnitis /obj/item/reagent_containers/glass/bottle/wizarditis name = "Wizarditis culture bottle" - desc = "A small bottle. Contains a sample of Rincewindus Vulgaris." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Визардис\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Визардис)", + GENITIVE = "бутылки вирусной культуры (Визардис)", + DATIVE = "бутылке вирусной культуры (Визардис)", + ACCUSATIVE = "бутылку вирусной культуры (Визардис)", + INSTRUMENTAL = "бутылкой вирусной культуры (Визардис)", + PREPOSITIONAL = "бутылке вирусной культуры (Визардис)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/wizarditis /obj/item/reagent_containers/glass/bottle/anxiety name = "Severe Anxiety culture bottle" - desc = "A small bottle. Contains a sample of Lepidopticides." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Сильное беспокойство\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Сильное беспокойство)", + GENITIVE = "бутылки вирусной культуры (Сильное беспокойство)", + DATIVE = "бутылке вирусной культуры (Сильное беспокойство)", + ACCUSATIVE = "бутылку вирусной культуры (Сильное беспокойство)", + INSTRUMENTAL = "бутылкой вирусной культуры (Сильное беспокойство)", + PREPOSITIONAL = "бутылке вирусной культуры (Сильное беспокойство)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/anxiety /obj/item/reagent_containers/glass/bottle/beesease name = "Beesease culture bottle" - desc = "A small bottle. Contains a sample of invasive Apidae." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Пчелораза\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Пчелораза)", + GENITIVE = "бутылки вирусной культуры (Пчелораза)", + DATIVE = "бутылке вирусной культуры (Пчелораза)", + ACCUSATIVE = "бутылку вирусной культуры (Пчелораза)", + INSTRUMENTAL = "бутылкой вирусной культуры (Пчелораза)", + PREPOSITIONAL = "бутылке вирусной культуры (Пчелораза)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/beesease /obj/item/reagent_containers/glass/bottle/fluspanish name = "Spanish flu culture bottle" - desc = "A small bottle. Contains a sample of Inquisitius." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Испанский Грипп\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Испанский Грипп)", + GENITIVE = "бутылки вирусной культуры (Испанский Грипп)", + DATIVE = "бутылке вирусной культуры (Испанский Грипп)", + ACCUSATIVE = "бутылку вирусной культуры (Испанский Грипп)", + INSTRUMENTAL = "бутылкой вирусной культуры (Испанский Грипп)", + PREPOSITIONAL = "бутылке вирусной культуры (Испанский Грипп)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/fluspanish /obj/item/reagent_containers/glass/bottle/tuberculosis name = "Fungal Tuberculosis culture bottle" - desc = "A small bottle. Contains a sample of Fungal Tubercle bacillus." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Грибковый туберкулёз\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Грибковый туберкулёз)", + GENITIVE = "бутылки вирусной культуры (Грибковый туберкулёз)", + DATIVE = "бутылке вирусной культуры (Грибковый туберкулёз)", + ACCUSATIVE = "бутылку вирусной культуры (Грибковый туберкулёз)", + INSTRUMENTAL = "бутылкой вирусной культуры (Грибковый туберкулёз)", + PREPOSITIONAL = "бутылке вирусной культуры (Грибковый туберкулёз)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/tuberculosis /obj/item/reagent_containers/glass/bottle/regeneration name = "Regeneration culture bottle" - desc = "A small bottle. Contains a sample of a virus that heals toxin damage." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Восстановление\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Восстановление)", + GENITIVE = "бутылки вирусной культуры (Восстановление)", + DATIVE = "бутылке вирусной культуры (Восстановление)", + ACCUSATIVE = "бутылку вирусной культуры (Восстановление)", + INSTRUMENTAL = "бутылкой вирусной культуры (Восстановление)", + PREPOSITIONAL = "бутылке вирусной культуры (Восстановление)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/heal /obj/item/reagent_containers/glass/bottle/sensory_restoration name = "Sensory Restoration culture bottle" - desc = "A small bottle. Contains a sample of a virus that heals sensory damage." + desc = "Небольшая стеклянная бутылочка, внутри находится вирусная культура \"Сенсорное восстановление\"." + ru_names = list( + NOMINATIVE = "бутылка вирусной культуры (Сенсорное восстановление)", + GENITIVE = "бутылки вирусной культуры (Сенсорное восстановление)", + DATIVE = "бутылке вирусной культуры (Сенсорное восстановление)", + ACCUSATIVE = "бутылку вирусной культуры (Сенсорное восстановление)", + INSTRUMENTAL = "бутылкой вирусной культуры (Сенсорное восстановление)", + PREPOSITIONAL = "бутылке вирусной культуры (Сенсорное восстановление)" + ) icon_state = "round_bottle" spawned_disease = /datum/disease/virus/advance/preset/sensory_restoration /obj/item/reagent_containers/glass/bottle/tuberculosiscure name = "BVAK bottle" - desc = "A small bottle containing Bio Virus Antidote Kit." + desc = "Небольшая стеклянная бутылочка, внутри находится смесь лекарственных веществ для лечения био-вирусов." + ru_names = list( + NOMINATIVE = "бутылка (Био-вирусный антидот)", + GENITIVE = "бутылки (Био-вирусный антидот)", + DATIVE = "бутылке (Био-вирусный антидот)", + ACCUSATIVE = "бутылку (Био-вирусный антидот)", + INSTRUMENTAL = "бутылкой (Био-вирусный антидот)", + PREPOSITIONAL = "бутылке (Био-вирусный антидот)" + ) icon_state = "wide_bottle" list_reagents = list("atropine" = 5, "epinephrine" = 5, "salbutamol" = 10, "spaceacillin" = 10) /obj/item/reagent_containers/glass/bottle/monkeylangue name = "bottle of monkey language potion" - desc = "A bottle of monkey language potion." + desc = "Небольшая стеклянная бутылочка, внутри находится вещество, заставляющее выпившего выучить обезьяний язык. Удивительно." + ru_names = list( + NOMINATIVE = "бутылка (Обезьяний язык)", + GENITIVE = "бутылки (Обезьяний язык)", + DATIVE = "бутылке (Обезьяний язык)", + ACCUSATIVE = "бутылку (Обезьяний язык)", + INSTRUMENTAL = "бутылкой (Обезьяний язык)", + PREPOSITIONAL = "бутылке (Обезьяний язык)" + ) icon_state = "round_bottle" list_reagents = list("monkeylanguage" = 30) diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index a31a50801198..de9288cd86ce 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -4,7 +4,16 @@ /obj/item/reagent_containers/dropper name = "dropper" - desc = "A dropper. Transfers 5 units." + desc = "Пипетка, используемая для точного вливания небольших объёмов вещества в виде капель." + ru_names = list( + NOMINATIVE = "пипетка", + GENITIVE = "пипетки", + DATIVE = "пипетке", + ACCUSATIVE = "пипетку", + INSTRUMENTAL = "пипеткой", + PREPOSITIONAL = "пипетке" + ) + gender = FEMALE icon_state = "dropper" item_state = "dropper" amount_per_transfer_from_this = 5 @@ -34,7 +43,7 @@ if(!reagents.total_volume) return if(user != C) - visible_message("[user] begins to drip something into [C]'s eyes!") + visible_message(span_danger("[user] начина[pluralize_ru(user.gender, "ет", "ют")] капать что-то в глаза [C], используя [declent_ru(ACCUSATIVE)]!")) if(!do_after(user, 3 SECONDS, C, NONE)) return if(ishuman(target)) @@ -51,15 +60,15 @@ safe_thing = H.head if(safe_thing) - visible_message("[user] tries to drip something into [H]'s eyes, but fails!") + visible_message(span_danger("[user] пыта[pluralize_ru(user.gender, "ет", "ют")]ся капнуть что-то в глаза [C], используя [declent_ru(ACCUSATIVE)], но [genderize_ru(user.gender, "ему", "ей", "ему", "им")] не удаётся!")) reagents.reaction(safe_thing, REAGENT_TOUCH) to_transfer = reagents.remove_any(amount_per_transfer_from_this) - to_chat(user, "You transfer [to_transfer] units of the solution.") + to_chat(user, span_notice("Вы перемещаете [to_transfer] единиц[declension_ru(to_transfer, "у", "ы", "")] вещества, используя [declent_ru(ACCUSATIVE)].")) return - visible_message("[user] drips something into [C]'s eyes!") + visible_message(span_danger("[user] закапыва[pluralize_ru(user.gender, "ет", "ют")] что-то в глаза [C], используя [declent_ru(ACCUSATIVE)]!")) reagents.reaction(C, REAGENT_TOUCH) var/list/injected = list() @@ -69,7 +78,7 @@ add_attack_logs(user, C, "Dripped with [src] containing ([contained]), transfering [to_transfer]") to_transfer = reagents.trans_to(C, amount_per_transfer_from_this) - to_chat(user, "You transfer [to_transfer] units of the solution.") + to_chat(user, span_notice("Вы перемещаете [to_transfer] единиц[declension_ru(to_transfer, "у", "ы", "")] вещества, используя [declent_ru(ACCUSATIVE)].")) if(isobj(target)) if(!target.reagents) @@ -77,39 +86,55 @@ if(reagents.total_volume) if(!target.is_open_container() && !(istype(target, /obj/item/reagent_containers/food) && !ispill(target)) && !istype(target, /obj/item/clothing/mask/cigarette)) - to_chat(user, "You cannot directly fill this object.") + balloon_alert(user, "не подходит!") return if(target.reagents.total_volume >= target.reagents.maximum_volume) - to_chat(user, "[target] is full.") + balloon_alert(user, "нет места!") return to_transfer = reagents.trans_to(target, amount_per_transfer_from_this) - to_chat(user, "You transfer [to_transfer] units of the solution.") + to_chat(user, span_notice("Вы перемещаете [to_transfer] единиц[declension_ru(to_transfer, "у", "ы", "")] вещества, используя [declent_ru(ACCUSATIVE)].")) else if(!target.is_open_container() && !istype(target, /obj/structure/reagent_dispensers)) - to_chat(user, "You cannot directly remove reagents from [target].") + balloon_alert(user, "не подходит!") return if(!target.reagents.total_volume) - to_chat(user, "[target] is empty.") + balloon_alert(user, "пусто!") return to_transfer = target.reagents.trans_to(src, amount_per_transfer_from_this) - to_chat(user, "You fill [src] with [to_transfer] units of the solution.") + to_chat(user, span_notice("Вы заполняете [declent_ru(ACCUSATIVE)] [to_transfer] единиц[declension_ru(to_transfer, "ей", "ами", "ами")] вещества.")) /obj/item/reagent_containers/dropper/cyborg name = "Industrial Dropper" - desc = "A larger dropper. Transfers 10 units." + desc = "Пипетка увеличенного объёма, используемая для точного вливания небольших объёмов вещества в виде капель." + ru_names = list( + NOMINATIVE = "промышленная пипетка", + GENITIVE = "промышленной пипетки", + DATIVE = "промышленной пипетке", + ACCUSATIVE = "промышленную пипетку", + INSTRUMENTAL = "промышленной пипеткой", + PREPOSITIONAL = "промышленной пипетке" + ) amount_per_transfer_from_this = 10 possible_transfer_amounts = list(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) volume = 10 /obj/item/reagent_containers/dropper/precision name = "pipette" - desc = "A high precision pippette. Holds 1 unit." + desc = "Высокоточная пипетка уменьшенного объёма, используемая для работы с малыми объёмами вещества. Обычно применяются в биологии и химии." + ru_names = list( + NOMINATIVE = "микропипетка", + GENITIVE = "микропипетки", + DATIVE = "микропипетке", + ACCUSATIVE = "микропипетку", + INSTRUMENTAL = "микропипеткой", + PREPOSITIONAL = "микропипетке" + ) icon_state = "pipette" amount_per_transfer_from_this = 1 possible_transfer_amounts = list(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1) @@ -126,7 +151,7 @@ if(!reagents.total_volume || !target.reagents) return . . |= ATTACK_CHAIN_SUCCESS - to_chat(user, span_warning("You stab [target] with [src].")) + to_chat(user, span_warning("Вы делаете укол [target] [declent_ru(INSTRUMENTAL)].")) var/list/injected = list() for(var/datum/reagent/reagent as anything in reagents.reagent_list) @@ -141,7 +166,7 @@ if(istype(adv_disease)) for(var/datum/symptom/symptom as anything in adv_disease.symptoms) english_symptoms += symptom.name - virusData += " ([english_list(english_symptoms)])" + virusData += " ([russian_list(english_symptoms)])" virList += virusData add_attack_logs(user, target, "Infected with [english_list(virList)].") diff --git a/code/modules/reagents/reagent_containers/glass_containers.dm b/code/modules/reagents/reagent_containers/glass_containers.dm index d4e1d9669796..37411bdeda01 100644 --- a/code/modules/reagents/reagent_containers/glass_containers.dm +++ b/code/modules/reagents/reagent_containers/glass_containers.dm @@ -24,9 +24,9 @@ /obj/item/reagent_containers/glass/examine(mob/user) . = ..() if(get_dist(user, src) <= 2 && !is_open_container()) - . += "Airtight lid seals it completely." + . += span_notice("Закрыто герметичной крышкой.") - . += "[src] can hold up to [reagents.maximum_volume] units." + . += span_notice("Вмещает до [reagents.maximum_volume] единиц[declension_ru(reagents.maximum_volume, "ы", "", "")] вещества.") /obj/item/reagent_containers/glass/attack(mob/living/carbon/target, mob/living/user, params, def_zone, skip_attack_anim = FALSE) @@ -36,7 +36,7 @@ . = ATTACK_CHAIN_PROCEED if(!reagents || !reagents.total_volume) - to_chat(user, span_warning("[src] is empty!")) + balloon_alert(user, "пусто!") return . var/list/transferred = list() @@ -47,8 +47,8 @@ if(user.a_intent == INTENT_HARM) target.visible_message( - span_danger("[user] splashes the contents of [src] onto [target]!"), - span_userdanger("[user] splashes the contents of [src] onto [target]!") + span_danger("[user] вылива[pluralize_ru(user.gender, "ет", "ют")] содержимое [declent_ru(GENITIVE)] на [target]!"), + span_userdanger("[user] вылива[pluralize_ru(user.gender, "ет", "ют")] содержимое [declent_ru(GENITIVE)] на вас!") ) add_attack_logs(user, target, "Splashed with [name] containing [contained]") reagents.reaction(target, REAGENT_TOUCH) @@ -56,30 +56,30 @@ return .|ATTACK_CHAIN_SUCCESS if(!iscarbon(target)) // Non-carbons can't process reagents - to_chat(user, span_warning("You cannot find a way to feed [target].")) + balloon_alert(user, "невозможно!") return . if(!get_location_accessible(target, BODY_ZONE_PRECISE_MOUTH)) if(target == user) - to_chat(user, span_warning("Your face is obscured")) + balloon_alert(user, "ваш рот закрыт!") else - to_chat(user, span_warning("[target]'s face is obscured.")) + balloon_alert(user, "рот цели закрыт!") return . if(target != user) target.visible_message( - span_danger("[user] attempts to feed something to [target]."), - span_userdanger("[user] attempts to feed something to you."), + span_danger("[user] пыта[pluralize_ru(user.gender, "ет", "ют")]ся напоить содержимым [declent_ru(GENITIVE)] [target]!"), + span_userdanger("[user] пыта[pluralize_ru(user.gender, "ет", "ют")]ся напоить вас содержимым [declent_ru(GENITIVE)]!"), ) if(!do_after(user, 3 SECONDS, target, NONE) || !reagents || !reagents.total_volume) return . target.visible_message( - span_danger("[user] feeds something to [target]."), - span_userdanger("[user] feeds something to you."), + span_danger("[user] напоил[genderize_ru(user.gender, "", "а", "о", "и")] [target] содержимым [declent_ru(GENITIVE)]!"), + span_userdanger("[user] напоил[genderize_ru(user.gender, "", "а", "о", "и")] вас содержимым [declent_ru(GENITIVE)]!"), ) add_attack_logs(user, target, "Fed with [name] containing [contained]") else - to_chat(user, span_notice("You swallow a gulp of [src].")) + to_chat(user, span_notice("Вы делаете глоток из [declent_ru(GENITIVE)].")) . |= ATTACK_CHAIN_SUCCESS var/fraction = min(5 / reagents.total_volume, 1) @@ -97,32 +97,32 @@ if(target.is_refillable()) //Something like a glass. Player probably wants to transfer TO it. if(!reagents.total_volume) - to_chat(user, "[src] is empty!") + balloon_alert(usr, "пусто!") return if(target.reagents.holder_full()) - to_chat(user, "[target] is full.") + balloon_alert(usr, "нет места!") return var/trans = reagents.trans_to(target, amount_per_transfer_from_this) - to_chat(user, "You transfer [trans] unit\s of the solution to [target].") + to_chat(user, span_notice("Вы переливаете [trans] единиц[declension_ru(trans, "у", "ы", "")] вещества из [declent_ru(GENITIVE)] в [target.declent_ru(ACCUSATIVE)].")) else if(target.is_drainable()) //A dispenser. Transfer FROM it TO us. if(!target.reagents.total_volume) - to_chat(user, "[target] is empty and can't be refilled!") + balloon_alert(user, "пусто!") return if(reagents.holder_full()) - to_chat(user, "[src] is full.") + balloon_alert(user, "нет места!") return var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) - to_chat(user, "You fill [src] with [trans] unit\s of the contents of [target].") + to_chat(user, "Вы наполняете [declent_ru(ACCUSATIVE)] [trans] единиц[declension_ru(trans, "ей", "ами", "ами")] вещества из содержимого [target.declent_ru(ACCUSATIVE)].") else if(reagents.total_volume) if(user.a_intent == INTENT_HARM) - user.visible_message("[user] splashes the contents of [src] onto [target]!", \ - "You splash the contents of [src] onto [target].") + user.visible_message(span_danger("[user] облива[pluralize_ru(user, "ет", "ют")] [target.declent_ru(ACCUSATIVE)] содержимым [declent_ru(GENITIVE)]!"), \ + ("Вы обливаете [target.declent_ru(ACCUSATIVE)] содержимым [declent_ru(GENITIVE)]!")) reagents.reaction(target, REAGENT_TOUCH) reagents.clear_reagents() @@ -138,7 +138,15 @@ /obj/item/reagent_containers/glass/beaker name = "beaker" - desc = "A simple glass beaker, nothing special." + desc = "Простой стеклянный стакан. На его стенках обозначены деления для измерения объёма содержимого." + ru_names = list( + NOMINATIVE = "мерный стакан", + GENITIVE = "мерного стакана", + DATIVE = "мерному стакану", + ACCUSATIVE = "мерный стакан", + INSTRUMENTAL = "мерным стаканом", + PREPOSITIONAL = "мерном стакане" + ) icon = 'icons/obj/chemical.dmi' icon_state = "beaker" item_state = "beaker" @@ -159,7 +167,7 @@ /obj/item/reagent_containers/glass/beaker/examine(mob/user) . = ..() if(assembly) - . += "There is an [assembly] attached to it, use a screwdriver to remove it." + . += span_notice("К нему прикрепл[genderize_ru(assembly.gender, "ён", "ена", "ено", "ены")] [assembly]. Открутите [genderize_ru(assembly.gender, "его", "её", "его", "их")] чем-нибудь, чтобы отсоединить.") /obj/item/reagent_containers/glass/beaker/on_reagent_change() @@ -201,20 +209,20 @@ /obj/item/reagent_containers/glass/beaker/verb/remove_assembly() - set name = "Remove Assembly" + set name = "Отсоединить" set category = "Object" set src in usr if(usr.incapacitated() || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED)) return if(assembly) - to_chat(usr, "You detach [assembly] from [src]") + balloon_alert(usr, "заготовка отсоединена") assembly.forceMove_turf() usr.put_in_hands(assembly, ignore_anim = FALSE) assembly = null qdel(GetComponent(/datum/component/proximity_monitor)) update_icon(UPDATE_OVERLAYS) else - to_chat(usr, "There is no assembly to remove.") + balloon_alert(usr, "нечего отсоединять!") /obj/item/reagent_containers/glass/beaker/proc/heat_beaker() @@ -226,14 +234,14 @@ if(istype(I, /obj/item/assembly_holder)) add_fingerprint(user) if(!can_assembly) - to_chat(user, span_warning("The [name] is incompatible with [I].")) + balloon_alert(user, "несовместимо!") return ATTACK_CHAIN_PROCEED if(assembly) - to_chat(user, span_warning("The [name] already has an assembly.")) + balloon_alert(user, "заготовка уже прикреплена!") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_warning("You have attached [I] to [src].")) + balloon_alert(user, "заготовка прикреплена") if(assembly.has_prox_sensors()) AddComponent(/datum/component/proximity_monitor) assembly = I @@ -269,7 +277,15 @@ /obj/item/reagent_containers/glass/beaker/large name = "large beaker" - desc = "A large glass beaker with twice the capacity of a normal beaker." + desc = "Как обычный мерный стакан, только в два раза больше объёмом." + ru_names = list( + NOMINATIVE = "большой мерный стакан", + GENITIVE = "большого мерного стакана", + DATIVE = "большому мерному стакану", + ACCUSATIVE = "большой мерный стакан", + INSTRUMENTAL = "большим мерным стаканом", + PREPOSITIONAL = "большом мерном стакане" + ) icon_state = "beakerlarge" belt_icon = "large_beaker" materials = list(MAT_GLASS=2500) @@ -280,7 +296,15 @@ /obj/item/reagent_containers/glass/beaker/vial name = "vial" - desc = "A small glass vial, often used by virologists of the 25th century." + desc = "Небольшая стеклянная колбочка, часто используемая вирусологами в работе." + ru_names = list( + NOMINATIVE = "пробирка", + GENITIVE = "пробирки", + DATIVE = "пробирке", + ACCUSATIVE = "пробирку", + INSTRUMENTAL = "пробиркой", + PREPOSITIONAL = "пробирке" + ) icon_state = "vial" belt_icon = "vial" materials = list(MAT_GLASS=250) @@ -292,7 +316,15 @@ /obj/item/reagent_containers/glass/beaker/drugs name = "baggie" - desc = "A small plastic baggie, often used by pharmaceutical \"entrepreneurs\"." + desc = "Небольшой пластиковый пакет, часто используемый фармацевтическими \"предпринимателями\"." + ru_names = list( + NOMINATIVE = "пластиковый пакетик", + GENITIVE = "пластикового пакетика", + DATIVE = "пластиковому пакетику", + ACCUSATIVE = "пластиковый пакетик", + INSTRUMENTAL = "пластиковым пакетиком", + PREPOSITIONAL = "пластиковом пакетике" + ) icon_state = "baggie" amount_per_transfer_from_this = 2 possible_transfer_amounts = null @@ -302,7 +334,15 @@ /obj/item/reagent_containers/glass/beaker/thermite name = "Thermite load" - desc = "A baggie loaded with combustible chemicals." + desc = "Пластиковый пакетик, надпись на этикетке - \"Термит\"." + ru_names = list( + NOMINATIVE = "пластиковый пакетик (Термит)", + GENITIVE = "пластикового пакетика (Термит)", + DATIVE = "пластиковому пакетику (Термит)", + ACCUSATIVE = "пластиковый пакетик (Термит)", + INSTRUMENTAL = "пластиковым пакетиком (Термит)", + PREPOSITIONAL = "пластиковом пакетике (Термит)" + ) icon_state = "baggie" amount_per_transfer_from_this = 25 possible_transfer_amounts = null @@ -313,7 +353,15 @@ /obj/item/reagent_containers/glass/beaker/noreact name = "cryostasis beaker" - desc = "A cryostasis beaker that allows for chemical storage without reactions." + desc = "Криостазисная мензурка, позволяющий хранить химические вещества в таком состоянии, при котором они не вступают в реакцию друг с другом." + ru_names = list( + NOMINATIVE = "криостазиный мерный стакан", + GENITIVE = "криостазиного мерного стакана", + DATIVE = "криостазиному мерному стакану", + ACCUSATIVE = "криостазиный мерный стакан", + INSTRUMENTAL = "криостазиным мерным стаканом", + PREPOSITIONAL = "криостазином мерном стакане" + ) icon_state = "beakernoreact" materials = list(MAT_METAL=3000) volume = 50 @@ -328,7 +376,15 @@ /obj/item/reagent_containers/glass/beaker/bluespace name = "bluespace beaker" - desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete." + desc = "Мензурка, работающая на экспериментальной блюспейс технологии и элементе \"Кубаний\" в сочетании с соединением \"Питий\"." + ru_names = list( + NOMINATIVE = "блюспейс мерный стакан", + GENITIVE = "блюспейс мерного стакана", + DATIVE = "блюспейс мерному стакану", + ACCUSATIVE = "блюспейс мерный стакан", + INSTRUMENTAL = "блюспейс мерным стаканом", + PREPOSITIONAL = "блюспейс мерном стакане" + ) icon_state = "beakerbluespace" materials = list(MAT_GLASS=3000) volume = 300 @@ -354,8 +410,17 @@ list_reagents = list("laughter" = 50) /obj/item/reagent_containers/glass/bucket - desc = "It's a bucket." name = "bucket" + desc = "Металлическое ведро. Можете налить туда что-то или надеть себе на голову, никто не запрещает." + ru_names = list( + NOMINATIVE = "металлическое ведро", + GENITIVE = "металлического ведра", + DATIVE = "металлическому ведру", + ACCUSATIVE = "металлическое ведро", + INSTRUMENTAL = "металлическим ведром", + PREPOSITIONAL = "металлическом ведре" + ) + gender = NEUTER icon = 'icons/obj/janitor.dmi' icon_state = "bucket" item_state = "bucket" @@ -384,12 +449,12 @@ add_fingerprint(user) var/obj/item/toy/crayon/spraycan/can = I if(!paintable) - to_chat(user, span_warning("You cannot paint [src].")) + balloon_alert(user, "нельзя покрасить!") return ATTACK_CHAIN_PROCEED|ATTACK_CHAIN_NO_AFTERATTACK if(can.capped) - to_chat(user, span_warning("The cap on [can] is sealed.")) + balloon_alert(user, "закрыто крышкой!") return ATTACK_CHAIN_PROCEED|ATTACK_CHAIN_NO_AFTERATTACK - to_chat(user, span_notice("You have painted [src].")) + balloon_alert(user, "перекрашено!") playsound(user.loc, 'sound/effects/spray.ogg', 20, TRUE) color = can.colour update_icon(UPDATE_OVERLAYS) @@ -405,7 +470,8 @@ if(!user.drop_transfer_item_to_loc(I, src)) return ..() add_fingerprint(user) - to_chat(user, span_notice("You have attached [I] to [src].")) + balloon_alert(user, "прикреплено") + to_chat(user, span_notice("Вы прикрепили [I.declent_ru(ACCUSATIVE)] к [declent_ru(DATIVE)].")) var/obj/item/bucket_sensor/bucket_sensor = new(drop_location()) transfer_fingerprints_to(bucket_sensor) I.transfer_fingerprints_to(bucket_sensor) @@ -434,7 +500,7 @@ . = ..() if(slot == ITEM_SLOT_HEAD && reagents.total_volume) - to_chat(user, span_userdanger("The [name]'s contents spill all over you!")) + to_chat(user, span_userdanger("Вы надеваете [declent_ru(ACCUSATIVE)] себе на голову и его содержимое выливается прямо на вас!")) reagents.reaction(user, REAGENT_TOUCH) reagents.clear_reagents() @@ -442,6 +508,15 @@ /obj/item/reagent_containers/glass/bucket/wooden name = "wooden bucket" + desc = "Деревянное ведро. Можете налить туда что-то или надеть себе на голову, никто не запрещает." + ru_names = list( + NOMINATIVE = "деревянное ведро", + GENITIVE = "деревянного ведра", + DATIVE = "деревянному ведру", + ACCUSATIVE = "деревянное ведро", + INSTRUMENTAL = "деревянным ведром", + PREPOSITIONAL = "деревянном ведре" + ) icon_state = "woodbucket" item_state = "woodbucket" materials = null @@ -456,7 +531,16 @@ /obj/item/reagent_containers/glass/beaker/waterbottle name = "bottle of water" - desc = "A bottle of water filled at an old Earth bottling facility." + desc = "Бутылка воды, наполненная на старом земном заводе по разливу воды." + ru_names = list( + NOMINATIVE = "бутылка воды", + GENITIVE = "бутылки воды", + DATIVE = "бутылке воды", + ACCUSATIVE = "бутылку воды", + INSTRUMENTAL = "бутылкой воды", + PREPOSITIONAL = "бутылке воды" + ) + gender = FEMALE icon = 'icons/obj/drinks.dmi' icon_state = "smallbottle" item_state = "bottle" @@ -469,7 +553,15 @@ list_reagents = list() /obj/item/reagent_containers/glass/beaker/waterbottle/large - desc = "A fresh commercial-sized bottle of water." + desc = "Свежая бутылка воды коммерческого размера." + ru_names = list( + NOMINATIVE = "большая бутылка воды", + GENITIVE = "большой бутылки воды", + DATIVE = "большой бутылке воды", + ACCUSATIVE = "большую бутылку воды", + INSTRUMENTAL = "большой бутылкой воды", + PREPOSITIONAL = "большой бутылке воды" + ) icon_state = "largebottle" materials = list(MAT_GLASS = 0) list_reagents = list("water" = 100) @@ -482,6 +574,15 @@ /obj/item/reagent_containers/glass/pet_bowl name = "pet bowl" desc = "Миска под еду для любимых домашних животных!" + ru_names = list( + NOMINATIVE = "миска для животных", + GENITIVE = "миски для животных", + DATIVE = "миске для животных", + ACCUSATIVE = "миску для животных", + INSTRUMENTAL = "миской для животных", + PREPOSITIONAL = "миске для животных" + ) + gender = FEMALE icon = 'icons/obj/pet_bowl.dmi' icon_state = "petbowl" item_state = "petbowl" @@ -505,9 +606,9 @@ add_fingerprint(user) var/obj/item/toy/crayon/spraycan/can = I if(can.capped) - to_chat(user, span_warning("The cap on [can] is sealed.")) + balloon_alert(user, "закрыто крышкой!") return ATTACK_CHAIN_PROCEED|ATTACK_CHAIN_NO_AFTERATTACK - to_chat(user, span_notice("You have painted [src].")) + balloon_alert(user, "перекрашено") playsound(user.loc, 'sound/effects/spray.ogg', 20, TRUE) color = can.colour update_icon(UPDATE_OVERLAYS) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 15d027800f6a..21baca066833 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -4,7 +4,15 @@ /obj/item/reagent_containers/hypospray name = "hypospray" - desc = "The DeForest Medical Corporation hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients." + desc = "Гипоспрей - это стерильный автоинъектор с воздушной иглой для быстрого введения лекарств пациентам." + ru_names = list( + NOMINATIVE = "гипоспрей", + GENITIVE = "гипоспрея", + DATIVE = "гипоспрею", + ACCUSATIVE = "гипоспрей", + INSTRUMENTAL = "гипоспреем", + PREPOSITIONAL = "гипоспрее" + ) icon = 'icons/obj/hypo.dmi' item_state = "hypo" icon_state = "hypo" @@ -26,7 +34,7 @@ return . if(!reagents || !reagents.total_volume) - to_chat(user, span_warning("The [name] is empty!")) + balloon_alert(user, "пусто!") return . if(!ignore_flags && !target.can_inject(user, TRUE)) @@ -34,8 +42,8 @@ . |= ATTACK_CHAIN_SUCCESS - to_chat(target, span_warning("You feel a tiny prick!")) - to_chat(user, span_notice("You inject [target] with [src].")) + to_chat(target, span_warning("Вы чувствуете едва заметный укол!")) + to_chat(user, span_notice("Вы делаете [target] укол [declent_ru(INSTRUMENTAL)].")) var/list/injected = list() for(var/datum/reagent/reagent as anything in reagents.reagent_list) @@ -47,10 +55,10 @@ var/trans = reagents.trans_to(target, amount_per_transfer_from_this) if(safety_hypo) - visible_message(span_warning("[user] injects [target] with [trans] units of [primary_reagent_name].")) + visible_message(span_warning("[user] вкалыва[pluralize_ru(user.gender, "ет", "ют")] [target] [trans] единиц[declension_ru(trans, "у", "ы", "")] вещества \"[primary_reagent_name]\".")) playsound(loc, 'sound/goonstation/items/hypo.ogg', 80) - to_chat(user, span_notice("Injected [trans] unit\s. The [name] holds [reagents.total_volume] unit\s.")) + to_chat(user, span_notice("Вы вкалываете [trans] единиц[declension_ru(trans, "у", "ы", "")]. В [declent_ru(PREPOSITIONAL)] осталось ещё [reagents.total_volume] единиц[declension_ru(reagents.total_volume, "а", "ы", "")].")) add_attack_logs(user, target, "Injected with [src] containing ([english_list(injected)])", reagents.harmless_helper() ? ATKLOG_ALMOSTALL : null) @@ -63,9 +71,9 @@ found_forbidden_reagent = TRUE if(found_forbidden_reagent) if(ismob(loc)) - to_chat(loc, "[src] identifies and removes a harmful substance.") + to_chat(loc, span_warning("[capitalize(declent_ru(NOMINATIVE))] определяет и удаляет недопустимое вещество.")) else - visible_message("[src] identifies and removes a harmful substance.") + visible_message(span_warning("[capitalize(declent_ru(NOMINATIVE))] определяет и удаляет недопустимое вещество.")) /obj/item/reagent_containers/hypospray/emag_act(mob/user) @@ -74,11 +82,19 @@ emagged = TRUE ignore_flags = TRUE if(user) - to_chat(user, "You short out the safeties on [src].") + balloon_alert(user, "протоколы безопасности взломаны") /obj/item/reagent_containers/hypospray/safety name = "medical hypospray" - desc = "A general use medical hypospray for quick injection of chemicals. There is a safety button by the trigger." + desc = "Медицинский гипоспрей общего назначения для быстрого введения химических веществ. На курке имеется кнопка безопасности." + ru_names = list( + NOMINATIVE = "медицинский гипоспрей", + GENITIVE = "медицинского гипоспрея", + DATIVE = "медицинскому гипоспрею", + ACCUSATIVE = "медицинский гипоспрей", + INSTRUMENTAL = "медицинским гипоспреем", + PREPOSITIONAL = "медицинском гипоспрее" + ) icon_state = "medivend_hypo" belt_icon = "medical_hypospray" safety_hypo = TRUE @@ -102,12 +118,12 @@ add_fingerprint(user) var/obj/item/toy/crayon/spraycan/can = I if(can.capped) - to_chat(user, span_warning("The cap on [can] is sealed.")) + balloon_alert(user, "баллончик закрыт!") return ATTACK_CHAIN_PROCEED|ATTACK_CHAIN_NO_AFTERATTACK if(can.uses < 2) - to_chat(user, span_warning("There is not enough paint in [can].")) + balloon_alert(user, "недостаточно краски!") return ATTACK_CHAIN_PROCEED|ATTACK_CHAIN_NO_AFTERATTACK - to_chat(user, span_notice("You have painted [src].")) + balloon_alert(user, "покрашено") playsound(user.loc, 'sound/effects/spray.ogg', 20, TRUE) paint_color = can.colour can.uses -= 2 @@ -116,7 +132,7 @@ if(istype(I, /obj/item/soap) && paint_color) add_fingerprint(user) - to_chat(user, span_notice("You wash off the paint layer from the hypospray.")) + balloon_alert(user, "краска смыта") paint_color = null update_state() return ATTACK_CHAIN_PROCEED_SUCCESS|ATTACK_CHAIN_NO_AFTERATTACK @@ -125,7 +141,15 @@ /obj/item/reagent_containers/hypospray/safety/upgraded name = "upgraded medical hypospray" - desc = "Improved general-purpose medical hypospray for rapid administration of chemicals. This model has increased capacity." + desc = "Улучшенный медицинский гипоспрей общего назначения для быстрого введения химических веществ. Эта модель имеет увеличенную емкость." + ru_names = list( + NOMINATIVE = "улучшенный медицинский гипоспрей", + GENITIVE = "улучшенного медицинского гипоспрея", + DATIVE = "улучшенному медицинскому гипоспрею", + ACCUSATIVE = "улучшенный медицинский гипоспрей", + INSTRUMENTAL = "улучшенным медицинским гипоспреем", + PREPOSITIONAL = "улучшенном медицинском гипоспрее" + ) item_state = "upg_hypo" icon_state = "upg_hypo" volume = 60 @@ -140,6 +164,14 @@ /obj/item/reagent_containers/hypospray/safety/ert name = "medical hypospray (Omnizine)" + ru_names = list( + NOMINATIVE = "медицинский гипоспрей (Омнизин)", + GENITIVE = "медицинского гипоспрея (Омнизин)", + DATIVE = "медицинскому гипоспрею (Омнизин)", + ACCUSATIVE = "медицинский гипоспрей (Омнизин)", + INSTRUMENTAL = "медицинским гипоспреем (Омнизин)", + PREPOSITIONAL = "медицинском гипоспрее (Омнизин)" + ) list_reagents = list("omnizine" = 30) /obj/item/reagent_containers/hypospray/CMO @@ -148,12 +180,24 @@ list_reagents = list("omnizine" = 100) resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF +/obj/item/reagent_containers/hypospray/CMO/Initialize(mapload) + . = ..() + AddElement(/datum/element/high_value_item) + /obj/item/reagent_containers/hypospray/CMO/empty list_reagents = null /obj/item/reagent_containers/hypospray/combat name = "combat stimulant injector" - desc = "A modified air-needle autoinjector, used by support operatives to quickly heal injuries in combat." + desc = "Модифицированный автоинъектор с воздушной иглой, используемый оперативниками поддержки для быстрого заживления ран в бою." + ru_names = list( + NOMINATIVE = "боевой инъектор", + GENITIVE = "боевого инъектора", + DATIVE = "боевому инъектору", + ACCUSATIVE = "боевой инъектор", + INSTRUMENTAL = "боевым инъектором", + PREPOSITIONAL = "боевом инъекторе" + ) amount_per_transfer_from_this = 15 possible_transfer_amounts = null icon_state = "combat_hypo" @@ -170,7 +214,15 @@ /obj/item/reagent_containers/hypospray/ertm/hydrocodone amount_per_transfer_from_this = 10 name = "Hydrocodon combat stimulant injector" - desc = "A modified air-needle autoinjector, used by support operatives to quickly heal injuries in combat. Contains hydrocodone." + desc = "Модифицированный автоинъектор с воздушной иглой, используемый оперативниками поддержки для быстрого заживления ран в бою. Содержит гидрокодон." + ru_names = list( + NOMINATIVE = "боевой инъектор (Гидрокодон)", + GENITIVE = "боевого инъектора (Гидрокодон)", + DATIVE = "боевому инъектору (Гидрокодон)", + ACCUSATIVE = "боевой инъектор (Гидрокодон)", + INSTRUMENTAL = "боевым инъектором (Гидрокодон)", + PREPOSITIONAL = "боевом инъекторе (Гидрокодон)" + ) icon_state = "hypocombat-hydro" list_reagents = list("hydrocodone" = 90) @@ -178,27 +230,59 @@ amount_per_transfer_from_this = 3 name = "Perfluorodecalin combat stimulant injector" icon_state = "hypocombat-perfa" - desc = "A modified air-needle autoinjector, used by support operatives to quickly heal injuries in combat. Contains perfluorodecalin." + desc = "Модифицированный автоинъектор с воздушной иглой, используемый оперативниками поддержки для быстрого заживления ран в бою. Содержит Перфтордекалин." + ru_names = list( + NOMINATIVE = "боевой инъектор (Перфтодекалин)", + GENITIVE = "боевого инъектора (Перфтодекалин)", + DATIVE = "боевому инъектору (Перфтодекалин)", + ACCUSATIVE = "боевой инъектор (Перфтодекалин)", + INSTRUMENTAL = "боевым инъектором (Перфтодекалин)", + PREPOSITIONAL = "боевом инъекторе (Перфтодекалин)" + ) list_reagents = list("perfluorodecalin" = 90) /obj/item/reagent_containers/hypospray/ertm/pentic_acid amount_per_transfer_from_this = 5 name = "Pentic acid combat stimulant injector" icon_state = "hypocombat-dtpa" - desc = "A modified air-needle autoinjector, used by support operatives to quickly heal injuries in combat. Contains pentic acid." + desc = "Модифицированный автоинъектор с воздушной иглой, используемый оперативниками поддержки для быстрого заживления ран в бою. Содержит пентетовую кислоту." + ru_names = list( + NOMINATIVE = "боевой инъектор (Пентетовая кислота)", + GENITIVE = "боевого инъектора (Пентетовая кислота)", + DATIVE = "боевому инъектору (Пентетовая кислота)", + ACCUSATIVE = "боевой инъектор (Пентетовая кислота)", + INSTRUMENTAL = "боевым инъектором (Пентетовая кислота)", + PREPOSITIONAL = "боевом инъекторе (Пентетовая кислота)" + ) list_reagents = list("pen_acid" = 90) /obj/item/reagent_containers/hypospray/ertm/epinephrine amount_per_transfer_from_this = 5 name = "Epinephrine combat stimulant injector" icon_state = "hypocombat-epi" - desc = "A modified air-needle autoinjector, used by support operatives to quickly heal injuries in combat. Contains epinephrine." + desc = "Модифицированный автоинъектор с воздушной иглой, используемый оперативниками поддержки для быстрого заживления ран в бою. Содержит эпинефрин." + ru_names = list( + NOMINATIVE = "боевой инъектор (Эпинефрин)", + GENITIVE = "боевого инъектора (Эпинефрин)", + DATIVE = "боевому инъектору (Эпинефрин)", + ACCUSATIVE = "боевой инъектор (Эпинефрин)", + INSTRUMENTAL = "боевым инъектором (Эпинефрин)", + PREPOSITIONAL = "боевом инъекторе (Эпинефрин)" + ) list_reagents = list("epinephrine" = 90) /obj/item/reagent_containers/hypospray/ertm/mannitol amount_per_transfer_from_this = 5 name = "Mannitol combat stimulant injector" - desc = "A modified air-needle autoinjector, used by support operatives to quickly heal injuries in combat. Contains mannitol." + desc = "Модифицированный автоинъектор с воздушной иглой, используемый оперативниками поддержки для быстрого заживления ран в бою. Содержит маннитол." + ru_names = list( + NOMINATIVE = "боевой инъектор (Маннитол)", + GENITIVE = "боевого инъектора (Маннитол)", + DATIVE = "боевому инъектору (Маннитол)", + ACCUSATIVE = "боевой инъектор (Маннитол)", + INSTRUMENTAL = "боевым инъектором (Маннитол)", + PREPOSITIONAL = "боевом инъекторе (Маннитол)" + ) icon_state = "hypocombat-mani" list_reagents = list("mannitol" = 90) @@ -206,25 +290,57 @@ amount_per_transfer_from_this = 5 name = "Oculine combat stimulant injector" icon_state = "hypocombat-ocu" - desc = "A modified air-needle autoinjector, used by support operatives to quickly heal injuries in combat. Contains oculine." + desc = "Модифицированный автоинъектор с воздушной иглой, используемый оперативниками поддержки для быстрого заживления ран в бою. Содержит окулин." + ru_names = list( + NOMINATIVE = "боевой инъектор (Окулин)", + GENITIVE = "боевого инъектора (Окулин)", + DATIVE = "боевому инъектору (Окулин)", + ACCUSATIVE = "боевой инъектор (Окулин)", + INSTRUMENTAL = "боевым инъектором (Окулин)", + PREPOSITIONAL = "боевом инъекторе (Окулин)" + ) list_reagents = list("oculine" = 90) /obj/item/reagent_containers/hypospray/ertm/omnisal amount_per_transfer_from_this = 10 name = "DilOmni-Salglu solution combat stimulant injector" icon_state = "hypocombat-womnisal" - desc = "A modified air-needle autoinjector, used by support operatives to quickly heal injuries in combat. Contains a solution of dilute omnisin and saline." + desc = "Модифицированный автоинъектор с воздушной иглой, используемый оперативниками поддержки для быстрого заживления ран в бою. Содержит разбавленный омнизин и физиологический раствор." + ru_names = list( + NOMINATIVE = "боевой инъектор (Разб. омнизин + Физраствор)", + GENITIVE = "боевого инъектора (Разб. омнизин + Физраствор)", + DATIVE = "боевому инъектору (Разб. омнизин + Физраствор)", + ACCUSATIVE = "боевой инъектор (Разб. омнизин + Физраствор)", + INSTRUMENTAL = "боевым инъектором (Разб. омнизин + Физраствор)", + PREPOSITIONAL = "боевом инъекторе (Разб. омнизин + Физраствор)" + ) list_reagents = list("weak_omnizine" = 45, "salglu_solution" = 45) possible_transfer_amounts = list(10, 20, 30) /obj/item/reagent_containers/hypospray/combat/nanites - desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with expensive medical nanites for rapid healing." + desc = "Модифицированный автоинъектор с воздушной иглой, используемый оперативниками поддержки для быстрого заживления ран в бою. Заполнен дорогостоящими медицинскими нанитами для быстрого заживления." + ru_names = list( + NOMINATIVE = "боевой инъектор (Боевые наниты)", + GENITIVE = "боевого инъектора (Боевые наниты)", + DATIVE = "боевому инъектору (Боевые наниты)", + ACCUSATIVE = "боевой инъектор (Боевые наниты)", + INSTRUMENTAL = "боевым инъектором (Боевые наниты)", + PREPOSITIONAL = "боевом инъекторе (Боевые наниты)" + ) volume = 100 list_reagents = list("nanites" = 100) /obj/item/reagent_containers/hypospray/autoinjector name = "emergency autoinjector" - desc = "A rapid and safe way to stabilize patients in critical condition for personnel without advanced medical knowledge." + desc = "Маленький инъектор в форме ручки, содержащий внутри дозу эпинефрина. Быстрый и безопасный способ стабилизации пациентов в критическом состоянии для персонала, не обладающего глубокими медицинскими знаниями." + ru_names = list( + NOMINATIVE = "аварийный автоинъектор", + GENITIVE = "аварийного автоинъектора", + DATIVE = "аварийному автоинъектору", + ACCUSATIVE = "аварийный автоинъектор", + INSTRUMENTAL = "аварийным автоинъектором", + PREPOSITIONAL = "аварийном автоинъекторе" + ) icon_state = "autoinjector" item_state = "autoinjector" belt_icon = "autoinjector" @@ -282,10 +398,11 @@ add_fingerprint(user) var/obj/item/toy/crayon/spraycan/can = I if(can.capped) - to_chat(user, span_warning("The cap on [can] is sealed.")) + balloon_alert(user, ) + balloon_alert(user, "баллончик закрыт!") return ATTACK_CHAIN_PROCEED|ATTACK_CHAIN_NO_AFTERATTACK if(can.uses <= 0) - to_chat(user, span_warning("There is not enough paint in [can].")) + balloon_alert(user, "недостаточно краски!") return ATTACK_CHAIN_PROCEED|ATTACK_CHAIN_NO_AFTERATTACK var/static/list/injector_icons = list( "Completely Blue" = image('icons/obj/hypo.dmi', "ablueinjector"), @@ -300,7 +417,7 @@ var/choice = show_radial_menu(user, user, injector_icons, radius = 48, custom_check = CALLBACK(src, PROC_REF(check_reskin), user)) if(!choice || loc != user || can.loc != user || !can.uses || user.incapacitated()) return ATTACK_CHAIN_PROCEED|ATTACK_CHAIN_NO_AFTERATTACK - to_chat(user, span_notice("You have painted [src].")) + balloon_alert(user, "покрашено") playsound(user.loc, 'sound/effects/spray.ogg', 20, TRUE) current_skin = choice can.uses-- @@ -324,10 +441,10 @@ /obj/item/reagent_containers/hypospray/autoinjector/attack(mob/living/carbon/target, mob/living/user, params, def_zone, skip_attack_anim = FALSE) if(!reagents.total_volume || spent) - to_chat(user, span_warning("The [name] is empty!")) + balloon_alert(user, "инъектор пуст!") return ATTACK_CHAIN_PROCEED if(only_self && target != user) - to_chat(user, span_warning("The [name] can only be used on yourself.")) + balloon_alert(user, "только для самоиспользования!") return ATTACK_CHAIN_PROCEED . = ..() if(ATTACK_CHAIN_SUCCESS_CHECK(.)) @@ -339,20 +456,36 @@ /obj/item/reagent_containers/hypospray/autoinjector/examine() . = ..() if(reagents && reagents.reagent_list.len) - . += "It is currently loaded." + . += span_notice("Не использовано.") else - . += "It is spent." + . += span_notice("Использовано.") /obj/item/reagent_containers/hypospray/autoinjector/teporone //basilisks name = "teporone autoinjector" - desc = "A rapid way to regulate your body's temperature in the event of a hardsuit malfunction." + desc = "Маленький инъектор в форме ручки, содержащий внутри дозу тепорона. Быстрый способ восстановления температуры тела до естественных показателей." + ru_names = list( + NOMINATIVE = "автоинъектор (Тепорон)", + GENITIVE = "автоинъектора (Тепорон)", + DATIVE = "автоинъектору (Тепорон)", + ACCUSATIVE = "автоинъектор (Тепорон)", + INSTRUMENTAL = "автоинъектором (Тепорон)", + PREPOSITIONAL = "автоинъекторе (Тепорон)" + ) icon_state = "lepopen" list_reagents = list("teporone" = 10) /obj/item/reagent_containers/hypospray/autoinjector/stimpack //goliath kiting name = "stimpack autoinjector" - desc = "A rapid way to stimulate your body's adrenaline, allowing for freer movement in restrictive armor." + desc = "Маленький инъектор в форме ручки, содержащий внутри дозу стимуляторов. Для тех случаев, когда вам срочно нужна доза адреналина." + ru_names = list( + NOMINATIVE = "автоинъектор (Стим-пак)", + GENITIVE = "автоинъектора (Стим-пак)", + DATIVE = "автоинъектору (Стим-пак)", + ACCUSATIVE = "автоинъектор (Стим-пак)", + INSTRUMENTAL = "автоинъектором (Стим-пак)", + PREPOSITIONAL = "автоинъекторе (Стим-пак)" + ) icon_state = "stimpen" volume = 20 amount_per_transfer_from_this = 20 @@ -360,7 +493,15 @@ /obj/item/reagent_containers/hypospray/autoinjector/stimulants name = "Stimulants autoinjector" - desc = "Rapidly stimulates and regenerates the body's organ system." + desc = "Маленький инъектор в форме ручки, содержащий внутри дозу стимуляторов, кратковременно увеличивающих физическую силу, заживляющих повреждения, ускоряющих работу нервной системы и так далее. " + ru_names = list( + NOMINATIVE = "автоинъектор (Стимуляторы)", + GENITIVE = "автоинъектора (Стимуляторы)", + DATIVE = "автоинъектору (Стимуляторы)", + ACCUSATIVE = "автоинъектор (Стимуляторы)", + INSTRUMENTAL = "автоинъектором (Стимуляторы)", + PREPOSITIONAL = "автоинъекторе (Стимуляторы)" + ) icon_state = "stimpen" amount_per_transfer_from_this = 50 volume = 50 @@ -368,7 +509,15 @@ /obj/item/reagent_containers/hypospray/autoinjector/survival name = "survival medipen" - desc = "A medipen for surviving in the harshest of environments, heals and protects from environmental hazards.
    WARNING: Do not inject more than one pen in quick succession." + desc = "Маленький инъектор в форме ручки, содержащий внутри дозу веществ для спасения во время экстренных ситуаций, которые могут произойти на пустошах Лаваленда." + span_boldwarning("ПРЕДУПРЕЖДЕНИЕ: Не используйте более одного за раз!") + ru_names = list( + NOMINATIVE = "автоинъектор выживания", + GENITIVE = "автоинъектора выживания", + DATIVE = "автоинъектору выживания", + ACCUSATIVE = "автоинъектор выживания", + INSTRUMENTAL = "автоинъектором выживания", + PREPOSITIONAL = "автоинъекторе выживания" + ) icon_state = "stimpen" belt_icon = "survival_medipen" volume = 42 @@ -377,7 +526,15 @@ /obj/item/reagent_containers/hypospray/autoinjector/survival/luxury name = "luxury medipen" - desc = "Cutting edge bluespace technology allowed Nanotrasen to compact 40 of volume into a single medipen. Contains rare and powerful chemicals used to aid in exploration of very hard enviroments.
    WARNING: more than one pen injection in quick succession WILL result in quick death." + desc = "Улучшенная версия стандартного автоинъектора выживания, вмещающая в себя до 40 единиц мощных медикаментов." + span_boldwarning("ПРЕДУПРЕЖДЕНИЕ: Не используйте более одного за раз!") + ru_names = list( + NOMINATIVE = "улучшенный автоинъектор выживания", + GENITIVE = "улучшенного автоинъектора выживания", + DATIVE = "улучшенному автоинъектору выживания", + ACCUSATIVE = "улучшенный автоинъектор выживания", + INSTRUMENTAL = "улучшенным автоинъектором выживания", + PREPOSITIONAL = "улучшенном автоинъекторе выживания" + ) icon_state = "redinjector" volume = 40 amount_per_transfer_from_this = 40 @@ -389,7 +546,7 @@ amount_per_transfer_from_this = initial(amount_per_transfer_from_this) return ..() - to_chat(user, span_notice("You start manually releasing the low-pressure gauge...")) + to_chat(user, span_notice("Вы начинаете подготовливать [declent_ru(ACCUSATIVE)] к инъекции.")) if(!do_after(user, 5 SECONDS, target)) //5 seconds release and... return ATTACK_CHAIN_PROCEED @@ -399,7 +556,15 @@ /obj/item/reagent_containers/hypospray/autoinjector/nanocalcium name = "protoype nanite autoinjector" - desc = "After a short period of time the nanites will slow the body's systems and assist with body repair. Nanomachines son." + desc = "Маленький инъектор в форме ручки, содержащий внутри дозу экспериментального вещества, предназначенного для заживления внутренних повреждений. Имеются побочные эффекты." + ru_names = list( + NOMINATIVE = "экспериментальный автоинъектор (Нано-Кальций)", + GENITIVE = "экспериментального автоинъектора (Нано-Кальций)", + DATIVE = "экспериментальному автоинъектору (Нано-Кальций)", + ACCUSATIVE = "экспериментальный автоинъектор (Нано-Кальций)", + INSTRUMENTAL = "экспериментальным автоинъектором (Нано-Кальций)", + PREPOSITIONAL = "экспериментальном автоинъекторе (Нано-Кальций)" + ) icon_state = "bonepen" amount_per_transfer_from_this = 15 volume = 15 @@ -414,7 +579,15 @@ /obj/item/reagent_containers/hypospray/autoinjector/selfmade name = "autoinjector" - desc = "Самодельное подобие инжектора. Не похоже что вы сможете уколоть кого-то ещё кроме себя используя его." + desc = "Кустарно произведённая копия автоинъектора. Из-за особенностей конструкции его невозможно использовать на ком-то, кроме себя." + ru_names = list( + NOMINATIVE = "самодельный автоинъектор", + GENITIVE = "самодельного автоинъектора", + DATIVE = "самодельному автоинъектору", + ACCUSATIVE = "самодельный автоинъектор", + INSTRUMENTAL = "самодельным автоинъектором", + PREPOSITIONAL = "самодельном автоинъекторе" + ) volume = 15 amount_per_transfer_from_this = 15 list_reagents = list() @@ -431,7 +604,15 @@ /obj/item/reagent_containers/hypospray/autoinjector/salbutamol name = "Salbutamol autoinjector" - desc = "A medipen used for basic oxygen damage treatment" + desc = "Маленький инъектор в форме ручки, содержащий внутри дозу сальбутамола для экстренной помощи при удушье." + ru_names = list( + NOMINATIVE = "автоинъектор (Сальбутамол)", + GENITIVE = "автоинъектора (Сальбутамол)", + DATIVE = "автоинъектору (Сальбутамол)", + ACCUSATIVE = "автоинъектор (Сальбутамол)", + INSTRUMENTAL = "автоинъектором (Сальбутамол)", + PREPOSITIONAL = "автоинъекторе (Сальбутамол)" + ) icon_state = "ablueinjector" amount_per_transfer_from_this = 20 volume = 20 @@ -439,13 +620,29 @@ /obj/item/reagent_containers/hypospray/autoinjector/radium name = "Radium autoinjector" - desc = "A small medipen used for basic nucleation treatment." + desc = "Маленький инъектор в форме ручки, содержащий внутри дозу радия для экстренной первой помощи нуклеациям." + ru_names = list( + NOMINATIVE = "автоинъектор (Радий)", + GENITIVE = "автоинъектора (Радий)", + DATIVE = "автоинъектору (Радий)", + ACCUSATIVE = "автоинъектор (Радий)", + INSTRUMENTAL = "автоинъектором (Радий)", + PREPOSITIONAL = "автоинъекторе (Радий)" + ) icon_state = "ablueinjector" list_reagents = list("radium" = 10) /obj/item/reagent_containers/hypospray/autoinjector/charcoal name = "Charcoal autoinjector" - desc = "A medipen used for basic toxin damage treatment" + desc = "Маленький инъектор в форме ручки, содержащий внутри дозу активированного угля для экстренной помощи при отравлениях." + ru_names = list( + NOMINATIVE = "автоинъектор (Активированный уголь)", + GENITIVE = "автоинъектора (Активированный уголь)", + DATIVE = "автоинъектору (Активированный уголь)", + ACCUSATIVE = "автоинъектор (Активированный уголь)", + INSTRUMENTAL = "автоинъектором (Активированный уголь)", + PREPOSITIONAL = "автоинъекторе (Активированный уголь)" + ) icon_state = "greeninjector" amount_per_transfer_from_this = 20 volume = 20 diff --git a/code/modules/reagents/reagent_containers/iv_bag.dm b/code/modules/reagents/reagent_containers/iv_bag.dm index fb33708e8813..9e0dea15ce91 100644 --- a/code/modules/reagents/reagent_containers/iv_bag.dm +++ b/code/modules/reagents/reagent_containers/iv_bag.dm @@ -3,7 +3,16 @@ /obj/item/reagent_containers/iv_bag name = "\improper IV Bag" - desc = "A bag with a fine needle attached at the end for injecting patients with fluids over a period of time." + desc = "Пакет с тонкой иглой на конце. Предназначен для введения пациентам веществ прямо в кровоток в течение определённого времени." + ru_names = list( + NOMINATIVE = "капельница", + GENITIVE = "капельницы", + DATIVE = "капельнице", + ACCUSATIVE = "капельницу", + INSTRUMENTAL = "капельницей", + PREPOSITIONAL = "капельнице" + ) + gender = FEMALE icon = 'icons/goonstation/objects/iv.dmi' lefthand_file = 'icons/goonstation/mob/inhands/items_lefthand.dmi' righthand_file = 'icons/goonstation/mob/inhands/items_righthand.dmi' @@ -62,13 +71,13 @@ return if(amount_per_transfer_from_this > 10) // Prevents people from switching to illegal transfer values while the IV is already in someone, i.e. anything over 10 - visible_message("The IV bag's needle pops out of [injection_target]'s arm. The transfer amount is too high!") + visible_message(span_danger("Игла [declent_ru(GENITIVE)] вылетает из руки [injection_target]. Объём переливания слишком большой!")) end_processing() return if(get_dist(get_turf(src), get_turf(injection_target)) > 1) - to_chat(injection_target, "The [src]'s' needle is ripped out of you!") - injection_target.apply_damage(3, def_zone = injection_limb) + to_chat(injection_target, span_userdanger("Игла [declent_ru(GENITIVE)] вылетает из вашей руки, раня вас!")) + injection_target.apply_damage(5, def_zone = injection_limb) end_processing() return @@ -100,28 +109,26 @@ // Removing the needle if(injection_target) if(target != injection_target) - to_chat(user, span_warning("[src] is already inserted into [injection_target]'s arm!")) + balloon_alert(user, "игла уже вставлена!") return . if(target != user) target.visible_message( - span_danger("[user] is trying to remove [src]'s needle from [target]'s arm!"), - span_userdanger("[user] is trying to remove [src]'s needle from [target]'s arm!"), + span_danger("[user] пыта[pluralize_ru(user.gender, "ет", "ют")]ся убрать иглу [declent_ru(GENITIVE)] из руки [target]!"), + span_userdanger("[user] пыта[pluralize_ru(user.gender, "ет", "ют")]ся убрать иглу [declent_ru(GENITIVE)] из вашей руки!"), ignored_mobs = user, ) - to_chat(user, span_notice("You are removing [src]'s needle from [target]'s arm...")) + to_chat(user, span_notice("Вы пытаетесь убрать иглу [declent_ru(GENITIVE)] из руки [target].")) if(!do_after(user, 3 SECONDS, target, NONE) || !injection_target) return . target.visible_message( - span_danger("[user] has removed [src]'s needle from [target]'s arm!"), - span_userdanger("[user] has removed [src]'s needle from your arm!"), + span_danger("[user] убира[pluralize_ru(user.gender, "ет", "ют")] иглу [declent_ru(GENITIVE)] из руки [target]!"), + span_userdanger("[user] убира[pluralize_ru(user.gender, "ет", "ют")] иглу [declent_ru(GENITIVE)] из вашей руки!"), ignored_mobs = user, ) - to_chat(user, span_notice("You have removed [src]'s needle from [target]'s arm.")) + to_chat(user, span_notice("Вы убираете иглу [declent_ru(GENITIVE)] из руки [target].")) else - user.visible_message( - span_warning("[user] has removed [src]'s needle from [p_their()] arm!"), - span_notice("You have removed [src]'s needle from your arm."), - ) + user.visible_message(span_warning("[user] убира[pluralize_ru(user.gender, "ет", "ют")] иглу [declent_ru(GENITIVE)] из своей руки!")) + balloon_alert(user, "игла убрана") end_processing() return .|ATTACK_CHAIN_SUCCESS @@ -130,29 +137,27 @@ return . if(amount_per_transfer_from_this > 10) // We only want to be able to transfer 1, 5, or 10 units to people. Higher numbers are for transfering to other containers - to_chat(user, span_warning("The IV bag can only be used on someone with a transfer amount of 1, 5 or 10.")) + balloon_alert(user, "объём перемещения слишком большой!") return . if(target != user) target.visible_message( - span_danger("[user] is trying to insert [src]'s needle into [target]'s arm!"), - span_userdanger("[user] is trying to insert [src]'s needle into [target]'s arm!"), + span_danger("[user] пыта[pluralize_ru(user.gender, "ет", "ют")]ся вставить иглу [declent_ru(GENITIVE)] в руку [target]!"), + span_userdanger("[user] пыта[pluralize_ru(user.gender, "ет", "ют")]ся вставить иглу [declent_ru(GENITIVE)] в вашу руку!"), ignored_mobs = user, ) - to_chat(user, span_notice("You are inserting [src]'s needle into [target]'s arm...")) + to_chat(user, span_notice("Вы пытаетесь вставить иглу [declent_ru(GENITIVE)] в руку [target].")) if(!do_after(user, 3 SECONDS, target, NONE) || injection_target) return . target.visible_message( - span_danger("[user] has inserted [src]'s needle into [target]'s arm!"), - span_userdanger("[user] has inserted [src]'s needle into your arm!"), + span_danger("[user] вставля[pluralize_ru(user.gender, "ет", "ют")] иглу [declent_ru(GENITIVE)] в руку [target]!"), + span_userdanger("[user] вставля[pluralize_ru(user.gender, "ет", "ют")] иглу [declent_ru(GENITIVE)] в вашу руку!"), ignored_mobs = user, ) - to_chat(user, span_notice("You have inserted [src]'s needle into [target]'s arm.")) + balloon_alert(user, "игла вставлена") else - user.visible_message( - span_warning("[user] has inserted [src]'s needle into [p_their()] arm!"), - span_notice("You have inserted [src]'s needle into your arm."), - ) + user.visible_message(span_warning("[user] вставля[pluralize_ru(user.gender, "ет", "ют")] иглу [declent_ru(GENITIVE)] в свою руку!")) + balloon_alert(user, "игла вставлена") add_attack_logs(user, target, "Inserted [name](mode: [mode == IV_INJECT ? "Injecting" : "Drawing"]) containing ([reagents.log_list()]), transfering [amount_per_transfer_from_this] units", reagents.harmless_helper() ? ATKLOG_ALMOSTALL : null) begin_processing(target, def_zone) return .|ATTACK_CHAIN_SUCCESS @@ -163,18 +168,18 @@ return if(target.is_refillable() && is_drainable()) // Transferring from IV bag to other containers if(!reagents.total_volume) - to_chat(user, "[src] is empty.") + balloon_alert(user, "пусто!") return if(target.reagents.total_volume >= target.reagents.maximum_volume) - to_chat(user, "[target] is full.") + balloon_alert(user, "нет места!") return var/trans = reagents.trans_to(target, amount_per_transfer_from_this) - to_chat(user, "You transfer [trans] units of the solution to [target].") + to_chat(user, span_notice("Вы перемещаете [trans] единиц[declension_ru(trans, "у", "ы", "")] вещества в [target.declent_ru(ACCUSATIVE)].")) else if(istype(target, /obj/item/reagent_containers/glass) && !target.is_open_container()) - to_chat(user, "You cannot fill [target] while it is sealed.") + balloon_alert(user, "закрыто!") return @@ -218,6 +223,14 @@ /obj/item/reagent_containers/iv_bag/blood/Initialize(mapload) if(blood_type != null && blood_species != null) name = "[initial(name)] - [blood_species] ([blood_type])" + ru_names = list( + NOMINATIVE = "капельница - [blood_species] ([blood_type])" , + GENITIVE = "капельницы - [blood_species] ([blood_type])", + DATIVE = "капельнице - [blood_species] ([blood_type])", + ACCUSATIVE = "капельницу - [blood_species] ([blood_type])", + INSTRUMENTAL = "капельницей - [blood_species] ([blood_type])", + PREPOSITIONAL = "капельнице - [blood_species] ([blood_type])" + ) reagents.add_reagent("blood", 200, list("donor"=null,"diseases"=null,"blood_DNA"=null,"blood_type"=blood_type,"blood_species"=blood_species,"resistances"=null,"trace_chem"=null)) update_icon(UPDATE_OVERLAYS) . = ..() @@ -291,6 +304,14 @@ /obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis/Initialize(mapload) if(blood_type != null && blood_species != null) name = "[initial(name)] - Oxygenis" + ru_names = list( + NOMINATIVE = "капельница - Синтетическая кровь (Кислород)" , + GENITIVE = "капельницы - Синтетическая кровь (Кислород)", + DATIVE = "капельнице - Синтетическая кровь (Кислород)", + ACCUSATIVE = "капельницу - Синтетическая кровь (Кислород)", + INSTRUMENTAL = "капельницей - Синтетическая кровь (Кислород)", + PREPOSITIONAL = "капельнице - Синтетическая кровь (Кислород)" + ) reagents.add_reagent("sbloodoxy", 200, list("donor"=null,"diseases"=null,"blood_DNA"=null,"blood_type"=blood_type,"blood_species"=blood_species,"resistances"=null,"trace_chem"=null)) update_icon(UPDATE_OVERLAYS) @@ -301,6 +322,14 @@ /obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis/Initialize(mapload) if(blood_type != null && blood_species != null) name = "[initial(name)] - Nitrogenis" + ru_names = list( + NOMINATIVE = "капельница - Синтетическая кровь (Азот)" , + GENITIVE = "капельницы - Синтетическая кровь (Азот)", + DATIVE = "капельнице - Синтетическая кровь (Азот)", + ACCUSATIVE = "капельницу - Синтетическая кровь (Азот)", + INSTRUMENTAL = "капельницей - Синтетическая кровь (Азот)", + PREPOSITIONAL = "капельнице - Синтетическая кровь (Азот)" + ) reagents.add_reagent("sbloodvox", 200, list("donor"=null,"diseases"=null,"blood_DNA"=null,"blood_type"=blood_type,"blood_species"=blood_species,"resistances"=null,"trace_chem"=null)) update_icon(UPDATE_OVERLAYS) . = ..() @@ -310,4 +339,12 @@ /obj/item/reagent_containers/iv_bag/slime/Initialize(mapload) name = "[initial(name)] - Slime Jelly" + ru_names = list( + NOMINATIVE = "капельница - Слаймовое желе" , + GENITIVE = "капельницы - Слаймовое желе", + DATIVE = "капельнице - Слаймовое желе", + ACCUSATIVE = "капельницу - Слаймовое желе", + INSTRUMENTAL = "капельницей - Слаймовое желе", + PREPOSITIONAL = "капельнице - Слаймовое желе" + ) . = ..() diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm index a3371943ff2c..ecc387975baf 100644 --- a/code/modules/reagents/reagent_containers/patch.dm +++ b/code/modules/reagents/reagent_containers/patch.dm @@ -1,6 +1,14 @@ /obj/item/reagent_containers/food/pill/patch name = "chemical patch" - desc = "A chemical patch for touch based applications." + desc = "Химический пластырь, предназначенный для медленного ввода веществ в кровоток пациента через контакт с кожей." + ru_names = list( + NOMINATIVE = "пластырь", + GENITIVE = "пластыря", + DATIVE = "пластырю", + ACCUSATIVE = "пластырь", + INSTRUMENTAL = "пластырем", + PREPOSITIONAL = "пластыре" + ) icon = 'icons/obj/chemical.dmi' icon_state = "bandaid" item_state = "bandaid" @@ -8,7 +16,7 @@ volume = 20 container_type = 0 //nooo my insta-kill patch!!! apply_type = REAGENT_TOUCH - apply_method = "apply" + apply_method = "налепи" transfer_efficiency = 0.5 //patches aren't as effective at getting chemicals into the bloodstream. temperature_min = 270 temperature_max = 350 @@ -40,42 +48,98 @@ /obj/item/reagent_containers/food/pill/patch/styptic name = "healing patch" - desc = "Helps with brute injuries." + desc = "Помогает при порезах и ушибах." + ru_names = list( + NOMINATIVE = "пластырь (Мех. Повреждения)", + GENITIVE = "пластыря (Мех. Повреждения)", + DATIVE = "пластырю (Мех. Повреждения)", + ACCUSATIVE = "пластырь (Мех. Повреждения)", + INSTRUMENTAL = "пластырем (Мех. Повреждения)", + PREPOSITIONAL = "пластыре (Мех. Повреждения)" + ) icon_state = "bandaid2" instant_application = 1 list_reagents = list("styptic_powder" = 20) /obj/item/reagent_containers/food/pill/patch/styptic/small name = "healing mini-patch" + ru_names = list( + NOMINATIVE = "мини-пластырь (Мех. Повреждения)", + GENITIVE = "мини-пластыря (Мех. Повреждения)", + DATIVE = "мини-пластырю (Мех. Повреждения)", + ACCUSATIVE = "мини-пластырь (Мех. Повреждения)", + INSTRUMENTAL = "мини-пластырем (Мех. Повреждения)", + PREPOSITIONAL = "мини-пластыре (Мех. Повреждения)" + ) icon_state = "bandaid1" list_reagents = list("styptic_powder" = 10) /obj/item/reagent_containers/food/pill/patch/silver_sulf name = "burn patch" - desc = "Helps with burn injuries." + desc = "Помогает при ожогах." + ru_names = list( + NOMINATIVE = "пластырь (Терм. Повреждения)", + GENITIVE = "пластыря (Терм. Повреждения)", + DATIVE = "пластырю (Терм. Повреждения)", + ACCUSATIVE = "пластырь (Терм. Повреждения)", + INSTRUMENTAL = "пластырем (Терм. Повреждения)", + PREPOSITIONAL = "пластыре (Терм. Повреждения)" + ) icon_state = "bandaid4" instant_application = 1 list_reagents = list("silver_sulfadiazine" = 20) /obj/item/reagent_containers/food/pill/patch/silver_sulf/small name = "burn mini-patch" + ru_names = list( + NOMINATIVE = "мини-пластырь (Терм. Повреждения)", + GENITIVE = "мини-пластыря (Терм. Повреждения)", + DATIVE = "мини-пластырю (Терм. Повреждения)", + ACCUSATIVE = "мини-пластырь (Терм. Повреждения)", + INSTRUMENTAL = "мини-пластырем (Терм. Повреждения)", + PREPOSITIONAL = "мини-пластыре (Терм. Повреждения)" + ) icon_state = "bandaid3" list_reagents = list("silver_sulfadiazine" = 10) /obj/item/reagent_containers/food/pill/patch/synthflesh name = "synthflesh patch" - desc = "Helps with brute and burn injuries." + desc = "Помогает лечить как механические, так и термические повреждения." + ru_names = list( + NOMINATIVE = "пластырь (Синт-плоть)", + GENITIVE = "пластыря (Синт-плоть)", + DATIVE = "пластырю (Синт-плоть)", + ACCUSATIVE = "пластырь (Синт-плоть)", + INSTRUMENTAL = "пластырем (Синт-плоть)", + PREPOSITIONAL = "пластыре (Синт-плоть)" + ) icon_state = "bandaid8" instant_application = 1 list_reagents = list("synthflesh" = 10) /obj/item/reagent_containers/food/pill/patch/nicotine name = "nicotine patch" - desc = "Helps temporarily curb the cravings of nicotine dependency." + desc = "Помогает облегчить никотиновую зависимость." + ru_names = list( + NOMINATIVE = "пластырь (Никотин)", + GENITIVE = "пластыря (Никотин)", + DATIVE = "пластырю (Никотин)", + ACCUSATIVE = "пластырь (Никотин)", + INSTRUMENTAL = "пластырем (Никотин)", + PREPOSITIONAL = "пластыре (Никотин)" + ) list_reagents = list("nicotine" = 10) /obj/item/reagent_containers/food/pill/patch/jestosterone name = "jestosterone patch" - desc = "Helps with brute injuries if the affected person is a clown, otherwise inflicts various annoying effects." + desc = "Вводит необходимую дозу хи-хи и ха-ха прямо в кровь." + ru_names = list( + NOMINATIVE = "пластырь (Шутостерон)", + GENITIVE = "пластыря (Шутостерон)", + DATIVE = "пластырю (Шутостерон)", + ACCUSATIVE = "пластырь (Шутостерон)", + INSTRUMENTAL = "пластырем (Шутостерон)", + PREPOSITIONAL = "пластыре (Шутостерон)" + ) icon_state = "bandaid20" list_reagents = list("jestosterone" = 20) diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 796ca10bf043..2739495be6c7 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -3,7 +3,16 @@ //////////////////////////////////////////////////////////////////////////////// /obj/item/reagent_containers/food/pill name = "pill" - desc = "a pill." + desc = "Небольшая таблетка, предназначенная для введения веществ в организм субъекта пероральным путём." + ru_names = list( + NOMINATIVE = "таблетка", + GENITIVE = "таблетки", + DATIVE = "таблетке", + ACCUSATIVE = "таблетку", + INSTRUMENTAL = "таблеткой", + PREPOSITIONAL = "таблетке" + ) + gender = FEMALE icon = 'icons/obj/chemical.dmi' icon_state = "pill" item_state = "pill" @@ -30,9 +39,9 @@ return . if(!get_location_accessible(target, BODY_ZONE_PRECISE_MOUTH)) if(target == user) - to_chat(user, span_warning("Your face is obscured.")) + balloon_alert(user, "ваш рот закрыт!") else - to_chat(user, span_warning("[target]'s face is obscured.")) + balloon_alert(user, "рот цели закрыт!") return . if(!user.can_unEquip(src)) return . @@ -50,13 +59,12 @@ if(target.is_open_container() != 0 && target.reagents) if(!target.reagents.total_volume) - to_chat(user, "[target] is empty. Cant dissolve [src].") + balloon_alert(user, "не в чем растворять!") return - - to_chat(user, "You dissolve [src] in [target].") + balloon_alert(user, "таблетка растворена") reagents.trans_to(target, reagents.total_volume) for(var/mob/O in viewers(2, user)) - O.show_message("[user] puts something in [target].", 1) + O.show_message(span_warning("[user] броса[pluralize_ru(user.gender, "ет", "ют")] что-то в [target.declent_ru(ACCUSATIVE)]."), 1) spawn(5) qdel(src) @@ -67,120 +75,280 @@ //Pills /obj/item/reagent_containers/food/pill/tox name = "Toxins pill" - desc = "Highly toxic." + desc = "Очень токсично." + ru_names = list( + NOMINATIVE = "таблетка (Токсины)", + GENITIVE = "таблетки (Токсины)", + DATIVE = "таблетке (Токсины)", + ACCUSATIVE = "таблетку (Токсины)", + INSTRUMENTAL = "таблеткой (Токсины)", + PREPOSITIONAL = "таблетке (Токсины)" + ) icon_state = "pill21" list_reagents = list("toxin" = 50) /obj/item/reagent_containers/food/pill/initropidril name = "initropidril pill" - desc = "Don't swallow this." + desc = "Не глотайте это." + ru_names = list( + NOMINATIVE = "таблетка (Инитропидрил)", + GENITIVE = "таблетки (Инитропидрил)", + DATIVE = "таблетке (Инитропидрил)", + ACCUSATIVE = "таблетку (Инитропидрил)", + INSTRUMENTAL = "таблеткой (Инитропидрил)", + PREPOSITIONAL = "таблетке (Инитропидрил)" + ) icon_state = "pill21" list_reagents = list("initropidril" = 50) /obj/item/reagent_containers/food/pill/fakedeath name = "fake death pill" - desc = "Swallow then rest to appear dead, stand up to wake up. Also mutes the user's voice." + desc = "Проглотите, чтобы скрыть свой пульс и прикинуться мёртвым. Побочный эффект - вы не сможете говорить во время действия вещества." + ru_names = list( + NOMINATIVE = "таблетка (Капулеттий+)", + GENITIVE = "таблетки (Капулеттий+)", + DATIVE = "таблетке (Капулеттий+)", + ACCUSATIVE = "таблетку (Капулеттий+)", + INSTRUMENTAL = "таблеткой (Капулеттий+)", + PREPOSITIONAL = "таблетке (Капулеттий+)" + ) icon_state = "pill4" list_reagents = list("capulettium_plus" = 50) /obj/item/reagent_containers/food/pill/adminordrazine name = "Adminordrazine pill" - desc = "It's magic. We don't have to explain it." + desc = "Магия. Тут нечего объяснять." + ru_names = list( + NOMINATIVE = "таблетка (Админордразин)", + GENITIVE = "таблетки (Админордразин)", + DATIVE = "таблетке (Админордразин)", + ACCUSATIVE = "таблетку (Админордразин)", + INSTRUMENTAL = "таблеткой (Админордразин)", + PREPOSITIONAL = "таблетке (Админордразин)" + ) icon_state = "pill16" list_reagents = list("adminordrazine" = 50) /obj/item/reagent_containers/food/pill/morphine name = "Morphine pill" - desc = "Commonly used to treat insomnia." + desc = "Опиат, оказывающий обезболивающее и седативное действие на организм." + ru_names = list( + NOMINATIVE = "таблетка (Морфин)", + GENITIVE = "таблетки (Морфин)", + DATIVE = "таблетке (Морфин)", + ACCUSATIVE = "таблетку (Морфин)", + INSTRUMENTAL = "таблеткой (Морфин)", + PREPOSITIONAL = "таблетке (Морфин)" + ) icon_state = "pill8" list_reagents = list("morphine" = 30) /obj/item/reagent_containers/food/pill/methamphetamine name = "Methamphetamine pill" - desc = "Helps improve the ability to concentrate." + desc = "Бодрит, пробуждает, увеличивает концентрацию и улучшает мышечный тонус. Вызывает сильное привыкание, негативно сказывается на функциях мозга при длительном применении." + ru_names = list( + NOMINATIVE = "таблетка (Метамфетамин)", + GENITIVE = "таблетки (Метамфетамин)", + DATIVE = "таблетке (Метамфетамин)", + ACCUSATIVE = "таблетку (Метамфетамин)", + INSTRUMENTAL = "таблеткой (Метамфетамин)", + PREPOSITIONAL = "таблетке (Метамфетамин)" + ) icon_state = "pill8" list_reagents = list("methamphetamine" = 5) /obj/item/reagent_containers/food/pill/lsd name = "LSD pill" - desc = "Commonly used to get high." + desc = "Быстрый способ кайфануть." + ru_names = list( + NOMINATIVE = "таблетка (ЛСД)", + GENITIVE = "таблетки (ЛСД)", + DATIVE = "таблетке (ЛСД)", + ACCUSATIVE = "таблетку (ЛСД)", + INSTRUMENTAL = "таблеткой (ЛСД)", + PREPOSITIONAL = "таблетке (ЛСД)" + ) icon_state = "pill4" list_reagents = list("lsd" = 5) /obj/item/reagent_containers/food/pill/rum name = "rum pill" - desc = "Commonly used to... Wait a second, what the f.." + desc = "Суровая пиратская медицина, надо полагать..?" + ru_names = list( + NOMINATIVE = "таблетка (Ром)", + GENITIVE = "таблетки (Ром)", + DATIVE = "таблетке (Ром)", + ACCUSATIVE = "таблетку (Ром)", + INSTRUMENTAL = "таблеткой (Ром)", + PREPOSITIONAL = "таблетке (Ром)" + ) icon_state = "pill8" list_reagents = list("rum" = 25) /obj/item/reagent_containers/food/pill/stimulative_agent name = "combat stimulant pill" - desc = "Used by elite soldiers to increase speed and battle performance." + desc = "Обычно используется бойцами элитных сил дял кратковременного улучшения возможностей организма во время боя." + ru_names = list( + NOMINATIVE = "таблетка (Боевой Стимулятор)", + GENITIVE = "таблетки (Боевой Стимулятор)", + DATIVE = "таблетке (Боевой Стимулятор)", + ACCUSATIVE = "таблетку (Боевой Стимулятор)", + INSTRUMENTAL = "таблеткой (Боевой Стимулятор)", + PREPOSITIONAL = "таблетке (Боевой Стимулятор)" + ) icon_state = "pill15" list_reagents = list("stimulative_agent" = 5) /obj/item/reagent_containers/food/pill/haloperidol name = "Haloperidol pill" - desc = "Haloperidol is an anti-psychotic use to treat psychiatric problems." + desc = "Антипсихотическое средство, используемое для лечения психиатрических проблем." + ru_names = list( + NOMINATIVE = "таблетка (Галоперидол)", + GENITIVE = "таблетки (Галоперидол)", + DATIVE = "таблетке (Галоперидол)", + ACCUSATIVE = "таблетку (Галоперидол)", + INSTRUMENTAL = "таблеткой (Галоперидол)", + PREPOSITIONAL = "таблетке (Галоперидол)" + ) icon_state = "pill8" list_reagents = list("haloperidol" = 15) /obj/item/reagent_containers/food/pill/happy name = "Happy pill" - desc = "Happy happy joy joy!" + desc = "Счастливая радость!" + ru_names = list( + NOMINATIVE = "таблетка счастья", + GENITIVE = "таблетки счастья", + DATIVE = "таблетке счастья", + ACCUSATIVE = "таблетку счастья", + INSTRUMENTAL = "таблеткой счастья", + PREPOSITIONAL = "таблетке счастья" + ) icon_state = "pill18" list_reagents = list("space_drugs" = 15, "sugar" = 15) /obj/item/reagent_containers/food/pill/zoom name = "Zoom pill" - desc = "Zoooom!" + desc = "Быстрее, быстрее, ещё быстрее!" + ru_names = list( + NOMINATIVE = "таблетка бодрости", + GENITIVE = "таблетки бодрости", + DATIVE = "таблетке бодрости", + ACCUSATIVE = "таблетку бодрости", + INSTRUMENTAL = "таблеткой бодрости", + PREPOSITIONAL = "таблетке бодрости" + ) icon_state = "pill18" list_reagents = list("synaptizine" = 5, "methamphetamine" = 5) /obj/item/reagent_containers/food/pill/charcoal name = "Charcoal pill" - desc = "Neutralizes many common toxins." + desc = "Стандартное лекарство от отравлений." + ru_names = list( + NOMINATIVE = "таблетка (Активированный уголь)", + GENITIVE = "таблетки (Активированный уголь)", + DATIVE = "таблетке (Активированный уголь)", + ACCUSATIVE = "таблетку (Активированный уголь)", + INSTRUMENTAL = "таблеткой (Активированный уголь)", + PREPOSITIONAL = "таблетке (Активированный уголь)" + ) icon_state = "pill17" list_reagents = list("charcoal" = 50) /obj/item/reagent_containers/food/pill/epinephrine name = "Epinephrine pill" - desc = "Used to provide shots of adrenaline." + desc = "Для стабилизации пациентов в критическом состоянии." + ru_names = list( + NOMINATIVE = "таблетка (Эпинефрин)", + GENITIVE = "таблетки (Эпинефрин)", + DATIVE = "таблетке (Эпинефрин)", + ACCUSATIVE = "таблетку (Эпинефрин)", + INSTRUMENTAL = "таблеткой (Эпинефрин)", + PREPOSITIONAL = "таблетке (Эпинефрин)" + ) icon_state = "pill6" list_reagents = list("epinephrine" = 50) /obj/item/reagent_containers/food/pill/salicylic name = "Salicylic Acid pill" - desc = "Commonly used to treat moderate pain and fevers." + desc = "Стандартное обезболивающее и жаропонижающее средство." + ru_names = list( + NOMINATIVE = "таблетка (Салициловая кислота)", + GENITIVE = "таблетки (Салициловая кислота)", + DATIVE = "таблетке (Салициловая кислота)", + ACCUSATIVE = "таблетку (Салициловая кислота)", + INSTRUMENTAL = "таблеткой (Салициловая кислота)", + PREPOSITIONAL = "таблетке (Салициловая кислота)" + ) icon_state = "pill4" list_reagents = list("sal_acid" = 20) /obj/item/reagent_containers/food/pill/salbutamol name = "Salbutamol pill" - desc = "Used to treat respiratory distress." + desc = "Используется для лечения проблем с дыханием." + ru_names = list( + NOMINATIVE = "таблетка (Сальбутамол)", + GENITIVE = "таблетки (Сальбутамол)", + DATIVE = "таблетке (Сальбутамол)", + ACCUSATIVE = "таблетку (Сальбутамол)", + INSTRUMENTAL = "таблеткой (Сальбутамол)", + PREPOSITIONAL = "таблетке (Сальбутамол)" + ) icon_state = "pill8" list_reagents = list("salbutamol" = 20) /obj/item/reagent_containers/food/pill/hydrocodone name = "Hydrocodone pill" - desc = "Used to treat extreme pain." + desc = "Сильное обезболивающее для самых крайних случаев." + ru_names = list( + NOMINATIVE = "таблетка (Гидрокодон)", + GENITIVE = "таблетки (Гидрокодон)", + DATIVE = "таблетке (Гидрокодон)", + ACCUSATIVE = "таблетку (Гидрокодон)", + INSTRUMENTAL = "таблеткой (Гидрокодон)", + PREPOSITIONAL = "таблетке (Гидрокодон)" + ) icon_state = "pill6" list_reagents = list("hydrocodone" = 15) /obj/item/reagent_containers/food/pill/calomel name = "calomel pill" - desc = "Can be used to purge impurities, but is highly toxic itself." + desc = "Может использоваться для выведения токсинов из организма, но сам по себе очень токсичен." + ru_names = list( + NOMINATIVE = "таблетка (Каломель)", + GENITIVE = "таблетки (Каломель)", + DATIVE = "таблетке (Каломель)", + ACCUSATIVE = "таблетку (Каломель)", + INSTRUMENTAL = "таблеткой (Каломель)", + PREPOSITIONAL = "таблетке (Каломель)" + ) icon_state = "pill3" list_reagents = list("calomel" = 15) /obj/item/reagent_containers/food/pill/mutadone name = "mutadone pill" - desc = "Used to cure genetic abnormalities." + desc = "Для лечения генетических отклонений." + ru_names = list( + NOMINATIVE = "таблетка (Мутадон)", + GENITIVE = "таблетки (Мутадон)", + DATIVE = "таблетке (Мутадон)", + ACCUSATIVE = "таблетку (Мутадон)", + INSTRUMENTAL = "таблеткой (Мутадон)", + PREPOSITIONAL = "таблетке (Мутадон)" + ) icon_state = "pill18" list_reagents = list("mutadone" = 20) /obj/item/reagent_containers/food/pill/mannitol name = "mannitol pill" - desc = "Used to treat cranial swelling." + desc = "Для восстановления повреждённых тканей мозга." + ru_names = list( + NOMINATIVE = "таблетка (Маннитол)", + GENITIVE = "таблетки (Маннитол)", + DATIVE = "таблетке (Маннитол)", + ACCUSATIVE = "таблетку (Маннитол)", + INSTRUMENTAL = "таблеткой (Маннитол)", + PREPOSITIONAL = "таблетке (Маннитол)" + ) icon_state = "pill19" list_reagents = list("mannitol" = 20) diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 9f70f5374ee8..e7cb41d8f57b 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -1,6 +1,15 @@ /obj/item/reagent_containers/spray name = "spray bottle" - desc = "A spray bottle, with an unscrewable top." + desc = "Бутылка с распылителем, с отвинчивающейся крышкой. Пшик-пшик." + ru_names = list( + NOMINATIVE = "распылитель", + GENITIVE = "распылителя", + DATIVE = "распылителю", + ACCUSATIVE = "распылитель", + INSTRUMENTAL = "распылителем", + PREPOSITIONAL = "распылителе" + ) + gender = MALE icon = 'icons/obj/janitor.dmi' icon_state = "cleaner" item_state = "cleaner" @@ -17,6 +26,7 @@ amount_per_transfer_from_this = 5 volume = 250 possible_transfer_amounts = null + var/delay = CLICK_CD_RANGE * 2 /obj/item/reagent_containers/spray/afterattack(atom/A, mob/user, proximity, params) if(isstorage(A) || istype(A, /obj/structure/table) || istype(A, /obj/structure/rack) || istype(A, /obj/structure/closet) \ @@ -28,26 +38,26 @@ if(istype(A, /obj/structure/reagent_dispensers) && get_dist(src,A) <= 1) //this block copypasted from reagent_containers/glass, for lack of a better solution if(!A.reagents.total_volume && A.reagents) - to_chat(user, "[A] is empty.") + balloon_alert(user, "пусто!") return if(reagents.total_volume >= reagents.maximum_volume) - to_chat(user, "[src] is full.") + balloon_alert(user, "нет места!") return var/trans = A.reagents.trans_to(src, 50) //This is a static amount, otherwise, it'll take forever to fill. - to_chat(user, "You fill [src] with [trans] units of the contents of [A].") + to_chat(user, span_notice("Вы заполняете [declent_ru(ACCUSATIVE)] [trans] единиц[declension_ru(trans, "ей", "ами", "ами")] содержимого [A.declent_ru(GENITIVE)].")) return if(reagents.total_volume < amount_per_transfer_from_this) - to_chat(user, "[src] is empty!") + balloon_alert(user, "пусто!") return var/contents_log = reagents.reagent_list.Join(", ") INVOKE_ASYNC(src, PROC_REF(spray), A) playsound(loc, 'sound/effects/spray2.ogg', 50, 1, -6) - user.changeNext_move(CLICK_CD_RANGE*2) + user.changeNext_move(delay) user.newtonian_move(get_dir(A, user)) var/attack_log_type = ATKLOG_ALMOSTALL @@ -86,66 +96,128 @@ amount_per_transfer_from_this = (amount_per_transfer_from_this == 10 ? 5 : 10) spray_currentrange = (spray_currentrange == 1 ? spray_maxrange : 1) - to_chat(user, "You [amount_per_transfer_from_this == 10 ? "remove" : "fix"] the nozzle. You'll now use [amount_per_transfer_from_this] units per spray.") + to_chat(user, span_notice("Вы [amount_per_transfer_from_this == 10 ? "снимаете" : "надеваете"] насадку. Теперь вы будете распылять по [amount_per_transfer_from_this] единиц[declension_ru(amount_per_transfer_from_this, "е", "ы", "")] содержимого за раз.")) /obj/item/reagent_containers/spray/examine(mob/user) . = ..() if(get_dist(user, src) && user == loc) - . += "[round(reagents.total_volume)] units left." + . += span_notice("Внутри остал[declension_ru(reagents.total_volume, "а", "о", "о")]сь примерно [round(reagents.total_volume)] единиц[declension_ru(reagents.total_volume, "а", "ы", "")] вещества.") //space cleaner /obj/item/reagent_containers/spray/cleaner name = "space cleaner" - desc = "BLAM!-brand non-foaming space cleaner!" + desc = "Распылитель, заполненный непенящимся средством для очистки поверхностей. Произведено компанией \"BLAM!\"." + ru_names = list( + NOMINATIVE = "распылитель", + GENITIVE = "распылителя", + DATIVE = "распылителю", + ACCUSATIVE = "распылитель", + INSTRUMENTAL = "распылителем", + PREPOSITIONAL = "распылителе" + ) list_reagents = list("cleaner" = 250) /obj/item/reagent_containers/spray/cleaner/brig - name = "brig cleaner" - desc = "Blood spray to remove the blood of a handcuffed clown" - icon_state = "cleaner_brig" - item_state = "cleaner_brig" + name = "brig cleaner" + desc = "Распылитель, заполненный непенящимся средством для очистки поверхностей. Идеально подойдёт для уборки брига после очередного допроса клоуна." + ru_names = list( + NOMINATIVE = "распылитель СБ", + GENITIVE = "распылителя СБ", + DATIVE = "распылителю СБ", + ACCUSATIVE = "распылитель СБ", + INSTRUMENTAL = "распылителем СБ", + PREPOSITIONAL = "распылителе СБ" + ) + icon_state = "cleaner_brig" + item_state = "cleaner_brig" /obj/item/reagent_containers/spray/cleaner/brig/empty - list_reagents = list() + list_reagents = list() /obj/item/reagent_containers/spray/cleaner/chemical - name = "chemical cleaner" - desc = "There is nothing safer than cleaning up spilled potassium with water" - icon_state = "cleaner_chemical" - item_state = "cleaner_medchem" + name = "chemical cleaner" + desc = "Нет ничего безопаснее, чем смывать пролитый калий водой." + ru_names = list( + NOMINATIVE = "химический распылитель", + GENITIVE = "химическего распылителя", + DATIVE = "химическому распылителю", + ACCUSATIVE = "химический распылитель", + INSTRUMENTAL = "химическим распылителем", + PREPOSITIONAL = "химическом распылителе" + ) + icon_state = "cleaner_chemical" + item_state = "cleaner_medchem" /obj/item/reagent_containers/spray/cleaner/chemical/empty - list_reagents = list() + list_reagents = list() /obj/item/reagent_containers/spray/cleaner/janitor - name = "janitorial deluxe cleaner" - desc = "A stylish spray for the most productive station worker!" - icon_state = "cleaner_janitor" - item_state = "cleaner_jan" + name = "janitorial cleaner" + desc = "Распылитель, заполненный непенящимся средством для очистки поверхностей. Стильный дизайн, специально для самого продуктивного работника станции!" + ru_names = list( + NOMINATIVE = "распылитель уборщика", + GENITIVE = "распылителя уборщика", + DATIVE = "распылителю уборщика", + ACCUSATIVE = "распылитель уборщика", + INSTRUMENTAL = "распылителем уборщика", + PREPOSITIONAL = "распылителе уборщика" + ) + icon_state = "cleaner_janitor" + item_state = "cleaner_jan" /obj/item/reagent_containers/spray/cleaner/janitor/empty - list_reagents = list() + list_reagents = list() /obj/item/reagent_containers/spray/cleaner/medical - name = "medical cleaner" - desc = "Disinfectant for hands, floor, and sole CMO" - icon_state = "cleaner_medical" - item_state = "cleaner_med" + name = "medical cleaner" + desc = "Распылитель, заполненный непенящимся средством для очистки поверхностей. Дезинфицирующее средство для рук, пола и халата Главного Врача." + ru_names = list( + NOMINATIVE = "медицинский распылитель", + GENITIVE = "медицинского распылителя", + DATIVE = "медицинскому распылителю", + ACCUSATIVE = "медицинский распылитель", + INSTRUMENTAL = "медицинским распылителем", + PREPOSITIONAL = "медицинском распылителе" + ) + icon_state = "cleaner_medical" + item_state = "cleaner_med" /obj/item/reagent_containers/spray/cleaner/medical/empty - list_reagents = list() + list_reagents = list() + +/obj/item/reagent_containers/spray/cleaner/tactical + name = "Tactical cleaner" + desc = "Бутылочка из прочнейшего тёмно-синего пластика, наверху которой прикреплён распылитель, оборудованный коллиматорным прицелом и глушителем. Разработано Уборочно-Силовыми Структурами НаноТрейзен для ЗАЧИСТКИ и контроля грязи в помещениях. Порадуйте своего внутреннего тактикульщика!" + ru_names = list( + NOMINATIVE = "тактический распылитель", + GENITIVE = "тактическего распылителя", + DATIVE = "тактическому распылителю", + ACCUSATIVE = "тактический распылитель", + INSTRUMENTAL = "тактическим распылителем", + PREPOSITIONAL = "тактическом распылителе" + ) + icon_state = "cleaner_tactical" + item_state = "cleaner_tactical" /obj/item/reagent_containers/spray/blue_cleaner - name = "bluespace cleaner" - desc = "A spray with an increased storage of reagents, or it's not that simple...." - icon_state = "cleaner_bluespace" - item_state = "cleaner_bs" - spray_maxrange = 4 - spray_currentrange = 4 - volume = 450 + name = "bluespace cleaner" + desc = "Распылитель с увеличенным объёмом, изготовленный с использованием блюспейс-технологий. Оно точно того стоило?" + ru_names = list( + NOMINATIVE = "блюспейс распылитель", + GENITIVE = "блюспейс распылителя", + DATIVE = "блюспейс распылителю", + ACCUSATIVE = "блюспейс распылитель", + INSTRUMENTAL = "блюспейс распылителем", + PREPOSITIONAL = "блюспейс распылителе" + ) + icon_state = "cleaner_bluespace" + item_state = "cleaner_bs" + spray_maxrange = 4 + spray_currentrange = 4 + volume = 450 /obj/item/reagent_containers/spray/cleaner/safety - desc = "BLAM!-brand non-foaming space cleaner! This spray bottle can only accept space cleaner." + desc = "Распылитель, заполненный непенящимся средством для очистки поверхностей. Эта модель принимает внутрь только космочист и ничего более." /obj/item/reagent_containers/spray/cleaner/safety/on_reagent_change() for(var/filth in reagents.reagent_list) @@ -153,13 +225,11 @@ if(R.id != "cleaner") //all chems other than space cleaner are filthy. reagents.del_reagent(R.id) if(ismob(loc)) - to_chat(loc, "[src] identifies and removes a filthy substance.") + to_chat(loc, span_warning("[capitalize(declent_ru(NOMINATIVE))] определяет и удаляет недопустимое вещество.")) else - visible_message("[src] identifies and removes a filthy substance.") + visible_message(span_warning("[capitalize(declent_ru(NOMINATIVE))] определяет и удаляет недопустимое вещество.")) /obj/item/reagent_containers/spray/cleaner/drone - name = "space cleaner" - desc = "BLAM!-brand non-foaming space cleaner!" volume = 50 list_reagents = list("cleaner" = 50) @@ -167,13 +237,29 @@ /obj/item/reagent_containers/spray/spraytan name = "spray tan" volume = 50 - desc = "Gyaro brand spray tan. Do not spray near eyes or other orifices." + desc = "Спрей-автозагар от бренда \"Gyaro\". Не попадите в глаза!" + ru_names = list( + NOMINATIVE = "спрей для авто-загара", + GENITIVE = "спрея для авто-загара", + DATIVE = "спрею для авто-загара", + ACCUSATIVE = "спрей для авто-загара", + INSTRUMENTAL = "спреем для авто-загара", + PREPOSITIONAL = "спрее для авто-загара" + ) list_reagents = list("spraytan" = 50) //pepperspray /obj/item/reagent_containers/spray/pepper name = "pepperspray" - desc = "Manufactured by UhangInc, used to blind and down an opponent quickly." + desc = "Произведено компанией \"UhangInc\", используется для быстрого ослепления и обезвреживания противника." + ru_names = list( + NOMINATIVE = "перцовый баллончик", + GENITIVE = "перцового баллончика", + DATIVE = "перцовому баллончику", + ACCUSATIVE = "перцовый баллончик", + INSTRUMENTAL = "перцовым баллончиком", + PREPOSITIONAL = "перцовом баллончике" + ) icon = 'icons/obj/items.dmi' icon_state = "pepperspray" item_state = "pepperspray" @@ -186,7 +272,15 @@ //water flower /obj/item/reagent_containers/spray/waterflower name = "water flower" - desc = "A seemingly innocent sunflower...with a twist." + desc = "Невинный на первый взгляд подсолнух... с изюминкой." + ru_names = list( + NOMINATIVE = "водяной подсолнух", + GENITIVE = "водяного подсолнуха", + DATIVE = "водяному подсолнуху", + ACCUSATIVE = "водяной подсолнух", + INSTRUMENTAL = "водяным подсолнухом", + PREPOSITIONAL = "водяном подсолнухе" + ) icon = 'icons/obj/hydroponics/harvest.dmi' icon_state = "sunflower" item_state = "sunflower" @@ -200,7 +294,15 @@ //chemsprayer /obj/item/reagent_containers/spray/chemsprayer name = "chem sprayer" - desc = "A utility used to spray large amounts of reagents in a given area." + desc = "Инструмент, используемый для распыления большого количества веществ в заданной области." + ru_names = list( + NOMINATIVE = "химический распылитель веществ", + GENITIVE = "химическего распылителя веществ", + DATIVE = "химическому распылителю веществ", + ACCUSATIVE = "химический распылитель веществ", + INSTRUMENTAL = "химическим распылителем веществ", + PREPOSITIONAL = "химическом распылителе веществ" + ) icon = 'icons/obj/weapons/projectile.dmi' icon_state = "chemsprayer" item_state = "chemsprayer" @@ -253,13 +355,21 @@ /obj/item/reagent_containers/spray/chemsprayer/attack_self(mob/user) amount_per_transfer_from_this = (amount_per_transfer_from_this == 10 ? 5 : 10) - to_chat(user, "You adjust the output switch. You'll now use [amount_per_transfer_from_this] units per spray.") + to_chat(user, span_notice("Вы настраиваете объём распыления. Теперь вы будете распылять по [amount_per_transfer_from_this] единиц[declension_ru(amount_per_transfer_from_this, "е", "ы", "")] содержимого за раз.")) // Plant-B-Gone /obj/item/reagent_containers/spray/plantbgone // -- Skie name = "Plant-B-Gone" - desc = "Kills those pesky weeds!" + desc = "Распылитель гербицидов для уничтожения этих надоедливых сорняков!" + ru_names = list( + NOMINATIVE = "распылитель гербицидов \"Plant-B-Gone\"", + GENITIVE = "распылителя гербицидов \"Plant-B-Gone\"", + DATIVE = "распылителю гербицидов \"Plant-B-Gone\"", + ACCUSATIVE = "распылитель гербицидов \"Plant-B-Gone\"", + INSTRUMENTAL = "распылителем гербицидов \"Plant-B-Gone\"", + PREPOSITIONAL = "распылителе гербицидов \"Plant-B-Gone\"" + ) icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "plantbgone" item_state = "plantbgone" diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index deb04e1959ae..9c35cb7f885c 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -3,8 +3,16 @@ #define SYRINGE_BROKEN 2 /obj/item/reagent_containers/syringe - name = "Syringe" - desc = "A syringe." + name = "syringe" + desc = "Это шприц. Он предназачен для введения и извлечения веществ из кровотока субъекта, а также для многих других целей." + ru_names = list( + NOMINATIVE = "шприц", + GENITIVE = "шприца", + DATIVE = "шприцу", + ACCUSATIVE = "шприц", + INSTRUMENTAL = "шприцем", + PREPOSITIONAL = "шприце" + ) icon = 'icons/goonstation/objects/syringe.dmi' item_state = "syringe_0" icon_state = "0" @@ -16,7 +24,7 @@ pass_open_check = TRUE var/busy = FALSE var/mode = SYRINGE_DRAW - var/projectile_type = /obj/item/projectile/bullet/dart/syringe + var/projectile_type = /obj/projectile/bullet/dart/syringe materials = list(MAT_METAL=10, MAT_GLASS=20) container_type = TRANSPARENT @@ -64,18 +72,20 @@ if(!L.can_inject(user, TRUE)) return + SEND_SIGNAL(target, COMSIG_LIVING_TRY_SYRINGE, user) + switch(mode) if(SYRINGE_DRAW) if(reagents.holder_full()) - to_chat(user, "The syringe is full.") + balloon_alert(user, "шприц полон!") return if(L) //living mob var/drawn_amount = reagents.maximum_volume - reagents.total_volume if(target != user) - target.visible_message("[user] is trying to take a blood sample from [target]!", \ - "[user] is trying to take a blood sample from [target]!") + target.visible_message(span_danger("[user] пыта[pluralize_ru(user.gender, "ет", "ют")]ся взять образец крови у [target]!"), \ + span_userdanger("[user] пыта[pluralize_ru(user.gender, "ет", "ют")]ся взять у вас образец крови!")) busy = TRUE if(!do_after(user, 3 SECONDS, target, NONE)) busy = FALSE @@ -84,60 +94,61 @@ return busy = FALSE if(L.transfer_blood_to(src, drawn_amount)) - user.visible_message("[user] takes a blood sample from [L].") + L.visible_message(span_danger("[user] взял[genderize_ru(user.gender, "", "а", "о", "и")] образец крови у [L]!"), \ + span_userdanger("[user] взял[genderize_ru(user.gender, "", "а", "о", "и")] у вас образец крови!")) else - to_chat(user, "You are unable to draw any blood from [L]!") + balloon_alert(user, "больше крови не взять!") else //if not mob if(!target.reagents.total_volume) - to_chat(user, "[target] is empty!") + balloon_alert(user, "пусто!") return if(!target.is_drawable(user)) - to_chat(user, "You cannot directly remove reagents from [target]!") + balloon_alert(user, "отсюда вещество не забрать!") return var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) // transfer from, transfer to - who cares? - to_chat(user, "You fill [src] with [trans] units of the solution. It now contains [reagents.total_volume] units.") + to_chat(user, span_notice("Вы заполняете [declent_ru(ACCUSATIVE)] [trans] единиц[declension_ru(trans, "ей", "ами", "ами")] вещества. Теперь он содержит [reagents.total_volume] единиц[declension_ru(reagents.total_volume, "у", "ы", "")] вещества.")) if(reagents.holder_full()) mode = !mode update_icon() if(SYRINGE_INJECT) if(!reagents.total_volume) - to_chat(user, "[src] is empty.") + balloon_alert(user, "шприц пуст!") return if(!L && !target.is_injectable(user)) //only checks on non-living mobs, due to how can_inject() handles - to_chat(user, "You cannot directly fill [target]!") + balloon_alert(user, "сюда вещество не ввести!") return if(target.reagents.total_volume >= target.reagents.maximum_volume) - to_chat(user, "[target] is full.") + balloon_alert(user, "нет места!") return if(L) //living mob if(!L.can_inject(user, TRUE)) return if(L != user) - L.visible_message("[user] is trying to inject [L]!", \ - "[user] is trying to inject you!") + L.visible_message(span_danger("[user] пыта[pluralize_ru(user.gender, "ет", "ют")]ся сделать [L] укол [declent_ru(INSTRUMENTAL)]!"), \ + span_userdanger("[user] пыта[pluralize_ru(user.gender, "ет", "ют")]ся сделать вам укол [declent_ru(INSTRUMENTAL)]!")) if(!do_after(user, 3 SECONDS, L, NONE)) return if(!reagents.total_volume) return if(L.reagents.total_volume >= L.reagents.maximum_volume) return - L.visible_message("[user] injects [L] with the syringe!", \ - "[user] injects [L] with the syringe!") + L.visible_message(span_danger("[user] дела[pluralize_ru(user.gender, "ет", "ют")] [L] укол [declent_ru(INSTRUMENTAL)]!"), \ + span_userdanger("[user] дела[pluralize_ru(user.gender, "ет", "ют")] вам укол [declent_ru(INSTRUMENTAL)]!")) add_attack_logs(user, target, "Injected with [name] containing [reagents.log_list()], transfered [amount_per_transfer_from_this] units", reagents.harmless_helper() ? ATKLOG_ALMOSTALL : null) var/fraction = min(amount_per_transfer_from_this / reagents.total_volume, 1) reagents.reaction(L, REAGENT_INGEST, fraction) reagents.trans_to(target, amount_per_transfer_from_this) - to_chat(user, "You inject [amount_per_transfer_from_this] units of the solution. The syringe now contains [reagents.total_volume] units.") + to_chat(user, span_notice("Вы вкололи [amount_per_transfer_from_this] единиц[declension_ru(amount_per_transfer_from_this, "у", "ы", "")] вещества с помощью [declent_ru(GENITIVE)]. В нём остаётся [reagents.total_volume] единиц[declension_ru(reagents.total_volume, "а", "ы", "")] вещества.")) if(istype(target, /obj/item/reagent_containers/food)) var/obj/item/reagent_containers/food/F = target F.log_eating = TRUE @@ -178,64 +189,160 @@ /obj/item/reagent_containers/syringe/antiviral name = "Syringe (spaceacillin)" - desc = "Contains antiviral agents." + desc = "Щприц с антибиотическим средством." + ru_names = list( + NOMINATIVE = "шприц (Космоциллин)", + GENITIVE = "шприца (Космоциллин)", + DATIVE = "шприцу (Космоциллин)", + ACCUSATIVE = "шприц (Космоциллин)", + INSTRUMENTAL = "шприцем (Космоциллин)", + PREPOSITIONAL = "шприце (Космоциллин)" + ) list_reagents = list("spaceacillin" = 15) /obj/item/reagent_containers/syringe/charcoal name = "Syringe (charcoal)" - desc = "Contains charcoal - used to treat toxins and damage from toxins." + desc = "Шприц со средством против отравлений." + ru_names = list( + NOMINATIVE = "шприц (Активированный уголь)", + GENITIVE = "шприца (Активированный уголь)", + DATIVE = "шприцу (Активированный уголь)", + ACCUSATIVE = "шприц (Активированный уголь)", + INSTRUMENTAL = "шприцем (Активированный уголь)", + PREPOSITIONAL = "шприце (Активированный уголь)" + ) list_reagents = list("charcoal" = 15) /obj/item/reagent_containers/syringe/epinephrine name = "Syringe (Epinephrine)" - desc = "Contains epinephrine - used to stabilize patients." + desc = "Шприц со средством для стабилизации критических пациентов." + ru_names = list( + NOMINATIVE = "шприц (Эпинефрин)", + GENITIVE = "шприца (Эпинефрин)", + DATIVE = "шприцу (Эпинефрин)", + ACCUSATIVE = "шприц (Эпинефрин)", + INSTRUMENTAL = "шприцем (Эпинефрин)", + PREPOSITIONAL = "шприце (Эпинефрин)" + ) list_reagents = list("epinephrine" = 15) /obj/item/reagent_containers/syringe/insulin name = "Syringe (insulin)" - desc = "Contains insulin - used to treat diabetes." + desc = "Шприц со средством для борьбы с диабетической комой." + ru_names = list( + NOMINATIVE = "шприц (Инсулин)", + GENITIVE = "шприца (Инсулин)", + DATIVE = "шприцу (Инсулин)", + ACCUSATIVE = "шприц (Инсулин)", + INSTRUMENTAL = "шприцем (Инсулин)", + PREPOSITIONAL = "шприце (Инсулин)" + ) list_reagents = list("insulin" = 15) /obj/item/reagent_containers/syringe/calomel name = "Syringe (calomel)" - desc = "Contains calomel, which be used to purge impurities, but is highly toxic itself." + desc = "Шприц со средством для выведения веществ из кровотока." + ru_names = list( + NOMINATIVE = "шприц (Каломель)", + GENITIVE = "шприца (Каломель)", + DATIVE = "шприцу (Каломель)", + ACCUSATIVE = "шприц (Каломель)", + INSTRUMENTAL = "шприцем (Каломель)", + PREPOSITIONAL = "шприце (Каломель)" + ) list_reagents = list("calomel" = 15) /obj/item/reagent_containers/syringe/heparin name = "Syringe (heparin)" - desc = "Contains heparin, a blood anticoagulant." + desc = "Шприц с антикоагулянтом." + ru_names = list( + NOMINATIVE = "шприц (Гепарин)", + GENITIVE = "шприца (Гепарин)", + DATIVE = "шприцу (Гепарин)", + ACCUSATIVE = "шприц (Гепарин)", + INSTRUMENTAL = "шприцем (Гепарин)", + PREPOSITIONAL = "шприце (Гепарин)" + ) list_reagents = list("heparin" = 15) /obj/item/reagent_containers/syringe/bioterror name = "bioterror syringe" - desc = "Contains several paralyzing reagents." + desc = "Щприц с несколькими нервно-паралитическими ядами." + ru_names = list( + NOMINATIVE = "шприц (Нейротоксины)", + GENITIVE = "шприца (Нейротоксины)", + DATIVE = "шприцу (Нейротоксины)", + ACCUSATIVE = "шприц (Нейротоксины)", + INSTRUMENTAL = "шприцем (Нейротоксины)", + PREPOSITIONAL = "шприце (Нейротоксины)" + ) list_reagents = list("neurotoxin" = 5, "capulettium_plus" = 5, "sodium_thiopental" = 5) /obj/item/reagent_containers/syringe/gluttony name = "Gluttony's Blessing" - desc = "A syringe recovered from a dread place. It probably isn't wise to use." + desc = "Странный шприц, измазанный в зелёной жиже." + ru_names = list( + NOMINATIVE = "шприц (Благословение Чревоугодия)", + GENITIVE = "шприца (Благословение Чревоугодия)", + DATIVE = "шприцу (Благословение Чревоугодия)", + ACCUSATIVE = "шприц (Благословение Чревоугодия)", + INSTRUMENTAL = "шприцем (Благословение Чревоугодия)", + PREPOSITIONAL = "шприце (Благословение Чревоугодия)" + ) amount_per_transfer_from_this = 1 volume = 1 list_reagents = list("gluttonytoxin" = 1) /obj/item/reagent_containers/syringe/capulettium_plus name = "capulettium plus syringe" - desc = "For silencing targets. Allows for fake deaths." + desc = "Шприц со средством для имитации смерти." + ru_names = list( + NOMINATIVE = "шприц (Капулеттий+)", + GENITIVE = "шприца (Капулеттий+)", + DATIVE = "шприцу (Капулеттий+)", + ACCUSATIVE = "шприц (Капулеттий+)", + INSTRUMENTAL = "шприцем (Капулеттий+)", + PREPOSITIONAL = "шприце (Капулеттий+)" + ) list_reagents = list("capulettium_plus" = 15) /obj/item/reagent_containers/syringe/sarin name = "sarin syringe" - desc = "A deadly neurotoxin, for killing." + desc = "Щприц со смертельно опасным нервно-паралитическим ядом." + ru_names = list( + NOMINATIVE = "шприц (Зарин)", + GENITIVE = "шприца (Зарин)", + DATIVE = "шприцу (Зарин)", + ACCUSATIVE = "шприц (Зарин)", + INSTRUMENTAL = "шприцем (Зарин)", + PREPOSITIONAL = "шприце (Зарин)" + ) list_reagents = list("sarin" = 15) /obj/item/reagent_containers/syringe/pancuronium name = "pancuronium syringe" - desc = "A powerful paralyzing poison." + desc = "Шприц с парализующим веществом." + ru_names = list( + NOMINATIVE = "шприц (Панкуроний+)", + GENITIVE = "шприца (Панкуроний+)", + DATIVE = "шприцу (Панкуроний+)", + ACCUSATIVE = "шприц (Панкуроний+)", + INSTRUMENTAL = "шприцем (Панкуроний+)", + PREPOSITIONAL = "шприце (Панкуроний+)" + ) list_reagents = list("pancuronium" = 15) /obj/item/reagent_containers/syringe/lethal name = "lethal injection syringe" - desc = "A syringe used for lethal injections. It can hold up to 50 units." + desc = "Шприц, используемый для смертельных инъекций. Вмещает в себя вплоть до 50 единиц вещества." + ru_names = list( + NOMINATIVE = "шприц (Смертельная инъекция)", + GENITIVE = "шприца (Смертельная инъекция)", + DATIVE = "шприцу (Смертельная инъекция)", + ACCUSATIVE = "шприц (Смертельная инъекция)", + INSTRUMENTAL = "шприцем (Смертельная инъекция)", + PREPOSITIONAL = "шприце (Смертельная инъекция)" + ) amount_per_transfer_from_this = 50 volume = 50 list_reagents = list("toxin" = 15, "pancuronium" = 10, "cyanide" = 5, "facid" = 10, "fluorine" = 10) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 965ac4fc1e37..8b85aaacc8c6 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -98,7 +98,7 @@ return ..() -/obj/structure/reagent_dispensers/fueltank/bullet_act(obj/item/projectile/P) +/obj/structure/reagent_dispensers/fueltank/bullet_act(obj/projectile/P) var/will_explode = !QDELETED(src) && !P.nodamage && (P.damage_type == BURN || P.damage_type == BRUTE) if(will_explode) // Log here while you have the information needed @@ -106,6 +106,7 @@ investigate_log("[key_name_log(P.firer)] triggered a fueltank explosion with [P.name]", INVESTIGATE_BOMB) ..() + /obj/structure/reagent_dispensers/fueltank/boom(rigtrigger = FALSE, log_attack = FALSE) // Prevent case where someone who rigged the tank is blamed for the explosion when the rig isn't what triggered the explosion if(rigtrigger) // If the explosion is triggered by an assembly holder add_attack_logs(lastrigger, src, "rigged fuel tank exploded", ATKLOG_FEW) @@ -151,6 +152,11 @@ /obj/structure/reagent_dispensers/fueltank/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weldingtool/sword)) + if(I.tool_enabled) + boom(FALSE, TRUE) + return ATTACK_CHAIN_BLOCKED_ALL + if(istype(I, /obj/item/assembly_holder)) add_fingerprint(user) var/obj/item/assembly_holder/assembly = I diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index a91574d96c1b..a269db663a73 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -509,9 +509,9 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) . += span_info("Use a crowbar to dislodge.") -/obj/machinery/conveyor_switch/AltClick(mob/user) - if(Adjacent(user)) - on_user_activation(user, CONVEYOR_BACKWARDS) +/obj/machinery/conveyor_switch/click_alt(mob/user) + on_user_activation(user, CONVEYOR_BACKWARDS) + return CLICK_ACTION_SUCCESS /obj/machinery/conveyor_switch/attack_robot(mob/user) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index f3e556d0bfc1..29691e767634 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -50,6 +50,7 @@ /obj/machinery/disposal/Initialize(mapload, obj/structure/disposalconstruct/made_from) // this will get a copy of the air turf and take a SEND PRESSURE amount of air from it . = ..() + air_contents = new if(made_from) setDir(made_from.dir) return INITIALIZE_HINT_LATELOAD @@ -60,7 +61,6 @@ var/datum/gas_mixture/env = new env.copy_from(loc.return_air()) var/datum/gas_mixture/removed = env.remove(SEND_PRESSURE + 1) - air_contents = new air_contents.merge(removed) trunk_check() update() @@ -398,21 +398,20 @@ update() -/obj/machinery/disposal/AltClick(mob/user) - if(!Adjacent(user) || !ishuman(user) || user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) - return ..() +/obj/machinery/disposal/click_alt(mob/user) user.visible_message( - "[user] tries to eject the contents of [src] manually.", - "You operate the manual ejection lever on [src]." + span_notice("[user] tries to eject the contents of [src] manually."), + span_notice("You operate the manual ejection lever on [src].") ) if(!do_after(user, 5 SECONDS, src)) - return ..() + return CLICK_ACTION_BLOCKING user.visible_message( - "[user] ejects the contents of [src].", - "You eject the contents of [src].", + span_notice("[user] ejects the contents of [src]."), + span_notice("You eject the contents of [src]."), ) eject() + return CLICK_ACTION_SUCCESS // update the icon & overlays to reflect mode & status diff --git a/code/modules/recycling/disposal/construction.dm b/code/modules/recycling/disposal/construction.dm index 3563c57b15a1..b67915b29ce7 100644 --- a/code/modules/recycling/disposal/construction.dm +++ b/code/modules/recycling/disposal/construction.dm @@ -117,9 +117,9 @@ rotate(usr) -/obj/structure/disposalconstruct/AltClick(mob/user) - if(Adjacent(user)) - rotate(user) +/obj/structure/disposalconstruct/click_alt(mob/user) + rotate(user) + return CLICK_ACTION_SUCCESS /// Rotates construct 90 degrees counter-clockwise diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 690204ef1cab..7a0c71739f67 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -17,10 +17,12 @@ RegisterSignal(src, COMSIG_MOVABLE_DISPOSING, PROC_REF(disposal_handling)) -/obj/structure/bigDelivery/Destroy() +/obj/structure/bigDelivery/Destroy(force) var/turf/our_turf = get_turf(src) for(var/atom/movable/thing as anything in contents) thing.forceMove(our_turf) + qdel(thing, force) + wrapped = null return ..() diff --git a/code/modules/requests/request_manager.dm b/code/modules/requests/request_manager.dm index 785dc7fe66ce..0dce1d3c6241 100644 --- a/code/modules/requests/request_manager.dm +++ b/code/modules/requests/request_manager.dm @@ -100,7 +100,7 @@ GLOBAL_DATUM_INIT(requests, /datum/request_manager, new) return TRUE if ("tp") if(!SSticker.HasRoundStarted()) - alert(usr,"The game hasn't started yet!") + tgui_alert(usr, "The game hasn't started yet!") return TRUE var/mob/M = request.owner?.mob usr.client.holder.show_traitor_panel(M) @@ -137,7 +137,7 @@ GLOBAL_DATUM_INIT(requests, /datum/request_manager, new) if (request.req_type != REQUEST_ERT) to_chat(usr, "You cannot respond with ert for a non-ert-request request!") return TRUE - if(alert(usr, "Accept or Deny ERT request?", "CentComm Response", "Accept", "Deny") == "Deny") + if(tgui_alert(usr, "Accept or Deny ERT request?", "CentComm Response", list("Accept", "Deny")) == "Deny") var/mob/living/carbon/human/H = request.owner?.mob if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") @@ -149,7 +149,7 @@ GLOBAL_DATUM_INIT(requests, /datum/request_manager, new) to_chat(usr, "The person you are trying to contact is not wearing a headset") return - var/input = input(usr, "Please enter a reason for denying [key_name(H)]'s ERT request.","Outgoing message from CentComm", "") + var/input = tgui_input_text(usr, "Please enter a reason for denying [key_name(H)]'s ERT request.", "Outgoing message from CentComm", "", multiline = TRUE, encode = FALSE) if(!input) return GLOB.ert_request_answered = TRUE to_chat(usr, "You sent [input] to [H] via a secure channel.") diff --git a/code/modules/research/designs/AI_module_designs.dm b/code/modules/research/designs/AI_module_designs.dm index 49b8dd5b80a3..21c422161a4c 100644 --- a/code/modules/research/designs/AI_module_designs.dm +++ b/code/modules/research/designs/AI_module_designs.dm @@ -9,7 +9,7 @@ req_tech = list("programming" = 5, "materials" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, MAT_GOLD = 100) - build_path = /obj/item/aiModule/freeform + build_path = /obj/item/ai_module/freeform category = list("AI Modules") /datum/design/onecrewmember_module @@ -19,7 +19,7 @@ req_tech = list("programming" = 6, "materials" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100) - build_path = /obj/item/aiModule/oneCrewMember + build_path = /obj/item/ai_module/one_crew_member category = list("AI Modules") /datum/design/oxygen_module @@ -29,7 +29,7 @@ req_tech = list("programming" = 4, "biotech" = 2, "materials" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, MAT_GOLD = 100) - build_path = /obj/item/aiModule/oxygen + build_path = /obj/item/ai_module/oxygen category = list("AI Modules") /datum/design/protectstation_module @@ -39,7 +39,7 @@ req_tech = list("programming" = 5, "materials" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, MAT_GOLD = 100) - build_path = /obj/item/aiModule/protectStation + build_path = /obj/item/ai_module/protect_station category = list("AI Modules") /datum/design/purge_module @@ -49,7 +49,7 @@ req_tech = list("programming" = 5, "materials" = 6) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100) - build_path = /obj/item/aiModule/purge + build_path = /obj/item/ai_module/purge category = list("AI Modules") /datum/design/quarantine_module @@ -59,7 +59,7 @@ req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, MAT_GOLD = 100) - build_path = /obj/item/aiModule/quarantine + build_path = /obj/item/ai_module/quarantine category = list("AI Modules") /datum/design/reset_module @@ -69,7 +69,7 @@ req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, MAT_GOLD = 100) - build_path = /obj/item/aiModule/reset + build_path = /obj/item/ai_module/reset category = list("AI Modules") /datum/design/safeguard_module @@ -79,7 +79,7 @@ req_tech = list("programming" = 3, "materials" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, MAT_GOLD = 100) - build_path = /obj/item/aiModule/safeguard + build_path = /obj/item/ai_module/safeguard category = list("AI Modules") /datum/design/asimov @@ -89,7 +89,7 @@ req_tech = list("programming" = 3, "materials" = 5) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100) - build_path = /obj/item/aiModule/asimov + build_path = /obj/item/ai_module/asimov category = list("AI Modules") /datum/design/corporate_module @@ -99,7 +99,7 @@ req_tech = list("programming" = 5, "materials" = 5) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100) - build_path = /obj/item/aiModule/corp + build_path = /obj/item/ai_module/corp category = list("AI Modules") /datum/design/crewsimov @@ -109,7 +109,7 @@ req_tech = list("programming" = 3, "materials" = 5) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100) - build_path = /obj/item/aiModule/crewsimov + build_path = /obj/item/ai_module/crewsimov category = list("AI Modules") /datum/design/freeformcore_module @@ -119,7 +119,7 @@ req_tech = list("programming" = 6, "materials" = 6) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100) - build_path = /obj/item/aiModule/freeformcore + build_path = /obj/item/ai_module/freeformcore category = list("AI Modules") /datum/design/paladin_module @@ -129,6 +129,6 @@ req_tech = list("programming" = 5, "materials" = 5) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100) - build_path = /obj/item/aiModule/paladin + build_path = /obj/item/ai_module/paladin category = list("AI Modules") diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 38cdb2537722..ee47d5e60bd3 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -941,7 +941,7 @@ name = "Ammo Box (10mm)" id = "c10mm" build_type = AUTOLATHE - materials = list(MAT_METAL = 30500) + materials = list(MAT_METAL = 45750) build_path = /obj/item/ammo_box/c10mm category = list("hacked", "Security") diff --git a/code/modules/research/designs/equipment_designs.dm b/code/modules/research/designs/equipment_designs.dm index eab2fb0d521a..2720519793c5 100644 --- a/code/modules/research/designs/equipment_designs.dm +++ b/code/modules/research/designs/equipment_designs.dm @@ -369,3 +369,13 @@ materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_SILVER = 2000, MAT_DIAMOND = 1500) build_path = /obj/item/t_scanner/science category = list("Equipment") + +/datum/design/holotool + name = "holotool" + desc = "A highly experimental holographic tool projector" + id = "holotool" + req_tech = null //only from disks + build_type = PROTOLATHE + materials = list(MAT_SILVER = 2000, MAT_TITANIUM = 4000, MAT_DIAMOND = 2000, MAT_BLUESPACE = 2000) + build_path = /obj/item/holotool + category = list("Equipment") diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 734787af43bf..16336842b8af 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -12,6 +12,16 @@ build_path = /obj/item/circuitboard/thermomachine category = list ("Engineering Machinery") +/datum/design/cell_charger + name = "Machine Board(Cell charger)" + desc = "The circuit board for a cell charger" + id = "cell_charger" + build_path = /obj/item/circuitboard/cell_charger + materials = list(MAT_GLASS = 1000) + build_type = IMPRINTER + req_tech = list("powerstorage" = 3, "materials" = 3) + category = list("Misc. Machinery") + /datum/design/recharger name = "Machine Board(Weapon Recharger)" desc = "The circuit board for a weapon recharger" @@ -572,6 +582,26 @@ build_path = /obj/item/circuitboard/microscope category = list ("Misc. Machinery") +/datum/design/station_map + name = "Machine Design (Station Map)" + desc = "Station Map Board." + id = "station_map" + req_tech = list("programming" = 2, "engineering" = 2) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000) + build_path = /obj/item/circuitboard/machine/station_map + category = list ("Misc. Machinery") + +/datum/design/station_map_engineer + name = "Machine Design (Engineering Station Map)" + desc = "Engineering Station Map Board." + id = "engineering_station_map" + req_tech = list("programming" = 5, "engineering" = 5) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000) + build_path = /obj/item/circuitboard/machine/station_map/engineering + category = list ("Misc. Machinery") + /datum/design/brs_server name = "Machine Design (Rift Scan Server)" desc = "Плата сервера сканирования и изучения блюспейс разлома." diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 060f7660fe18..083466c5d3e9 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -1004,6 +1004,17 @@ construction_time = 20 SECONDS category = list("Exosuit Equipment") +/datum/design/medbeamgun + name = "Exosuit Medical Equipment (Mecha Medbeam)" + id = "mech_medical_beamgun" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/mecha_equipment/medical/beamgun + req_tech = list("biotech" = 7, "bluespace" = 7, "powerstorage" = 7) + materials = list(MAT_METAL=5000,MAT_DIAMOND=600,MAT_GLASS=600,MAT_GOLD=600,MAT_URANIUM=300,MAT_BLUESPACE=650) + construction_time = 20 SECONDS + category = list("Exosuit Equipment") + + /datum/design/improved_exosuit_control_system name = "Exosuit Common Equipment (Control System Upgrade)" id = "mech_improved_exosuit_control_system" @@ -1036,6 +1047,17 @@ construction_time = 10 SECONDS category = list("Exosuit Equipment") +/datum/design/mech_cage + name = "Клетка SCS-3" + desc = "Модуль для экзокостюмов, используемый для задержания и заключения преступников." + id = "mech_cage" + build_type = MECHFAB + req_tech = (list("materials" = 7, "combat" = 7)) + build_path = /obj/item/mecha_parts/mecha_equipment/cage + materials = list(MAT_METAL=10000, MAT_TITANIUM=4000, MAT_SILVER=2000, MAT_DIAMOND=1000) + construction_time = 10 SECONDS + category = list("Exosuit Equipment") + /datum/design/mech_proj_armor name = "Exosuit Defence Module (Armor Booster (Range Combat))" desc = "Exosuit-mounted armor booster." @@ -1816,3 +1838,314 @@ construction_time = 5 SECONDS build_path = /obj/item/borg/upgrade/syndie_rcd category = list("Syndicate") + +//Paintkits +/datum/design/paint_ripley_titan + name = "Ripley, Firefighter \"Titan's Fist\"" + id = "p_titan" + build_type = MECHFAB + req_tech = list("combat" = 5, "engineering" = 5, "materials" = 5, "programming" = 5) + build_path = /obj/item/paintkit/ripley_titansfist + materials = list(MAT_METAL = 20000, MAT_PLASMA = 2000, MAT_GLASS = 2000) + construction_time = 10 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_ripley_earth + name = "Ripley, Firefighter \"Strike the Earth!\"" + id = "p_earth" + build_type = MECHFAB + req_tech = list("combat" = 5, "engineering" = 5, "materials" = 5, "programming" = 5) + build_path = /obj/item/paintkit/ripley_mercenary + materials = list(MAT_METAL = 20000, MAT_PLASMA = 2000, MAT_GLASS = 2000) + construction_time = 10 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_ripley_red + name = "Ripley, Firefighter \"Firestarter\"" + id = "p_red" + build_type = MECHFAB + req_tech = list("engineering" = 5, "materials" = 5, "toxins" = 5) + build_path = /obj/item/paintkit/ripley_red + materials = list(MAT_METAL = 20000, MAT_PLASMA = 2000, MAT_GLASS = 2000) + construction_time = 10 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_firefighter_hauler + name = "Ripley, Firefighter \"Hauler\"" + id = "p_hauler" + build_type = MECHFAB + req_tech = list("engineering" = 5, "materials" = 5, "programming" = 5) + build_path = /obj/item/paintkit/firefighter_Hauler + materials = list(MAT_METAL = 20000, MAT_PLASMA = 2000, MAT_GLASS = 2000) + construction_time = 10 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_firefighter_zairjah + name = "Ripley, Firefighter \"Zairjah\"" + id = "p_zairjah" + build_type = MECHFAB + req_tech = list("engineering" = 5, "materials" = 5, "programming" = 5, "toxins" = 5) + build_path = /obj/item/paintkit/firefighter_zairjah + materials = list(MAT_METAL = 20000, MAT_PLASMA = 2000, MAT_GLASS = 2000) + construction_time = 10 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_firefighter_combat + name = "Ripley, Firefighter \"Combat Ripley\"" + id = "p_combat" + build_type = MECHFAB + req_tech = list("combat" = 5, "engineering" = 5, "materials" = 5, "programming" = 5) + build_path = /obj/item/paintkit/firefighter_combat + materials = list(MAT_METAL = 20000, MAT_PLASMA = 2000, MAT_GLASS = 2000) + construction_time = 10 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_firefighter_reaper + name = "Ripley, Firefighter \"Reaper\"" + id = "p_reaper" + build_type = MECHFAB + req_tech = list("combat" = 5, "engineering" = 5, "materials" = 5, "programming" = 5,"toxins" = 5) + build_path = /obj/item/paintkit/firefighter_Reaper + materials = list(MAT_METAL = 20000, MAT_PLASMA = 2000, MAT_GLASS = 2000) + construction_time = 10 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_firefighter_aluminizer + name = "Ripley, Firefighter \"Aluminizer\"" + id = "p_aluminizer" + build_type = MECHFAB + req_tech = list("engineering" = 5, "materials" = 5, "programming" = 5,"toxins" = 5) + build_path = /obj/item/paintkit/firefighter_aluminizer + materials = list(MAT_METAL = 20000, MAT_PLASMA = 2000, MAT_GLASS = 2000) + construction_time = 10 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_ripley_nt + name = "Ripley, Firefighter \"NT Special\"" + id = "p_ripleynt" + build_type = MECHFAB + req_tech = list("combat" = 5, "engineering" = 5, "materials" = 5, "programming" = 5) + build_path = /obj/item/paintkit/ripley_nt + materials = list(MAT_METAL = 20000, MAT_PLASMA = 2000, MAT_GLASS = 2000) + construction_time = 10 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_clarke_orangey + name = "Clarke \"Orangey\"" + id = "p_orangey" + build_type = MECHFAB + req_tech = list("engineering" = 5, "materials" = 5, "toxins" = 5) + build_path = /obj/item/paintkit/clarke_orangey + materials = list(MAT_METAL = 20000, MAT_DIAMOND = 2000, MAT_URANIUM = 2000) + construction_time = 20 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_clarke_spiderclarke + name = "Clarke \"Spiderclarke\"" + id = "p_spiderclarke" + build_type = MECHFAB + req_tech = list("combat" = 4, "engineering" = 5, "materials" = 5, "toxins" = 5) + build_path = /obj/item/paintkit/clarke_spiderclarke + materials = list(MAT_METAL = 20000, MAT_DIAMOND = 2000, MAT_URANIUM = 2000) + construction_time = 20 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_odysseus_hermes + name = "Odysseus \"Hermes\"" + id = "p_hermes" + build_type = MECHFAB + req_tech = list("engineering" = 5, "materials" = 5, "programming" = 5,"biotech" = 5) + build_path = /obj/item/paintkit/odysseus_hermes + materials = list(MAT_METAL = 20000, MAT_DIAMOND = 2000, MAT_URANIUM = 2000) + construction_time = 10 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_odysseus_reaper + name = "Odysseus \"Reaper\"" + id = "p_odyreaper" + build_type = MECHFAB + req_tech = list("combat" = 5, "engineering" = 5, "materials" = 5, "programming" = 5, "toxins" = 5) + build_path = /obj/item/paintkit/odysseus_death + materials = list(MAT_METAL = 20000, MAT_DIAMOND = 2000, MAT_URANIUM = 2000) + construction_time = 10 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_gygax_alt + name = "Gygax \"Old\"" + id = "p_altgygax" + build_type = MECHFAB + req_tech = list("combat" = 4, "engineering" = 5, "materials" = 5, "programming" = 4) + build_path = /obj/item/paintkit/gygax_alt + materials = list(MAT_METAL = 30000, MAT_DIAMOND = 3000, MAT_URANIUM = 3000) + construction_time = 20 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_gygax_pobeda + name = "Gygax \"Pobeda\"" + id = "p_pobedagygax" + build_type = MECHFAB + req_tech = list("combat" = 5, "engineering" = 4, "materials" = 4, "programming" = 6) + build_path = /obj/item/paintkit/gygax_pobeda + materials = list(MAT_METAL = 30000, MAT_DIAMOND = 3000, MAT_URANIUM = 3000) + construction_time = 20 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_gygax_white + name = "Gygax \"White\"" + id = "p_whitegygax" + build_type = MECHFAB + req_tech = list("biotech" = 4, "engineering" = 4, "materials" = 5, "programming" = 3 ) + build_path = /obj/item/paintkit/gygax_white + materials = list(MAT_METAL = 30000, MAT_DIAMOND = 3000, MAT_URANIUM = 3000) + construction_time = 20 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_gygax_medgax + name = "Gygax \"Medgax\"" + id = "p_medgax" + build_type = MECHFAB + req_tech = list("engineering" = 5, "materials" = 5, "programming" = 6,"biotech" = 6, "toxins" = 6) + build_path = /obj/item/paintkit/gygax_medgax + materials = list(MAT_METAL = 30000, MAT_DIAMOND = 3000, MAT_URANIUM = 3000) + construction_time = 20 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_gygax_black + name = "Gygax \"Syndicate\"" + id = "p_blackgygax" + build_type = MECHFAB + req_tech = list("combat" = 6, "engineering" = 5, "materials" = 6, "programming" = 5, "syndicate" = 3) + build_path = /obj/item/paintkit/gygax_syndie + materials = list(MAT_METAL = 30000, MAT_DIAMOND = 3000, MAT_URANIUM = 3000) + construction_time = 20 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_gygax_pirate + name = "Gygax \"Pirate\"" + id = "p_pirategygax" + build_type = MECHFAB + req_tech = list("combat" = 6, "engineering" = 6, "materials" = 6, "programming" = 6) + build_path = /obj/item/paintkit/gygax_pirate + materials = list(MAT_METAL = 30000, MAT_DIAMOND = 3000, MAT_URANIUM = 3000) + construction_time = 30 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_durand_unathi + name = "Durand \"Kharn MK. IV\"" + id = "p_unathi" + build_type = MECHFAB + req_tech = list("materials" = 6, "biotech" = 6) + build_path = /obj/item/paintkit/durand_unathi + materials = list(MAT_METAL = 40000, MAT_DIAMOND = 4000, MAT_URANIUM = 4000) + construction_time = 30 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_durand_shire + name = "Durand \"Shire\"" + id = "p_shire" + build_type = MECHFAB + req_tech = list("combat" = 6, "engineering" = 6, "materials" = 6, "programming" = 6) + build_path = /obj/item/paintkit/durand_shire + materials = list(MAT_METAL = 40000, MAT_DIAMOND = 4000, MAT_URANIUM = 4000) + construction_time = 30 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_durand_pirate + name = "Durand \"Pirate\"" + id = "p_durandpirate" + build_type = MECHFAB + req_tech = list("combat" = 6, "engineering" = 6, "materials" = 6, "programming" = 6) + build_path = /obj/item/paintkit/durand_pirate + materials = list(MAT_METAL = 40000, MAT_DIAMOND = 4000, MAT_URANIUM = 4000) + construction_time = 30 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_durand_nt + name = "Durand \"NT Special\"" + id = "p_durandnt" + build_type = MECHFAB + req_tech = list("combat" = 6, "engineering" = 6, "materials" = 6, "programming" = 6) + build_path = /obj/item/paintkit/durand_nt + materials = list(MAT_METAL = 40000, MAT_DIAMOND = 4000, MAT_URANIUM = 4000) + construction_time = 30 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_durand_soviet + name = "Durand \"Dollhouse\"" + id = "p_soviet" + build_type = MECHFAB + req_tech = list("combat" = 6, "engineering" = 6, "materials" = 6, "programming" = 6, "toxins" = 6) + build_path = /obj/item/paintkit/durand_soviet + materials = list(MAT_METAL = 40000, MAT_DIAMOND = 4000, MAT_URANIUM = 4000) + construction_time = 30 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_durand_executor + name = "Durand \"mk.V Executioner\"" + id = "p_executor" + build_type = MECHFAB + req_tech = list("combat" = 6, "engineering" = 6, "materials" = 6, "programming" = 6) + build_path = /obj/item/paintkit/durand_executor + materials = list(MAT_METAL = 40000, MAT_DIAMOND = 4000, MAT_SILVER = 4000) + construction_time = 30 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_phazon_imperion + name = "Phazon \"Imperion\"" + id = "p_imperion" + build_type = MECHFAB + req_tech = list("bluespace" = 6, "engineering" = 6, "materials" = 6, "programming" = 6, "toxins" = 5) + build_path = /obj/item/paintkit/phazon_imperion + materials = list(MAT_METAL = 50000, MAT_DIAMOND = 4000, MAT_BLUESPACE = 4000) + construction_time = 40 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_phazon_janus + name = "Phazon \"Janus\"" + id = "p_janus" + build_type = MECHFAB + req_tech = list("bluespace" = 6, "engineering" = 6, "materials" = 6, "programming" = 6, "toxins" = 5) + build_path = /obj/item/paintkit/phazon_janus + materials = list(MAT_METAL = 50000, MAT_DIAMOND = 4000, MAT_BLUESPACE = 4000) + construction_time = 40 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_phazon_plazmus + name = "Phazon \"Plazmus\"" + id = "p_plazmus" + build_type = MECHFAB + req_tech = list("bluespace" = 6, "engineering" = 6, "materials" = 6, "toxins" = 5) + build_path = /obj/item/paintkit/phazon_plazmus + materials = list(MAT_METAL = 50000, MAT_DIAMOND = 4000, MAT_PLASMA = 5000) + construction_time = 40 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_phazon_blanco + name = "Phazon \"Blanco\"" + id = "p_blanco" + build_type = MECHFAB + req_tech = list("bluespace" = 7, "engineering" = 7, "materials" = 7, "toxins" = 6) + build_path = /obj/item/paintkit/phazon_blanco + materials = list(MAT_METAL = 50000, MAT_DIAMOND = 4000, MAT_BLUESPACE = 4000) + construction_time = 40 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_phazon_nt + name = "Phazon \"NT Special\"" + id = "p_phazonnt" + build_type = MECHFAB + req_tech = list("bluespace" = 7, "engineering" = 7, "materials" = 7, "toxins" = 6) + build_path = /obj/item/paintkit/phazon_nt + materials = list(MAT_METAL = 50000, MAT_DIAMOND = 4000, MAT_BLUESPACE = 4000) + construction_time = 40 SECONDS + category = list("Exosuit Paintkits") + +/datum/design/paint_ashed + name = "Ashed \"Mechs\"" + id = "p_ashed" + build_type = MECHFAB + req_tech = list("engineering" = 5, "materials" = 6) + build_path = /obj/item/paintkit/ashed + materials = list(MAT_METAL = 20000, MAT_PLASMA = 8000, MAT_GLASS = 8000) + construction_time = 20 SECONDS + category = list("Exosuit Paintkits") diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 0e910583054f..8d5266377688 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -265,6 +265,17 @@ build_path = /obj/item/bonesetter/laser category = list("Medical") +/datum/design/item/laserfullkit + name = "Advanced Surgery Kit" + desc = "Полный набор современных хирургических инструментов." + id = "laser_fullsurgerykit" + req_tech = list("biotech" = 4, "materials" = 6, "magnets" = 5) + build_path = /obj/item/storage/toolbox/surgery/advanced + build_type = PROTOLATHE + materials = list(MAT_METAL = 13000, MAT_GLASS = 10000, MAT_SILVER = 6000, MAT_GOLD = 6000) + category = list("Medical") + + /datum/design/alienscalpel name = "Alien Scalpel" desc = "An advanced scalpel obtained through Abductor technology." @@ -355,6 +366,16 @@ materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500) category = list("Medical") +/datum/design/alienfullkit + name = "Alien Surgery Kit" + desc = "Полный набор инопланетных хирургических инструментов." + id = "alien_fullsurgerykit" + req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3) + build_path = /obj/item/storage/toolbox/surgery/alien + build_type = PROTOLATHE + materials = list(MAT_METAL = 34500, MAT_SILVER = 16000, MAT_PLASMA = 5500, MAT_TITANIUM = 13500) + category = list("Medical") + ///////////////////////////////////////// //////////Cybernetic Implants//////////// ///////////////////////////////////////// @@ -623,6 +644,17 @@ build_path = /obj/item/organ/internal/cyberimp/chest/reviver category = list("Medical") +/datum/design/voice_retranslator + name = "Psionic Voice Retranslator" + desc = "Имплант для перевода псионической речи греев в более понятные для других гуманоидов звуковые волны. Разработан специально для греев." + id = "ci_retranslator" + req_tech = list("materials" = 5, "programming" = 6, "biotech" = 6, "engineering" = 6, "abductor" = 4) + build_type = PROTOLATHE | MECHFAB + construction_time = 50 + materials = list(MAT_METAL = 2500, MAT_GLASS = 1500, MAT_TITANIUM = 1000, MAT_DIAMOND = 600, MAT_PLASMA = 500) + build_path = /obj/item/organ/internal/cyberimp/mouth/translator/grey_retraslator + category = list("Medical") + ///////////////////////////////////////// ////////////Regular Implants///////////// ///////////////////////////////////////// @@ -788,7 +820,7 @@ category = list("Medical") /datum/design/modified_medical_gloves - name = "modified medical gloves" + name = "Modified Medical Gloves" desc = "They are very soft and light to the touch and do not hinder movement at all." id = "modified_medical_gloves" req_tech = list("magnets" = 7, "materials" = 7, "programming" = 5, "biotech" = 5) @@ -796,3 +828,32 @@ build_type = PROTOLATHE materials = list(MAT_METAL = 1000, MAT_SILVER = 800, MAT_GLASS = 800, MAT_DIAMOND = 600, MAT_GOLD = 400) category = list("Medical") + +/datum/design/bbag + name = "bluespace bodybag" + desc = "A bluespace body bag designed for the storage and transportation of cadavers." + id = "bbag" + req_tech = null //only for roboquests + build_type = PROTOLATHE + materials = list(MAT_SILVER = 1200, MAT_GLASS = 800, MAT_DIAMOND = 1200, MAT_GOLD = 400, MAT_BLUESPACE = 2000) + build_path = /obj/item/bodybag/bluespace + category = list("Medical") + +/datum/design/adv_drug_storage + name = "Advanced drug storage" + desc = "Технологичное устройство для хранения препаратов небольшого размера, имеет два контейнера разной формы, что объединяет центральное хранилище устройства." + id = "adv_drug_storage" + req_tech = list("materials" = 4, "bluespace" = 3, "biotech" = 3, "plasmatech" = 3) + build_type = PROTOLATHE + materials = list(MAT_METAL = 340, MAT_GLASS = 340, MAT_PLASMA = 200, MAT_BLUESPACE = 30) + build_path = /obj/item/storage/pill_bottle/bluespace + category = list("Medical") + +/datum/design/inugami_medical_gloves + name = "Inugami medical gloves" + id = "medical_gloves_inugami" + req_tech = list("materials" = 7, "biotech" = 7, "magnets" = 8, "programming" = 7) + build_type = PROTOLATHE + materials = list(MAT_METAL = 1200, MAT_GLASS = 1000, MAT_SILVER = 800, MAT_GOLD = 800, MAT_DIAMOND = 1000, MAT_BLUESPACE = 600) + build_path = /obj/item/clothing/gloves/color/latex/inugami + category = list("Medical") diff --git a/code/modules/research/designs/mining_designs.dm b/code/modules/research/designs/mining_designs.dm index 5343d100fbdf..9f5950509dfd 100644 --- a/code/modules/research/designs/mining_designs.dm +++ b/code/modules/research/designs/mining_designs.dm @@ -111,3 +111,13 @@ materials = list(MAT_METAL = 4000, MAT_PLASMA = 6000, MAT_URANIUM = 1000) build_path = /obj/item/grenade/plastic/miningcharge/mega category = list("Mining") + +/datum/design/fishingrod + name = "Fishing Rod" + desc = "Hey! I caught a miner!" + id = "fishingrod" + req_tech = list("materials" = 5, "engineering" = 4, "plasmatech" = 5, "biotech" = 4) + build_type = PROTOLATHE + materials = list(MAT_METAL = 4000, MAT_TITANIUM = 6000) + build_path = /obj/item/twohanded/fishing_rod + category = list("Mining") diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index 089cb6de1113..ec31600f9aa3 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -151,3 +151,24 @@ materials = list(MAT_METAL = 800, MAT_GLASS = 600) build_path = /obj/item/vending_refill/custom category = list("Miscellaneous") + +/datum/design/translator_chip + name = "PVR Language Chip" + desc = "Крошечный чип с индикатором. Устанавливается в импланты-переводчики." + id = "pvr_language_chip" + req_tech = list("materials" = 3, "programming" = 5, "abductor" = 1) + build_type = PROTOLATHE + build_path = /obj/item/translator_chip + materials = list(MAT_METAL = 1000, MAT_GLASS = 100, MAT_TITANIUM = 500, MAT_PLASMA = 500, MAT_DIAMOND = 100) + category = list("Miscellaneous") + +/datum/design/retranslator_upgrade + name = "PVR Storage Upgrade" + desc = "Маленькое устройство для расширения количества слотов голосовых чипов в ретрансляторе псионического голоса." + id = "pvr_storage_upgrade" + req_tech = list("materials" = 5, "programming" = 6, "bluespace" = 6, "abductor" = 2) + build_type = PROTOLATHE + build_path = /obj/item/translator_upgrade/grey_retraslator + materials = list(MAT_METAL = 1000, MAT_GLASS = 100, MAT_TITANIUM = 500, MAT_PLASMA = 500, MAT_DIAMOND = 100) + category = list("Miscellaneous") + diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 320b7c01d8a7..8bb3ba0bc77d 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -120,7 +120,7 @@ category = list("Weapons") /datum/design/plasmapistol - name = "Plasma Pistol" + name = "Toxin Pistol" desc = "A specialized firearm designed to fire lethal bolts of toxins." id = "ppistol" req_tech = list("combat" = 5, "magnets" = 5, "powerstorage" = 5) @@ -321,7 +321,7 @@ req_tech = list("programming" = 5, "syndicate" = 2, "materials" = 5) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100) - build_path = /obj/item/aiModule/antimov + build_path = /obj/item/ai_module/antimov locked = TRUE category = list("ILLEGAL") @@ -332,7 +332,7 @@ req_tech = list("programming" = 5, "syndicate" = 2, "materials" = 5) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100) - build_path = /obj/item/aiModule/tyrant + build_path = /obj/item/ai_module/tyrant locked = TRUE category = list("ILLEGAL") @@ -359,7 +359,7 @@ category = list("ILLEGAL") /datum/design/stechkin - name = "Stechkin pistol" + name = "Stechkin Pistol" desc = "A reverse-engineered small, easily concealable 10mm handgun. Has a threaded barrel for suppressors." id = "stechkin" req_tech = list("combat" = 6, "engineering" = 6, "syndicate" = 5) @@ -370,7 +370,7 @@ category = list("ILLEGAL") /datum/design/chameleon_kit - name = "Chameleon kit" + name = "Chameleon Kit" desc = "A set of items that contain chameleon technology allowing you to disguise as pretty much anything on the station." // "Набор хамелеона изученный с помощью реверс инженеринга." id = "chameleon_kit" req_tech = list("combat" = 4, "engineering" = 6, "syndicate" = 3, "magnets" = 5) @@ -381,7 +381,7 @@ category = list("ILLEGAL") /datum/design/chameleon_hud - name = "Chameleon hud" + name = "Chameleon Security HUD" desc = "A stolen Nanotrasen Security HUD with Syndicate chameleon technology implemented into it. Similarly to a chameleon jumpsuit, the HUD can be morphed into various other eyewear, while retaining the HUD qualities when worn." id = "chameleon_hud" req_tech = list("combat" = 4, "engineering" = 6, "syndicate" = 3, "magnets" = 5) @@ -392,7 +392,7 @@ category = list("ILLEGAL") /datum/design/e_dagger - name = "Energy dagger" + name = "Energy Dagger" desc = "A dagger made of energy that looks and functions as a pen when off." id = "e_dagger" req_tech = list("combat" = 7, "programming" = 7, "syndicate" = 2, "materials" = 7) @@ -403,7 +403,7 @@ category = list("ILLEGAL") /datum/design/a_tuner - name = "Acces tuner" + name = "Access Tuner" desc = "The access tuner is a small device that can interface with airlocks from range. It takes a few seconds to connect and can change the bolt state, open the door, or toggle emergency access." id = "a_tuner" req_tech = list("programming" = 7, "syndicate" = 4, "materials" = 7) @@ -414,7 +414,7 @@ category = list("ILLEGAL") /datum/design/c_flash - name = "Camera flash" + name = "Camera Flash" desc = "A flash disguised as a camera with a self-charging safety system preventing the flash from burning out." id = "c_flash" req_tech = list("combat" = 7, "programming" = 6, "syndicate" = 3) @@ -425,7 +425,7 @@ category = list("ILLEGAL") /datum/design/dna_scrambler - name = "DNA scrambler" + name = "DNA Scrambler" desc = "A syringe with one injection that randomizes appearance and name upon use. A cheaper but less versatile alternative to an agent card and voice changer." id = "dna_scrambler" req_tech = list("biotech" = 7, "programming" = 7, "syndicate" = 3) @@ -437,7 +437,7 @@ category = list("ILLEGAL") /datum/design/c_bug - name = "Camera bug" + name = "Camera Bug" desc = "Enables you to view all cameras on the network to track a target." id = "c_bug" req_tech = list("materials" = 5, "programming" = 7, "syndicate" = 2) @@ -459,7 +459,7 @@ category = list("ILLEGAL") /datum/design/adv_pointer - name = "Advanced pinpointer" + name = "Advanced Pinpointer" desc = "A pinpointer that tracks any specified coordinates, DNA string, high value item or the nuclear authentication disk." id = "adv_pointer" req_tech = list("materials" = 7, "programming" = 7, "syndicate" = 4) @@ -470,7 +470,7 @@ category = list("ILLEGAL") /datum/design/encryptionkey_binary - name = "Binary encryptionkey" + name = "Binary Encryptionkey" desc = "An encryption key for a radio headset. To access the binary channel, use :+." // "Ключ шифрования, на которой переговариваеются борги и ИИ." id = "binarykey" req_tech = list("engineering" = 4, "syndicate" = 3, "programming" = 4,"materials" = 3) @@ -481,7 +481,7 @@ category = list("ILLEGAL") /datum/design/encryptionkey_syndicate - name = "Syndicate encryptionkey" + name = "Syndicate Encryptionkey" desc = "An encyption key for a radio headset. Contains syndicate cypherkeys." // "Ключ шифрования синдиката, позволяющий перехватывать другие зашифрованные радиоволны." id = "syndicatekey" req_tech = list("engineering" = 4, "syndicate" = 3, "programming" = 4,"materials" = 3) @@ -491,19 +491,19 @@ locked = TRUE category = list("ILLEGAL") -/datum/design/aiModule_syndicate - name = "Hacked AI module" +/datum/design/ai_module_syndicate + name = "Hacked AI Module" desc = "A hacked AI law module" id = "syndiaimodule" req_tech = list("syndicate" = 6, "programming" = 5, "materials" = 5) build_type = IMPRINTER materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100) - build_path = /obj/item/aiModule/syndicate + build_path = /obj/item/ai_module/syndicate locked = TRUE category = list("ILLEGAL") /datum/design/incendiary_10mm - name = "pistol magazine 10mm incendiary" + name = "Pistol Magazine 10mm Incendiary" desc = "A gun magazine. Loaded with rounds which ignite the target." id = "10mminc" req_tech = list("combat" = 4, "syndicate" = 2, "materials" = 4) @@ -514,7 +514,7 @@ category = list("ILLEGAL") /datum/design/radio_jammer - name = "radio jammer" + name = "Radio Jammer" desc = "Device used to disrupt nearby radio communication." id = "jammer" req_tech = list("engineering" = 4, "syndicate" = 3, "programming" = 3, "materials" = 4) @@ -536,7 +536,7 @@ category = list("ILLEGAL") /datum/design/syndie_rcd_ammo - name = "suspicious matter cartridge" + name = "Suspicious Matter Cartridge" desc = "Highly compressed matter for the RCD." id = "syndie_rcd_ammo" req_tech = list("materials" = 3, "syndicate" = 3) @@ -546,7 +546,7 @@ category = list("ILLEGAL") /datum/design/syndie_rcd_ammo_large - name = "large suspicious matter cartridge" + name = "Large Suspicious Matter Cartridge" desc = "Highly compressed matter for the RCD." id = "syndie_rcd_ammo_large" req_tech = list("materials" = 3, "syndicate" = 3) @@ -567,7 +567,7 @@ category = list("ILLEGAL") /datum/design/pyroclaw - name = "Fusion gauntlets" + name = "Fusion Gauntlets" desc = "A pair of gloves designed to make superheated claws capable of cutting through almost anything. Needs a pyro anomaly core" id = "pyro_gloves" req_tech = list("combat" = 7, "materials" = 7, "engineering" = 7, "plasmatech" = 7) @@ -575,3 +575,28 @@ materials = list(MAT_METAL = 10000, MAT_GLASS = 5000, MAT_SILVER = 4000, MAT_TITANIUM = 4000, MAT_PLASMA = 8000) build_path = /obj/item/clothing/gloves/color/black/pyro_claws category = list("Weapons") + +/* uncomment when every tech is 90 lvl, too op for now +/datum/design/laserminigun + name = "Laser gatling gun" + desc = "Огромное лазерное орудие, обладающее выдающейся скорострельностью и поражающей силой. Говорят, что 12 секунд стрельбы из этой малышки обойдутся вам в 400 тысяч кредитов." + id = "laser_gatling" + build_type = PROTOLATHE + req_tech = list("combat" = 8, "materials" = 7, "magnets" = 7, "powerstorage" = 7) + materials = list(MAT_METAL = 12000, MAT_GLASS = 2400, MAT_URANIUM = 1200, MAT_TITANIUM = 1200, MAT_DIAMOND = 1200) + locked = TRUE + build_path = /obj/item/gun/energy/gun/minigun + category = list("Weapons") + lathe_time_factor = 0.5 +*/ + +/datum/design/real_plasma_pistol + name = "Plasma Pistol" + desc = "HA specialized firearm designed to fire heated bolts of plasma. Can be overloaded for a high damage shield breaking shot." + id = "real_plasma_pistol" + req_tech = null + build_type = PROTOLATHE + materials = list(MAT_SILVER = 6000, MAT_TITANIUM = 4000, MAT_PLASMA = 4000) + build_path = /obj/item/gun/energy/plasma_pistol + locked = TRUE + category = list("Weapons") diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index b0deac1cb8d9..c50b897a1b34 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -29,6 +29,7 @@ var/resetTime = 15 var/cloneMode = FALSE var/cloneCount = 0 + var/clone_next = FALSE // Clones the next inserted technological item. /// The distance to your rnd console. Useful for creative mapping. var/console_dist = 3 var/list/item_reactions = list() @@ -55,7 +56,7 @@ /* //uncomment to enable forced reactions. /obj/machinery/r_n_d/experimentor/verb/forceReaction() set name = "Force Experimentor Reaction" - set category = "Debug" + set category = "Admin.Debug" set src in oview(1) var/reaction = input(usr,"What reaction?") in list(SCANTYPE_POKE,SCANTYPE_IRRADIATE,SCANTYPE_GAS,SCANTYPE_HEAT,SCANTYPE_COLD,SCANTYPE_OBLITERATE) var/oldReaction = item_reactions["[loaded_item.type]"] @@ -69,10 +70,9 @@ /obj/machinery/r_n_d/experimentor/proc/SetTypeReactions() var/probWeight = 0 for(var/I in typesof(/obj/item)) - if(istype(I,/obj/item/relic)) //does istype even work here - item_reactions["[I]"] = SCANTYPE_DISCOVER - else - item_reactions["[I]"] = pick(SCANTYPE_POKE,SCANTYPE_IRRADIATE,SCANTYPE_GAS,SCANTYPE_HEAT,SCANTYPE_COLD,SCANTYPE_OBLITERATE) + if(istype(I,/obj/item/relic)) + continue + item_reactions["[I]"] = pick(SCANTYPE_POKE,SCANTYPE_IRRADIATE,SCANTYPE_GAS,SCANTYPE_HEAT,SCANTYPE_COLD,SCANTYPE_OBLITERATE) if(ispath(I,/obj/item/stock_parts) || ispath(I,/obj/item/grenade/chem_grenade) || ispath(I,/obj/item/kitchen)) var/obj/item/tempCheck = I if(initial(tempCheck.icon_state) != null) //check it's an actual usable item, in a hacky way @@ -145,24 +145,52 @@ if(disabled) to_chat(user, span_warning("The [name] is offline.")) return ATTACK_CHAIN_PROCEED + if(!linked_console) to_chat(user, span_warning("The [name] should be linked to an R&D console first.")) return ATTACK_CHAIN_PROCEED + if(loaded_item) to_chat(user, span_warning("The [name] is already loaded.")) return ATTACK_CHAIN_PROCEED + if(!checkCircumstances(I)) to_chat(user, span_warning("The [I.name] is not yet valid for [src] and must be completed.")) return ATTACK_CHAIN_PROCEED + if(!I.origin_tech) to_chat(user, span_warning("The [I.name] has no technological origin.")) return ATTACK_CHAIN_PROCEED - var/list/temp_tech = ConvertReqString2List(I.origin_tech) - if(!length(temp_tech)) - to_chat(user, span_warning("The [I.name] has no technological origin.")) + + if(clone_next) + var/list/temp_tech = ConvertReqString2List(I.origin_tech) + var/techs_sum = 0 + for(var/T in temp_tech) + techs_sum += temp_tech[T] + + if(istype(I, /obj/item/relic) || (techs_sum > 4 || isstorage(I)) && !istype(I, /obj/item/storage/backpack/holding)) + to_chat(user, span_warning("Этот предмет слишком сложен для копирования. Попробуйте вставить что-то попроще.")) + return ATTACK_CHAIN_PROCEED + + if (I.type in subtypesof(/obj/item/stack)) + var/obj/item/stack/stack = I + if (stack.amount > 1) + to_chat(user, span_warning("Предмет должен быть цельным.")) + return ATTACK_CHAIN_PROCEED + + investigate_log("Experimentor has made a clone of [I]", INVESTIGATE_EXPERIMENTOR) + throwSmoke(get_turf(pick(oview(1,src)))) + for (var/i = 1; i <= badThingCoeff; i++) + visible_message(span_notice("A duplicate [I] pops out!")) + var/type_to_make = I.type + new type_to_make(get_turf(pick(oview(1,src)))) + + clone_next = FALSE return ATTACK_CHAIN_PROCEED + if(!user.drop_transfer_item_to_loc(I, src)) - return ..() + return ATTACK_CHAIN_PROCEED + loaded_item = I to_chat(user, span_notice("You have added [I] to [src].")) flick("h_lathe_load", src) @@ -214,8 +242,6 @@ dat += "
    Burn" dat += "
    Freeze" dat += "
    Destroy
    " - if(istype(loaded_item,/obj/item/relic)) - dat += "
    Discover
    " dat += "
    Eject" else dat += "Nothing loaded." @@ -229,10 +255,10 @@ /obj/machinery/r_n_d/experimentor/proc/matchReaction(matching,reaction) var/obj/item/D = matching if(D) - if(item_reactions.Find("[D.type]")) + if(istype(D, /obj/item/relic) || item_reactions.Find("[D.type]")) var/tor = item_reactions["[D.type]"] - if(tor == text2num(reaction)) - return tor + if(istype(D, /obj/item/relic) || tor == text2num(reaction)) + return text2num(reaction) else return FAIL else @@ -259,8 +285,8 @@ loaded_item = null /obj/machinery/r_n_d/experimentor/proc/throwSmoke(turf/where) - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(1,0, where, 0) + var/datum/effect_system/fluid_spread/smoke/smoke = new + smoke.set_up(amount = 1, location = where) smoke.start() /obj/machinery/r_n_d/experimentor/proc/pickWeighted(list/from) @@ -276,14 +302,9 @@ else counter = 1 -/obj/machinery/r_n_d/experimentor/proc/experiment(exp,obj/item/exp_on) - recentlyExperimented = TRUE - update_icon(UPDATE_ICON_STATE) - var/chosenchem - var/criticalReaction = (exp_on.type in critical_items) ? TRUE : FALSE - //////////////////////////////////////////////////////////////////////////////////////////////// - if(exp == SCANTYPE_POKE) - visible_message("[src] prods at [exp_on] with mechanical arms.") +/obj/machinery/r_n_d/experimentor/proc/scan_poke(exp, obj/item/exp_on, chosenchem, criticalReaction, isRelict) + visible_message("[src] prods at [exp_on] with mechanical arms.") + if(!isRelict) if(prob(EFFECT_PROB_LOW) && criticalReaction) visible_message("[exp_on] is gripped in just the right way, enhancing its focus.") badThingCoeff++ @@ -305,27 +326,42 @@ ejectItem() if(throwing) throwing.throw_at(target, 10, 1) - //////////////////////////////////////////////////////////////////////////////////////////////// - if(exp == SCANTYPE_IRRADIATE) - visible_message("[src] reflects radioactive rays at [exp_on]!") + else if(prob(EFFECT_PROB_VERYLOW)) + visible_message("The [exp_on] begins to vibrate!") + playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 3, -1) + ejectItem() + throwSmoke(get_turf(exp_on)) + var/obj/item/relict_production/strange_teleporter/teleporter = new /obj/item/relict_production/strange_teleporter(get_turf(exp_on)) + teleporter.icon_state = exp_on.icon_state + qdel(exp_on) + else + exp = FAIL + + +/obj/machinery/r_n_d/experimentor/proc/scan_irradiate(exp, obj/item/exp_on, chosenchem, criticalReaction, isRelict) + visible_message("[src] reflects radioactive rays at [exp_on]!") + if(!isRelict) if(prob(EFFECT_PROB_LOW) && criticalReaction) visible_message("[exp_on] has activated an unknown subroutine!") cloneMode = TRUE cloneCount = badThingCoeff investigate_log("Experimentor has made a clone of [exp_on]", INVESTIGATE_EXPERIMENTOR) ejectItem() + if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src] malfunctions, melting [exp_on] and leaking radiation!") for(var/mob/living/m in oview(1, src)) m.apply_effect(25,IRRADIATE) investigate_log("Experimentor has irradiated [key_name_log(m)]", INVESTIGATE_EXPERIMENTOR) //One entry per person so we know what was irradiated. ejectItem(TRUE) + if(prob(EFFECT_PROB_LOW-badThingCoeff)) visible_message("[src] malfunctions, spewing toxic waste!") for(var/turf/T in oview(1, src)) if(!T.density) if(prob(EFFECT_PROB_VERYHIGH)) new /obj/effect/decal/cleanable/greenglow(T) + if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) var/savedName = "[exp_on]" ejectItem(TRUE) @@ -336,37 +372,48 @@ if(istype(loaded_item,/obj/item/grenade/chem_grenade)) var/obj/item/grenade/chem_grenade/CG = loaded_item CG.prime() + ejectItem() - //////////////////////////////////////////////////////////////////////////////////////////////// - if(exp == SCANTYPE_GAS) - visible_message("[src] fills its chamber with gas, [exp_on] included.") + + else if(prob(EFFECT_PROB_VERYLOW)) + visible_message("The [exp_on] has activated an unknown subroutine!") + clone_next = TRUE + ejectItem() + qdel(exp_on) + else + exp = FAIL + + +/obj/machinery/r_n_d/experimentor/proc/scan_gas(exp, obj/item/exp_on, chosenchem, criticalReaction, isRelict) + visible_message("[src] fills its chamber with gas, [exp_on] included.") + if(!isRelict) if(prob(EFFECT_PROB_LOW) && criticalReaction) visible_message("[exp_on] achieves the perfect mix!") new /obj/item/stack/sheet/mineral/plasma(get_turf(pick(oview(1,src)))) if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src] destroys [exp_on], leaking dangerous gas!") chosenchem = pick("carbon","radium","toxin","condensedcapsaicin","psilocybin","space_drugs","ethanol","beepskysmash") - var/datum/reagents/R = new/datum/reagents(400) - R.my_atom = src - R.add_reagent(chosenchem , 375) + var/datum/reagents/inner_reagent = new/datum/reagents(400) + inner_reagent.my_atom = src + inner_reagent.add_reagent(chosenchem , 375) investigate_log("Experimentor has released [chosenchem] smoke.", INVESTIGATE_EXPERIMENTOR) - var/datum/effect_system/smoke_spread/chem/smoke = new - smoke.set_up(R, src, TRUE) + var/datum/effect_system/fluid_spread/smoke/chem/smoke = new + smoke.set_up(range = 2, location = src, carry = inner_reagent, silent = TRUE) playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3) smoke.start() - qdel(R) + qdel(inner_reagent) ejectItem(TRUE) if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src]'s chemical chamber has sprung a leak!") chosenchem = pick("mutationtoxin","nanomachines","sacid") - var/datum/reagents/R = new/datum/reagents(400) - R.my_atom = src - R.add_reagent(chosenchem , 375) - var/datum/effect_system/smoke_spread/chem/smoke = new - smoke.set_up(R, src, TRUE) + var/datum/reagents/inner_reagent = new/datum/reagents(400) + inner_reagent.my_atom = src + inner_reagent.add_reagent(chosenchem , 375) + var/datum/effect_system/fluid_spread/smoke/chem/smoke = new + smoke.set_up(range = 2, location = src, carry = inner_reagent, silent = TRUE) playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3) smoke.start() - qdel(R) + qdel(inner_reagent) ejectItem(TRUE) warn_admins(usr, "[chosenchem] smoke") investigate_log("Experimentor has released [chosenchem] smoke!", INVESTIGATE_EXPERIMENTOR) @@ -378,9 +425,20 @@ empulse(src.loc, 4, 0) //change this to 4,6 once the EXPERI-Mentor is moved. investigate_log("Experimentor has generated an Electromagnetic Pulse.", INVESTIGATE_EXPERIMENTOR) ejectItem(TRUE) - //////////////////////////////////////////////////////////////////////////////////////////////// - if(exp == SCANTYPE_HEAT) - visible_message("[src] raises [exp_on]'s temperature.") + else if(prob(EFFECT_PROB_LOW)) + visible_message("[exp_on] achieves the perfect mix!") + playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 3, -1) + ejectItem() + throwSmoke(get_turf(exp_on)) + new /obj/item/relict_production/perfect_mix(get_turf(exp_on)) + qdel(exp_on) + else + exp = FAIL + + +/obj/machinery/r_n_d/experimentor/proc/scan_heat(exp, obj/item/exp_on, chosenchem, criticalReaction, isRelict) + visible_message("[src] raises [exp_on]'s temperature.") + if(!isRelict) if(prob(EFFECT_PROB_LOW) && criticalReaction) visible_message("[src]'s emergency coolant system gives off a small ding!") playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) @@ -398,7 +456,7 @@ if(MT) visible_message("[src] dangerously overheats, launching a flaming fuel orb!") investigate_log("Experimentor has launched a fireball at [key_name_log(M)]!", INVESTIGATE_EXPERIMENTOR) - var/obj/item/projectile/magic/fireball/FB = new /obj/item/projectile/magic/fireball(start) + var/obj/projectile/magic/fireball/FB = new /obj/projectile/magic/fireball(start) FB.original = MT FB.current = start FB.yo = MT.y - start.y @@ -430,9 +488,21 @@ m.apply_damage(5,BURN,pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_PRECISE_GROIN)) investigate_log("Experimentor has dealt minor burn damage to [key_name_log(m)]", INVESTIGATE_EXPERIMENTOR) ejectItem() - //////////////////////////////////////////////////////////////////////////////////////////////// - if(exp == SCANTYPE_COLD) - visible_message("[src] lowers [exp_on]'s temperature.") + else if(prob(EFFECT_PROB_LOW)) + visible_message("[exp_on] begins to shake, and in the distance the sound of rampaging animals arises!") + playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 3, -1) + ejectItem() + throwSmoke(get_turf(exp_on)) + var/obj/item/relict_production/pet_spray/R = new /obj/item/relict_production/pet_spray(get_turf(exp_on)) + R.icon_state = exp_on.icon_state + qdel(exp_on) + else + exp = FAIL + + +/obj/machinery/r_n_d/experimentor/proc/scan_cold(exp, obj/item/exp_on, chosenchem, criticalReaction, isRelict) + visible_message("[src] lowers [exp_on]'s temperature.") + if(!isRelict) if(prob(EFFECT_PROB_LOW) && criticalReaction) visible_message("[src]'s emergency coolant system gives off a small ding!") var/obj/item/reagent_containers/food/drinks/coffee/C = new /obj/item/reagent_containers/food/drinks/coffee(get_turf(pick(oview(1,src)))) @@ -445,15 +515,15 @@ investigate_log("Experimentor has made a cup of [chosenchem] coffee.", INVESTIGATE_EXPERIMENTOR) if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src] malfunctions, shattering [exp_on] and releasing a dangerous cloud of coolant!") - var/datum/reagents/R = new/datum/reagents(400) - R.my_atom = src - R.add_reagent("frostoil" , 375) + var/datum/reagents/inner_reagent = new/datum/reagents(400) + inner_reagent.my_atom = src + inner_reagent.add_reagent("frostoil" , 375) investigate_log("Experimentor has released frostoil gas.", INVESTIGATE_EXPERIMENTOR) - var/datum/effect_system/smoke_spread/chem/smoke = new - smoke.set_up(R, src, TRUE) + var/datum/effect_system/fluid_spread/smoke/chem/smoke = new + smoke.set_up(range = 2, location = src, carry = inner_reagent, silent = TRUE) playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3) smoke.start() - qdel(R) + qdel(inner_reagent) ejectItem(TRUE) if(prob(EFFECT_PROB_LOW-badThingCoeff)) visible_message("[src] malfunctions, shattering [exp_on] and leaking cold air!") @@ -471,13 +541,25 @@ ejectItem(TRUE) if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) visible_message("[src] malfunctions, releasing a flurry of chilly air as [exp_on] pops out!") - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(1,0, src.loc, 0) + var/datum/effect_system/fluid_spread/smoke/smoke = new + smoke.set_up(amount = 1, location = src.loc) smoke.start() ejectItem() - //////////////////////////////////////////////////////////////////////////////////////////////// - if(exp == SCANTYPE_OBLITERATE) - visible_message("[exp_on] activates the crushing mechanism, [exp_on] is destroyed!") + else if(prob(EFFECT_PROB_LOW)) + visible_message("[exp_on] emits a loud pop!") + playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 3, -1) + ejectItem() + throwSmoke(get_turf(exp_on)) + var/obj/item/relict_production/R = new /obj/item/relict_production/rapid_dupe(get_turf(exp_on)) + R.icon_state = exp_on.icon_state + qdel(exp_on) + else + exp = FAIL + + +/obj/machinery/r_n_d/experimentor/proc/scan_obliterate(exp, obj/item/exp_on, chosenchem, criticalReaction, isRelict) + visible_message("[exp_on] activates the crushing mechanism.") + if(!isRelict) if(prob(EFFECT_PROB_LOW) && criticalReaction) visible_message("[src]'s crushing mechanism slowly and smoothly descends, flattening the [exp_on]!") new /obj/item/stack/sheet/plasteel(get_turf(pick(oview(1,src)))) @@ -507,22 +589,46 @@ spawn(0) cast.throw_at(pick(throwAt),10,1) ejectItem(TRUE) - //////////////////////////////////////////////////////////////////////////////////////////////// + else if(prob(EFFECT_PROB_LOW)) + visible_message("[src]'s crushing mechanism slowly and smoothly descends, flattening the [exp_on]!") + badThingCoeff++ + var/list/obj/item/stack/sheet/mineral/minreals = list(/obj/item/stack/sheet/mineral/diamond, /obj/item/stack/sheet/mineral/gold, /obj/item/stack/sheet/glass,/obj/item/stack/sheet/metal,/obj/item/stack/sheet/mineral/plasma,/obj/item/stack/sheet/mineral/silver,/obj/item/stack/sheet/mineral/titanium,/obj/item/stack/sheet/mineral/uranium,/obj/item/stack/sheet/mineral/tranquillite,/obj/item/stack/sheet/mineral/bananium) + // Plastinium and abductor alloy are alloys, not processed ores. + for (var/i = 1; i <= 3; ++i) + var/obj/item/stack/sheet/mineral/m0 = pick(minreals) + var/obj/item/stack/sheet/mineral/M = new m0(get_turf(exp_on)) + M.amount = 10 + qdel(exp_on) + ejectItem(TRUE) + else + exp = FAIL + + +/obj/machinery/r_n_d/experimentor/proc/experiment(exp, obj/item/exp_on) + recentlyExperimented = TRUE + update_icon(UPDATE_ICON_STATE) + var/chosenchem + var/criticalReaction = (exp_on.type in critical_items) ? TRUE : FALSE + var/isRelict = istype(exp_on, /obj/item/relic) + + if(exp == SCANTYPE_POKE) + scan_poke(exp, exp_on, chosenchem, criticalReaction, isRelict) + if(exp == SCANTYPE_IRRADIATE) + scan_irradiate(exp, exp_on, chosenchem, criticalReaction, isRelict) + if(exp == SCANTYPE_GAS) + scan_gas(exp, exp_on, chosenchem, criticalReaction, isRelict) + if(exp == SCANTYPE_HEAT) + scan_heat(exp, exp_on, chosenchem, criticalReaction, isRelict) + if(exp == SCANTYPE_COLD) + scan_cold(exp, exp_on, chosenchem, criticalReaction, isRelict) + if(exp == SCANTYPE_OBLITERATE) + scan_obliterate(exp, exp_on, chosenchem, criticalReaction, isRelict) + if(exp == FAIL) var/a = pick("rumbles","shakes","vibrates","shudders") var/b = pick("crushes","spins","viscerates","smashes","insults") visible_message("[exp_on] [a], and [b], the experiment was a failure.") - if(exp == SCANTYPE_DISCOVER) - visible_message("[src] scans the [exp_on], revealing its true nature!") - playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 3, -1) - var/obj/item/relic/R = loaded_item - R.reveal() - investigate_log("Experimentor has revealed a relic with [R.realProc] effect.", INVESTIGATE_EXPERIMENTOR) - ejectItem() - - //Global reactions - if(prob(EFFECT_PROB_VERYLOW) && prob(13)) visible_message("Experimentor draws the life essence of those nearby!") for(var/mob/living/m in view(4,src)) @@ -647,6 +753,114 @@ #undef FAIL +/obj/item/relict_production + name = "perfect mix" + desc = "Странный объект без эффекта и иконки. Щитспавн онли." + icon_state = "" + icon = 'icons/obj/assemblies.dmi' + origin_tech = "bluespace=3;materials=3" + var/cooldown = 5 SECONDS + COOLDOWN_DECLARE(relict_production_cooldown) + +/obj/item/relict_production/attack_self(mob/user) + if(!COOLDOWN_FINISHED(src, relict_production_cooldown)) + to_chat(user, "[src] is not ready yet.") + return FALSE + COOLDOWN_START(src, relict_production_cooldown, cooldown) + return TRUE + +/obj/item/relict_production/perfect_mix + name = "perfect mix" + desc = "Странный объект из которого можно бесконечно заполнять емкости какой-то жидкостью." + icon_state = "beaker" + item_state = "beaker" + icon = 'icons/obj/weapons/techrelic.dmi' + lefthand_file = 'icons/mob/inhands/relics_production/inhandl.dmi' + righthand_file = 'icons/mob/inhands/relics_production/inhandr.dmi' + origin_tech = "materials=4;bluespace=3" + var/datum/reagent/inner_reagent + var/transfer = 10 + +/obj/item/relict_production/perfect_mix/New() + . = ..() + inner_reagent = pick(/datum/reagent/uranium, /datum/reagent/plasma, /datum/reagent/consumable/capsaicin, /datum/reagent/consumable/frostoil, /datum/reagent/space_cleaner, /datum/reagent/consumable/drink/coffee, pick(/datum/reagent/consumable/drink/non_alcoholic_beer, /datum/reagent/consumable/ethanol/beer, /datum/reagent/beer2)) + +/obj/item/relict_production/perfect_mix/afterattack(atom/target, mob/user, proximity) + if(istype(target, /obj/item/reagent_containers/glass)) + var/obj/item/reagent_containers/glass/beaker = target + beaker.reagents.add_reagent(inner_reagent.id, transfer) + to_chat(user, "You have poured 10 units of content into this.") + else + to_chat(user, "You can't pour [src]'s content into this.") + +/obj/item/relict_production/strange_teleporter + name = "strange teleporter" + desc = "Странный объект телепортирующий вас при активации." + icon_state = "prox-multitool2" + icon = 'icons/obj/assemblies.dmi' + origin_tech = "materials=4;bluespace=4" + cooldown = 10 SECONDS + +/obj/item/relict_production/strange_teleporter/attack_self(mob/user) + if(!..()) + return + to_chat(user, "[src] begins to vibrate!") + spawn(rand(10,30)) + var/turf/userturf = get_turf(user) + if(src.loc == user && is_teleport_allowed(userturf.z)) + visible_message("The [src] twists and bends, relocating itself!") + var/datum/effect_system/fluid_spread/smoke/smoke = new + smoke.set_up(amount = 5, location = get_turf(user)) + smoke.start() + do_teleport(user, userturf, 8, asoundin = 'sound/effects/phasein.ogg') + smoke = new + smoke.set_up(amount = 5, location = get_turf(user)) + smoke.start() + +/obj/item/relict_production/pet_spray + name = "pet spray" + desc = "Странный объект создающий враждебных существ." + icon_state = "armor-igniter-analyzer" + icon = 'icons/obj/assemblies.dmi' + origin_tech = "biotech=5" + cooldown = 60 SECONDS + +/obj/item/relict_production/pet_spray/attack_self(mob/user) + if(!..()) + return + var/message = "[src] begins to shake, and in the distance the sound of rampaging animals arises!" + visible_message(message) + to_chat(user, message) + var/amount = rand(1,3) + var/list/possible_mobs = list(/mob/living/simple_animal/hostile/bear, + /mob/living/simple_animal/hostile/poison/bees, + /mob/living/simple_animal/hostile/carp, + /mob/living/simple_animal/hostile/alien, + /mob/living/simple_animal/butterfly, + /mob/living/simple_animal/pet/dog/corgi + ) + var/mob/to_spawn = pick(possible_mobs) + + for(var/i in 1 to amount) + var/mob/living/simple_animal/S + S = new to_spawn(get_turf(src)) + S.faction |= "petSpraySummon" + S.gold_core_spawnable = HOSTILE_SPAWN + S.low_priority_targets += user.UID() + if(prob(50)) + for(var/j = 1, j <= rand(1, 3), j++) + step(S, pick(NORTH, SOUTH, EAST, WEST)) + + if(prob(60)) + to_chat(user, "[src] falls apart!") + qdel(src) + +/obj/item/relict_production/rapid_dupe + name = "rapid dupe" + desc = "Странный объект создающий другие странные объекты при контакте с аномалиями." + icon_state = "shock_kit" + icon = 'icons/obj/assemblies.dmi' + origin_tech = "materials=5" //////////////////////////////////SPECIAL ITEMS//////////////////////////////////////// @@ -659,127 +873,8 @@ var/realName = "defined object" var/revealed = FALSE var/realProc - var/cooldownMax = 60 - var/cooldown - var/floof /obj/item/relic/New() ..() icon_state = pick("shock_kit","armor-igniter-analyzer","infra-igniter0","infra-igniter1","radio-multitool","prox-radio1","radio-radio","timer-multitool0","radio-igniter-tank") realName = "[pick("broken","twisted","spun","improved","silly","regular","badly made")] [pick("device","object","toy","suspicious tech","gear")]" - floof = pick(/mob/living/simple_animal/pet/dog/corgi, /mob/living/simple_animal/pet/cat, /mob/living/simple_animal/pet/dog/fox, /mob/living/simple_animal/mouse, /mob/living/simple_animal/pet/dog/pug, /mob/living/simple_animal/lizard, /mob/living/simple_animal/diona, /mob/living/simple_animal/butterfly, /mob/living/carbon/human/lesser/monkey) - - -/obj/item/relic/proc/reveal() - if(revealed) //Re-rolling your relics seems a bit overpowered, yes? - return - revealed = TRUE - name = realName - cooldownMax = rand(60,300) - realProc = pick("teleport","explode","rapidDupe","petSpray","flash","clean","floofcannon") - origin_tech = pick("engineering=[rand(2,5)]","magnets=[rand(2,5)]","plasmatech=[rand(2,5)]","programming=[rand(2,5)]","powerstorage=[rand(2,5)]") - -/obj/item/relic/attack_self(mob/user) - if(revealed) - if(cooldown) - to_chat(user, "[src] does not react!") - return - else if(src.loc == user) - cooldown = TRUE - call(src,realProc)(user) - spawn(cooldownMax) - cooldown = FALSE - else - to_chat(user, "You aren't quite sure what to do with this, yet.") - -//////////////// RELIC PROCS ///////////////////////////// - -/obj/item/relic/proc/throwSmoke(turf/where) - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(1,0, where, 0) - smoke.start() - -/obj/item/relic/proc/floofcannon(mob/user) - playsound(src.loc, "sparks", rand(25, 50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - var/mob/living/C = new floof(get_turf(user)) - C.throw_at(pick(oview(10,user)),10,rand(3,8)) - throwSmoke(get_turf(C)) - warn_admins(user, "Floof Cannon", 0) - -/obj/item/relic/proc/clean(mob/user) - playsound(src.loc, "sparks", rand(25, 50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - var/obj/item/grenade/chem_grenade/cleaner/CL = new/obj/item/grenade/chem_grenade/cleaner(get_turf(user)) - CL.prime() - warn_admins(user, "Smoke", 0) - -/obj/item/relic/proc/flash(mob/user) - playsound(src.loc, "sparks", rand(25, 50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - var/obj/item/grenade/flashbang/CB = new/obj/item/grenade/flashbang(get_turf(user)) - CB.prime() - warn_admins(user, "Flash") - -/obj/item/relic/proc/petSpray(mob/user) - var/message = "[src] begins to shake, and in the distance the sound of rampaging animals arises!" - visible_message(message) - to_chat(user, message) - var/animals = rand(1,25) - var/counter - var/list/valid_animals = list(/mob/living/simple_animal/parrot,/mob/living/simple_animal/butterfly,/mob/living/simple_animal/pet/cat,/mob/living/simple_animal/pet/dog/corgi,/mob/living/simple_animal/crab,/mob/living/simple_animal/pet/dog/fox,/mob/living/simple_animal/lizard,/mob/living/simple_animal/mouse,/mob/living/simple_animal/pet/dog/pug,/mob/living/simple_animal/hostile/bear,/mob/living/simple_animal/hostile/poison/bees,/mob/living/simple_animal/hostile/carp) - for(counter = 1; counter < animals; counter++) - var/mobType = pick(valid_animals) - new mobType(get_turf(src)) - warn_admins(user, "Mass Mob Spawn") - if(prob(60)) - to_chat(user, "[src] falls apart!") - qdel(src) - -/obj/item/relic/proc/rapidDupe(mob/user) - audible_message("[src] emits a loud pop!") - var/list/dupes = list() - var/counter - var/max = rand(5,10) - for(counter = 1; counter < max; counter++) - var/obj/item/relic/R = new src.type(get_turf(src)) - R.name = name - R.desc = desc - R.realName = realName - R.realProc = realProc - R.revealed = TRUE - dupes |= R - spawn() - R.throw_at(pick(oview(7,get_turf(src))),10,1) - counter = 0 - spawn(rand(10,100)) - for(counter = 1; counter <= dupes.len; counter++) - var/obj/item/relic/R = dupes[counter] - qdel(R) - warn_admins(user, "Rapid duplicator", 0) - -/obj/item/relic/proc/explode(mob/user) - to_chat(user, "[src] begins to heat up!") - spawn(rand(35,100)) - if(src.loc == user) - visible_message("The [src]'s top opens, releasing a powerful blast!") - explosion(user.loc, -1, rand(1,5), rand(1,5), rand(1,5), rand(1,5), flame_range = 2, cause = src) - warn_admins(user, "Explosion") - qdel(src) //Comment this line to produce a light grenade (the bomb that keeps on exploding when used)!! - -/obj/item/relic/proc/teleport(mob/user) - to_chat(user, "The [src] begins to vibrate!") - spawn(rand(10,30)) - var/turf/userturf = get_turf(user) - if(src.loc == user && is_teleport_allowed(userturf.z)) //Because Nuke Ops bringing this back on their shuttle, then looting the ERT area is 2fun4you! - visible_message("The [src] twists and bends, relocating itself!") - throwSmoke(userturf) - do_teleport(user, userturf, 8, asoundin = 'sound/effects/phasein.ogg') - throwSmoke(get_turf(user)) - warn_admins(user, "Teleport", 0) - -//Admin Warning proc for relics -/obj/item/relic/proc/warn_admins(mob/user, RelicType, priority = 1) - var/turf/T = get_turf(src) - var/log_msg = "[RelicType] relic used by [key_name_log(user)] in [COORD(T)]" - if(priority) //For truly dangerous relics that may need an admin's attention. BWOINK! - message_admins("[RelicType] relic activated by [key_name_admin(user)] in [ADMIN_COORDJMP(T)]") - add_game_logs(log_msg) - investigate_log(log_msg, INVESTIGATE_EXPERIMENTOR) diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index 80ec8e5272cb..f09614ec5d3f 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -100,17 +100,20 @@ GLOBAL_LIST_EMPTY(message_servers) if(RC.newmessagepriority < priority) RC.newmessagepriority = priority RC.update_icon(UPDATE_OVERLAYS) + var/rendered_message = null switch(priority) if(2) if(!RC.silent) playsound(RC.loc, 'sound/machines/twobeep.ogg', 50, 1) RC.atom_say("PRIORITY Alert in [sender]") - RC.message_log += "High Priority message from [sender]: [authmsg]" + rendered_message = "High Priority message from [sender]: [authmsg]" else if(!RC.silent) playsound(RC.loc, 'sound/machines/twobeep.ogg', 50, 1) RC.atom_say("Message from [sender]") - RC.message_log += "Message [sender]: [authmsg]" + rendered_message = "Message [sender]: [authmsg]" + if(!isnull(rendered_message)) + RC.write_to_message_log(rendered_message) /obj/machinery/message_server/attack_hand(user) // to_chat(user, "There seem to be some parts missing from this server. They should arrive on the station in a few days, give or take a few CentComm delays.") @@ -131,6 +134,12 @@ GLOBAL_LIST_EMPTY(message_servers) else icon_state = "server-on" +/proc/find_pda_server() + if(GLOB.message_servers) + for(var/obj/machinery/message_server/check in GLOB.message_servers) + if(check.active) + return check + /obj/machinery/blackbox_recorder icon = 'icons/obj/stationobjs.dmi' icon_state = "blackbox" diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 369846488259..ec3f40e33797 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -95,6 +95,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/ui_theme = "Nanotrasen" //Тема интерфейса + /proc/CallTechName(ID) //A simple helper proc to find the name of a tech with a given ID. for(var/T in subtypesof(/datum/tech)) var/datum/tech/tt = T @@ -479,34 +480,44 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(istype(S, /obj/machinery/r_n_d/server/core) || istype(S, /obj/machinery/r_n_d/server/centcom)) S.add_usage_log(usr, being_built, machine) + /obj/machinery/computer/rdconsole/proc/finish_machine(mob/user, amount, enough_materials, obj/machinery/r_n_d/machine, datum/design/being_built, coeff) if(machine) if(enough_materials && being_built) investigate_log("[key_name_log(user)] built [amount] of [being_built.build_path] via [machine].", INVESTIGATE_RESEARCH) + + var/locked = being_built.locked && !is_taipan(z) for(var/i in 1 to amount) var/obj/new_item = new being_built.build_path(src) if(istype(new_item, /obj/item/storage/backpack/holding)) new_item.investigate_log("built by [key_name_log(user)]", INVESTIGATE_ENGINE) + if(isitem(new_item) && !istype(new_item, /obj/item/stack/sheet)) // To avoid materials dupe glitches var/obj/item/new_item_item = new_item new_item_item.update_materials_coeff(coeff) - if(being_built.locked) - var/obj/item/storage/lockbox/research/L = new/obj/item/storage/lockbox/research(machine.loc) - new_item.forceMove(L) - L.name += " ([new_item.name])" - L.origin_tech = new_item.origin_tech - L.req_access = being_built.access_requirement + + if(locked && isitem(new_item)) + var/obj/item/real_item = new_item + var/obj/item/storage/lockbox/research/lockbox = new /obj/item/storage/lockbox/research(machine.loc) + real_item.forceMove(lockbox) + lockbox.name += " ([real_item.name])" + lockbox.origin_tech = real_item.origin_tech + lockbox.req_access = being_built.access_requirement + lockbox.w_class = real_item.w_class > lockbox.w_class ? real_item.w_class : lockbox.w_class + var/list/lockbox_access - for(var/A in L.req_access) + for(var/A in lockbox.req_access) lockbox_access += "[get_access_desc(A)] " - L.desc = "A locked box. It is locked to [lockbox_access]access." + lockbox.desc = "A locked box. It is locked to [lockbox_access]access." else new_item.loc = machine.loc + machine.busy = FALSE clear_wait_message() SStgui.update_uis(src) + /obj/machinery/computer/rdconsole/ui_act(action, list/params) if(..()) return @@ -967,7 +978,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/core name = "core R&D console" - desc = "A console used to interface with R&D tools." + desc = "Консоль, используемая для взаимодействия с инструментами НИО." id = 1 /obj/machinery/computer/rdconsole/core/old_frame @@ -978,21 +989,21 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/robotics name = "robotics R&D console" - desc = "A console used to interface with R&D tools." + desc = "Консоль, используемая для взаимодействия с инструментами НИО." id = 2 req_access = list(ACCESS_ROBOTICS) circuit = /obj/item/circuitboard/rdconsole/robotics /obj/machinery/computer/rdconsole/experiment name = "\improper E.X.P.E.R.I-MENTOR R&D console" - desc = "A console used to interface with R&D tools." + desc = "Консоль, используемая для взаимодействия с инструментами НИО." id = 3 range = 5 circuit = /obj/item/circuitboard/rdconsole/experiment /obj/machinery/computer/rdconsole/mechanics name = "mechanics R&D console" - desc = "A console used to interface with R&D tools." + desc = "Консоль, используемая для взаимодействия с инструментами НИО." id = 4 req_access = list(ACCESS_MECHANIC) circuit = /obj/item/circuitboard/rdconsole/mechanics @@ -1004,7 +1015,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/public name = "public R&D console" - desc = "A console used to interface with R&D tools." + desc = "Консоль, используемая для взаимодействия с инструментами НИО." id = 5 req_access = list() circuit = /obj/item/circuitboard/rdconsole/public diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index 4b1b500d3b09..6539a6244094 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -133,7 +133,7 @@ var/obj/item/stack/S = type_inserted stack_name = initial(S.name) use_power(min(1000, (amount_inserted / 100))) - flick_overlay_view(image(icon, src,"[initial(name)]_[stack_name]", layer + 0.01), 1 SECONDS) + flick_overlay_view(mutable_appearance(icon, "[initial(name)]_[stack_name]"), 1 SECONDS) /obj/machinery/r_n_d/proc/check_mat(datum/design/being_built, var/M) diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm index a6e7f227e8bb..9cc2a08c2056 100644 --- a/code/modules/research/research.dm +++ b/code/modules/research/research.dm @@ -237,78 +237,80 @@ research holder datum. name = "Materials Research" desc = "Development of new and improved materials." id = "materials" - max_level = 7 + max_level = 8 /datum/tech/engineering name = "Engineering Research" desc = "Development of new and improved engineering parts and methods." id = "engineering" - max_level = 7 + max_level = 8 /datum/tech/plasmatech name = "Plasma Research" desc = "Research into the mysterious substance colloqually known as 'plasma'." id = "plasmatech" - max_level = 7 + max_level = 8 rare = 3 /datum/tech/powerstorage name = "Power Manipulation Technology" desc = "The various technologies behind the storage and generation of electicity." id = "powerstorage" - max_level = 7 + max_level = 8 /datum/tech/bluespace name = "'Blue-space' Research" desc = "Research into the sub-reality known as 'blue-space'." id = "bluespace" - max_level = 7 + max_level = 8 rare = 2 /datum/tech/biotech name = "Biological Technology" desc = "Research into the deeper mysteries of life and organic substances." id = "biotech" - max_level = 7 + max_level = 8 /datum/tech/combat name = "Combat Systems Research" desc = "The development of offensive and defensive systems." id = "combat" - max_level = 7 + max_level = 8 /datum/tech/magnets name = "Electromagnetic Spectrum Research" desc = "Research into the electromagnetic spectrum. No clue how they actually work, though." id = "magnets" - max_level = 7 + max_level = 8 /datum/tech/programming name = "Data Theory Research" desc = "The development of new computer and artificial intelligence and data storage systems." id = "programming" - max_level = 7 + max_level = 8 /datum/tech/toxins //not meant to be raised by deconstruction, do not give objects toxins as an origin_tech name = "Toxins Research" desc = "Research into plasma based explosive devices. Upgrade through testing explosives in the toxins lab." id = "toxins" - max_level = 7 + max_level = 8 rare = 2 /datum/tech/syndicate name = "Illegal Technologies Research" desc = "The study of technologies that violate standard Nanotrasen regulations." id = "syndicate" - max_level = 0 // Don't count towards maxed research, since it's illegal. + level = 0 // Illegal tech level dont need to show in roundstart on console + max_level = 8 // Used for admin button so need max level like other tech rare = 4 /datum/tech/abductor name = "Alien Technologies Research" desc = "The study of technologies used by the advanced alien race known as Abductors." id = "abductor" + level = 0 // Alien tech level hide roundstart like illegal + max_level = 8 rare = 5 - level = 0 /* datum/tech/arcane diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index 7ff9b22e2998..f36e3394d313 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -36,7 +36,7 @@ /obj/machinery/computer/camera_advanced/xenobio name = "slime management console" - desc = "A computer used for remotely handling slimes." + desc = "Компьютер, используемый для удаленного взаимодействия со слаймами." networks = list("SS13") circuit = /obj/item/circuitboard/xenobiology icon_screen = "slime_comp" @@ -396,8 +396,9 @@ ..() //Feeds a potion to slime -/mob/living/simple_animal/slime/AltClick(mob/user) +/mob/living/simple_animal/slime/click_alt(mob/user) SEND_SIGNAL(user, COMSIG_XENO_SLIME_CLICK_ALT, src) + return CLICK_ACTION_SUCCESS //Picks up slime /mob/living/simple_animal/slime/ShiftClick(mob/user) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index df0112bc7ed8..3f211b8c4f95 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -100,6 +100,10 @@ name = "oil slime extract" icon_state = "oil slime extract" +/obj/item/slime_extract/oil/blob_vore_act(obj/structure/blob/special/core/voring_core) + obj_destruction(MELEE) + + /obj/item/slime_extract/adamantine name = "adamantine slime extract" icon_state = "adamantine slime extract" @@ -822,7 +826,7 @@ H.LoseTarget() stopped_atoms |= M else if(isprojectile(A)) - var/obj/item/projectile/P = A + var/obj/projectile/P = A P.paused = TRUE stopped_atoms |= P @@ -836,7 +840,7 @@ for(var/mob/living/M in stopped_atoms) unfreeze_mob(M) - for(var/obj/item/projectile/P in stopped_atoms) + for(var/obj/projectile/P in stopped_atoms) P.paused = FALSE qdel(src) return diff --git a/code/modules/response_team/ert.dm b/code/modules/response_team/ert.dm index 5ff39a328331..1825f6fad8a5 100644 --- a/code/modules/response_team/ert.dm +++ b/code/modules/response_team/ert.dm @@ -16,52 +16,54 @@ GLOBAL_LIST_EMPTY(response_team_members) GLOBAL_VAR_INIT(responseteam_age, 21) // Minimum account age to play as an ERT member GLOBAL_DATUM(active_team, /datum/response_team) GLOBAL_VAR_INIT(send_emergency_team, FALSE) -GLOBAL_VAR_INIT(ert_request_answered, FALSE) +GLOBAL_VAR_INIT(ert_request_answered, TRUE) +GLOBAL_LIST_EMPTY(ert_request_messages) /client/proc/response_team() set name = "Dispatch CentComm Response Team" - set category = "Event" - set desc = "Send an CentComm response team to the station." + set category = "Admin.Event" + set desc = "Отправляет на станцию ​Отряд Быстрого Реагирования." if(!check_rights(R_EVENT)) return + send_response_team() +/client/proc/send_response_team() if(!SSticker) - to_chat(usr, "The game hasn't started yet!") + to_chat(usr, span_warning("Игра ещё не началась!")) return if(SSticker.current_state == GAME_STATE_PREGAME) - to_chat(usr, "The round hasn't started yet!") + to_chat(usr, span_warning("Раунд ещё не начался!")) return if(GLOB.send_emergency_team) - to_chat(usr, "Central Command has already dispatched an emergency response team!") + to_chat(usr, span_warning("Центральное Командование уже направило Отряд Быстрого Реагирования!")) return var/datum/ui_module/ert_manager/E = new() E.ui_interact(usr) - /mob/dead/observer/proc/JoinResponseTeam() if(!GLOB.send_emergency_team) - to_chat(src, span_warning("No emergency response team is currently being sent.")) + to_chat(src, span_warning("Отряд Быстрого Реагирования не был отправлен.")) return FALSE if(jobban_isbanned(src, ROLE_ERT)) - to_chat(src, span_warning("You are jobbanned from playing on an emergency response team!")) + to_chat(src, span_warning("У вас джоббан на роль бойца ОБР!")) return FALSE - + if(jobban_isbanned(src, JOB_TITLE_OFFICER) || jobban_isbanned(src, JOB_TITLE_CAPTAIN) || jobban_isbanned(src, JOB_TITLE_CYBORG)) - to_chat(src, span_warning("One of your jobbans forbids you from playing on an emergency response team!")) + to_chat(src, span_warning("Один из ваших джоббанов запрещает вам играть в ОБР!")) return FALSE var/player_age_check = check_client_age(client, GLOB.responseteam_age) if(player_age_check && CONFIG_GET(flag/use_age_restriction_for_antags)) - to_chat(src, span_warning("This role is not yet available to you. You need to wait another [player_age_check] days.")) + to_chat(src, span_warning("Эта роль вам пока недоступна. Вам нужно подождать ещё [player_age_check] [declension_ru(player_age_check, "день", "дня", "дней")].")) return FALSE if(cannotPossess(src)) - to_chat(src, span_boldnotice("Upon using the antagHUD you forfeited the ability to join the round.")) + to_chat(src, span_boldnotice("Активировав Антаг-ХУД, вы лишились возможности присоединиться к раунду.")) return FALSE return TRUE @@ -72,7 +74,7 @@ GLOBAL_VAR_INIT(ert_request_answered, FALSE) GLOB.active_team.setSlots(commander_slots, security_slots, medical_slots, engineering_slots, janitor_slots, paranormal_slots, cyborg_slots) GLOB.send_emergency_team = TRUE - var/list/ert_candidates = shuffle(SSghost_spawns.poll_candidates("Join the Emergency Response Team?",, GLOB.responseteam_age, 60 SECONDS, TRUE, GLOB.role_playtime_requirements[ROLE_ERT])) + var/list/ert_candidates = shuffle(SSghost_spawns.poll_candidates("Присоединиться к Отряду Быстрого Реагирования?",, GLOB.responseteam_age, 60 SECONDS, TRUE, GLOB.role_playtime_requirements[ROLE_ERT])) if(!ert_candidates.len) GLOB.active_team.cannot_send_team() GLOB.send_emergency_team = FALSE @@ -92,44 +94,44 @@ GLOBAL_VAR_INIT(ert_request_answered, FALSE) GLOB.send_emergency_team = FALSE return - var/list/ert_gender_prefs = list() + var/list/ert_prefs = list() for(var/mob/M in GLOB.response_team_members) - ert_gender_prefs.Add(input_async(M, "Please select a gender (10 seconds):", list("Male", "Female"))) - addtimer(CALLBACK(GLOBAL_PROC, /proc/get_ert_role_prefs, GLOB.response_team_members, ert_gender_prefs), 100) - -/proc/get_ert_role_prefs(list/response_team_members, list/ert_gender_prefs) // Why the FUCK is this variable the EXACT SAME as the global one - var/list/ert_role_prefs = list() - for(var/datum/async_input/A in ert_gender_prefs) - A.close() - for(var/mob/M in response_team_members) - ert_role_prefs.Add(input_ranked_async(M, "Please order ERT roles from most to least preferred (20 seconds):", GLOB.active_team.get_slot_list())) - addtimer(CALLBACK(GLOBAL_PROC, /proc/dispatch_response_team, response_team_members, ert_gender_prefs, ert_role_prefs), 200) - -/proc/dispatch_response_team(list/response_team_members, list/datum/async_input/ert_gender_prefs, list/datum/async_input/ert_role_prefs) + INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(get_ert_prefs), M, ert_prefs) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(dispatch_response_team), GLOB.response_team_members, ert_prefs), 31 SECONDS) // one additional second for some client-server lags + +/proc/get_ert_prefs(mob/user, list/ert_prefs) + ert_prefs[user] = list() + ert_prefs[user]["gender"] = tgui_input_list(user, "Выберите пол (10 секунд):","", list("Мужской", "Женский"), timeout = 10 SECONDS) + ert_prefs[user]["roles"] = tgui_input_ranked_list(user, "Расположите роли ОБР от наиболее предпочтительных к наименее предпочтительным (20 секунд):", "", GLOB.active_team.get_slot_list(), timeout = 20 SECONDS) + +/proc/dispatch_response_team(list/response_team_members, list/ert_prefs) var/spawn_index = 1 - for(var/i = 1, i <= response_team_members.len, i++) - if(spawn_index > GLOB.emergencyresponseteamspawn.len) + while(spawn_index <= GLOB.emergencyresponseteamspawn.len) + if(!ert_prefs.len) break + var/mob/user = pick(ert_prefs) if(!GLOB.active_team.get_slot_list().len) break - var/gender_pref = ert_gender_prefs[i].result - var/role_pref = ert_role_prefs[i].close() - var/mob/M = response_team_members[i] - if(!M || !M.client) + var/gender_pref = ert_prefs[user]["gender"] + var/role_pref = ert_prefs[user]["roles"] + if(!user || !user.client) + ert_prefs -= user continue if(!gender_pref || !role_pref) // Player was afk and did not select + ert_prefs -= user continue for(var/role in role_pref) if(GLOB.active_team.check_slot_available(role)) - var/mob/living/new_commando = M.client.create_response_team(gender_pref, role, GLOB.emergencyresponseteamspawn[spawn_index]) + var/mob/living/new_commando = user.client.create_response_team(gender_pref, role, GLOB.emergencyresponseteamspawn[spawn_index]) GLOB.active_team.reduceSlots(role) spawn_index++ - if(!M || !new_commando) + ert_prefs -= user + if(!user || !new_commando) break - new_commando.mind.key = M.key - new_commando.key = M.key + new_commando.mind.key = user.key + new_commando.key = user.key new_commando.update_icons() new_commando.change_voice() break @@ -142,7 +144,7 @@ GLOBAL_VAR_INIT(ert_request_answered, FALSE) GLOB.active_team.cannot_send_team() /client/proc/create_response_team(new_gender, role, turf/spawn_location) - if(role == JOB_TITLE_CYBORG) + if(role == ERT_ROLE_CYBORG) var/mob/living/silicon/robot/ert/R = new GLOB.active_team.borg_path(spawn_location) return R @@ -150,7 +152,7 @@ GLOBAL_VAR_INIT(ert_request_answered, FALSE) var/obj/item/organ/external/head/head_organ = M.get_organ(BODY_ZONE_HEAD) if(new_gender) - if(new_gender == "Male") + if(new_gender == "Мужской") M.change_gender(MALE) else M.change_gender(FEMALE) @@ -170,7 +172,7 @@ GLOBAL_VAR_INIT(ert_request_answered, FALSE) head_organ.sec_hair_colour = hair_c M.change_eye_color(eye_c) M.s_tone = skin_tone - head_organ.h_style = random_hair_style(M.gender, head_organ.dna.species.name) + head_organ.h_style = random_hair_style(M.gender, head_organ.dna.species) head_organ.f_style = random_facial_hair_style(M.gender, head_organ.dna.species.name) M.rename_character(null, "Безымянный") // Rewritten in /datum/outfit/job/centcom/response_team/pre_equip M.age = rand(23,35) @@ -199,13 +201,13 @@ GLOBAL_VAR_INIT(ert_request_answered, FALSE) /datum/response_team var/list/slots = list( - Commander = 0, - Security = 0, - Engineer = 0, - Medic = 0, - Janitor = 0, - Paranormal = 0, - Cyborg = 0 + ERT_ROLE_COMMANDER = 0, + ERT_ROLE_SECURITY = 0, + ERT_ROLE_MEDIC = 0, + ERT_ROLE_ENGINEER = 0, + ERT_ROLE_JANITOR = 0, + ERT_ROLE_PARANORMAL = 0, + ERT_ROLE_CYBORG = 0 ) var/count = 0 @@ -217,14 +219,17 @@ GLOBAL_VAR_INIT(ert_request_answered, FALSE) var/paranormal_outfit var/borg_path = /mob/living/silicon/robot/ert + /// Whether the ERT announcement should be hidden from the station + var/silent + /datum/response_team/proc/setSlots(com=1, sec=4, med=0, eng=0, jan=0, par=0, cyb=0) - slots["Commander"] = com - slots["Security"] = sec - slots["Medic"] = med - slots["Engineer"] = eng - slots["Janitor"] = jan - slots["Paranormal"] = par - slots["Cyborg"] = cyb + slots[ERT_ROLE_COMMANDER] = com + slots[ERT_ROLE_SECURITY] = sec + slots[ERT_ROLE_MEDIC] = med + slots[ERT_ROLE_ENGINEER] = eng + slots[ERT_ROLE_JANITOR] = jan + slots[ERT_ROLE_PARANORMAL] = par + slots[ERT_ROLE_CYBORG] = cyb /datum/response_team/proc/reduceSlots(role) slots[role]-- @@ -241,30 +246,35 @@ GLOBAL_VAR_INIT(ert_request_answered, FALSE) /datum/response_team/proc/check_slot_available(role) return slots[role] -/datum/response_team/proc/equip_officer(var/officer_type, var/mob/living/carbon/human/M) +/datum/response_team/proc/equip_officer(officer_type, mob/living/carbon/human/M) switch(officer_type) - if("Engineer") + if(ERT_ROLE_ENGINEER) M.equipOutfit(engineering_outfit) - if("Security") + if(ERT_ROLE_SECURITY ) M.equipOutfit(security_outfit) - if("Medic") + if(ERT_ROLE_MEDIC) M.equipOutfit(medical_outfit) - if("Janitor") + if(ERT_ROLE_JANITOR) M.equipOutfit(janitor_outfit) - if("Paranormal") + if(ERT_ROLE_PARANORMAL) M.equipOutfit(paranormal_outfit) - if("Commander") + if(ERT_ROLE_COMMANDER) M.equipOutfit(command_outfit) /datum/response_team/proc/cannot_send_team() + if(silent) + message_admins("A silent response team failed to spawn. Likely, no one signed up.") + return GLOB.event_announcement.Announce("[station_name()], к сожалению, в настоящее время мы не можем направить к вам отряд быстрого реагирования.", "Оповещение: ОБР недоступен.") /datum/response_team/proc/announce_team() + if(silent) + return GLOB.event_announcement.Announce("Внимание, [station_name()]. Мы направляем команду высококвалифицированных ассистентов для оказания помощи(?) вам. Ожидайте.", "Оповещение: ОБР в пути.") // -- AMBER TEAM -- @@ -278,6 +288,8 @@ GLOBAL_VAR_INIT(ert_request_answered, FALSE) paranormal_outfit = /datum/outfit/job/centcom/response_team/paranormal/amber /datum/response_team/amber/announce_team() + if(silent) + return GLOB.event_announcement.Announce("Внимание, [station_name()]. Мы направляем отряд быстрого реагирования кода «ЭМБЕР». Ожидайте.", "Оповещение: ОБР в пути.") // -- RED TEAM -- @@ -292,6 +304,8 @@ GLOBAL_VAR_INIT(ert_request_answered, FALSE) borg_path = /mob/living/silicon/robot/ert/red /datum/response_team/red/announce_team() + if(silent) + return GLOB.event_announcement.Announce("Внимание, [station_name()]. Мы направляем отряд быстрого реагирования кода «РЭД». Ожидайте.", "Оповещение: ОБР в пути.") // -- GAMMA TEAM -- @@ -306,6 +320,8 @@ GLOBAL_VAR_INIT(ert_request_answered, FALSE) borg_path = /mob/living/silicon/robot/ert/gamma /datum/response_team/gamma/announce_team() + if(silent) + return GLOB.event_announcement.Announce("Внимание, [station_name()]. Мы направляем отряд быстрого реагирования кода «ГАММА». Ожидайте.", "Оповещение: ОБР в пути.") /datum/outfit/job/centcom/response_team diff --git a/code/modules/ruins/lavalandruin_code/ash_walker_den.dm b/code/modules/ruins/lavalandruin_code/ash_walker_den.dm index 671c24fc9712..c73e74c4d3d9 100644 --- a/code/modules/ruins/lavalandruin_code/ash_walker_den.dm +++ b/code/modules/ruins/lavalandruin_code/ash_walker_den.dm @@ -2,7 +2,15 @@ //The ash walker den consumes corpses or unconscious mobs to create ash walker eggs. For more info on those, check ghost_role_spawners.dm /obj/structure/lavaland/ash_walker name = "necropolis tendril nest" - desc = "Щупальце искажённой злобы. Вокруг него обустроено гнездо, полное быстро растущих яиц…" + desc = "Щупальце искажённой злобы. Вокруг него обустроено гнездо, полное быстро растущих яиц..." + ru_names = list( + NOMINATIVE = "гнездо некрополя", + GENITIVE = "гнезда некрополя", + DATIVE = "гнезду некрополя", + ACCUSATIVE = "гнездо некрополя", + INSTRUMENTAL = "гнездом некрополя", + PREPOSITIONAL = "гнезде некрополя" + ) icon = 'icons/mob/nest.dmi' icon_state = "ash_walker_nest" @@ -50,7 +58,7 @@ /obj/structure/lavaland/ash_walker/proc/consume() for(var/mob/living/H in view(src, 1)) //Only for corpse right next to/on same tile if(H.stat) - visible_message("Шипастые усики жадно подтаскивают тело [H] и разрывают его на куски, окропляя кровью растущие яйца.") + visible_message(span_warning("Шипастые усики жадно подтаскивают тело [H] и разрывают его на куски, окропляя кровью растущие яйца.")) playsound(get_turf(src),'sound/magic/demon_consume.ogg', 100, 1) for(var/obj/item/W in H) if(!H.drop_item_ground(W)) @@ -84,10 +92,18 @@ /obj/effect/mob_spawn/human/ash_walker name = "ash walker egg" - desc = "Жёлтое яйцо размером с человека, порождённое каким-то непостижимым существом. Внутри проглядывает гуманоидный силуэт." + ru_names = list( + NOMINATIVE = "яйцо пеплоходца", + GENITIVE = "яйца пеплоходца", + DATIVE = "яйцу пеплоходца", + ACCUSATIVE = "яйцо пеплоходца", + INSTRUMENTAL = "яйцом пеплоходца", + PREPOSITIONAL = "яйце пеплоходца" + ) + desc = "Жёлтое яйцо размером с человека, порождённое каким-то непостижимым существом. Внутри проглядывает гуманоидный силуэт." mob_name = "an ash walker" icon = 'icons/mob/lavaland/lavaland_monsters.dmi' - icon_state = "large_egg" + icon_state = "ashwalker_egg" mob_species = /datum/species/unathi/ashwalker outfit = /datum/outfit/ashwalker mob_gender = MALE @@ -96,10 +112,10 @@ anchored = FALSE move_resist = MOVE_FORCE_NORMAL density = FALSE - important_info = "Не покидайте Лаваленд без разрешения администратора. Нападать на шахтёрский аванпост можно только в ответ на агрессию." - description = "Вы — пеплоходец, дикарь из племени коренных обитателей Лаваленда. Выживайте, охотьтесь и защищайте своё гнездо. Пользуйтесь примитивными племенными технологиями. Скармливайте трупы щупальцу в гнезде, дабы оно порождало яйца новых пеплоходцев. Вам разрешено атаковать шахтёров и других чужаков." - flavour_text = "Ваше племя поклоняется Некрополю. Пустоши для вас — священные земли, а местные чудища — их щедрые дары умелым охотникам. \ - Вы видели вдали огни… Они предвещают прибытие чужаков, желающих разорить ваши земли и даже сам Некрополь. Но для вас они — лишь очередные подношения для гнезда." + important_info = "Не покидайте Лаваленд без разрешения администратора. Нападать на шахтёрский аванпост можно только в ответ на агрессию." + description = "Вы — пеплоходец, дикарь из племени коренных обитателей Лаваленда. Выживайте, охотьтесь и защищайте своё гнездо. Пользуйтесь примитивными племенными технологиями. Скармливайте трупы щупальцу в гнезде, дабы оно порождало яйца новых пеплоходцев. Вам разрешено атаковать шахтёров и других чужаков." + flavour_text = "Ваше племя поклоняется Некрополю. Пустоши для вас — священные земли, а местные чудища — их щедрые дары умелым охотникам. \ + Вы видели вдали огни… Они предвещают прибытие чужаков, желающих разорить ваши земли и даже сам Некрополь. Но для вас они — лишь очередные подношения для гнезда." assignedrole = "Ash Walker" respawn_cooldown = 10 MINUTES var/eggtype = "пеплоходца" @@ -107,19 +123,28 @@ /obj/effect/mob_spawn/human/ash_walker/special(mob/living/carbon/human/new_spawn) new_spawn.rename_character(new_spawn.real_name, new_spawn.dna.species.get_random_name(new_spawn.gender)) new_spawn.faction += "ashwalker" - to_chat(new_spawn, "Добывайте для гнезда трупы гуманоидов и зверей. Щупальце поглотит их, порождая яйца новых пеплоходцев. Слава Некрополю!") + to_chat(new_spawn, "Добывайте для гнезда трупы гуманоидов и зверей. Щупальце поглотит их, порождая яйца новых пеплоходцев. Слава Некрополю!") /obj/effect/mob_spawn/human/ash_walker/New() . = ..() var/area/A = get_area(src) if(A) - notify_ghosts("Яйцо [eggtype] готово вылупиться в [A.name].", source = src, action = NOTIFY_ATTACK, flashwindow = FALSE) + notify_ghosts("Яйцо [eggtype] готово вылупиться в [A.name].", source = src, action = NOTIFY_ATTACK, flashwindow = FALSE) //Ash walker shaman eggs: Spawns in ash walker dens in lavaland. Only one can exist at a time, they are squishier than regular ashwalkers, and have the sole purpose of keeping other ashwalkers alive. /obj/effect/mob_spawn/human/ash_walker/shaman name = "ash walker shaman egg" - desc = "Янтарное яйцо размером с человека, порождённое каким-то непостижимым существом. Внутри проглядывает гуманоидный силуэт." + ru_names = list( + NOMINATIVE = "яйцо шамана пеплоходцев", + GENITIVE = "яйца шамана пеплоходцев", + DATIVE = "яйцу шамана пеплоходцев", + ACCUSATIVE = "яйцо шамана пеплоходцев", + INSTRUMENTAL = "яйцом шамана пеплоходцев", + PREPOSITIONAL = "яйце шамана пеплоходцев" + ) + desc = "Янтарное яйцо размером с человека, порождённое каким-то непостижимым существом. Внутри проглядывает гуманоидный силуэт." + icon_state = "shaman_egg" mob_name = "an ash walker shaman" mob_species = /datum/species/unathi/ashwalker/shaman outfit = /datum/outfit/ashwalker/shaman //might be OP, but the flavour is there @@ -134,7 +159,33 @@ /datum/outfit/ashwalker/shaman //yep, we adding uniform available only for lizards name = "Ashwalker Shaman" uniform = /obj/item/clothing/under/ash_walker_shaman - head = /obj/item/clothing/head/shamanash + head = /obj/item/clothing/head/roach neck = /obj/item/clothing/neck/mantle/unathi belt = /obj/item/storage/bag/medpouch gloves = /obj/item/clothing/gloves/color/black/goliath + +/* +This landmark is capable of spawning our updated ash walkers den. +In order of working properly, if you make a new lavaland.dmm map, spawn it always in north-east or north-west. +Preferable coordinates - x:218, y:236. +Use about 3 tiles before lava river and 9 to 10 lava river tiles under this landmark. Watch 'delta/lavaland.dmm' for example. +*/ +/obj/ash_walker_landmark + name = "ash_walker" + icon = 'icons/misc/Testing/turf_analysis.dmi' + icon_state = "ash_landmark" + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + anchored = TRUE + +/obj/ash_walker_landmark/Initialize(mapload) + . = ..() + INVOKE_ASYNC(src, PROC_REF(load_map)) + +/obj/ash_walker_landmark/proc/load_map() + var/turf/spawn_area = get_turf(src) + + var/datum/map_template/ruin/lavaland/ash_walker_updated/map = new() + + map.load(spawn_area, TRUE) + + qdel(src, force=TRUE) diff --git a/code/modules/ruins/lavalandruin_code/necropolis_lavalend.dm b/code/modules/ruins/lavalandruin_code/necropolis_lavalend.dm index 9adbd1438196..cdb57063f3ab 100644 --- a/code/modules/ruins/lavalandruin_code/necropolis_lavalend.dm +++ b/code/modules/ruins/lavalandruin_code/necropolis_lavalend.dm @@ -2,6 +2,7 @@ name = "Necropolis" icon_state = "cave" tele_proof = TRUE + holomap_should_draw = FALSE /obj/effect/landmark/map_loader/lavaland_room icon = 'icons/misc/Testing/turf_analysis.dmi' diff --git a/code/modules/ruins/lavalandruin_code/puzzle.dm b/code/modules/ruins/lavalandruin_code/puzzle.dm index c1e98b4a94b0..505920c4fc83 100644 --- a/code/modules/ruins/lavalandruin_code/puzzle.dm +++ b/code/modules/ruins/lavalandruin_code/puzzle.dm @@ -171,7 +171,7 @@ //Setup random empty tile empty_tile_id = pick_n_take(left_ids) var/turf/empty_tile_turf = get_turf_for_id(empty_tile_id) - empty_tile_turf.ChangeTurf(floor_type, keep_icon = FALSE, ignore_air = FALSE) + empty_tile_turf.ChangeTurf(floor_type, keep_icon = FALSE) var/mutable_appearance/MA = new(puzzle_pieces["[empty_tile_id]"]) MA.layer = empty_tile_turf.layer + 0.1 empty_tile_turf.add_overlay(MA) @@ -180,7 +180,7 @@ var/list/empty_spots = left_ids.Copy() for(var/spot_id in empty_spots) var/turf/T = get_turf_for_id(spot_id) - T = T.ChangeTurf(floor_type, keep_icon = FALSE, ignore_air = FALSE) + T = T.ChangeTurf(floor_type, keep_icon = FALSE) var/obj/structure/puzzle_element/E = new element_type(T) elements += E var/chosen_id = pick_n_take(left_ids) diff --git a/code/modules/ruins/ruin_areas.dm b/code/modules/ruins/ruin_areas.dm index cb4ac6913f46..e2dadb76746e 100644 --- a/code/modules/ruins/ruin_areas.dm +++ b/code/modules/ruins/ruin_areas.dm @@ -4,10 +4,14 @@ name = "\improper Unexplored Location" icon_state = "away" has_gravity = STANDARD_GRAVITY - there_can_be_many = TRUE + area_flags = UNIQUE_AREA static_lighting = TRUE ambientsounds = RUINS_SOUNDS sound_environment = SOUND_ENVIRONMENT_STONEROOM + holomap_should_draw = FALSE + +/area/ruin/space + area_flags = NONE /area/ruin/unpowered always_unpowered = FALSE @@ -31,6 +35,7 @@ /area/ruin/powered/space_bar name = "Space Bar" + area_flags = NONE /area/ruin/powered/shuttle name = "Shuttle" @@ -56,3 +61,4 @@ /area/ruin/spaceprison name = "Space Prison" icon_state = "spaceprison" + area_flags = NONE diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm index 2b56aa8705be..b64c9aa7c89f 100644 --- a/code/modules/security_levels/keycard_authentication.dm +++ b/code/modules/security_levels/keycard_authentication.dm @@ -197,11 +197,11 @@ var/fullmin_count = 0 for(var/client/C in GLOB.admins) - if(check_rights(R_EVENT, 0, C.mob)) + if(check_rights(R_ADMIN, 0, C.mob)) fullmin_count++ if(fullmin_count) - addtimer(CALLBACK(src, PROC_REF(remind_admins), ert_reason, event_triggered_by), 5 MINUTES) - GLOB.ert_request_answered = TRUE + addtimer(CALLBACK(src, PROC_REF(remind_admins), ert_reason, event_triggered_by), 15 MINUTES) + GLOB.ert_request_answered = FALSE ERT_Announce(ert_reason , event_triggered_by, 0) ert_reason = null SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("ert", "called")) @@ -214,11 +214,11 @@ if(E.type in excludeevents) return trigger_armed_response_team(new /datum/response_team/amber) // No admins? No problem. Automatically send a code amber ERT. + GLOB.ert_request_answered = TRUE /obj/machinery/keycard_auth/proc/remind_admins(old_reason, event_triggered_by) if(GLOB.ert_request_answered) - GLOB.ert_request_answered = FALSE // For ERT requests that may come later return ERT_Announce(old_reason, event_triggered_by, repeat_warning = TRUE) @@ -231,7 +231,7 @@ GLOBAL_VAR_INIT(station_all_access, 0) // Why are these global procs? /proc/make_maint_all_access() - for(var/area/maintenance/A in GLOB.all_areas) // Why are these global lists? AAAAAAAAAAAAAA + for(var/area/maintenance/A in GLOB.areas) // Why are these global lists? AAAAAAAAAAAAAA for(var/obj/machinery/door/airlock/D in A.machinery_cache) D.emergency = 1 D.update_icon() @@ -240,7 +240,7 @@ GLOBAL_VAR_INIT(station_all_access, 0) SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("emergency maintenance access", "enabled")) /proc/revoke_maint_all_access() - for(var/area/maintenance/A in GLOB.all_areas) + for(var/area/maintenance/A in GLOB.areas) for(var/obj/machinery/door/airlock/D in A.machinery_cache) D.emergency = 0 D.update_icon() diff --git a/code/modules/security_levels/security_levels.dm b/code/modules/security_levels/security_levels.dm index 0f031dbc48e2..14160dd16c9c 100644 --- a/code/modules/security_levels/security_levels.dm +++ b/code/modules/security_levels/security_levels.dm @@ -7,8 +7,8 @@ GLOBAL_VAR_INIT(security_level, 0) //5 = code delta //config.alert_desc_blue_downto -GLOBAL_DATUM_INIT(security_announcement_up, /datum/announcement/priority/security, new(do_log = 0, do_newscast = 0, new_sound = sound('sound/misc/notice1.ogg'))) -GLOBAL_DATUM_INIT(security_announcement_down, /datum/announcement/priority/security, new(do_log = 0, do_newscast = 0)) +GLOBAL_DATUM_INIT(security_announcement_up, /datum/announcement/priority/security, new(do_log = FALSE, do_newscast = TRUE, new_sound = sound('sound/misc/notice1.ogg'))) +GLOBAL_DATUM_INIT(security_announcement_down, /datum/announcement/priority/security, new(do_log = FALSE, do_newscast = TRUE)) /proc/set_security_level(level) @@ -246,7 +246,7 @@ GLOBAL_DATUM_INIT(security_announcement_down, /datum/announcement/priority/secur INVOKE_ASYNC(L, TYPE_PROC_REF(/obj/machinery/light, update), FALSE) /proc/unset_stationwide_emergency_lighting() - for(var/area/A as anything in GLOB.all_areas) + for(var/area/A as anything in GLOB.areas) if(!is_station_level(A.z)) continue if(!A.area_emergency_mode) @@ -268,7 +268,7 @@ GLOBAL_DATUM_INIT(security_announcement_down, /datum/announcement/priority/secur GLOB.security_announcement_up.Announce("Центральным командованием был установлен код ЭПСИЛОН. Все контракты расторгнуты.","ВНИМАНИЕ! КОД ЭПСИЛОН", new_sound = sound('sound/effects/epsilon.ogg')) GLOB.security_level = SEC_LEVEL_EPSILON post_status(STATUS_DISPLAY_ALERT, "epsilonalert") - for(var/area/A as anything in GLOB.all_areas) + for(var/area/A as anything in GLOB.areas) if(!is_station_level(A.z)) continue for(var/obj/machinery/light/light as anything in A.lights_cache) diff --git a/code/modules/shuttle/README.md b/code/modules/shuttle/README.md index 6a7168c12693..8bcbb9b6ee0d 100644 --- a/code/modules/shuttle/README.md +++ b/code/modules/shuttle/README.md @@ -14,7 +14,7 @@ # Important note: -The following readme was last updated during Late 2015. The changes between Paradise & TG's shuttle system has diverged greatly since then. Do not take the documentation here's description of differences between tg & paradise seriously without double checking. +The following readme was last updated during Late 2015. The changes between Paradise & TG's shuttle system has diverged greatly since then. Do not take the documentation here's description of differences between tg & paradise seriously without double checking. # Shuttle system ## Introduction @@ -45,6 +45,12 @@ Docking ports are split into two main types: `/obj/docking_port/stationary`, and `id`: This variable is used for any plain-text references to the docking port. It should always be lowercase. +У мобильных стыковочных портов `/obj/docking_port/mobile` есть две важные переменные которые указывают куда и каким образом будет двигаться шаттл. +`preferred_direction`: в какую сторону будет двигаться шатл. Рекомендуется ставить в ту стороны, в позиции которой шаттл вылетает от стыковки, +чтобы игре не требовалось крутить его и всех игроков на нём. +`port_direction`: указатель, с какой стороны стоит сам порт. Если поставить неправильно, то шаттл перевернёться и будет летать боком или задом. +По умолчанию если порт стоит в передней части, то север (1), с левой запад (8), с правой восток (4), сзади юг (2). + `width`, `height`: The width and height variables are **absolute** value variables which define the bounding box of the docking port. It is very important to note that these are different from the `dwidth` and `dheight` in terms of how they are counted. As they are @@ -84,9 +90,9 @@ The "bottom left corner" changes depending on the direction of the docking port so a docking port **facing north** that looks something like this: ``` -||| -||| -|||D| +||| +||| +|||D| ||||| ``` diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 513132c4e0b6..fd20b06ece09 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/emergency_shuttle name = "emergency shuttle console" - desc = "For shuttle control." + desc = "Для управления шаттлом." icon_screen = "shuttle" icon_keyboard = "tech_key" var/auth_need = 3 @@ -85,13 +85,12 @@ width = 22 height = 11 dir = 4 - travelDir = 0 roundstart_move = "emergency_away" var/sound_played = 0 //If the launch sound has been sent to all players on the shuttle itself - var/datum/announcement/priority/emergency_shuttle_docked = new(0, new_sound = sound('sound/AI/shuttledock.ogg')) - var/datum/announcement/priority/emergency_shuttle_called = new(0, new_sound = sound('sound/AI/shuttlecalled.ogg')) - var/datum/announcement/priority/emergency_shuttle_recalled = new(0, new_sound = sound('sound/AI/shuttlerecalled.ogg')) + var/datum/announcement/priority/emergency_shuttle_docked = new(do_log = FALSE, new_sound = sound('sound/AI/shuttledock.ogg')) + var/datum/announcement/priority/emergency_shuttle_called = new(do_log = FALSE, new_sound = sound('sound/AI/shuttlecalled.ogg')) + var/datum/announcement/priority/emergency_shuttle_recalled = new(do_log = FALSE, new_sound = sound('sound/AI/shuttlerecalled.ogg')) var/canRecall = TRUE //no bad condom, do not recall the crew transfer shuttle! var/forceHijacked = FALSE // forced change of arrival at the syndicate base @@ -114,35 +113,14 @@ return ..() -/obj/docking_port/mobile/emergency/timeLeft(divisor) - if(divisor <= 0) - divisor = 10 - if(!timer) - return round(SSshuttle.emergencyCallTime/divisor, 1) - - var/dtime = world.time - timer - switch(mode) - if(SHUTTLE_ESCAPE) - dtime = max(SSshuttle.emergencyEscapeTime - dtime, 0) - if(SHUTTLE_DOCKED) - dtime = max(SSshuttle.emergencyDockTime - dtime, 0) - else - - dtime = max(SSshuttle.emergencyCallTime - dtime, 0) - return round(dtime/divisor, 1) - /obj/docking_port/mobile/emergency/request(obj/docking_port/stationary/S, coefficient=1, area/signalOrigin, reason, redAlert) - SSshuttle.emergencyCallTime = initial(SSshuttle.emergencyCallTime) * coefficient + var/call_time = SSshuttle.emergencyCallTime * coefficient switch(mode) - if(SHUTTLE_RECALL) + // The shuttle can not normally be called while "recalling", so + // if this proc is called, it's via admin fiat + if(SHUTTLE_RECALL, SHUTTLE_IDLE, SHUTTLE_CALL) mode = SHUTTLE_CALL - timer = world.time - timeLeft(1) - if(SHUTTLE_IDLE) - mode = SHUTTLE_CALL - timer = world.time - if(SHUTTLE_CALL) - if(world.time < timer) //this is just failsafe - timer = world.time + setTimer(call_time) else return @@ -161,7 +139,7 @@ if(mode != SHUTTLE_CALL) return - timer = world.time - timeLeft(1) + invertTimer() mode = SHUTTLE_RECALL if(prob(70)) @@ -233,7 +211,7 @@ setTimer(20) return mode = SHUTTLE_DOCKED - timer = world.time + setTimer(SSshuttle.emergencyDockTime) emergency_shuttle_docked.Announce("Эвакуационный шаттл совершил стыковку со станцией. У вас есть [timeLeft(600)] минуты, чтобы взобраться на борт эвакуационного шаттла.") /* @@ -246,26 +224,35 @@ */ if(SHUTTLE_DOCKED) - if(time_left <= 0 && SSshuttle.emergencyNoEscape) + if(time_left <= 0 && SSshuttle.hostile_environment.len) GLOB.priority_announcement.Announce("Обнаружена угроза. Отлёт отложен на неопределённый срок до разрешения конфликта.") sound_played = 0 mode = SHUTTLE_STRANDED + + if(time_left <= 0 && SSshuttle.emergencyNoEscape && mode != SHUTTLE_STRANDED) + GLOB.priority_announcement.Announce("Шаттл заблокирован. Свяжитесь с Центральным Командованием для уточнения причин и снятия блокировки.") + sound_played = 0 + mode = SHUTTLE_STRANDED + + if(time_left <= 100) // 9 seconds left - start requesting transit zones for emergency and pods + for(var/obj/docking_port/mobile/pod/M in SSshuttle.mobile) + M.check_transit_zone() // yeah, we even check for pods that aren't at station. just for safety + check_transit_zone() if(time_left <= 50 && !sound_played) //4 seconds left - should sync up with the launch sound_played = 1 - for(var/area/shuttle/escape/E in world) + for(var/area/shuttle/escape/E in GLOB.areas) E << 'sound/effects/hyperspace_begin_new.ogg' - if(time_left <= 0 && !SSshuttle.emergencyNoEscape) + if(time_left <= 0 && !(SSshuttle.emergencyNoEscape || SSshuttle.hostile_environment.len)) //move each escape pod to its corresponding transit dock for(var/obj/docking_port/mobile/pod/M in SSshuttle.mobile) if(is_station_level(M.z)) //Will not launch from the mine/planet M.enterTransit() //now move the actual emergency shuttle to its transit dock - for(var/area/shuttle/escape/E in world) enterTransit() mode = SHUTTLE_ESCAPE - timer = world.time + setTimer(SSshuttle.emergencyEscapeTime) GLOB.priority_announcement.Announce("Эвакуационный шаттл покинул станцию. До прибытия в доки ЦК осталось [timeLeft(600)] минуты.") for(var/mob/M in GLOB.player_list) if(!isnewplayer(M) && !M.client.karma_spent && !(M.client.ckey in GLOB.karma_spenders) && !M.get_preference(PREFTOGGLE_DISABLE_KARMA_REMINDER)) @@ -277,7 +264,7 @@ for(var/obj/docking_port/mobile/pod/M in SSshuttle.mobile) M.dock(SSshuttle.getDock("[M.id]_away")) - for(var/area/shuttle/escape/E in world) + for(var/area/shuttle/escape/E in GLOB.areas) E << 'sound/effects/hyperspace_end_new.ogg' // now move the actual emergency shuttle to centcomm @@ -291,17 +278,6 @@ mode = SHUTTLE_ENDGAME timer = 0 - open_dock() - -/obj/docking_port/mobile/emergency/proc/open_dock() - pass() -/* - for(var/obj/machinery/door/poddoor/shuttledock/D in airlocks) - var/turf/T = get_step(D, D.checkdir) - if(!isspaceturf(T)) - spawn(0) - D.open() -*/ //Leaving this here incase someone decides to port -tg-'s escape shuttle stuff: // This basically opens a big-ass row of blast doors when the shuttle arrives at centcom /obj/docking_port/mobile/pod @@ -315,18 +291,11 @@ /obj/docking_port/mobile/pod/New() ..() if(id == "pod") - WARNING("[type] id has not been changed from the default. Use the id convention \"pod1\" \"pod2\" etc.") + log_runtime(EXCEPTION("[type] id has not been changed from the default. Use the id convention \"pod1\" \"pod2\" etc.")) /obj/docking_port/mobile/pod/cancel() return -/* - findTransitDock() - . = SSshuttle.getDock("[id]_transit") - if(.) return . - return ..() -*/ - /obj/machinery/computer/shuttle/pod name = "pod control computer" admin_controlled = 1 diff --git a/code/modules/shuttle/ert.dm b/code/modules/shuttle/ert.dm index e6eea6337da1..67777b81968e 100644 --- a/code/modules/shuttle/ert.dm +++ b/code/modules/shuttle/ert.dm @@ -15,7 +15,7 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/ert name = "specops navigation computer" - desc = "Used to designate a precise transit location for the specops shuttle." + desc = "Используется, чтобы указать точное местоположение для отправки ОБР." icon_screen = "navigation" icon_keyboard = "med_key" shuttleId = "specops" diff --git a/code/modules/shuttle/gamma.dm b/code/modules/shuttle/gamma.dm index 169606ded9e7..8b0ba9627bc4 100644 --- a/code/modules/shuttle/gamma.dm +++ b/code/modules/shuttle/gamma.dm @@ -6,9 +6,8 @@ width = 7 dir = 4 fly_sound = 'sound/effects/hyperspace_end.ogg' - callTime = 10 SECONDS - ignitionTime = 0 - roundstart_move = "gamma_away" + rechargeTime = 0 + callTime = 8 SECONDS /obj/docking_port/mobile/gamma/request(obj/docking_port/stationary/S) . = ..() diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm index 9b4f49d0a4db..9870eb2df927 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/navigation_computer.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/camera_advanced/shuttle_docker name = "navigation computer" - desc = "Used to designate a precise transit location for a spacecraft." + desc = "Используется, чтобы указать точное местоположение для отправки шаттла." icon_screen = "navigation" icon_keyboard = "med_key" jump_action = null diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 466fa7050d50..c9fc25865e3a 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -1,25 +1,30 @@ // Shuttle on-movement // -/atom/movable/proc/onShuttleMove(turf/oldT, turf/T1, rotation, mob/caller) +/atom/movable/proc/onShuttleMove(turf/oldT, turf/T1, rotation, mob/requester) if(light && light_system == STATIC_LIGHT) update_light() + if(rotation) shuttleRotate(rotation) + forceMove(T1) SSdemo.mark_dirty(src) - return 1 + + return TRUE /obj/effect/landmark/shuttle_import/onShuttleMove() // Used for marking where to preview/load shuttles - return 0 + return FALSE /obj/docking_port/onShuttleMove() // Stationary ports shouldn't move, mobile ones move themselves - return 0 + return FALSE /obj/machinery/door/airlock/onShuttleMove() . = ..() + if(!.) return + INVOKE_ASYNC(src, PROC_REF(close), 0, 1) // Close any nearby airlocks as well for(var/obj/machinery/door/airlock/D in orange(1, src)) diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index f61515183e27..34004102f65a 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -13,9 +13,10 @@ anchored = TRUE var/id - dir = NORTH //this should point -away- from the dockingport door, ie towards the ship + // this should point -away- from the dockingport door, ie towards the ship + dir = NORTH var/width = 0 //size of covered area, perpendicular to dir - var/height = 0 //size of covered area, paralell to dir + var/height = 0 //size of covered area, parallel to dir var/dwidth = 0 //position relative to covered area, perpendicular to dir var/dheight = 0 //position relative to covered area, parallel to dir @@ -26,7 +27,7 @@ var/list/ripples = list() var/hidden = FALSE //are we invisible to shuttle navigation computers? - //these objects are indestructable + //these objects are indestructible /obj/docking_port/Destroy(force) if(force) ..() @@ -52,11 +53,11 @@ //returns a list(x0,y0, x1,y1) where points 0 and 1 are bounding corners of the projected rectangle /obj/docking_port/proc/return_coords(_x, _y, _dir) - if(!_dir) + if(_dir == null) _dir = dir - if(!_x) + if(_x == null) _x = x - if(!_y) + if(_y == null) _y = y //byond's sin and cos functions are inaccurate. This is faster and perfectly accurate @@ -157,8 +158,9 @@ var/turf_type = /turf/baseturf_bottom var/area_type = /area/space + var/last_dock_time - var/lock_shuttle_doors = 0 + var/lock_shuttle_doors = FALSE // Preset for adding whiteship docks to ruins. Has widths preset which will auto-assign the shuttle /obj/docking_port/stationary/whiteship @@ -185,18 +187,14 @@ //returns first-found touching shuttleport /obj/docking_port/stationary/get_docked() return locate(/obj/docking_port/mobile) in loc - /* - for(var/turf/T in return_ordered_turfs()) - . = locate(/obj/docking_port/mobile) in loc - if(.) - return . - */ /obj/docking_port/stationary/transit name = "In transit" turf_type = /turf/space/transit + var/datum/turf_reservation/reserved_area var/area/shuttle/transit/assigned_area - lock_shuttle_doors = 1 + lock_shuttle_doors = TRUE + var/obj/docking_port/mobile/owner /obj/docking_port/stationary/transit/register() if(!..()) @@ -207,6 +205,16 @@ SSshuttle.transit += src return 1 +/obj/docking_port/stationary/transit/Destroy(force=FALSE) + if(force) + SSshuttle.transit -= src + if(owner) + owner = null + if(!QDELETED(reserved_area)) + qdel(reserved_area) + reserved_area = null + return ..() + /obj/docking_port/mobile icon_state = "mobile" name = "shuttle" @@ -219,18 +227,33 @@ var/timer //used as a timer (if you want time left to complete move, use timeLeft proc) var/last_timer_length - var/rechargeTime = 50 - var/mode = SHUTTLE_IDLE //current shuttle mode (see global defines) - var/callTime = 50 //time spent in transit (deciseconds) - var/ignitionTime = 30 // time spent "starting the engines". Also rate limits how often we try to reserve transit space if its ever full of transiting shuttles. - var/roundstart_move //id of port to send shuttle to at roundstart - var/travelDir = 0 //direction the shuttle would travel in - var/rebuildable = 0 //can build new shuttle consoles for this one + /// current shuttle state + var/mode = SHUTTLE_IDLE + /// time recharging before ready to launch again + var/rechargeTime = 5 SECONDS + /// time spent in transit (deciseconds) + var/callTime = 5 SECONDS + /// time spent "starting the engines". Also rate limits how often we try to reserve transit space if its ever full of transiting shuttles. + /// DO NOT set under 3 seconds. We need to reserve space before we can launch the shuttle. Also it'll break launch sound(not by not playing. it'll be unsynced) + var/ignitionTime = 3 SECONDS + /// id of port to send shuttle to at roundstart + var/roundstart_move + /// can build new shuttle consoles for this one + var/rebuildable = 0 + /// Doesn't throw runtimes if can't find the dock. Used by away shuttles(example ussp shuttle) which cannot get docks loaded in map. + var/alone_shuttle = FALSE + + /// The direction the shuttle prefers to travel in, ie what direction the animation will cause it to appear to be traveling in + var/preferred_direction = NORTH + /// relative direction of the docking port from the front of the shuttle. + /// Meaning, if port located at: front = NORTH, left side = WEST, right side = EAST, backside = SOUTH. + var/port_direction = NORTH var/mob/last_caller // Who called the shuttle the last time var/obj/docking_port/stationary/destination var/obj/docking_port/stationary/previous + var/obj/docking_port/stationary/transit/assigned_transit /obj/docking_port/mobile/New() ..() @@ -244,6 +267,8 @@ areaInstance.name = name areaInstance.contents += return_ordered_turfs() + areaInstance.parallax_movedir = preferred_direction + #ifdef DOCKING_PORT_HIGHLIGHT highlight("#0f0") #endif @@ -280,12 +305,13 @@ areaInstance = null destination = null previous = null + QDEL_NULL(assigned_transit) //don't need it where we're goin'! shuttle_areas = null return ..() //this is a hook for custom behaviour. Maybe at some point we could add checks to see if engines are intact /obj/docking_port/mobile/proc/canMove() - return 0 //0 means we can move + return 0 //0 means we can move // FALSE should've mean YOU CAN'T MOVE WTF //this is to check if this shuttle can physically dock at dock S /obj/docking_port/mobile/proc/canDock(obj/docking_port/stationary/S) @@ -325,9 +351,10 @@ else var/msg = "check_dock(): shuttle [src] cannot dock at [S], error: [status]" message_admins(msg) - throw EXCEPTION(msg) return FALSE +/obj/docking_port/mobile/proc/transit_failure() + message_admins("Shuttle [src] repeatedly failed to create transit zone.") //call the shuttle to destination S /obj/docking_port/mobile/proc/request(obj/docking_port/stationary/S) @@ -361,22 +388,22 @@ if(mode != SHUTTLE_CALL) return - timer = world.time - timeLeft(1) + invertTimer() mode = SHUTTLE_RECALL /obj/docking_port/mobile/proc/enterTransit() . = FALSE previous = null var/obj/docking_port/stationary/S0 = get_docked() - var/obj/docking_port/stationary/S1 = findTransitDock() + var/obj/docking_port/stationary/S1 = assigned_transit if(S1) if(dock(S1, transit = TRUE)) - WARNING("shuttle \"[id]\" could not enter transit space. Docked at [S0 ? S0.id : "null"]. Transit dock [S1 ? S1.id : "null"].") + log_runtime(EXCEPTION("shuttle \"[id]\" could not enter transit space. Docked at [S0 ? S0.id : "null"]. Transit dock [S1 ? S1.id : "null"].")) else previous = S0 return TRUE else - WARNING("shuttle \"[id]\" could not enter transit space. S0=[S0 ? S0.id : "null"] S1=[S1 ? S1.id : "null"]") + log_runtime(EXCEPTION("shuttle \"[id]\" could not enter transit space. S0=[S0 ? S0.id : "null"] S1=[S1 ? S1.id : "null"]")) @@ -422,137 +449,141 @@ ripples.Cut() -/obj/docking_port/mobile/proc/ripple_area(obj/docking_port/stationary/S1) - var/list/L0 = return_ordered_turfs(x, y, z, dir, areaInstance) - var/list/L1 = return_ordered_turfs(S1.x, S1.y, S1.z, S1.dir) +/obj/docking_port/mobile/proc/ripple_area(obj/docking_port/stationary/new_dock) + var/list/old_turfs = return_ordered_turfs(x, y, z, dir, areaInstance) + var/list/new_turfs = return_ordered_turfs(new_dock.x, new_dock.y, new_dock.z, new_dock.dir) var/list/ripple_turfs = list() - for(var/i in 1 to L0.len) - var/turf/T0 = L0[i] - if(!T0) + for(var/i in 1 to old_turfs.len) + var/turf/oldT = old_turfs[i] + if(!oldT) continue - var/turf/T1 = L1[i] - if(!T1) + var/turf/newT = new_turfs[i] + if(!newT) continue - if(T0.type != T0.baseturf) - ripple_turfs += T1 + if(oldT.type != oldT.baseturf) + ripple_turfs += newT return ripple_turfs -//this is the main proc. It instantly moves our mobile port to stationary port S1 -//it handles all the generic behaviour, such as sanity checks, closing doors on the shuttle, stunning mobs, etc -/obj/docking_port/mobile/proc/dock(obj/docking_port/stationary/S1, force = FALSE, transit = FALSE) +/// this is the main proc. It instantly moves our mobile port to stationary port S1 +/// it handles all the generic behaviour, such as sanity checks, closing doors on the shuttle, stunning mobs, etc +/obj/docking_port/mobile/proc/dock(obj/docking_port/stationary/new_dock, force = FALSE, transit = FALSE) // Crashing this ship with NO SURVIVORS - if(S1.get_docked() == src) + if(new_dock.get_docked() == src) remove_ripples() - return + return DOCKING_SUCCESS if(!force) - if(!check_dock(S1)) - return -1 + if(!check_dock(new_dock)) + return DOCKING_BLOCKED if(canMove()) - return -1 + remove_ripples() + return DOCKING_IMMOBILIZED - var/obj/docking_port/stationary/S0 = get_docked() - var/turf_type = /turf/space - var/area_type = /area/space - if(S0) - if(S0.turf_type) - turf_type = S0.turf_type - if(S0.area_type) - area_type = S0.area_type + var/obj/docking_port/stationary/old_dock = get_docked() + var/turf_type = old_dock?.turf_type || /turf/space + var/area_type = old_dock?.area_type || /area/space //close and lock the dock's airlocks - closePortDoors(S0) + closePortDoors(old_dock) - var/list/L0 = return_ordered_turfs(x, y, z, dir, areaInstance) - var/list/L1 = return_ordered_turfs(S1.x, S1.y, S1.z, S1.dir) + var/list/old_turfs = return_ordered_turfs(x, y, z, dir, areaInstance) + var/list/new_turfs = return_ordered_turfs(new_dock.x, new_dock.y, new_dock.z, new_dock.dir) - var/rotation = dir2angle(S1.dir)-dir2angle(dir) - if((rotation % 90) != 0) - rotation += (rotation % 90) //diagonal rotations not allowed, round up - rotation = SIMPLIFY_DEGREES(rotation) + var/rotation = 0 + if(new_dock.dir != dir) //Even when the dirs are the same rotation is coming out as not 0 for some reason + rotation = dir2angle(new_dock.dir)-dir2angle(dir) + if ((rotation % 90) != 0) + rotation += (rotation % 90) //diagonal rotations not allowed, round up + rotation = SIMPLIFY_DEGREES(rotation) //remove area surrounding docking port if(areaInstance.contents.len) var/area/A0 = locate("[area_type]") if(!A0) A0 = new area_type(null) - for(var/turf/T0 in L0) - A0.contents += T0 + for(var/turf/oldT in old_turfs) + A0.contents += oldT // Removes ripples remove_ripples() //move or squish anything in the way ship at destination - shuttle_smash(L0, L1, S1.dir) + shuttle_smash(old_turfs, new_turfs, new_dock.dir) - for(var/i in 1 to L0.len) - var/turf/T0 = L0[i] - if(!T0) + // begin transition + for(var/i in 1 to old_turfs.len) + /* CHECKING */ + var/turf/oldT = old_turfs[i] //old turf + if(!oldT) continue - var/turf/T1 = L1[i] - if(!T1) + var/turf/newT = new_turfs[i] //new turf + if(!newT) continue - areaInstance.contents += T1 + areaInstance.contents += newT - var/should_transit = !is_turf_blacklisted_for_transit(T0) + /* TAKEOFF */ + var/should_transit = !is_turf_blacklisted_for_transit(oldT) if(should_transit) // Only move over stuff if the transfer actually happened - T0.copyTurf(T1) + oldT.copyTurf(newT) //copy over air - if(issimulatedturf(T1)) - var/turf/simulated/Ts1 = T1 - Ts1.copy_air_with_tile(T0) + if(issimulatedturf(newT)) + var/turf/simulated/Ts1 = newT + Ts1.copy_air_with_tile(oldT) //move mobile to new location - for(var/atom/movable/AM in T0) - AM.onShuttleMove(T0, T1, rotation, last_caller) + for(var/atom/movable/AM in oldT) + AM.onShuttleMove(oldT, newT, rotation, last_caller) + //rotate turf if(rotation) - T1.shuttleRotate(rotation) + newT.shuttleRotate(rotation) + /* END TAKEOFF */ - var/turf/new_ceiling = GET_TURF_ABOVE(T1) // Do it before atmos readjust. + /* GIVE CEILING */ + var/turf/new_ceiling = GET_TURF_ABOVE(newT) // Do it before atmos readjust. if(new_ceiling && (isspaceturf(new_ceiling) || isopenspaceturf(new_ceiling))) //Check for open one, not wall // generate ceiling new_ceiling.ChangeTurf(/turf/simulated/floor/engine/hull/ceiling) // Always do this stuff as it ensures that the destination turfs still behave properly with the rest of the shuttle transit - //atmos and lighting stuff - SSair.remove_from_active(T1) - T1.CalculateAdjacentTurfs() - SSair.add_to_active(T1,1) - - T1.lighting_build_overlay() + /* UPDATE ATMOS & LIGHT */ + SSair.remove_from_active(newT) + newT.CalculateAdjacentTurfs() + SSair.add_to_active(newT, 1) + newT.lighting_build_overlay() if(!should_transit) continue // Don't want to actually change the skipped turf - // We make roof here, before the turf change and atmos change. or the atmos will BREAK - var/turf/old_ceiling = GET_TURF_ABOVE(T0) + /* REMOVE OLD CEILING */ + var/turf/old_ceiling = GET_TURF_ABOVE(oldT) if(old_ceiling && istype(old_ceiling, /turf/simulated/floor/engine/hull/ceiling)) // check if a ceiling was generated previously // remove old ceiling var/turf/simulated/floor/engine/hull/ceiling/old_shuttle_ceiling = old_ceiling old_shuttle_ceiling.ChangeTurf(old_shuttle_ceiling.old_turf_type) - T0.ChangeTurf(turf_type, keep_icon = FALSE) - - SSair.remove_from_active(T0) - T0.CalculateAdjacentTurfs() - SSair.add_to_active(T0,1) + /* RESTORE OLD TURF */ + oldT.ChangeTurf(turf_type, keep_icon = FALSE) + SSair.remove_from_active(oldT) + oldT.CalculateAdjacentTurfs() + SSair.add_to_active(oldT, 1) + // end transition areaInstance.moving = transit - for(var/A1 in L1) - var/turf/T1 = A1 - T1.postDock(S1) - for(var/atom/movable/mobile_docking_port in T1) - mobile_docking_port.postDock(S1) + for(var/A1 in new_turfs) + var/turf/newT = A1 + newT.postDock(new_dock) + for(var/atom/movable/mobile_docking_port in newT) + mobile_docking_port.postDock(new_dock) - loc = S1.loc - dir = S1.dir + loc = new_dock.loc + dir = new_dock.dir // Update mining and labor shuttle ash storm audio if(id in list("mining", "laborcamp") && !CONFIG_GET(flag/disable_lavaland)) @@ -562,7 +593,7 @@ W.update_eligible_areas() W.update_audio() - unlockPortDoors(S1) + unlockPortDoors(new_dock) /obj/docking_port/mobile/proc/is_turf_blacklisted_for_transit(turf/T) var/static/list/blacklisted_turf_types = typecacheof(GLOB.blacklisted_turf_types_for_transit) @@ -575,17 +606,16 @@ /obj/docking_port/mobile/proc/findRoundstartDock() - var/obj/docking_port/stationary/D - D = SSshuttle.getDock(roundstart_move) - - if(D) - return D + for(var/obj/docking_port/stationary/S in SSshuttle.stationary) + if(S.id == roundstart_move) + return S + if(!alone_shuttle) + log_runtime(EXCEPTION("couldn't find roundstart dock for \"[name]\" with id: [id]")) /obj/docking_port/mobile/proc/dockRoundstart() - // Instead of spending a lot of time trying to work out where to place - // our shuttle, just create it somewhere empty and send it to where - // it should go - . = dock_id(roundstart_move) + var/port = findRoundstartDock() + if(port) + return dock(port) /obj/docking_port/mobile/proc/dock_id(id) var/port = SSshuttle.getDock(id) @@ -601,67 +631,74 @@ //shuttle-door closing is handled in the dock() proc whilst looping through turfs //this one closes the door where we are docked at, if there is one there. -/obj/docking_port/mobile/proc/closePortDoors(obj/docking_port/stationary/S0) - if(!istype(S0)) - return 1 +/obj/docking_port/mobile/proc/closePortDoors(obj/docking_port/stationary/old_dock) + if(!istype(old_dock) || isnull(old_dock.id)) + return for(var/obj/machinery/door/airlock/A in GLOB.airlocks) - if(A.id_tag == S0.id) - spawn(-1) - A.close() - A.lock() + if(A.id_tag == old_dock.id) + A.close() + A.lock() -/obj/docking_port/mobile/proc/unlockPortDoors(obj/docking_port/stationary/S1) - if(!istype(S1)) - return 0 +/obj/docking_port/mobile/proc/unlockPortDoors(obj/docking_port/stationary/new_dock) + if(!istype(new_dock) || isnull(new_dock.id)) + return for(var/obj/machinery/door/airlock/A in GLOB.airlocks) - if(A.id_tag == S1.id) - spawn(-1) - if(A.locked) - A.unlock() + if(A.id_tag == new_dock.id) + if(A.locked) + A.unlock() //used by shuttle subsystem to check timers /obj/docking_port/mobile/proc/check() - check_effects() - - var/timeLeft = timeLeft(1) - - if(timeLeft <= 0) - switch(mode) - if(SHUTTLE_CALL) - if(dock(destination)) - setTimer(20) //can't dock for some reason, try again in 2 seconds - return - if(rechargeTime) - mode = SHUTTLE_RECHARGING - setTimer(rechargeTime) - return - if(SHUTTLE_RECALL) - if(dock(previous)) - setTimer(20) //can't dock for some reason, try again in 2 seconds - return - if(SHUTTLE_IGNITING) - if(enterTransit()) - mode = SHUTTLE_CALL - setTimer(callTime) - return - mode = SHUTTLE_IDLE - timer = 0 - destination = null + check_ripples() + + if(mode == SHUTTLE_IGNITING) + check_transit_zone() -/obj/docking_port/mobile/proc/check_effects() + if(timeLeft(1) > 0) + return + // If we can't dock or we don't have a transit slot, wait for 20 ds, + // then try again + switch(mode) + if(SHUTTLE_CALL) + if(dock(destination)) + setTimer(20) //can't dock for some reason, try again in 2 seconds + return + if(rechargeTime) + mode = SHUTTLE_RECHARGING + setTimer(rechargeTime) + return + if(SHUTTLE_RECALL) + if(dock(previous)) + setTimer(20) //can't dock for some reason, try again in 2 seconds + return + if(SHUTTLE_IGNITING) + if(enterTransit()) + mode = SHUTTLE_CALL + setTimer(callTime) + return + mode = SHUTTLE_IDLE + timer = 0 + destination = null + +/obj/docking_port/mobile/proc/check_ripples() if(!ripples.len) if((mode == SHUTTLE_CALL) || (mode == SHUTTLE_RECALL)) var/tl = timeLeft(1) if(tl <= SHUTTLE_RIPPLE_TIME) create_ripples(destination) +/obj/docking_port/mobile/proc/check_transit_zone() + if(assigned_transit) + return TRANSIT_READY + else + SSshuttle.request_transit_dock(src) + /obj/docking_port/mobile/proc/setTimer(wait) - if(timer <= 0) - timer = world.time - timer += wait - timeLeft(1) + timer = world.time + wait + last_timer_length = wait /obj/docking_port/mobile/proc/modTimer(multiple) var/time_remaining = timer - world.time @@ -683,13 +720,19 @@ /obj/docking_port/mobile/proc/timeLeft(divisor) if(divisor <= 0) divisor = 10 + var/ds_remaining if(!timer) - return round(callTime/divisor, 1) - return max( round((timer+callTime-world.time)/divisor,1), 0 ) + ds_remaining = callTime + else + ds_remaining = max(0, timer - world.time) + + . = round(ds_remaining / divisor, 1) // returns 3-letter mode string, used by status screens and mob status panel /obj/docking_port/mobile/proc/getModeStr() switch(mode) + if(SHUTTLE_IGNITING) + return "IGN" if(SHUTTLE_RECALL) return "RCL" if(SHUTTLE_CALL) @@ -736,6 +779,7 @@ var/shuttleId var/possible_destinations = "" var/admin_controlled + var/lockdown_affected = FALSE var/max_connect_range = 7 var/moved = FALSE //workaround for nukie shuttle, hope I find a better way to do this... @@ -794,6 +838,7 @@ /obj/machinery/computer/shuttle/ui_data(mob/user) var/list/data = list() var/obj/docking_port/mobile/mobile_docking_port = SSshuttle.getShuttle(shuttleId) + var/lockdown_check = lockdown_affected && GLOB.full_lockdown data["docked_location"] = mobile_docking_port ? mobile_docking_port.getStatusText() : "Unknown" data["timer_str"] = mobile_docking_port ? mobile_docking_port.getTimerStr() : "00:00" if(!mobile_docking_port) @@ -801,6 +846,8 @@ return data if(admin_controlled) data["status"] = "Unauthorized Access" + else if(lockdown_check) + data["status"] = "Lockdown" else switch(mobile_docking_port.mode) if(SHUTTLE_IGNITING) @@ -832,7 +879,7 @@ data["locked"] = TRUE data["status"] = "Locked" data["docking_ports_len"] = docking_ports.len - data["admin_controlled"] = admin_controlled + data["admin_controlled"] = admin_controlled || lockdown_check return data /obj/machinery/computer/shuttle/ui_act(action, params) @@ -914,7 +961,7 @@ /obj/machinery/computer/shuttle/ruins_transport_shuttle // this shuttle made for station and listening post of ussp since they have lore connection between eachother, btw the shuttle existed before the change but was deleted for some reason. name = "Transport Shuttle Console" - desc = "Used to control the Transport Shuttle." + desc = "Используется для управления Транспортным шаттлом." circuit = /obj/item/circuitboard/ruins_transport_shuttle shuttleId = "ruins_transport_shuttle" possible_destinations = "ussp_dock;dj_post;sindiecake_dock;ussp_gorky17" @@ -926,7 +973,7 @@ /obj/machinery/computer/shuttle/ruins_civil_shuttle // made another shuttle, this one will fly between spacebar and twin nexus hotel. just another way to get to it. name = "Regular Civilian Shuttle Console" - desc = "Used to control the Regular Civilian Shuttle." + desc = "Используется для управления обычным гражданским шаттлом." circuit = /obj/item/circuitboard/ruins_civil_shuttle shuttleId = "ruins_civil_shuttle" possible_destinations = "spacebar;spacehotelv1;ntstation" @@ -934,20 +981,20 @@ /obj/machinery/computer/shuttle/white_ship name = "White Ship Console" - desc = "Used to control the White Ship." + desc = "Используется для управления Белым кораблём." circuit = /obj/item/circuitboard/white_ship shuttleId = "whiteship" possible_destinations = null // Set at runtime /obj/machinery/computer/shuttle/engineering name = "Engineering Shuttle Console" - desc = "Used to call and send the engineering shuttle." + desc = "Используется для вызова и отправки инженерного шаттла." shuttleId = "engineering" possible_destinations = "engineering_home;engineering_away" /obj/machinery/computer/shuttle/science name = "Science Shuttle Console" - desc = "Used to call and send the science shuttle." + desc = "Используется для вызова и отправки научного шаттла." shuttleId = "science" possible_destinations = "science_home;science_away" @@ -960,7 +1007,7 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/admin name = "Admin shuttle navigation computer" - desc = "Used to designate a precise transit location for the admin shuttle." + desc = "Используется, чтобы указать точное местоположение для отправки админского шаттла." icon_screen = "navigation" icon_keyboard = "med_key" shuttleId = "admin" @@ -987,7 +1034,7 @@ /obj/machinery/computer/shuttle/golem_ship name = "Golem Ship Console" - desc = "Used to control the Golem Ship." + desc = "Используется для управления шаттлом големов." circuit = /obj/item/circuitboard/shuttle/golem_ship shuttleId = "freegolem" possible_destinations = "freegolem_lavaland;freegolem_space;freegolem_ussp" @@ -1000,7 +1047,7 @@ /obj/machinery/computer/shuttle/golem_ship/recall name = "golem ship recall terminal" - desc = "Used to recall the Golem Ship." + desc = "Используется для отзыва шаттла големов." possible_destinations = "freegolem_lavaland" resistance_flags = INDESTRUCTIBLE diff --git a/code/modules/shuttle/shuttle_manipulator.dm b/code/modules/shuttle/shuttle_manipulator.dm index 3e56d46ce59d..88733c63e0aa 100644 --- a/code/modules/shuttle/shuttle_manipulator.dm +++ b/code/modules/shuttle/shuttle_manipulator.dm @@ -41,6 +41,8 @@ switch(mode) if(SHUTTLE_IDLE) . = "idle" + if(SHUTTLE_IGNITING) + . = "engines charging" if(SHUTTLE_RECALL) . = "recalled" if(SHUTTLE_CALL) @@ -51,6 +53,8 @@ . = "stranded" if(SHUTTLE_ESCAPE) . = "escape" + if(SHUTTLE_RECHARGING) + . = "recharging" if(!.) . = "ERROR" @@ -265,7 +269,7 @@ /obj/machinery/shuttle_manipulator/proc/load_template(datum/map_template/shuttle/S) // load shuttle template, centred at shuttle import landmark, - var/turf/landmark_turf = get_turf(locate("landmark*Shuttle Import")) + var/turf/landmark_turf = get_turf(locate("landmark*Shuttle Import")) // e.g. /obj/effect/landmark/shuttle_import S.load(landmark_turf, centered = TRUE) var/affected = S.get_affected_turfs(landmark_turf, centered=TRUE) diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 8d4c3a52db3c..2e232ae93a31 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -10,7 +10,6 @@ callTime = 1200 dir = 8 - travelDir = 90 width = 12 dwidth = 5 height = 7 @@ -375,7 +374,7 @@ **************************/ /obj/machinery/computer/supplycomp name = "Supply Shuttle Console" - desc = "Used to order supplies." + desc = "Используется для оформления заказов." icon_screen = "supply" req_access = list(ACCESS_CARGO) circuit = /obj/item/circuitboard/supplycomp @@ -388,13 +387,24 @@ /obj/machinery/computer/supplycomp/public name = "Supply Ordering Console" - desc = "Used to order supplies from cargo staff." + desc = "Используется для оформления заказов. Предназначено для общего пользования." icon = 'icons/obj/machines/computer.dmi' icon_screen = "request" circuit = /obj/item/circuitboard/ordercomp req_access = list() is_public = TRUE + +/obj/machinery/computer/supplycomp/Initialize(mapload, obj/structure/computerframe/frame) + . = ..() + + var/obj/item/circuitboard/supplycomp/my_circuit = src.frame.circuit + if(!istype(my_circuit)) + return + + can_order_contraband = my_circuit.contraband_enabled + + /obj/machinery/computer/supplycomp/attack_ai(var/mob/user as mob) return attack_hand(user) diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/syndicate.dm index 340438298a26..45084907cf7b 100644 --- a/code/modules/shuttle/syndicate.dm +++ b/code/modules/shuttle/syndicate.dm @@ -65,7 +65,7 @@ /obj/machinery/computer/shuttle/sst name = "Syndicate Strike Team Shuttle Console" - desc = "Used to call and send the SST shuttle." + desc = "Используется для вызова и отправки шаттла Ударного Отряда Синдиката." icon_keyboard = "syndie_key" icon_screen = "syndishuttle" req_access = list(ACCESS_SYNDICATE) @@ -76,7 +76,7 @@ /obj/machinery/computer/shuttle/sit name = "Syndicate Infiltration Team Shuttle Console" - desc = "Used to call and send the SIT shuttle." + desc = "Используется для вызова и отправки шаттла Диверсионного Отряда Синдиката." icon_keyboard = "syndie_key" icon_screen = "syndishuttle" req_access = list(ACCESS_SYNDICATE) @@ -87,7 +87,7 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate name = "syndicate shuttle navigation computer" - desc = "Used to designate a precise transit location for the syndicate shuttle." + desc = "Используется, чтобы указать точное местоположение для отправки шаттла синдиката." icon_screen = "syndinavigation" icon_keyboard = "syndie_key" shuttleId = "syndicate" @@ -107,7 +107,7 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/sst name = "SST shuttle navigation computer" - desc = "Used to designate a precise transit location for the SST shuttle." + desc = "Используется, чтобы указать точное местоположение для отправки шаттла Ударного Отряда Синдиката." shuttleId = "sst" shuttlePortId = "sst_custom" bubble_icon = "syndibot" @@ -118,7 +118,7 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/sit name = "SIT shuttle navigation computer" - desc = "Used to designate a precise transit location for the SIT shuttle." + desc = "Используется, чтобы указать точное местоположение для отправки шаттла Диверсионного Отряда Синдиката." shuttleId = "sit" shuttlePortId = "sit_custom" bubble_icon = "syndibot" diff --git a/code/modules/shuttle/vox.dm b/code/modules/shuttle/vox.dm index 7540725fcdbb..031e1988ca42 100644 --- a/code/modules/shuttle/vox.dm +++ b/code/modules/shuttle/vox.dm @@ -8,7 +8,7 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/vox name = "skipjack navigation computer" - desc = "Used to designate a precise transit location for the skipjack." + desc = "Используется, чтобы указать точное местоположение для отправки Скипджека." icon_screen = "navigation" icon_keyboard = "med_key" shuttleId = "skipjack" diff --git a/code/modules/space_management/multiz_helper.dm b/code/modules/space_management/multiz_helper.dm index 54a7440640f0..387b28a059c7 100644 --- a/code/modules/space_management/multiz_helper.dm +++ b/code/modules/space_management/multiz_helper.dm @@ -11,6 +11,15 @@ return get_step(GET_TURF_BELOW(us), dir) return get_step(ref, dir) +/proc/get_step_towards_multiz(atom/start, atom/target) + if(target.z == start.z) + return get_step_towards(start, target) + var/turf/start_turf = get_turf(start) + if(target.z > start.z) + return GET_TURF_ABOVE(start_turf) + return GET_TURF_BELOW(start_turf) + + /proc/get_dir_multiz(turf/us, turf/them) us = get_turf(us) them = get_turf(them) diff --git a/code/modules/space_management/space_level.dm b/code/modules/space_management/space_level.dm index 2e8d7575966a..54cd586bf3b7 100644 --- a/code/modules/space_management/space_level.dm +++ b/code/modules/space_management/space_level.dm @@ -1,7 +1,7 @@ /datum/space_level var/name = "Your config settings failed, you need to fix this for the datum space levels to work" var/zpos = 1 - var/flags = list() // We'll use this to keep track of whether you can teleport/etc + var/list/flags = list() // We'll use this to keep track of whether you can teleport/etc // Map transition stuff var/list/neighbors = list() diff --git a/code/modules/space_management/space_reservation.dm b/code/modules/space_management/space_reservation.dm new file mode 100644 index 000000000000..5a2dd2ad9bfe --- /dev/null +++ b/code/modules/space_management/space_reservation.dm @@ -0,0 +1,264 @@ + +//Yes, they can only be rectangular. +//Yes, I'm sorry. +/datum/turf_reservation + /// All turfs that we've reserved + var/list/reserved_turfs = list() + /// Turfs around the reservation for cordoning + var/list/cordon_turfs = list() + /// Area of turfs next to the cordon to fill with pre_cordon_area's + var/list/pre_cordon_turfs = list() + /// The width of the reservation + var/width = 0 + /// The height of the reservation + var/height = 0 + /// The z stack size of the reservation. Note that reservations are ALWAYS reserved from the bottom up + var/z_size = 0 + /// List of the bottom left turfs. Indexed by what their z index for this reservation is + var/list/bottom_left_turfs = list() + /// List of the top right turfs. Indexed by what their z index for this reservation is + var/list/top_right_turfs = list() + /// The turf type the reservation is initially made with + var/turf_type = /turf/space + ///Distance away from the cordon where we can put a "sort-cordon" and run some extra code (see make_repel). 0 makes nothing happen + var/pre_cordon_distance = 0 + +/datum/turf_reservation/transit + turf_type = /turf/space/transit + pre_cordon_distance = 7 + +/datum/turf_reservation/proc/Release() + bottom_left_turfs.Cut() + top_right_turfs.Cut() + + var/list/reserved_copy = reserved_turfs.Copy() + SSmapping.used_turfs -= reserved_turfs + reserved_turfs = list() + + var/list/cordon_copy = cordon_turfs.Copy() + SSmapping.used_turfs -= cordon_turfs + cordon_turfs = list() + + var/release_turfs = reserved_copy + cordon_copy + + for(var/turf/reserved_turf as anything in release_turfs) + SEND_SIGNAL(reserved_turf, COMSIG_TURF_RESERVATION_RELEASED, src) + + // Makes the linter happy, even tho we don't await this + INVOKE_ASYNC(SSmapping, TYPE_PROC_REF(/datum/controller/subsystem/mapping, reserve_turfs), release_turfs) + +/// Attempts to calaculate and store a list of turfs around the reservation for cordoning. Returns whether a valid cordon was calculated +/datum/turf_reservation/proc/calculate_cordon_turfs(turf/bottom_left, turf/top_right) + if(bottom_left.x < 2 || bottom_left.y < 2 || top_right.x > (world.maxx - 2) || top_right.y > (world.maxy - 2)) + return FALSE // no space for a cordon here + + var/list/possible_turfs = CORNER_OUTLINE(bottom_left, width, height) + // if they're our cordon turfs, accept them + possible_turfs -= cordon_turfs + for(var/turf/cordon_turf as anything in possible_turfs) + if(!(cordon_turf.turf_flags & UNUSED_RESERVATION_TURF)) + return FALSE + + cordon_turfs |= possible_turfs + + if(pre_cordon_distance) + var/turf/offset_turf = locate(bottom_left.x + pre_cordon_distance, bottom_left.y + pre_cordon_distance, bottom_left.z) + var/list/to_add = CORNER_OUTLINE(offset_turf, width - pre_cordon_distance * 2, height - pre_cordon_distance * 2) //we step-by-stop move inwards from the outer cordon + for(var/turf/turf_being_added as anything in to_add) + pre_cordon_turfs |= turf_being_added //add one by one so we can filter out duplicates + + return TRUE + +/// Actually generates the cordon around the reservation, and marking the cordon turfs as reserved +/datum/turf_reservation/proc/generate_cordon() + for(var/turf/cordon_turf as anything in cordon_turfs) + var/area/misc/cordon/cordon_area = GLOB.areas_by_type[/area/misc/cordon] || new + var/area/old_area = cordon_turf.loc + old_area.turfs_to_uncontain += cordon_turf + cordon_area.contained_turfs += cordon_turf + cordon_area.contents += cordon_turf + // Its no longer unused, but its also not "used" + cordon_turf.turf_flags &= ~UNUSED_RESERVATION_TURF + cordon_turf.ChangeTurf(/turf/cordon) + SSmapping.unused_turfs["[cordon_turf.z]"] -= cordon_turf + // still gets linked to us though + SSmapping.used_turfs[cordon_turf] = src + + //swap the area with the pre-cordoning area + for(var/turf/pre_cordon_turf as anything in pre_cordon_turfs) + make_repel(pre_cordon_turf) + +///Register signals in the cordon "danger zone" to do something with whoever trespasses +/datum/turf_reservation/proc/make_repel(turf/pre_cordon_turf) + SHOULD_CALL_PARENT(TRUE) + //Okay so hear me out. If we place a special turf IN the reserved area, it will be overwritten, so we can't do that + //But signals are preserved even between turf changes, so even if we register a signal now it will stay even if that turf is overriden by the template + RegisterSignal(pre_cordon_turf, list(COMSIG_QDELETING, COMSIG_TURF_RESERVATION_RELEASED), PROC_REF(on_stop_repel)) + +/datum/turf_reservation/proc/on_stop_repel(turf/pre_cordon_turf) + SHOULD_CALL_PARENT(TRUE) + SIGNAL_HANDLER + + stop_repel(pre_cordon_turf) + +///Unregister all the signals we added in RegisterRepelSignals +/datum/turf_reservation/proc/stop_repel(turf/pre_cordon_turf) + UnregisterSignal(pre_cordon_turf, list(COMSIG_QDELETING, COMSIG_TURF_RESERVATION_RELEASED)) + +/datum/turf_reservation/transit/make_repel(turf/pre_cordon_turf) + ..() + + RegisterSignal(pre_cordon_turf, COMSIG_ATOM_ENTERED, PROC_REF(space_dump)) + +/datum/turf_reservation/transit/stop_repel(turf/pre_cordon_turf) + ..() + + UnregisterSignal(pre_cordon_turf, COMSIG_ATOM_ENTERED) + +/datum/turf_reservation/transit/proc/space_dump(atom/source, atom/movable/enterer) + SIGNAL_HANDLER + + if(!enterer) + return + if(!enterer.simulated || istype(enterer, /obj/docking_port)) + return //this was fucking hilarious, the docking ports were getting thrown to random Z-levels + if(!isobserver(enterer)) + return + dump_in_space(enterer) + +/// Internal proc which handles reserving the area for the reservation. +/datum/turf_reservation/proc/_reserve_area(width, height, zlevel) + src.width = width + src.height = height + if(width > world.maxx || height > world.maxy || width < 1 || height < 1) + return FALSE + var/list/avail = SSmapping.unused_turfs["[zlevel]"] + var/turf/BL + var/turf/TR + var/list/turf/final = list() + var/passing = FALSE + for(var/i in avail) + CHECK_TICK + BL = i + if(!(BL.turf_flags & UNUSED_RESERVATION_TURF)) + continue + if(BL.x + width > world.maxx || BL.y + height > world.maxy) + continue + TR = locate(BL.x + width - 1, BL.y + height - 1, BL.z) + if(!(TR.turf_flags & UNUSED_RESERVATION_TURF)) + continue + final = block(BL, TR) + if(!final) + continue + passing = TRUE + for(var/I in final) + var/turf/checking = I + if(!(checking.turf_flags & UNUSED_RESERVATION_TURF)) + passing = FALSE + break + if(passing) // found a potentially valid area, now try to calculate its cordon + passing = calculate_cordon_turfs(BL, TR) + if(!passing) + continue + break + if(!passing || !istype(BL) || !istype(TR)) + return FALSE + + bottom_left_turfs += BL + top_right_turfs += TR + + for(var/i in final) + var/turf/T = i + reserved_turfs |= T + SSmapping.unused_turfs["[T.z]"] -= T + SSmapping.used_turfs[T] = src + T.turf_flags = (T.turf_flags | RESERVATION_TURF) & ~UNUSED_RESERVATION_TURF + T.ChangeTurf(turf_type) + + + return TRUE + +/datum/turf_reservation/proc/reserve(width, height, z_size, z_reservation) + src.z_size = z_size + var/failed_reservation = FALSE + for(var/_ in 1 to z_size) + if(!_reserve_area(width, height, z_reservation)) + failed_reservation = TRUE + break + + if(failed_reservation) + Release() + return FALSE + + generate_cordon() + return TRUE + +/// Calculates the effective bounds information for the given turf. Returns a list of the information, or null if not applicable. +/datum/turf_reservation/proc/calculate_turf_bounds_information(turf/target) + for(var/z_idx in 1 to z_size) + //log_debug("[list2params(bottom_left_turfs)], [z_idx]") + var/turf/bottom_left = bottom_left_turfs[z_idx] + var/turf/top_right = top_right_turfs[z_idx] + var/bl_x = bottom_left.x + var/bl_y = bottom_left.y + var/tr_x = top_right.x + var/tr_y = top_right.y + + if(target.x < bl_x) + continue + + if(target.y < bl_y) + continue + + if(target.x > tr_x) + continue + + if(target.y > tr_y) + continue + + var/list/return_information = list() + return_information["z_idx"] = z_idx + return_information["offset_x"] = target.x - bl_x + return_information["offset_y"] = target.y - bl_y + return return_information + return null + +/// Gets the turf below the given target. Returns null if there is no turf below the target +/datum/turf_reservation/proc/get_turf_below(turf/target) + var/list/bounds_info = calculate_turf_bounds_information(target) + if(isnull(bounds_info)) + return null + + var/z_idx = bounds_info["z_idx"] + // check what z level, if its the max, then there is no turf below + if(z_idx == z_size) + return null + + var/offset_x = bounds_info["offset_x"] + var/offset_y = bounds_info["offset_y"] + var/turf/bottom_left = bottom_left_turfs[z_idx + 1] + return locate(bottom_left.x + offset_x, bottom_left.y + offset_y, bottom_left.z) + +/// Gets the turf above the given target. Returns null if there is no turf above the target +/datum/turf_reservation/proc/get_turf_above(turf/target) + var/list/bounds_info = calculate_turf_bounds_information(target) + if(isnull(bounds_info)) + return null + + var/z_idx = bounds_info["z_idx"] + // check what z level, if its the min, then there is no turf above + if(z_idx == 1) + return null + + var/offset_x = bounds_info["offset_x"] + var/offset_y = bounds_info["offset_y"] + var/turf/bottom_left = bottom_left_turfs[z_idx - 1] + return locate(bottom_left.x + offset_x, bottom_left.y + offset_y, bottom_left.z) + +/datum/turf_reservation/New() + LAZYADD(SSmapping.turf_reservations, src) + +/datum/turf_reservation/Destroy() + Release() + LAZYREMOVE(SSmapping.turf_reservations, src) + return ..() diff --git a/code/modules/space_management/zlevel_manager.dm b/code/modules/space_management/zlevel_manager.dm index 3cf8b7b3a4fd..2e96cfbd0b2f 100644 --- a/code/modules/space_management/zlevel_manager.dm +++ b/code/modules/space_management/zlevel_manager.dm @@ -12,8 +12,6 @@ GLOBAL_DATUM_INIT(space_manager, /datum/zlev_manager, new()) var/datum/spacewalk_grid/linkage_map var/initialized = 0 - var/list/areas_in_z = list() - // Populate our space level list // and prepare space transitions /datum/zlev_manager/proc/initialize() @@ -43,15 +41,10 @@ GLOBAL_DATUM_INIT(space_manager, /datum/zlev_manager, new()) /datum/zlev_manager/proc/get_zlev(z) - if(!("[z]" in z_list)) - log_runtime(EXCEPTION("Unmanaged z level: '[z]'")) - else - return z_list["[z]"] + return z_list["[z]"] == null ? log_runtime(EXCEPTION("Unmanaged z level: '[z]'")) : z_list["[z]"] /datum/zlev_manager/proc/get_zlev_by_name(A) - if(!(A in levels_by_name)) - log_runtime(EXCEPTION("Non-existent z level: '[A]'")) - return levels_by_name[A] + return levels_by_name[A] == null ? log_runtime(EXCEPTION("Non-existent z level: '[A]'")) : levels_by_name[A] /* * "Dirt" management @@ -111,6 +104,10 @@ GLOBAL_DATUM_INIT(space_manager, /datum/zlev_manager, new()) * For convenience's sake returns the z-level added. * * This is a default way to create new z-level on your desire. + * + * * name - a name of new z-level. It should be unique. If you'll make multiple with same name, at least add "# [i]" in the end ("Ruin #1", "Ruin #2"...) + * * linkage - a state of how /turf/space on the edge of the z-level will interact with movable atoms. SELFLOOPING, CROSSLINKED will teleport, while UNAFFECTED won't do anything. + * * traits - traits/flags/attributes for z-level. All setting are in '_maps/_MAP_DEFINES.dm' */ /datum/zlev_manager/proc/add_new_zlevel(name, linkage = SELFLOOPING, traits = list(BLOCK_TELEPORT)) SEND_GLOBAL_SIGNAL(COMSIG_GLOB_NEW_Z, args) diff --git a/code/modules/spacepods/equipment.dm b/code/modules/spacepods/equipment.dm index e6e738083de3..5b657227d537 100644 --- a/code/modules/spacepods/equipment.dm +++ b/code/modules/spacepods/equipment.dm @@ -32,18 +32,16 @@ firstloc = get_turf(my_atom) secondloc = get_step(firstloc,NORTH) olddir = dir - var/obj/item/projectile/projone = new projectile_type(firstloc) - var/obj/item/projectile/projtwo = new projectile_type(secondloc) + var/obj/projectile/projone = new projectile_type(firstloc) + var/obj/projectile/projtwo = new projectile_type(secondloc) projone.starting = get_turf(my_atom) projone.firer = usr projone.firer_source_atom = src projone.def_zone = BODY_ZONE_CHEST - projone.hit_crawling_mobs_chance = 33 // temporal soulution (or permanent), until weapons targeting rework projtwo.starting = get_turf(my_atom) projtwo.firer = usr projtwo.firer_source_atom = src projtwo.def_zone = BODY_ZONE_CHEST - projtwo.hit_crawling_mobs_chance = 33 spawn() playsound(src, fire_sound, 50, 1) projone.dumbfire(my_atom.dir) @@ -86,7 +84,7 @@ name = "pod weapon" desc = "You shouldn't be seeing this" icon_state = "blank" - var/obj/item/projectile/projectile_type + var/obj/projectile/projectile_type var/shot_cost = 0 var/shots_per = 1 var/fire_sound @@ -97,7 +95,7 @@ name = "disabler system" desc = "A weak disabler system for space pods, fires disabler beams." icon_state = "weapon_taser" - projectile_type = /obj/item/projectile/beam/disabler + projectile_type = /obj/projectile/beam/disabler shot_cost = 800 shots_per = 2 fire_sound = 'sound/weapons/taser.ogg' @@ -107,7 +105,7 @@ name = "burst disabler system" desc = "A weak disabler system for space pods, this one fires 3 round burst at a time." icon_state = "weapon_burst_taser" - projectile_type = /obj/item/projectile/beam/disabler + projectile_type = /obj/projectile/beam/disabler shot_cost = 1200 shots_per = 3 fire_sound = 'sound/weapons/taser.ogg' @@ -118,7 +116,7 @@ name = "laser system" desc = "A weak laser system for space pods, fires concentrated bursts of energy." icon_state = "weapon_laser" - projectile_type = /obj/item/projectile/beam + projectile_type = /obj/projectile/beam shot_cost = 1200 shots_per = 2 fire_sound = 'sound/weapons/laser.ogg' @@ -127,7 +125,7 @@ name = "solaris system" desc = "A stronger vesion of laser systems for pods. Fires high concetrated bursts of energy" icon_state = "weapon_laser" - projectile_type = /obj/item/projectile/beam/laser/heavylaser + projectile_type = /obj/projectile/beam/laser/heavylaser shot_cost = 1800 shots_per = 2 fire_sound = 'sound/weapons/lasercannonfire.ogg' @@ -138,7 +136,7 @@ desc = "A kinetic accelerator system for space pods, fires bursts of kinetic force that cut through rock." icon = 'icons/goonstation/pods/ship.dmi' icon_state = "pod_taser" - projectile_type = /obj/item/projectile/kinetic/pod + projectile_type = /obj/projectile/kinetic/pod shot_cost = 300 fire_delay = 14 fire_sound = 'sound/weapons/kenetic_accel.ogg' @@ -148,7 +146,7 @@ desc = "A industrial kinetic accelerator system for space pods, fires heavy bursts of kinetic force that cut through rock." icon = 'icons/goonstation/pods/ship.dmi' icon_state = "pod_m_laser" - projectile_type = /obj/item/projectile/kinetic/pod/regular + projectile_type = /obj/projectile/kinetic/pod/regular shot_cost = 250 fire_delay = 10 fire_sound = 'sound/weapons/kenetic_accel.ogg' diff --git a/code/modules/spacepods/parts.dm b/code/modules/spacepods/parts.dm index d945ea7d98ad..0d4a2affd28e 100644 --- a/code/modules/spacepods/parts.dm +++ b/code/modules/spacepods/parts.dm @@ -115,9 +115,9 @@ return TRUE -/obj/item/pod_parts/pod_frame/AltClick(mob/user) - if(Adjacent(user)) - rotate() +/obj/item/pod_parts/pod_frame/click_alt(mob/user) + rotate() + return CLICK_ACTION_SUCCESS /obj/item/pod_parts/pod_frame/attack_hand() diff --git a/code/modules/spacepods/spacepod.dm b/code/modules/spacepods/spacepod.dm index 2419f8890473..3f4dc6f0c499 100644 --- a/code/modules/spacepods/spacepod.dm +++ b/code/modules/spacepods/spacepod.dm @@ -103,7 +103,9 @@ if("Windows") part_type = WINDOW else - var/coloradd = input(user, "Choose a color", "Color") as color + var/coloradd = tgui_input_color(user, "Choose a color", "Color") + if(isnull(coloradd)) + return colors[part_type] = coloradd if(!has_paint) has_paint = 1 @@ -212,7 +214,7 @@ if(blocks_emissive) add_overlay(get_emissive_block()) -/obj/spacepod/bullet_act(var/obj/item/projectile/P) +/obj/spacepod/bullet_act(var/obj/projectile/P) . = P.on_hit(src) if(P.damage_type == BRUTE || P.damage_type == BURN) deal_damage(P.damage) @@ -291,7 +293,7 @@ update_icons() -/obj/spacepod/proc/repair_damage(var/repair_amount) +/obj/spacepod/repair_damage(repair_amount) if(health) health = min(initial(health), health + repair_amount) update_icons() @@ -601,7 +603,7 @@ equipment_system.vars[slot] = null -/obj/spacepod/hear_talk/hear_talk(mob/M, list/message_pieces) +/obj/spacepod/hear_talk(mob/M, list/message_pieces) cargo_hold.hear_talk(M, message_pieces) ..() @@ -1202,7 +1204,8 @@ if(direction & (UP|DOWN)) COOLDOWN_START(src, spacepod_move_cooldown, 0.5 SECONDS) - var/turf/above = GET_TURF_ABOVE(loc) + var/turf/T = get_turf(loc) + var/turf/above = GET_TURF_ABOVE(T) if((direction & UP) && can_z_move(DOWN, above, z_move_flags = ZMOVE_FALL_FLAGS)) // going up and can fall down is bad. return FALSE . = zMove(direction) diff --git a/code/modules/station_goals/brs.dm b/code/modules/station_goals/brs.dm index 1b7122561ce2..044b476e6325 100644 --- a/code/modules/station_goals/brs.dm +++ b/code/modules/station_goals/brs.dm @@ -33,7 +33,7 @@ GLOBAL_LIST_EMPTY(bluespace_rifts_scanner_list) Постарайтесь усовершенствовать данные приборы, у научного отдела станции должны быть все необходимые для этого технологии.

    Получите экспериментальные проекты сканеров в отделе карго и соберите как можно больше данных о разломе. - Собранные данные отправятся на изучение в центральный научно-исследовательский отдел Нанотрейзен. + Собранные данные отправятся на изучение в центральный научно-исследовательский отдел НаноТрейзен.

    Разлом не представляет опасности для структурной целостности станции. Тем не менее, сканирующая аппаратура может вызвать колебания его стабильности. Соблюдайте осторожность при проведении исследований, вы ответственны за любой ущерб имуществу корпорации. diff --git a/code/modules/station_goals/brs/brs_event_container.dm b/code/modules/station_goals/brs/brs_event_container.dm index cfe0b41d426d..c7664952319d 100644 --- a/code/modules/station_goals/brs/brs_event_container.dm +++ b/code/modules/station_goals/brs/brs_event_container.dm @@ -299,7 +299,9 @@ for(var/i in 1 to num_explosions) var/epicenter = pick_n_take(turfs_in_range) playsound(epicenter, 'sound/effects/smoke.ogg', 50, TRUE) - new /obj/effect/particle_effect/smoke/bad(epicenter) + var/datum/effect_system/fluid_spread/smoke/bad/smoke = new + smoke.set_up(amount = 5, location = epicenter) + smoke.start() /** * Random number of sparks around the rift. diff --git a/code/modules/station_goals/brs/brs_rift_effect.dm b/code/modules/station_goals/brs/brs_rift_effect.dm index 784df8366355..03021ae72a6f 100644 --- a/code/modules/station_goals/brs/brs_rift_effect.dm +++ b/code/modules/station_goals/brs/brs_rift_effect.dm @@ -101,10 +101,10 @@ Use this before doing anything destructive. */ /obj/effect/abstract/bluespace_rift/proc/is_close_to_singularity(radius = 15) - for(var/singularity in GLOB.singularities) - if(!atoms_share_level(src, singularity)) + for(var/obj/singularity/singulo in GLOB.singularities) + if(src.z != singulo.z) continue - if(get_dist(src, singularity) <= radius) + if(get_dist(src, singulo) <= radius) return TRUE return FALSE diff --git a/code/modules/station_goals/brs/brs_stationary_scanner.dm b/code/modules/station_goals/brs/brs_stationary_scanner.dm index cb6b514ee143..12164dd83a79 100644 --- a/code/modules/station_goals/brs/brs_stationary_scanner.dm +++ b/code/modules/station_goals/brs/brs_stationary_scanner.dm @@ -205,8 +205,8 @@ // It's a large machine, add a delay user.visible_message( - "[user] начина[pluralize_ru(user.gender, "ет", "ют")] [panel_open ? "От" : "За"]кручивать панель [src].", - "Вы начинаете [panel_open ? "От" : "За"]кручивать панель [src]." + "[user] начина[pluralize_ru(user.gender, "ет", "ют")] [panel_open ? "за" : "от"]кручивать панель [src].", + "Вы начинаете [panel_open ? "за" : "от"]кручивать панель [src]." ) if(!I.use_tool(src, user, 3 SECONDS, volume = I.tool_volume)) return diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index 0706dd910969..62b6b7b5ab8b 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -414,9 +414,9 @@ if(notice) return null //Totally nanite construction system not an immersion breaking spawning - var/datum/effect_system/smoke_spread/s = new - s.set_up(4, 0, get_turf(centerpiece)) - s.start() + var/datum/effect_system/fluid_spread/smoke/smoke = new + smoke.set_up(amount = 4, location = get_turf(centerpiece)) + smoke.start() var/obj/machinery/bsa/full/cannon = new(get_turf(centerpiece),centerpiece.get_cannon_direction()) cannon.controller = src qdel(centerpiece.front) diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm index edf1a3ec2596..5df1df1050c0 100644 --- a/code/modules/station_goals/dna_vault.dm +++ b/code/modules/station_goals/dna_vault.dm @@ -3,13 +3,13 @@ // DNA vault requires x animals ,y plants, z human dna // DNA vaults require high tier stock parts and cold // After completion each crewmember can receive single upgrade chosen out of 2 for the mob. -#define VAULT_TOXIN "Toxin Adaptation" -#define VAULT_NOBREATH "Lung Enhancement" -#define VAULT_FIREPROOF "Thermal Regulation" -#define VAULT_STUNTIME "Neural Repathing" -#define VAULT_ARMOUR "Hardened Skin" -#define VAULT_SPEED "Leg Muscle Stimulus" -#define VAULT_QUICK "Arm Muscle Stimulus" +#define VAULT_TOXIN "Устойчивость к токсинам" +#define VAULT_NOBREATH "Улучшение лёгких" +#define VAULT_FIREPROOF "Терморегуляция" +#define VAULT_STUNTIME "Нейронное восстановление" +#define VAULT_ARMOUR "Каменная кожа" +#define VAULT_SPEED "Стимулятор мышц ног" +#define VAULT_QUICK "Стимуляция мышц рук" /datum/station_goal/dna_vault name = "DNA Vault" @@ -303,35 +303,41 @@ GLOBAL_LIST_INIT(non_simple_animals, typecacheof(list(/mob/living/carbon/human/l /obj/machinery/dna_vault/proc/upgrade(mob/living/carbon/human/H, upgrade_type) + if(!istype(H)) + return + if(!(upgrade_type in power_lottery[H])) return + if(!completed) return + if(HAS_TRAIT(H, TRAIT_NO_DNA)) - to_chat(H, "Error, no DNA detected.") + balloon_alert(H, "ДНК не обнаружена") return + switch(upgrade_type) if(VAULT_TOXIN) - to_chat(H, "You feel resistant to airborne toxins.") + to_chat(H, span_notice("Вы ощущаете устойчивость к инфекциям, передающимся воздушно-капельным путём.")) var/obj/item/organ/internal/lungs/L = H.get_int_organ(/obj/item/organ/internal/lungs) if(L) L.tox_breath_dam_min = 0 L.tox_breath_dam_max = 0 ADD_TRAIT(H, TRAIT_VIRUSIMMUNE, name) if(VAULT_NOBREATH) - to_chat(H, "Your lungs feel great.") + to_chat(H, span_notice("Вы чувствуете, что ваши лёгкие работают лучше.")) ADD_TRAIT(H, TRAIT_NO_BREATH, name) if(VAULT_FIREPROOF) - to_chat(H, "You feel fireproof.") + to_chat(H, span_notice("Вы ощущаете себя невосприимчивым к огню.")) H.physiology.burn_mod *= 0.5 ADD_TRAIT(H, TRAIT_RESIST_HEAT, name) if(VAULT_STUNTIME) - to_chat(H, "Nothing can keep you down for long.") + to_chat(H, span_notice("Вы ощущаете, что ничто не способно надолго вас сломить.")) H.physiology.stun_mod *= 0.5 H.physiology.stamina_mod *= 0.5 H.stam_regen_start_modifier *= 0.5 if(VAULT_ARMOUR) - to_chat(H, "You feel tough.") + to_chat(H, span_notice("Вы чувствуете себя уверенно.")) H.physiology.brute_mod *= 0.7 H.physiology.burn_mod *= 0.7 H.physiology.tox_mod *= 0.7 @@ -341,10 +347,10 @@ GLOBAL_LIST_INIT(non_simple_animals, typecacheof(list(/mob/living/carbon/human/l H.physiology.stamina_mod *= 0.7 ADD_TRAIT(H, TRAIT_PIERCEIMMUNE, name) if(VAULT_SPEED) - to_chat(H, "You feel very fast and agile.") + to_chat(H, span_notice("Вы ощущаете невероятную скорость и лёгкость.")) H.add_movespeed_modifier(/datum/movespeed_modifier/dna_vault_speedup) if(VAULT_QUICK) - to_chat(H, "Your arms move as fast as lightning.") + to_chat(H, span_notice("Ваши руки двигаются с молниеносной скоростью.")) H.next_move_modifier *= 0.5 power_lottery[H] = list() diff --git a/code/modules/station_goals/shield.dm b/code/modules/station_goals/shield.dm index b033f52b3427..c31cc38fc9da 100644 --- a/code/modules/station_goals/shield.dm +++ b/code/modules/station_goals/shield.dm @@ -1,11 +1,11 @@ GLOBAL_LIST_INIT(meteor_shields, list()) +GLOBAL_LIST_EMPTY_TYPED(meteor_shielded_turfs, /turf) // Щиты станции // Цепь спутников, окружающих станцию // Спутники активируются, создавая щит, который будет препятствовать прохождению неорганической материи. /datum/station_goal/station_shield name = "Station Shield" - VAR_PRIVATE/cached_coverage_length var/coverage_goal = 10000 /datum/station_goal/station_shield/get_report() @@ -31,21 +31,21 @@ GLOBAL_LIST_INIT(meteor_shields, list()) if(..()) return TRUE update_coverage() - if(cached_coverage_length >= coverage_goal) + if(length(GLOB.meteor_shielded_turfs) >= coverage_goal) return TRUE return FALSE -/datum/station_goal/station_shield/proc/get_coverage() - return cached_coverage_length - /datum/station_goal/station_shield/proc/update_coverage() var/list/coverage = list() for(var/obj/machinery/satellite/meteor_shield/shield_satt as anything in GLOB.meteor_shields) if(!shield_satt.active || !is_station_level(shield_satt.z)) continue + for(var/obj/effect/abstract/meteor_shield_proxy/proxy in shield_satt.proxies) + for(var/turf/covered in view(shield_satt.kill_range, proxy)) + coverage |= covered for(var/turf/covered in view(shield_satt.kill_range, shield_satt)) coverage |= covered - cached_coverage_length = length(coverage) + GLOB.meteor_shielded_turfs = coverage /obj/item/circuitboard/computer/sat_control board_name = "Контроллер сети спутников" @@ -86,9 +86,9 @@ GLOBAL_LIST_INIT(meteor_shields, list()) var/datum/station_goal/station_shield/G = locate() in SSticker.mode.station_goals if(G) data["meteor_shield"] = 1 - data["meteor_shield_coverage"] = G.get_coverage() + data["meteor_shield_coverage"] = length(GLOB.meteor_shielded_turfs) data["meteor_shield_coverage_max"] = G.coverage_goal - data["meteor_shield_coverage_percentage"] = (G.get_coverage() / G.coverage_goal) * 100 + data["meteor_shield_coverage_percentage"] = (length(GLOB.meteor_shielded_turfs) / G.coverage_goal) * 100 return data /obj/machinery/computer/sat_control/ui_act(action, params) @@ -102,7 +102,7 @@ GLOBAL_LIST_INIT(meteor_shields, list()) /obj/machinery/computer/sat_control/proc/toggle(id) for(var/obj/machinery/satellite/S in GLOB.machines) - if(S.id == id && atoms_share_level(src, S)) + if(S.id == id && are_zs_connected(src, S)) if(!S.toggle()) notice = "Вы можете активировать только находящиеся в космосе спутники" else @@ -173,6 +173,8 @@ GLOBAL_LIST_INIT(meteor_shields, list()) mode = "M-SHIELD" speed_process = TRUE var/kill_range = 14 + /// A list of "proxy" objects used for multi-z coverage. + var/list/obj/effect/abstract/meteor_shield_proxy/proxies = list() /obj/machinery/satellite/meteor_shield/examine(mob/user) . = ..() @@ -187,32 +189,72 @@ GLOBAL_LIST_INIT(meteor_shields, list()) if(emagged) . += span_warning("But something seems off about it...?") +/obj/machinery/satellite/meteor_shield/Initialize(mapload) + . = ..() + GLOB.meteor_shields += src + AddComponent(/datum/component/proximity_monitor, kill_range) + setup_proxies() + +/obj/machinery/satellite/meteor_shield/Destroy() + . = ..() + if(active && emagged) + change_meteor_chance(0.5) + GLOB.meteor_shields -= src + var/datum/station_goal/station_shield/shield_goal = locate() in SSticker.mode.station_goals + if(shield_goal) + shield_goal.update_coverage() + +/obj/machinery/satellite/meteor_shield/HasProximity(atom/movable/AM) + shoot_meteor(AM) + +/obj/machinery/satellite/meteor_shield/proc/shoot_meteor(atom/movable/possible_danger) + if(!active || emagged) + return + if(istype(possible_danger, /obj/effect/meteor)) + var/obj/effect/meteor/meteor_to_destroy = possible_danger + if(meteor_to_destroy.z != z) + return + if(!space_los(meteor_to_destroy)) + return + Beam(get_turf(meteor_to_destroy), icon_state = "sat_beam", time = 5, maxdistance = kill_range) + if(meteor_to_destroy.shield_defense(src)) + new /obj/effect/temp_visual/explosion(meteor_to_destroy) + // INVOKE_ASYNC(src, PROC_REF(play_zap_sound), meteor_turf) + qdel(meteor_to_destroy) + + /obj/machinery/satellite/meteor_shield/proc/space_los(meteor) for(var/turf/T as anything in get_line(src, meteor)) if(!isspaceturf(T)) return FALSE return TRUE -/obj/machinery/satellite/meteor_shield/process() - if(!active) - return - for(var/obj/effect/meteor/meteor_to_destroy as anything in GLOB.meteor_list) - if(meteor_to_destroy.z != z) - continue - if(get_dist(meteor_to_destroy, src) > kill_range) - continue - if(!emagged && space_los(meteor_to_destroy)) - Beam(get_turf(meteor_to_destroy), icon_state = "sat_beam", time = 5, maxdistance = kill_range) - if(meteor_to_destroy.shield_defense(src)) - qdel(meteor_to_destroy) +/obj/machinery/satellite/meteor_shield/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents) + . = ..() + setup_proxies() + +/obj/machinery/satellite/meteor_shield/proc/setup_proxies() + for(var/stacked_z in SSmapping.get_connected_levels(get_turf(src))) + setup_proxy_for_z(stacked_z) +/obj/machinery/satellite/meteor_shield/proc/setup_proxy_for_z(target_z) + if(target_z == z) + return + // don't setup a proxy if there already is one. + if(!QDELETED(proxies["[target_z]"])) + return + var/turf/our_loc = get_turf(src) + var/turf/target_loc = locate(our_loc.x, our_loc.y, target_z) + if(QDELETED(target_loc)) + return + var/obj/effect/abstract/meteor_shield_proxy/new_proxy = new(target_loc, src) + proxies["[target_z]"] = new_proxy /obj/machinery/satellite/meteor_shield/Process_Spacemove(movement_dir = NONE, continuous_move = FALSE) if(active) return TRUE return ..() - /obj/machinery/satellite/meteor_shield/toggle(user) . = ..() if(!.) @@ -227,25 +269,19 @@ GLOBAL_LIST_INIT(meteor_shields, list()) if(shield_goal) shield_goal.update_coverage() -/obj/machinery/satellite/meteor_shield/proc/change_meteor_chance(mod) +/obj/machinery/satellite/meteor_shield/proc/change_meteor_chance(mod = 1) + var/static/list/meteor_event_typecache + if(!meteor_event_typecache) + meteor_event_typecache = typecacheof(list( + /datum/event/meteor_wave, + /datum/event/dust/meaty, + /datum/event/dust, + )) for(var/datum/event_container/container in SSevents.event_containers) for(var/datum/event_meta/M in container.available_events) - if(M.event_type == /datum/event/meteor_wave) + if(is_type_in_typecache(M.event_type, meteor_event_typecache)) M.weight_mod *= mod -/obj/machinery/satellite/meteor_shield/Initialize(mapload) - . = ..() - GLOB.meteor_shields += src - -/obj/machinery/satellite/meteor_shield/Destroy() - . = ..() - if(active && emagged) - change_meteor_chance(0.5) - GLOB.meteor_shields -= src - var/datum/station_goal/station_shield/shield_goal = locate() in SSticker.mode.station_goals - if(shield_goal) - shield_goal.update_coverage() - /obj/machinery/satellite/meteor_shield/emag_act(mob/user) if(emagged) return @@ -255,3 +291,36 @@ GLOBAL_LIST_INIT(meteor_shields, list()) emagged = TRUE if(active) change_meteor_chance(2) + +/obj/effect/abstract/meteor_shield_proxy + name = "Proxy Detector For Meteor Shield" + /// The meteor shield sat this is proxying - any HasProximity calls will be forwarded to it. + var/obj/machinery/satellite/meteor_shield/parent + +/obj/effect/abstract/meteor_shield_proxy/Initialize(mapload, obj/machinery/satellite/meteor_shield/parent) + . = ..() + if(QDELETED(parent)) + return INITIALIZE_HINT_QDEL + src.parent = parent + AddComponent(/datum/component/proximity_monitor, parent.kill_range) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_parent_deleted)) + RegisterSignal(parent, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(on_parent_z_changed)) + RegisterSignal(parent, COMSIG_QDELETING, PROC_REF(on_parent_moved)) + +/obj/effect/abstract/meteor_shield_proxy/HasProximity(atom/movable/AM) + parent.shoot_meteor(AM) + +/obj/effect/abstract/meteor_shield_proxy/proc/on_parent_moved() + SIGNAL_HANDLER + var/turf/parent_loc = get_turf(parent) + var/turf/new_loc = locate(parent_loc.x, parent_loc.y, z) + abstract_move(new_loc) + +/obj/effect/abstract/meteor_shield_proxy/proc/on_parent_z_changed() + SIGNAL_HANDLER + if(z == parent.z || !are_zs_connected(parent, src)) + qdel(src) + +/obj/effect/abstract/meteor_shield_proxy/proc/on_parent_deleted() + SIGNAL_HANDLER + qdel(src) diff --git a/code/modules/station_goals/station_goal.dm b/code/modules/station_goals/station_goal.dm index cfedaec51936..d84e21cd425b 100644 --- a/code/modules/station_goals/station_goal.dm +++ b/code/modules/station_goals/station_goal.dm @@ -26,7 +26,7 @@ /datum/station_goal/proc/send_report() on_report() var/directive = "Nanotrasen Directive [pick(GLOB.phonetic_alphabet)] \Roman[rand(1,50)]" - GLOB.priority_announcement.Announce("Поступила приоритетная директива Нанотрейзен. Отправлены подробности проекта «[name]».", "Приоритетное оповещение.", 'sound/AI/commandreport.ogg') + GLOB.priority_announcement.Announce("Поступила приоритетная директива НаноТрейзен. Отправлены подробности проекта «[name]».", "Приоритетное оповещение.", 'sound/AI/commandreport.ogg') print_command_report("
    " + "

    [directive]


    " + get_report(), "[directive]", FALSE, src) /datum/station_goal/proc/on_report() diff --git a/code/modules/surgery/encased.dm b/code/modules/surgery/encased.dm index 77fd9e7a5f68..a6a154580531 100644 --- a/code/modules/surgery/encased.dm +++ b/code/modules/surgery/encased.dm @@ -10,13 +10,17 @@ name = "saw bone" begin_sound = list( TOOL_SAW = 'sound/surgery/saw1.ogg', + /obj/item/primitive_saw = 'sound/surgery/scalpel1.ogg', + /obj/item/circular_saw_blade = 'sound/surgery/scalpel1.ogg', TOOL_WIRECUTTER = 'sound/surgery/scalpel1.ogg', /obj/item/hatchet = 'sound/surgery/scalpel1.ogg', ) end_sound = 'sound/surgery/amputation.ogg' allowed_tools = list( TOOL_SAW = 100, + /obj/item/primitive_saw = 100, /obj/item/hatchet = 90, + /obj/item/circular_saw_blade = 80, TOOL_WIRECUTTER = 70 ) diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index d639b9451114..5e8c2011d1e6 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -17,7 +17,7 @@ /obj/item/shard = 60, /obj/item/scissors = 12, /obj/item/twohanded/chainsaw = 1, - /obj/item/claymore = 6, + /obj/item/melee/claymore = 6, /obj/item/melee/energy = 6, /obj/item/pen/edagger = 6, ) @@ -261,12 +261,16 @@ begin_sound = list( TOOL_SAW = 'sound/surgery/saw1.ogg', /obj/item/hatchet = 'sound/surgery/scalpel1.ogg', + /obj/item/primitive_saw = 'sound/surgery/scalpel1.ogg', + /obj/item/circular_saw_blade = 'sound/surgery/scalpel1.ogg', /obj/item/melee/arm_blade = 'sound/surgery/scalpel1.ogg', ) end_sound = 'sound/surgery/amputation.ogg' allowed_tools = list( TOOL_SAW = 100, + /obj/item/primitive_saw = 100, /obj/item/hatchet = 90, + /obj/item/circular_saw_blade = 80, /obj/item/melee/arm_blade = 75 ) diff --git a/code/modules/surgery/limb_reattach.dm b/code/modules/surgery/limb_reattach.dm index 847239069157..311be85a5460 100644 --- a/code/modules/surgery/limb_reattach.dm +++ b/code/modules/surgery/limb_reattach.dm @@ -322,6 +322,7 @@ ) return ..() + /datum/surgery_step/limb/mechanize/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/robot_parts/L = tool user.visible_message( @@ -334,14 +335,18 @@ for(var/part_name in L.part) if(!isnull(target.get_organ(part_name))) continue + var/list/organ_data = target.dna.species.has_limbs[part_name] if(!organ_data) continue + var/new_limb_type = organ_data["path"] - var/obj/item/organ/external/new_limb = new new_limb_type(target) + var/obj/item/organ/external/new_limb = new new_limb_type(target, ORGAN_MANIPULATION_DEFAULT) new_limb.robotize(company = L.model_info) + if(L.sabotaged) - new_limb.sabotaged = 1 + new_limb.sabotaged = TRUE + target.update_body() target.updatehealth() target.UpdateDamageIcon() @@ -350,6 +355,7 @@ return SURGERY_STEP_CONTINUE + /datum/surgery_step/limb/mechanize/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message( span_alert("[user]'s hand slips, damaging [target]'s flesh!"), diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index ae6d740baef1..58e42b020498 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -208,12 +208,6 @@ /obj/item/organ/internal/cyberimp/arm/gun/laser/l parent_organ_zone = BODY_ZONE_L_ARM -/obj/item/organ/internal/cyberimp/arm/gun/laser/Initialize(mapload) - . = ..() - var/obj/item/organ/internal/cyberimp/arm/gun/laser/laserphasergun = locate(/obj/item/gun/energy/laser/mounted) in contents - laserphasergun.icon = icon //No invisible laser guns kthx - laserphasergun.icon_state = icon_state - /obj/item/organ/internal/cyberimp/arm/gun/taser name = "arm-mounted taser implant" desc = "A variant of the arm cannon implant that fires electrodes and disabler shots. The cannon emerges from the subject's arm and remains inside when not in use." diff --git a/code/modules/surgery/organs/augments_eyes.dm b/code/modules/surgery/organs/augments_eyes.dm index c23dcee60b4c..8f7ce1da9f5d 100644 --- a/code/modules/surgery/organs/augments_eyes.dm +++ b/code/modules/surgery/organs/augments_eyes.dm @@ -42,11 +42,18 @@ /obj/item/organ/internal/cyberimp/eyes/emp_act(severity) if(!owner || emp_proof) return + if(severity > 1) if(prob(10 * severity)) return + to_chat(owner, span_warning("Static obfuscates your vision!")) - owner.flash_eyes(3, visual = TRUE) + + if(HAS_TRAIT(owner, TRAIT_ADVANCED_CYBERIMPLANTS)) + owner.EyeBlurry(1.5 SECONDS) + else + owner.flash_eyes(3, visual = TRUE) + /obj/item/organ/internal/cyberimp/eyes/meson name = "Meson scanner implant" diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index 2bc4b98d70ae..15e99e388d59 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -8,6 +8,7 @@ pickup_sound = 'sound/items/handling/component_pickup.ogg' drop_sound = 'sound/items/handling/component_drop.ogg' + /obj/item/organ/internal/cyberimp/New(var/mob/M = null) . = ..() if(implant_overlay) @@ -15,9 +16,15 @@ overlay.color = implant_color overlays |= overlay + /obj/item/organ/internal/cyberimp/emp_act() return // These shouldn't be hurt by EMPs in the standard way + +/obj/item/organ/internal/cyberimp/can_insert(mob/living/user, mob/living/carbon/target, fail_message = "Данное устройство не предусмотрено для существ с подобной анатомией.") + . = ..() + + //[[[[BRAIN]]]] /obj/item/organ/internal/cyberimp/brain @@ -27,6 +34,7 @@ implant_overlay = "brain_implant_overlay" parent_organ_zone = BODY_ZONE_HEAD + /obj/item/organ/internal/cyberimp/brain/emp_act(severity) if(!owner || emp_proof) return @@ -49,6 +57,7 @@ origin_tech = "materials=4;programming=5;biotech=4" actions_types = list(/datum/action/item_action/organ_action/toggle) + /obj/item/organ/internal/cyberimp/brain/anti_drop/ui_action_click(mob/user, datum/action/action, leftclick) active = !active if(active) @@ -144,6 +153,7 @@ ui_action_click() return ..() + /obj/item/organ/internal/cyberimp/brain/anti_stun name = "CNS Rebooter implant" desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned. Incompatible with the Neural Jumpstarter." @@ -151,14 +161,17 @@ slot = INTERNAL_ORGAN_BRAIN_ANTISTUN origin_tech = "materials=5;programming=4;biotech=5" + /obj/item/organ/internal/cyberimp/brain/anti_stun/hardened name = "Hardened CNS Rebooter implant" emp_proof = TRUE + /obj/item/organ/internal/cyberimp/brain/anti_stun/hardened/Initialize(mapload) . = ..() desc += " The implant has been hardened. It is invulnerable to EMPs." + /obj/item/organ/internal/cyberimp/brain/anti_stun/on_life() ..() if(crit_fail) @@ -166,6 +179,7 @@ if(owner.getStaminaLoss() > 60) owner.adjustStaminaLoss(-9) + /obj/item/organ/internal/cyberimp/brain/anti_stun/emp_act(severity) ..() if(crit_fail || emp_proof) @@ -173,15 +187,18 @@ crit_fail = TRUE addtimer(CALLBACK(src, PROC_REF(reboot)), 90 / severity) + /obj/item/organ/internal/cyberimp/brain/anti_stun/proc/reboot() crit_fail = FALSE + /obj/item/organ/internal/cyberimp/brain/anti_stun/hardened name = "Hardened CNS Rebooter implant" desc = "A military-grade version of the standard implant, for NT's more elite forces." origin_tech = "materials=6;programming=5;biotech=5" emp_proof = TRUE + /obj/item/organ/internal/cyberimp/brain/anti_sleep name = "Neural Jumpstarter implant" desc = "This implant will automatically attempt to jolt you awake when it detects you have fallen unconscious. Has a short cooldown, incompatible with the CNS Rebooter." @@ -190,6 +207,7 @@ origin_tech = "materials=5;programming=4;biotech=5" var/cooldown = FALSE + /obj/item/organ/internal/cyberimp/brain/anti_sleep/on_life() ..() if(crit_fail) @@ -201,10 +219,12 @@ cooldown = TRUE addtimer(CALLBACK(src, PROC_REF(sleepy_timer_end)), 50) + /obj/item/organ/internal/cyberimp/brain/anti_sleep/proc/sleepy_timer_end() cooldown = FALSE to_chat(owner, span_notice("You hear a small beep in your head as your Neural Jumpstarter finishes recharging.")) + /obj/item/organ/internal/cyberimp/brain/anti_sleep/emp_act(severity) . = ..() if(crit_fail || emp_proof) @@ -214,22 +234,26 @@ cooldown = TRUE addtimer(CALLBACK(src, PROC_REF(reboot)), 90 / severity) + /obj/item/organ/internal/cyberimp/brain/anti_sleep/proc/reboot() crit_fail = FALSE cooldown = FALSE + /obj/item/organ/internal/cyberimp/brain/anti_sleep/hardened name = "Hardened Neural Jumpstarter implant" desc = "A military-grade version of the standard implant, for NT's more elite forces." origin_tech = "materials=6;programming=5;biotech=5" emp_proof = TRUE + /obj/item/organ/internal/cyberimp/brain/anti_sleep/hardened/compatible name = "Hardened Neural Jumpstarter implant" desc = "A military-grade version of the standard implant, for NT's more elite forces. This one is compatible with the CNS Rebooter implant." slot = INTERNAL_ORGAN_BRAIN_ANTISLEEP emp_proof = TRUE + /obj/item/organ/internal/cyberimp/brain/clown_voice name = "Comical implant" desc = "Uh oh." @@ -237,42 +261,12 @@ slot = INTERNAL_ORGAN_BRAIN_CLOWNVOICE origin_tech = "materials=2;biotech=2" -/obj/item/organ/internal/cyberimp/brain/speech_translator //actual translating done in human/handle_speech_problems - name = "Speech translator implant" - desc = "While known as a translator, this implant actually generates speech based on the user's thoughts when activated, completely bypassing the need to speak." - implant_color = "#C0C0C0" - slot = INTERNAL_ORGAN_BRAIN_SPEECHTRANSLATOR - w_class = WEIGHT_CLASS_TINY - origin_tech = "materials=4;biotech=6" - actions_types = list(/datum/action/item_action/organ_action/toggle) - var/active = TRUE - var/speech_span = "" - var/speech_verb = "states" - -/obj/item/organ/internal/cyberimp/brain/speech_translator/clown - name = "Comical speech translator implant" - implant_color = "#DEDE00" - speech_span = "sans" - -/obj/item/organ/internal/cyberimp/brain/speech_translator/emp_act(severity) - if(emp_proof) - return - if(owner && active) - to_chat(owner, span_notice("Your translator's safeties trigger, it is now turned off.")) - active = FALSE - -/obj/item/organ/internal/cyberimp/brain/speech_translator/ui_action_click(mob/user, datum/action/action, leftclick) - if(owner && !active) - to_chat(owner, span_notice("You turn on your translator implant.")) - active = TRUE - else if(owner && active) - to_chat(owner, span_notice("You turn off your translator implant.")) - active = FALSE //[[[[MOUTH]]]] /obj/item/organ/internal/cyberimp/mouth parent_organ_zone = BODY_ZONE_PRECISE_MOUTH + /obj/item/organ/internal/cyberimp/mouth/breathing_tube name = "breathing tube implant" desc = "This simple implant adds an internals connector to your back, allowing you to use internals without a mask and protecting you from being choked." @@ -281,6 +275,7 @@ w_class = WEIGHT_CLASS_TINY origin_tech = "materials=2;biotech=3" + /obj/item/organ/internal/cyberimp/mouth/breathing_tube/emp_act(severity) if(emp_proof) return @@ -288,6 +283,7 @@ to_chat(owner, span_warning("Your breathing tube suddenly closes!")) owner.AdjustLoseBreath(4 SECONDS) + //[[[[CHEST]]]] /obj/item/organ/internal/cyberimp/chest name = "cybernetic torso implant" @@ -296,6 +292,7 @@ implant_overlay = "chest_implant_overlay" parent_organ_zone = BODY_ZONE_CHEST + /obj/item/organ/internal/cyberimp/chest/nutriment name = "Nutriment pump implant" desc = "This implant will synthesize a small amount of nutriment and pumps it directly into your bloodstream when you are starving." @@ -325,6 +322,7 @@ owner.reagents.add_reagent("????",poison_amount / severity) //food poisoning to_chat(owner, span_warning("You feel like your insides are burning.")) + /obj/item/organ/internal/cyberimp/chest/nutriment/plus name = "Nutriment pump implant PLUS" desc = "This implant will synthesize a small amount of nutriment and pumps it directly into your bloodstream when you are hungry." @@ -334,6 +332,23 @@ poison_amount = 10 origin_tech = "materials=4;powerstorage=3;biotech=3" + +/obj/item/organ/internal/cyberimp/chest/nutriment/plus/insert(mob/living/carbon/human/target, special = ORGAN_MANIPULATION_DEFAULT) + if(HAS_TRAIT(target, TRAIT_ADVANCED_CYBERIMPLANTS)) + hunger_modificator = 0.2 + ADD_TRAIT(target, TRAIT_CYBERIMP_IMPROVED, UNIQUE_TRAIT_SOURCE(src)) + + . = ..() + + +/obj/item/organ/internal/cyberimp/chest/nutriment/plus/remove(mob/living/carbon/human/target, special = ORGAN_MANIPULATION_DEFAULT) + if(HAS_TRAIT_FROM(target, TRAIT_CYBERIMP_IMPROVED, UNIQUE_TRAIT_SOURCE(src))) + hunger_modificator = initial(hunger_modificator) + REMOVE_TRAIT(target, TRAIT_CYBERIMP_IMPROVED, UNIQUE_TRAIT_SOURCE(src)) + + . = ..() + + /obj/item/organ/internal/cyberimp/chest/nutriment_old name = "Nutriment pump implant" desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are starving." @@ -345,6 +360,7 @@ slot = INTERNAL_ORGAN_STOMACH origin_tech = "materials=2;powerstorage=2;biotech=2" + /obj/item/organ/internal/cyberimp/chest/nutriment_old/on_life() if(!owner) return @@ -362,15 +378,18 @@ owner.adjust_nutrition(50) addtimer(CALLBACK(src, PROC_REF(synth_cool)), 50) + /obj/item/organ/internal/cyberimp/chest/nutriment_old/proc/synth_cool() synthesizing = FALSE + /obj/item/organ/internal/cyberimp/chest/nutriment_old/emp_act(severity) if(!owner || emp_proof) return owner.reagents.add_reagent("????",poison_amount / severity) //food poisoning to_chat(owner, span_warning("You feel like your insides are burning.")) + /obj/item/organ/internal/cyberimp/chest/nutriment_old/plus name = "Nutriment pump implant PLUS" desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are hungry." @@ -380,6 +399,10 @@ poison_amount = 10 origin_tech = "materials=4;powerstorage=3;biotech=3" +/obj/item/organ/internal/cyberimp/chest/nutriment_old/plus/hardened + emp_proof = TRUE + + /obj/item/organ/internal/cyberimp/chest/reviver name = "Reviver implant" desc = "This implant will attempt to revive you if you lose consciousness. For the faint of heart!" @@ -391,14 +414,17 @@ var/reviving = FALSE var/cooldown = 0 + /obj/item/organ/internal/cyberimp/chest/reviver/hardened name = "Hardened reviver implant" emp_proof = TRUE + /obj/item/organ/internal/cyberimp/chest/reviver/hardened/Initialize(mapload) . = ..() desc += " The implant has been hardened. It is invulnerable to EMPs." + /obj/item/organ/internal/cyberimp/chest/reviver/on_life() if(cooldown > world.time || owner.suiciding) // don't heal while you're in cooldown! return @@ -448,6 +474,7 @@ H.set_heartattack(TRUE) addtimer(CALLBACK(src, PROC_REF(undo_heart_attack)), 600 / severity) + /obj/item/organ/internal/cyberimp/chest/reviver/proc/undo_heart_attack() var/mob/living/carbon/human/H = owner if(!istype(H)) @@ -456,6 +483,7 @@ if(H.stat == CONSCIOUS) to_chat(H, span_notice("You feel your heart beating again!")) + //BOX O' IMPLANTS /obj/item/storage/box/cyber_implants diff --git a/code/modules/surgery/organs/augments_tail.dm b/code/modules/surgery/organs/augments_tail.dm index 02784193c9ea..4131f2be402d 100644 --- a/code/modules/surgery/organs/augments_tail.dm +++ b/code/modules/surgery/organs/augments_tail.dm @@ -16,7 +16,7 @@ name = "tail razorblade implant" desc = "Razor sharp blade designed to be hidden inside the tail. Traditional design of House Eshie'Ssharahss, sold at every corner of the Empire." var/datum/action/innate/tail_cut/implant_ability = new - + var/biological = FALSE // Used in examine var/activated = FALSE var/slash_strength = 35 // Implant damage var/stamina_damage = 0 // Stamina damage to others @@ -120,6 +120,29 @@ else icon_state = "[initial(icon_state)]" +//organic buff +/obj/item/organ/internal/cyberimp/tail/blade/organic_upgrade + name = "tail tumour" + desc = "Небольшая странноватая опухоль, находящаяся в хвосте. На удивление, не делает ничего страшного, но значительно увеличивает мощность удара хвостом." + ru_names = list( + NOMINATIVE = "хвостовая опухоль", + GENITIVE = "хвостовой опухоли", + DATIVE = "хвостовой опухоли", + ACCUSATIVE = "хвостовую опухоль", + INSTRUMENTAL = "хвостовой опухолью", + PREPOSITIONAL = "хвостовом сгустке" + ) + icon_state = "roro core" + slash_strength = 0 + stamina_damage = 24 + activated = TRUE + actions_types = null + emp_proof = TRUE + slash_sound = 'sound/weapons/slash.ogg' + biological = TRUE + +/obj/item/organ/internal/cyberimp/tail/blade/organic_upgrade/update_icon_state() + return /datum/action/innate/tail_cut name = "Взмах хвостом" diff --git a/code/modules/surgery/organs/autoimplanter.dm b/code/modules/surgery/organs/autoimplanter.dm index 7c3054919185..dca5533d056f 100644 --- a/code/modules/surgery/organs/autoimplanter.dm +++ b/code/modules/surgery/organs/autoimplanter.dm @@ -1,6 +1,16 @@ /obj/item/autoimplanter name = "autoimplanter" - desc = "A device that automatically injects a cyber-implant into the user without the hassle of extensive surgery. It has a slot to insert implants and a screwdriver slot for removing accidentally added implants." + desc = "A device that automatically injects a cyber-implant into the user without the hassle of extensive surgery. \ + It has a slot to insert implants and a screwdriver slot for removing accidentally added implants." + ru_names = list( + NOMINATIVE = "автоимплантер", + GENITIVE = "автоимплантера", + DATIVE = "автоимплантеру", + ACCUSATIVE = "автоимплантер", + INSTRUMENTAL = "автоимплантером", + PREPOSITIONAL = "автоимплантере" + ) + gender = MALE icon = 'icons/obj/device.dmi' icon_state = "syndi-autoimplanter" item_state = "walkietalkie"//left as this so as to intentionally not have inhands @@ -8,6 +18,7 @@ usesound = 'sound/weapons/circsawhit.ogg' var/obj/item/organ/internal/cyberimp/storedorgan + /obj/item/autoimplanter/old icon_state = "autoimplanter" @@ -22,15 +33,19 @@ /obj/item/autoimplanter/proc/autoimplant(mob/living/carbon/human/user) if(!ishuman(user)) return FALSE + if(!storedorgan) to_chat(user, span_warning("Киберимплант не обнаружен.")) return FALSE + if(!user.bodyparts_by_name[check_zone(storedorgan.parent_organ_zone)]) to_chat(user, span_warning("Отсутствует требуемая часть тела!")) return FALSE - if(HAS_TRAIT(user, TRAIT_NO_CYBERIMPLANTS)) - to_chat(user, span_warning("Ваш вид неспособен принять этот киберимплант!")) + + if(!storedorgan.can_insert(target = user) || HAS_TRAIT(user, TRAIT_NO_CYBERIMPLANTS)) //make it silent + to_chat(user, span_warning("Ваш вид не подходит для установки этого киберимпланта!")) return FALSE + storedorgan.insert(user)//insert stored organ into the user user.visible_message( span_notice("[user] активиру[pluralize_ru(user.gender,"ет","ют")] автоимплантер и вы слышите недолгий механический шум."), @@ -38,32 +53,39 @@ ) playsound(get_turf(user), usesound, 50, TRUE) storedorgan = null + return TRUE /obj/item/autoimplanter/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/organ/internal/cyberimp)) - add_fingerprint(user) - if(storedorgan) - to_chat(user, span_warning("В устройстве уже установлен другой киберимплант.")) - return ATTACK_CHAIN_PROCEED - if(!user.drop_transfer_item_to_loc(I, src)) - return ..() - storedorgan = I - to_chat(user, span_notice("Вы установили [I.name] в автоимплантер.")) - return ATTACK_CHAIN_BLOCKED_ALL + if(!istype(I, /obj/item/organ/internal/cyberimp)) + return ..() + + add_fingerprint(user) + + if(storedorgan) + balloon_alert(user, "слот для киберимпланта занят!") + return ATTACK_CHAIN_PROCEED - return ..() + if(!user.drop_transfer_item_to_loc(I, src)) + return ..() + + storedorgan = I + balloon_alert(user, "киберимплант установлен") + return ATTACK_CHAIN_BLOCKED_ALL /obj/item/autoimplanter/screwdriver_act(mob/living/user, obj/item/I) . = TRUE + if(!storedorgan) add_fingerprint(user) to_chat(user, span_notice("Устройство не содержит киберимплантов.")) return . + if(!I.use_tool(src, user, volume = I.tool_volume)) return . + storedorgan.forceMove(drop_location()) storedorgan.add_fingerprint(user) storedorgan = null @@ -78,6 +100,7 @@ . = ..() if(!.) return . + visible_message(span_warning("Автоимплантер зловеще пищит и через мгновение вспыхивает, оставляя только пепел.")) new /obj/effect/decal/cleanable/ash(get_turf(src)) user.temporarily_remove_item_from_inventory(src, force = TRUE) @@ -87,8 +110,10 @@ /obj/item/autoimplanter/oneuse/screwdriver_act(mob/living/user, obj/item/I) var/self_destruct = !isnull(storedorgan) . = ..() + if(!self_destruct) return . + visible_message(span_warning("Автоимплантер зловеще пищит и через мгновение вспыхивает, оставляя только пепел.")) new /obj/effect/decal/cleanable/ash(get_turf(src)) user.temporarily_remove_item_from_inventory(src, force = TRUE) @@ -124,9 +149,11 @@ . = ..() if(!.) return . + uses-- if(uses > 0) return . + visible_message(span_warning("Автоимплантер зловеще пищит и через мгновение вспыхивает, оставляя только пепел.")) new /obj/effect/decal/cleanable/ash(get_turf(src)) user.temporarily_remove_item_from_inventory(src, force = TRUE) @@ -135,5 +162,6 @@ /obj/item/autoimplanter/traitor/examine(mob/user) . = ..() + if(uses) . += span_notice("Осталось использований: [uses].") diff --git a/code/modules/surgery/organs/blood.dm b/code/modules/surgery/organs/blood.dm index bc7b2659c914..e4b3e75dc3a9 100644 --- a/code/modules/surgery/organs/blood.dm +++ b/code/modules/surgery/organs/blood.dm @@ -24,7 +24,7 @@ if(bodytemperature >= TCRYO && !HAS_TRAIT(src, TRAIT_NO_CLONE)) //cryosleep or husked people do not pump the blood. if(!HAS_TRAIT(src, TRAIT_NO_BLOOD_RESTORE) && blood_volume < BLOOD_VOLUME_NORMAL) - blood_volume += 0.1 // regenerate blood VERY slowly + AdjustBlood(0.1) // regenerate blood VERY slowly //Effects of bloodloss @@ -84,12 +84,17 @@ /mob/living/carbon/proc/bleed(amt) if(!blood_volume) return FALSE + . = TRUE - blood_volume = max(blood_volume - amt, 0) + + AdjustBlood(-amt) + if(!isturf(loc)) //Blood loss still happens in locker, floor stays clean return . + if(amt >= 10) add_splatter_floor(loc) + else add_splatter_floor(loc, small_drip = TRUE) @@ -110,12 +115,16 @@ /mob/living/carbon/proc/bleed_internal(amt) if(!blood_volume) return FALSE + . = TRUE - blood_volume = max(blood_volume - amt, 0) + + AdjustBlood(-amt) + if(prob(10 * amt)) // +5% chance per internal bleeding site that we'll cough up blood on a given tick. - custom_emote(EMOTE_AUDIBLE, "кашля%(ет,ют)% кровью!") + custom_emote(EMOTE_AUDIBLE, "кашля%(ет, ют)% кровью!") add_splatter_floor(loc, small_drip = TRUE) return . + // +2.5% chance per internal bleeding site that we'll cough up blood on a given tick. // Must be bleeding internally in more than one place to have a chance at this. if(amt >= 1 && prob(5 * amt)) @@ -134,12 +143,41 @@ return . blood_reagent.reaction_turf(loc, amt * EXOTIC_BLEED_MULTIPLIER, dna.species.blood_color) +/mob/living/proc/AdjustBlood(amount = 0) + if(HAS_TRAIT(src, TRAIT_NO_BLOOD)) + return FALSE + + if(SEND_SIGNAL(src, COMSIG_LIVING_BLOOD_ADJUST, amount) & COMPONENT_PREVENT_BLOODLOSS) + return FALSE + + blood_volume = max(round(blood_volume + amount, DAMAGE_PRECISION), 0) + SEND_SIGNAL(src, COMSIG_LIVING_BLOOD_ADJUSTED, amount) + + return TRUE + +/mob/living/carbon/human/AdjustBlood(amount = 0, bleed_mode_affect = FALSE) + if(bleed_mode_affect) + amount *= physiology.bleed_mod + + return ..(amount) + +/mob/living/proc/setBlood(amount) + if(HAS_TRAIT(src, TRAIT_NO_BLOOD)) + return FALSE + + if(SEND_SIGNAL(src, COMSIG_LIVING_EARLY_SET_BLOOD, amount) & COMPONENT_PREVENT_BLOODLOSS) + return FALSE + + blood_volume = max(round(amount, DAMAGE_PRECISION), 0) + SEND_SIGNAL(src, COMSIG_LIVING_SET_BLOOD, amount) + + return TRUE /mob/living/proc/restore_blood() - blood_volume = initial(blood_volume) + setBlood(initial(blood_volume)) /mob/living/carbon/human/restore_blood() - blood_volume = BLOOD_VOLUME_NORMAL + setBlood(BLOOD_VOLUME_NORMAL) bleed_rate = 0 /**************************************************** @@ -160,7 +198,7 @@ if(!blood_id) return 0 - blood_volume -= amount + AdjustBlood(-amount) var/list/blood_data = get_blood_data(blood_id) @@ -177,7 +215,7 @@ C.reagents.add_reagent("toxin", amount * 0.5) return 1 - C.blood_volume = min(C.blood_volume + round(amount, 0.1), BLOOD_VOLUME_NORMAL) + C.setBlood(min(C.blood_volume + round(amount, 0.1), BLOOD_VOLUME_NORMAL)) return 1 AM.reagents.add_reagent(blood_id, amount, blood_data, bodytemperature) diff --git a/code/modules/surgery/organs/ears.dm b/code/modules/surgery/organs/ears.dm index 353c02d666f0..57d5fb4da13a 100644 --- a/code/modules/surgery/organs/ears.dm +++ b/code/modules/surgery/organs/ears.dm @@ -1,7 +1,16 @@ /obj/item/organ/internal/ears name = "ears" - icon_state = "ears" + desc = "Парный орган, отвечающий за аудиальное восприятие окружающей среды и получение информации о положении гуманоида в пространстве. Эти принадлежали человеку." + ru_names = list( + NOMINATIVE = "уши человека", + GENITIVE = "ушей человека", + DATIVE = "ушам человека", + ACCUSATIVE = "уши человека", + INSTRUMENTAL = "ушами человека", + PREPOSITIONAL = "ушах человека" + ) gender = PLURAL + icon_state = "ears" parent_organ_zone = BODY_ZONE_HEAD slot = INTERNAL_ORGAN_EARS @@ -44,8 +53,16 @@ /obj/item/organ/internal/ears/cybernetic name = "cybernetic ears" - icon_state = "ears-c" - desc = "a basic cybernetic designed to mimic the operation of ears." + desc = "Электронное устройство, имитирующее работу органических ушей. Функционально не имеет никаких отличий от органического аналога, кроме производственных затрат." + ru_names = list( + NOMINATIVE = "кибернетические уши", + GENITIVE = "кибернетических ушей", + DATIVE = "кибернетическим ушам", + ACCUSATIVE = "кибернетические уши", + INSTRUMENTAL = "кибернетическими ушами", + PREPOSITIONAL = "кибернетических ушах" + ) + icon_state = "eyes-c" origin_tech = "biotech=4" status = ORGAN_ROBOT pickup_sound = 'sound/items/handling/component_pickup.ogg' @@ -54,9 +71,17 @@ /obj/item/organ/internal/ears/cybernetic/emp_act(severity) if(emp_proof) return + ..() internal_receive_damage(30) + if(!iscarbon(owner)) return + var/mob/living/carbon/C = owner - C.AdjustDeaf(120 SECONDS) + var/losstime = 120 SECONDS + + if(HAS_TRAIT(C, TRAIT_ADVANCED_CYBERIMPLANTS)) + losstime /= 3 + + C.AdjustDeaf(losstime) diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index df6761333d90..b30744ae4649 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -1,7 +1,17 @@ + /obj/item/organ/internal/eyes name = "eyeballs" - icon_state = "eyes" + desc = "Парный орган, отвечающий за зрение - восприятие света и его трансформацию в видимое изображение. Эти принадлежали человеку." + ru_names = list( + NOMINATIVE = "глаза человека", + GENITIVE = "глаз человека", + DATIVE = "глазам человека", + ACCUSATIVE = "глаза человека", + INSTRUMENTAL = "глазами человека", + PREPOSITIONAL = "глазах человека" + ) gender = PLURAL + icon_state = "eyes" parent_organ_zone = BODY_ZONE_HEAD slot = INTERNAL_ORGAN_EYES var/eye_colour = "#000000" // Should never be null @@ -16,6 +26,8 @@ var/see_in_dark = 2 var/see_invisible = SEE_INVISIBLE_LIVING var/lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE + /// Modifies examine time for living mobs. Uses in /mob/living/run_examinate(atom/target) + var/examine_mod = 1 /obj/item/organ/internal/eyes/proc/update_colour() dna.write_eyes_attributes(src) @@ -89,8 +101,16 @@ /obj/item/organ/internal/eyes/cybernetic name = "cybernetic eyes" + desc = "Электронное устройство, имитирующее работу органических глаз. Функционально не имеет никаких отличий от органического аналога, кроме производственных затрат." + ru_names = list( + NOMINATIVE = "кибернетические глаза", + GENITIVE = "кибернетических глаз", + DATIVE = "кибернетическим глазам", + ACCUSATIVE = "кибернетические глаза", + INSTRUMENTAL = "кибернетическими глазами", + PREPOSITIONAL = "кибернетических глазах" + ) icon_state = "eyes-c" - desc = "An electronic device designed to mimic the functions of a pair of human eyes. It has no benefits over organic eyes, but is easy to produce." origin_tech = "biotech=4" status = ORGAN_ROBOT pickup_sound = 'sound/items/handling/component_pickup.ogg' diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index 999b0d2e5af4..45d42f804fcf 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -1,5 +1,15 @@ /obj/item/organ/internal/heart name = "heart" + desc = "Орган, качающий кровь или её заменяющую субстанцию по организму гуманоида. Это принадлежало человеку." + ru_names = list( + NOMINATIVE = "сердце человека", + GENITIVE = "сердца человека", + DATIVE = "сердцу человека", + ACCUSATIVE = "сердце человека", + INSTRUMENTAL = "сердцем человека", + PREPOSITIONAL = "сердце человека" + ) + gender = NEUTER icon_state = "heart-on" parent_organ_zone = BODY_ZONE_CHEST slot = INTERNAL_ORGAN_HEART @@ -7,62 +17,84 @@ var/beating = TRUE dead_icon = "heart-off" var/icon_base = "heart" + var/item_base = "heart" + /obj/item/organ/internal/heart/update_icon_state() if(beating) icon_state = "[icon_base]-on" + item_state = "[item_base]-on" else icon_state = "[icon_base]-off" + item_state = "[item_base]-off" + /obj/item/organ/internal/heart/remove(mob/living/carbon/human/target, special = ORGAN_MANIPULATION_DEFAULT) if(!special) addtimer(CALLBACK(src, PROC_REF(stop_if_unowned)), 12 SECONDS) . = ..() + /obj/item/organ/internal/heart/emp_act(intensity) if(!is_robotic() || emp_proof) return Stop() + /obj/item/organ/internal/heart/necrotize(silent = FALSE) if(..()) Stop() + /obj/item/organ/internal/heart/attack_self(mob/user) ..() if(is_dead()) - to_chat(user, span_warning("You can't restart a dead heart.")) + balloon_alert(user, "мёртвое сердце не запустить!") return if(!beating) Restart() addtimer(CALLBACK(src, PROC_REF(stop_if_unowned)), 80) + /obj/item/organ/internal/heart/safe_replace(mob/living/carbon/human/target) Restart() ..() + /obj/item/organ/internal/heart/proc/stop_if_unowned() if(!owner) Stop() + /obj/item/organ/internal/heart/proc/Stop() beating = FALSE update_icon() return TRUE + /obj/item/organ/internal/heart/proc/Restart() beating = TRUE update_icon() return TRUE + /obj/item/organ/internal/heart/prepare_eat() var/obj/S = ..() S.icon_state = dead_icon return S + /obj/item/organ/internal/heart/cursed name = "cursed heart" - desc = "it needs to be pumped..." + desc = "Странно выглядящее сердце. Судя по всему, ему требуется постоянная подкачка..." + ru_names = list( + NOMINATIVE = "проклятое сердце", + GENITIVE = "проклятого сердца", + DATIVE = "проклятому сердцу", + ACCUSATIVE = "проклятое сердце", + INSTRUMENTAL = "проклятое сердцем", + PREPOSITIONAL = "проклятое сердце" + ) icon_state = "cursedheart-off" icon_base = "cursedheart" origin_tech = "biotech=6" @@ -82,7 +114,7 @@ return ..() if(HAS_TRAIT(user, TRAIT_NO_BLOOD)) - to_chat(user, span_userdanger("The [name] is not compatible with your form!")) + balloon_alert(user, "несовместимо с вами!") return ATTACK_CHAIN_PROCEED if(!user.temporarily_remove_item_from_inventory(src)) @@ -99,19 +131,22 @@ var/mob/living/carbon/human/H = owner if(!HAS_TRAIT(H, TRAIT_NO_BLOOD)) H.blood_volume = max(H.blood_volume - blood_loss, 0) - to_chat(H, span_userdanger("You have to keep pumping your blood!")) + to_chat(H, span_userdanger("Ваш кровоток нуждается в подкачке!")) if(H.client) H.client.color = "red" //bloody screen so real else last_pump = world.time //lets be extra fair *sigh* + /obj/item/organ/internal/heart/cursed/insert(mob/living/carbon/M, special = ORGAN_MANIPULATION_DEFAULT) . = ..() if(owner) - to_chat(owner, span_userdanger("Your heart has been replaced with a cursed one, you have to pump this one manually otherwise you'll die!")) + to_chat(owner, span_userdanger("Ваше сердце было заменено на проклятое! Вам придётся качать его вручную, иначе вы умрёте!")) + /datum/action/item_action/organ_action/cursed_heart - name = "pump your blood" + name = "Подкачка крови" + //You are now brea- pumping blood manually /datum/action/item_action/organ_action/cursed_heart/Trigger(left_click = TRUE) @@ -120,12 +155,12 @@ var/obj/item/organ/internal/heart/cursed/cursed_heart = target if(world.time < (cursed_heart.last_pump + (cursed_heart.pump_delay - 10))) //no spam - owner.balloon_alert(owner, "слишком рано") + owner.balloon_alert(owner, "слишком рано!") return cursed_heart.last_pump = world.time playsound(owner,'sound/effects/singlebeat.ogg',40,1) - owner.balloon_alert(owner, "твоё сердце бьется") + owner.balloon_alert(owner, "ваше сердце бьётся") var/mob/living/carbon/human/H = owner if(istype(H) && !HAS_TRAIT(H, TRAIT_NO_BLOOD)) @@ -144,7 +179,15 @@ /obj/item/organ/internal/heart/cybernetic name = "cybernetic heart" - desc = "An electronic device designed to mimic the functions of an organic human heart. Offers no benefit over an organic heart other than being easy to make." + desc = "Электронное устройство, имитирующее работу органического сердца. Функционально не имеет никаких отличий от органического аналога, кроме производственных затрат." + ru_names = list( + NOMINATIVE = "кибернетическое сердце", + GENITIVE = "кибернетического сердца", + DATIVE = "кибернетическому сердцу", + ACCUSATIVE = "кибернетическое сердце", + INSTRUMENTAL = "кибернетическим сердцем", + PREPOSITIONAL = "кибернетическом сердце" + ) icon_state = "heart-c-on" icon_base = "heart-c" dead_icon = "heart-c-off" @@ -152,30 +195,56 @@ pickup_sound = 'sound/items/handling/component_pickup.ogg' drop_sound = 'sound/items/handling/component_drop.ogg' + /obj/item/organ/internal/heart/cybernetic/upgraded name = "upgraded cybernetic heart" - desc = "A more advanced version of a cybernetic heart. Grants the user additional stamina and heart stability, but the electronics are vulnerable to shock." + desc = "Продвинутая версия кибернетического сердца. Даёт пользователю дополнительную выносливость и стабильность работы, но при этом является очень уязвимым к ЭМИ." + ru_names = list( + NOMINATIVE = "улучшенное кибернетическое сердце", + GENITIVE = "улучшенного кибернетического сердца", + DATIVE = "улучшенному кибернетическому сердцу", + ACCUSATIVE = "улучшенное кибернетическое сердце", + INSTRUMENTAL = "улучшенным кибернетическим сердцем", + PREPOSITIONAL = "улучшенном кибернетическом сердце" + ) icon_state = "heart-c-u-on" icon_base = "heart-c-u" dead_icon = "heart-c-u-off" var/emagged = FALSE var/attempted_restart = FALSE + +/obj/item/organ/internal/heart/cybernetic/upgraded/insert(mob/living/carbon/target, special) + . = ..() + + if(HAS_TRAIT(target, TRAIT_ADVANCED_CYBERIMPLANTS)) + target.stam_regen_start_modifier *= 0.5 + ADD_TRAIT(target, TRAIT_CYBERIMP_IMPROVED, UNIQUE_TRAIT_SOURCE(src)) + + +/obj/item/organ/internal/heart/cybernetic/upgraded/remove(mob/living/carbon/human/target, special) + if(HAS_TRAIT_FROM(target, TRAIT_CYBERIMP_IMPROVED, UNIQUE_TRAIT_SOURCE(src))) + target.stam_regen_start_modifier /= 0.5 + REMOVE_TRAIT(target, TRAIT_CYBERIMP_IMPROVED, UNIQUE_TRAIT_SOURCE(src)) + + . = ..() + + /obj/item/organ/internal/heart/cybernetic/upgraded/on_life() if(!ishuman(owner)) return if(!is_dead() && !attempted_restart && !beating) - to_chat(owner, span_warning("Your [name] detects a cardiac event and attempts to return to its normal rhythm!")) + to_chat(owner, span_danger("Ваше [declent_ru(NOMINATIVE)] обнаруживает сердечный приступ и пытается вернуться к нормальному ритму!")) if(prob(20) && emagged) attempted_restart = TRUE Restart() - addtimer(CALLBACK(src, PROC_REF(message_to_owner), owner, span_warning("Your [name] returns to its normal rhythm!")), 30) + addtimer(CALLBACK(src, PROC_REF(message_to_owner), owner, span_warning("Ваше [declent_ru(NOMINATIVE)] возвращается к нормальному ритму.")), 30) addtimer(CALLBACK(src, PROC_REF(recharge)), 200) else if(prob(10)) attempted_restart = TRUE Restart() - addtimer(CALLBACK(src, PROC_REF(message_to_owner), owner, span_warning("Your [name] returns to its normal rhythm!")), 30) + addtimer(CALLBACK(src, PROC_REF(message_to_owner), owner, span_warning("Ваше [declent_ru(NOMINATIVE)] возвращается к нормальному ритму.")), 30) addtimer(CALLBACK(src, PROC_REF(recharge)), 300) else attempted_restart = TRUE @@ -183,21 +252,21 @@ addtimer(CALLBACK(src, PROC_REF(recharge)), 200) else addtimer(CALLBACK(src, PROC_REF(recharge)), 300) - addtimer(CALLBACK(src, PROC_REF(message_to_owner), owner, span_warning("Your [name] fails to return to its normal rhythm!")), 30) + addtimer(CALLBACK(src, PROC_REF(message_to_owner), owner, span_danger("Ваше [declent_ru(NOMINATIVE)] не смогло вернуться к нормальному ритму!")), 30) if(!is_dead() && !attempted_restart && owner.HasDisease(/datum/disease/critical/heart_failure)) - to_chat(owner, span_warning("Your [name] detects a cardiac event and attempts to return to its normal rhythm!")) + to_chat(owner, span_danger("Ваше [declent_ru(NOMINATIVE)] обнаруживает сердечный приступ и пытается вернуться к нормальному ритму!")) if(prob(40) && emagged) attempted_restart = TRUE for(var/datum/disease/critical/heart_failure/HF in owner.diseases) HF.cure() - addtimer(CALLBACK(src, PROC_REF(message_to_owner), owner, span_warning("Your [name] returns to its normal rhythm!")), 30) + addtimer(CALLBACK(src, PROC_REF(message_to_owner), owner, span_warning("Ваше [declent_ru(NOMINATIVE)] обнаруживает сердечный приступ и пытается вернуться к нормальному ритму!")), 30) addtimer(CALLBACK(src, PROC_REF(recharge)), 200) else if(prob(25)) attempted_restart = TRUE for(var/datum/disease/critical/heart_failure/HF in owner.diseases) HF.cure() - addtimer(CALLBACK(src, PROC_REF(message_to_owner), owner, span_warning("Your [name] returns to its normal rhythm!")), 30) + addtimer(CALLBACK(src, PROC_REF(message_to_owner), owner, span_warning("Ваше [declent_ru(NOMINATIVE)] обнаруживает сердечный приступ и пытается вернуться к нормальному ритму!")), 30) addtimer(CALLBACK(src, PROC_REF(recharge)), 200) else attempted_restart = TRUE @@ -205,7 +274,7 @@ addtimer(CALLBACK(src, PROC_REF(recharge)), 200) else addtimer(CALLBACK(src, PROC_REF(recharge)), 300) - addtimer(CALLBACK(src, PROC_REF(message_to_owner), owner, span_warning("Your [name] fails to return to its normal rhythm!")), 30) + addtimer(CALLBACK(src, PROC_REF(message_to_owner), owner, span_danger("Ваше [declent_ru(NOMINATIVE)] не смогло вернуться к нормальному ритму!")), 30) if(!is_dead()) var/boost = emagged ? 2 : 1 @@ -229,20 +298,25 @@ if(!emagged) add_attack_logs(user, src, "emagged") if(user) - to_chat(user, span_warning("You disable the safeties on [src]")) + balloon_alert(user, "протоколы безопасности взломаны") emagged = TRUE else add_attack_logs(user, src, "un-emagged") if(user) - to_chat(user, span_warning("You re-enable the safeties on [src]")) + balloon_alert(user, "протоколы безопасности восстановлены") emagged = FALSE /obj/item/organ/internal/heart/cybernetic/upgraded/emp_act(severity) ..() + if(emp_proof) return - necrotize() + + if(HAS_TRAIT(owner, TRAIT_ADVANCED_CYBERIMPLANTS)) + Stop() + else + necrotize() /obj/item/organ/internal/heart/cybernetic/upgraded/shock_organ(intensity) @@ -256,29 +330,29 @@ var/numLow = round(intensity / 20) if(emagged && !is_dead()) if(prob(numHigh)) - to_chat(owner, span_warning("Your [name] spasms violently!")) + to_chat(owner, span_warning("У вас сердечный спазм!")) owner.adjustBruteLoss(numHigh) if(prob(numHigh)) - to_chat(owner, span_warning("Your [name] shocks you painfully!")) + to_chat(owner, span_warning("Ваше [declent_ru(NOMINATIVE)] бьёт вас током!")) owner.adjustFireLoss(numHigh) if(prob(numMid)) - to_chat(owner, span_warning("Your [name] lurches awkwardly!")) + to_chat(owner, span_warning("Ваше [declent_ru(NOMINATIVE)] болезненно бьётся!")) var/datum/disease/critical/heart_failure/D = new D.Contract(owner) if(prob(numMid)) - to_chat(owner, span_danger("Your [name] stops beating!")) + to_chat(owner, span_danger("Ваше [declent_ru(NOMINATIVE)] перестаёт биться!")) Stop() if(prob(numLow)) - to_chat(owner, span_danger("Your [name] shuts down!")) + to_chat(owner, span_danger("Ваше [declent_ru(NOMINATIVE)] выключается!")) necrotize() else if(!emagged && !is_dead()) if(prob(numMid)) - to_chat(owner, span_warning("Your [name] spasms violently!")) + to_chat(owner, span_warning("У вас сердечный спазм!")) owner.adjustBruteLoss(numMid) if(prob(numMid)) - to_chat(owner, span_warning("Your [name] shocks you painfully!")) + to_chat(owner, span_warning("Ваше [declent_ru(NOMINATIVE)] бьёт вас током!")) owner.adjustFireLoss(numMid) if(prob(numLow)) - to_chat(owner, span_warning("Your [name] lurches awkwardly!")) + to_chat(owner, span_warning("Ваше [declent_ru(NOMINATIVE)] болезненно бьётся!")) var/datum/disease/critical/heart_failure/D = new D.Contract(owner) diff --git a/code/modules/surgery/organs/helpers.dm b/code/modules/surgery/organs/helpers.dm index 7b4dbfd13d77..572e45685d68 100644 --- a/code/modules/surgery/organs/helpers.dm +++ b/code/modules/surgery/organs/helpers.dm @@ -40,10 +40,6 @@ return internal_organs_slot[slot] -/proc/is_int_organ(atom/A) - return istype(A, /obj/item/organ/internal) - - /mob/proc/has_active_hand() return hand ? has_left_hand() : has_right_hand() diff --git a/code/modules/surgery/organs/kidneys.dm b/code/modules/surgery/organs/kidneys.dm index bea3b948a98d..a190c802af5a 100644 --- a/code/modules/surgery/organs/kidneys.dm +++ b/code/modules/surgery/organs/kidneys.dm @@ -1,5 +1,14 @@ /obj/item/organ/internal/kidneys name = "kidneys" + desc = "Парный орган, отвечающий за фильтрацию кровотока и выведение токсинов и отходов из организма. Эти принадлежали человеку." + ru_names = list( + NOMINATIVE = "почки человека", + GENITIVE = "почек человека", + DATIVE = "почкам человека", + ACCUSATIVE = "почки человека", + INSTRUMENTAL = "почками человека", + PREPOSITIONAL = "почках человека" + ) icon_state = "kidneys" gender = PLURAL parent_organ_zone = BODY_ZONE_PRECISE_GROIN @@ -20,8 +29,16 @@ /obj/item/organ/internal/kidneys/cybernetic name = "cybernetic kidneys" + desc = "Электронное устройство, имитирующее работу органических почек. Функционально не имеет никаких отличий от органического аналога, кроме производственных затрат." + ru_names = list( + NOMINATIVE = "кибернетические почки", + GENITIVE = "кибернетических почек", + DATIVE = "кибернетическим почкам", + ACCUSATIVE = "кибернетические почки", + INSTRUMENTAL = "кибернетическими почками", + PREPOSITIONAL = "кибернетических почках" + ) icon_state = "kidneys-c" - desc = "An electronic device designed to mimic the functions of human kidneys. It has no benefits over a pair of organic kidneys, but is easy to produce." origin_tech = "biotech=4" status = ORGAN_ROBOT pickup_sound = 'sound/items/handling/component_pickup.ogg' diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm index b8fc13be02dc..156ee5a4b06d 100644 --- a/code/modules/surgery/organs/liver.dm +++ b/code/modules/surgery/organs/liver.dm @@ -1,5 +1,15 @@ /obj/item/organ/internal/liver name = "liver" + desc = "Орган, выполняющий множество функций, таких как фильтрация кровотока от вредных веществ, синтез необходимых белков и ферментов и удаление токсинов из организма. Эта принадлежала человеку." + ru_names = list( + NOMINATIVE = "печень человека", + GENITIVE = "печени человека", + DATIVE = "печени человека", + ACCUSATIVE = "печень человека", + INSTRUMENTAL = "печенью человека", + PREPOSITIONAL = "печени человека" + ) + gender = FEMALE icon_state = "liver" parent_organ_zone = BODY_ZONE_PRECISE_GROIN slot = INTERNAL_ORGAN_LIVER @@ -8,7 +18,7 @@ /obj/item/organ/internal/liver/on_life() if(germ_level > INFECTION_LEVEL_ONE) if(prob(1)) - to_chat(owner, span_warning(" Your skin itches.")) + to_chat(owner, span_warning("Ваша кожа зудит.")) if(germ_level > INFECTION_LEVEL_TWO) if(prob(1)) owner.vomit() @@ -51,8 +61,16 @@ /obj/item/organ/internal/liver/cybernetic name = "cybernetic liver" + desc = "Электронное устройство, имитирующее работу органической печени. Функционально не имеет никаких отличий от органического аналога, кроме производственных затрат." + ru_names = list( + NOMINATIVE = "кибернетическая печень", + GENITIVE = "кибернетической печени", + DATIVE = "кибернетической печени", + ACCUSATIVE = "кибернетическую печень", + INSTRUMENTAL = "кибернетической печенью", + PREPOSITIONAL = "кибернетической печени" + ) icon_state = "liver-c" - desc = "An electronic device designed to mimic the functions of a human liver. It has no benefits over an organic liver, but is easy to produce." origin_tech = "biotech=4" status = ORGAN_ROBOT pickup_sound = 'sound/items/handling/component_pickup.ogg' diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index f348dd3cd8af..3a3a62ebfad6 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -1,9 +1,18 @@ /obj/item/organ/internal/lungs name = "lungs" + desc = "Парный орган, отвечающий за газообмен между внешней средой и кровотоком организма гуманоида. Эти принадлежали человеку." + ru_names = list( + NOMINATIVE = "лёгкие человека", + GENITIVE = "лёгких человека", + DATIVE = "лёгким человека", + ACCUSATIVE = "лёгкие человека", + INSTRUMENTAL = "лёгкими человека", + PREPOSITIONAL = "лёгких человека" + ) + gender = PLURAL icon_state = "lungs" parent_organ_zone = BODY_ZONE_CHEST slot = INTERNAL_ORGAN_LUNGS - gender = PLURAL w_class = WEIGHT_CLASS_NORMAL //Breath damage @@ -33,7 +42,7 @@ var/tox_breath_dam_max = MAX_TOXIC_GAS_DAMAGE var/tox_damage_type = TOX - var/cold_message = "your face freezing and an icicle forming" + var/cold_message = ", что ваши дыхательные пути замораживаются" var/cold_level_1_threshold = 260 var/cold_level_2_threshold = 200 var/cold_level_3_threshold = 120 @@ -42,7 +51,6 @@ var/cold_level_3_damage = COLD_GAS_DAMAGE_LEVEL_3 var/cold_damage_types = list(BURN = 1) - var/hot_message = "your face burning and a searing heat" var/heat_level_1_threshold = 360 var/heat_level_2_threshold = 400 var/heat_level_3_threshold = 1000 @@ -54,8 +62,13 @@ /obj/item/organ/internal/lungs/emp_act() if(!is_robotic() || emp_proof) return + if(owner) - owner.LoseBreath(40 SECONDS) + var/losstime = 40 SECONDS + if(HAS_TRAIT(owner, TRAIT_ADVANCED_CYBERIMPLANTS)) + losstime /= 2 + + owner.LoseBreath(losstime) /obj/item/organ/internal/lungs/insert(mob/living/carbon/target, special = ORGAN_MANIPULATION_DEFAULT) ..() @@ -76,7 +89,7 @@ if(is_bruised()) if(prob(2)) - owner.custom_emote(EMOTE_AUDIBLE, "откашлива%(ет,ют)% большое количество крови!") + owner.custom_emote(EMOTE_AUDIBLE, "отхаркива%(ет,ют)% кровь!") owner.bleed(1) if(prob(4)) owner.custom_emote(EMOTE_VISIBLE, "задыха%(ет,ют)%ся!") @@ -139,7 +152,7 @@ H.clear_alert(ALERT_NOT_ENOUGH_OXYGEN) //Exhale - breath.oxygen -= gas_breathed + breath.oxygen = max(breath.oxygen - gas_breathed, 0) breath.carbon_dioxide += gas_breathed gas_breathed = 0 @@ -281,7 +294,7 @@ H.apply_damage(TC * CM * cold_damage_types[D], D, spread_damage = TRUE, forced = TRUE) if(breath_temperature < cold_level_1_threshold) if(prob(20)) - to_chat(H, span_warning("You feel [cold_message] in your [name]!")) + to_chat(H, span_warning("Вы чувствуете[cold_message]!")) if(!HAS_TRAIT(H, TRAIT_RESIST_HEAT)) // HEAT DAMAGE var/HM = abs(H.dna.species.heatmod * H.physiology.heat_mod) @@ -297,87 +310,73 @@ H.apply_damage(TH * HM * heat_damage_types[D], D, spread_damage = TRUE, forced = TRUE) if(breath_temperature > heat_level_1_threshold) if(prob(20)) - to_chat(H, span_warning("You feel [hot_message] in your [name]!")) + to_chat(H, span_warning("Вы чувствуете, что ваши дыхательные пути пылают!")) /obj/item/organ/internal/lungs/prepare_eat() var/obj/S = ..() S.reagents.add_reagent("salbutamol", 5) return S -/obj/item/organ/internal/lungs/plasmaman - name = "plasma filter" - desc = "A spongy rib-shaped mass for filtering plasma from the air." - icon = 'icons/obj/species_organs/plasmaman.dmi' - icon_state = "lungs" - - safe_oxygen_min = 0 //We don't breath this - safe_toxins_min = 16 //We breathe THIS! - safe_toxins_max = 0 - -/obj/item/organ/internal/lungs/vox - name = "Vox lungs" - desc = "They're filled with dust....wow." - icon = 'icons/obj/species_organs/vox.dmi' - icon_state = "lungs" - - safe_oxygen_min = 0 //We don't breathe this - safe_oxygen_max = 0.05 //This is toxic to us - safe_nitro_min = 16 //We breathe THIS! - oxy_damage_type = TOX //And it poisons us - -/obj/item/organ/internal/lungs/drask - icon = 'icons/obj/species_organs/drask.dmi' - - cold_message = "an invigorating coldness" - cold_level_1_damage = -COLD_GAS_DAMAGE_LEVEL_1 //They heal when the air is cold - cold_level_2_damage = -COLD_GAS_DAMAGE_LEVEL_2 - cold_level_3_damage = -COLD_GAS_DAMAGE_LEVEL_3 - cold_damage_types = list(BRUTE = 0.5, BURN = 0.25) - /obj/item/organ/internal/lungs/cybernetic name = "cybernetic lungs" - desc = "A cybernetic version of the lungs found in traditional humanoid entities. It functions the same as an organic lung and is merely meant as a replacement." + desc = "Электронное устройство, имитирующее работу органических лёгких. Функционально не имеет никаких отличий от органического аналога, кроме производственных затрат." + ru_names = list( + NOMINATIVE = "кибернетические лёгкие", + GENITIVE = "кибернетических лёгких", + DATIVE = "кибернетическим лёгким", + ACCUSATIVE = "кибернетические лёгкие", + INSTRUMENTAL = "кибернетическими лёгкими", + PREPOSITIONAL = "кибернетических лёгких" + ) icon_state = "lungs-c" origin_tech = "biotech=4" status = ORGAN_ROBOT - var/species_state = "human" + var/species_state = "человек" pickup_sound = 'sound/items/handling/component_pickup.ogg' drop_sound = 'sound/items/handling/component_drop.ogg' /obj/item/organ/internal/lungs/cybernetic/examine(mob/user) . = ..() - . += span_notice("[src] is configured for [species_state] standards of atmosphere.") + . += span_notice("Конфигурация параметров дыхания: [species_state].") /obj/item/organ/internal/lungs/cybernetic/multitool_act(mob/user, obj/item/I) . = TRUE if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return switch(species_state) - if("human") // from human to vox + if("человек") // from human to vox safe_oxygen_min = 0 safe_oxygen_max = safe_toxins_max safe_nitro_min = 16 oxy_damage_type = TOX - to_chat(user, span_notice("You configure [src] to replace vox lungs.")) - species_state = "vox" - if("vox") // from vox to plasmamen + to_chat(user, span_notice("Вы меняете конфигурацию [declent_ru(GENITIVE)]. Выбранный режим - \"вокс\".")) + species_state = "вокс" + if("вокс") // from vox to plasmamen safe_oxygen_max = initial(safe_oxygen_max) safe_toxins_min = 16 safe_toxins_max = 0 safe_nitro_min = initial(safe_nitro_min) oxy_damage_type = OXY - to_chat(user, span_notice("You configure [src] to replace plasmamen lungs.")) - species_state = "plasmamen" - if("plasmamen") // from plasmamen to human + to_chat(user, span_notice("Вы меняете конфигурацию [declent_ru(GENITIVE)]. Выбранный режим - \"плазмолюд\".")) + species_state = "плазмолюд" + if("плазмолюд") // from plasmamen to human safe_oxygen_min = initial(safe_oxygen_min) safe_toxins_min = initial(safe_toxins_min) safe_toxins_max = initial(safe_toxins_max) - to_chat(user, span_notice("You configure [src] back to default settings.")) - species_state = "human" + to_chat(user, span_notice("Вы меняете конфигурацию [declent_ru(GENITIVE)]. Выбранный режим - \"человек\".")) + species_state = "человек" /obj/item/organ/internal/lungs/cybernetic/upgraded name = "upgraded cybernetic lungs" - desc = "A more advanced version of the stock cybernetic lungs. They are capable of filtering out lower levels of toxins and carbon dioxide." + desc = "Продвинутая версия кибернетического сердца. Оснащены системой фильтрации, удаляющей токсины и углекислый газ и поступаемого газа. Очень уязвимы к ЭМИ." + ru_names = list( + NOMINATIVE = "улучшенные кибернетические лёгкие", + GENITIVE = "улучшенных кибернетических лёгких", + DATIVE = "улучшенным кибернетическим лёгким", + ACCUSATIVE = "улучшенные кибернетические лёгкие", + INSTRUMENTAL = "улучшенными кибернетическими лёгкими", + PREPOSITIONAL = "улучшенных кибернетических лёгких" + ) icon_state = "lungs-c-u" origin_tech = "biotech=5" @@ -387,3 +386,17 @@ cold_level_1_threshold = 200 cold_level_2_threshold = 140 cold_level_3_threshold = 100 + +/obj/item/organ/internal/lungs/cybernetic/upgraded/insert(mob/living/carbon/human/target, special) + . = ..() + + if(HAS_TRAIT(target, TRAIT_ADVANCED_CYBERIMPLANTS)) + target.physiology.oxy_mod -= 0.5 + ADD_TRAIT(target, TRAIT_CYBERIMP_IMPROVED, UNIQUE_TRAIT_SOURCE(src)) + +/obj/item/organ/internal/lungs/cybernetic/upgraded/remove(mob/living/carbon/human/target, special) + if(HAS_TRAIT_FROM(target, TRAIT_CYBERIMP_IMPROVED, UNIQUE_TRAIT_SOURCE(src))) + target.physiology.oxy_mod += 0.5 + REMOVE_TRAIT(target, TRAIT_CYBERIMP_IMPROVED, UNIQUE_TRAIT_SOURCE(src)) + + . = ..() diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm index 04a08e1a2812..ee1a4c9b87dd 100644 --- a/code/modules/surgery/organs/organ.dm +++ b/code/modules/surgery/organs/organ.dm @@ -1,5 +1,6 @@ /obj/item/organ name = "organ" + gender = MALE icon = 'icons/obj/surgery.dmi' pickup_sound = 'sound/items/handling/flesh_pickup.ogg' drop_sound = 'sound/items/handling/flesh_drop.ogg' @@ -50,13 +51,14 @@ var/hidden_pain = FALSE -/obj/item/organ/New(mob/living/carbon/human/holder) - ..(holder) +/obj/item/organ/Initialize(mapload) + . = ..() if(!max_damage) max_damage = min_broken_damage * 2 - if(ishuman(holder)) + if(ishuman(loc)) + var/mob/living/carbon/human/holder = loc update_DNA(holder.dna) return @@ -65,11 +67,15 @@ /obj/item/organ/Destroy() STOP_PROCESSING(SSobj, src) + if(owner) remove(owner, ORGAN_MANIPULATION_NOEFFECT) + QDEL_LIST_ASSOC_VAL(autopsy_data) + if(dna) QDEL_NULL(dna) + return ..() @@ -86,6 +92,7 @@ if(is_robotic() && !species_type) // no DNA for cybernetics, except IPC parts if(update_blood) update_blood() + return if(!dna) @@ -117,6 +124,7 @@ /obj/item/organ/proc/update_blood() if(!dna || (TRAIT_NO_BLOOD in dna.species.inherent_traits)) return + LAZYSET(blood_DNA, dna.unique_enzymes, dna.blood_type) @@ -127,13 +135,17 @@ /obj/item/organ/proc/necrotize(silent = FALSE) if(status & (ORGAN_ROBOT|ORGAN_DEAD)) return FALSE + damage = max_damage status |= ORGAN_DEAD STOP_PROCESSING(SSobj, src) + if(dead_icon && !is_robotic()) icon_state = dead_icon + if(owner && vital) owner.death() + return TRUE @@ -144,6 +156,7 @@ /obj/item/organ/proc/unnecrotize() if(!is_dead()) return FALSE + status &= ~ORGAN_DEAD return TRUE @@ -152,13 +165,16 @@ if(istype(I, /obj/item/stack/nanopaste)) add_fingerprint(user) var/obj/item/stack/nanopaste/nanopaste = I + if(!is_robotic()) - to_chat(user, span_warning("The [nanopaste.name] can only be used on robotic bodyparts.")) + balloon_alert(user, "не подходит для нанопасты!") return ATTACK_CHAIN_PROCEED + if(!nanopaste.use(1)) - to_chat(user, span_warning("You need at least one unit of [nanopaste] to proceed.")) + balloon_alert(user, "недостаточно нанопасты!") return ATTACK_CHAIN_PROCEED - to_chat(user, span_notice("You have repaired the damage on [src].")) + + to_chat(user, span_notice("Вы устраняете повреждения на [declent_ru(PREPOSITIONAL)] с помощью [nanopaste.declent_ru(GENITIVE)].")) rejuvenate() return ATTACK_CHAIN_PROCEED_SUCCESS @@ -183,10 +199,13 @@ // Maybe scale it down a bit, have it REALLY kick in once past the basic infection threshold // Another mercy for surgeons preparing transplant organs germ_level++ + if(germ_level >= INFECTION_LEVEL_ONE) germ_level += rand(2,6) + if(germ_level >= INFECTION_LEVEL_TWO) germ_level += rand(2,6) + if(germ_level >= INFECTION_LEVEL_THREE) necrotize() @@ -210,12 +229,15 @@ for(var/typepath in preserved_holders) if(is_found_within(typepath)) return TRUE + if(istype(loc,/obj/item/mmi)) // So a brain can slowly recover from being left out of an MMI germ_level = max(0, germ_level - 1) return TRUE + if(istype(loc, /mob/living/simple_animal/hostile/headslug) || istype(loc, /obj/item/organ/internal/body_egg/changeling_egg)) germ_level = 0 // weird stuff might happen, best to be safe return TRUE + if(isturf(loc)) var/is_in_freezer = FALSE if(world.time - last_freezer_update_time > freezer_update_period) @@ -237,9 +259,9 @@ . = ..() if(is_dead()) if(!is_robotic()) - . += span_notice("The decay has set in.") + . += span_notice("В процессе разложения.") else - . += span_notice("It looks in need of repairs.") + . += span_notice("Серьёзно повреждено.") /obj/item/organ/proc/handle_germs() @@ -292,7 +314,7 @@ //Adds autopsy data for used_weapon. -/obj/item/organ/proc/add_autopsy_data(used_weapon = "Unknown", damage) +/obj/item/organ/proc/add_autopsy_data(used_weapon = "Неизвестно", damage) LAZYINITLIST(autopsy_data) var/datum/autopsy_data/weapon_data = autopsy_data[used_weapon] @@ -331,7 +353,7 @@ if(owner && parent_organ_zone && amount > 0) var/obj/item/organ/external/parent = owner.get_organ(parent_organ_zone) if(parent && !silent) - owner.custom_pain("Something inside your [parent.name] hurts a lot.") + owner.custom_pain("Что-то внутри ваш[genderize_ru(parent.gender, "его", "ей", "его", "их")] [parent.declent_ru(GENITIVE)] отдаётся резкой болью.") //check if we've hit max_damage if(damage >= max_damage) @@ -341,6 +363,7 @@ /obj/item/organ/proc/heal_internal_damage(amount, robo_repair = FALSE) if(is_robotic() && !robo_repair) return + damage = max(damage - amount, 0) @@ -371,12 +394,13 @@ if(owner?.stat != DEAD && vital && !special) add_attack_logs(user, owner, "Removed vital organ ([src])") owner.death() + owner = null return src /obj/item/organ/proc/replaced(mob/living/carbon/human/target, special = ORGAN_MANIPULATION_DEFAULT) - return // Nothing uses this, it is always overridden + return // A version of `replaced` that "flattens" the process of insertion, making organs "Plug'n'play" @@ -395,6 +419,7 @@ /obj/item/organ/proc/has_damage() if(damage) return TRUE + return FALSE /obj/item/organ/proc/is_robotic() @@ -403,6 +428,7 @@ /obj/item/organ/serialize() var/data = ..() + if(status != 0) data["status"] = status @@ -410,6 +436,7 @@ // the owner if(!(owner && dna.unique_enzymes == owner.dna.unique_enzymes)) data["dna"] = dna.serialize() + return data diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 4eacc7768a42..c4a80c43cb62 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -105,15 +105,16 @@ light_on = FALSE -/obj/item/organ/external/New(mob/living/carbon/holder, special = ORGAN_MANIPULATION_NOEFFECT) - ..() +/obj/item/organ/external/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() if(dna?.species) icobase = dna.species.icobase deform = dna.species.deform - if(ishuman(holder)) - replaced(holder, special) - sync_colour_to_human(holder) + + if(ishuman(loc)) + replaced(loc, special) + sync_colour_to_human(loc) properly_attached = TRUE if(is_robotic()) @@ -181,8 +182,10 @@ return var/obj/item/organ/external/replaced = owner.bodyparts_by_name[limb_zone] + if(!isnull(replaced)) replaced.remove(target, ORGAN_MANIPULATION_NOEFFECT) + owner.bodyparts_by_name[limb_zone] = src owner.bodyparts |= src @@ -227,9 +230,9 @@ //Robotic limbs explode if sabotaged. if(is_robotic() && sabotaged && !special) organ_owner.visible_message( - span_danger("[organ_owner]'s [name] explodes violently!"), - span_danger("Your [name] explodes!"), - span_danger("You hear an explosion!"), + span_danger("[capitalize(declent_ru(NOMINATIVE))] [organ_owner] взрыва[pluralize_ru(gender, "ет", "ют")]ся!"), + span_danger("Ваш[genderize_ru(gender, "", "а", "е", "и")] [declent_ru(NOMINATIVE)] взрыва[pluralize_ru(gender, "ет", "ют")]ся!"), + span_danger("Вы слышите взрыв!"), ) explosion(get_turf(organ_owner), -1, -1, 2, 3, cause = "Organ Sabotage") do_sparks(5, FALSE, organ_owner) @@ -438,6 +441,9 @@ return update_state() +/obj/item/organ/external/blob_act() + external_receive_damage(max_damage, forced = TRUE) + /obj/item/organ/external/emp_act(severity) if(!is_robotic() || emp_proof) return @@ -674,26 +680,26 @@ Note that amputating the affected organ does in fact remove the infection from t switch(disintegrate) if(DROPLIMB_SHARP) if(!clean) - var/gore_sound = "[is_robotic() ? "tortured metal" : "ripping tendons and flesh"]" + var/gore_sound = "[is_robotic() ? "скрежета металла" : "разрывающейся на куски плоти"]" owner.visible_message( - span_danger("[owner]'s [name] flies off in an arc!"), - span_userdanger("Your [name] goes flying off!"), - span_italics("You hear a terrible sound of [gore_sound]."), + span_danger("[capitalize(declent_ru(NOMINATIVE))] [owner] отрыва[pluralize_ru(gender, "ет", "ют")]ся!"), + span_userdanger("Ваш[genderize_ru(gender, "", "а", "е", "и")] [declent_ru(NOMINATIVE)] отрыва[pluralize_ru(gender, "ет", "ют")]ся!"), + span_italics("Вы слышите ужасный звук [gore_sound]."), ) if(DROPLIMB_BURN) - var/gore = "[is_robotic() ? "" : " of burning flesh"]" + var/gore = "[is_robotic() ? "" : "горящей плоти"]" owner.visible_message( - span_danger("[owner]'s [name] flashes away into ashes!"), - span_userdanger("Your [name] flashes away into ashes!"), - span_italics("You hear a crackling sound[gore]."), + span_danger("[capitalize(declent_ru(NOMINATIVE))] [owner] испепеля[pluralize_ru(gender, "ет", "ют")]ся!"), + span_userdanger("Ваш[genderize_ru(gender, "", "а", "е", "и")] [declent_ru(NOMINATIVE)] испепеля[pluralize_ru(gender, "ет", "ют")]ся!"), + span_italics("Вы слышите ужасный звук [gore]."), ) if(DROPLIMB_BLUNT) - var/gore = "[is_robotic() ? "": " in shower of gore"]" - var/gore_sound = "[is_robotic() ? "rending sound of tortured metal" : "sickening splatter of gore"]" + var/gore = "[is_robotic() ? "брызги масла и куски скомканного металла": "брызги крови и ошмётки плоти"]" + var/gore_sound = "[is_robotic() ? "разламывающегося металла" : "отрываемой плоти"]" owner.visible_message( - span_danger("[owner]'s [name] explodes[gore]!"), - span_userdanger("Your [name] explodes[gore]!"), - span_italics("You hear the [gore_sound].") + span_danger("[capitalize(declent_ru(NOMINATIVE))] [owner] отрыва[pluralize_ru(gender, "ет", "ют")]ся, оставляя после себя [gore]!"), + span_userdanger("Ваш[genderize_ru(gender, "", "а", "е", "и")] [declent_ru(NOMINATIVE)] отрыва[pluralize_ru(gender, "ет", "ют")]ся, оставляя после себя [gore]!"), + span_italics("Вы слышите звук [gore_sound]!") ) var/mob/living/carbon/human/victim = owner //Keep a reference for post-removed(). @@ -766,7 +772,8 @@ Note that amputating the affected organ does in fact remove the infection from t thing.forceMove(drop_location()) if(organ_spilled && !silent) - organ_owner.visible_message(span_danger("[organ_owner]'s internal organs spill out onto the floor!")) + organ_owner.visible_message(span_danger("Внутренности [organ_owner] выпадают на землю!"), \ + span_userdanger("Ваши внутренности выпадают на землю!")) open = ORGAN_ORGANIC_OPEN return TRUE @@ -784,19 +791,19 @@ Note that amputating the affected organ does in fact remove the infection from t if(is_sharp(I)) add_fingerprint(user) if(!length(contents)) - user.balloon_alert(user, "внутри ничего нет!") + balloon_alert(user, "внутри ничего нет!") return ATTACK_CHAIN_PROCEED playsound(loc, 'sound/weapons/slice.ogg', 50, TRUE, -1) user.visible_message( - span_warning("[user] starts to rip the internals from [src]."), - span_notice("You start to rip the internals from [src]..."), + span_warning("[user] начина[pluralize_ru(user.gender, "ет", "ют")] вырезать внутренности из [declent_ru(GENITIVE)]."), + span_notice("Вы начинаете вырезать внутренности из [declent_ru(GENITIVE)]."), ) if(!do_after(user, 5 SECONDS, src, category = DA_CAT_SURGERY) || !length(contents)) return ATTACK_CHAIN_PROCEED playsound(loc, 'sound/weapons/slice.ogg', 50, TRUE, -1) user.visible_message( - span_warning("[user] has ripped off all the internals from [src]."), - span_notice("You have ripped off all the internals from [src]."), + span_warning("[user] выреза[pluralize_ru(user.gender, "ет", "ют")] внутренности из [declent_ru(GENITIVE)]."), + span_notice("Вы вырезаете внутренности из [declent_ru(GENITIVE)]."), ) drop_organs() return ATTACK_CHAIN_PROCEED_SUCCESS @@ -877,17 +884,15 @@ Note that amputating the affected organ does in fact remove the infection from t if(holder.handcuffed && (limb_zone in list(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND))) if(!silent) holder.visible_message( - "[holder.handcuffed.name] falls off of [holder.name].", - "[holder.handcuffed.name] falls off you.", - ) + span_warning("[capitalize(holder.handcuffed.declent_ru(NOMINATIVE))] спадыва[pluralize_ru(holder.handcuffed.gender, "ет", "ют")] с [holder.name]."), \ + span_warning("[capitalize(holder.handcuffed.declent_ru(NOMINATIVE))] спадыва[pluralize_ru(holder.handcuffed.gender, "ет", "ют")] с вас.")) holder.drop_item_ground(holder.handcuffed) if(holder.legcuffed && (limb_zone in list(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_PRECISE_L_FOOT, BODY_ZONE_PRECISE_R_FOOT))) if(!silent) holder.visible_message( - "[holder.legcuffed.name] falls off of [holder.name].", - "[holder.legcuffed.name] falls off you.", - ) + span_warning("[capitalize(holder.legcuffed.declent_ru(NOMINATIVE))] спадыва[pluralize_ru(holder.legcuffed.gender, "ет", "ют")] с [holder.name]."), \ + span_warning("[capitalize(holder.legcuffed.declent_ru(NOMINATIVE))] спадыва[pluralize_ru(holder.legcuffed.gender, "ет", "ют")] с вас.")) holder.drop_item_ground(holder.legcuffed) @@ -903,9 +908,10 @@ Note that amputating the affected organ does in fact remove the infection from t return FALSE status |= ORGAN_INT_BLEED + INVOKE_ASYNC(owner, TYPE_PROC_REF(/mob, emote), "scream") if(owner && !silent) - owner.custom_pain("You feel something rip in your [name]!") + owner.custom_pain("Вы чувствуете, как что-то разорвалось внутри ваш[genderize_ru(gender, "его", "ей", "его", "их")] [declent_ru(GENITIVE)]!") return TRUE @@ -939,9 +945,9 @@ Note that amputating the affected organ does in fact remove the infection from t if(owner && !silent) owner.visible_message( - span_warning("You hear a loud cracking sound coming from \the [owner]."), - span_danger("Something feels like it shattered in your [name]!"), - span_italics("You hear a sickening crack."), + span_warning("Вы слышите громкий хруст, исходящий от [owner]."), + span_danger("Вы чувствуете, как что-то сломалось внутри ваш[genderize_ru(gender, "его", "ей", "его", "их")] [declent_ru(GENITIVE)]!"), + span_italics("Вы слышите громкий хруст."), ) playsound(owner, "bonebreak", 150, TRUE) @@ -950,7 +956,7 @@ Note that amputating the affected organ does in fact remove the infection from t INVOKE_ASYNC(owner, TYPE_PROC_REF(/mob, emote), "scream") status |= ORGAN_BROKEN - broken_description = pick("broken", "fracture", "hairline fracture") + broken_description = pick("Смещение кости", "Перелом", "Микротрещина") perma_injury = brute_dam // Fractures have a chance of getting you out of restraints @@ -1009,14 +1015,14 @@ Note that amputating the affected organ does in fact remove the infection from t if(owner.has_pain() && !silent) INVOKE_ASYNC(owner, TYPE_PROC_REF(/mob, emote), "scream") owner.visible_message( - span_danger("[owner] screams in pain as [owner.p_their()] splint pops off their [name]!"), - span_userdanger("You scream in pain as your splint pops off your [name]!"), - span_italics("You hear a loud scream!") + span_danger("[owner] крич[pluralize_ru(owner.gender, "ит", "ят")] от боли из-за того, что с [genderize_ru(gender, "его", "её", "его", "их")] [declent_ru(GENITIVE)] спадает шина!"), + span_userdanger("Вы кричите от боли из-за того, что с ваш[genderize_ru(gender, "его", "ей", "его", "их")] [declent_ru(GENITIVE)] спадает шина!"), + span_italics("Вы слышите громкий крик!") ) else if(!silent) owner.visible_message( - span_danger("The splint on [owner]'s [name] unravels!"), - span_userdanger("The splint on your [name] unravels!"), + span_danger("Шина на [declent_ru(PREPOSITIONAL)] [owner] распутывается и спадает!"), + span_userdanger("Шина на ваш[genderize_ru(gender, "ем", "ей", "ем", "их")] [declent_ru(PREPOSITIONAL)] распутывается и спадает!"), ) return TRUE @@ -1072,7 +1078,7 @@ Note that amputating the affected organ does in fact remove the infection from t if(owner) owner.update_body() if(!silent) - to_chat(owner, span_notice("You can't feel your [name] anymore...")) + to_chat(owner, span_danger("Вы перестаёте чувствовать ваш[genderize_ru(gender, "", "у", "е", "и")] [declent_ru(ACCUSATIVE)]!")) if(vital) owner.death() @@ -1098,7 +1104,7 @@ Note that amputating the affected organ does in fact remove the infection from t if(owner) owner.update_body(rebuild_base = TRUE) //Forces all bodyparts to update in order to correctly render the deformed sprite. if(!silent) - to_chat(owner, span_warning("Something is not right with your [name]...")) + to_chat(owner, span_warning("Ваш[genderize_ru(gender, "", "а", "е", "и")] [declent_ru(NOMINATIVE)] ощуща[pluralize_ru(gender, "ет", "ют")]ся неествественным[pluralize_ru(gender, "", "и")] и чужеродным[pluralize_ru(gender, "", "и")].")) /obj/item/organ/external/proc/unmutate(silent = FALSE) @@ -1111,7 +1117,7 @@ Note that amputating the affected organ does in fact remove the infection from t if(owner) owner.update_body(rebuild_base = TRUE) //Forces all bodyparts to update in order to correctly return them to normal. if(!silent) - to_chat(owner, span_warning("Your [name] is shaped normally again.")) + to_chat(owner, span_warning("Ваш[genderize_ru(gender, "", "а", "е", "и")] [declent_ru(NOMINATIVE)] приход[pluralize_ru(gender, "ит", "ят")] в норму, а чувство неествественности уходит.")) /obj/item/organ/external/proc/is_mutated() @@ -1148,9 +1154,9 @@ Note that amputating the affected organ does in fact remove the infection from t if(!silent) owner.visible_message( - span_warning("You hear a sickening sound coming from \the [owner]'s [name] as it turns into a mangled mess!"), - span_userdanger("Your [name] becomes a mangled mess!"), - span_italics("You hear a sickening sound.") + span_warning("[capitalize(declent_ru(NOMINATIVE))] [owner] превраща[pluralize_ru(gender, "ет", "ют")]ся в кровавую кашу, издавая тошнотворный звук!"), + span_userdanger("Ваш[genderize_ru(gender, "", "а", "е", "и")] [declent_ru(NOMINATIVE)] превраща[pluralize_ru(gender, "ет", "ют")]ся в кровавую кашу!"), + span_italics("Вы слышите тошнотворный звук.") ) status |= ORGAN_DISFIGURED @@ -1212,6 +1218,9 @@ Note that amputating the affected organ does in fact remove the infection from t if(R) force_icon = R.icon name = "[R.company] [initial(name)]" + if(ru_names) + for(var/i = 1; i <= 6; i++) + ru_names[i] = "[initial(ru_names[i])] [R.company]" desc = "[R.desc]" diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index c12203c22445..8d8dccd7c7bc 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -8,17 +8,39 @@ /// Whether it shows up as an option to remove during surgery. var/unremovable = FALSE var/can_see_food = FALSE + /// Empty list == all species allowed + var/list/species_restrictions light_system = MOVABLE_LIGHT light_on = FALSE + lefthand_file = 'icons/mob/inhands/organ_lefthand.dmi' + righthand_file = 'icons/mob/inhands/organ_righthand.dmi' -/obj/item/organ/internal/New(mob/living/carbon/holder) - ..() - if(istype(holder)) - insert(holder) - if(species_type == /datum/species/diona) - AddComponent(/datum/component/diona_internals) +/obj/item/organ/internal/Initialize(mapload) + . = ..() + + if(iscarbon(loc)) + insert(loc) + + +// user = who operates on target. Optional for fail_message, can be null(silent check) +// target = the carbon we're testing for suitability +// fail_message = message that user will recieve if the checks failed. FALSE make it quiet even with "user" +/obj/item/organ/internal/proc/can_insert(mob/living/user, mob/living/carbon/target, fail_message = "Данное существо не способно принять этот орган!") + if(!LAZYLEN(species_restrictions)) + return TRUE + + if(!istype(target) && !target.dna?.species) // only carbons have species + return FALSE + + if(target.dna.species.name in species_restrictions) + return TRUE + + if(user && fail_message) + to_chat(user, span_warning(fail_message)) + + return FALSE /obj/item/organ/internal/proc/insert(mob/living/carbon/target, special = ORGAN_MANIPULATION_DEFAULT) @@ -30,6 +52,7 @@ do_pickup_animation(src, target) var/obj/item/organ/internal/replaced = target.get_organ_slot(slot) + if(replaced) replaced.remove(target, ORGAN_MANIPULATION_NOEFFECT) @@ -44,6 +67,7 @@ stack_trace("[src] attempted to insert into a [parent_organ_zone], but [parent_organ_zone] wasn't an organ! [atom_loc_line(h_target)]") else LAZYOR(parent.internal_organs, src) + h_target.update_int_organs() loc = null @@ -75,10 +99,13 @@ if(iscarbon(organ_owner)) organ_owner.internal_organs -= src + if(organ_owner.internal_organs_slot[slot] == src) organ_owner.internal_organs_slot[slot] = null + if(!special) send_signal = TRUE + if(vital && !special && organ_owner.stat != DEAD) organ_owner.death() @@ -106,6 +133,7 @@ /obj/item/organ/internal/emp_act(severity) if(!is_robotic() || emp_proof) return + switch(severity) if(1) internal_receive_damage(20, silent = TRUE) @@ -137,6 +165,7 @@ /obj/item/organ/internal/proc/prepare_eat() if(is_robotic()) return //no eating cybernetic implants! + var/obj/item/reagent_containers/food/snacks/organ/S = new S.name = name S.desc = desc @@ -150,6 +179,7 @@ /obj/item/organ/internal/attempt_become_organ(obj/item/organ/external/parent, mob/living/carbon/human/target, special = ORGAN_MANIPULATION_DEFAULT) if(parent_organ_zone != parent.limb_zone) return FALSE + insert(target, special) return TRUE @@ -161,9 +191,18 @@ /obj/item/reagent_containers/food/snacks/organ name = "appendix" + desc = "Придаток слепой кишки. Является рудиментарным органом, поэтому не несёт полезной функции для организма." + ru_names = list( + NOMINATIVE = "аппендикс", + GENITIVE = "аппендикса", + DATIVE = "аппендиксу", + ACCUSATIVE = "аппендикс", + INSTRUMENTAL = "аппендиксом", + PREPOSITIONAL = "аппендиксе" + ) icon_state = "appendix" icon = 'icons/obj/surgery.dmi' - list_reagents = list("nutriment" = 5) + list_reagents = list("nutriment" = 5, "toxin" = 5) /obj/item/organ/internal/attack(mob/living/carbon/human/target, mob/living/user, params, def_zone, skip_attack_anim = FALSE) @@ -171,6 +210,7 @@ return ..() var/obj/item/reagent_containers/food/snacks/snack = prepare_eat() + if(!snack) return ATTACK_CHAIN_PROCEED @@ -197,15 +237,26 @@ H.icon_base = "[slot]-c" H.dead_icon = "[slot]-c-off" H.update_icon() + else if("[slot]-c" in states) //Give the robotic organ its robotic organ icons if they exist. icon = icon('icons/obj/surgery.dmi') icon_state = "[slot]-c" + name = "cybernetic [slot]" ..() //Go apply all the organ flags/robotic statuses. /obj/item/organ/internal/appendix name = "appendix" + desc = "Придаток слепой кишки. Является рудиментарным органом, поэтому не несёт полезной функции для организма." + ru_names = list( + NOMINATIVE = "аппендикс", + GENITIVE = "аппендикса", + DATIVE = "аппендиксу", + ACCUSATIVE = "аппендикс", + INSTRUMENTAL = "аппендиксом", + PREPOSITIONAL = "аппендиксе" + ) icon_state = "appendix" parent_organ_zone = BODY_ZONE_PRECISE_GROIN slot = INTERNAL_ORGAN_APPENDIX @@ -216,12 +267,14 @@ for(var/datum/disease/appendicitis/A in M.diseases) A.cure() inflamed = TRUE + update_icon() . = ..() /obj/item/organ/internal/appendix/insert(mob/living/carbon/M, special = ORGAN_MANIPULATION_DEFAULT) ..() + if(inflamed) var/datum/disease/appendicitis/D = new D.Contract(M) @@ -229,15 +282,26 @@ /obj/item/organ/internal/appendix/prepare_eat() var/obj/S = ..() + if(inflamed) S.reagents.add_reagent("????", 5) + return S //shadowling tumor /obj/item/organ/internal/shadowtumor name = "black tumor" - desc = "A tiny black mass with red tendrils trailing from it. It seems to shrivel in the light." + desc = "Небольшой чёрный сгусток с тянущимися щупальцами красного цвета. При воздействии на него света он сморщивается и сворачивается." + ru_names = list( + NOMINATIVE = "чёрная опухоль", + GENITIVE = "чёрной опухоли", + DATIVE = "чёрной опухоли", + ACCUSATIVE = "чёрную опухоль", + INSTRUMENTAL = "чёрной опухолью", + PREPOSITIONAL = "чёрной опухоли" + ) + gender = FEMALE icon_state = "blacktumor" origin_tech = "biotech=5" w_class = WEIGHT_CLASS_TINY @@ -262,10 +326,12 @@ var/light_count = T.get_lumcount()*10 if(light_count > 4 && obj_integrity > 0) //Die in the light obj_integrity-- + else if(light_count < 2 && obj_integrity < max_integrity) //Heal in the dark obj_integrity++ + if(obj_integrity <= 0) - visible_message(span_warning("[src] collapses in on itself!")) + visible_message(span_warning("[capitalize(declent_ru(NOMINATIVE))] расслаивается и распадается на множество крошечных кусочков.")) qdel(src) @@ -273,7 +339,16 @@ /obj/item/organ/internal/honktumor name = "banana tumor" - desc = "A tiny yellow mass shaped like..a banana?" + desc = "Небольшой жёлтый сгусток, по форме напоминающий... банан?" + ru_names = list( + NOMINATIVE = "банановая опухоль", + GENITIVE = "банановой опухоли", + DATIVE = "банановой опухоли", + ACCUSATIVE = "банановую опухоль", + INSTRUMENTAL = "банановой опухолью", + PREPOSITIONAL = "банановой опухоли" + ) + gender = FEMALE icon_state = "honktumor" origin_tech = "biotech=1" w_class = WEIGHT_CLASS_TINY @@ -286,6 +361,7 @@ /obj/item/organ/internal/honktumor/insert(mob/living/carbon/M, special = ORGAN_MANIPULATION_DEFAULT) ..() + M.force_gene_block(GLOB.clumsyblock, TRUE) M.force_gene_block(GLOB.comicblock, TRUE) organhonked = world.time @@ -304,7 +380,7 @@ /obj/item/organ/internal/honktumor/on_life() if(organhonked < world.time) organhonked = world.time + suffering_delay - to_chat(owner, "HONK") + to_chat(owner, "ХОНК") owner.SetSleeping(0) owner.Stuttering(40 SECONDS) owner.Deaf(60 SECONDS) @@ -333,6 +409,7 @@ /obj/item/organ/internal/honktumor/cursed/on_life() //No matter what you do, no matter who you are, no matter where you go, you're always going to be a fat, stuttering dimwit. ..() + owner.setBrainLoss(80) owner.set_nutrition(9000) owner.overeatduration = 9000 @@ -340,7 +417,15 @@ /obj/item/organ/internal/honkbladder name = "honk bladder" - desc = "a air filled sac that produces honking noises." + desc = "Наполненный воздухом мешок, который издаёт звуки, напоминающие велосипедный гудок." + ru_names = list( + NOMINATIVE = "гудящий пузырь", + GENITIVE = "гудящего пузыря", + DATIVE = "гудящему пузырю", + ACCUSATIVE = "гудящий пузырь", + INSTRUMENTAL = "гудящим пузырём", + PREPOSITIONAL = "гудящем пузыре" + ) icon_state = "honktumor"//Not making a new icon origin_tech = "biotech=1" w_class = WEIGHT_CLASS_TINY @@ -362,7 +447,15 @@ /obj/item/organ/internal/beard name = "beard organ" - desc = "Let they who is worthy wear the beard of Thorbjorndottir." + desc = "Пусть те, кто достоин, носят бороду Торбьёрнсдоттир." + ru_names = list( + NOMINATIVE = "бородатый орган", + GENITIVE = "бородатого органа", + DATIVE = "бородатому органу", + ACCUSATIVE = "бородатый орган", + INSTRUMENTAL = "бородатым органом", + PREPOSITIONAL = "бородатом органе" + ) icon_state = "liver" origin_tech = "biotech=1" w_class = WEIGHT_CLASS_TINY @@ -378,13 +471,16 @@ if(ishuman(owner)) var/mob/living/carbon/human/H = owner var/obj/item/organ/external/head/head_organ = H.get_organ(BODY_ZONE_HEAD) + if(!(head_organ.h_style == "Very Long Hair" || head_organ.h_style == "Mohawk")) if(prob(10)) head_organ.h_style = "Mohawk" else head_organ.h_style = "Very Long Hair" + head_organ.hair_colour = "#D8C078" H.update_hair() + if(!(head_organ.f_style == "Very Long Beard")) head_organ.f_style = "Very Long Beard" head_organ.facial_colour = "#D8C078" @@ -395,7 +491,9 @@ ..() if(!ishuman(owner)) return + var/germs_mod = owner.dna.species.germs_growth_mod * owner.physiology.germs_growth_mod + if(germ_level >= INFECTION_LEVEL_TWO && prob(3 * germs_mod)) // big message from every 1 damage is not good. If germs growth rate is big, it will spam the chat. internal_receive_damage(1, silent = prob(30 * germs_mod)) @@ -403,16 +501,19 @@ /mob/living/carbon/human/proc/check_infections() var/list/infections = list() + for(var/obj/item/organ/internal/organ as anything in internal_organs) if(organ.germ_level > 0) infections.Add(organ) + return infections /mob/living/carbon/human/proc/check_damaged_organs() var/list/damaged = list() + for(var/obj/item/organ/internal/organ as anything in internal_organs) if(organ.damage > 0) damaged.Add(organ) - return damaged + return damaged diff --git a/code/modules/surgery/organs/pain.dm b/code/modules/surgery/organs/pain.dm index 55b98b698187..1604c8b83366 100644 --- a/code/modules/surgery/organs/pain.dm +++ b/code/modules/surgery/organs/pain.dm @@ -38,11 +38,11 @@ var/msg switch(amount) if(1 to 10) - msg = span_userdanger("Your [partname] hurts.") + msg = span_userdanger("Вы чувствуете боль в [partname].") if(11 to 90) - msg = span_userdanger("Your [partname] hurts badly.") + msg = span_userdanger("Вы чувствуете сильную боль в [partname]!") if(91 to INFINITY) - msg = span_userdanger("OH GOD! Your [partname] is hurting terribly!") + msg = span_userdanger("Ох чёрт! Вы чувствуете невыносимую боль в [partname]!") if(msg && (msg != last_pain_message || prob(10))) last_pain_message = msg to_chat(src, msg) @@ -80,7 +80,7 @@ damaged_organ = bodypart maxdam = dam if(damaged_organ) - pain(damaged_organ.name, maxdam) + pain(damaged_organ.declent_ru(PREPOSITIONAL), maxdam) // Damage to internal organs hurts a lot. for(var/obj/item/organ/internal/organ as anything in internal_organs) @@ -88,6 +88,6 @@ continue if(organ.damage > 2 && prob(2)) var/obj/item/organ/external/parent = get_organ(organ.parent_organ_zone) - custom_pain("You feel a sharp pain in your [parent.name]") + custom_pain("Вы чувствуете острую боль в [parent.declent_ru(PREPOSITIONAL)].") #undef MIN_SHOCK_REDUCTION diff --git a/code/modules/surgery/organs/parasites.dm b/code/modules/surgery/organs/parasites.dm index 1f6b229e424a..e563c8369900 100644 --- a/code/modules/surgery/organs/parasites.dm +++ b/code/modules/surgery/organs/parasites.dm @@ -54,13 +54,16 @@ var/eggs_hatched = 0 // num of hatch events completed var/awaymission_checked = FALSE var/awaymission_infection = FALSE // TRUE if infection occurred inside gateway - + var/mob/asigned_ghost + var/ghost_poll = FALSE /obj/item/organ/internal/body_egg/terror_eggs/on_life() // Safety first. if(!owner) return - + if(GLOB.global_degenerate && !awaymission_infection && !QDELETED(src)) + qdel(src) + return // Parasite growth cycle_num += 1 egg_progress += 1 @@ -71,17 +74,32 @@ awaymission_checked = TRUE if(is_away_level(owner.z)) awaymission_infection = TRUE + else + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_IFECTION_CREATED, src) if(awaymission_infection) var/turf/T = get_turf(owner) if(istype(T) && !is_away_level(T.z)) owner.gib() qdel(src) return + if(egg_progress_per_hatch - egg_progress <= TERROR_VOTE_TICKS && !ghost_poll && !awaymission_infection) + find_spider_owner() - if(egg_progress > egg_progress_per_hatch) - egg_progress -= egg_progress_per_hatch + if(egg_progress > egg_progress_per_hatch && awaymission_infection) hatch_egg() +/obj/item/organ/internal/body_egg/terror_eggs/proc/find_spider_owner() + ghost_poll = TRUE + var/list/candidates = SSghost_spawns.poll_candidates("Вы хотите занять роль Паука Ужаса?", ROLE_TERROR_SPIDER, TRUE, TERROR_VOTE_LEN, , role_cleanname = "Паук Ужаса") + if(QDELETED(src)) + return + ghost_poll = FALSE + if(!length(candidates) || awaymission_infection) + hatch_egg() + return + asigned_ghost = pick_n_take(candidates) + hatch_egg() + /obj/item/organ/internal/body_egg/terror_eggs/proc/calc_variable_progress() var/extra_progress = 0 if(owner.nutrition > NUTRITION_LEVEL_FULL) @@ -96,6 +114,7 @@ /obj/item/organ/internal/body_egg/terror_eggs/proc/hatch_egg() var/infection_completed = FALSE + egg_progress -= egg_progress_per_hatch var/obj/structure/spider/spiderling/terror_spiderling/S = new(get_turf(owner)) switch(eggs_hatched) if(0) // 1st spiderling @@ -108,6 +127,7 @@ owner.death() infection_completed = TRUE S.immediate_ventcrawl = TRUE + S.asigned_ghost = asigned_ghost eggs_hatched++ owner.adjustBruteLoss(80) owner.Paralyse(20 SECONDS) @@ -119,6 +139,7 @@ /obj/item/organ/internal/body_egg/terror_eggs/remove(mob/living/carbon/M, special = ORGAN_MANIPULATION_DEFAULT) ..() + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_IFECTION_REMOVED, src) if(!QDELETED(src)) qdel(src) // prevent people re-implanting them into others return null diff --git a/code/modules/surgery/organs/subtypes/abductor.dm b/code/modules/surgery/organs/subtypes/abductor.dm index 0e4eb21287c4..f3110cc70869 100644 --- a/code/modules/surgery/organs/subtypes/abductor.dm +++ b/code/modules/surgery/organs/subtypes/abductor.dm @@ -1,9 +1,26 @@ /obj/item/organ/internal/brain/abductor species_type = /datum/species/abductor + desc = "Основной орган центральной нервной системы гуманоида. Фактически, именно здесь и находится разум. Этот принадлежал абдуктору." + ru_names = list( + NOMINATIVE = "мозг абдуктора", + GENITIVE = "мозга абдуктора", + DATIVE = "мозгу абдуктора", + ACCUSATIVE = "мозг абдуктора", + INSTRUMENTAL = "мозгом абдуктора", + PREPOSITIONAL = "мозге абдуктора" + ) icon_state = "brain-x" mmi_icon_state = "mmi_alien" /obj/item/organ/internal/eyes/abductor species_type = /datum/species/abductor name = "abductor eyeballs" + ru_names = list( + NOMINATIVE = "глаза абдуктора", + GENITIVE = "глаз абдуктора", + DATIVE = "глазам абдуктора", + ACCUSATIVE = "глаза абдуктора", + INSTRUMENTAL = "глазами абдуктора", + PREPOSITIONAL = "глазах абдуктора" + ) see_in_dark = 3 diff --git a/code/modules/surgery/organs/subtypes/diona.dm b/code/modules/surgery/organs/subtypes/diona.dm index 2b711fe726ef..6b6ed472b401 100644 --- a/code/modules/surgery/organs/subtypes/diona.dm +++ b/code/modules/surgery/organs/subtypes/diona.dm @@ -1,81 +1,170 @@ /obj/item/organ/external/chest/diona species_type = /datum/species/diona name = "core trunk" + desc = "Основной ствол - ядро." + ru_names = list( + NOMINATIVE = "основной ствол", + GENITIVE = "основного ствола", + DATIVE = "основному стволу", + ACCUSATIVE = "основной ствол", + INSTRUMENTAL = "основным стволом", + PREPOSITIONAL = "основном стволе" + ) + gender = MALE max_damage = 200 min_broken_damage = 50 - amputation_point = "trunk" + amputation_point = "ствол" encased = null gendered_icon = FALSE /obj/item/organ/external/groin/diona species_type = /datum/species/diona name = "fork" + desc = "Нижнее разветвление ствола." + ru_names = list( + NOMINATIVE = "нижнее разветвление", + GENITIVE = "нижнего разветвления", + DATIVE = "нижнему разветвлению", + ACCUSATIVE = "нижнее разветвление", + INSTRUMENTAL = "нижним разветвлением", + PREPOSITIONAL = "нижнем разветвлении" + ) + gender = NEUTER min_broken_damage = 50 - amputation_point = "lower trunk" + amputation_point = "нижний ствол" gendered_icon = FALSE /obj/item/organ/external/arm/diona species_type = /datum/species/diona name = "left upper tendril" + desc = "Верхнее левое ответвление ствола." + ru_names = list( + NOMINATIVE = "левый верхний отросток", + GENITIVE = "левого верхнего отростка", + DATIVE = "левому верхнему отростку", + ACCUSATIVE = "левый верхний отросток", + INSTRUMENTAL = "левым верхним отростоком", + PREPOSITIONAL = "левом верхнем отростке" + ) + gender = MALE max_damage = 35 min_broken_damage = 20 - amputation_point = "upper left trunk" + amputation_point = "левый верхний отросток" convertable_children = list(/obj/item/organ/external/hand/diona) /obj/item/organ/external/arm/right/diona species_type = /datum/species/diona name = "right upper tendril" + desc = "Верхнее правое ответвление ствола." + ru_names = list( + NOMINATIVE = "правый верхний отросток", + GENITIVE = "правого верхнего отростка", + DATIVE = "правому верхнему отростку", + ACCUSATIVE = "правый верхний отросток", + INSTRUMENTAL = "правым верхним отростоком", + PREPOSITIONAL = "правом верхнем отростке" + ) + gender = MALE max_damage = 35 min_broken_damage = 20 - amputation_point = "upper right trunk" + amputation_point = "правый верхний отросток" convertable_children = list(/obj/item/organ/external/hand/right/diona) /obj/item/organ/external/leg/diona species_type = /datum/species/diona name = "left lower tendril" + desc = "Нижнее левое ответвление ствола." + ru_names = list( + NOMINATIVE = "левый нижний отросток", + GENITIVE = "левого нижнего отростка", + DATIVE = "левому нижнему отростку", + ACCUSATIVE = "левый нижний отросток", + INSTRUMENTAL = "левым нижним отростоком", + PREPOSITIONAL = "левом нижнем отростке" + ) + gender = MALE max_damage = 35 min_broken_damage = 20 - amputation_point = "lower left fork" + amputation_point = "левый нижний отросток" convertable_children = list(/obj/item/organ/external/foot/diona) /obj/item/organ/external/leg/right/diona species_type = /datum/species/diona name = "right lower tendril" + desc = "Нижнее правое ответвление ствола." + ru_names = list( + NOMINATIVE = "правый нижний отросток", + GENITIVE = "правого нижнего отростка", + DATIVE = "правому нижнему отростку", + ACCUSATIVE = "правый нижний отросток", + INSTRUMENTAL = "правым нижним отростоком", + PREPOSITIONAL = "правом нижнем отростке" + ) + gender = MALE max_damage = 35 min_broken_damage = 20 - amputation_point = "lower right fork" + amputation_point = "правый нижний отросток" convertable_children = list(/obj/item/organ/external/foot/right/diona) /obj/item/organ/external/foot/diona species_type = /datum/species/diona - name = "left foot" max_damage = 20 min_broken_damage = 10 - amputation_point = "branch" + amputation_point = "левую нижнюю ветку" /obj/item/organ/external/foot/right/diona species_type = /datum/species/diona - name = "right foot" max_damage = 20 min_broken_damage = 10 - amputation_point = "branch" + amputation_point = "правую нижнюю ветку" /obj/item/organ/external/hand/diona species_type = /datum/species/diona name = "left grasper" - amputation_point = "branch" + desc = "Левый верхняя ветка, выполняющая хватательную функцию." + ru_names = list( + NOMINATIVE = "левый захват", + GENITIVE = "левого захвата", + DATIVE = "левому захвату", + ACCUSATIVE = "левый захват", + INSTRUMENTAL = "левым захватом", + PREPOSITIONAL = "левом захвате" + ) + gender = MALE + amputation_point = "левую верхнюю ветку" /obj/item/organ/external/hand/right/diona species_type = /datum/species/diona name = "right grasper" - amputation_point = "branch" + desc = "Правая верхняя ветка, выполняющая хватательную функцию." + ru_names = list( + NOMINATIVE = "правый захват", + GENITIVE = "правого захвата", + DATIVE = "правому захвату", + ACCUSATIVE = "правый захват", + INSTRUMENTAL = "правым захватом", + PREPOSITIONAL = "правом захвате" + ) + gender = MALE + amputation_point = "правую верхнюю ветку" /obj/item/organ/external/head/diona species_type = /datum/species/diona + name = "upper trunk" + desc = "Верхнее ответвление ствола." + ru_names = list( + NOMINATIVE = "верхнее ответвление", + GENITIVE = "верхнего ответвления", + DATIVE = "верхнему ответвлению", + ACCUSATIVE = "верхнее ответвление", + INSTRUMENTAL = "верхним ответвлением", + PREPOSITIONAL = "верхнем ответвлении" + ) + gender = NEUTER max_damage = 50 min_broken_damage = 25 encased = null - amputation_point = "upper trunk" + amputation_point = "верхний ствол" gendered_icon = FALSE /obj/item/organ/diona/process() @@ -84,16 +173,30 @@ /obj/item/organ/internal/brain/diona species_type = /datum/species/diona name = "neural strata" + desc = "Прослойка из нейронной ткани, центральный орган нервной системы гештальта. Эта принадлежала дионе." + ru_names = list( + NOMINATIVE = "нейронная прослойка дионы", + GENITIVE = "нейронной прослойки дионы", + DATIVE = "нейронной прослойке дионы", + ACCUSATIVE = "нейронную прослойку дионы", + INSTRUMENTAL = "нейронной прослойкой дионы", + PREPOSITIONAL = "нейронной прослойке дионы" + ) + gender = FEMALE icon = 'icons/obj/objects.dmi' icon_state = "nymph" dead_icon = null parent_organ_zone = BODY_ZONE_CHEST actions_types = list(/datum/action/item_action/organ_action/diona_brain_evacuation) +/obj/item/organ/internal/brain/diona/Initialize(mapload) + . = ..() + AddElement(/datum/element/diona_internals) + /datum/action/item_action/organ_action/diona_brain_evacuation - name = "Evacuation" + name = "Эвакуации" check_flags = 0 - desc = "Leave body as a nymph." + desc = "Покинуть тело в форме нимфы." /datum/action/item_action/organ_action/diona_brain_evacuation/IsAvailable() . = ..() @@ -103,8 +206,7 @@ /datum/action/item_action/organ_action/diona_brain_evacuation/Trigger(left_click = TRUE) . = ..() - var/confirm = alert("Вы уверены, что хотите покинуть свое тело как нимфа? (!Если использовать, пока живы, то лишитесь роли антагониста!)","Confirm evacuation","Yes","No") - if(confirm == "No") + if(tgui_alert(src, "Вы уверены, что хотите покинуть своё тело как нимфа? (Если использовать, пока вы живы, вас лишит роли антагониста!)", "Подтверждение эвакуации", list("Да", "Нет")) == "Нет") return if(. && istype(target, /obj/item/organ/internal/brain/diona)) @@ -126,81 +228,142 @@ /obj/item/organ/internal/kidneys/diona species_type = /datum/species/diona name = "filtrating vacuoles" + desc = "Парный орган, отвечающий за выведение токсинов и вредных веществ из биомассы гештальта. Эти принадлежали дионе." + ru_names = list( + NOMINATIVE = "фильтрационные вакуоли", + GENITIVE = "фильтрационных вакуолей", + DATIVE = "фильтрационным вакуолям", + ACCUSATIVE = "фильтрационные вакуоли", + INSTRUMENTAL = "фильтрационными вакуолями", + PREPOSITIONAL = "фильтрационных вакуолях" + ) icon = 'icons/obj/objects.dmi' icon_state = "nymph" +/obj/item/organ/internal/kidneys/diona/Initialize(mapload) + . = ..() + AddElement(/datum/element/diona_internals) + /obj/item/organ/internal/lungs/diona species_type = /datum/species/diona name = "gas bladder" + desc = "Парный орган, отвечающий за газообмен между внешней средой и биомассой гештальта. Эти принадлежали дионе." + ru_names = list( + NOMINATIVE = "газовые пузыри", + GENITIVE = "газовых пузырей", + DATIVE = "газовым пузырям", + ACCUSATIVE = "газовые пузыри", + INSTRUMENTAL = "газовыми пузырями", + PREPOSITIONAL = "газовых пузырях" + ) icon = 'icons/obj/objects.dmi' icon_state = "nymph" +/obj/item/organ/internal/lungs/diona/Initialize(mapload) + . = ..() + AddElement(/datum/element/diona_internals) + /obj/item/organ/internal/appendix/diona species_type = /datum/species/diona name = "polyp segment" + desc = "Наслоение биомассы. Является рудиментарным органом и не несёт полезной функции для гештальта. Этот принадлежал дионе." + ru_names = list( + NOMINATIVE = "сегментированный отросток", + GENITIVE = "сегментированного отростка", + DATIVE = "сегментированному отростку", + ACCUSATIVE = "сегментированный отросток", + INSTRUMENTAL = "сегментированным отростком", + PREPOSITIONAL = "сегментированном отростке" + ) icon = 'icons/obj/objects.dmi' icon_state = "nymph" +/obj/item/organ/internal/appendix/diona/Initialize(mapload) + . = ..() + AddElement(/datum/element/diona_internals) + /obj/item/organ/internal/heart/diona species_type = /datum/species/diona name = "anchoring ligament" + desc = "Орган, связывающий части гештальта воедино. Этот принадлежал дионе." + ru_names = list( + NOMINATIVE = "якорная связка", + GENITIVE = "якорной связки", + DATIVE = "якорной связке", + ACCUSATIVE = "якорную связку", + INSTRUMENTAL = "якорной связкой", + PREPOSITIONAL = "якорной связке" + ) + gender = FEMALE icon = 'icons/obj/objects.dmi' icon_state = "nymph" parent_organ_zone = BODY_ZONE_PRECISE_GROIN +/obj/item/organ/internal/heart/diona/Initialize(mapload) + . = ..() + AddElement(/datum/element/diona_internals) + /obj/item/organ/internal/heart/diona/update_icon_state() return /obj/item/organ/internal/eyes/diona species_type = /datum/species/diona name = "receptor node" + desc = "Светочувстительные мембраны, выполняющие зрительную функцию. Этот принадлежал дионе." + ru_names = list( + NOMINATIVE = "рецепторный узел", + GENITIVE = "рецепторного узла", + DATIVE = "рецепторному узлу", + ACCUSATIVE = "рецепторный узел", + INSTRUMENTAL = "рецепторным узлом", + PREPOSITIONAL = "рецепторном узле" + ) + gender = MALE icon = 'icons/mob/alien.dmi' icon_state = "claw" parent_organ_zone = BODY_ZONE_CHEST +/obj/item/organ/internal/eyes/diona/Initialize(mapload) + . = ..() + AddElement(/datum/element/diona_internals) + /obj/item/organ/internal/liver/diona species_type = /datum/species/diona name = "nutrient vessel" + desc = "Железа, отвечающая за метаболизацию поступающих в гештальт веществ. Эта принадлежала дионе." + ru_names = list( + NOMINATIVE = "питательная железа", + GENITIVE = "питательной железы", + DATIVE = "питательной железе", + ACCUSATIVE = "питательную железа", + INSTRUMENTAL = "питательной железой", + PREPOSITIONAL = "питательной железе" + ) icon = 'icons/mob/alien.dmi' icon_state = "claw" alcohol_intensity = 0.5 +/obj/item/organ/internal/liver/diona/Initialize(mapload) + . = ..() + AddElement(/datum/element/diona_internals) + /obj/item/organ/internal/ears/diona species_type = /datum/species/diona name = "oscillatory catcher" + desc = "Сгусток биомассы, улавливающий колебания в окружающей среде и отвечающий за ориентацию гештальта в пространстве. Этот принадлежал дионе." + ru_names = list( + NOMINATIVE = "колебательный уловитель", + GENITIVE = "колебательного уловителя", + DATIVE = "колебательному уловителю", + ACCUSATIVE = "колебательный уловитель", + INSTRUMENTAL = "колебательным уловителем", + PREPOSITIONAL = "колебательном уловителе" + ) + gender = MALE icon = 'icons/mob/alien.dmi' icon_state = "claw" - desc = "A strange organic object used by a Gestalt for orientation in a three-dimensional projection." parent_organ_zone = BODY_ZONE_PRECISE_GROIN - -/datum/component/diona_internals - - -/datum/component/diona_internals/Initialize() - if(!isatom(parent)) - return COMPONENT_INCOMPATIBLE - if(istype(parent, /obj/item/organ/internal)) - RegisterSignal(parent, COMSIG_ORGAN_REMOVED, PROC_REF(transform_organ)) - - -/datum/component/diona_internals/proc/transform_organ() - SIGNAL_HANDLER // COMSIG_ORGAN_REMOVED - - if(is_int_organ(parent)) - var/obj/item/organ/internal/organ = parent - var/mob/living/simple_animal/diona/nymph = new /mob/living/simple_animal/diona(get_turf(organ.owner)) - nymph.health = round(clamp(1 - organ.damage / organ.min_broken_damage, 0, 1) * nymph.maxHealth) - - if(istype(organ, /obj/item/organ/internal/brain)) - var/obj/item/organ/internal/brain/brain = organ - if(brain.brainmob) - nymph.random_name = FALSE - nymph.real_name = brain.brainmob.real_name - nymph.name = brain.brainmob.real_name - var/datum/mind/mind = brain.brainmob.mind - mind.transfer_to(nymph) - - qdel(organ) - - +/obj/item/organ/internal/ears/diona/Initialize(mapload) + . = ..() + AddElement(/datum/element/diona_internals) diff --git a/code/modules/surgery/organs/subtypes/drask.dm b/code/modules/surgery/organs/subtypes/drask.dm index 81b461d2a74f..fb2208803dcf 100644 --- a/code/modules/surgery/organs/subtypes/drask.dm +++ b/code/modules/surgery/organs/subtypes/drask.dm @@ -2,33 +2,140 @@ /obj/item/organ/internal/drask species_type = /datum/species/drask name = "drask organ" + desc = "Зеленоватый, слегка прозрачный орган. Он чрезвычайно холодный." + ru_names = list( + NOMINATIVE = "орган драска", + GENITIVE = "органа драска", + DATIVE = "органу драска", + ACCUSATIVE = "орган драска", + INSTRUMENTAL = "органом драска", + PREPOSITIONAL = "органе драска" + ) + gender = MALE icon = 'icons/obj/species_organs/drask.dmi' icon_state = "innards" - desc = "A greenish, slightly translucent organ. It is extremely cold." + item_state = "drask_innards" /obj/item/organ/internal/heart/drask species_type = /datum/species/drask name = "drask heart" + desc = "Орган, качающий криоксадон по организму драска." + ru_names = list( + NOMINATIVE = "сердце драска", + GENITIVE = "сердца драска", + DATIVE = "сердцу драска", + ACCUSATIVE = "сердце драска", + INSTRUMENTAL = "сердцем драска", + PREPOSITIONAL = "сердце драска" + ) icon = 'icons/obj/species_organs/drask.dmi' + item_state = "drask_heart-on" + item_base = "drask_heart" parent_organ_zone = BODY_ZONE_HEAD /obj/item/organ/internal/liver/drask species_type = /datum/species/drask name = "metabolic strainer" + desc = "Орган выделительной системы организма драска. Выделяет особый фермент, очищающий кровоток от токсинов и стимулирующий процесс клеточного деления." + ru_names = list( + NOMINATIVE = "метаболический фильтр", + GENITIVE = "метаболического фильтра", + DATIVE = "метаболическому фильтру", + ACCUSATIVE = "метаболический фильтр", + INSTRUMENTAL = "метаболическим фильтром", + PREPOSITIONAL = "метаболическом фильтре" + ) + gender = MALE icon = 'icons/obj/species_organs/drask.dmi' icon_state = "kidneys" + item_state = "drask_liver" alcohol_intensity = 0.8 /obj/item/organ/internal/brain/drask species_type = /datum/species/drask + desc = "Основной орган центральной нервной системы гуманоида. Фактически, именно здесь и находится разум. Этот принадлежал драску." + ru_names = list( + NOMINATIVE = "мозг драска", + GENITIVE = "мозга драска", + DATIVE = "мозгу драска", + ACCUSATIVE = "мозг драска", + INSTRUMENTAL = "мозгом драска", + PREPOSITIONAL = "мозге драска" + ) icon = 'icons/obj/species_organs/drask.dmi' icon_state = "brain2" + item_state = "drask_brain" mmi_icon = 'icons/obj/species_organs/drask.dmi' mmi_icon_state = "mmi_full" /obj/item/organ/internal/eyes/drask species_type = /datum/species/drask name = "drask eyeballs" + desc = "Парный орган, отвечающий за зрение - восприятие света и его трансформацию в видимое изображение. Эти принадлежали драску." + ru_names = list( + NOMINATIVE = "глаза драска", + GENITIVE = "глаз драска", + DATIVE = "глазам драска", + ACCUSATIVE = "глаза драска", + INSTRUMENTAL = "глазами драска", + PREPOSITIONAL = "глазах драска" + ) icon = 'icons/obj/species_organs/drask.dmi' - desc = "Drask eyes. They look even stranger disembodied." + item_state = "drask_eyes" see_in_dark = 5 + +/obj/item/organ/internal/ears/drask + species_type = /datum/species/drask + name = "drask ears" + desc = "Парный орган, отвечающий за аудиальное восприятие окружающей среды и получение информации о положении гуманоида в пространстве. Эти принадлежали драску." + ru_names = list( + NOMINATIVE = "уши драска", + GENITIVE = "ушей драска", + DATIVE = "ушам драска", + ACCUSATIVE = "уши драска", + INSTRUMENTAL = "ушами драска", + PREPOSITIONAL = "ушах драска" + ) + +/obj/item/organ/internal/lungs/drask + name = "drask lungs" + desc = "Парный орган, отвечающий за газообмен между внешней средой и кровотоком организма драска." + ru_names = list( + NOMINATIVE = "лёгкие драска", + GENITIVE = "лёгких драска", + DATIVE = "лёгким драска", + ACCUSATIVE = "лёгкие драска", + INSTRUMENTAL = "лёгкими драска", + PREPOSITIONAL = "лёгких драска" + ) + icon = 'icons/obj/species_organs/drask.dmi' + item_state = "drask_lungs" + cold_message = " освежающий холод" + cold_level_1_damage = -COLD_GAS_DAMAGE_LEVEL_1 //They heal when the air is cold + cold_level_2_damage = -COLD_GAS_DAMAGE_LEVEL_2 + cold_level_3_damage = -COLD_GAS_DAMAGE_LEVEL_3 + cold_damage_types = list(BRUTE = 0.5, BURN = 0.25) + + var/cooling_start_temp = DRASK_LUNGS_COOLING_START_TEMP + var/cooling_stop_temp = DRASK_LUNGS_COOLING_STOP_TEMP + +/obj/item/organ/internal/lungs/drask/insert(mob/living/carbon/target, special = ORGAN_MANIPULATION_DEFAULT) + . = ..() + + if(!.) + return FALSE + + RegisterSignal(owner, COMSIG_HUMAN_EARLY_HANDLE_ENVIRONMENT, PROC_REF(regulate_temperature)) + +/obj/item/organ/internal/lungs/drask/proc/regulate_temperature(mob/living/source, datum/gas_mixture/environment) + SIGNAL_HANDLER + + if(source.stat == DEAD) + return + + if(owner.bodytemperature > cooling_start_temp && environment.temperature <= cooling_stop_temp) + owner.adjust_bodytemperature(-5) + +/obj/item/organ/internal/lungs/drask/remove(mob/living/user, special = ORGAN_MANIPULATION_DEFAULT) + UnregisterSignal(owner, COMSIG_HUMAN_EARLY_HANDLE_ENVIRONMENT) + return ..() diff --git a/code/modules/surgery/organs/subtypes/grey.dm b/code/modules/surgery/organs/subtypes/grey.dm index 19b95cd48315..510c45c3093f 100644 --- a/code/modules/surgery/organs/subtypes/grey.dm +++ b/code/modules/surgery/organs/subtypes/grey.dm @@ -1,17 +1,36 @@ /obj/item/organ/internal/liver/grey species_type = /datum/species/grey name = "grey liver" - desc = "A small, odd looking liver." + desc = "Маленькая печень серого цвета - орган, выполняющий множество функций, таких как фильтрация кровотока от вредных веществ, синтез необходимых белков и ферментов и удаление токсинов из организма." + ru_names = list( + NOMINATIVE = "печень серого", + GENITIVE = "печени серого", + DATIVE = "печени серого", + ACCUSATIVE = "печень серого", + INSTRUMENTAL = "печенью серого", + PREPOSITIONAL = "печени серого" + ) icon = 'icons/obj/species_organs/grey.dmi' - alcohol_intensity = 1.6 + item_state = "grey_liver" + alcohol_intensity = 1.4 /obj/item/organ/internal/brain/grey species_type = /datum/species/grey - desc = "A large brain" + desc = "Основной орган центральной нервной системы гуманоида. Фактически, именно здесь и находится разум. Этот принадлежал серому." + ru_names = list( + NOMINATIVE = "мозг серого", + GENITIVE = "мозга серого", + DATIVE = "мозгу серого", + ACCUSATIVE = "мозг серого", + INSTRUMENTAL = "мозгом серого", + PREPOSITIONAL = "мозге серого" + ) icon = 'icons/obj/species_organs/grey.dmi' icon_state = "brain2" + item_state = "grey_brain" mmi_icon = 'icons/obj/species_organs/grey.dmi' mmi_icon_state = "mmi_full" + smart_mind = TRUE // nerd brains show us sci-hud and research scanner /obj/item/organ/internal/brain/grey/insert(mob/living/carbon/M, special = ORGAN_MANIPULATION_DEFAULT) . = ..() @@ -24,21 +43,75 @@ /obj/item/organ/internal/eyes/grey species_type = /datum/species/grey name = "grey eyeballs" - desc = "They still look creepy and emotionless." + desc = "Парный орган, отвечающий за зрение - восприятие света и его трансформацию в видимое изображение. Даже в таком виде они выглядят абсолютно пустыми и безэмоциональными." + ru_names = list( + NOMINATIVE = "глаза серого", + GENITIVE = "глаз серого", + DATIVE = "глазам серого", + ACCUSATIVE = "глаза серого", + INSTRUMENTAL = "глазами серого", + PREPOSITIONAL = "глазах серого" + ) icon = 'icons/obj/species_organs/grey.dmi' - see_in_dark = 5 + item_state = "grey_eyes" + see_in_dark = 3 + examine_mod = EXAMINE_INSTANT // Insta carbon examine + +/obj/item/organ/internal/ears/grey + species_type = /datum/species/grey + name = "grey ears" + desc = "Парный орган, отвечающий за аудиальное восприятие окружающей среды и получение информации о положении гуманоида в пространстве. Эти принадлежали серому." + ru_names = list( + NOMINATIVE = "уши серого", + GENITIVE = "ушей серого", + DATIVE = "ушам серого", + ACCUSATIVE = "уши серого", + INSTRUMENTAL = "ушами серого", + PREPOSITIONAL = "ушах серого" + ) /obj/item/organ/internal/heart/grey species_type = /datum/species/grey name = "grey heart" + desc = "Орган, качающий кровь или её заменяющую субстанцию по организму гуманоида. Это принадлежало серому." + ru_names = list( + NOMINATIVE = "сердце серого", + GENITIVE = "сердца серого", + DATIVE = "сердцу серого", + ACCUSATIVE = "сердце серого", + INSTRUMENTAL = "сердцем серого", + PREPOSITIONAL = "сердце серого" + ) icon = 'icons/obj/species_organs/grey.dmi' + item_state = "grey_heart-on" + item_base = "grey_heart" /obj/item/organ/internal/lungs/grey species_type = /datum/species/grey name = "grey lungs" + desc = "Парный орган, отвечающий за газообмен между внешней средой и кровотоком организма гуманоида. Эти принадлежали серому." + ru_names = list( + NOMINATIVE = "лёгкие серого", + GENITIVE = "лёгких серого", + DATIVE = "лёгким серого", + ACCUSATIVE = "лёгкие серого", + INSTRUMENTAL = "лёгкими серого", + PREPOSITIONAL = "лёгких серого" + ) icon = 'icons/obj/species_organs/grey.dmi' + item_state = "grey_lungs" /obj/item/organ/internal/kidneys/grey species_type = /datum/species/grey name = "grey kidneys" + desc = "Парный орган, отвечающий за фильтрацию кровотока и выведение токсинов и отходов из организма. Эти принадлежали серому." + ru_names = list( + NOMINATIVE = "почки серого", + GENITIVE = "почек серого", + DATIVE = "почкам серого", + ACCUSATIVE = "почки серого", + INSTRUMENTAL = "почками серого", + PREPOSITIONAL = "почках серого" + ) icon = 'icons/obj/species_organs/grey.dmi' + item_state = "grey_kidneys" diff --git a/code/modules/surgery/organs/subtypes/kidan.dm b/code/modules/surgery/organs/subtypes/kidan.dm index fdfc7a93cb49..a0ee8165fe66 100644 --- a/code/modules/surgery/organs/subtypes/kidan.dm +++ b/code/modules/surgery/organs/subtypes/kidan.dm @@ -1,7 +1,17 @@ /obj/item/organ/internal/liver/kidan species_type = /datum/species/kidan name = "kidan liver" + desc = "Орган, выполняющий множество функций, таких как фильтрация кровотока от вредных веществ, синтез необходимых белков и ферментов и удаление токсинов из организма. Эта принадлежала кидану." + ru_names = list( + NOMINATIVE = "печень кидана", + GENITIVE = "печени кидана", + DATIVE = "печени кидана", + ACCUSATIVE = "печень кидана", + INSTRUMENTAL = "печенью кидана", + PREPOSITIONAL = "печени кидана" + ) icon = 'icons/obj/species_organs/kidan.dmi' + item_state = "kidan_liver" alcohol_intensity = 0.5 @@ -12,9 +22,19 @@ /obj/item/organ/internal/lantern species_type = /datum/species/kidan name = "Bioluminescent Lantern" - desc = "A specialized tissue that reacts with oxygen, nutriment and blood to produce light in Kidan." + desc = "Специальная железа, состоящая из ткани, которая излучает свет за счёт химической реакции кислорода, белков и крови. Эта принадлежала кидану." + ru_names = list( + NOMINATIVE = "биолюминесцентная железа", + GENITIVE = "биолюминесцентной железы", + DATIVE = "биолюминесцентной железе", + ACCUSATIVE = "биолюминесцентную железу", + INSTRUMENTAL = "биолюминесцентной железй", + PREPOSITIONAL = "биолюминесцентной железе" + ) + gender = FEMALE icon = 'icons/obj/species_organs/kidan.dmi' icon_state = "kid_lantern" + item_state = "kidan_lantern" origin_tech = "biotech=2" w_class = WEIGHT_CLASS_TINY parent_organ_zone = BODY_ZONE_PRECISE_GROIN @@ -26,21 +46,23 @@ /obj/item/organ/internal/lantern/ui_action_click(mob/user, datum/action/action, leftclick) if(toggle_biolum()) if(glowing) - owner.visible_message(span_notice("[owner] starts to glow!"), span_notice("You enable your bioluminescence.")) + owner.visible_message(span_notice("[owner] начина[pluralize_ru(owner.gender, "ет", "ют")] светиться.")) + balloon_alert(owner, "световая железа активирована") else - owner.visible_message(span_notice("[owner] fades to dark."), span_notice("You disable your bioluminescence.")) + owner.visible_message(span_notice("[owner] переста[pluralize_ru(owner.gender, "ёт", "ют")] светиться.")) + balloon_alert(owner, "световая железа деактивирована") /obj/item/organ/internal/lantern/on_life() ..() if(glowing)//i hate this but i couldnt figure out a better way if(owner.nutrition < KIDAN_LANTERN_MINHUNGER) toggle_biolum(1) - owner.balloon_alert(owner, "слишком голодный, чтобы светиться!") + balloon_alert(owner, "организм слишком истощён!") return if(owner.stat) toggle_biolum(1) - owner.visible_message(span_notice("[owner] fades to dark.")) + owner.visible_message(span_notice("[owner] переста[pluralize_ru(owner.gender, "ёт", "ют")] светиться.")) return owner.set_nutrition(max(owner.nutrition - KIDAN_LANTERN_HUNGERCOST, KIDAN_LANTERN_HUNGERCOST)) @@ -63,11 +85,11 @@ /obj/item/organ/internal/lantern/proc/toggle_biolum(statoverride) if(!statoverride && owner.incapacitated()) - owner.balloon_alert(owner, "не в текущем состоянии!") + balloon_alert(owner, "невозможно сейч!ас") return 0 if(!statoverride && owner.nutrition < KIDAN_LANTERN_MINHUNGER) - owner.balloon_alert(owner, "слишком голодный, чтобы светиться!") + balloon_alert(owner, "организм слишком истощён!") return 0 if(!colour) @@ -117,17 +139,61 @@ /obj/item/organ/internal/eyes/kidan species_type = /datum/species/kidan name = "kidan eyeballs" + desc = "Парный орган, отвечающий за зрение - восприятие света и его трансформацию в видимое изображение. Эти принадлежали кидану." + ru_names = list( + NOMINATIVE = "глаза кидана", + GENITIVE = "глаз кидана", + DATIVE = "глазам кидана", + ACCUSATIVE = "глаза кидана", + INSTRUMENTAL = "глазами кидана", + PREPOSITIONAL = "глазах кидана" + ) icon = 'icons/obj/species_organs/kidan.dmi' + item_state = "kidan_eyes" + +/obj/item/organ/internal/ears/kidan + species_type = /datum/species/kidan + name = "kidan ears" + desc = "Парный орган, отвечающий за аудиальное восприятие окружающей среды и получение информации о положении гуманоида в пространстве. Эти принадлежали кидану." + ru_names = list( + NOMINATIVE = "уши кидана", + GENITIVE = "ушей кидана", + DATIVE = "ушам кидана", + ACCUSATIVE = "уши кидана", + INSTRUMENTAL = "ушами кидана", + PREPOSITIONAL = "ушах кидана" + ) /obj/item/organ/internal/heart/kidan species_type = /datum/species/kidan name = "kidan heart" + desc = "Орган, качающий кровь или её заменяющую субстанцию по организму гуманоида. Это принадлежало кидану." + ru_names = list( + NOMINATIVE = "сердце кидана", + GENITIVE = "сердца кидана", + DATIVE = "сердцу кидана", + ACCUSATIVE = "сердце кидана", + INSTRUMENTAL = "сердцем кидана", + PREPOSITIONAL = "сердце кидана" + ) icon = 'icons/obj/species_organs/kidan.dmi' + item_state = "kidan_heart-on" + item_base = "kidan_heart" /obj/item/organ/internal/brain/kidan species_type = /datum/species/kidan + desc = "Основной орган центральной нервной системы гуманоида. Фактически, именно здесь и находится разум. Этот принадлежал кидану." + ru_names = list( + NOMINATIVE = "мозг кидана", + GENITIVE = "мозга кидана", + DATIVE = "мозгу кидана", + ACCUSATIVE = "мозг кидана", + INSTRUMENTAL = "мозгом кидана", + PREPOSITIONAL = "мозге кидана" + ) icon = 'icons/obj/species_organs/kidan.dmi' icon_state = "brain2" + item_state = "kidan_brain" mmi_icon = 'icons/obj/species_organs/kidan.dmi' mmi_icon_state = "mmi_full" parent_organ_zone = BODY_ZONE_CHEST @@ -146,16 +212,36 @@ /obj/item/organ/internal/lungs/kidan species_type = /datum/species/kidan name = "kidan lungs" + desc = "Парный орган, отвечающий за газообмен между внешней средой и кровотоком организма гуманоида. Эти принадлежали кидану." + ru_names = list( + NOMINATIVE = "лёгкие кидана", + GENITIVE = "лёгких кидана", + DATIVE = "лёгким кидана", + ACCUSATIVE = "лёгкие кидана", + INSTRUMENTAL = "лёгкими кидана", + PREPOSITIONAL = "лёгких кидана" + ) icon = 'icons/obj/species_organs/kidan.dmi' + item_state = "kidan_lungs" /obj/item/organ/internal/kidneys/kidan species_type = /datum/species/kidan name = "kidan kidneys" + desc = "Парный орган, отвечающий за фильтрацию кровотока и выведение токсинов и отходов из организма. Эти принадлежали кидану." + ru_names = list( + NOMINATIVE = "почки кидана", + GENITIVE = "почек кидана", + DATIVE = "почкам кидана", + ACCUSATIVE = "почки кидана", + INSTRUMENTAL = "почками кидана", + PREPOSITIONAL = "почках кидана" + ) icon = 'icons/obj/species_organs/kidan.dmi' + item_state = "kidan_kidneys" /obj/item/organ/external/head/kidan species_type = /datum/species/kidan - encased = "head chitin" + encased = "хитиновую оболочку на голове" /obj/item/organ/external/head/kidan/remove(mob/living/user, special = ORGAN_MANIPULATION_DEFAULT, ignore_children = FALSE) if(iskidan(owner)) @@ -169,11 +255,11 @@ target.adjustBrainLoss(30) /obj/item/organ/external/chest/kidan - encased = "chitin armour" + encased = "хитиновую оболочку на груди" convertable_children = list(/obj/item/organ/external/groin/kidan) /obj/item/organ/external/groin/kidan - encased = "groin chitin" + encased = "хитиновую оболочку на животе" #undef KIDAN_LANTERN_HUNGERCOST #undef KIDAN_LANTERN_MINHUNGER diff --git a/code/modules/surgery/organs/subtypes/machine.dm b/code/modules/surgery/organs/subtypes/machine.dm index aa7ab9417939..4dd3865bfece 100644 --- a/code/modules/surgery/organs/subtypes/machine.dm +++ b/code/modules/surgery/organs/subtypes/machine.dm @@ -10,8 +10,9 @@ pickup_sound = 'sound/items/handling/component_pickup.ogg' drop_sound = 'sound/items/handling/component_drop.ogg' -/obj/item/organ/external/head/ipc/New() - ..() +/obj/item/organ/external/head/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/chest/ipc @@ -22,8 +23,9 @@ pickup_sound = 'sound/items/handling/component_pickup.ogg' drop_sound = 'sound/items/handling/component_drop.ogg' -/obj/item/organ/external/chest/ipc/New() - ..() +/obj/item/organ/external/chest/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/groin/ipc @@ -34,8 +36,9 @@ pickup_sound = 'sound/items/handling/component_pickup.ogg' drop_sound = 'sound/items/handling/component_drop.ogg' -/obj/item/organ/external/groin/ipc/New() - ..() +/obj/item/organ/external/groin/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/arm/ipc @@ -46,8 +49,9 @@ pickup_sound = 'sound/items/handling/component_pickup.ogg' drop_sound = 'sound/items/handling/component_drop.ogg' -/obj/item/organ/external/arm/ipc/New() - ..() +/obj/item/organ/external/arm/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/arm/right/ipc @@ -56,8 +60,9 @@ status = ORGAN_ROBOT emp_resistant = TRUE -/obj/item/organ/external/arm/right/ipc/New() - ..() +/obj/item/organ/external/arm/right/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/leg/ipc @@ -68,8 +73,9 @@ pickup_sound = 'sound/items/handling/component_pickup.ogg' drop_sound = 'sound/items/handling/component_drop.ogg' -/obj/item/organ/external/leg/ipc/New() - ..() +/obj/item/organ/external/leg/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/leg/right/ipc @@ -78,8 +84,9 @@ status = ORGAN_ROBOT emp_resistant = TRUE -/obj/item/organ/external/leg/right/ipc/New() - ..() +/obj/item/organ/external/leg/right/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/foot/ipc @@ -90,8 +97,9 @@ pickup_sound = 'sound/items/handling/component_pickup.ogg' drop_sound = 'sound/items/handling/component_drop.ogg' -/obj/item/organ/external/foot/ipc/New() - ..() +/obj/item/organ/external/foot/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/foot/right/ipc @@ -100,8 +108,9 @@ status = ORGAN_ROBOT emp_resistant = TRUE -/obj/item/organ/external/foot/right/ipc/New() - ..() +/obj/item/organ/external/foot/right/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/hand/ipc @@ -112,8 +121,9 @@ pickup_sound = 'sound/items/handling/component_pickup.ogg' drop_sound = 'sound/items/handling/component_drop.ogg' -/obj/item/organ/external/hand/ipc/New() - ..() +/obj/item/organ/external/hand/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/hand/right/ipc @@ -122,14 +132,24 @@ status = ORGAN_ROBOT emp_resistant = TRUE -/obj/item/organ/external/hand/right/ipc/New() - ..() +/obj/item/organ/external/hand/right/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/internal/cell species_type = /datum/species/machine name = "microbattery" - desc = "A small, powerful cell for use in fully prosthetic bodies." + desc = "Маленькая, но мощная батарея, используемая для питания роботизированных систем. Такие устанавливаются в КПБ." + ru_names = list( + NOMINATIVE = "микробатарея", + GENITIVE = "микробатареи", + DATIVE = "микробатарее", + ACCUSATIVE = "микробатарею", + INSTRUMENTAL = "микробатареей", + PREPOSITIONAL = "микробатарее" + ) + gender = FEMALE icon = 'icons/obj/engines_and_power/power.dmi' icon_state = "scell" parent_organ_zone = BODY_ZONE_CHEST @@ -142,6 +162,16 @@ /obj/item/organ/internal/eyes/optical_sensor species_type = /datum/species/machine name = "optical sensor" + desc = "Сенсор, оснащённый светочувствительной матрицей, выполняет зрительную функцию. Такие устанавливаются в КПБ." + ru_names = list( + NOMINATIVE = "оптический сенсор", + GENITIVE = "оптического сенсора", + DATIVE = "оптическому сенсору", + ACCUSATIVE = "оптический сенсор", + INSTRUMENTAL = "оптическим сенсором", + PREPOSITIONAL = "оптическом сенсоре" + ) + gender = MALE icon = 'icons/obj/robot_component.dmi' icon_state = "camera" status = ORGAN_ROBOT @@ -152,13 +182,22 @@ /obj/item/organ/internal/eyes/optical_sensor/remove(mob/living/user, special = ORGAN_MANIPULATION_DEFAULT) if(!special) - to_chat(owner, "Error 404:Optical Sensors not found.") + to_chat(owner, span_userdanger("Ошибка #404: ОПТИЧЕСКИЙ СЕНСОР - не обнаружено.")) . = ..() /obj/item/organ/internal/brain/mmi_holder/posibrain species_type = /datum/species/machine name = "positronic brain" + desc = "Компьютер, обладающий огромной вычислительной мощностью, содержит внутри себя синтетический разум. Именно здесь и находится сознание КПБ." + ru_names = list( + NOMINATIVE = "позитронный мозг", + GENITIVE = "позитронного мозга", + DATIVE = "позитронному мозгу", + ACCUSATIVE = "позитронный мозг", + INSTRUMENTAL = "позитронным мозгом", + PREPOSITIONAL = "позитронном мозге" + ) pickup_sound = 'sound/items/handling/component_pickup.ogg' drop_sound = 'sound/items/handling/component_drop.ogg' @@ -172,6 +211,9 @@ /obj/item/organ/internal/brain/mmi_holder/posibrain/remove(mob/living/user, special = ORGAN_MANIPULATION_DEFAULT) if(stored_mmi && dna) stored_mmi.name = "[initial(name)] ([dna.real_name])" + if(stored_mmi.ru_names) + for(var/i = 1; i <=6; i++) + stored_mmi.ru_names[i] = initial(ru_names[i]) + " [dna.real_name]" stored_mmi.brainmob.real_name = dna.real_name stored_mmi.brainmob.name = stored_mmi.brainmob.real_name stored_mmi.icon_state = "posibrain-occupied" @@ -182,6 +224,15 @@ /obj/item/organ/internal/ears/microphone species_type = /datum/species/machine name = "microphone" + desc = "Пара микрофонов. Используются для получения аудиальной информации об окружающей среде. Такие устанавливаются в КПБ." + ru_names = list( + NOMINATIVE = "парные микрофоны", + GENITIVE = "парных микрофонов", + DATIVE = "парным микрофонам", + ACCUSATIVE = "парные микрофоны", + INSTRUMENTAL = "парными микрофонами", + PREPOSITIONAL = "парных микрофонах" + ) icon = 'icons/obj/device.dmi' icon_state = "taperecorder_idle" status = ORGAN_ROBOT @@ -191,5 +242,5 @@ /obj/item/organ/internal/ears/microphone/remove(mob/living/user, special = ORGAN_MANIPULATION_DEFAULT) if(!special) - to_chat(owner, span_userdanger("BZZZZZZZZZZZZZZT! Microphone error!")) + to_chat(owner, span_userdanger("Ошибка #406: МИКРОФОН - не обнаружено.")) . = ..() diff --git a/code/modules/surgery/organs/subtypes/moth.dm b/code/modules/surgery/organs/subtypes/moth.dm index a1d0b0293c82..98cea9f78aa4 100644 --- a/code/modules/surgery/organs/subtypes/moth.dm +++ b/code/modules/surgery/organs/subtypes/moth.dm @@ -1,30 +1,112 @@ /obj/item/organ/internal/eyes/nian - name = "moth eyeballs" + name = "luam eyeballs" + desc = "Парный орган, отвечающий за зрение - восприятие света и его трансформацию в видимое изображение. Эти принадлежали луам." + ru_names = list( + NOMINATIVE = "глаза луам", + GENITIVE = "глаз луам", + DATIVE = "глазам луам", + ACCUSATIVE = "глаза луам", + INSTRUMENTAL = "глазами луам", + PREPOSITIONAL = "глазах луам" + ) + item_state = "nian_eyes" see_in_dark = 5 +/obj/item/organ/internal/ears/nian + name = "luam ears" + desc = "Парный орган, отвечающий за аудиальное восприятие окружающей среды и получение информации о положении гуманоида в пространстве. Эти принадлежали луам." + ru_names = list( + NOMINATIVE = "уши луам", + GENITIVE = "ушей луам", + DATIVE = "ушам луам", + ACCUSATIVE = "уши луам", + INSTRUMENTAL = "ушами луам", + PREPOSITIONAL = "ушах луам" + ) + /obj/item/organ/internal/liver/nian - name = "nian liver" + name = "luam liver" + desc = "Орган, выполняющий множество функций, таких как фильтрация кровотока от вредных веществ, синтез необходимых белков и ферментов и удаление токсинов из организма. Эта принадлежала луам." + ru_names = list( + NOMINATIVE = "печень луам", + GENITIVE = "печени луам", + DATIVE = "печени луам", + ACCUSATIVE = "печень луам", + INSTRUMENTAL = "печенью луам", + PREPOSITIONAL = "печени луам" + ) icon = 'icons/obj/species_organs/nian.dmi' + item_state = "nian_liver" /obj/item/organ/internal/heart/nian - name = "nian heart" + name = "luam heart" + desc = "Орган, качающий кровь или её заменяющую субстанцию по организму гуманоида. Это принадлежало луам." + ru_names = list( + NOMINATIVE = "сердце луам", + GENITIVE = "сердца луам", + DATIVE = "сердцу луам", + ACCUSATIVE = "сердце луам", + INSTRUMENTAL = "сердцем луам", + PREPOSITIONAL = "сердце луам" + ) icon = 'icons/obj/species_organs/nian.dmi' + item_state = "nian_heart-on" + item_base = "nian_heart" /obj/item/organ/internal/brain/nian + desc = "Основной орган центральной нервной системы гуманоида. Фактически, именно здесь и находится разум. Этот принадлежал луам." + ru_names = list( + NOMINATIVE = "мозг луам", + GENITIVE = "мозга луам", + DATIVE = "мозгу луам", + ACCUSATIVE = "мозг луам", + INSTRUMENTAL = "мозгом луам", + PREPOSITIONAL = "мозге луам" + ) icon = 'icons/obj/species_organs/nian.dmi' icon_state = "brain2" + item_state = "nian_brain" mmi_icon = 'icons/obj/species_organs/nian.dmi' mmi_icon_state = "mmi_full" /obj/item/organ/internal/lungs/nian - name = "nian lungs" + name = "luam lungs" + desc = "Парный орган, отвечающий за газообмен между внешней средой и кровотоком организма гуманоида. Эти принадлежали луам." + ru_names = list( + NOMINATIVE = "лёгкие луам", + GENITIVE = "лёгких луам", + DATIVE = "лёгким луам", + ACCUSATIVE = "лёгкие луам", + INSTRUMENTAL = "лёгкими луам", + PREPOSITIONAL = "лёгких луам" + ) icon = 'icons/obj/species_organs/nian.dmi' + item_state = "nian_lungs" /obj/item/organ/internal/kidneys/nian - name = "nian kidneys" + name = "luam kidneys" + desc = "Парный орган, отвечающий за фильтрацию кровотока и выведение токсинов и отходов из организма. Эти принадлежали луам." + ru_names = list( + NOMINATIVE = "почки луам", + GENITIVE = "почек луам", + DATIVE = "почкам луам", + ACCUSATIVE = "почки луам", + INSTRUMENTAL = "почками луам", + PREPOSITIONAL = "почках луам" + ) icon = 'icons/obj/species_organs/nian.dmi' + item_state = "nian_kidneys" /obj/item/organ/external/wing/nian + name = "luam wings" + desc = "Крылья. Эти принадлежали луам." + ru_names = list( + NOMINATIVE = "крылья луам", + GENITIVE = "крыльев луам", + DATIVE = "крыльям луам", + ACCUSATIVE = "крылья луам", + INSTRUMENTAL = "крыльями луам", + PREPOSITIONAL = "крыльях луам" + ) max_damage = 25 - name = "nian wings" min_broken_damage = 15 diff --git a/code/modules/surgery/organs/subtypes/nucleation.dm b/code/modules/surgery/organs/subtypes/nucleation.dm index 59daeeb884fa..a53ce54f4db2 100644 --- a/code/modules/surgery/organs/subtypes/nucleation.dm +++ b/code/modules/surgery/organs/subtypes/nucleation.dm @@ -3,11 +3,19 @@ species_type = /datum/species/nucleation name = "nucleation organ" icon = 'icons/obj/surgery.dmi' - desc = "A crystalized human organ. It has a strangely iridescent glow." /obj/item/organ/internal/nucleation/resonant_crystal name = "resonant crystal" + desc = "Жёлтого цвета странно выглядящий кристалл. Судя по всему, он принадлежал нуклеату." + ru_names = list( + NOMINATIVE = "резонантный кристалл", + GENITIVE = "резонантного кристалла", + DATIVE = "резонантному кристаллу", + ACCUSATIVE = "резонантный кристалл", + INSTRUMENTAL = "резонантным кристаллом", + PREPOSITIONAL = "резонантном кристалле" + ) icon_state = "resonant-crystal" parent_organ_zone = BODY_ZONE_HEAD slot = INTERNAL_ORGAN_RESONANT_CRYSTAL @@ -15,6 +23,15 @@ /obj/item/organ/internal/nucleation/strange_crystal name = "strange crystal" + desc = "Жёлтого цвета странно выглядящий кристалл. Судя по всему, он принадлежал нуклеату." + ru_names = list( + NOMINATIVE = "странный кристалл", + GENITIVE = "странного кристалла", + DATIVE = "странному кристаллу", + ACCUSATIVE = "странный кристалл", + INSTRUMENTAL = "странным кристаллом", + PREPOSITIONAL = "странном кристалле" + ) icon_state = "strange-crystal" parent_organ_zone = BODY_ZONE_CHEST slot = INTERNAL_ORGAN_STRANGE_CRYSTAL @@ -23,6 +40,15 @@ /obj/item/organ/internal/eyes/luminescent_crystal species_type = /datum/species/nucleation name = "luminescent eyes" + desc = "Необычного вида глаза, источающие свет. Эти принадлежали нуклеату." + ru_names = list( + NOMINATIVE = "люминесцентные глаза", + GENITIVE = "люминесцентных глаз", + DATIVE = "люминесцентным глазам", + ACCUSATIVE = "люминесцентные глаза", + INSTRUMENTAL = "люминесцентными глазами", + PREPOSITIONAL = "люминесцентных глазах" + ) icon_state = "crystal-eyes" light_color = "#f7f792" light_system = MOVABLE_LIGHT @@ -32,6 +58,15 @@ /obj/item/organ/internal/brain/crystal species_type = /datum/species/nucleation name = "crystallized brain" + desc = "Основной орган центральной нервной системы гуманоида. Фактически, именно здесь и находится разум. Судя по кристаллизированной структуре, этот принадлежал нуклеату." + ru_names = list( + NOMINATIVE = "кристаллизированный мозг", + GENITIVE = "кристаллизированного мозга", + DATIVE = "кристаллизированному мозгу", + ACCUSATIVE = "кристаллизированный мозг", + INSTRUMENTAL = "кристаллизированным мозгом", + PREPOSITIONAL = "кристаллизированном мозге" + ) icon_state = "crystal-brain" /obj/item/organ/internal/brain/crystal/insert(mob/living/target, special = ORGAN_MANIPULATION_DEFAULT) diff --git a/code/modules/surgery/organs/subtypes/plasmaman.dm b/code/modules/surgery/organs/subtypes/plasmaman.dm index 0ab8bc448e56..3d044d70652a 100644 --- a/code/modules/surgery/organs/subtypes/plasmaman.dm +++ b/code/modules/surgery/organs/subtypes/plasmaman.dm @@ -1,26 +1,108 @@ /obj/item/organ/internal/liver/plasmaman species_type = /datum/species/plasmaman name = "plasmaman liver" + desc = "Орган, выполняющий множество функций, таких как фильтрация кровотока от вредных веществ, синтез необходимых белков и ферментов и удаление токсинов из организма. Эта принадлежала плазмолюду." + ru_names = list( + NOMINATIVE = "печень плазмолюда", + GENITIVE = "печени плазмолюда", + DATIVE = "печени плазмолюда", + ACCUSATIVE = "печень плазмолюда", + INSTRUMENTAL = "печенью плазмолюда", + PREPOSITIONAL = "печени плазмолюда" + ) icon = 'icons/obj/species_organs/plasmaman.dmi' + item_state = "plasmaman_liver" /obj/item/organ/internal/eyes/plasmaman species_type = /datum/species/plasmaman name = "plasmaman eyeballs" + desc = "Парный орган, отвечающий за зрение - восприятие света и его трансформацию в видимое изображение. Эти принадлежали плазмолюду." + ru_names = list( + NOMINATIVE = "глаза плазмолюда", + GENITIVE = "глаз плазмолюда", + DATIVE = "глазам плазмолюда", + ACCUSATIVE = "глаза плазмолюда", + INSTRUMENTAL = "глазами плазмолюда", + PREPOSITIONAL = "глазах плазмолюда" + ) icon = 'icons/obj/species_organs/plasmaman.dmi' + item_state = "plasmaman_eyes" + +/obj/item/organ/internal/ears/plasmaman + species_type = /datum/species/plasmaman + name = "plasmaman ears" + desc = "Парный орган, отвечающий за аудиальное восприятие окружающей среды и получение информации о положении гуманоида в пространстве. Эти принадлежали плазмолюду." + ru_names = list( + NOMINATIVE = "уши плазмолюда", + GENITIVE = "ушей плазмолюда", + DATIVE = "ушам плазмолюда", + ACCUSATIVE = "уши плазмолюда", + INSTRUMENTAL = "ушами плазмолюда", + PREPOSITIONAL = "ушах плазмолюда" + ) /obj/item/organ/internal/heart/plasmaman species_type = /datum/species/plasmaman name = "plasmaman heart" + desc = "Орган, выполняющий роль катализатора в процессе выщелачивания плазмы из поступающих в организм газов. Это принадлежало плазмолюду." + ru_names = list( + NOMINATIVE = "сердце плазмолюда", + GENITIVE = "сердца плазмолюда", + DATIVE = "сердцу плазмолюда", + ACCUSATIVE = "сердце плазмолюда", + INSTRUMENTAL = "сердцем плазмолюда", + PREPOSITIONAL = "сердце плазмолюда" + ) icon = 'icons/obj/species_organs/plasmaman.dmi' + item_state = "plasmaman_heart-on" + item_base = "plasmaman_heart" /obj/item/organ/internal/brain/plasmaman species_type = /datum/species/plasmaman + desc = "Основной орган центральной нервной системы гуманоида. Фактически, именно здесь и находится разум. Этот принадлежал плазмолюду." + ru_names = list( + NOMINATIVE = "мозг плазмолюда", + GENITIVE = "мозга плазмолюда", + DATIVE = "мозгу плазмолюда", + ACCUSATIVE = "мозг плазмолюда", + INSTRUMENTAL = "мозгом плазмолюда", + PREPOSITIONAL = "мозге плазмолюда" + ) icon = 'icons/obj/species_organs/plasmaman.dmi' icon_state = "brain2" + item_state = "plasmaman_brain" mmi_icon = 'icons/obj/species_organs/plasmaman.dmi' mmi_icon_state = "mmi_full" /obj/item/organ/internal/kidneys/plasmaman species_type = /datum/species/plasmaman name = "plasmaman kidneys" + desc = "Парный орган, отвечающий за фильтрацию кровотока и выведение токсинов и отходов из организма. Эти принадлежали плазмолюду." + ru_names = list( + NOMINATIVE = "почки плазмолюда", + GENITIVE = "почек плазмолюда", + DATIVE = "почкам плазмолюда", + ACCUSATIVE = "почки плазмолюда", + INSTRUMENTAL = "почками плазмолюда", + PREPOSITIONAL = "почках плазмолюда" + ) + icon = 'icons/obj/species_organs/plasmaman.dmi' + item_state = "plasmaman_kidneys" + +/obj/item/organ/internal/lungs/plasmaman + name = "plasma filter" + desc = "Парный орган, отвечающий за фильтрацию плазмы из атмосферы внешней среды и её последующее выщелачивание в плазмоносные каналы. Эти принадлежали плазмолюду." + ru_names = list( + NOMINATIVE = "лёгкие плазмолюда", + GENITIVE = "лёгких плазмолюда", + DATIVE = "лёгким плазмолюда", + ACCUSATIVE = "лёгкие плазмолюда", + INSTRUMENTAL = "лёгкими плазмолюда", + PREPOSITIONAL = "лёгких плазмолюда" + ) icon = 'icons/obj/species_organs/plasmaman.dmi' + icon_state = "lungs" + item_state = "plasmaman_lungs" + safe_oxygen_min = 0 //We don't breath this + safe_toxins_min = 16 //We breathe THIS! + safe_toxins_max = 0 diff --git a/code/modules/surgery/organs/subtypes/shadow.dm b/code/modules/surgery/organs/subtypes/shadow.dm index c92218ca41df..26e996bf0980 100644 --- a/code/modules/surgery/organs/subtypes/shadow.dm +++ b/code/modules/surgery/organs/subtypes/shadow.dm @@ -1,4 +1,13 @@ /obj/item/organ/internal/eyes/shadow species_type = /datum/species/shadow - name = "dark orbs" + name = "shadow orbs" + desc = "Две тёмные сферы, напоминающие человеческие глаза. Судя по всему, эти принадлежали тени." + ru_names = list( + NOMINATIVE = "теневые сферы", + GENITIVE = "теневых сфер", + DATIVE = "теневым сферам", + ACCUSATIVE = "теневые сферы", + INSTRUMENTAL = "теневыми сферами", + PREPOSITIONAL = "теневых сферах" + ) see_in_dark = 8 diff --git a/code/modules/surgery/organs/subtypes/skrell.dm b/code/modules/surgery/organs/subtypes/skrell.dm index 591948e4cc6a..fe481ae9c530 100644 --- a/code/modules/surgery/organs/subtypes/skrell.dm +++ b/code/modules/surgery/organs/subtypes/skrell.dm @@ -1,7 +1,17 @@ /obj/item/organ/internal/liver/skrell species_type = /datum/species/skrell name = "skrell liver" + desc = "Орган, выполняющий множество функций, таких как фильтрация кровотока от вредных веществ, синтез необходимых белков и ферментов и удаление токсинов из организма. Эта принадлежала скреллу." + ru_names = list( + NOMINATIVE = "печень скрелла", + GENITIVE = "печени скрелла", + DATIVE = "печени скрелла", + ACCUSATIVE = "печень скрелла", + INSTRUMENTAL = "печенью скрелла", + PREPOSITIONAL = "печени скрелла" + ) icon = 'icons/obj/species_organs/skrell.dmi' + item_state = "skrell_liver" alcohol_intensity = 4 /obj/item/organ/internal/liver/skrell/on_life() @@ -18,9 +28,18 @@ /obj/item/organ/internal/headpocket species_type = /datum/species/skrell name = "headpocket" - desc = "Allows Skrell to hide tiny objects within their head tentacles." + desc = "Мышечное образование на голове скреллов, которое можно использовать как место хранения небольших предметов." + ru_names = list( + NOMINATIVE = "головной карман", + GENITIVE = "головного кармана", + DATIVE = "головному карману", + ACCUSATIVE = "головной карман", + INSTRUMENTAL = "головным карманом", + PREPOSITIONAL = "головном кармане" + ) icon = 'icons/obj/species_organs/skrell.dmi' icon_state = "skrell_headpocket" + item_state = "skrell_headpocket" origin_tech = "biotech=2" w_class = WEIGHT_CLASS_TINY parent_organ_zone = BODY_ZONE_HEAD @@ -42,8 +61,8 @@ ..() var/obj/item/organ/external/head/head = owner.get_organ(BODY_ZONE_HEAD) if(pocket.contents.len && !findtextEx(head.h_style, "Tentacles")) - owner.visible_message(span_notice("Something falls from [owner]'s head!"), - span_notice("Something falls from your head!")) + owner.visible_message(span_warning("Что-то выпадает из [declent_ru(GENITIVE)] [owner]!"), + span_warning("Что-то выпадает из вашего [declent_ru(GENITIVE)]!")) empty_contents() /obj/item/organ/internal/headpocket/ui_action_click(mob/user, datum/action/action, leftclick) @@ -80,31 +99,92 @@ /obj/item/organ/internal/heart/skrell species_type = /datum/species/skrell name = "skrell heart" - desc = "A stream lined heart." + desc = "Орган, качающий кровь или её заменяющую субстанцию по организму гуманоида. Это принадлежало скреллу." + ru_names = list( + NOMINATIVE = "сердце скрелла", + GENITIVE = "сердца скрелла", + DATIVE = "сердцу скрелла", + ACCUSATIVE = "сердце скрелла", + INSTRUMENTAL = "сердцем скрелла", + PREPOSITIONAL = "сердце скрелла" + ) icon = 'icons/obj/species_organs/skrell.dmi' + item_state = "skrell_heart-on" + item_base = "skrell_heart" /obj/item/organ/internal/brain/skrell species_type = /datum/species/skrell + desc = "Основной орган центральной нервной системы гуманоида. Фактически, именно здесь и находится разум. Этот принадлежал скреллу." + ru_names = list( + NOMINATIVE = "мозг скрелла", + GENITIVE = "мозга скрелла", + DATIVE = "мозгу скрелла", + ACCUSATIVE = "мозг скрелла", + INSTRUMENTAL = "мозгом скрелла", + PREPOSITIONAL = "мозге скрелла" + ) icon = 'icons/obj/species_organs/skrell.dmi' - desc = "A brain with a odd division in the middle." icon_state = "brain2" + item_state = "skrell_brain" mmi_icon = 'icons/obj/species_organs/skrell.dmi' mmi_icon_state = "mmi_full" /obj/item/organ/internal/lungs/skrell species_type = /datum/species/skrell name = "skrell lungs" + desc = "Парный орган, отвечающий за газообмен между внешней средой и кровотоком организма гуманоида. Эти принадлежали скреллу." + ru_names = list( + NOMINATIVE = "лёгкие скрелла", + GENITIVE = "лёгких скрелла", + DATIVE = "лёгким скрелла", + ACCUSATIVE = "лёгкие скрелла", + INSTRUMENTAL = "лёгкими скрелла", + PREPOSITIONAL = "лёгких скрелла" + ) icon = 'icons/obj/species_organs/skrell.dmi' + item_state = "skrell_lungs" /obj/item/organ/internal/kidneys/skrell species_type = /datum/species/skrell name = "skrell kidneys" + desc = "Парный орган, отвечающий за фильтрацию кровотока и выведение токсинов и отходов из организма. Эти принадлежали скреллу." + ru_names = list( + NOMINATIVE = "почки скрелла", + GENITIVE = "почек скрелла", + DATIVE = "почкам скрелла", + ACCUSATIVE = "почки скрелла", + INSTRUMENTAL = "почками скрелла", + PREPOSITIONAL = "почках скрелла" + ) icon = 'icons/obj/species_organs/skrell.dmi' - desc = "The smallest kidneys you have ever seen, it probably doesn't even work." + item_state = "skrell_kidneys" /obj/item/organ/internal/eyes/skrell species_type = /datum/species/skrell - see_in_dark = 5 - can_see_food = TRUE name = "skrell eyeballs" + desc = "Парный орган, отвечающий за зрение - восприятие света и его трансформацию в видимое изображение. Эти принадлежали скреллу." + ru_names = list( + NOMINATIVE = "глаза скрелла", + GENITIVE = "глаз скрелла", + DATIVE = "глазам скрелла", + ACCUSATIVE = "глаза скрелла", + INSTRUMENTAL = "глазами скрелла", + PREPOSITIONAL = "глазах скрелла" + ) icon = 'icons/obj/species_organs/skrell.dmi' + item_state = "skrell_eyes" + see_in_dark = 5 + can_see_food = TRUE + +/obj/item/organ/internal/ears/skrell + species_type = /datum/species/skrell + name = "skrell ears" + desc = "Парный орган, отвечающий за аудиальное восприятие окружающей среды и получение информации о положении гуманоида в пространстве. Эти принадлежали скреллу." + ru_names = list( + NOMINATIVE = "уши скрелла", + GENITIVE = "ушей скрелла", + DATIVE = "ушам скрелла", + ACCUSATIVE = "уши скрелла", + INSTRUMENTAL = "ушами скрелла", + PREPOSITIONAL = "ушах скрелла" + ) diff --git a/code/modules/surgery/organs/subtypes/slime.dm b/code/modules/surgery/organs/subtypes/slime.dm index 04f86b4afd2b..0f8f8d56bfd6 100644 --- a/code/modules/surgery/organs/subtypes/slime.dm +++ b/code/modules/surgery/organs/subtypes/slime.dm @@ -1,9 +1,18 @@ /obj/item/organ/internal/heart/slime species_type = /datum/species/slime - icon = 'icons/obj/species_organs/slime.dmi' name = "slime heart" + desc = "Орган, регулирующий давление и потоки передвижения слизи по организму, по принципу работы схожий с сердцем. Это принадлежало слаймолюду." + ru_names = list( + NOMINATIVE = "сердце слаймолюда", + GENITIVE = "сердца слаймолюда", + DATIVE = "сердцу слаймолюда", + ACCUSATIVE = "сердце слаймолюда", + INSTRUMENTAL = "сердцем слаймолюда", + PREPOSITIONAL = "сердце слаймолюда" + ) + icon = 'icons/obj/species_organs/slime.dmi' icon_state = "heart" - desc = "This is a slime's osmotic pressure regulator, it appears to be some kind of biological pump that uses osmotic pressure to regulate water flow. It seems to work similar to a heart." + item_state = "slime_heart" dead_icon = null /obj/item/organ/internal/heart/slime/update_icon_state() @@ -11,7 +20,33 @@ /obj/item/organ/internal/lungs/slime species_type = /datum/species/slime - icon = 'icons/obj/species_organs/slime.dmi' name = "slime lungs" + desc = "Парный орган, отвечающий за газообмен между внешней средой и кровотоком организма гуманоида. Эти принадлежали слаймолюду." + ru_names = list( + NOMINATIVE = "лёгкие слаймолюда", + GENITIVE = "лёгких слаймолюда", + DATIVE = "лёгким слаймолюда", + ACCUSATIVE = "лёгкие слаймолюда", + INSTRUMENTAL = "лёгкими слаймолюда", + PREPOSITIONAL = "лёгких слаймолюда" + ) + icon = 'icons/obj/species_organs/slime.dmi' icon_state = "lungs" - desc = "This is a slime's gas exchange membrane, this membrane used for oxygen intake and gas exchange. These seem to work similar to lungs." + item_state = "slime_lungs" + +/obj/item/organ/internal/brain/slime + species_type = /datum/species/slime + name = "slime core" + desc = "Орган нервной системы, состоящий из кристальных и желеподобных образований. Фактически, именно здесь и находится разум. Этот принадлежал слаймолюду." + ru_names = list( + NOMINATIVE = "ядро слаймолюда", + GENITIVE = "ядра слаймолюда", + DATIVE = "ядру слаймолюда", + ACCUSATIVE = "ядро слаймолюда", + INSTRUMENTAL = "ядром слаймолюда", + PREPOSITIONAL = "ядре слаймолюда" + ) + icon = 'icons/mob/slimes.dmi' + icon_state = "green slime extract" + mmi_icon_state = "slime_mmi" + parent_organ_zone = BODY_ZONE_CHEST diff --git a/code/modules/surgery/organs/subtypes/standard.dm b/code/modules/surgery/organs/subtypes/standard.dm index d0971da1acac..7ba9034a2afc 100644 --- a/code/modules/surgery/organs/subtypes/standard.dm +++ b/code/modules/surgery/organs/subtypes/standard.dm @@ -4,6 +4,16 @@ /obj/item/organ/external/chest name = "upper body" + desc = "Верхняя часть туловища." + ru_names = list( + NOMINATIVE = "грудь", + GENITIVE = "груди", + DATIVE = "груди", + ACCUSATIVE = "грудь", + INSTRUMENTAL = "грудью", + PREPOSITIONAL = "груди" + ) + gender = FEMALE limb_zone = BODY_ZONE_CHEST icon_name = "torso" max_damage = 100 @@ -11,10 +21,10 @@ w_class = WEIGHT_CLASS_HUGE limb_body_flag = UPPER_TORSO vital = TRUE - amputation_point = "spine" gendered_icon = TRUE parent_organ_zone = null - encased = "ribcage" + amputation_point = "спину" + encased = "грудную клетку" convertable_children = list(/obj/item/organ/external/groin) /obj/item/organ/external/chest/emp_act(severity) @@ -26,10 +36,20 @@ owner?.adjustStaminaLoss(20) if(2) owner?.adjustStaminaLoss(10) - to_chat(owner, span_userdanger("Ваш [name] выходит из строя, вызывая усталость!")) + to_chat(owner, span_userdanger("Ваша [declent_ru(NOMINATIVE)] выходит из строя, вызывая сильное истощение!")) /obj/item/organ/external/groin name = "lower body" + desc = "Нижняя часть туловища." + ru_names = list( + NOMINATIVE = "живот", + GENITIVE = "живота", + DATIVE = "животу", + ACCUSATIVE = "живот", + INSTRUMENTAL = "животом", + PREPOSITIONAL = "животе" + ) + gender = MALE limb_zone = BODY_ZONE_PRECISE_GROIN icon_name = "groin" max_damage = 100 @@ -38,19 +58,29 @@ limb_body_flag = LOWER_TORSO vital = TRUE parent_organ_zone = BODY_ZONE_CHEST - amputation_point = "lumbar" + amputation_point = "поясницу" gendered_icon = TRUE /obj/item/organ/external/arm - limb_zone = BODY_ZONE_L_ARM name = "left arm" + desc = "Левая рука." + ru_names = list( + NOMINATIVE = "левая рука", + GENITIVE = "левой руки", + DATIVE = "левой руке", + ACCUSATIVE = "левую руку", + INSTRUMENTAL = "левой рукой", + PREPOSITIONAL = "левой руке" + ) + gender = FEMALE icon_name = "l_arm" + limb_zone = BODY_ZONE_L_ARM max_damage = 50 min_broken_damage = 30 w_class = WEIGHT_CLASS_NORMAL limb_body_flag = ARM_LEFT parent_organ_zone = BODY_ZONE_CHEST - amputation_point = "left shoulder" + amputation_point = "левое плечо" can_grasp = TRUE convertable_children = list(/obj/item/organ/external/hand) @@ -61,28 +91,47 @@ var/hand = (limb_zone == BODY_ZONE_L_ARM) ? owner.l_hand : owner.r_hand if(hand && owner.can_unEquip(hand)) owner.drop_item_ground(hand) - to_chat(owner, span_userdanger("Ваш [name] выходит из строя, бросая то что держал!")) - owner.custom_emote(EMOTE_VISIBLE, "роня%(ет,ют)% предмет, %(его,её,его,их)% рука выходит из строя!") + to_chat(owner, span_userdanger("Ваша [declent_ru(NOMINATIVE)] выходит из строя, выбрасывая удерживаемый предмет!")) + owner.custom_emote(EMOTE_VISIBLE, "роня%(ет,ют)% удерживаемый предмет, %(его,её,его,их)% рука выходит из строя!") /obj/item/organ/external/arm/right - limb_zone = BODY_ZONE_R_ARM name = "right arm" + desc = "Правая рука." + ru_names = list( + NOMINATIVE = "правая рука", + GENITIVE = "правой руки", + DATIVE = "правой руке", + ACCUSATIVE = "правую руку", + INSTRUMENTAL = "правой рукой", + PREPOSITIONAL = "правой руке" + ) icon_name = "r_arm" + limb_zone = BODY_ZONE_R_ARM limb_body_flag = ARM_RIGHT - amputation_point = "right shoulder" + amputation_point = "правое плечо" convertable_children = list(/obj/item/organ/external/hand/right) /obj/item/organ/external/leg - limb_zone = BODY_ZONE_L_LEG name = "left leg" + desc = "Левая нога." + ru_names = list( + NOMINATIVE = "левая нога", + GENITIVE = "левой ноги", + DATIVE = "левой ноге", + ACCUSATIVE = "левую ногу", + INSTRUMENTAL = "левой ногой", + PREPOSITIONAL = "левой ноге" + ) + gender = FEMALE icon_name = "l_leg" + limb_zone = BODY_ZONE_L_LEG max_damage = 50 min_broken_damage = 30 w_class = WEIGHT_CLASS_NORMAL limb_body_flag = LEG_LEFT icon_position = LEFT parent_organ_zone = BODY_ZONE_PRECISE_GROIN - amputation_point = "left hip" + amputation_point = "левое бедро" convertable_children = list(/obj/item/organ/external/foot) @@ -129,10 +178,10 @@ if(!owner || !is_robotic() || emp_proof || !tough) // Augmented legs and feet make the user drop to the floor on EMP. return if(owner.IsWeakened()) - to_chat(owner, span_userdanger("Ваш [name] выходит из строя, не давая вам встать!")) + to_chat(owner, span_userdanger("Ваша [declent_ru(NOMINATIVE)] выходит из строя, не давая вам встать!")) owner.custom_emote(EMOTE_VISIBLE, "не мо%(жет,гут)% встать, %(его,её,его,их)% нога выходит из строя!") else - to_chat(owner, span_userdanger("Ваш [name] выходит из строя, заставив вас упасть на пол!")) + to_chat(owner, span_userdanger("Ваша [declent_ru(NOMINATIVE)] выходит из строя, заставляя вас упасть с ног!")) owner.custom_emote(EMOTE_VISIBLE, "пада%(ет,ют)% на пол, %(его,её,его,их)% нога выходит из строя!") switch(severity) if(1) @@ -141,25 +190,44 @@ owner.AdjustWeakened(4 SECONDS) /obj/item/organ/external/leg/right - limb_zone = BODY_ZONE_R_LEG name = "right leg" + desc = "Правая нога." + ru_names = list( + NOMINATIVE = "правая нога", + GENITIVE = "правой ноги", + DATIVE = "правой ноге", + ACCUSATIVE = "правую ногу", + INSTRUMENTAL = "правой ногой", + PREPOSITIONAL = "правой ноге" + ) icon_name = "r_leg" + limb_zone = BODY_ZONE_R_LEG limb_body_flag = LEG_RIGHT icon_position = RIGHT - amputation_point = "right hip" + amputation_point = "правое бедро" convertable_children = list(/obj/item/organ/external/foot/right) /obj/item/organ/external/foot - limb_zone = BODY_ZONE_PRECISE_L_FOOT name = "left foot" + desc = "Левая ступня." + ru_names = list( + NOMINATIVE = "левая ступня", + GENITIVE = "левой ступни", + DATIVE = "левой ступне", + ACCUSATIVE = "левую ступню", + INSTRUMENTAL = "левой ступнёй", + PREPOSITIONAL = "левой ступне" + ) + gender = FEMALE icon_name = "l_foot" + limb_zone = BODY_ZONE_PRECISE_L_FOOT max_damage = 30 min_broken_damage = 15 w_class = WEIGHT_CLASS_SMALL limb_body_flag = FOOT_LEFT icon_position = LEFT parent_organ_zone = BODY_ZONE_L_LEG - amputation_point = "left ankle" + amputation_point = "левую лодыжку" /obj/item/organ/external/foot/replaced(mob/living/carbon/human/target, special = ORGAN_MANIPULATION_DEFAULT) @@ -249,11 +317,11 @@ if(!owner || !is_robotic() || emp_proof || !tough) // Augmented legs and feet make the user drop to the floor on EMP. return if(owner.IsWeakened()) - to_chat(owner, span_userdanger("Ваш [name] выходит из строя, не давая вам встать!")) + to_chat(owner, span_userdanger("Ваша [declent_ru(NOMINATIVE)] выходит из строя, не давая вам встать!")) owner.custom_emote(EMOTE_VISIBLE, "не мо%(жет,гут)% встать, %(его,её,его,их)% ступня выходит из строя!") else - to_chat(owner, span_userdanger("Ваш [name] выходит из строя, падая на пол!")) - owner.custom_emote(EMOTE_VISIBLE, "пада%(ет,ют)% на пол, %(его,её,его,их)% ступня выходит из строя!") + to_chat(owner, span_userdanger("Ваша [declent_ru(NOMINATIVE)] выходит из строя, заставляя вас упасть!")) + owner.custom_emote(EMOTE_VISIBLE, "пада%(ет,ют)%, %(его,её,его,их)% ступня выходит из строя!") switch(severity) if(1) owner.AdjustWeakened(8 SECONDS) @@ -262,24 +330,43 @@ /obj/item/organ/external/foot/right - limb_zone = BODY_ZONE_PRECISE_R_FOOT name = "right foot" + desc = "Правая ступня." + ru_names = list( + NOMINATIVE = "правая ступня", + GENITIVE = "правой ступни", + DATIVE = "правой ступне", + ACCUSATIVE = "правую ступню", + INSTRUMENTAL = "правой ступнёй", + PREPOSITIONAL = "правой ступне" + ) icon_name = "r_foot" + limb_zone = BODY_ZONE_PRECISE_R_FOOT limb_body_flag = FOOT_RIGHT icon_position = RIGHT parent_organ_zone = BODY_ZONE_R_LEG - amputation_point = "right ankle" + amputation_point = "правую лодыжку" /obj/item/organ/external/hand - limb_zone = BODY_ZONE_PRECISE_L_HAND name = "left hand" + desc = "Левая кисть." + ru_names = list( + NOMINATIVE = "левая кисть", + GENITIVE = "левой кисти", + DATIVE = "левой кисти", + ACCUSATIVE = "левую кисть", + INSTRUMENTAL = "левой кистью", + PREPOSITIONAL = "левой кисти" + ) + gender = FEMALE icon_name = "l_hand" + limb_zone = BODY_ZONE_PRECISE_L_HAND max_damage = 30 min_broken_damage = 15 w_class = WEIGHT_CLASS_SMALL limb_body_flag = HAND_LEFT parent_organ_zone = BODY_ZONE_L_ARM - amputation_point = "left wrist" + amputation_point = "левое запястье" can_grasp = TRUE @@ -343,30 +430,49 @@ var/hand = (limb_zone == BODY_ZONE_PRECISE_L_HAND) ? owner.l_hand : owner.r_hand if(hand && owner.can_unEquip(hand)) owner.drop_item_ground(hand) - to_chat(owner, span_userdanger("Ваш [name] выходит из строя, dropping what it was holding!")) - owner.custom_emote(EMOTE_VISIBLE, "роня%(ет,ют)% предмет, %(его,её,его,их)% кисть выходит из строя!") + to_chat(owner, span_userdanger("Ваша [declent_ru(NOMINATIVE)] выходит из строя, выбрасывая удерживаемый предмет!")) + owner.custom_emote(EMOTE_VISIBLE, "роня%(ет,ют)% удерживаемый предмет,, %(его,её,его,их)% кисть выходит из строя!") /obj/item/organ/external/hand/right - limb_zone = BODY_ZONE_PRECISE_R_HAND name = "right hand" + desc = "Правая кисть." + ru_names = list( + NOMINATIVE = "правая кисть", + GENITIVE = "правой кисти", + DATIVE = "правой кисти", + ACCUSATIVE = "правую кисть", + INSTRUMENTAL = "правой кистью", + PREPOSITIONAL = "правой кисти" + ) icon_name = "r_hand" + limb_zone = BODY_ZONE_PRECISE_R_HAND limb_body_flag = HAND_RIGHT parent_organ_zone = BODY_ZONE_R_ARM amputation_point = "right wrist" /obj/item/organ/external/head + name = "head" + desc = "Голова." + ru_names = list( + NOMINATIVE = "голова", + GENITIVE = "головы", + DATIVE = "голове", + ACCUSATIVE = "голову", + INSTRUMENTAL = "головой", + PREPOSITIONAL = "голове" + ) + gender = FEMALE limb_zone = BODY_ZONE_HEAD icon_name = "head" - name = "head" max_damage = 75 min_broken_damage = 35 w_class = WEIGHT_CLASS_NORMAL limb_body_flag = HEAD parent_organ_zone = BODY_ZONE_CHEST - amputation_point = "neck" gendered_icon = TRUE - encased = "skull" + amputation_point = "шею" + encased = "череп" var/can_intake_reagents = 1 var/alt_head = "None" @@ -396,6 +502,9 @@ dna = owner.dna.Clone() get_icon() name = "[dna.real_name]'s head" + if(ru_names) + for(var/i = 1; i <= 6; i++) + ru_names[i] += " [dna.real_name]" owner.drop_item_ground(owner.head, force = TRUE) owner.drop_item_ground(owner.wear_mask, force = TRUE) owner.drop_item_ground(owner.glasses, force = TRUE) @@ -436,8 +545,6 @@ . += span_notice("Выглядит пустой.") else . += span_notice("Выглядит относительно целой, внутри что-то есть.") - else - . += span_notice("Вы должны подойти ближе, чтобы осмотреть это.") /obj/item/organ/external/head/proc/handle_alt_icon() if(alt_head && GLOB.alt_heads_list[alt_head]) @@ -468,27 +575,37 @@ owner.AdjustConfused(60 SECONDS) if(2) owner.AdjustConfused(40 SECONDS) - to_chat(owner, span_userdanger("Ваш [name] выходит из строя, перегружая ваше управление!")) + to_chat(owner, span_userdanger("Ваша [declent_ru(NOMINATIVE)] выходит из строя, вызывая перегрузку управления!")) /obj/item/organ/external/tail - limb_zone = BODY_ZONE_TAIL name = "tail" + desc = "Хвост." + ru_names = list( + NOMINATIVE = "хвост", + GENITIVE = "хвоста", + DATIVE = "хвосту", + ACCUSATIVE = "хвост", + INSTRUMENTAL = "хвостом", + PREPOSITIONAL = "хвосте" + ) force_icon = "icons/effects/species.dmi" + limb_zone = BODY_ZONE_TAIL icon_name = "tail" max_damage = 30 min_broken_damage = 15 w_class = WEIGHT_CLASS_SMALL limb_body_flag = TAIL parent_organ_zone = BODY_ZONE_PRECISE_GROIN - amputation_point = "lower spine" + amputation_point = "нижнюю часть спины" var/datum/body_accessory/body_accessory var/list/m_styles = list("tail" = "None") var/list/m_colours = list("tail" = "#000000") s_col = "#000000" -/obj/item/organ/external/tail/New(mob/living/carbon/holder) - ..() - if(!holder) +/obj/item/organ/external/tail/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + + if(!ishuman(loc)) var/icon/tempicon = new/icon("icon" = force_icon, "icon_state" = icon_name) var/icon/tempicon2 = new/icon(tempicon,dir=NORTH) tempicon2.Flip(SOUTH) @@ -512,45 +629,92 @@ m_colours["tail"] = H.m_colours["tail"] /obj/item/organ/external/tail/monkey - species_type = /datum/species/monkey name = "monkey tail" + desc = "Хвост обезьяны." + ru_names = list( + NOMINATIVE = "хвост обезьяны", + GENITIVE = "хвоста обезьяны", + DATIVE = "хвосту обезьяны", + ACCUSATIVE = "хвост обезьяны", + INSTRUMENTAL = "хвостом обезьяны", + PREPOSITIONAL = "хвосте обезьяны" + ) icon_name = "chimptail_s" + species_type = /datum/species/monkey max_damage = 15 min_broken_damage = 10 /obj/item/organ/external/tail/monkey/tajaran - species_type = /datum/species/monkey/tajaran name = "farwa tail" + desc = "Хвост фарвы." + ru_names = list( + NOMINATIVE = "хвост фарвы", + GENITIVE = "хвоста фарвы", + DATIVE = "хвосту фарвы", + ACCUSATIVE = "хвост фарвы", + INSTRUMENTAL = "хвостом фарвы", + PREPOSITIONAL = "хвосте фарвы" + ) icon_name = "farwatail_s" + species_type = /datum/species/monkey/tajaran /obj/item/organ/external/tail/monkey/vulpkanin - species_type = /datum/species/monkey/vulpkanin name = "wolpin tail" + desc = "Хвост вульпина." + ru_names = list( + NOMINATIVE = "хвост вульпина", + GENITIVE = "хвоста вульпина", + DATIVE = "хвосту вульпина", + ACCUSATIVE = "хвост вульпина", + INSTRUMENTAL = "хвостом вульпина", + PREPOSITIONAL = "хвосте вульпина" + ) icon_name = "wolpintail_s" + species_type = /datum/species/monkey/vulpkanin /obj/item/organ/external/tail/monkey/unathi - species_type = /datum/species/monkey/unathi name = "stok tail" + desc = "Хвост стока." + ru_names = list( + NOMINATIVE = "хвост стока", + GENITIVE = "хвоста стока", + DATIVE = "хвосту стока", + ACCUSATIVE = "хвост стока", + INSTRUMENTAL = "хвостом стока", + PREPOSITIONAL = "хвосте стока" + ) icon_name = "stoktail_s" + species_type = /datum/species/monkey/unathi /obj/item/organ/external/wing - limb_zone = BODY_ZONE_WING name = "wings" + desc = "Крылья." + ru_names = list( + NOMINATIVE = "крылья", + GENITIVE = "крыльев", + DATIVE = "крыльям", + ACCUSATIVE = "крылья", + INSTRUMENTAL = "крыльями", + PREPOSITIONAL = "крыльях" + ) + gender = PLURAL icon_name = "wing" + limb_zone = BODY_ZONE_WING max_damage = 30 min_broken_damage = 15 w_class = WEIGHT_CLASS_SMALL limb_body_flag = WING parent_organ_zone = BODY_ZONE_CHEST - amputation_point = "spine" + amputation_point = "спину" var/datum/body_accessory/body_accessory var/list/m_styles = list("wing" = "None") var/list/m_colours = list("wing" = "#000000") s_col = "#000000" -/obj/item/organ/external/wing/New(mob/living/carbon/holder) - ..() - if(!holder) +/obj/item/organ/external/wing/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + + if(!ishuman(loc)) var/icon/tempicon = new/icon("icon" = force_icon, "icon_state" = icon_name) var/icon/tempicon2 = new/icon(tempicon,dir=NORTH) tempicon2.Flip(SOUTH) diff --git a/code/modules/surgery/organs/subtypes/tajaran.dm b/code/modules/surgery/organs/subtypes/tajaran.dm index 295b787340b5..6eee89a543a3 100644 --- a/code/modules/surgery/organs/subtypes/tajaran.dm +++ b/code/modules/surgery/organs/subtypes/tajaran.dm @@ -1,20 +1,62 @@ /obj/item/organ/internal/liver/tajaran species_type = /datum/species/tajaran name = "tajaran liver" + desc = "Орган, выполняющий множество функций, таких как фильтрация кровотока от вредных веществ, синтез необходимых белков и ферментов и удаление токсинов из организма. Эта принадлежала таярану." + ru_names = list( + NOMINATIVE = "печень таярана", + GENITIVE = "печени таярана", + DATIVE = "печени таярана", + ACCUSATIVE = "печень таярана", + INSTRUMENTAL = "печенью таярана", + PREPOSITIONAL = "печени таярана" + ) icon = 'icons/obj/species_organs/tajaran.dmi' + item_state = "tajaran_liver" alcohol_intensity = 1.4 /obj/item/organ/internal/eyes/tajaran species_type = /datum/species/tajaran - icon = 'icons/obj/species_organs/tajaran.dmi' name = "tajaran eyeballs" + desc = "Парный орган, отвечающий за зрение - восприятие света и его трансформацию в видимое изображение. Эти принадлежали таярану." + ru_names = list( + NOMINATIVE = "глаза таярана", + GENITIVE = "глаз таярана", + DATIVE = "глазам таярана", + ACCUSATIVE = "глаза таярана", + INSTRUMENTAL = "глазами таярана", + PREPOSITIONAL = "глазах таярана" + ) + icon = 'icons/obj/species_organs/tajaran.dmi' + item_state = "tajaran_eyes" colourblind_matrix = MATRIX_TAJ_CBLIND //The colour matrix parameter that the mob will recieve when they get the disability. replace_colours = TRITANOPIA_COLOR_REPLACE see_in_dark = 8 +/obj/item/organ/internal/ears/tajaran + species_type = /datum/species/tajaran + name = "tajaran ears" + desc = "Парный орган, отвечающий за аудиальное восприятие окружающей среды и получение информации о положении гуманоида в пространстве. Эти принадлежали таярану." + ru_names = list( + NOMINATIVE = "уши таярана", + GENITIVE = "ушей таярана", + DATIVE = "ушам таярана", + ACCUSATIVE = "уши таярана", + INSTRUMENTAL = "ушами таярана", + PREPOSITIONAL = "ушах таярана" + ) + /obj/item/organ/internal/eyes/tajaran/farwa //Being the lesser form of Tajara, Farwas have an utterly incurable version of their colourblindness. species_type = /datum/species/monkey/tajaran name = "farwa eyeballs" + desc = "Парный орган, отвечающий за зрение - восприятие света и его трансформацию в видимое изображение. Эти принадлежали фарве." + ru_names = list( + NOMINATIVE = "глаза фарвы", + GENITIVE = "глаз фарвы", + DATIVE = "глазам фарвы", + ACCUSATIVE = "глаза фарвы", + INSTRUMENTAL = "глазами фарвы", + PREPOSITIONAL = "глазах фарвы" + ) colourmatrix = MATRIX_TAJ_CBLIND see_in_dark = 8 replace_colours = TRITANOPIA_COLOR_REPLACE @@ -22,28 +64,78 @@ /obj/item/organ/internal/heart/tajaran species_type = /datum/species/tajaran name = "tajaran heart" + desc = "Орган, качающий кровь или её заменяющую субстанцию по организму гуманоида. Это принадлежало таярану." + ru_names = list( + NOMINATIVE = "сердце таярана", + GENITIVE = "сердца таярана", + DATIVE = "сердцу таярана", + ACCUSATIVE = "сердце таярана", + INSTRUMENTAL = "сердцем таярана", + PREPOSITIONAL = "сердце таярана" + ) icon = 'icons/obj/species_organs/tajaran.dmi' + item_state = "tajaran_heart-on" + item_base = "tajaran_heart" /obj/item/organ/internal/brain/tajaran species_type = /datum/species/tajaran + desc = "Основной орган центральной нервной системы гуманоида. Фактически, именно здесь и находится разум. Этот принадлежал таярану." + ru_names = list( + NOMINATIVE = "мозг таярана", + GENITIVE = "мозга таярана", + DATIVE = "мозгу таярана", + ACCUSATIVE = "мозг таярана", + INSTRUMENTAL = "мозгом таярана", + PREPOSITIONAL = "мозге таярана" + ) icon = 'icons/obj/species_organs/tajaran.dmi' icon_state = "brain2" + item_state = "tajaran_brain" mmi_icon = 'icons/obj/species_organs/tajaran.dmi' mmi_icon_state = "mmi_full" /obj/item/organ/internal/lungs/tajaran species_type = /datum/species/tajaran name = "tajaran lungs" + desc = "Парный орган, отвечающий за газообмен между внешней средой и кровотоком организма гуманоида. Эти принадлежали таярану." + ru_names = list( + NOMINATIVE = "лёгкие таярана", + GENITIVE = "лёгких таярана", + DATIVE = "лёгким таярана", + ACCUSATIVE = "лёгкие таярана", + INSTRUMENTAL = "лёгкими таярана", + PREPOSITIONAL = "лёгких таярана" + ) icon = 'icons/obj/species_organs/tajaran.dmi' + item_state = "tajaran_lungs" /obj/item/organ/internal/kidneys/tajaran species_type = /datum/species/tajaran name = "tajaran kidneys" + desc = "Парный орган, отвечающий за фильтрацию кровотока и выведение токсинов и отходов из организма. Эти принадлежали таярану." + ru_names = list( + NOMINATIVE = "почки таярана", + GENITIVE = "почек таярана", + DATIVE = "почкам таярана", + ACCUSATIVE = "почки таярана", + INSTRUMENTAL = "почками таярана", + PREPOSITIONAL = "почках таярана" + ) icon = 'icons/obj/species_organs/tajaran.dmi' + item_state = "tajaran_kidneys" /obj/item/organ/external/tail/tajaran species_type = /datum/species/tajaran name = "tajaran tail" + desc = "Хвост. Этот принадлежал таярану." + ru_names = list( + NOMINATIVE = "хвост таярана", + GENITIVE = "хвоста таярана", + DATIVE = "хвосту таярана", + ACCUSATIVE = "хвост таярана", + INSTRUMENTAL = "хвостом таярана", + PREPOSITIONAL = "хвосте таярана" + ) icon_name = "tajtail_s" max_damage = 20 min_broken_damage = 15 diff --git a/code/modules/surgery/organs/subtypes/unathi.dm b/code/modules/surgery/organs/subtypes/unathi.dm index 66b7abeffd30..24e42e39c423 100644 --- a/code/modules/surgery/organs/subtypes/unathi.dm +++ b/code/modules/surgery/organs/subtypes/unathi.dm @@ -1,59 +1,166 @@ /obj/item/organ/internal/liver/unathi species_type = /datum/species/unathi name = "unathi liver" + desc = "Орган, выполняющий множество функций, таких как фильтрация кровотока от вредных веществ, синтез необходимых белков и ферментов и удаление токсинов из организма. Эта принадлежала унатху." + ru_names = list( + NOMINATIVE = "печень унатха", + GENITIVE = "печени унатха", + DATIVE = "печени унатха", + ACCUSATIVE = "печень унатха", + INSTRUMENTAL = "печенью унатха", + PREPOSITIONAL = "печени унатха" + ) icon = 'icons/obj/species_organs/unathi.dmi' - desc = "A large looking liver." + item_state = "unathi_liver" alcohol_intensity = 0.8 /obj/item/organ/internal/eyes/unathi species_type = /datum/species/unathi name = "unathi eyeballs" + desc = "Парный орган, отвечающий за зрение - восприятие света и его трансформацию в видимое изображение. Эти принадлежали унатху." + ru_names = list( + NOMINATIVE = "глаза унатха", + GENITIVE = "глаз унатха", + DATIVE = "глазам унатха", + ACCUSATIVE = "глаза унатха", + INSTRUMENTAL = "глазами унатха", + PREPOSITIONAL = "глазах унатха" + ) icon = 'icons/obj/species_organs/unathi.dmi' + item_state = "unathi_eyes" see_in_dark = 3 +/obj/item/organ/internal/ears/unathi + species_type = /datum/species/unathi + name = "unathi ears" + desc = "Парный орган, отвечающий за аудиальное восприятие окружающей среды и получение информации о положении гуманоида в пространстве. Эти принадлежали унатху." + ru_names = list( + NOMINATIVE = "уши унатха", + GENITIVE = "ушей унатха", + DATIVE = "ушам унатха", + ACCUSATIVE = "уши унатха", + INSTRUMENTAL = "ушами унатха", + PREPOSITIONAL = "ушах унатха" + ) + /obj/item/organ/internal/heart/unathi species_type = /datum/species/unathi name = "unathi heart" - desc = "A large looking heart." + desc = "Орган, качающий кровь или её заменяющую субстанцию по организму гуманоида. Это принадлежало унатху." + ru_names = list( + NOMINATIVE = "сердце унатха", + GENITIVE = "сердца унатха", + DATIVE = "сердцу унатха", + ACCUSATIVE = "сердце унатха", + INSTRUMENTAL = "сердцем унатха", + PREPOSITIONAL = "сердце унатха" + ) icon = 'icons/obj/species_organs/unathi.dmi' + item_state = "unathi_heart-on" + item_base = "unathi_heart" /obj/item/organ/internal/brain/unathi species_type = /datum/species/unathi + desc = "Основной орган центральной нервной системы гуманоида. Фактически, именно здесь и находится разум. Выглядит относительно маленьким. Этот принадлежал унатху." + ru_names = list( + NOMINATIVE = "мозг унатха", + GENITIVE = "мозга унатха", + DATIVE = "мозгу унатха", + ACCUSATIVE = "мозг унатха", + INSTRUMENTAL = "мозгом унатха", + PREPOSITIONAL = "мозге унатха" + ) icon = 'icons/obj/species_organs/unathi.dmi' - desc = "A smallish looking brain." icon_state = "brain2" + item_state = "unathi_brain" mmi_icon = 'icons/obj/species_organs/unathi.dmi' mmi_icon_state = "mmi_full" /obj/item/organ/internal/lungs/unathi species_type = /datum/species/unathi name = "unathi lungs" + desc = "Парный орган, отвечающий за газообмен между внешней средой и кровотоком организма гуманоида. Эти принадлежали унатху." + ru_names = list( + NOMINATIVE = "лёгкие унатха", + GENITIVE = "лёгких унатха", + DATIVE = "лёгким унатха", + ACCUSATIVE = "лёгкие унатха", + INSTRUMENTAL = "лёгкими унатха", + PREPOSITIONAL = "лёгких унатха" + ) icon = 'icons/obj/species_organs/unathi.dmi' + item_state = "unathi_lungs" /obj/item/organ/internal/kidneys/unathi species_type = /datum/species/unathi name = "unathi kidneys" + desc = "Парный орган, отвечающий за фильтрацию кровотока и выведение токсинов и отходов из организма. Эти принадлежали унатху." + ru_names = list( + NOMINATIVE = "почки унатха", + GENITIVE = "почек унатха", + DATIVE = "почкам унатха", + ACCUSATIVE = "почки унатха", + INSTRUMENTAL = "почками унатха", + PREPOSITIONAL = "почках унатха" + ) icon = 'icons/obj/species_organs/unathi.dmi' + item_state = "unathi_kidneys" /obj/item/organ/external/tail/unathi species_type = /datum/species/unathi name = "unathi tail" + desc = "Хвост. Этот принадлежал унатху." + ru_names = list( + NOMINATIVE = "хвост унатха", + GENITIVE = "хвоста унатха", + DATIVE = "хвосту унатха", + ACCUSATIVE = "хвост унатха", + INSTRUMENTAL = "хвостом унатха", + PREPOSITIONAL = "хвосте унатха" + ) icon_name = "sogtail_s" max_damage = 30 min_broken_damage = 20 /obj/item/organ/internal/lungs/unathi/ash_walker name = "ash walker lungs" + desc = "Парный орган, отвечающий за газообмен между внешней средой и кровотоком организма гуманоида. Эти принадлежали пеплоходцу." + ru_names = list( + NOMINATIVE = "лёгкие пеплоходца", + GENITIVE = "лёгких пеплоходца", + DATIVE = "лёгким пеплоходца", + ACCUSATIVE = "лёгкие пеплоходца", + INSTRUMENTAL = "лёгкими пеплоходца", + PREPOSITIONAL = "лёгких пеплоходца" + ) safe_oxygen_min = 8 // can breathe on lavaland /obj/item/organ/internal/eyes/unathi/ash_walker name = "ash walker eyes" + desc = "Парный орган, отвечающий за зрение - восприятие света и его трансформацию в видимое изображение. Эти принадлежали пеплоходцу." + ru_names = list( + NOMINATIVE = "глаза пеплоходца", + GENITIVE = "глаз пеплоходца", + DATIVE = "глазам пеплоходца", + ACCUSATIVE = "глаза пеплоходца", + INSTRUMENTAL = "глазами пеплоходца", + PREPOSITIONAL = "глазах пеплоходца" + ) vision_flags = SEE_TURFS lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE see_in_dark = 3 /obj/item/organ/internal/eyes/unathi/ash_walker_shaman name = "ash walker shaman eyes" + desc = "Парный орган, отвечающий за зрение - восприятие света и его трансформацию в видимое изображение. Эти принадлежали шаману пеплоходцев." + ru_names = list( + NOMINATIVE = "глаза шамана пеплоходцев", + GENITIVE = "глаз шамана пеплоходцев", + DATIVE = "глазам шамана пеплоходцев", + ACCUSATIVE = "глаза шамана пеплоходцев", + INSTRUMENTAL = "глазами шамана пеплоходцев", + PREPOSITIONAL = "глазах шамана пеплоходцев" + ) vision_flags = SEE_TURFS lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE diff --git a/code/modules/surgery/organs/subtypes/vox.dm b/code/modules/surgery/organs/subtypes/vox.dm index 97d2ad410833..e7cef2244594 100644 --- a/code/modules/surgery/organs/subtypes/vox.dm +++ b/code/modules/surgery/organs/subtypes/vox.dm @@ -1,28 +1,81 @@ /obj/item/organ/internal/liver/vox species_type = /datum/species/vox name = "vox liver" + desc = "Орган, выполняющий множество функций, таких как фильтрация кровотока от вредных веществ, синтез необходимых белков и ферментов и удаление токсинов из организма. Эта принадлежала воксу." + ru_names = list( + NOMINATIVE = "печень вокса", + GENITIVE = "печени вокса", + DATIVE = "печени вокса", + ACCUSATIVE = "печень вокса", + INSTRUMENTAL = "печенью вокса", + PREPOSITIONAL = "печени вокса" + ) icon = 'icons/obj/species_organs/vox.dmi' + item_state = "vox_liver" alcohol_intensity = 1.6 sterile = TRUE /obj/item/organ/internal/eyes/vox species_type = /datum/species/vox name = "vox eyeballs" + desc = "Парный орган, отвечающий за зрение - восприятие света и его трансформацию в видимое изображение. Эти принадлежали воксу." + ru_names = list( + NOMINATIVE = "глаза вокса", + GENITIVE = "глаз вокса", + DATIVE = "глазам вокса", + ACCUSATIVE = "глаза вокса", + INSTRUMENTAL = "глазами вокса", + PREPOSITIONAL = "глазах вокса" + ) icon = 'icons/obj/species_organs/vox.dmi' + item_state = "vox_eyes" sterile = TRUE +/obj/item/organ/internal/ears/vox + species_type = /datum/species/vox + name = "vox ears" + desc = "Парный орган, отвечающий за аудиальное восприятие окружающей среды и получение информации о положении гуманоида в пространстве. Эти принадлежали воксу." + ru_names = list( + NOMINATIVE = "уши вокса", + GENITIVE = "ушей вокса", + DATIVE = "ушам вокса", + ACCUSATIVE = "уши вокса", + INSTRUMENTAL = "ушами вокса", + PREPOSITIONAL = "ушах вокса" + ) + /obj/item/organ/internal/heart/vox species_type = /datum/species/vox name = "vox heart" + desc = "Орган, качающий кровь или её заменяющую субстанцию по организму гуманоида. Это принадлежало воксу." + ru_names = list( + NOMINATIVE = "сердце вокса", + GENITIVE = "сердца вокса", + DATIVE = "сердцу вокса", + ACCUSATIVE = "сердце вокса", + INSTRUMENTAL = "сердцем вокса", + PREPOSITIONAL = "сердце вокса" + ) icon = 'icons/obj/species_organs/vox.dmi' + item_state = "vox_heart-on" + item_base = "vox_heart" sterile = TRUE /obj/item/organ/internal/brain/vox species_type = /datum/species/vox name = "cortical stack" - desc = "A peculiarly advanced bio-electronic device that seems to hold the memories and identity of a Vox." + desc = "Двойной мозг, мозжечок которого является органическим, а кора представлена сложным электронным устройством. Фактически, именно здесь и находится разум вокса." + ru_names = list( + NOMINATIVE = "мозговой стек", + GENITIVE = "мозгового стека", + DATIVE = "мозговому стеку", + ACCUSATIVE = "мозговой стек", + INSTRUMENTAL = "мозговым стеком", + PREPOSITIONAL = "мозговом стеке" + ) icon = 'icons/obj/species_organs/vox.dmi' icon_state = "cortical-stack" + item_state = "vox_cortical-stack" mmi_icon = 'icons/obj/species_organs/vox.dmi' mmi_icon_state = "mmi_full" sterile = TRUE @@ -30,12 +83,51 @@ /obj/item/organ/internal/kidneys/vox species_type = /datum/species/vox name = "vox kidneys" + desc = "Парный орган, отвечающий за фильтрацию кровотока и выведение токсинов и отходов из организма. Эти принадлежали воксу." + ru_names = list( + NOMINATIVE = "почки вокса", + GENITIVE = "почек вокса", + DATIVE = "почкам вокса", + ACCUSATIVE = "почки вокса", + INSTRUMENTAL = "почками вокса", + PREPOSITIONAL = "почках вокса" + ) icon = 'icons/obj/species_organs/vox.dmi' + item_state = "vox_kidneys" sterile = TRUE +/obj/item/organ/internal/lungs/vox + name = "vox lungs" + desc = "Парный орган, отвечающий за газообмен между внешней средой и кровотоком организма гуманоида. Эти принадлежали воксу." + ru_names = list( + NOMINATIVE = "лёгкие вокса", + GENITIVE = "лёгких вокса", + DATIVE = "лёгким вокса", + ACCUSATIVE = "лёгкие вокса", + INSTRUMENTAL = "лёгкими вокса", + PREPOSITIONAL = "лёгких вокса" + ) + icon = 'icons/obj/species_organs/vox.dmi' + icon_state = "lungs" + item_state = "vox_lungs" + + safe_oxygen_min = 0 //We don't breathe this + safe_oxygen_max = 0.05 //This is toxic to us + safe_nitro_min = 16 //We breathe THIS! + oxy_damage_type = TOX //And it poisons us + /obj/item/organ/external/tail/vox species_type = /datum/species/vox name = "vox tail" + desc = "Хвост. Этот принадлежал воксу." + ru_names = list( + NOMINATIVE = "хвост вокса", + GENITIVE = "хвоста вокса", + DATIVE = "хвосту вокса", + ACCUSATIVE = "хвост вокса", + INSTRUMENTAL = "хвостом вокса", + PREPOSITIONAL = "хвосте вокса" + ) icon_name = "voxtail_s" max_damage = 25 min_broken_damage = 20 diff --git a/code/modules/surgery/organs/subtypes/vulpkanin.dm b/code/modules/surgery/organs/subtypes/vulpkanin.dm index 9ce7855c3e31..83f5ef814f57 100644 --- a/code/modules/surgery/organs/subtypes/vulpkanin.dm +++ b/code/modules/surgery/organs/subtypes/vulpkanin.dm @@ -7,13 +7,33 @@ /obj/item/organ/internal/liver/vulpkanin species_type = /datum/species/vulpkanin name = "vulpkanin liver" + desc = "Орган, выполняющий множество функций, таких как фильтрация кровотока от вредных веществ, синтез необходимых белков и ферментов и удаление токсинов из организма. Эта принадлежала вульпканину." + ru_names = list( + NOMINATIVE = "печень вульпканина", + GENITIVE = "печени вульпканина", + DATIVE = "печени вульпканина", + ACCUSATIVE = "печень вульпканина", + INSTRUMENTAL = "печенью вульпканина", + PREPOSITIONAL = "печени вульпканина" + ) icon = 'icons/obj/species_organs/vulpkanin.dmi' + item_state = "vulpkanin_liver" alcohol_intensity = 1.4 /obj/item/organ/internal/eyes/vulpkanin species_type = /datum/species/vulpkanin name = "vulpkanin eyeballs" + desc = "Парный орган, отвечающий за зрение - восприятие света и его трансформацию в видимое изображение. Эти принадлежали вульпканину." + ru_names = list( + NOMINATIVE = "глаза вульпканина", + GENITIVE = "глаз вульпканина", + DATIVE = "глазам вульпканина", + ACCUSATIVE = "глаза вульпканина", + INSTRUMENTAL = "глазами вульпканина", + PREPOSITIONAL = "глазах вульпканина" + ) icon = 'icons/obj/species_organs/vulpkanin.dmi' + item_state = "vulpkanin_eyes" colourblind_matrix = MATRIX_VULP_CBLIND //The colour matrix parameter that the mob will recieve when they get the disability. replace_colours = PROTANOPIA_COLOR_REPLACE see_in_dark = 8 @@ -21,35 +41,107 @@ /obj/item/organ/internal/eyes/vulpkanin/wolpin //Being the lesser form of Vulpkanin, Wolpins have an utterly incurable version of their colourblindness. species_type = /datum/species/monkey/vulpkanin name = "wolpin eyeballs" + desc = "Парный орган, отвечающий за зрение - восприятие света и его трансформацию в видимое изображение. Эти принадлежали вульпину." + ru_names = list( + NOMINATIVE = "глаза вульпина", + GENITIVE = "глаз вульпина", + DATIVE = "глазам вульпина", + ACCUSATIVE = "глаза вульпина", + INSTRUMENTAL = "глазами вульпина", + PREPOSITIONAL = "глазах вульпина" + ) colourmatrix = MATRIX_VULP_CBLIND see_in_dark = 8 replace_colours = PROTANOPIA_COLOR_REPLACE +/obj/item/organ/internal/ears/vulpkanin + species_type = /datum/species/vulpkanin + name = "vulpkanin ears" + desc = "Парный орган, отвечающий за аудиальное восприятие окружающей среды и получение информации о положении гуманоида в пространстве. Эти принадлежали вульпканину." + ru_names = list( + NOMINATIVE = "уши вульпканина", + GENITIVE = "ушей вульпканина", + DATIVE = "ушам вульпканина", + ACCUSATIVE = "уши вульпканина", + INSTRUMENTAL = "ушами вульпканина", + PREPOSITIONAL = "ушах вульпканина" + ) + /obj/item/organ/internal/heart/vulpkanin species_type = /datum/species/vulpkanin name = "vulpkanin heart" + desc = "Орган, качающий кровь или её заменяющую субстанцию по организму гуманоида. Это принадлежало вульпканину." + ru_names = list( + NOMINATIVE = "сердце вульпканина", + GENITIVE = "сердца вульпканина", + DATIVE = "сердцу вульпканина", + ACCUSATIVE = "сердце вульпканина", + INSTRUMENTAL = "сердцем вульпканина", + PREPOSITIONAL = "сердце вульпканина" + ) icon = 'icons/obj/species_organs/vulpkanin.dmi' + item_state = "vulpkanin_heart-on" + item_base = "vulpkanin_heart" /obj/item/organ/internal/brain/vulpkanin species_type = /datum/species/vulpkanin + desc = "Основной орган центральной нервной системы гуманоида. Фактически, именно здесь и находится разум. Этот принадлежал вульпканину." + ru_names = list( + NOMINATIVE = "мозг вульпканина", + GENITIVE = "мозга вульпканина", + DATIVE = "мозгу вульпканина", + ACCUSATIVE = "мозг вульпканина", + INSTRUMENTAL = "мозгом вульпканина", + PREPOSITIONAL = "мозге вульпканина" + ) icon = 'icons/obj/species_organs/vulpkanin.dmi' icon_state = "brain2" + item_state = "vulpkanin_brain" mmi_icon = 'icons/obj/species_organs/vulpkanin.dmi' mmi_icon_state = "mmi_full" /obj/item/organ/internal/lungs/vulpkanin species_type = /datum/species/vulpkanin name = "vulpkanin lungs" + desc = "Парный орган, отвечающий за газообмен между внешней средой и кровотоком организма гуманоида. Эти принадлежали вульпканину." + ru_names = list( + NOMINATIVE = "лёгкие вульпканина", + GENITIVE = "лёгких вульпканина", + DATIVE = "лёгким вульпканина", + ACCUSATIVE = "лёгкие вульпканина", + INSTRUMENTAL = "лёгкими вульпканина", + PREPOSITIONAL = "лёгких вульпканина" + ) icon = 'icons/obj/species_organs/vulpkanin.dmi' + item_state = "vulpkanin_lungs" /obj/item/organ/internal/kidneys/vulpkanin species_type = /datum/species/vulpkanin name = "vulpkanin kidneys" + desc = "Парный орган, отвечающий за фильтрацию кровотока и выведение токсинов и отходов из организма. Эти принадлежали вульпканину." + ru_names = list( + NOMINATIVE = "почки вульпканина", + GENITIVE = "почек вульпканина", + DATIVE = "почкам вульпканина", + ACCUSATIVE = "почки вульпканина", + INSTRUMENTAL = "почками вульпканина", + PREPOSITIONAL = "почках вульпканина" + ) icon = 'icons/obj/species_organs/vulpkanin.dmi' + item_state = "vulpkanin_kidneys" /obj/item/organ/external/tail/vulpkanin species_type = /datum/species/vulpkanin name = "vulpkanin tail" + desc = "Хвост. Этот принадлежал вульпканину." + ru_names = list( + NOMINATIVE = "хвост вульпканина", + GENITIVE = "хвоста вульпканина", + DATIVE = "хвосту вульпканина", + ACCUSATIVE = "хвост вульпканина", + INSTRUMENTAL = "хвостом вульпканина", + PREPOSITIONAL = "хвосте вульпканина" + ) icon_name = "vulptail_s" max_damage = 25 min_broken_damage = 15 diff --git a/code/modules/surgery/organs/subtypes/wryn.dm b/code/modules/surgery/organs/subtypes/wryn.dm index 2a106bd4d191..ffea7e7c9c3b 100644 --- a/code/modules/surgery/organs/subtypes/wryn.dm +++ b/code/modules/surgery/organs/subtypes/wryn.dm @@ -2,29 +2,62 @@ /obj/item/organ/internal/wryn/hivenode species_type = /datum/species/wryn name = "antennae" - icon = 'icons/mob/human_races/r_wryn.dmi' + desc = "Орган, отвечающий за телепатическую связь врина с его сородичами." + ru_names = list( + NOMINATIVE = "антенна", + GENITIVE = "антенны", + DATIVE = "антенне", + ACCUSATIVE = "антенну", + INSTRUMENTAL = "антенной", + PREPOSITIONAL = "антенне" + ) + icon = 'icons/obj/species_organs/wryn.dmi' icon_state = "antennae" parent_organ_zone = BODY_ZONE_HEAD slot = INTERNAL_ORGAN_HIVENODE + species_restrictions = list(SPECIES_WRYN) + /// Stored hair style, defines only on creation and changes original h_style when inserted + var/hair_style = "Normal antennae" -/obj/item/organ/internal/wryn/hivenode/insert(mob/living/carbon/human/M, special = ORGAN_MANIPULATION_DEFAULT) - ..() - M.add_language(LANGUAGE_WRYN) - var/obj/item/organ/external/head/head_organ = M.get_organ(BODY_ZONE_HEAD) - head_organ.h_style = "Antennae" - M.update_hair() - -/obj/item/organ/internal/wryn/hivenode/remove(mob/living/carbon/human/M, special = ORGAN_MANIPULATION_DEFAULT) - M.remove_language(LANGUAGE_WRYN) - var/obj/item/organ/external/head/head_organ = M.get_organ(BODY_ZONE_HEAD) - head_organ.h_style = "Bald" - M.update_hair() +/obj/item/organ/internal/wryn/hivenode/New(mob/living/carbon/carbon) + if(istype(carbon)) + var/obj/item/organ/external/head/head_organ = carbon.get_organ(BODY_ZONE_HEAD) + hair_style = head_organ.h_style + + return ..(carbon) + +/obj/item/organ/internal/wryn/hivenode/insert(mob/living/carbon/human/human, special = ORGAN_MANIPULATION_DEFAULT) . = ..() + human.add_language(LANGUAGE_WRYN) + var/obj/item/organ/external/head/head_organ = human.get_organ(BODY_ZONE_HEAD) + + head_organ.h_style = hair_style + human.update_hair() + +/obj/item/organ/internal/wryn/hivenode/remove(mob/living/carbon/human/human, special = ORGAN_MANIPULATION_DEFAULT) + human.remove_language(LANGUAGE_WRYN) + var/obj/item/organ/external/head/head_organ = human.get_organ(BODY_ZONE_HEAD) + + head_organ.h_style = "Bald" + human.update_hair() + + return ..() /obj/item/organ/internal/wryn/glands species_type = /datum/species/wryn name = "wryn wax glands" - icon_state = "eggsac" + desc = "Парные железы, выделяющие воск, который может использоваться вринами как строительный материал." + ru_names = list( + NOMINATIVE = "восковые железы", + GENITIVE = "восковых желез", + DATIVE = "восковым железам", + ACCUSATIVE = "восковые железы", + INSTRUMENTAL = "восковыми железами", + PREPOSITIONAL = "восковых железах" + ) + gender = PLURAL + icon = 'icons/obj/species_organs/wryn.dmi' + icon_state = "waxsac" parent_organ_zone = BODY_ZONE_PRECISE_MOUTH slot = INTERNAL_ORGAN_WAX_GLANDS var/datum/action/innate/honeycomb/honeycomb = new @@ -55,15 +88,15 @@ . = ..() /datum/action/innate/honeycomb - name = "Secrete Wax" - desc = "Secrete Wax" + name = "Секреция воска" + desc = "Выделите воск для строительства." button_icon_state = "wax_wall" /datum/action/innate/honeycomb/Activate() var/mob/living/carbon/human/wryn/host = owner if(host.getWax() >= 50) - var/choice = input("Что бы построить...","Строительство") as null|anything in list("соты","прозрачные соты") + var/choice = input("Доступно для постройки:", "Строительство") as null|anything in list("соты", "прозрачные соты") if(!choice || host.getWax() < 50) return @@ -72,7 +105,7 @@ owner.balloon_alert(owner, "место уже занято!") return host.adjustWax(-50) - host.visible_message(("[host] выделяет кучу воска и формирует из неё [choice]!")) + host.visible_message(("[host] выделя[pluralize_ru(host.gender, "ет", "ют")] кучу воска и формиру[pluralize_ru(host.gender, "ет", "ют")] из неё [choice].")) switch(choice) if("соты") new /obj/structure/wryn/wax/wall(host.loc) @@ -85,8 +118,8 @@ return /datum/action/innate/honeyfloor - name = "Honey Floor" - desc = "Honey Floor" + name = "Восковой пол" + desc = "Покрывает поверхность под вами воском." button_icon_state = "wax_floor" /datum/action/innate/honeyfloor/Activate() @@ -95,41 +128,97 @@ if(host.getWax() >= 25) if(do_after(usr, 1 SECONDS, usr)) if(locate(/obj/structure/wryn/floor) in get_turf(owner)) - owner.balloon_alert(owner, "уже покрыто воском") + owner.balloon_alert(owner, "уже покрыто воском!") return host.adjustWax(-25) - host.visible_message(span_alert("[owner] выделяет кучу воска и формирует из неё пол!")) + host.visible_message(span_alert("[owner] выделя[pluralize_ru(host.gender, "ет", "ют")] кучу воска и формиру[pluralize_ru(host.gender, "ет", "ют")] из неё пол!")) new /obj/structure/wryn/floor(owner.loc) else owner.balloon_alert(owner, "недостаточно воска!") return /datum/action/innate/toggle_producing - name = "Toggle Wax Producing" + name = "Переключить секрецию воска" button_icon_state = "wrynglands" /datum/action/innate/toggle_producing/Activate() var/mob/living/carbon/human/host = owner host.toggle_producing() +/obj/item/organ/internal/brain/wryn + desc = "Основной орган центральной нервной системы гуманоида. Фактически, именно здесь и находится разум. Этот принадлежал врину." + ru_names = list( + NOMINATIVE = "мозг врина", + GENITIVE = "мозга врина", + DATIVE = "мозгу врина", + ACCUSATIVE = "мозг врина", + INSTRUMENTAL = "мозгом врина", + PREPOSITIONAL = "мозге врина" + ) + +/obj/item/organ/internal/heart/wryn + species_type = /datum/species/wryn + name = "wryn heart" + desc = "Орган, качающий кровь или её заменяющую субстанцию по организму гуманоида. Это принадлежало врину." + ru_names = list( + NOMINATIVE = "сердце врина", + GENITIVE = "сердца врина", + DATIVE = "сердцу врина", + ACCUSATIVE = "сердце врина", + INSTRUMENTAL = "сердцем врина", + PREPOSITIONAL = "сердце врина" + ) + /obj/item/organ/internal/eyes/wryn species_type = /datum/species/wryn + name = "wryn eyes" + desc = "Парный орган, отвечающий за зрение - восприятие света и его трансформацию в видимое изображение. Эти принадлежали врину." + ru_names = list( + NOMINATIVE = "глаза врина", + GENITIVE = "глаз врина", + DATIVE = "глазам врина", + ACCUSATIVE = "глаза врина", + INSTRUMENTAL = "глазами врина", + PREPOSITIONAL = "глазах врина" + ) see_in_dark = 3 +/obj/item/organ/internal/ears/wryn + species_type = /datum/species/wryn + name = "wryn ears" + desc = "Парный орган, отвечающий за аудиальное восприятие окружающей среды и получение информации о положении гуманоида в пространстве. Эти принадлежали врину." + ru_names = list( + NOMINATIVE = "уши врина", + GENITIVE = "ушей врина", + DATIVE = "ушам врина", + ACCUSATIVE = "уши врина", + INSTRUMENTAL = "ушами врина", + PREPOSITIONAL = "ушах врина" + ) + /obj/item/organ/external/tail/wryn species_type = /datum/species/wryn name = "wryn tail" + desc = "Хвост. Этот принадлежал врину." + ru_names = list( + NOMINATIVE = "хвост врина", + GENITIVE = "хвоста врина", + DATIVE = "хвосту врина", + ACCUSATIVE = "хвост врина", + INSTRUMENTAL = "хвостом врина", + PREPOSITIONAL = "хвосте врина" + ) icon_name = "wryntail_s" max_damage = 35 min_broken_damage = 25 /obj/item/organ/external/chest/wryn - encased = "chitin armour" + encased = "хитиновую оболочку на груди" convertable_children = list(/obj/item/organ/external/groin/wryn) /obj/item/organ/external/groin/wryn - encased = "groin chitin" + encased = "хитиновую оболочку на животе" /obj/item/organ/external/head/wryn species_type = /datum/species/wryn - encased = "head chitin" + encased = "хитиновую оболочку на голове" diff --git a/code/modules/surgery/organs/subtypes/xenos.dm b/code/modules/surgery/organs/subtypes/xenos.dm index cf7d1e5bd61d..47cbe1f5feee 100644 --- a/code/modules/surgery/organs/subtypes/xenos.dm +++ b/code/modules/surgery/organs/subtypes/xenos.dm @@ -33,8 +33,34 @@ //XENOMORPH ORGANS +/obj/item/organ/internal/brain/xeno + name = "xenomorph brain" + desc = "Основной орган центральной нервной системы гуманоида. Фактически, именно здесь и находится разум. Этот принадлежал ксеноморфу." + ru_names = list( + NOMINATIVE = "мозг человека", + GENITIVE = "мозга человека", + DATIVE = "мозгу человека", + ACCUSATIVE = "мозг человека", + INSTRUMENTAL = "мозгом человека", + PREPOSITIONAL = "мозге человека" + ) + icon_state = "brain-x" + origin_tech = "biotech=6" + mmi_icon = 'icons/mob/alien.dmi' + mmi_icon_state = "AlienMMI" + /obj/item/organ/internal/xenos/plasmavessel name = "xeno plasma vessel" + desc = "Орган, ответственный за секрецию плазмы в организме ксеноморфа. " + ru_names = list( + NOMINATIVE = "плазменная железа ксеноморфа", + GENITIVE = "плазменной железы ксеноморфа", + DATIVE = "плазменной железе ксеноморфа", + ACCUSATIVE = "плазменную железу ксеноморфа", + INSTRUMENTAL = "плазменной железой ксеноморфа", + PREPOSITIONAL = "плазменной железе ксеноморфа" + ) + gender = FEMALE icon_state = "plasma" w_class = WEIGHT_CLASS_NORMAL origin_tech = "biotech=5;plasmatech=4" @@ -57,6 +83,15 @@ /obj/item/organ/internal/xenos/plasmavessel/queen name = "bloated xeno plasma vessel" + desc = "Орган, ответственный за секрецию плазмы в организме ксеноморфа. Эта принадлежала королеве." + ru_names = list( + NOMINATIVE = "плазменная железа королевы ксеноморфов", + GENITIVE = "плазменной железы королевы ксеноморфов", + DATIVE = "плазменной железе королевы ксеноморфов", + ACCUSATIVE = "плазменную железу королевы ксеноморфов", + INSTRUMENTAL = "плазменной железой королевы ксеноморфов", + PREPOSITIONAL = "плазменной железе королевы ксеноморфов" + ) icon_state = "plasma_large" origin_tech = "biotech=6;plasmatech=4" max_plasma = 750 @@ -67,6 +102,15 @@ /obj/item/organ/internal/xenos/plasmavessel/praetorian name = "huge xeno plasma vessel" + desc = "Орган, ответственный за секрецию плазмы в организме ксеноморфа. Эта принадлежала преторианцу." + ru_names = list( + NOMINATIVE = "плазменная железа преторианца", + GENITIVE = "плазменной железы преторианца", + DATIVE = "плазменной железе преторианца", + ACCUSATIVE = "плазменную железу преторианца", + INSTRUMENTAL = "плазменной железой преторианца", + PREPOSITIONAL = "плазменной железе преторианца" + ) icon_state = "plasma_large" max_plasma = 750 stored_plasma = 100 @@ -75,6 +119,15 @@ /obj/item/organ/internal/xenos/plasmavessel/drone name = "large xeno plasma vessel" + desc = "Орган, ответственный за секрецию плазмы в организме ксеноморфа. Эта принадлежала рабочему." + ru_names = list( + NOMINATIVE = "плазменная железа рабочего", + GENITIVE = "плазменной железы рабочего", + DATIVE = "плазменной железе преторианца", + ACCUSATIVE = "плазменную железу рабочего", + INSTRUMENTAL = "плазменной железой рабочего", + PREPOSITIONAL = "плазменной железе рабочего" + ) icon_state = "plasma_large" max_plasma = 300 stored_plasma = 200 @@ -83,6 +136,15 @@ /obj/item/organ/internal/xenos/plasmavessel/sentinel name = "medium xeno plasma vessel" + desc = "Орган, ответственный за секрецию плазмы в организме ксеноморфа. Эта принадлежала часовому." + ru_names = list( + NOMINATIVE = "плазменная железа часового", + GENITIVE = "плазменной железы часового", + DATIVE = "плазменной железе часового", + ACCUSATIVE = "плазменную железу часового", + INSTRUMENTAL = "плазменной железой часового", + PREPOSITIONAL = "плазменной железе часового" + ) max_plasma = 200 stored_plasma = 100 plasma_rate = 25 @@ -90,6 +152,15 @@ /obj/item/organ/internal/xenos/plasmavessel/hunter name = "small xeno plasma vessel" + desc = "Орган, ответственный за секрецию плазмы в организме ксеноморфа. Эта принадлежала охотнику." + ru_names = list( + NOMINATIVE = "плазменная железа охотника", + GENITIVE = "плазменной железы охотника", + DATIVE = "плазменной железе охотника", + ACCUSATIVE = "плазменную железу охотника", + INSTRUMENTAL = "плазменной железой охотника", + PREPOSITIONAL = "плазменной железе охотника" + ) icon_state = "plasma_tiny" max_plasma = 150 stored_plasma = 100 @@ -98,6 +169,15 @@ /obj/item/organ/internal/xenos/plasmavessel/larva name = "tiny xeno plasma vessel" + desc = "Орган, ответственный за секрецию плазмы в организме ксеноморфа. Эта принадлежала лярве." + ru_names = list( + NOMINATIVE = "плазменная железа лярвы", + GENITIVE = "плазменной железы лярвы", + DATIVE = "плазменной железе лярвы", + ACCUSATIVE = "плазменную железу лярвы", + INSTRUMENTAL = "плазменной железой лярвы", + PREPOSITIONAL = "плазменной железе лярвы" + ) icon_state = "plasma_tiny" max_plasma = 100 alien_powers = list() @@ -151,6 +231,16 @@ /obj/item/organ/internal/xenos/acidgland name = "xeno acid gland" + desc = "Орган, ответственный за секрецию кислоты в организме ксеноморфа." + ru_names = list( + NOMINATIVE = "кислотная железа", + GENITIVE = "кислотной железы", + DATIVE = "кислотной железе", + ACCUSATIVE = "кислотную железу", + INSTRUMENTAL = "кислотной железой", + PREPOSITIONAL = "кислотной железе" + ) + gender = FEMALE icon_state = "acid" parent_organ_zone = BODY_ZONE_HEAD slot = INTERNAL_ORGAN_ACIDGLAND @@ -160,21 +250,57 @@ /obj/item/organ/internal/xenos/acidgland/sentinel name = "medium xeno acid gland" + desc = "Орган, ответственный за секрецию кислоты в организме ксеноморфа. Эта принадлежала часовому." + ru_names = list( + NOMINATIVE = "кислотная железа часового", + GENITIVE = "кислотной железы часового", + DATIVE = "кислотной железе часового", + ACCUSATIVE = "кислотную железу часового", + INSTRUMENTAL = "кислотной железой часового", + PREPOSITIONAL = "кислотной железе часового" + ) alien_powers = list(/obj/effect/proc_holder/spell/touch/alien_spell/corrosive_acid/sentinel) /obj/item/organ/internal/xenos/acidgland/praetorian name = "massive xeno acid gland" + desc = "Орган, ответственный за секрецию кислоты в организме ксеноморфа. Эта принадлежала преторианцу." + ru_names = list( + NOMINATIVE = "кислотная железа преторианца", + GENITIVE = "кислотной железы преторианца", + DATIVE = "кислотной железе преторианца", + ACCUSATIVE = "кислотную железу преторианца", + INSTRUMENTAL = "кислотной железой преторианца", + PREPOSITIONAL = "кислотной железе преторианца" + ) alien_powers = list(/obj/effect/proc_holder/spell/touch/alien_spell/corrosive_acid/praetorian) /obj/item/organ/internal/xenos/acidgland/queen name = "royal xeno acid gland" + desc = "Орган, ответственный за секрецию кислоты в организме ксеноморфа. Эта принадлежала королеве ксеноморфов." + ru_names = list( + NOMINATIVE = "кислотная железа королевы ксеноморфов", + GENITIVE = "кислотной железы королевы ксеноморфов", + DATIVE = "кислотной железе королевы ксеноморфов", + ACCUSATIVE = "кислотную железу королевы ксеноморфов", + INSTRUMENTAL = "кислотной железой королевы ксеноморфов", + PREPOSITIONAL = "кислотной железе королевы ксеноморфов" + ) alien_powers = list(/obj/effect/proc_holder/spell/touch/alien_spell/corrosive_acid/queen) /obj/item/organ/internal/xenos/hivenode name = "xeno hive node" + desc = "Орган, ответственный за телепатическую связь с ульем ксеноморфов." + ru_names = list( + NOMINATIVE = "узел улья ксеноморфов", + GENITIVE = "узел улья ксеноморфов", + DATIVE = "узел улья ксеноморфов", + ACCUSATIVE = "узел улья ксеноморфов", + INSTRUMENTAL = "узел улья ксеноморфов", + PREPOSITIONAL = "узел улья ксеноорфов" + ) icon_state = "hivenode" parent_organ_zone = BODY_ZONE_HEAD slot = INTERNAL_ORGAN_HIVENODE @@ -199,6 +325,16 @@ /obj/item/organ/internal/xenos/neurotoxin name = "large xeno neurotoxin gland" + desc = "Орган, ответственный за секрецию нейротоксина в организме ксеноморфа." + ru_names = list( + NOMINATIVE = "железа нейротоксина", + GENITIVE = "железы нейротоксина", + DATIVE = "железе нейротоксина", + ACCUSATIVE = "железу нейротоксина", + INSTRUMENTAL = "железой нейротоксина", + PREPOSITIONAL = "железе нейротоксина" + ) + gender = FEMALE icon_state = "neurotox" parent_organ_zone = BODY_ZONE_HEAD slot = INTERNAL_ORGAN_NEUROTOXIN_GLAND @@ -207,10 +343,29 @@ /obj/item/organ/internal/xenos/neurotoxin/sentinel name = "medium xeno neurotoxin gland" + desc = "Орган, ответственный за секрецию нейротоксина в организме ксеноморфа. Эта принадлежала стражу" + ru_names = list( + NOMINATIVE = "железа нейротоксина стража", + GENITIVE = "железы нейротоксина стража", + DATIVE = "железе нейротоксина стража", + ACCUSATIVE = "железу нейротоксина стража", + INSTRUMENTAL = "железой нейротоксина стража", + PREPOSITIONAL = "железе нейротоксина стража" + ) alien_powers = list(/obj/effect/proc_holder/spell/alien_spell/neurotoxin/sentinel) /obj/item/organ/internal/xenos/resinspinner name = "xeno resin organ"//...there tiger.... + desc = "Орган, ответственный за секрецию смолы в организме ксеноморфа." + ru_names = list( + NOMINATIVE = "смоляная железа", + GENITIVE = "смоляной железы", + DATIVE = "смоляной железе", + ACCUSATIVE = "смоляную железу", + INSTRUMENTAL = "смоляной железой", + PREPOSITIONAL = "смоляной железе" + ) + gender = FEMALE icon_state = "liver-x" parent_organ_zone = BODY_ZONE_PRECISE_MOUTH slot = INTERNAL_ORGAN_RESIN_SPINNER @@ -220,6 +375,15 @@ /obj/item/organ/internal/xenos/eggsac name = "xeno egg sac" + desc = "Орган, ответственный за секрецию смолы в организме ксеноморфа." + ru_names = list( + NOMINATIVE = "яйцевой мешок ксеноморфов", + GENITIVE = "яйцевого мешка ксеноморфов", + DATIVE = "яйцевоу мешку ксеноморфов", + ACCUSATIVE = "яйцевой мешок ксеноморфов", + INSTRUMENTAL = "яйцевым мешком ксеноморфов", + PREPOSITIONAL = "яйцевом мешке ксеноморфов" + ) icon_state = "eggsac" parent_organ_zone = BODY_ZONE_PRECISE_GROIN slot = INTERNAL_ORGAN_EGGSAC diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index e82c771914b7..d62ce9e5a6b5 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -186,12 +186,15 @@ GLOBAL_DATUM_INIT(multispin_words, /regex, regex("like a record baby")) for(var/V in listeners) var/mob/living/L = V - if(L.mind && L.mind.devilinfo && findtext(message, L.mind.devilinfo.truename)) - var/start = findtext(message, L.mind.devilinfo.truename) - listeners = list(L) //let's be honest you're never going to find two devils with the same name - power_multiplier *= 5 //if you're a devil and god himself addressed you, you fucked up - //Cut out the name so it doesn't trigger commands - message = copytext(message, 0, start)+copytext(message, start + length(L.mind.devilinfo.truename), length(message) + 1) + var/datum/antagonist/devil/devilinfo = L.mind?.has_antag_datum(/datum/antagonist/devil) + + if(devilinfo && findtext(message, devilinfo?.info.truename)) + var/start = findtext(message, devilinfo.info.truename) + listeners = list(L) // let's be honest you're never going to find two devils with the same name + power_multiplier *= 5 // if you're a devil and god himself addressed you, you fucked up + // Cut out the name so it doesn't trigger commands + message = copytext(message, 0, start)+copytext(message, start + length(devilinfo.info.truename), LAZYLEN(message) + 1) + if(findtext(message, L.real_name) == 1) specific_listeners += L //focus on those with the specified name //Cut out the name so it doesn't trigger commands diff --git a/code/modules/surgery/organs/voice_translator.dm b/code/modules/surgery/organs/voice_translator.dm new file mode 100644 index 000000000000..19453d9a5f9a --- /dev/null +++ b/code/modules/surgery/organs/voice_translator.dm @@ -0,0 +1,629 @@ +#define DEFAULT_CHIP_SLOTS 1 +#define UPGRADE_SLOTS_GREY 2 + + + // TRANSLATORS // + +// Translators also fulfil the role of ‘vocal cords’ when there is a TRAIT_NO_VOCAL_CORDS in species inherent traits. +// With translator any mob can speak even muted, unless being emped. +// ANY Duct tape forcing mob with translator to whisper and keeps it off the radio + +/obj/item/organ/internal/cyberimp/mouth/translator // Lets make it some easier to make a new one. Write this if you want to make non-species translator. + name = "Just An Empty Translator" // You cant get it in-game. At least now + desc = "Может быть, учёные NanoTrasen заставят работать его позже..." + //icon = + //icon_state = + //origin_tech = + slot = INTERNAL_ORGAN_SPEECH_TRANSLATOR + w_class = WEIGHT_CLASS_TINY + /// List of languages, stored in this translator + var/list/datum/language/given_languages + /// Russian list of languages, stored in this translator + var/list/given_languages_rus + /// What types of translator storage upgrades can be attached to this translator. Empty = nothing + var/list/upgrade_with + /// List of stored languages chips + var/list/stored_chips + /// You cant place anything without opening lid with screwriver + var/open = FALSE + /// Inactive translator don't give you any languages. Affects by EMP + var/active = TRUE + /// Slot for stored storage upgrade module + var/obj/item/translator_upgrade/stored_upgrade + /// Maximum basic slots for translator without storage upgrade + var/maximum_slots = DEFAULT_CHIP_SLOTS + /// Toggles by decoder action, allows you to speak clearly with Wingdings disability + var/can_wingdings = FALSE + + action_icon = list(/datum/action/item_action/organ_action/translator_select_language = 'icons/mob/actions/actions.dmi',) + action_icon_state = list(/datum/action/item_action/organ_action/translator_select_language = "select_language") + actions_types = list(/datum/action/item_action/organ_action/translator_select_language) + var/datum/action/item_action/organ_action/wingdings_decoder/decoder + + +/obj/item/organ/internal/cyberimp/mouth/translator/grey_retraslator + name = "Psionic Voice Retranslator" + desc = "Необычный инопланетный имплант с маленьким экранчиком. Судя по всему, создан специально для греев." + ru_names = list( + NOMINATIVE = "ретранслятор псионического голоса", + GENITIVE = "ретранслятора псионического голоса", + DATIVE = "ретранслятору псионического голоса", + ACCUSATIVE = "ретранслятор псионического голоса", + INSTRUMENTAL = "ретранслятором псионического голоса", + PREPOSITIONAL = "ретрансляторе псионического голоса", + ) + icon = 'icons/obj/voice_translator.dmi' + icon_state = "pvr_implant" + given_languages = list() + upgrade_with = list(/obj/item/translator_upgrade/grey_retraslator) + origin_tech = "materials=2;biotech=3;engineering=3;programming=3;abductor=2" + species_restrictions = list(SPECIES_GREY, SPECIES_ABDUCTOR) + + +/obj/item/organ/internal/cyberimp/mouth/translator/New() + if(!..()) + return + + if(!LAZYLEN(given_languages)) + return + + for(var/lang_name in given_languages) + LAZYADD(given_languages, GLOB.all_languages[lang_name]) + + return TRUE + + +/obj/item/organ/internal/cyberimp/mouth/translator/grey_retraslator/New() + LAZYADD(given_languages, GLOB.all_languages[LANGUAGE_GALACTIC_COMMON]) // basic galcom for greys + LAZYADD(given_languages_rus, "Общегалактический") + + . = ..() + + +/obj/item/organ/internal/cyberimp/mouth/translator/examine(mob/user) + . = ..() + if(!Adjacent(user)) // Too far! + return + + var/message = (open ? "Крышка открыта. " : "Крышка закрыта. ") + message += "Установленные языки: " + message += english_list(given_languages_rus, nothing_text = "Отсутствуют", and_text = "и", final_comma_text = ".") + . += span_notice(message) + + +/obj/item/organ/internal/cyberimp/mouth/translator/can_insert(mob/living/user, mob/living/carbon/target) + if(!..()) + return FALSE + + if(!open) + return TRUE + + if(user) + balloon_alert(user, "крышка открыта!") + + return FALSE + + +/obj/item/organ/internal/cyberimp/mouth/translator/insert(mob/living/carbon/target, special) + . = ..() + + RegisterSignal(target, COMSIG_LANG_PRE_ACT, PROC_REF(check_language)) + + for(var/datum/language/lang as anything in given_languages) + target.add_language(lang.name) + + +/obj/item/organ/internal/cyberimp/mouth/translator/remove(mob/living/carbon/target, special) + if(!istype(target)) + return + + UnregisterSignal(target, COMSIG_LANG_PRE_ACT) + + for(var/datum/language/lang as anything in given_languages) + target.remove_language(lang.name) + + . = ..() + + +/obj/item/organ/internal/cyberimp/mouth/translator/proc/check_language(mob/living/carbon/C, language_name) + SIGNAL_HANDLER + + for(var/datum/language/lang as anything in given_languages) + if(language_name == lang.name) + return COMSIG_LANG_SECURED + + +/obj/item/organ/internal/cyberimp/mouth/translator/update_desc(updates) + . = ..() + + if(stored_upgrade) + desc += " Имеет установленный расширитель слотов." + else + desc = initial(desc) + + +/obj/item/organ/internal/cyberimp/mouth/translator/attackby(obj/item/I, mob/user, params) + if((istype(I, /obj/item/translator_chip))) + var/obj/item/translator_chip/chip = I + return install_chip(user, chip, silent = FALSE) + + else if(istype(I, /obj/item/translator_upgrade)) + if(stored_upgrade) + balloon_alert(user, "уже установлено!") + return FALSE + + return install_upgrade(user, I) + + +/obj/item/organ/internal/cyberimp/mouth/translator/proc/install_upgrade(mob/living/carbon/human/user, obj/item/translator_upgrade/upgrade) + if(!open) + balloon_alert(user, "крышка закручена!") + return + + if(!LAZYLEN(upgrade_with)) + balloon_alert(user, "не подлежит улучшению!") + return + + if(!(upgrade.type in upgrade_with)) + balloon_alert(user, "несовместимо!") + return + + balloon_alert(user, "установлено") + maximum_slots += upgrade.extra_slots + user.drop_transfer_item_to_loc(upgrade, src) + stored_upgrade = upgrade + update_appearance(UPDATE_DESC) + + +/obj/item/organ/internal/cyberimp/mouth/translator/attack_self(mob/user) + if(!open) + return FALSE + + if(!LAZYLEN(stored_chips)) + balloon_alert(user, "пусто!") + return FALSE + + var/obj/item/translator_chip/chip + if(LAZYLEN(stored_chips) == 1) + chip = stored_chips[1] + else + var/list/chip_languages = list() + for(var/obj/item/translator_chip/check_chip in stored_chips) + chip_languages[check_chip.stored_language_rus] = check_chip + + chip = tgui_input_list(user, "Выберите, чип какого языка вы хотите достать:", "Извлечение чипа", chip_languages) + chip = chip_languages[chip] + + if(!chip) // closed + return FALSE + + remove_chip(user, chip) + + +/obj/item/organ/internal/cyberimp/mouth/translator/proc/remove_chip(mob/living/carbon/human/user, obj/item/translator_chip/chip) + // user = who operates or who places the chip into translator + // chip = translator chip we are removing + if(!user || !chip) + return FALSE + + if(owner && chip.stored_language) //if translator inside someone + owner.remove_language(chip.stored_language.name) + + user.put_in_hands(chip) + LAZYREMOVE(stored_chips, chip) + + if(chip.stored_language) + LAZYREMOVE(given_languages, chip.stored_language) + + LAZYREMOVE(given_languages_rus, chip.stored_language_rus) + chip.on_remove(owner, src) + + +/obj/item/organ/internal/cyberimp/mouth/translator/proc/install_chip(mob/living/carbon/human/user, obj/item/translator_chip/chip, silent = TRUE, ignore_lid = FALSE) + if(!user || !chip) + return FALSE + + if(!open && !ignore_lid) // Forced installation ignoring the closed lid. Used on after_equip chip installation + if(!silent) + balloon_alert(user, "крышка закрыта!") + + return FALSE + + if(LAZYLEN(stored_chips) >= maximum_slots) + if(!silent) + balloon_alert(user, "нет места под чип!") + + return FALSE + + if(!chip.stored_language_rus) + if(!silent) + balloon_alert(user, "чип пустой!") + + return FALSE + + if(chip.stored_language_rus in given_languages_rus) + if(!silent) + balloon_alert(user, "уже установлено!") + + return FALSE + + if(!silent) + balloon_alert(user, "чип установлен") + + user.drop_transfer_item_to_loc(chip, src) + LAZYADD(stored_chips, chip) + + if(chip.stored_language) + LAZYADD(given_languages, chip.stored_language) + + LAZYADD(given_languages_rus, chip.stored_language_rus) + + if(owner && chip.stored_language) + owner.add_language(chip.stored_language.name) + + chip.on_install(owner, src) + + return TRUE + + +/obj/item/organ/internal/cyberimp/mouth/translator/screwdriver_act(mob/living/user, obj/item/I) + if(I.tool_behaviour != TOOL_SCREWDRIVER) + return + + if(!(I.use_tool(src, user, 2 SECONDS, volume = 50))) + return + + open = !open + balloon_alert(user, "крышка [open ? "откручена" : "закручена"]") + + +/obj/item/organ/internal/cyberimp/mouth/translator/multitool_act(mob/living/user, obj/item/I) + // you can remove an upgrade with multitool + if(!open || (I.tool_behaviour != TOOL_MULTITOOL)) + return + + if(!(I.use_tool(src, user, 2 SECONDS, volume = 50))) + return + + uninstall_upgrade(user) + + +/obj/item/organ/internal/cyberimp/mouth/translator/proc/uninstall_upgrade(mob/living/carbon/human/user) + if(!stored_upgrade) + balloon_alert(user, "нечего доставать!") + return FALSE + + if(LAZYLEN(stored_chips) > DEFAULT_CHIP_SLOTS) + balloon_alert(user, "мешают чипы!") + return FALSE + + maximum_slots -= stored_upgrade.extra_slots + user.put_in_hands(stored_upgrade) + balloon_alert(user, "улучшение извлечено") + stored_upgrade = null + + +/obj/item/organ/internal/cyberimp/mouth/translator/emp_act(severity) + if(emp_proof) + return + + if(!owner) + return + + turn_languages_off() + addtimer(CALLBACK(src, PROC_REF(turn_languages_on)), 20 SECONDS) + + +/obj/item/organ/internal/cyberimp/mouth/translator/proc/turn_languages_on() + active = TRUE + if(!owner) + return + + to_chat(owner, span_notice("[capitalize(declent_ru(NOMINATIVE))] снова работает!")) + for(var/datum/language/lang as anything in given_languages) + owner.add_language(lang.name) + + decoder.update_button_state() + + +/obj/item/organ/internal/cyberimp/mouth/translator/proc/turn_languages_off() + active = FALSE + can_wingdings = FALSE + to_chat(owner, span_warning("[capitalize(declent_ru(NOMINATIVE))] временно вышел из строя из-за воздействия ЭМИ!")) + do_sparks(3, FALSE, owner) + for(var/datum/language/lang as anything in given_languages) + owner.remove_language(lang.name) + + decoder.update_button_state() + + + // TRANSLATOR ACTION BUTTONS // + +/datum/action/item_action/organ_action/translator_select_language + name = "Выбрать используемый язык" + icon_icon = 'icons/mob/actions/actions.dmi' + button_icon_state = "select_language" + + +/datum/action/item_action/organ_action/translator_select_language/Trigger(left_click = TRUE) + if(!owner) + return + + owner.check_languages() + + +/datum/action/item_action/organ_action/wingdings_decoder + name = "Переключить дешифратор Вингдингс" + icon_icon = 'icons/mob/actions/actions.dmi' + button_icon_state = "wingdings_off" + use_itemicon = FALSE + + +/datum/action/item_action/organ_action/wingdings_decoder/proc/update_button_state() + var/obj/item/organ/internal/cyberimp/mouth/translator/translator = owner.get_organ_slot(INTERNAL_ORGAN_SPEECH_TRANSLATOR) + if(!translator) + return FALSE + + if(translator.can_wingdings) + button_icon_state = "wingdings_on" + else + button_icon_state = initial(button_icon_state) + + UpdateButtonIcon() + + return TRUE + + +/datum/action/item_action/organ_action/wingdings_decoder/Trigger(left_click = TRUE) + if(!owner) + return FALSE + + var/obj/item/organ/internal/cyberimp/mouth/translator/translator = owner.get_organ_slot(INTERNAL_ORGAN_SPEECH_TRANSLATOR) + if(!translator) + Remove(owner) + + if(!translator.active) + owner.balloon_alert(owner, "дешифратор не работает!") + return FALSE + + translator.can_wingdings = !translator.can_wingdings + owner.balloon_alert(owner, "дешифратор [translator.can_wingdings ? "включён" : "выключен"]") + update_button_state() + + return TRUE + + +/datum/action/item_action/organ_action/wingdings_decoder/IsAvailable() + if(!..()) + return FALSE + + var/obj/item/organ/internal/cyberimp/mouth/translator/translator = owner.get_organ_slot(INTERNAL_ORGAN_SPEECH_TRANSLATOR) + if(!translator) + Remove(owner) + return FALSE + + if(!translator.active) + return FALSE + + return TRUE + + + // TRANSLATOR STORAGE UPGRADES // + +/obj/item/translator_upgrade // just adminspawn now + name = "translator upgrade" + desc = "Учёные NanoTrasen ещё не поняли, как он работает. Может быть, позже..." + w_class = WEIGHT_CLASS_TINY + var/extra_slots = 1 + + +/obj/item/translator_upgrade/grey_retraslator + name = "PVR storage upgrade" + desc = "Маленькое инопланетное устройство с мелким экраном, показывающим только помехи. Видимо, что-то из технологий греев." + ru_names = list( + NOMINATIVE = "модуль улучшения РПГ", + GENITIVE = "модуля улучшения РПГ", + DATIVE = "модулю улучшения РПГ", + ACCUSATIVE = "модуль улучшения РПГ", + INSTRUMENTAL = "модулем улучшения РПГ", + PREPOSITIONAL = "модуле улучшения РПГ", + ) + icon = 'icons/obj/voice_translator.dmi' + icon_state = "pvr_upgrade" + origin_tech = "materials=2;programming=3;abductor=1" + extra_slots = UPGRADE_SLOTS_GREY + + + // LANGUAGE TRANSLATOR CHIPS // + +/obj/item/translator_chip + name = "language chip" + desc = "Крошечный чип с мигающим индикатором." + ru_names = list( + NOMINATIVE = "языковой чип", + GENITIVE = "языкового чипа", + DATIVE = "языковому чипу", + ACCUSATIVE = "языковой чип", + INSTRUMENTAL = "языковым чипом", + PREPOSITIONAL = "языковом чипе", + ) + icon = 'icons/obj/voice_translator.dmi' + icon_state = "chip_empty" + w_class = WEIGHT_CLASS_TINY + origin_tech = "materials=1;programming=2" + var/datum/language/stored_language + var/stored_language_rus + + +/obj/item/translator_chip/New() + . = ..() + if(stored_language) + stored_language = GLOB.all_languages[stored_language] + + +/obj/item/translator_chip/proc/on_install(mob/living/carbon/human/H, obj/item/organ/internal/cyberimp/mouth/translator/translator) + return TRUE + + +/obj/item/translator_chip/proc/on_remove(mob/living/carbon/human/H, obj/item/organ/internal/cyberimp/mouth/translator/translator) + return TRUE + + +/obj/item/translator_chip/attack_self(mob/living/user) + if(stored_language_rus) + return + + var/list/available_languages = list() + var/obj/item/translator_chip/chip + for(chip as anything in subtypesof(/obj/item/translator_chip)) + available_languages[chip.stored_language_rus] = chip + + var/answer = tgui_input_list(user, "Выберите язык для загрузки в чип:", "Выбор прошивки", available_languages) + if(!answer || stored_language_rus) //double check to prevent multispec + return + + user.drop_item_ground(src, silent = TRUE) + chip = available_languages[answer] + var/obj/item/translator_chip/new_chip = new chip(null) + user.put_in_hands(new_chip, silent = TRUE) + qdel(src) + + +/obj/item/translator_chip/examine(mob/user) + . = ..() + + if(!Adjacent(user)) + return + + if(stored_language_rus) + . += span_notice("Загруженный язык: [stored_language_rus].") + else + . += span_notice("Судя по всему, не активирован.") + + +/obj/item/translator_chip/update_icon_state() + for(var/obj/item/translator_chip/chip as anything in subtypesof(/obj/item/translator_chip)) + if(stored_language_rus != chip.stored_language_rus) + continue + + icon_state = chip.icon_state + return + + + // CHIP SUBTYPES // + +/obj/item/translator_chip/sol + icon_state = "chip_solcom" + stored_language = LANGUAGE_SOL_COMMON + stored_language_rus = "Общесолнечный" + +/obj/item/translator_chip/neorus + icon_state = "chip_neorus" + stored_language = LANGUAGE_NEO_RUSSIAN + stored_language_rus = "Неорусский" + +/obj/item/translator_chip/gutter + icon_state = "chip_gutter" + stored_language = LANGUAGE_GUTTER + stored_language_rus = "Гангстерский" + +/obj/item/translator_chip/clownish + icon_state = "chip_clownish" + stored_language = LANGUAGE_CLOWN + stored_language_rus = "Клоунский" + +/obj/item/translator_chip/tradeband + icon_state = "chip_tradeband" + stored_language = LANGUAGE_TRADER + stored_language_rus = "Торговый" + +/obj/item/translator_chip/canilunzt + icon_state = "chip_canilunzt" + stored_language = LANGUAGE_VULPKANIN + stored_language_rus = "Канилунц" + +/obj/item/translator_chip/sintaunathi + icon_state = "chip_sintaunathi" + stored_language = LANGUAGE_UNATHI + stored_language_rus = "Синта'Унати" + +/obj/item/translator_chip/siiktajr + icon_state = "chip_siiktajr" + stored_language = LANGUAGE_TAJARAN + stored_language_rus = "Сик'тайр" + +/obj/item/translator_chip/skrellian + icon_state = "chip_skrellian" + stored_language = LANGUAGE_SKRELL + stored_language_rus = "Скреллианский" + +/obj/item/translator_chip/bubblish + icon_state = "chip_bubblish" + stored_language = LANGUAGE_SLIME + stored_language_rus = "Пузырчатый" + +/obj/item/translator_chip/voxpidgin + icon_state = "chip_voxpidgin" + stored_language = LANGUAGE_VOX + stored_language_rus = "Вокс-пиджин" + +/obj/item/translator_chip/chittin + icon_state = "chip_chittin" + stored_language = LANGUAGE_KIDAN + stored_language_rus = "Хитин" + +/obj/item/translator_chip/tkachi + icon_state = "chip_tkachi" + stored_language = LANGUAGE_MOTH + stored_language_rus = "Ткачий" + +/obj/item/translator_chip/orluum + icon_state = "chip_orluum" + stored_language = LANGUAGE_DRASK + stored_language_rus = "Орлуум" + + +/obj/item/translator_chip/wingdings + icon_state = "chip_wingdings" + stored_language = null + stored_language_rus = "Вингдингс" + +/obj/item/translator_chip/wingdings/on_install(mob/living/carbon/human/H, obj/item/organ/internal/cyberimp/mouth/translator/translator) + if(!translator.decoder) + translator.decoder = new(translator) + + if(H) + translator.decoder.Grant(H) + + return TRUE + +/obj/item/translator_chip/wingdings/on_remove(mob/living/carbon/human/H, obj/item/organ/internal/cyberimp/mouth/translator/translator) + translator.can_wingdings = FALSE + + if(!translator.decoder) + return + + if(H) + translator.decoder.Remove(H) + + var/datum/action/item_action/organ_action/wingdings_decoder/used_decoder = locate() in translator.actions + if(used_decoder) + used_decoder.Destroy() + + translator.decoder = null + + return TRUE + + +/* One day it will become a reality + +/obj/item/translator_chip/sintatajr + icon_state = "chip_sintatajr" + stored_language = + stored_language_rus = "Синта'Тайр" + +*/ + + +#undef DEFAULT_CHIP_SLOTS +#undef UPGRADE_SLOTS_GREY diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index 77a40efd0884..fca357391bf5 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -179,6 +179,182 @@ if(affected && affected.encased) //no bones no problem. return FALSE +/datum/surgery/translator_manipulations + name = "Translator Manipulations" + possible_locs = list(BODY_ZONE_PRECISE_MOUTH) + restricted_speciestypes = null + + steps = list( + /datum/surgery_step/generic/cut_open, + /datum/surgery_step/generic/clamp_bleeders, + /datum/surgery_step/generic/retract_skin, + /datum/surgery_step/screwdriver_use, + /datum/surgery_step/proxy/manipulate_translator, + /datum/surgery_step/screwdriver_use, + /datum/surgery_step/generic/cauterize + ) + +/datum/surgery/translator_manipulations/can_start(mob/user, mob/living/carbon/target) + if(!..()) + return FALSE + + var/obj/item/organ/internal/cyberimp/mouth/translator/translator = target.get_organ_slot(INTERNAL_ORGAN_SPEECH_TRANSLATOR) + if(!translator) // nothing to maniplate with.. + return FALSE + + return TRUE + + +/datum/surgery_step/screwdriver_use + name = "screw/unscrew translator" + allowed_tools = list(TOOL_SCREWDRIVER = 100) + time = 1 SECONDS + +/datum/surgery_step/screwdriver_use/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) + var/obj/item/organ/internal/cyberimp/mouth/translator/translator = target.get_organ_slot(INTERNAL_ORGAN_SPEECH_TRANSLATOR) + user.visible_message(span_notice("[user] starts [translator.open ? "screwing" : "unscrewing"] the locking mechanism on the speech translator casing."),\ + span_notice("You start [translator.open ? "screwing" : "unscrewing"] the locking mechanism on the speech translator casing.")) + tool.play_tool_sound(target, 30) + + return ..() + +/datum/surgery_step/screwdriver_use/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) + var/obj/item/organ/internal/cyberimp/mouth/translator/translator = target.get_organ_slot(INTERNAL_ORGAN_SPEECH_TRANSLATOR) + user.visible_message(span_notice("[user] [translator.open ? "screwed" : "unscrewed"] the locking mechanism on the speech translator casing."),\ + span_notice("You [translator.open ? "screwed" : "unscrewed"] the locking mechanism on the speech translator casing.")) + translator.open = !translator.open + + return SURGERY_STEP_CONTINUE + + +/datum/surgery_step/proxy/manipulate_translator + name = "Manipulate translator (proxy)" + branches = list( + /datum/surgery/intermediate/manipulate_translator/install, + /datum/surgery/intermediate/manipulate_translator/uninstall, + ) + + +/datum/surgery/intermediate/manipulate_translator + requires_bodypart = TRUE + possible_locs = list(BODY_ZONE_PRECISE_MOUTH) + + +/datum/surgery/intermediate/manipulate_translator/install + steps = list(/datum/surgery_step/internal/manipulate_translator/install) + + +/datum/surgery_step/internal/manipulate_translator/install + name = "install chip/upgrade" + allowed_tools = list( + /obj/item/translator_chip = 100, + /obj/item/translator_upgrade = 100, + ) + time = 5 SECONDS + + +/datum/surgery_step/internal/manipulate_translator/install/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + user.visible_message(span_notice("[user] starts connecting [tool] into the speech translator's slot."),\ + span_notice("You start connecting [tool] into the speech translator's slot. ")) + + return ..() + + +/datum/surgery_step/internal/manipulate_translator/install/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) + var/obj/item/organ/internal/cyberimp/mouth/translator/translator = target.get_organ_slot(INTERNAL_ORGAN_SPEECH_TRANSLATOR) + + if(istype(tool, /obj/item/translator_chip)) + var/obj/item/translator_chip/chip = tool + + if(!chip.stored_language_rus) + to_chat(user, span_warning("Chip must be activated to connect with translator!")) + return SURGERY_STEP_INCOMPLETE + + if(LAZYLEN(translator.stored_chips) >= translator.maximum_slots) + to_chat(user, span_warning("There is no place in translator to another language chip!")) + return SURGERY_STEP_INCOMPLETE + + if(chip.stored_language_rus in translator.given_languages_rus) + to_chat(user, span_warning("This language chip already installed!")) + return SURGERY_STEP_INCOMPLETE + + translator.install_chip(user, chip) + + else if(istype(tool, /obj/item/translator_upgrade)) + if(translator.stored_upgrade) + to_chat(user, span_warning("Translator already has an upgrade!")) + return SURGERY_STEP_INCOMPLETE + + translator.install_upgrade(user, tool) + + user.visible_message(span_notice("[user] succesfully connected [tool] into the speech translator's slot."),\ + span_notice("You succesfully connected [tool] into the speech translator's slot. ")) + + return SURGERY_STEP_CONTINUE + + +/datum/surgery/intermediate/manipulate_translator/uninstall + steps = list(/datum/surgery_step/internal/manipulate_translator/uninstall) + + +/datum/surgery_step/internal/manipulate_translator/uninstall + name = "uninstall chip/upgrade" + allowed_tools = list(TOOL_MULTITOOL = 100) + time = 0 + + +/datum/surgery_step/internal/manipulate_translator/uninstall/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) + var/obj/item/organ/internal/cyberimp/mouth/translator/translator = target.get_organ_slot(INTERNAL_ORGAN_SPEECH_TRANSLATOR) + var/list/choises = list() + + if(translator.stored_upgrade) + choises["Улучшение"] = image(icon = translator.stored_upgrade.icon, icon_state = translator.stored_upgrade.icon_state) + + for(var/obj/item/translator_chip/chip in translator.stored_chips) + choises[chip.stored_language_rus] = image(icon = chip.icon, icon_state = chip.icon_state) + + if(!choises) + to_chat(user, span_notice("You can't find anything to uninstall from the speech translator.")) + return SURGERY_STEP_INCOMPLETE + + var/choise + if(LAZYLEN(choises) == 1) + choise = choises[1] + else + choise = show_radial_menu(user, target, choises, require_near = TRUE) + + if(!choise) //closed + return SURGERY_STEP_INCOMPLETE + + user.visible_message(span_notice("[user] starts disconnecting wires from the speech translator."),\ + span_notice("You start disconnecting wires from the speech translator. ")) + + if(!do_after(user, 4 SECONDS, target)) + return SURGERY_STEP_INCOMPLETE + + var/add_msg = "" + if(choise == "Улучшение") + if(LAZYLEN(translator.stored_chips) > initial(translator.maximum_slots)) + to_chat(user, span_warning("You need to remove the extra chips first!")) + return SURGERY_STEP_INCOMPLETE + + translator.uninstall_upgrade(user) + add_msg = "upgrade" + + else + var/obj/item/translator_chip/chip + for(chip in translator.stored_chips) + if(chip.stored_language_rus == choise) + break + + add_msg = "chip" + translator.remove_chip(user, chip) + + user.visible_message(span_notice("[user] successfully removed the [add_msg] from the speech translator."),\ + span_notice("You successfully removed the [add_msg] from the speech translator. ")) + + return ..() + // Intermediate steps for branching organ manipulation. /datum/surgery/intermediate/manipulate @@ -284,6 +460,7 @@ fail_sound = 'sound/effects/meatslap.ogg' allowed_tools = list( /obj/item/stack/medical/bruise_pack/advanced = 100, + /obj/item/stack/medical/bruise_pack/extended = 100, /obj/item/stack/medical/bruise_pack = 20, /obj/item/stack/nanopaste = 100 ) @@ -292,7 +469,7 @@ var/tool_name = "[tool]" if(istype(tool, /obj/item/stack/medical/bruise_pack)) tool_name = "the bandaid" - if(istype(tool, /obj/item/stack/medical/bruise_pack/advanced)) + if(istype(tool, /obj/item/stack/medical/bruise_pack/advanced) || istype(tool, /obj/item/stack/medical/bruise_pack/extended)) tool_name = "regenerative membrane" else if(istype(tool, /obj/item/stack/nanopaste)) tool_name = "[tool.name]" //what else do you call nanopaste medically? @@ -372,7 +549,7 @@ var/dam_amt = 2 - if(istype(tool, /obj/item/stack/medical/bruise_pack/advanced)) + if(istype(tool, /obj/item/stack/medical/bruise_pack/advanced) || istype(tool, /obj/item/stack/medical/bruise_pack/extended)) target.adjustToxLoss(5) else if(istype(tool, /obj/item/stack/medical/bruise_pack) || istype(tool, /obj/item/stack/nanopaste)) @@ -516,8 +693,7 @@ // dunno how you got here but okay return SURGERY_BEGINSTEP_SKIP - if(istype(organ, /obj/item/organ/internal/wryn/hivenode) && !iswryn(target)) // If they make more "unique" organs, I'll make some vars and a separate proc, but now.. - to_chat(user, span_warning("Данное существо не способно принять этот орган!")) + if(!organ.can_insert(user, target)) // checks species whitelist and special organ restrictions return SURGERY_BEGINSTEP_SKIP if(target_zone != organ.parent_organ_zone || target.get_organ_slot(organ.slot)) @@ -812,7 +988,9 @@ allowed_tools = list( TOOL_SAW = 100, /obj/item/melee/energy/sword/cyborg/saw = 100, + /obj/item/primitive_saw = 100, /obj/item/hatchet = 90, + /obj/item/circular_saw_blade = 80, /obj/item/wirecutters = 70 ) @@ -853,7 +1031,7 @@ /obj/item/shard = 60, /obj/item/scissors = 12, /obj/item/twohanded/chainsaw = 1, - /obj/item/claymore = 6, + /obj/item/melee/claymore = 6, /obj/item/melee/energy = 6, /obj/item/pen/edagger = 6 ) diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index ffdc4d7812c6..1b5c0b8d01ae 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -340,7 +340,7 @@ surgery.step_in_progress = FALSE return SURGERY_INITIATE_SUCCESS - play_begin_sound(user, target, tool) + INVOKE_ASYNC(src, PROC_REF(play_begin_sound), user, target, tool) if(tool) speed_mod = tool.toolspeed * user.get_actionspeed_by_category(DA_CAT_SURGERY) @@ -352,7 +352,11 @@ // They also have some interesting ways that surgery success/fail prob get evaluated, maybe worth looking at speed_mod /= (get_location_modifier(target) * 1 + surgery.speed_modifier) * implement_speed_mod - var/modded_time = slowdown_immune(user) ? time : time * speed_mod + var/step_time = time + + SEND_SIGNAL(user, COMSIG_SURGERY_STEP_INIT, &step_time) + + var/modded_time = slowdown_immune(user) ? step_time : (step_time * speed_mod) if(implement_type) // If this is set, we aren't in an allow_hand or allow_any_item step. prob_success = allowed_tools[implement_type] @@ -370,10 +374,10 @@ if((prob(prob_success) || silicons_ignore_prob && isrobot(user)) && chem_check_result && !try_to_fail) step_result = end_step(user, target, target_zone, tool, surgery) - play_end_sound(user, target, tool) + INVOKE_ASYNC(src, PROC_REF(play_end_sound), user, target, tool) else step_result = fail_step(user, target, target_zone, tool, surgery) - play_fail_sound(user, target, tool) + INVOKE_ASYNC(src, PROC_REF(play_fail_sound), user, target, tool) switch(step_result) if(SURGERY_STEP_CONTINUE) advance = TRUE @@ -521,7 +525,7 @@ * * user - The user who's manipulating the organ. * * tool - The tool the user is using to mess with the organ. */ -/proc/spread_germs_to_organ(obj/item/organ/target_organ, mob/living/carbon/human/user, obj/item/tool) +/datum/surgery_step/proc/spread_germs_to_organ(obj/item/organ/target_organ, mob/living/carbon/human/user, obj/item/tool) if(!istype(user) || !istype(target_organ) || target_organ.is_robotic() || target_organ.sterile) return @@ -529,9 +533,10 @@ // germ spread from surgeon touching the patient if(user.gloves) - germ_level = user.gloves.germ_level + var/obj/item/clothing/gloves/gloves = user.gloves + germ_level = !(istype(gloves) && prob(gloves.surgery_germ_chance)) ? user.gloves.germ_level : 0 target_organ.germ_level = max(germ_level, target_organ.germ_level) - spread_germs_by_incision(target_organ, tool) //germ spread from environement to patient + INVOKE_ASYNC(src, PROC_REF(spread_germs_by_incision), target_organ, tool) //germ spread from environement to patient /** * Spread germs directly from a tool. @@ -539,7 +544,7 @@ * * E - An external organ being operated on. * * tool - The tool performing the operation. */ -/proc/spread_germs_by_incision(obj/item/organ/external/E, obj/item/tool) +/datum/surgery_step/proc/spread_germs_by_incision(obj/item/organ/external/E, obj/item/tool) if(!isexternalorgan(E)) return diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index 3827cb897216..b4847636e127 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -1,6 +1,15 @@ /obj/item/retractor name = "retractor" - desc = "Retracts stuff." + desc = "Инструмент, используемый для расширения полостей при операциях." + ru_names = list( + NOMINATIVE = "ретрактор", + GENITIVE = "ретрактора", + DATIVE = "ретрактору", + ACCUSATIVE = "ретрактор", + INSTRUMENTAL = "ретрактором", + PREPOSITIONAL = "ретракторе", + ) + gender = MALE icon = 'icons/obj/surgery.dmi' icon_state = "retractor" item_state = "retractor" @@ -16,19 +25,61 @@ /obj/item/retractor/laser name = "Advanced Laser Retractors" - desc = "A retractor with a laser tip. This one looks to be the pinnacle of precision energy a surgery tools!" + desc = "Ретрактор с лазерным наконечником. Последнее слово техники в сфере хирургических операций!" + ru_names = list( + NOMINATIVE = "лазерный ретрактор", + GENITIVE = "лазерного ретрактора", + DATIVE = "лазерному ретрактору", + ACCUSATIVE = "лазерный ретрактор", + INSTRUMENTAL = "лазерным ретрактором", + PREPOSITIONAL = "лазерном ретракторе", + ) icon_state = "retractor_laser" item_state = "retractor_laser" toolspeed = 0.4 /obj/item/retractor/augment - desc = "Micro-mechanical manipulator for retracting stuff." + desc = "Микромеханический манипулятор, используемый в хирургии для расширения полостей и закрепления надрезов." + ru_names = list( + NOMINATIVE = "микромеханический манипулятор", + GENITIVE = "микромеханического манипулятора", + DATIVE = "микромеханическому манипулятору", + ACCUSATIVE = "микромеханический манипулятор", + INSTRUMENTAL = "микромеханическим манипулятором", + PREPOSITIONAL = "микромеханическом манипуляторе", + ) w_class = WEIGHT_CLASS_TINY toolspeed = 0.5 +/obj/item/retractor/primitive_retractor + name = "primitive bone retractor" + desc = "Примитивный инструмент, сделанный из кости. Используется для расширения полостей при операциях." + ru_names = list( + NOMINATIVE = "примитивный ретрактор", + GENITIVE = "примитивного ретрактора", + DATIVE = "примитивному ретрактору", + ACCUSATIVE = "примитивный ретрактор", + INSTRUMENTAL = "примитивным ретрактором", + PREPOSITIONAL = "примитивном ретракторе", + ) + icon = 'icons/obj/surgery.dmi' + icon_state = "primitive_retractor" + item_state = "primitive_retractor" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' + /obj/item/hemostat name = "hemostat" - desc = "You think you have seen this before." + desc = "Инструмент для зажима кровоточащих сосудов во время операций." + ru_names = list( + NOMINATIVE = "гемостат", + GENITIVE = "гемостата", + DATIVE = "гемостату", + ACCUSATIVE = "гемостат", + INSTRUMENTAL = "гемостатом", + PREPOSITIONAL = "гемостате", + ) + gender = MALE icon = 'icons/obj/surgery.dmi' icon_state = "hemostat" item_state = "hemostat" @@ -36,7 +87,7 @@ flags = CONDUCT w_class = WEIGHT_CLASS_TINY origin_tech = "materials=1;biotech=1" - attack_verb = list("attacked", "pinched") + attack_verb = list("атаковал", "ущипнул") tool_behaviour = TOOL_HEMOSTAT /obj/item/hemostat/Initialize(mapload) @@ -45,18 +96,52 @@ /obj/item/hemostat/laser name = "Advanced Laser Hemostat" - desc = "A hemostat with a laser clamp. This one looks to be the pinnacle of precision energy a surgery tools!" + desc = "Гемостат с лазерным зажимом. Последнее слово техники в сфере хирургических операций!" + ru_names = list( + NOMINATIVE = "лазерный гемостат", + GENITIVE = "лазерного гемостата", + DATIVE = "лазерному гемостату", + ACCUSATIVE = "лазерный гемостат", + INSTRUMENTAL = "лазерным гемостатом", + PREPOSITIONAL = "лазерном гемостате", + ) icon_state = "hemostat_laser" item_state = "hemostat_laser" toolspeed = 0.4 /obj/item/hemostat/augment - desc = "Tiny servos power a pair of pincers to stop bleeding." + desc = "Хирургический инструмент, состоящий из нескольких зажимов и сервомоторов. Используется для перекрытия сосудов и остановки возникающего кровотечения во время операции." toolspeed = 0.5 +/obj/item/hemostat/primitive_hemostat + name = "primitive hemostat" + desc = "Примитивный инструмент, сделанный из кости. Используется для зажима кровоточащих сосудов во время операций." + ru_names = list( + NOMINATIVE = "примитивный гемостат", + GENITIVE = "примитивного гемостата", + DATIVE = "примитивному гемостату", + ACCUSATIVE = "примитивный гемостат", + INSTRUMENTAL = "примитивным гемостатом", + PREPOSITIONAL = "примитивном гемостате", + ) + icon = 'icons/obj/surgery.dmi' + icon_state = "primitive_hemostat" + item_state = "primitive_hemostat" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' + /obj/item/cautery name = "cautery" - desc = "This stops bleeding." + desc = "Хирургический инструмент, используемый для прижигания открытых ран и надрезов." + ru_names = list( + NOMINATIVE = "прижигатель", + GENITIVE = "прижигателя", + DATIVE = "прижигателю", + ACCUSATIVE = "прижигатель", + INSTRUMENTAL = "прижигателем", + PREPOSITIONAL = "прижигателе", + ) + gender = MALE icon = 'icons/obj/surgery.dmi' icon_state = "cautery" item_state = "cautery" @@ -64,7 +149,7 @@ flags = CONDUCT w_class = WEIGHT_CLASS_TINY origin_tech = "materials=1;biotech=1" - attack_verb = list("burnt") + attack_verb = list("подпалил") tool_behaviour = TOOL_CAUTERY /obj/item/cautery/Initialize(mapload) @@ -72,43 +157,95 @@ ADD_TRAIT(src, TRAIT_SURGICAL, ROUNDSTART_TRAIT) /obj/item/cautery/augment - desc = "A heated element that cauterizes wounds." + desc = "Нагревательный элемент, используемый для прижигания ран." toolspeed = 0.5 +/obj/item/cautery/primitive_cautery + name = "primitive cautery" + desc = "Примитивный инструмент, сделанный из кости. Используется для прижигания ран." + ru_names = list( + NOMINATIVE = "примитивный прижигатель", + GENITIVE = "примитивного прижигателя", + DATIVE = "примитивному прижигателю", + ACCUSATIVE = "примитивный прижигатель", + INSTRUMENTAL = "примитивным прижигателем", + PREPOSITIONAL = "примитивном прижигателе", + ) + icon = 'icons/obj/surgery.dmi' + icon_state = "primitive_cautery" + item_state = "primitive_cautery" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' + /obj/item/surgicaldrill name = "surgical drill" - desc = "You can drill using this item. You dig?" + desc = "Инструмент, предназначенный для сверления отверстий. Постарайтесь не попасть себе в глаз!" icon = 'icons/obj/surgery.dmi' + ru_names = list( + NOMINATIVE = "хирургическая дрель", + GENITIVE = "хирургической дрели", + DATIVE = "хирургической дрели", + ACCUSATIVE = "хирургическую дрель", + INSTRUMENTAL = "хирургической дрелью", + PREPOSITIONAL = "хирургической дрели", + ) + gender = FEMALE icon_state = "drill" item_state = "drills" hitsound = 'sound/weapons/drill.ogg' materials = list(MAT_METAL=10000, MAT_GLASS=6000) flags = CONDUCT - force = 15.0 + force = 15 sharp = 1 w_class = WEIGHT_CLASS_NORMAL origin_tech = "materials=1;biotech=1" - attack_verb = list("drilled") + attack_verb = list("продырявил") tool_behaviour = TOOL_DRILL /obj/item/surgicaldrill/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_SURGICAL, ROUNDSTART_TRAIT) -/obj/item/surgicaldrill/suicide_act(mob/user) - to_chat(viewers(user), pick(span_suicide("[user] is pressing [src] to [user.p_their()] temple and activating it! It looks like [user.p_theyre()] trying to commit suicide."), - span_suicide("[user] is pressing [src] to [user.p_their()] chest and activating it! It looks like [user.p_theyre()] trying to commit suicide."))) - return BRUTELOSS +/obj/item/surgicaldrill/suicide_act(mob/living/user) + user.visible_message( + span_suicide("[user] наматыва[pluralize_ru(user.gender, "ет", "ют")] себя на [declent_ru(ACCUSATIVE)]!\n\ + Похоже, что [genderize_ru(user.gender, "он", "она", "оно", "они")] соверша[pluralize_ru(user.gender, "ет", "ют")] суицид!") + ) + + addtimer(CALLBACK(src, PROC_REF(second_act), user), 2.5 SECONDS) + user.SpinAnimation(3, 10) + + ADD_TRAIT(user, TRAIT_IMMOBILIZED, UNIQUE_TRAIT_SOURCE(src)) + playsound(user, 'sound/machines/juicer.ogg', 20, TRUE) + + return OBLITERATION + +/obj/item/surgicaldrill/proc/second_act(mob/user) + if(!user) + return + + for(var/obj/item/item in user.get_equipped_items()) + user.drop_item_ground(item) + + user.gib() /obj/item/surgicaldrill/laser name = "Advanced Laser Surgical Drill" - desc = "A surgery drill with a directed laser bit. This one looks to be the pinnacle of precision energy a surgery tools!" + desc = "Хирургическая дрель с узконаправленным лазерным элементом. Последнее слово техники в сфере хирургических операций!" + ru_names = list( + NOMINATIVE = "лазерная дрель", + GENITIVE = "лазерной дрели", + DATIVE = "лазерной дрели", + ACCUSATIVE = "лазерную дрель", + INSTRUMENTAL = "лазерной дрелью", + PREPOSITIONAL = "лазерной дрели", + ) icon_state = "drill_laser" item_state = "drill_laser" toolspeed = 0.4 /obj/item/surgicaldrill/augment - desc = "Effectively a small power drill contained within your arm, edges dulled to prevent tissue damage. May or may not pierce the heavens." + desc = "Небольшая электрическая дрель, находящаяся внутри вашей руки. Края затуплены, чтобы не повредить ткани. Не может пронзить небеса." hitsound = 'sound/weapons/circsawhit.ogg' force = 10 w_class = WEIGHT_CLASS_SMALL @@ -116,7 +253,16 @@ /obj/item/scalpel name = "scalpel" - desc = "Cut, cut, and once more cut." + desc = "Резать, резать и ещё раз резать." + ru_names = list( + NOMINATIVE = "скальпель", + GENITIVE = "скальпеля", + DATIVE = "скальпелю", + ACCUSATIVE = "скальпель", + INSTRUMENTAL = "скальпелем", + PREPOSITIONAL = "скальпеле", + ) + gender = MALE icon = 'icons/obj/surgery.dmi' icon_state = "scalpel" item_state = "scalpel" @@ -131,7 +277,7 @@ embedded_ignore_throwspeed_threshold = TRUE materials = list(MAT_METAL=4000, MAT_GLASS=1000) origin_tech = "materials=1;biotech=1" - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + attack_verb = list("атаковал", "полоснул", "уколол", "поранил", "порезал") hitsound = 'sound/weapons/bladeslice.ogg' tool_behaviour = TOOL_SCALPEL @@ -142,48 +288,82 @@ /obj/item/scalpel/suicide_act(mob/user) - to_chat(viewers(user), pick(span_suicide("[user] is slitting [user.p_their()] wrists with [src]! It looks like [user.p_theyre()] trying to commit suicide."), - span_suicide("[user] is slitting [user.p_their()] throat with [src]! It looks like [user.p_theyre()] trying to commit suicide."), - span_suicide("[user] is slitting [user.p_their()] stomach open with [src]! It looks like [user.p_theyre()] trying to commit seppuku."))) + to_chat(viewers(user), pick(span_suicide("[user] [declent_ru(INSTRUMENTAL)] среза[pluralize_ru(user.gender, "ет", "ют")] свою кожу! Похоже, что [genderize_ru(user.gender, "он", "она", "оно", "они")] соверша[pluralize_ru(user.gender, "ет", "ют")] суицид!"), + span_suicide("[user] реж[pluralize_ru(user.gender, "ет", "ут")] своё горло с помощью [declent_ru(GENITIVE)]! Похоже, что [genderize_ru(user.gender, "он", "она", "оно", "они")] соверша[pluralize_ru(user.gender, "ет", "ют")] суицид!"), + span_suicide("[user] вонза[pluralize_ru(user.gender, "ет", "ют")] [declent_ru(NOMINATIVE)] в свой желудок! Похоже, что [genderize_ru(user.gender, "он", "она", "оно", "они")] пыта[pluralize_ru(user.gender, "ет", "ют")]ся совершить сэппуку!"))) return BRUTELOSS /obj/item/scalpel/augment - desc = "Ultra-sharp blade attached directly to your bone for extra-accuracy." + desc = "Миниатюрное сверхострое лезвие, которое крепится напрямую к вашей кости, обеспечивая дополнительную точность." toolspeed = 0.5 +/obj/item/scalpel/primitive_scalpel + name = "primitive scalpel" + desc = "Примитивный скальпель, сделанный из кости. Несмотря на материал, из которого сделан, всё ещё крайне эффективен." + ru_names = list( + NOMINATIVE = "примитивный скальпель", + GENITIVE = "примитивного скальпеля", + DATIVE = "примитивному скальпелю", + ACCUSATIVE = "примитивный скальпель", + INSTRUMENTAL = "примитивным скальпелем", + PREPOSITIONAL = "примитивном скальпеле", + ) + icon = 'icons/obj/surgery.dmi' + icon_state = "primitive_scalpel" + item_state = "primitive_scalpel" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' + /* * Researchable Scalpels */ /obj/item/scalpel/laser //parent type name = "laser scalpel" - desc = "A scalpel augmented with a directed laser." + desc = "Скальпель, оборудованный направленным лазером." + ru_names = list( + NOMINATIVE = "лазерный скальпель", + GENITIVE = "лазерного скальпеля", + DATIVE = "лазерному скальпелю", + ACCUSATIVE = "лазерный скальпель", + INSTRUMENTAL = "лазерным скальпелем", + PREPOSITIONAL = "лазерном скальпеле", + ) icon_state = "scalpel_laser1_on" damtype = "fire" hitsound = 'sound/weapons/sear.ogg' /obj/item/scalpel/laser/laser1 //lasers also count as catuarys - name = "laser scalpel" - desc = "A scalpel augmented with a directed laser. This one looks basic and could be improved." + name = "Basic Laser Scalpel" + desc = "Скальпель, дополненный направленным лазером. Может быть усовершенствован." icon_state = "scalpel_laser1_on" toolspeed = 0.8 /obj/item/scalpel/laser/laser2 - name = "laser scalpel" - desc = "A scalpel augmented with a directed laser. This one looks somewhat advanced." + name = "Improved Laser Scalpel" + desc = "Скальпель, дополненный направленным лазером. Усовершенствованная версия лазерного скальпеля." icon_state = "scalpel_laser2_on" toolspeed = 0.6 /obj/item/scalpel/laser/laser3 - name = "laser scalpel" - desc = "A scalpel augmented with a directed laser. This one looks to be the pinnacle of precision energy cutlery!" + name = "Advanced Laser Scalpel" + desc = "Скальпель, дополненный направленным лазером. Высокоточная, модернизированная версия лазерного скальпеля." icon_state = "scalpel_laser3_on" toolspeed = 0.4 /obj/item/scalpel/laser/manager //super tool! Retractor/hemostat name = "incision management system" - desc = "A true extension of the surgeon's body, this marvel instantly and completely prepares an incision allowing for the immediate commencement of therapeutic steps." + desc = "Этот небольшой хирургический аппарат по праву можно называть продолжением руки хирурга. Всего за несколько мгновений подготавливает и обрабатывает разрез, позволяя почти сразу перейти к основной стадии операции." icon_state = "scalpel_manager_on" + ru_names = list( + NOMINATIVE = "система обработки надрезов", + GENITIVE = "системы обработки надрезов", + DATIVE = "системе обработки надрезов", + ACCUSATIVE = "систему обработки надрезов", + INSTRUMENTAL = "системой обработки надрезов", + PREPOSITIONAL = "системе обработки надрезов", + ) + icon toolspeed = 0.2 /obj/item/scalpel/laser/manager/Initialize(mapload) @@ -193,34 +373,44 @@ /obj/item/scalpel/laser/manager/debug name = "debug IMS" - desc = "A wonder of modern medicine. This tool functions as any other sort of surgery tool, and finishes in only a fraction of the time. Hey, how'd you get your hands on this, anyway?" + desc = "Чудо современной медицины. Этот инструмент действует как любой другой хирургический инструмент и заканчивается в кратчайшие сроки. А как ты вообще это заполучил?" toolspeed = 0.01 /obj/item/scalpel/laser/manager/debug/attack_self(mob/user) . = ..() toolspeed = toolspeed == 0.5 ? 0.01 : 0.5 - to_chat(user, "[src] is now set to toolspeed [toolspeed]") + to_chat(user, "Установленная скорость инструмента у [declent_ru(GENITIVE)] - [toolspeed].") + balloon_alert(user, "скорость изменена") playsound(src, 'sound/effects/pop.ogg', 50, 0) //Change the mode /obj/item/circular_saw name = "circular saw" - desc = "For heavy duty cutting." + desc = "Инструмент, чтобы резать кости." + ru_names = list( + NOMINATIVE = "хирургическая пила", + GENITIVE = "хирургической пилы", + DATIVE = "хирургической пиле", + ACCUSATIVE = "хирургическую пилу", + INSTRUMENTAL = "хирургической пилой", + PREPOSITIONAL = "хирургической пиле", + ) + gender = FEMALE icon = 'icons/obj/surgery.dmi' icon_state = "saw3" hitsound = 'sound/weapons/circsawhit.ogg' mob_throw_hit_sound = 'sound/weapons/pierce.ogg' flags = CONDUCT - force = 15.0 + force = 15 sharp = 1 w_class = WEIGHT_CLASS_NORMAL - throwforce = 9.0 + throwforce = 9 throw_speed = 3 throw_range = 5 embed_chance = 20 embedded_ignore_throwspeed_threshold = TRUE materials = list(MAT_METAL=10000, MAT_GLASS=6000) origin_tech = "biotech=1;combat=1" - attack_verb = list("attacked", "slashed", "sawed", "cut") + attack_verb = list("атаковал", "полоснул", "пропилил", "порезал") tool_behaviour = TOOL_SAW /obj/item/circular_saw/Initialize(mapload) @@ -229,21 +419,72 @@ /obj/item/circular_saw/laser name = "Advanced Laser Circular Saw" - desc = "A saw with a circular laser disk. This one looks to be the pinnacle of precision energy a surgery tools!" + desc = "Пила с круглым лазерным диском. Последнее слово техники в сфере хирургических операций!" + ru_names = list( + NOMINATIVE = "лазерная хирургическая пила", + GENITIVE = "лазерной хирургической пилы", + DATIVE = "лазерной хирургической пиле", + ACCUSATIVE = "лазерную хирургическую пилу", + INSTRUMENTAL = "лазерной хирургической пилой", + PREPOSITIONAL = "лазерной хирургической пиле", + ) icon_state = "saw_laser" item_state = "saw_laser" origin_tech = "biotech=1;material=1" toolspeed = 0.6 /obj/item/circular_saw/augment - desc = "A small but very fast spinning saw. Edges dulled to prevent accidental cutting inside of the surgeon." + desc = "Маленькая, но очень быстро вращающаяся пила. Края притуплены, чтобы предотвратить случайный порез внутри носителя." force = 10 w_class = WEIGHT_CLASS_SMALL toolspeed = 0.5 +/obj/item/primitive_saw + name = "primitive circular saw" + desc = "Примитивная хирургическая пила, сделанная из крепкой кости." + ru_names = list( + NOMINATIVE = "примитивная хирургическая пила", + GENITIVE = "примитивной хирургической пилы", + DATIVE = "примитивной хирургической пиле", + ACCUSATIVE = "примитивную хирургическую пилу", + INSTRUMENTAL = "примитивной хирургической пилой", + PREPOSITIONAL = "примитивной хирургической пиле", + ) + icon = 'icons/obj/surgery.dmi' + icon_state = "primitive_saw" + item_state = "primitive_saw" + hitsound = 'sound/weapons/slice.ogg' + mob_throw_hit_sound = 'sound/weapons/pierce.ogg' + flags = CONDUCT + force = 15.0 + sharp = 1 + w_class = WEIGHT_CLASS_NORMAL + throwforce = 9 + throw_speed = 3 + throw_range = 5 + embed_chance = 20 + embedded_ignore_throwspeed_threshold = TRUE + attack_verb = list("атаковал", "полоснул", "пропилил", "порезал") + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' + +/obj/item/primitive_saw/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_SURGICAL, ROUNDSTART_TRAIT) + //misc, formerly from code/defines/weapons.dm /obj/item/bonegel name = "bone gel" + desc = "Небольшой баллончик, содержищий в себе гель, сращивающий и заживляющий кости." + ru_names = list( + NOMINATIVE = "костяной гель", + GENITIVE = "костяного геля", + DATIVE = "костяному гелю", + ACCUSATIVE = "костяной гель", + INSTRUMENTAL = "костяным гелем", + PREPOSITIONAL = "костяном геле", + ) + gender = MALE icon = 'icons/obj/surgery.dmi' icon_state = "bone-gel" item_state = "bone-gel" @@ -260,8 +501,35 @@ /obj/item/bonegel/augment toolspeed = 0.5 +/obj/item/bonegel/primitive_bonegel + name = "primitive bone gel" + desc = "Примитивная смесь, используется для заживления костей." + ru_names = list( + NOMINATIVE = "примитивный костяной гель", + GENITIVE = "примитивного костяного геля", + DATIVE = "примитивному костяному гелю", + ACCUSATIVE = "примитивный костяной гель", + INSTRUMENTAL = "примитивным костяным гелем", + PREPOSITIONAL = "примитивном костяном геле", + ) + icon = 'icons/obj/surgery.dmi' + icon_state = "primitive_bonegel" + item_state = "primitive_bonegel" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' + /obj/item/FixOVein name = "FixOVein" + desc = "Небольшой баллончик, содержищий в себе гель, сращивающий и заживляющий кровеносные сосуды." + ru_names = list( + NOMINATIVE = "гель для сосудов", + GENITIVE = "гели для сосудов", + DATIVE = "гелю для сосудов", + ACCUSATIVE = "гель для сосудов", + INSTRUMENTAL = "гелью для сосудов", + PREPOSITIONAL = "геле для сосудов", + ) + gender = MALE icon = 'icons/obj/surgery.dmi' icon_state = "fixovein" item_state = "fixovein" @@ -278,8 +546,36 @@ /obj/item/FixOVein/augment toolspeed = 0.5 +/obj/item/FixOVein/primitive_FixOVein + name = "primitive FixOVein" + desc = "Примитивное средство для сращивания сосудов." + ru_names = list( + NOMINATIVE = "нить для сращивания сосудов", + GENITIVE = "нити для сращивания сосудов", + DATIVE = "нити для сращивания сосудов", + ACCUSATIVE = "нить для сращивания сосудов", + INSTRUMENTAL = "нитью для сращивания сосудов", + PREPOSITIONAL = "нити для сращивания сосудов", + ) + gender = FEMALE + icon = 'icons/obj/surgery.dmi' + icon_state = "primitive_fixovein" + item_state = "primitive_fixovein" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' + /obj/item/bonesetter name = "bone setter" + desc = "Хирургический инструмент, предназначенный для вправления и закрепления костей." + ru_names = list( + NOMINATIVE = "костоправ", + GENITIVE = "костоправа", + DATIVE = "костоправу", + ACCUSATIVE = "костоправ", + INSTRUMENTAL = "костоправом", + PREPOSITIONAL = "костоправе", + ) + gender = MALE icon = 'icons/obj/surgery.dmi' icon_state = "bone setter" item_state = "bone setter" @@ -288,7 +584,7 @@ throw_speed = 3 throw_range = 5 w_class = WEIGHT_CLASS_SMALL - attack_verb = list("attacked", "hit", "bludgeoned") + attack_verb = list("атаковал", "ударил") origin_tech = "materials=1;biotech=1" tool_behaviour = TOOL_BONESET @@ -298,7 +594,15 @@ /obj/item/bonesetter/laser name = "Advanced Laser Bone Setter" - desc = "A bone settler with a laser teeth. This one looks to be the pinnacle of precision energy a surgery tools!" + desc = "Инструмент для правки костей, оборудованный лазерными элементами. Последнее слово техники в сфере хирургических операций!" + ru_names = list( + NOMINATIVE = "лазерный костоправ", + GENITIVE = "лазерного костоправа", + DATIVE = "лазерному костоправу", + ACCUSATIVE = "лазерный костоправ", + INSTRUMENTAL = "лазерным костоправом", + PREPOSITIONAL = "лазерном костоправе", + ) icon_state = "bonesetter_laser" item_state = "bonesetter_laser" toolspeed = 0.4 @@ -306,11 +610,36 @@ /obj/item/bonesetter/augment toolspeed = 0.5 +/obj/item/bonesetter/primitive_bonesetter + name = "primitive bone setter" + desc = "Примитивный инструмент, сделанный из кости. Используется для правки костей." + ru_names = list( + NOMINATIVE = "примитивный костоправ", + GENITIVE = "примитивного костоправа", + DATIVE = "примитивному костоправу", + ACCUSATIVE = "примитивный костоправ", + INSTRUMENTAL = "примитивным костоправом", + PREPOSITIONAL = "примитивном костоправе", + ) + icon = 'icons/obj/surgery.dmi' + icon_state = "primitive_bonesetter" + item_state = "primitive_bonesetter" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' + /obj/item/surgical_drapes name = "surgical drapes" - desc = "Nanotrasen brand surgical drapes provide optimal safety and infection control." + desc = "Хирургическая простыня, обеспечивающая оптимальную безопасность и инфекционный контроль." + ru_names = list( + NOMINATIVE = "хирургическая простыня", + GENITIVE = "хирургической простыни", + DATIVE = "хирургической простыне", + ACCUSATIVE = "хирургическую простыню", + INSTRUMENTAL = "хирургической простынёй", + PREPOSITIONAL = "хирургической простыне", + ) icon = 'icons/obj/surgery.dmi' icon_state = "surgical_drapes" w_class = WEIGHT_CLASS_SMALL origin_tech = "biotech=1" - attack_verb = list("slapped") + attack_verb = list("шлёпнул") diff --git a/code/modules/telesci/bscrystal.dm b/code/modules/telesci/bscrystal.dm index 60ad6c9790d0..3e3db6318fac 100644 --- a/code/modules/telesci/bscrystal.dm +++ b/code/modules/telesci/bscrystal.dm @@ -72,7 +72,7 @@ GLOBAL_LIST_INIT(bluespace_crystal_recipes, list(new/datum/stack_recipe("Breakdo origin_tech = "bluespace=6;materials=3" merge_type = /obj/item/stack/sheet/bluespace_crystal materials = list(MAT_BLUESPACE = MINERAL_MATERIAL_AMOUNT) - attack_verb = list("bluespace polybashed", "bluespace polybattered", "bluespace polybludgeoned", "bluespace polythrashed", "bluespace polysmashed") + attack_verb = list("блюспейс полиударил", "блюспейс полиогрел", "блюспейс полистукнул", "блюспейс полисокрушил") toolspeed = 1 usesound = 'sound/items/deconstruct.ogg' point_value = 30 diff --git a/code/modules/telesci/gps.dm b/code/modules/telesci/gps.dm index 84ea43040072..5f0ec30692fe 100644 --- a/code/modules/telesci/gps.dm +++ b/code/modules/telesci/gps.dm @@ -15,6 +15,7 @@ GLOBAL_LIST_EMPTY(GPS_list) w_class = WEIGHT_CLASS_SMALL slot_flags = ITEM_SLOT_BELT origin_tech = "materials=2;magnets=1;bluespace=2" + interaction_flags_click = NEED_HANDS | ALLOW_RESTING | NEED_DEXTERITY /// Whether the GPS is on. var/tracking = TRUE /// The tag that is visible to other GPSes. @@ -56,15 +57,9 @@ GLOBAL_LIST_EMPTY(GPS_list) update_icon(UPDATE_OVERLAYS) addtimer(CALLBACK(src, PROC_REF(reboot)), EMP_DISABLE_TIME) -/obj/item/gps/AltClick(mob/living/user) - if(!Adjacent(user)) - return - if(!iscarbon(usr) && !isrobot(usr)) - return - if(user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) - to_chat(user, "You can't do that right now!") - return +/obj/item/gps/click_alt(mob/living/user) toggle_gps(user) + return CLICK_ACTION_SUCCESS /obj/item/gps/proc/toggle_gps(mob/living/user) if(emped) @@ -205,6 +200,12 @@ GLOBAL_LIST_EMPTY(GPS_list) . = ..() ADD_TRAIT(src, TRAIT_NODROP, CYBORG_ITEM_TRAIT) +/obj/item/gps/cyborg/New(gpstag = "gps-b", upgraded = FALSE, tracking = TRUE) + . = ..() + src.gpstag = gpstag + src.upgraded = upgraded + src.tracking = tracking + /obj/item/gps/cyborg/upgraded upgraded = 1 diff --git a/code/modules/telesci/telepad.dm b/code/modules/telesci/telepad.dm index b963c8f845ec..15aa2b540b06 100644 --- a/code/modules/telesci/telepad.dm +++ b/code/modules/telesci/telepad.dm @@ -3,7 +3,7 @@ name = "telepad" desc = "A bluespace telepad used for teleporting objects to and from a location." icon = 'icons/obj/telescience.dmi' - icon_state = "pad-idle" + icon_state = "pad" anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 200 @@ -49,7 +49,7 @@ /obj/machinery/telepad/screwdriver_act(mob/user, obj/item/I) . = TRUE - default_deconstruction_screwdriver(user, "pad-idle-o", "pad-idle", I) + default_deconstruction_screwdriver(user, "pad-o", initial(icon_state), I) /obj/machinery/telepad/multitool_act(mob/user, obj/item/I) if(!panel_open) @@ -71,7 +71,7 @@ name = "cargo telepad" desc = "A telepad used by the Rapid Crate Sender." icon = 'icons/obj/telescience.dmi' - icon_state = "pad-idle" + icon_state = "pad" anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 20 diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index ede7014d0c6a..e2def8c06ab2 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/telescience name = "telepad control console" - desc = "Used to teleport objects to and from the telescience telepad." + desc = "Используется для телепортации объектов на телепад и обратно." icon_keyboard = "telesci_key" icon_screen = "telesci" circuit = /obj/item/circuitboard/telesci_console @@ -211,7 +211,7 @@ var/turf/target = locate(trueX, trueY, z_co) last_target = target var/area/A = get_area(target) - flick("pad-beam", telepad) + flick("[initial(telepad.icon_state)]-beam", telepad) if(spawn_time > 15) // 1.5 seconds playsound(telepad.loc, 'sound/weapons/flash.ogg', 25, 1) @@ -252,7 +252,7 @@ source = dest dest = target - flick("pad-beam", telepad) + flick("[initial(telepad.icon_state)]-beam", telepad) playsound(telepad.loc, 'sound/weapons/emitter2.ogg', 50, TRUE) for(var/atom/movable/ROI in source) // if is anchored, don't let through diff --git a/code/modules/tgui/modules/appearance_changer.dm b/code/modules/tgui/modules/appearance_changer.dm index 7983d32b0646..3f357536dfac 100644 --- a/code/modules/tgui/modules/appearance_changer.dm +++ b/code/modules/tgui/modules/appearance_changer.dm @@ -72,8 +72,8 @@ if("skin_color") if(can_change_skin_color()) - var/new_skin = input(usr, "Choose your character's skin colour: ", "Skin Color", owner.skin_colour) as color|null - if(new_skin && (!..()) && owner.change_skin_color(new_skin)) + var/new_skin = tgui_input_color(usr, "Choose your character's skin colour: ", "Skin Color", owner.skin_colour) + if(!isnull(new_skin) && (!..()) && owner.change_skin_color(new_skin)) update_dna() if("hair") @@ -83,14 +83,14 @@ if("hair_color") if(can_change(APPEARANCE_HAIR_COLOR)) - var/new_hair = input("Please select hair color.", "Hair Color", head_organ.hair_colour) as color|null - if(new_hair && (!..()) && owner.change_hair_color(new_hair)) + var/new_hair = tgui_input_color(usr, "Please select hair color.", "Hair Color", head_organ.hair_colour) + if(!isnull(new_hair) && (!..()) && owner.change_hair_color(new_hair)) update_dna() if("secondary_hair_color") if(can_change(APPEARANCE_SECONDARY_HAIR_COLOR)) - var/new_hair = input("Please select secondary hair color.", "Secondary Hair Color", head_organ.sec_hair_colour) as color|null - if(new_hair && (!..()) && owner.change_hair_color(new_hair, 1)) + var/new_hair = tgui_input_color(usr, "Please select secondary hair color.", "Secondary Hair Color", head_organ.sec_hair_colour) + if(!isnull(new_hair) && (!..()) && owner.change_hair_color(new_hair, 1)) update_dna() if("hair_gradient") @@ -124,21 +124,21 @@ if("facial_hair_color") if(can_change(APPEARANCE_FACIAL_HAIR_COLOR)) - var/new_facial = input("Please select facial hair color.", "Facial Hair Color", head_organ.facial_colour) as color|null - if(new_facial && (!..()) && owner.change_facial_hair_color(new_facial)) + var/new_facial = tgui_input_color(usr, "Please select facial hair color.", "Facial Hair Color", head_organ.facial_colour) + if(!isnull(new_facial) && (!..()) && owner.change_facial_hair_color(new_facial)) update_dna() if("secondary_facial_hair_color") if(can_change(APPEARANCE_SECONDARY_FACIAL_HAIR_COLOR)) - var/new_facial = input("Please select secondary facial hair color.", "Secondary Facial Hair Color", head_organ.sec_facial_colour) as color|null - if(new_facial && (!..()) && owner.change_facial_hair_color(new_facial, 1)) + var/new_facial = tgui_input_color(usr, "Please select secondary facial hair color.", "Secondary Facial Hair Color", head_organ.sec_facial_colour) + if(!isnull(new_facial) && (!..()) && owner.change_facial_hair_color(new_facial, 1)) update_dna() if("eye_color") if(can_change(APPEARANCE_EYE_COLOR)) var/obj/item/organ/internal/eyes/eyes_organ = owner.get_int_organ(/obj/item/organ/internal/eyes) - var/new_eyes = input("Please select eye color.", "Eye Color", eyes_organ.eye_colour) as color|null - if(new_eyes && (!..()) && owner.change_eye_color(new_eyes)) + var/new_eyes = tgui_input_color(usr, "Please select eye color.", "Eye Color", eyes_organ.eye_colour) + if(!isnull(new_eyes) && (!..()) && owner.change_eye_color(new_eyes)) update_dna() if("head_accessory") @@ -148,8 +148,8 @@ if("head_accessory_color") if(can_change_head_accessory()) - var/new_head_accessory = input("Please select head accessory color.", "Head Accessory Color", head_organ.headacc_colour) as color|null - if(new_head_accessory && (!..()) && owner.change_head_accessory_color(new_head_accessory)) + var/new_head_accessory = tgui_input_color(usr, "Please select head accessory color.", "Head Accessory Color", head_organ.headacc_colour) + if(!isnull(new_head_accessory) && (!..()) && owner.change_head_accessory_color(new_head_accessory)) update_dna() if("head_marking") @@ -159,8 +159,8 @@ if("head_marking_color") if(can_change_markings("head")) - var/new_markings = input("Please select head marking color.", "Marking Color", owner.m_colours["head"]) as color|null - if(new_markings && (!..()) && owner.change_marking_color(new_markings, "head")) + var/new_markings = tgui_input_color(usr, "Please select head marking color.", "Marking Color", owner.m_colours["head"]) + if(!isnull(new_markings) && (!..()) && owner.change_marking_color(new_markings, "head")) update_dna() if("body_marking") @@ -170,8 +170,8 @@ if("body_marking_color") if(can_change_markings("body")) - var/new_markings = input("Please select body marking color.", "Marking Color", owner.m_colours["body"]) as color|null - if(new_markings && (!..()) && owner.change_marking_color(new_markings, "body")) + var/new_markings = tgui_input_color(usr, "Please select body marking color.", "Marking Color", owner.m_colours["body"]) + if(!isnull(new_markings) && (!..()) && owner.change_marking_color(new_markings, "body")) update_dna() if("tail_marking") @@ -181,8 +181,8 @@ if("tail_marking_color") if(can_change_markings("tail")) - var/new_markings = input("Please select tail marking color.", "Marking Color", owner.m_colours["tail"]) as color|null - if(new_markings && (!..()) && owner.change_marking_color(new_markings, "tail")) + var/new_markings = tgui_input_color(usr, "Please select tail marking color.", "Marking Color", owner.m_colours["tail"]) + if(!isnull(new_markings) && (!..()) && owner.change_marking_color(new_markings, "tail")) update_dna() if("body_accessory") diff --git a/code/modules/tgui/modules/crew_monitor.dm b/code/modules/tgui/modules/crew_monitor.dm index 8f8a8653c125..ac7443a58a00 100644 --- a/code/modules/tgui/modules/crew_monitor.dm +++ b/code/modules/tgui/modules/crew_monitor.dm @@ -1,5 +1,5 @@ /datum/ui_module/crew_monitor - name = "Crew monitor" + name = "Монитор наблюдения за экипажем" var/crew_vision = CREW_VISION_COMMON /datum/ui_module/crew_monitor/ui_act(action, params) @@ -8,7 +8,7 @@ var/turf/T = get_turf(ui_host()) if(!T || !is_level_reachable(T.z)) - to_chat(usr, "Unable to establish a connection: You're too far away from the station!") + to_chat(usr, span_danger("Удалённый сервер не отвечает на запросы") + ": база данных вне зоны досягаемости.") return FALSE switch(action) @@ -25,7 +25,7 @@ ui = SStgui.try_update_ui(user, src, ui) if(GLOB.communications_blackout) - to_chat(user, span_warning("Monitor shows strange symbols. There is no useful information, because of noise.")) + to_chat(user, span_warning("Монитор показывает странные символы. Разобрать в них что-то невозможно.")) if(ui) ui.close() return diff --git a/code/modules/tgui/modules/ert_manager.dm b/code/modules/tgui/modules/ert_manager.dm index be821601477f..564a016e65f4 100644 --- a/code/modules/tgui/modules/ert_manager.dm +++ b/code/modules/tgui/modules/ert_manager.dm @@ -31,6 +31,7 @@ data["security_level_color"] = "red" else data["security_level_color"] = "purple" + data["ert_request_answered"] = GLOB.ert_request_answered data["ert_type"] = ert_type data["com"] = commander_slots data["sec"] = security_slots @@ -41,13 +42,16 @@ data["cyb"] = cyborg_slots data["total"] = commander_slots + security_slots + medical_slots + engineering_slots + janitor_slots + paranormal_slots + cyborg_slots data["spawnpoints"] = GLOB.emergencyresponseteamspawn.len + data["ert_request_messages"] = GLOB.ert_request_messages return data -/datum/ui_module/ert_manager/ui_act(action, params) +/datum/ui_module/ert_manager/ui_act(action, params, datum/tgui/ui) if(..()) return . = TRUE switch(action) + if("toggle_ert_request_answered") + GLOB.ert_request_answered = !GLOB.ert_request_answered if("ert_type") ert_type = params["ert_type"] if("toggle_com") @@ -65,6 +69,9 @@ if("set_cyb") cyborg_slots = text2num(params["set_cyb"]) if("dispatch_ert") + if(GLOB.send_emergency_team) + to_chat(usr, span_warning("Центральное Командование уже направило Отряд Быстрого Реагирования!")) + return var/datum/response_team/D switch(ert_type) if("Amber") @@ -72,32 +79,46 @@ if("Red") D = new /datum/response_team/red if("Gamma") + if(!check_rights(R_EVENT, TRUE, ui.user)) + to_chat(ui.user, span_warning("Вы не можете отправить ОБР кода Гамма.")) + return D = new /datum/response_team/gamma else - to_chat(usr, "Invalid ERT type.") + to_chat(usr, span_userdanger("Неверный тип ОБР.")) return + GLOB.send_emergency_team = TRUE GLOB.ert_request_answered = TRUE var/slots_list = list() if(commander_slots > 0) - slots_list += "commander: [commander_slots]" + slots_list += "командир: [commander_slots]" if(security_slots > 0) - slots_list += "security: [security_slots]" + slots_list += "боец: [security_slots]" if(medical_slots > 0) - slots_list += "medical: [medical_slots]" + slots_list += "медик: [medical_slots]" if(engineering_slots > 0) - slots_list += "engineering: [engineering_slots]" + slots_list += "инженер: [engineering_slots]" if(janitor_slots > 0) - slots_list += "janitor: [janitor_slots]" + slots_list += "уборщик: [janitor_slots]" if(paranormal_slots > 0) - slots_list += "paranormal: [paranormal_slots]" + slots_list += "паранормал: [paranormal_slots]" if(cyborg_slots > 0) - slots_list += "cyborg: [cyborg_slots]" + slots_list += "борг: [cyborg_slots]" + D.silent = params["silent"] var/slot_text = english_list(slots_list) - notify_ghosts("An ERT is being dispatched. Open positions: [slot_text]") - message_admins("[key_name_admin(usr)] dispatched a [ert_type] ERT. Slots: [slot_text]") - log_admin("[key_name(usr)] dispatched a [ert_type] ERT. Slots: [slot_text]") - GLOB.event_announcement.Announce("Внимание, [station_name()]. Мы предпринимаем шаги для отправки отряда быстрого реагирования. Ожидайте.", "ВНИМАНИЕ: Активирован протокол ОБР.") + log_and_message_admins("dispatched a [params["silent"] ? "silent " : ""][ert_type] ERT. Slots: [slot_text]") + if(!params["silent"]) + GLOB.event_announcement.Announce("Внимание, [station_name()]. Мы предпринимаем шаги для отправки отряда быстрого реагирования. Ожидайте.", "ВНИМАНИЕ: Активирован протокол ОБР.") trigger_armed_response_team(D, commander_slots, security_slots, medical_slots, engineering_slots, janitor_slots, paranormal_slots, cyborg_slots) + + if("view_player_panel") + ui.user.client.holder.show_player_panel(locate(params["uid"])) + + if("deny_ert") + GLOB.ert_request_answered = TRUE + var/message = "[station_name()], к сожалению, в настоящее время мы не можем направить к вам отряд быстрого реагирования." + if(params["reason"]) + message += " Ваш запрос ОБР был отклонен по следующим причинам:\n[params["reason"]]" + GLOB.event_announcement.Announce(message, "Оповещение: ОБР недоступен.") else return FALSE diff --git a/code/modules/tgui/modules/law_manager.dm b/code/modules/tgui/modules/law_manager.dm index 12550323958a..310c1dec74e7 100644 --- a/code/modules/tgui/modules/law_manager.dm +++ b/code/modules/tgui/modules/law_manager.dm @@ -73,22 +73,22 @@ SSticker?.score?.save_silicon_laws(owner, usr, "admin/malf used law manager, new supplied law was added '[supplied_law]'") if("change_zeroth_law") - var/new_law = tgui_input_text(usr, "Enter new law Zero. Leaving the field blank will cancel the edit.", "Edit Law", zeroth_law) + var/new_law = tgui_input_text(usr, "Enter new law Zero. Leaving the field blank will cancel the edit.", "Edit Law", zeroth_law, encode = FALSE) if(new_law && new_law != zeroth_law && (!..())) zeroth_law = new_law if("change_ion_law") - var/new_law = tgui_input_text(usr, "Enter new ion law. Leaving the field blank will cancel the edit.", "Edit Law", ion_law) + var/new_law = tgui_input_text(usr, "Enter new ion law. Leaving the field blank will cancel the edit.", "Edit Law", ion_law, encode = FALSE) if(new_law && new_law != ion_law && (!..())) ion_law = new_law if("change_inherent_law") - var/new_law = tgui_input_text(usr, "Enter new inherent law. Leaving the field blank will cancel the edit.", "Edit Law", inherent_law) + var/new_law = tgui_input_text(usr, "Enter new inherent law. Leaving the field blank will cancel the edit.", "Edit Law", inherent_law, encode = FALSE) if(new_law && new_law != inherent_law && (!..())) inherent_law = new_law if("change_supplied_law") - var/new_law = tgui_input_text(usr, "Enter new supplied law. Leaving the field blank will cancel the edit.", "Edit Law", supplied_law) + var/new_law = tgui_input_text(usr, "Enter new supplied law. Leaving the field blank will cancel the edit.", "Edit Law", supplied_law, encode = FALSE) if(new_law && new_law != supplied_law && (!..())) supplied_law = new_law @@ -105,7 +105,7 @@ to_chat(usr, "You cant edit that law.") return if(AL) - var/new_law = tgui_input_text(usr, "Enter new law. Leaving the field blank will cancel the edit.", "Edit Law", AL.law) + var/new_law = tgui_input_text(usr, "Enter new law. Leaving the field blank will cancel the edit.", "Edit Law", AL.law, encode = FALSE) if(new_law && new_law != AL.law && is_malf(usr) && (!..())) log_and_message_admins("has changed a law of [owner] from '[AL.law]' to '[new_law]'") var/old_law = AL.law @@ -137,7 +137,7 @@ var/datum/ai_laws/ALs = locate(params["transfer_laws"]) in (is_admin(usr) ? admin_laws : player_laws) if(ALs) log_and_message_admins("has transfered the [ALs.name] laws to [owner].") - ALs.sync(owner, 0, TRUE) + ALs.sync(owner, FALSE, TRUE) current_view = 0 SSticker?.score?.save_silicon_laws(owner, usr, "admin/malf used law manager, '[ALs.name]' laws set was loaded", log_all_laws = TRUE) diff --git a/code/modules/tgui/modules/tts_seeds_explorer.dm b/code/modules/tgui/modules/tts_seeds_explorer.dm index acd336b3b8cd..21c42e6dacdf 100644 --- a/code/modules/tgui/modules/tts_seeds_explorer.dm +++ b/code/modules/tgui/modules/tts_seeds_explorer.dm @@ -7,7 +7,7 @@ "Поставьте свою подпись.", "Пора за работу.", "Дело сделано.", - "Станция Нанотрейзен.", + "Станция НаноТрейзен.", "Офицер СБ.", "Капитан.", "Вульпканин.", diff --git a/code/modules/tgui/modules/volume_mixer.dm b/code/modules/tgui/modules/volume_mixer.dm index 5bba2507e99a..d7144cc1b1de 100644 --- a/code/modules/tgui/modules/volume_mixer.dm +++ b/code/modules/tgui/modules/volume_mixer.dm @@ -1,5 +1,5 @@ /datum/ui_module/volume_mixer - name = "Volume Mixer" + name = "Микшер громкости" /datum/ui_module/volume_mixer/ui_state(mob/user) return GLOB.always_state diff --git a/code/modules/tgui/plugins/login.dm b/code/modules/tgui/plugins/login.dm index 7b3c57a4efcb..17c1272503f0 100644 --- a/code/modules/tgui/plugins/login.dm +++ b/code/modules/tgui/plugins/login.dm @@ -137,21 +137,21 @@ GLOBAL_LIST(ui_logins) state.rank = state.id.assignment state.access = state.id.access else - to_chat(usr, "Access Denied.") + to_chat(usr, "Отказано в доступе.") return else if(login_type == LOGIN_TYPE_AI && (isAI(usr) || ispAI(usr))) state.name = usr.name state.rank = JOB_TITLE_AI else if(iscogscarab(usr)) - to_chat(usr, "Access Denied.") + to_chat(usr, "Отказано в доступе.") return else if(login_type == LOGIN_TYPE_ROBOT && isrobot(usr)) var/mob/living/silicon/robot/R = usr state.name = usr.name state.rank = "[R.modtype] [R.braintype]" else if(login_type == LOGIN_TYPE_ADMIN && usr.can_admin_interact()) - state.name = "*CONFIDENTIAL*" - state.rank = "CentComm Secure Connection" + state.name = "*ЗАСЕКРЕЧЕНО*" + state.rank = "Защищённый канал ЦентКома" state.access = get_all_accesses() + get_all_centcom_access() state.logged_in = TRUE diff --git a/code/modules/tgui/states/admin_mod.dm b/code/modules/tgui/states/admin_mod.dm new file mode 100644 index 000000000000..7ea9b10040c2 --- /dev/null +++ b/code/modules/tgui/states/admin_mod.dm @@ -0,0 +1,12 @@ +/** + * tgui state: mod_state + * + * Checks that the user is admin or mod, end-of-story. + */ + +GLOBAL_DATUM_INIT(admin_mod_state, /datum/ui_state/admin_mod_state, new) + +/datum/ui_state/admin_mod_state/can_use_topic(src_object, mob/user, atom/ui_source) + if(check_rights_for(user.client, R_ADMIN) || check_rights_for(user.client, R_MOD)) + return UI_INTERACTIVE + return UI_CLOSE diff --git a/code/modules/tgui/states/range.dm b/code/modules/tgui/states/range.dm new file mode 100644 index 000000000000..842509c5eaa2 --- /dev/null +++ b/code/modules/tgui/states/range.dm @@ -0,0 +1,11 @@ +GLOBAL_DATUM_INIT(range_state, /datum/ui_state/range_state, new) + +/datum/ui_state/range_state/can_use_topic(src_object, mob/user) + var/dist = get_dist(src_object, user) + if(dist <= 1) + return UI_INTERACTIVE + + else if(dist <= 6) + return UI_UPDATE + + return UI_CLOSE diff --git a/code/modules/tgui/tgui_datum.dm b/code/modules/tgui/tgui_datum.dm index 76b393420f2d..960930d03b3d 100644 --- a/code/modules/tgui/tgui_datum.dm +++ b/code/modules/tgui/tgui_datum.dm @@ -103,6 +103,8 @@ /datum/tgui/proc/send_assets() var/flushqueue = window.send_asset(get_asset_datum( /datum/asset/simple/namespaced/fontawesome)) + flushqueue |= window.send_asset(get_asset_datum( + /datum/asset/json/icon_ref_map)) for(var/datum/asset/asset in src_object.ui_assets(user)) flushqueue |= window.send_asset(asset) if(flushqueue) @@ -224,9 +226,9 @@ "locked" = FALSE, ), "client" = list( - "ckey" = user.client.ckey, - "address" = user.client.address, - "computer_id" = user.client.computer_id, + "ckey" = user.client?.ckey, + "address" = user.client?.address, + "computer_id" = user.client?.computer_id, ), "user" = list( "name" = "[user]", @@ -238,11 +240,15 @@ var/data = custom_data || with_data && src_object.ui_data(user) if(data) json_data["data"] = data + var/static_data = with_static_data && src_object.ui_static_data(user) + if(static_data) json_data["static_data"] = static_data + if(src_object.tgui_shared_states) json_data["shared"] = src_object.tgui_shared_states + return json_data /** diff --git a/code/modules/tgui/tgui_input/alert_input.dm b/code/modules/tgui/tgui_input/alert_input.dm index f349dd48c766..f8427933e9ac 100644 --- a/code/modules/tgui/tgui_input/alert_input.dm +++ b/code/modules/tgui/tgui_input/alert_input.dm @@ -81,7 +81,7 @@ if(timeout) src.timeout = timeout start_time = world.time - deletion_timer = QDEL_IN(src, timeout) + deletion_timer = QDEL_IN_STOPPABLE(src, timeout) /datum/tgui_alert/Destroy(force) SStgui.close_uis(src) diff --git a/code/modules/tgui/tgui_input/color_input.dm b/code/modules/tgui/tgui_input/color_input.dm new file mode 100644 index 000000000000..0866ee4cc324 --- /dev/null +++ b/code/modules/tgui/tgui_input/color_input.dm @@ -0,0 +1,132 @@ +/** + * Creates a TGUI color picker window and returns the user's response. + * + * This proc should be used to create a color picker that the caller will wait for a response from. + * Arguments: + * * user - The user to show the picker to. + * * title - The of the picker modal, shown on the top of the TGUI window. + * * timeout - The timeout of the picker, after which the modal will close and qdel itself. Set to zero for no timeout. + * * autofocus - The bool that controls if this picker should grab window focus. + */ +/proc/tgui_input_color(mob/user, message, title, default = "#000000", timeout = 0, autofocus = TRUE, ui_state = GLOB.always_state) + if(!user) + user = usr + if(!istype(user)) + if(!isclient(user)) + CRASH("We passed something that wasn't a user/client in a TGUI Input Color! The passed thing was [user]!") + var/client/client = user + user = client.mob + + if(isnull(user.client)) + return + + // Client does NOT have tgui_input on: Returns regular input + if(user.client?.prefs?.toggles2 & PREFTOGGLE_2_DISABLE_TGUI_INPUT) + return input(user, message, title, default) as color|null + + var/datum/tgui_input_color/picker = new(user, message, title, default, timeout, autofocus, ui_state) + picker.ui_interact(user) + picker.wait() + if(picker) + . = picker.choice + qdel(picker) + +/** + * tgui_input_color + * + * Datum used for instantiating and using a TGUI-controlled color picker. + */ +/datum/tgui_input_color + /// The title of the TGUI window + var/title + /// The message to show the user + var/message + /// The default choice, used if there is an existing value + var/default + /// The color the user selected, null if no selection has been made + var/choice + /// The time at which the tgui_input_color was created, for displaying timeout progress. + var/start_time + /// The lifespan of the tgui_input_color, after which the window will close and delete itself. + var/timeout + /// The bool that controls if this modal should grab window focus + var/autofocus + /// Boolean field describing if the tgui_input_color was closed by the user. + var/closed + /// The attached timer that handles this objects timeout deletion + var/deletion_timer + /// The TGUI UI state that will be returned in ui_state(). Default: always_state + var/datum/ui_state/state + +/datum/tgui_input_color/New(mob/user, message, title, default, timeout, autofocus, ui_state) + src.autofocus = autofocus + src.title = title + src.default = default + src.message = message + src.state = ui_state + + if(timeout) + src.timeout = timeout + start_time = world.time + deletion_timer = QDEL_IN_STOPPABLE(src, timeout) + +/datum/tgui_input_color/Destroy(force, ...) + SStgui.close_uis(src) + state = null + deltimer(deletion_timer) + return ..() + +/** + * Waits for a user's response to the tgui_input_color's prompt before returning. Returns early if + * the window was closed by the user. + */ +/datum/tgui_input_color/proc/wait() + while(!choice && !closed && !QDELETED(src)) + stoplag(1) + +/datum/tgui_input_color/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "ColorPickerModal") + ui.open() + ui.set_autoupdate(timeout > 0) + +/datum/tgui_input_color/ui_close(mob/user) + closed = TRUE + +/datum/tgui_input_color/ui_state(mob/user) + return state + +/datum/tgui_input_color/ui_static_data(mob/user) + var/list/data = list() + data["autofocus"] = autofocus + data["large_buttons"] = !user.client?.prefs || (user.client.prefs.toggles2 & PREFTOGGLE_2_LARGE_INPUT_BUTTONS) + data["swapped_buttons"] = !user.client?.prefs || (user.client.prefs.toggles2 & PREFTOGGLE_2_SWAP_INPUT_BUTTONS) + data["title"] = title + data["default_color"] = default + data["message"] = message + return data + +/datum/tgui_input_color/ui_data(mob/user) + var/list/data = list() + if(timeout) + data["timeout"] = CLAMP01((timeout - (world.time - start_time) - 1 SECONDS) / (timeout - 1 SECONDS)) + return data + +/datum/tgui_input_color/ui_act(action, list/params) + . = ..() + if(.) + return + + switch(action) + if("submit") + if(!findtext(params["entry"], GLOB.is_color)) + return + choice = params["entry"] + closed = TRUE + SStgui.close_uis(src) + return TRUE + if("cancel") + closed = TRUE + SStgui.close_uis(src) + return TRUE diff --git a/code/modules/tgui/tgui_input/input_checkbox.dm b/code/modules/tgui/tgui_input/input_checkbox.dm new file mode 100644 index 000000000000..d7bb27f49eba --- /dev/null +++ b/code/modules/tgui/tgui_input/input_checkbox.dm @@ -0,0 +1,73 @@ +/** + * Creates a TGUI input list window and returns the user's response in a ranked order. + * + * Arguments: + * * user - The user to show the input box to. + * * message - The content of the input box, shown in the body of the TGUI window. + * * title - The title of the input box, shown on the top of the TGUI window. + * * items - The options that can be chosen by the user, each string is assigned a button on the UI. + * * default - If an option is already preselected on the UI. Current values, etc. + * * timeout - The timeout of the input box, after which the menu will close and qdel itself. Set to zero for no timeout. + */ +/proc/tgui_input_checkbox_list(mob/user, message, title = "Select", list/items, default, timeout = 0, ui_state = GLOB.always_state) + if(!user) + user = usr + + if(!length(items)) + CRASH("[user] tried to open an empty TGUI Input Checkbox List. Contents are: [items]") + + if(!istype(user)) + if(!isclient(user)) + CRASH("We passed something that wasn't a user/client in a TGUI Input Checkbox List! The passed user was [user]!") + var/client/client = user + user = client.mob + + if(isnull(user.client)) + return + + var/datum/tgui_list_input/checkbox/input = new(user, message, title, items, default, timeout, ui_state) + + if(input.invalid) + qdel(input) + return + + input.ui_interact(user) + input.wait() + if(input) + . = input.choice + qdel(input) + +/** + * # tgui_list_input/ranked + * + * Datum used for allowing a user to sort a TGUI-controlled list input that prompts the user with + * a message and shows a list of rankable options + */ +/datum/tgui_list_input/checkbox + modal_type = "CheckboxListInputModal" + +/datum/tgui_list_input/checkbox/handle_new_items(list/_items) + var/list/repeat_items = list() + // Gets rid of illegal characters + var/static/regex/blacklisted_words = regex(@{"([^\u0020-\u8000]+)"}) + + for(var/key in _items) + var/string_key = blacklisted_words.Replace("[key]", "") + + // Avoids duplicated keys E.g: when areas have the same name + string_key = avoid_assoc_duplicate_keys(string_key, repeat_items) + src.items += list(list( + "key" = string_key, + "checked" = (_items[key] ? TRUE : FALSE) + )) + src.items_map = _items // we use this differently + +/datum/tgui_list_input/checkbox/handle_submit_action(params) + var/list/associated = list() + for(var/list/sublist in params["entry"]) + associated[sublist["key"]] = (sublist["checked"] in list(1, "1", "true")) + + if(!lists_equal_unordered(associated, items_map)) + return FALSE + set_choice(associated) + return TRUE diff --git a/code/modules/tgui/tgui_input/keycombo_input.dm b/code/modules/tgui/tgui_input/keycombo_input.dm index dcf9d3839b39..3efb9255c032 100644 --- a/code/modules/tgui/tgui_input/keycombo_input.dm +++ b/code/modules/tgui/tgui_input/keycombo_input.dm @@ -72,7 +72,7 @@ if(timeout) src.timeout = timeout start_time = world.time - deletion_timer = QDEL_IN(src, timeout) + deletion_timer = QDEL_IN_STOPPABLE(src, timeout) /datum/tgui_input_keycombo/Destroy(force) SStgui.close_uis(src) diff --git a/code/modules/tgui/tgui_input/list_input.dm b/code/modules/tgui/tgui_input/list_input.dm index f43ceffdaafa..938aceb8243b 100644 --- a/code/modules/tgui/tgui_input/list_input.dm +++ b/code/modules/tgui/tgui_input/list_input.dm @@ -73,26 +73,18 @@ var/datum/ui_state/state /// Whether the tgui list input is invalid or not (i.e. due to all list entries being null) var/invalid = FALSE + /// The TGUI modal to use for this popup + var/modal_type = "ListInputModal" -/datum/tgui_list_input/New(mob/user, message, title, list/items, default, timeout, ui_state) +/datum/tgui_list_input/New(mob/user, message, title, list/_items, default, timeout, ui_state) src.title = title src.message = message src.items = list() src.items_map = list() src.default = default src.state = ui_state - var/list/repeat_items = list() - - // Gets rid of illegal characters - var/static/regex/whitelistedWords = regex(@{"([^\u0020-\u8000]+)"}) - for(var/i in items) - var/string_key = whitelistedWords.Replace("[i]", "") - - // Avoids duplicated keys E.g: when areas have the same name - string_key = avoid_assoc_duplicate_keys(string_key, repeat_items) - src.items += string_key - src.items_map[string_key] = i + handle_new_items(_items) if(length(src.items) == 0) invalid = TRUE @@ -100,7 +92,7 @@ if(timeout) src.timeout = timeout start_time = world.time - deletion_timer = QDEL_IN(src, timeout) + deletion_timer = QDEL_IN_STOPPABLE(src, timeout) /datum/tgui_list_input/Destroy(force) SStgui.close_uis(src) @@ -122,7 +114,7 @@ /datum/tgui_list_input/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user, src, "ListInputModal") + ui = new(user, src, modal_type) ui.set_autoupdate(FALSE) ui.open() @@ -152,9 +144,8 @@ switch(action) if("submit") - if(!(params["entry"] in items)) + if(!handle_submit_action(params)) return - set_choice(items_map[params["entry"]]) closed = TRUE SStgui.close_uis(src) return TRUE @@ -163,5 +154,24 @@ SStgui.close_uis(src) return TRUE +/datum/tgui_list_input/proc/handle_submit_action(params) + if(!(params["entry"] in items)) + return FALSE + set_choice(items_map[params["entry"]]) + return TRUE + /datum/tgui_list_input/proc/set_choice(choice) src.choice = choice + +/datum/tgui_list_input/proc/handle_new_items(list/_items) + var/list/repeat_items = list() + // Gets rid of illegal characters + var/static/regex/blacklisted_words = regex(@{"([^\u0020-\u8000]+)"}) + + for(var/i in _items) + var/string_key = blacklisted_words.Replace("[i]", "") + + // Avoids duplicated keys E.g: when areas have the same name + string_key = avoid_assoc_duplicate_keys(string_key, repeat_items) + items += string_key + items_map[string_key] = i diff --git a/code/modules/tgui/tgui_input/number_input.dm b/code/modules/tgui/tgui_input/number_input.dm index b9dad2677b45..efd7f1f4467e 100644 --- a/code/modules/tgui/tgui_input/number_input.dm +++ b/code/modules/tgui/tgui_input/number_input.dm @@ -86,7 +86,7 @@ if(timeout) src.timeout = timeout start_time = world.time - deletion_timer = QDEL_IN(src, timeout) + deletion_timer = QDEL_IN_STOPPABLE(src, timeout) /// Checks for empty numbers - bank accounts, etc. if(max_value == 0) diff --git a/code/modules/tgui/tgui_input/ranked_list_input.dm b/code/modules/tgui/tgui_input/ranked_list_input.dm new file mode 100644 index 000000000000..80631d568236 --- /dev/null +++ b/code/modules/tgui/tgui_input/ranked_list_input.dm @@ -0,0 +1,56 @@ +/** + * Creates a TGUI input list window and returns the user's response. + * + * This proc should be used to create alerts that the caller will wait for a response from. + * Arguments: + * * user - The user to show the input box to. + * * message - The content of the input box, shown in the body of the TGUI window. + * * title - The title of the input box, shown on the top of the TGUI window. + * * items - The options that can be chosen by the user, each string is assigned a button on the UI. + * * default - If an option is already preselected on the UI. Current values, etc. + * * timeout - The timeout of the input box, after which the menu will close and qdel itself. Set to zero for no timeout. + */ +/proc/tgui_input_ranked_list(mob/user, message, title = "Select", list/items, default, timeout = 0, ui_state = GLOB.always_state) + if(!user) + user = usr + + if(!length(items)) + CRASH("[user] tried to open an empty TGUI Input List. Contents are: [items]") + + if(!istype(user)) + if(!isclient(user)) + CRASH("We passed something that wasn't a user/client in a TGUI Input List! The passed user was [user]!") + var/client/client = user + user = client.mob + + if(isnull(user.client)) + return + + // We don't support disabled TGUI input (PREFTOGGLE_2_DISABLE_TGUI_INPUT), get with the times old man + + var/datum/tgui_list_input/ranked/input = new(user, message, title, items, default, timeout, ui_state) + + if(input.invalid) + qdel(input) + return + + input.ui_interact(user) + input.wait() + if(input) + . = input.choice + qdel(input) + +/** + * # tgui_list_input/ranked + * + * Datum used for allowing a user to sort a TGUI-controlled list input that prompts the user with + * a message and shows a list of rankable options + */ +/datum/tgui_list_input/ranked + modal_type = "RankedListInputModal" + +/datum/tgui_list_input/ranked/handle_submit_action(params) + if(!lists_equal_unordered(params["entry"], items)) + return FALSE + set_choice(params["entry"]) + return TRUE diff --git a/code/modules/tgui/tgui_input/text_input.dm b/code/modules/tgui/tgui_input/text_input.dm index b3a7d32b0904..3aed63f6b1a0 100644 --- a/code/modules/tgui/tgui_input/text_input.dm +++ b/code/modules/tgui/tgui_input/text_input.dm @@ -15,7 +15,7 @@ * * encode - Toggling this determines if input is filtered via html_encode. Setting this to FALSE gives raw input. * * timeout - The timeout of the textbox, after which the modal will close and qdel itself. Set to zero for no timeout. */ -/proc/tgui_input_text(mob/user, message = "", title = "Text Input", default, max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = TRUE, timeout = 0, ui_state = GLOB.always_state) +/proc/tgui_input_text(mob/user, message = "", title = "Text Input", default, max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = TRUE, trim = TRUE, timeout = 0, ui_state = GLOB.always_state) if(!user) user = usr @@ -32,16 +32,16 @@ if(user.client?.prefs?.toggles2 & PREFTOGGLE_2_DISABLE_TGUI_INPUT) if(encode) if(multiline) - return stripped_multiline_input(user, message, title, default, max_length) + return stripped_multiline_input(user, message, title, default, max_length, !trim) else - return stripped_input(user, message, title, default, max_length) + return stripped_input(user, message, title, default, max_length, !trim) else if(multiline) return input(user, message, title, default) as message|null else return input(user, message, title, default) as text|null - var/datum/tgui_input_text/text_input = new(user, message, title, default, max_length, multiline, encode, timeout, ui_state) + var/datum/tgui_input_text/text_input = new(user, message, title, default, max_length, multiline, encode, trim, timeout, ui_state) text_input.ui_interact(user) text_input.wait() @@ -62,6 +62,8 @@ var/default /// Whether the input should be stripped using html_encode var/encode + /// Whether the input should be trimmed from whitespaces + var/trim /// The entry that the user has return_typed in. var/entry /// The maximum length for text entry @@ -81,9 +83,10 @@ /// The TGUI UI state that will be returned in ui_state(). Default: always_state var/datum/ui_state/state -/datum/tgui_input_text/New(mob/user, message, title, default, max_length, multiline, encode, timeout, ui_state) +/datum/tgui_input_text/New(mob/user, message, title, default, max_length, multiline, encode, trim, timeout, ui_state) src.default = default src.encode = encode + src.trim = trim src.max_length = max_length src.message = message src.multiline = multiline @@ -93,7 +96,7 @@ if(timeout) src.timeout = timeout start_time = world.time - deletion_timer = QDEL_IN(src, timeout) + deletion_timer = QDEL_IN_STOPPABLE(src, timeout) /datum/tgui_input_text/Destroy(force) SStgui.close_uis(src) @@ -171,4 +174,4 @@ return var/converted_entry = encode ? html_encode(entry) : entry - src.entry = trim(converted_entry, max_length) + src.entry = trim ? trim(converted_entry, max_length + 1) : trim_length(converted_entry, max_length + 1) diff --git a/code/modules/tgui/tgui_panel/tgui_panel_external.dm b/code/modules/tgui/tgui_panel/tgui_panel_external.dm index f51c974ae4a2..fb021cc75a61 100644 --- a/code/modules/tgui/tgui_panel/tgui_panel_external.dm +++ b/code/modules/tgui/tgui_panel/tgui_panel_external.dm @@ -19,21 +19,18 @@ // Failed to fix action = alert(src, "Did that work?", "", "Yes", "No, switch to old ui") if(action == "No, switch to old ui") - winset(src, "output", "on-show=&is-disabled=0&is-visible=1") - winset(src, "chat_panel", "is-disabled=1;is-visible=0") + winset(src, "legacy_output_selector", "left=output_legacy") log_tgui(src, "Failed to fix.") /client/proc/nuke_chat() // Catch all solution (kick the whole thing in the pants) - winset(src, "output", "on-show=&is-disabled=0&is-visible=1") - winset(src, "chat_panel", "is-disabled=1;is-visible=0") + winset(src, "legacy_output_selector", "left=output_legacy") if(!tgui_panel || !istype(tgui_panel)) log_tgui(src, "tgui_panel datum is missing") tgui_panel = new(src, "chat_panel") tgui_panel.initialize(force = TRUE) // Force show the panel to see if there are any errors - winset(src, "output", "is-disabled=1&is-visible=0") - winset(src, "chat_panel", "is-disabled=0;is-visible=1") + winset(src, "legacy_output_selector", "left=output_legacy") /client/verb/refresh_tgui() set name = "Refresh TGUI" diff --git a/code/modules/tgui_input/say_modal/tgui_say_speech.dm b/code/modules/tgui_input/say_modal/tgui_say_speech.dm index 8843a80431bd..745f25a7b387 100644 --- a/code/modules/tgui_input/say_modal/tgui_say_speech.dm +++ b/code/modules/tgui_input/say_modal/tgui_say_speech.dm @@ -36,6 +36,9 @@ if(DSAY_CHANNEL) client.dsay(entry) return TRUE + if(DEV_CHANNEL) + client.cmd_dev_say(entry) + return TRUE return FALSE /** diff --git a/code/modules/vehicle/atv.dm b/code/modules/vehicle/atv.dm index f8d2d53ccbbb..5e23c376258d 100644 --- a/code/modules/vehicle/atv.dm +++ b/code/modules/vehicle/atv.dm @@ -98,8 +98,8 @@ /obj/machinery/porta_turret/syndicate/vehicle_turret/fast - projectile = /obj/item/projectile/bullet/weakbullet4/c9mmte - eprojectile = /obj/item/projectile/bullet/weakbullet4/c9mmte + projectile = /obj/projectile/bullet/weakbullet4/c9mmte + eprojectile = /obj/projectile/bullet/weakbullet4/c9mmte shot_delay = 0.2 SECONDS diff --git a/code/modules/vehicle/lavaboat.dm b/code/modules/vehicle/lavaboat.dm index d562bb38dbaa..4e4db3288a85 100644 --- a/code/modules/vehicle/lavaboat.dm +++ b/code/modules/vehicle/lavaboat.dm @@ -53,6 +53,7 @@ reqs = list(/obj/item/stack/sheet/bone = 2) time = 15 category = CAT_PRIMAL + subcategory = CAT_MISC2 /datum/crafting_recipe/boat name = "goliath hide boat" @@ -60,4 +61,4 @@ reqs = list(/obj/item/stack/sheet/animalhide/goliath_hide = 3) time = 50 category = CAT_PRIMAL - + subcategory = CAT_MISC2 diff --git a/code/modules/vehicle/ridden.dm b/code/modules/vehicle/ridden.dm index bb29b619179d..8756ed10cad4 100644 --- a/code/modules/vehicle/ridden.dm +++ b/code/modules/vehicle/ridden.dm @@ -40,16 +40,17 @@ inserted_key = I return ATTACK_CHAIN_PROCEED -/obj/vehicle/ridden/AltClick(mob/user) +/obj/vehicle/ridden/click_alt(mob/user) if(!inserted_key) - return + return NONE if(!is_occupant(user)) to_chat(user, span_warning("You must be riding the [src] to remove [src]'s key!")) - return + return CLICK_ACTION_BLOCKING to_chat(user, span_notice("You remove \the [inserted_key] from \the [src].")) inserted_key.forceMove_turf() user.put_in_hands(inserted_key) inserted_key = null + return CLICK_ACTION_SUCCESS /obj/vehicle/ridden/user_buckle_mob(mob/living/M, mob/user, check_loc = TRUE) if(!in_range(user, src) || !in_range(M, src)) diff --git a/code/modules/vote/vote_presets.dm b/code/modules/vote/vote_presets.dm index 57948610b03d..27882075ac08 100644 --- a/code/modules/vote/vote_presets.dm +++ b/code/modules/vote/vote_presets.dm @@ -31,6 +31,12 @@ if(CONFIG_GET(string/map_vote_mode) == "nodoubles") map_pool -= SSmapping.map_datum.type + if(CONFIG_GET(string/map_vote_mode) == "notriples") + if(SSmapping.previous_maps && length(SSmapping.previous_maps)) + var/current_map = SSmapping.map_datum.type + if(current_map == SSmapping.previous_maps[1]) + map_pool -= current_map + for(var/datum/map/possible_map as anything in map_pool) if(initial(possible_map.admin_only)) continue diff --git a/code/modules/vote/vote_verb.dm b/code/modules/vote/vote_verb.dm index b81b31be39ff..f85c5bf20e9b 100644 --- a/code/modules/vote/vote_verb.dm +++ b/code/modules/vote/vote_verb.dm @@ -14,7 +14,7 @@ to_chat(src, "There is no active vote") /client/proc/start_vote() - set category = "Admin" + set category = "Admin.Admin" set name = "Start Vote" set desc = "Start a vote on the server" @@ -55,7 +55,7 @@ choices |= option var/c2 = tgui_alert(usr, "Show counts while vote is happening?", "Counts", list("Yes", "No")) - var/c3 = input(usr, "Select a result calculation type", "Vote", VOTE_RESULT_TYPE_MAJORITY) as anything in list(VOTE_RESULT_TYPE_MAJORITY) + var/c3 = tgui_input_list(usr, "Select a result calculation type", "Vote", list(VOTE_RESULT_TYPE_MAJORITY), VOTE_RESULT_TYPE_MAJORITY) var/datum/vote/V = new /datum/vote(usr.ckey, question, choices, TRUE) V.show_counts = (c2 == "Yes") @@ -64,7 +64,7 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Start Vote") //If you are copy-pasting this, ensure the 4th parameter is unique to the new proc! /datum/admins/proc/togglevotedead() - set category = "Server" + set category = "Admin.Toggles" set desc = "Toggle Dead Vote." set name = "Toggle Dead Vote" diff --git a/code/modules/w_examine/descriptions/medical.dm b/code/modules/w_examine/descriptions/medical.dm index 728a5f72c61a..a85f73ef6bb4 100644 --- a/code/modules/w_examine/descriptions/medical.dm +++ b/code/modules/w_examine/descriptions/medical.dm @@ -27,7 +27,7 @@ description_info = "Click your target with Grab intent, then click on the table with an empty hand, to place them on it." /obj/machinery/computer/operating - description_info = "This console gives information on the status of the patient on the adjacent operating table, notably their consciousness." + description_info = "Эта консоль выдает информацию о состоянии пациента, лежащего на соседнем операционном столе, в частности о его сознании." /obj/machinery/sleeper description_info = "The sleeper allows you to clean the blood by means of dialysis, and to administer medication in a controlled environment.
    \ diff --git a/config/example/admins.txt b/config/example/admins.txt deleted file mode 100644 index 474a5bd8b2fd..000000000000 --- a/config/example/admins.txt +++ /dev/null @@ -1,8 +0,0 @@ -###################################################################### -# Basically, ckey goes first. Rank goes after the "-" # -# Case is not important for ckey. # -# Case IS important for the rank. However punctuation/spaces are not # -# Ranks can be anything defined in admin_ranks.txt # -###################################################################### - -# example - Hosting Provider diff --git a/config/example/alienwhitelist.txt b/config/example/alienwhitelist.txt deleted file mode 100644 index 01acc82de925..000000000000 --- a/config/example/alienwhitelist.txt +++ /dev/null @@ -1 +0,0 @@ -some~user - Species \ No newline at end of file diff --git a/config/example/away_mission_config.txt b/config/example/away_mission_config.txt deleted file mode 100644 index d06e581e04b8..000000000000 --- a/config/example/away_mission_config.txt +++ /dev/null @@ -1,34 +0,0 @@ -#List the potential random Z-levels here. -#Maps must be the full path to them -#Maps should be 255x255 or smaller and be bounded. Falling off the edge of the map will result in undefined behavior. -#SPECIFYING AN INVALID MAP WILL RESULT IN RUNTIMES ON GAME START - -#!!IMPORTANT NOTES FOR HOSTING AWAY MISSIONS!!: -#Do NOT tick the maps during compile -- the game uses this list to decide which map to load. Ticking the maps will result in them ALL being loaded at once. -#DO tick the associated code file for the away mission you are enabling. Otherwise, the map will be trying to reference objects which do not exist, which will cause runtime errors! - -#===================================# -# BROKEN / INCOMPLETE AWAY MISSIONS # -#===================================# -#_maps/map_files/RandomZLevels/centcomAway.dmm -#_maps/map_files/RandomZLevels/example.dmm -#_maps/map_files/RandomZLevels/spacebattle.dmm -#_maps/map_files/RandomZLevels/stationCollision.dmm - -#===================================# -# USABLE AWAY MISSIONS # -#===================================# - -_maps/map_files/RandomZLevels/beach.dmm -_maps/map_files/RandomZLevels/moonoutpost19.dmm -_maps/map_files/RandomZLevels/undergroundoutpost45.dmm -_maps/map_files/RandomZLevels/academy.dmm -_maps/map_files/RandomZLevels/blackmarketpackers.dmm -_maps/map_files/RandomZLevels/spacehotel.dmm -_maps/map_files/RandomZLevels/wildwest.dmm -_maps/map_files/RandomZLevels/terrorspiders.dmm - -#===================================# -# SPECIAL AWAY MISSIONS # -#===================================# -#_maps/map_files/RandomZLevels/evil_santa.dmm \ No newline at end of file diff --git a/config/example/config.txt b/config/example/config.txt index ad4324f993ce..bca18167b59b 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -388,9 +388,6 @@ SOCKET_TALK 0 ## How long the delay is before the Away Mission gate opens. Default is half an hour. GATEWAY_DELAY 6000 -## Remove the # to give assistants maint access. -ASSISTANT_MAINT - ## Remove the # to enable assistant limiting. ASSISTANT_LIMIT @@ -473,18 +470,6 @@ PLAYER_REROUTE_CAP 0 ## Server to reroute to #TUTORIAL_SERVER_URL byond://example.org:1111 -## Disable the loading of away missions -#DISABLE_AWAY_MISSIONS - -## Disable the loading of space ruins -#DISABLE_SPACE_RUINS - -## Minimum number of space ruins levels to generate -EXTRA_SPACE_RUIN_LEVELS_MIN 4 - -## Maximum number of space ruins levels to generate -EXTRA_SPACE_RUIN_LEVELS_MAX 8 - ## Uncomment to disable the OOC/LOOC channel by default. #DISABLE_OOC @@ -648,7 +633,6 @@ TOPIC_FILTERING_WHITELIST 127.0.0.1 # Number of players required for automatic gamemode change to extended. Doesn't work if set to zero or commented #AUTO_EXTENDED_PLAYERS_NUM 10 - ## CPU Affinity for FFmpeg. Check out taskset man page. ## Example valid values: "0-3" or "1,4-7" #FFMPEG_CPUAFFINITY 0-3 @@ -663,23 +647,12 @@ MAP_ROTATE none ## Server map voting mode: ## all - all maps can be selected ## nodoubles - current map can't be selected as next +## notriples - current map can't be selected as next if played twice in a row MAP_VOTE_MODE all -## Default server map -DEFAULT_MAP /datum/map/cyberiad - -## Override server map by specified, uncomment to apply -# OVERRIDE_MAP /datum/map/delta - ## Enable animations on item pickup and drop down # ITEM_ANIMATIONS_ENABLED -## Disable the loading of "Taipan" -# DISABLE_TAIPAN - -## Disable the loading of Lavaland -# DISABLE_LAVALAND - ## If the number of players is more or same than this, then we apply the highpop jobs config. JOBS_HIGH_POP_MODE_AMOUNT 80 @@ -732,3 +705,41 @@ CACHE_ASSETS 0 ## Enable the replay demo recording subsystem #DEMOS_ENABLED + +### INITIALIZATION SETTINGS ### +## This section contains settings directly affecting initializing progress. Uncomment these to make your world load faster. + +## Loads only space without anything in station sector. Still makes landmarks for spawnpoints, though. +#LOAD_NO_STATION + +## Enables loading titlescreen only after master has been loaded. Recommended to be used on local server for faster loading. +#ENABLE_TITLESCREEN_LATELOAD + +## Disable the loading of "Taipan" +#DISABLE_TAIPAN + +## Disable the loading of Lavaland +#DISABLE_LAVALAND + +## Disable the loading of away missions +#DISABLE_AWAY_MISSIONS + +## Disable the loading of space ruins +#DISABLE_SPACE_RUINS + +## Default server map +DEFAULT_MAP /datum/map/cyberiad + +## Override server map by specified, uncomment to apply +# OVERRIDE_MAP /datum/map/delta + +## Override away mission map. Spawns it even if it is not mentioned in away_mission_config.txt +# OVERRIDE_AWAY_MISSION _maps/map_files/RandomZLevels/academy.dmm + +## Minimum number of space ruins levels to generate +EXTRA_SPACE_RUIN_LEVELS_MIN 4 + +## Maximum number of space ruins levels to generate +EXTRA_SPACE_RUIN_LEVELS_MAX 8 + +### INITIALIZATION SETTINGS END ### diff --git a/config/example/custom_sprites.txt b/config/example/custom_sprites.txt deleted file mode 100644 index 45d1d66058b9..000000000000 --- a/config/example/custom_sprites.txt +++ /dev/null @@ -1,7 +0,0 @@ -Each entry should be composed of 2 parts, divided by a colon (:) with no spaces, in order to work. Failure to do so will result in that entry being disregarded by the code. -- The first part should be either "cyborg", "ai", "hologram", "pai", "drone", or "screen". This tells the code what type of custom sprite this entry is for. The "ai" option is for AI core displays, while "hologram" is for AI hologram projections. -- The second part should be the ckey of the player this entry is for. This tells the code who it works for and also is used to retrieve the proper sprite for them to use. -- If the entry is a custom screen, it will need a 3rd part which is the screen name. This tells the code which screen to use, as well allows for someone to have more then one custom screen. - - -example:example \ No newline at end of file diff --git a/config/example/dbconfig.txt b/config/example/dbconfig.txt index fc1daabda544..331aabd8fe88 100644 --- a/config/example/dbconfig.txt +++ b/config/example/dbconfig.txt @@ -9,7 +9,7 @@ ## This value must be set to the version of the paradise schema in use. ## If this value does not match, the SQL database will not be loaded and an error will be generated. ## Roundstart will be delayed. -DB_VERSION 33 +DB_VERSION 34 ## Server the MySQL database can be found at. # Examples: localhost, 200.135.5.43, www.mysqldb.com, etc. diff --git a/config/example/hublist.txt b/config/example/hublist.txt deleted file mode 100644 index 24c8ba45f033..000000000000 --- a/config/example/hublist.txt +++ /dev/null @@ -1,2 +0,0 @@ -Подключиться Example Server (HighRP) — Основной сервер

    -После нажатия кнопки подключения следует подождать пока загрузится другой сервер.
    diff --git a/config/example/motd.txt b/config/example/motd.txt deleted file mode 100644 index f39e579a6f76..000000000000 --- a/config/example/motd.txt +++ /dev/null @@ -1,5 +0,0 @@ -

    Welcome to Space Station 13!

    - --This server is running Paradise's modification of the Baystation 12 and /tg/station13 SS13 code. -

    -GitHub: https://github.com/ParadiseSS13/Paradise diff --git a/config/example/ofwhitelist.txt b/config/example/ofwhitelist.txt deleted file mode 100644 index 7588d3b698e7..000000000000 --- a/config/example/ofwhitelist.txt +++ /dev/null @@ -1,2 +0,0 @@ -#Any ckeys in this file will be ignored by the overflow system. -example142 \ No newline at end of file diff --git a/config/example/rules.html b/config/example/rules.html deleted file mode 100644 index 11e35094ee7f..000000000000 --- a/config/example/rules.html +++ /dev/null @@ -1,12 +0,0 @@ - - -Server Rules - - - - - - \ No newline at end of file diff --git a/config/example/tos.txt b/config/example/tos.txt deleted file mode 100644 index eb43c50a0833..000000000000 --- a/config/example/tos.txt +++ /dev/null @@ -1,3 +0,0 @@ -

    Welcome to Space Station 13!

    - -Terms of service goes here. \ No newline at end of file diff --git a/config/example/twitch_censor.txt b/config/example/twitch_censor.txt deleted file mode 100644 index 57338268645a..000000000000 --- a/config/example/twitch_censor.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Dictinary of patterns that needs to be replaced -# format: -# pattern=replacement diff --git a/config/names/jobs.txt b/config/names/jobs.txt index e745de04e83b..e57a3582ced8 100644 --- a/config/names/jobs.txt +++ b/config/names/jobs.txt @@ -23,7 +23,7 @@ пилот службы безопасности капитан глава персонала -представитель Нанотрейзен +представитель НаноТрейзен синий щит судья агент внутренних дел @@ -39,4 +39,4 @@ библиотекарь барбер священник -офицер синдиката \ No newline at end of file +офицер синдиката diff --git a/config/names/locations.txt b/config/names/locations.txt index c18baf2973a1..d75d675aa99f 100644 --- a/config/names/locations.txt +++ b/config/names/locations.txt @@ -106,7 +106,7 @@ док шахтёрского шаттла морг Мистер Чанг -офис представителя Нанотрейзен +офис представителя НаноТрейзен канцелярские принадлежности кабинет парамедика зоомагазин @@ -154,4 +154,4 @@ лобби отдела вирусологии кабинет надзирателя отсек утилизации отходов -лаборатория ксенобиологии \ No newline at end of file +лаборатория ксенобиологии diff --git a/config/news/trivial.txt b/config/news/trivial.txt index 0764fa0c7079..91e6565a9e60 100644 --- a/config/news/trivial.txt +++ b/config/news/trivial.txt @@ -1,85 +1,62 @@ -Tree stuck in tajaran; firefighters baffled. -Armadillos want aardvarks removed from dictionary claims 'here first'. -Angel found dancing on pinhead ordered to stop; cited for public nuisance. -Letters claim they are better than numbers; 'Always have been'. -Pens proclaim pencils obsolete, 'lead is dead'. -Rock and paper sues scissors for discrimination. -Steak tell-all book reveals he never liked sitting by potato. -Woodchuck stops counting how many times he’s chucked 'Never again'. -{{AFFECTED}} clerk first person able to pronounce '@*$%!'. -{{AFFECTED}} delis serving boiled paperback dictionaries, 'Adjectives chewy' customers declare. -{{AFFECTED}} weather deemed 'boring'; meteors and rad storms to be imported. -Most {{AFFECTED}} security officers prefer cream over sugar. -Palindrome speakers conference in {{AFFECTED}}; 'Wow!' says Otto. -Question mark worshipped as deity by ancient {{AFFECTED}} dwellers. -Spilled milk causes whole {{AFFECTED}} populace to cry. -World largest carp patty at display on {{AFFECTED}}. -'Here kitty kitty' no longer preferred tajaran retrieval technique. -Man travels 7000 light years to retrieve lost hankie, 'It was my favourite'. -New bowling lane that shoots mini-meteors at bowlers very popular. -Guy gets tattoo of Tau Ceti on chest 'Asteroid tickles most'. -Guy gets tattoo of Tau Ceti on chest 'Starship tickles most'. -Guy gets tattoo of Tau Ceti on chest 'Star tickles most'. -Guy gets tattoo of Tau Ceti on chest 'CentComm tickles most'. -Skrell marries computer; wedding attended by 100 modems. -Chef reports successfully using harmonica as cheese grater. -Nanotrasen invents handkerchief that says 'Bless you' after sneeze. -Clone accused of posing for other clones’s school photo. -Clone accused of stealing other clones’s employee of the month award. -Woman robs station with hair dryer; crewmen love new style. -This space for rent. -{{AFFECTED}} Baker Wins Pickled Crumpet Toss Three Years Running -Skrell Scientist Discovers Abacus Can Be Used To Dry Towels -Survey: 'Cheese Louise' Voted Best Pizza Restaurant In Tau Ceti -I Was Framed, jokes {{AFFECTED}} artist -Mysterious Loud Rumbling Noises In {{AFFECTED}} Found To Be Mysterious Loud Rumblings -Alien ambassador becomes lost on {{AFFECTED}}, refuses to ask for directions -Swamp Gas Verified To Be Exhalations Of Stars--Movie Stars--Long Passed -Tainted Broccoli Weapon Of Choice For Syndicate Assassins -Chefs Find Broccoli Effective Tool For Cutting Cheese -Broccoli Found To Cause Grumpiness In Monkeys -Survey: 80% Of People on {{AFFECTED}} Love Clog-Dancing -Giant Hairball Has Perfect Grammar But Rolls rr's Too Much, Linguists Say -{{AFFECTED}} Phonebooks Print All Wrong Numbers; Results In 15 New Marriages -Tajaran Burglar Spotted on {{AFFECTED}}, Mistaken For Dalmatian -Gibson Gazette Updates Frequently Absurd, Poll Indicates -Esoteric Verbosity Culminates In Communicative Ennui, {{AFFECTED}} Academics Note -Taj Demand Longer Breaks, Cleaner Litter, Slower Mice -Survey: 3 Out Of 5 Skrell Loathe Modern Art -Skrell Scientist Discovers Gravity While Falling Down Stairs -Boy Saves Tajaran From Tree on {{AFFECTED}}, Thousands Cheer -Shipment Of Apples Overturns, {{AFFECTED}} Diner Offers Applesauce Special -Spotted Owl Spotted on {{AFFECTED}} -Humans Everywhere Agree: Purring Tajarans Are Happy Tajarans -From The Desk Of Wise Guy Sammy: One Word In This Gazette Is Sdrawkcab -From The Desk Of Wise Guy Sammy: It's Hard To Have Too Much Shelf Space -From The Desk Of Wise Guy Sammy: Wine And Friendships Get Better With Age -From The Desk Of Wise Guy Sammy: The Insides Of Golf Balls Are Mostly Rubber Bands -From The Desk Of Wise Guy Sammy: You Don't Have To Fool All The People, Just The Right Ones -From The Desk Of Wise Guy Sammy: If You Made The Mess, You Clean It Up -From The Desk Of Wise Guy Sammy: It Is Easier To Get Forgiveness Than Permission -From The Desk Of Wise Guy Sammy: Check Your Facts Before Making A Fool Of Yourself -From The Desk Of Wise Guy Sammy: You Can't Outwait A Bureaucracy -From The Desk Of Wise Guy Sammy: It's Better To Yield Right Of Way Than To Demand It -From The Desk Of Wise Guy Sammy: A Person Who Likes Cats Can't Be All Bad -From The Desk Of Wise Guy Sammy: Help Is The Sunny Side Of Control -From The Desk Of Wise Guy Sammy: Two Points Determine A Straight Line -From The Desk Of Wise Guy Sammy: Reading Improves The Mind And Lifts The Spirit -From The Desk Of Wise Guy Sammy: Better To Aim High And Miss Then To Aim Low And Hit -From The Desk Of Wise Guy Sammy: Meteors Often Strike The Same Place More Than Once -Tommy B. Saif Sez: Look Both Ways Before Boarding The Shuttle -Tommy B. Saif Sez: Hold On; Sudden Stops Sometimes Necessary -Tommy B. Saif Sez: Keep Fingers Away From Moving Panels -Tommy B. Saif Sez: No Left Turn, Except Shuttles -Tommy B. Saif Sez: Return Seats And Trays To Their Proper Upright Position -Tommy B. Saif Sez: Eating And Drinking In Docking Bays Is Prohibited -Tommy B. Saif Sez: Accept No Substitutes, And Don't Be Fooled By Imitations -Tommy B. Saif Sez: Do Not Remove This Tag Under Penalty Of Law -Tommy B. Saif Sez: Always Mix Thoroughly When So Instructed -Tommy B. Saif Sez: Try To Keep Six Month's Expenses In Reserve -Tommy B. Saif Sez: Change Not Given Without Purchase -Tommy B. Saif Sez: If You Break It, You Buy It -Tommy B. Saif Sez: Reservations Must Be Cancelled 48 Hours Prior To Event To Obtain Refund -Doughnuts: Is There Anything They Can't Do -If Tin Whistles Are Made Of Tin, What Do They Make Foghorns Out Of? -Broccoli discovered to be colonies of tiny aliens with murder on their minds +Дерево застряло в таяре; пожарные в недоумении. +Буквы заявляют, что они лучше цифр: "Так было всегда". +Ручки объявляют карандаши устаревшими: "Грифель мёртв". +Камень и бумага подают в суд на ножницы за дискриминацию. +Стейк в своей книге признаётся, что никогда не любил сидеть рядом с картошкой. +Клерк {{AFFECTED}} стал первым, кто смог произнести '@*$%!'. +Погода на {{AFFECTED}} признана "скучной"; планируется импорт метеоров и радиационных бурь. +Большинство офицеров службы безопасности {{AFFECTED}} предпочитают сливки сахару. +Конференция любителей палиндромов на {{AFFECTED}}; Отто восклицает: "Ого!". +Вопросительный знак почитается как Божество древними жителями {{AFFECTED}}. +Пролитое молоко заставило всё население {{AFFECTED}} плакать. +Самая большая в мире котлета из карпа выставлена на {{AFFECTED}}. +"Кис-кис" больше не является предпочтительным методом звать таяр. +Мужчина преодолел 7000 световых лет, чтобы вернуть потерянный платок: "Это был мой любимый". +Новая дорожка для боулинга, стреляющая мини-метеорами, стала очень популярной. +Скрелл женился на компьютере; на свадьбе присутствовали 100 модемов. +Шеф-повар сообщает об успешном использовании губной гармошки в качестве тёрки для сыра. +НаноТрейзен изобрела платок, который говорит "Будь здоров" после чихания. +Клона обвиняют в краже награды "Сотрудник месяца" другого клона. +Женщина ограбила станцию феном; экипаж в восторге от нового стиля. +Это место сдаётся в аренду. +Опрос: "Сыр Луиза" признан лучшим рестораном пиццы в Тау Кита. +"Меня подставили", шутит художник {{AFFECTED}}. +Таинственные громкие грохочущие звуки на {{AFFECTED}} оказались таинственными громкими грохотами. +Инопланетный посол потерялся на {{AFFECTED}} и отказывается спрашивать дорогу. +Гигантский комок шерсти обладает идеальной грамматикой, но слишком сильно раскатывает букву "р", говорят лингвисты. +Телефонные книги {{AFFECTED}} печатают неправильные номера; это привело к 15 новым свадьбам. +Таяр-грабитель замечен на {{AFFECTED}}; его приняли за далматинца. +Опрос: Газета Гибсона часто публикует абсурдные новости. +Эзотерическая многословность приводит к коммуникативной апатии, отмечают учёные {{AFFECTED}}. +Опрос: 3 из 5 скреллов ненавидят современное искусство. +Учёный-скрелл открыл гравитацию, упав с лестницы. +Мальчик спас таяру с дерева на {{AFFECTED}}; тысячи ликуют. +Груз яблок перевернулся; закусочная {{AFFECTED}} предлагает специальное меню из яблочного пюре. +Люди повсюду согласны: мурлыкающие таяры — счастливые таяры. +Продаётся гараж. +Здесь могла бы быть ваша реклама. +Из кабинета мудреца Сэмми: Одно слово в этой газете написано задом наперёд. +Из кабинета мудреца Сэмми: Вино и дружба становятся лучше с возрастом. +Из кабинета мудреца Сэмми: Если ты устроил беспорядок, ты его и убирай. +Из кабинета мудреца Сэмми: Проще получить прощение, чем разрешение. +Из кабинета мудреца Сэмми: Проверяй факты, прежде чем выставить себя дураком. +Из кабинета мудреца Сэмми: Лучше уступить дорогу, чем требовать её. +Из кабинета мудреца Сэмми: Человек, который любит кошек, не может быть плохим. +Из кабинета мудреца Сэмми: Помощь — это светлая сторона контроля. +Из кабинета мудреца Сэмми: Две точки определяют прямую линию. +Из кабинета мудреца Сэмми: Чтение улучшает разум и поднимает дух. +Из кабинета мудреца Сэмми: Лучше целиться высоко и промахнуться, чем целиться низко и попасть. +Из кабинета мудреца Сэмми: Метеоры часто ударяют в одно и то же место несколько раз. +Из кабинета мудреца Сэмми: Не пей из туалета. +Томми Б. Саиф говорит: Смотри в обе стороны перед посадкой на шаттл. +Томми Б. Саиф говорит: Держись; внезапные остановки иногда необходимы. +Томми Б. Саиф говорит: Держи пальцы подальше от движущихся панелей. +Томми Б. Саиф говорит: Верни сиденья и подносы в их правильное положение. +Томми Б. Саиф говорит: Еда и напитки в док-станциях запрещены. +Томми Б. Саиф говорит: Всегда тщательно перемешивай, если это указано. +Томми Б. Саиф говорит: Постарайся иметь запас на шесть месяцев. +Томми Б. Саиф говорит: Сдача не выдаётся без покупки. +Томми Б. Саиф говорит: Если ты сломал это, ты это купил. +Томми Б. Саиф говорит: Бронирование должно быть отменено за 48 часов до события для получения возврата. +Пончики: Есть ли что-то, что они не могут? +Брокколи оказалась колониями крошечных инопланетян с мыслями об убийстве. diff --git a/config/sleep/dreams.txt b/config/sleep/dreams.txt index 7b27e14baaa8..60fdadaf0cc6 100644 --- a/config/sleep/dreams.txt +++ b/config/sleep/dreams.txt @@ -82,7 +82,7 @@ ID карта барбер механик судья -представитель Нанотрейзен +представитель НаноТрейзен синий щит мышь член ERT diff --git a/html/browser/common.css b/html/browser/common.css index fe4c0bf7b1a9..d73985eb3961 100644 --- a/html/browser/common.css +++ b/html/browser/common.css @@ -14,7 +14,7 @@ hr height: 1px; } -a, a:link, a:visited, a:active, .linkOn, .linkOff +a, button, a:link, a:visited, a:active, .linkOn, .linkOff { color: #ffffff; text-decoration: none; @@ -41,6 +41,7 @@ a.nobg:hover color:#40628a; } + a:hover { color: #40628a; @@ -92,7 +93,6 @@ a.icon img, .linkOn.icon img width: 18px; height: 18px; } - ul { padding: 4px 0 0 10px; @@ -156,23 +156,22 @@ h4 } .uiTitleWrapper - { - position:fixed; - top:0px; - left:0px; - right:0px; - z-index: 10 - } - - .uiTitleButtons - { - position:fixed; - top:0px; - right:0px; - height:32px; - z-index:11; - } +{ + position:fixed; + top:0px; + left:0px; + right:0px; + z-index: 10 +} +.uiTitleButtons +{ + position:fixed; + top:0px; + right:0px; + height:32px; + z-index:11; +} .uiTitle.icon { @@ -213,6 +212,7 @@ h4 color: #272727; } + .notice { position: relative; @@ -351,12 +351,15 @@ div.notice width: 100%; clear: both; } + + .charPreview { -ms-interpolation-mode: nearest-neighbor; /* TODO: Remove with 516 */ image-rendering: pixelated; width: 64px; height:64px; + } .loadoutPreview @@ -375,6 +378,7 @@ div.notice animation: ellipsis steps(4,end) 900ms infinite; content: "\2026"; width: 0px; + } @keyframes ellipsis @@ -384,3 +388,123 @@ div.notice width: 1.25em; } } + +.switch { + position: relative; + display: inline-block; + width: 50px; + height: 26px; +} + +.switch input {display:none;} + +.slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #383838; + transition: .4s; +} + +.slider:before { + position: absolute; + content: ""; + height: 18px; + width: 18px; + left: 4px; + bottom: 4px; + background-color: #98B0C3; + transition: .4s; +} + +.slider.red:before { + background-color: #d6858b; +} + +.slider.locked:before { + content: url("padlock.png"); + background-color: #b4b4b4; +} + +input:checked + .slider { + background-color: #40628a; +} + +input:checked + .slider.red { + background-color: #a92621; +} + +input:checked + .slider.locked { + background-color: #707070; +} + +input:focus + .slider { + box-shadow: 0 0 1px #2196F3; +} + +input:focus + .slider.red { + box-shadow: 0 0 1px #f3212d; +} + +input:focus + .slider.locked { + box-shadow: 0 0 1px #979797; +} + +input:checked + .slider:before { + transform: translateX(24px); +} + +.switch span { + display: inline-block; + position: relative; + width: 60px; + margin-left: 60px; +} + +ul.sparse { + padding-bottom:20px; +} + +.sparse li { + margin-top: 2px; +} + +.slider.round { + border-radius: 34px; +} + +.slider.round:before { + border-radius: 50%; +} + +.severity { + margin:0px; + padding: 1px 8px 1px 8px; + border-radius: 25px; + border: 1px solid #161616; + background: #40628a; + color: #ffffff; +} + +.severity img { + display: inline-block; + vertical-align: middle; +} + +.code { + padding: 6px 8px; + border: 1px solid #161616; + background: #383838; + color: #FFFFFF; + font-size: 12px; + display: block; + margin: 4px 0; + font-family: 'Courier New', Courier, monospace; +} + +.user-select { + user-select: all; +} \ No newline at end of file diff --git a/html/changelogs/archive/2024-10.yml b/html/changelogs/archive/2024-10.yml index a8c4c63301be..c720655c06b9 100644 --- a/html/changelogs/archive/2024-10.yml +++ b/html/changelogs/archive/2024-10.yml @@ -91,3 +91,146 @@ '2024-10-09': kartowkar: - bugfix: eatable component multitool fix (#6001) +'2024-10-10': + Antoonij: + - qol: recharge spell million istypes removal (#5915) + LiquidPotroh: + - bugfix: permeability of adjusted mask (#6003) + Valtor: + - imageadd: tajaran pathes head sprite fix (#6008) + kartowkar: + - bugfix: Borer spell datum fix (#6002) +'2024-10-11': + Arceniu: + - qol: sst hardsuit speed (#6009) +'2024-10-13': + Antoonij: + - bugfix: Sintouched fixes (#6016) + - refactor: Animal temperature (#5930) + Daeberdir: + - add: NektoeN Abandoned Storage Map. (#5996) + - tweak: Engi areas type shuffling. Supermatter and sub-engine areas overload-protected + APCs. (#5995) + - tweak: ashstorm immunity for minebots. (#6006) + NightDawnFox: + - add: basic ridable element and components & fireman carry (#5705) + PiroMage: + - bugfix: 'Nova Station #7 Patch (#6014)' + TimChi: + - add: Disease - Babylonian Fever (#5997) + Valtor: + - bugfix: diona blood regen (#6011) + - bugfix: thick tape roll fix (#6013) + Vladisvell: + - bugfix: Fixed tos consent acception (#6012) + github-actions[bot]: + - server: Automatic NanoMap Update (#5946) + kartowkar: + - bugfix: fix some inhand sprites (#6004) + - bugfix: reinforced.wall deconstruction Fix (#6017) +'2024-10-14': + TimChi: + - bugfix: Babylon Fever runtime fix (#6020) + Vladisvell: + - tweak: sets up audio emotes cooldown (#6019) +'2024-10-15': + Anorak2020: + - add: more objectives for vampires and clings (#6024) + Den109G: + - refactor: Now wiki comes from config and not hardcoded. (#5983) + Etrnlmelancholy: + - add: Повязки на глаза с ХУДом. (#6010) + NightDawnFox: + - bugfix: holoparasites are no longer can be refreshed in colossus crystal (#6028) + - bugfix: no more multiple tipping (#6027) + - tweak: decreased speed of vehicles (#6022) + PlayerUnknown14: + - imageadd: SP-91-RC - new sprites (#6026) + TimChi: + - bugfix: Brains in mmi can cast spells (#6021) + Vladisvell: + - bugfix: fixes elite fauna (#6032) +'2024-10-16': + Anorak2020: + - bugfix: '[customat] some items has wrong keys (#6040)' + NightDawnFox: + - spellcheck: ревьеюру (#6037) + - bugfix: you can no longer be immortal with sindie uno card (#6038) + TimChi: + - bugfix: Keybind "Y" resulted in the use of an item in hand. (#6039) + Vladisvell: + - add: byond 1644 compat (#6041) +'2024-10-18': + Arc: + - add: suppressor for sp91 and wt550 (#5960) + PiroMage: + - bugfix: 'Nova Station #8 Patch (#6033)' + Vladisvell: + - add: New map voting mode "Notriples" - next map can't be selected if played twice + in a row (#5452) +'2024-10-19': + Valtor: + - bugfix: no prothesis heal from food and etc (#6055) +'2024-10-20': + PiroMage: + - bugfix: 'Nova Station #9 Patch (#6053)' + Sheya: + - add: fake blindfold recipe (#6047) + Valtor: + - qol: Skrell New Name Generator (#6052) + Vladisvell: + - add: Instrument censorship (#6054) + kartowkar: + - bugfix: nitrilegloves onmob sprite fix (#6056) +'2024-10-23': + NightDawnFox: + - bugfix: firemanned people are can no longer be teleported when buckled (#6058) + PlayerUnknown14: + - bugfix: bandanas cover hair (#6061) +'2024-10-26': + Anorak2020: + - bugfix: selling one item multiple times (#6073) + - add: Experimentor relics rework (#5683) + - add: health insurance (#5921) + BeebBeebBoob: + - bugfix: ATM on Multi-z maps (#6077) + LiquidPotroh: + - soundadd: New cult sonds (#6034) + - soundadd: New revolution sound (#6035) + Mahimka42: + - imageadd: Brass buckler and rustless sword have inhand sprites. (#6031) + - imageadd: New sterile mask sprite (#6051) + - tweak: 10mm HP slows down the target (#6063) + - tweak: M90 instead riot shotguns in ERT armory (#6062) + NightDawnFox: + - tweak: sniper rounds now cost 5 tk instead of 10 (#6068) + NoName: + - add: Spech bubble (#6043) + PiroMage: + - bugfix: 'Nova Station #10 Patch (#6079)' + Valtor: + - bugfix: pAI bugfixes + localization (#5874) + Vladisvell: + - bugfix: Hardmode grenades do not work on enemies with less than 80% HP (#6080) +'2024-10-27': + NoName: + - unknown: earrings (#6066) + PiroMage: + - bugfix: 'Nova Station #11 Patch (#6091)' + Vladisvell: + - bugfix: Fixed survival pod's computer being pushable by humanoids (#6088) + - bugfix: Fixed paper bin filling (#6086) + - bugfix: Fixed toner insertion into photocopier (#6084) + - bugfix: Fixed bluespace scanner spelling mistake (#6083) + - bugfix: Fixed drill's infinite range (#6092) +'2024-10-29': + Dimach: + - tweak: moders can speak in achat (#6099) + Etrnlmelancholy: + - tweak: no more age restrict to warden (#6096) + Valtor: + - tweak: QM has always been the head (#6097) + Vladisvell: + - bugfix: Now it's possible to roll a malfunctioning AI in Antag Paradise mode (#6093) + - bugfix: Fixes ash storm damaging in some lavaland ruins (#6082) + - bugfix: Fireproof stuff can now burn in lava (#6081) diff --git a/html/changelogs/archive/2024-11.yml b/html/changelogs/archive/2024-11.yml new file mode 100644 index 000000000000..f51cc549c9ef --- /dev/null +++ b/html/changelogs/archive/2024-11.yml @@ -0,0 +1,105 @@ +'2024-11-02': + Anorak2020: + - add: You can now set up preference for removing from round (#6069) + Vladisvell: + - bugfix: Fixed intercom disassembling (#6085) + - bugfix: Fixed windowed door rendering (#6087) +'2024-11-03': + Antoonij: + - bugfix: some runtime fixes (#6094) + - bugfix: ghosts can now examine humans (#6119) + Daeberdir: + - bugfix: October - Mapfixes. (#6078) + FlitchTime: + - tweak: new cinematics for gods (#6067) + LiquidPotroh: + - bugfix: ants & unstable mutagen react with full power even if extremely small + volume (#6103) + - tweak: Correct calculation of acids protection (#6102) + Vladisvell: + - bugfix: Cult fixes (#6090) + - bugfix: dna vault hotfix (#6122) +'2024-11-04': + Antoonij: + - add: ASHIE UPDATE (#5875) + Daeberdir: + - bugfix: Incorrect `mechanized` limb attaching. (#6125) + - bugfix: Light fixture attach_chain blocks. (#6124) + - bugfix: Fixed phazon noclip on teleport forbidden areas (#6121) + - bugfix: Correct input target for `mindscan`. (#6120) + NightDawnFox: + - add: a lot of roboquest tweaks. (#5961) + NoName: + - bugfix: Earings in loadout (#6129) + PiroMage: + - bugfix: 'Nova Station #12 Patch (#6115)' + - bugfix: Conveyor Belt and Disposal Outlet on Cyberiad & Celestation. (#6109) + PlayerUnknown14: + - add: GSBussy doll (#6104) + Sheya: + - add: CE toolbet now can hold RCD and one more item (#6048) + Valtor: + - add: species age restrictions (#6101) + Vladisvell: + - bugfix: added failsafe check for elite fauna and chasms (#6126) + - server: Updated testmerge workflow (#6127) +'2024-11-05': + Dictor: + - add: Entertainment monitor (#5900) + Explosi00N: + - server: Перевод лута с тендрилов Лаваленда (#6132) + LiquidPotroh: + - bugfix: Xenomorph fixes (#6110) + NightDawnFox: + - del: unathi rumble is gone (#6030) + - add: advanced laser & alien surgery kits (#6057) + Sheya: + - add: fishing rod is now craftable in R&D (#6045) + - add: Lockboxes on Taipan are no longer created in protholates and exosuit fabricators + (#6049) + Vladisvell: + - del: Перевод лута с тендрилов Лаваленда" (#6133) + github-actions[bot]: + - server: Automatic NanoMap Update (#6025) + littleboobs: + - qol: DNA effects translation (#6114) +'2024-11-06': + Antoonij: + - bugfix: ash walker rituals fix (#6138) + - bugfix: some rituals fix (#6140) + LiquidPotroh: + - bugfix: Xeno cant evolve to queen (#6136) + PlayerUnknown14: + - imageadd: Riot shield - new sprites (#6095) + - bugfix: RD doll now works properly (#6106) + Vladisvell: + - bugfix: Fixed headphones not unable to play songs (#6139) + - bugfix: Wooden wall creation fix (#6141) + - bugfix: Syndicate turrets are now dense (#6142) + userbaza: + - add: cloth footwraps now paintable, craftable and edible (#6042) +'2024-11-07': + Anorak2020: + - add: vampire sucking effects (#6029) + KefirTT: + - bugfix: singularity hammer no longer pulling ghosts (#6143) +'2024-11-09': + Vitalya: + - bugfix: Wryn hair color change (#6152) + Vladisvell: + - bugfix: Removes density on syndicate turret upon destruction (#6146) + - add: Titlescreen optimization for dreamseeker debug mode (#6148) + - bugfix: Setups Malfunctioning AI as a special role to prevent double antaging + (#6151) +'2024-11-11': + Den109G: + - bugfix: Now clock-structure can disguise (#6156) + Mahimka42: + - add: New robust security backpack (#6135) + - tweak: 30 bullets instead 20 in 10mm ammo box. (#6163) + PlayerUnknown14: + - add: warden got more access (#6157) + - add: Security tactical flashlight (#5948) + - balance: maintenance tunnels access for everyone (#6158) + Vitalya: + - imageadd: New sprites for some Wryn masks (#6144) diff --git a/html/changelogs/archive/2024-12.yml b/html/changelogs/archive/2024-12.yml new file mode 100644 index 000000000000..980125177242 --- /dev/null +++ b/html/changelogs/archive/2024-12.yml @@ -0,0 +1,154 @@ +'2024-12-02': + PlayerUnknown14: + - qol: robots translation (#6130) +'2024-12-05': + anon1mka: + - unknown: vending.dm (#6174) +'2024-12-06': + Daeberdir: + - add: New() -> Initialize() organs migration. (#6137) + PiroMage: + - bugfix: Nova disposal (#6230) + PlayerUnknown14: + - tweak: thunderdome cooldown (#6227) + Vladisvell: + - bugfix: removes solar control duping (#6231) + - bugfix: Camera console broken screen textures fix (#6233) + - bugfix: Resolves test errors for idlenpcpool (#6234) + pilygun: + - tweak: Decrease access tuner price to 15 tc (#6225) +'2024-12-09': + Vladisvell: + - add: Z level checking optimization (#6240) +'2024-12-10': + Etrnlmelancholy: + - imageadd: NVG resprites (#6219) +'2024-12-11': + Vladisvell: + - del: Camera console broken screen textures fix" (#6246) + - bugfix: Removes experimentor tech exploit (#6247) +'2024-12-13': + Explosi00N: + - qol: tendril loot translation (#6236) + dageavtobusnick: + - add: request console cart in pda (#5990) +'2024-12-15': + Antoonij: + - tweak: ritual cast time & unhardcode update_rank() (#6201) + FlitchTime: + - qol: kitchen and grinder machinery hotkeys (#6245) +'2024-12-16': + PlayerUnknown14: + - tweak: tribal armor buff (#6218) + Valtor: + - bugfix: photocopier fix (#6207) + Vladisvell: + - bugfix: fixes cargo exploit (#6257) + - add: Allows developers to force away mission via configuration (#6258) + WolfLox: + - bugfix: wildwest black wall and double-double doors (#6251) +'2024-12-18': + FlitchTime: + - add: extended burn & brute healing kits (#6253) + Vladisvell: + - bugfix: dna injector can no longer be refreshed + dageavtobusnick: + - bugfix: request conole in pda spam (#6259) +'2024-12-19': + pilygun: + - imageadd: Updated security autolathe sprite (#6226) +'2024-12-21': + NightDawnFox: + - imageadd: 5 new plasma envirosuits (#6220) + - imageadd: new beans sprite & new plasmaman plushies (#6223) + Valtor: + - bugfix: Syndie supply pad console withdraw (#6232) +'2024-12-22': + BeebBeebBoob: + - refactor: Transit Shuttles (#5247) + LiquidPotroh: + - tweak: aiming lying targets by changing intent (#6222) + NightDawnFox: + - add: you can now SPEAK with 10+ Oxyloss (#6036) + Vitalya: + - imageadd: Nucleations Resprite (#6235) + - imageadd: Nucleation hair fix (#6263) + Vladisvell: + - add: Experimental lighting perfomance fix (#6238) + - server: Experimental perfomance fix for messages (#6239) +'2024-12-23': + Rafnik02: + - tweak: Rework suicide drill (#6189) +'2024-12-24': + Antoonij: + - add: caller to requester (#6265) + NightDawnFox: + - bugfix: brigmed envirohelm sprite now named correctly (#6266) + PlayerUnknown14: + - add: security tactical mask (#6264) +'2024-12-25': + anon1mka: + - unknown: arcade.dm (#6184) + pilygun: + - add: Thunderdome Christmas Update (#6255) +'2024-12-26': + Explosi00N: + - qol: mining hardsuit translation (#6270) + Vladisvell: + - bugfix: Fixes camera consoles, real this time (#6272) +'2024-12-27': + Antoonij: + - bugfix: Runtime bugfixes bundle №2 (#6118) + BeebBeebBoob: + - add: Vending machine falling hazard (#6256) + FlitchTime: + - bugfix: cargo console and qm quest tablet (#6277) + - tweak: added descriptions for machinery hotkeys (#6260) + - qol: add check security verb for admins (#6261) + - tweak: change armor gloves, price webbing (#6276) + Mahimka42: + - tweak: Adds a refill canister for custom vendor (#6202) + Sheya: + - tweak: cyborg inventory (#5785) +'2024-12-28': + Antoonij: + - bugfix: correct gender suffix (#6281) +'2024-12-30': + Anorak2020: + - balance: borers punish host action buff(#6228) + BeebBeebBoob: + - add: Minor z-level debug log (#6287) + - add: AI & Borg Upload Panel TGUI (#6273) + Etrnlmelancholy: + - del: barber deletion (#6262) + FlitchTime: + - tweak: miner voucher moved from bridge to qm office (#6274) + - add: Detective zippo (#6284) + PiroMage: + - bugfix: Nova Disposal (#6286) + TimChi: + - bugfix: TTS whisper does not work correctly (#6267) + Vitalya: + - add: 'Cosmetic Wryn Update: Resprite and Character Setup Update (#6168)' + dageavtobusnick: + - bugfix: vampires and changelings now can't learn cqc by upgrade implant + translation + (#6268) + - bugfix: shuttle now wait 3 minutes after deny lockdown (#6288) +'2024-12-31': + Anorak2020: + - add: Fire heating/ash storm damage protection due to "fire" armor (#6064) + Antoonij: + - bugfix: correct borg damage procs (#6290) + - qol: Unified Blood Adjust (#6180) + Baldek0: + - del: fart emote deletion (#6060) + BeebBeebBoob: + - add: 516 TGUI chat fix (#6285) + - bugfix: 'fixed tgui chat: Cannot access rules (#6291)' + - bugfix: warning at sass/scss section for testmerge action (#6292) + Etrnlmelancholy: + - tweak: ma boy clown got some bipki (#6242) + Koko4yXa: + - bugfix: Cyborg can't look in bags (#6289) + Mahimka42: + - add: Advanced Bluespace Drugs Storage (#6166) diff --git a/html/changelogs/archive/2025-01.yml b/html/changelogs/archive/2025-01.yml new file mode 100644 index 000000000000..51dc846e215b --- /dev/null +++ b/html/changelogs/archive/2025-01.yml @@ -0,0 +1,336 @@ +'2025-01-01': + FlitchTime: + - bugfix: detective and contractor zippo (#6302) + Sheya: + - add: universal gripper (#6299) + - tweak: kopeyka gender and tts (#6298) + - tweak: slime brain in chest (#6297) + - add: RPD in toolbelt (#6295) + Vladisvell: + - server: CI beta byond versions bump to 516.1648 (#6293) + chomasuke: + - bugfix: fix transfer blood (#6300) +'2025-01-02': + dageavtobusnick: + - add: welder sword (#5976) +'2025-01-03': + FlitchTime: + - add: laser minigun (#6279) + KefirTT: + - add: Aphasia disability (#6181) +'2025-01-04': + Anorak2020: + - add: normally working invisibility (#6071) + Antoonij: + - refactor: reagent attacks & Unarmed attacks (#5926) + - qol: optimize trim, inheritance for animal_temp + components (#6209) + - add: separated thermo control & drask coma (#6059) + BeebBeebBoob: + - add: TGUI 4K support (#6301) + - bugfix: AI upload freeforms & hacked modules and safe-checks (#6308) + Daeberdir: + - bugfix: In-Closet emotes doubling. (#6117) + Explosi00N: + - qol: kinetic crusher translation (#6283) + FlitchTime: + - tweak: edit armor for gloves and boots from armory (#6254) + Koko4yXa: + - bugfix: Can't pick sec cyborg (#6313) + L343-CJ: + - add: Mecha medbeam module (#6098) + PiroMage: + - add: 2 new statue on Nova and Nova button bugfix + new stairs (#6294) + PlayerUnknown14: + - tweak: thunderdome cooldown (once more) (#6306) + Sheya: + - add: blueshield sunglasses (#6044) + Vladisvell: + - bugfix: now contents of cargo crates are destroyed upon arriving to centcomm (#6315) + dageavtobusnick: + - unknown: tgui loadout + tgui color picker (#6280) + - add: blob update (#6113) + - bugfix: ashed paintkit make some mechs invisible (#6312) + - tweak: VV fixes and tweaks (#6307) + - tweak: tgui coin press (#6309) + - unknown: supply pods launcher admin button (#6305) + github-actions[bot]: + - server: Automatic NanoMap Update (#6194) +'2025-01-05': + Antoonij: + - add: Pref viewer & bitflag helpers (#6282) + Arceniu: + - bugfix: Lasergun implant doesnt have icon in inventory (#6322) + BeebBeebBoob: + - bugfix: No acceleration between space and space loopholes (#6318) + - refactor: split items_lefthand items_righthand dmi (#6310) + - server: GitHub README update (#6321) + Den109G: + - del: Comment out gatling (#6324) + Etrnlmelancholy: + - tweak: nucleations banned from robust based jobs (#6319) + FlitchTime: + - qol: Maximize up all tech and up to 8 level (#6304) + Rafnik02: + - qol: Sound for pacman (#6149) + dageavtobusnick: + - tweak: malf not ai traitor anymore (#6316) + - bugfix: Fix some bugs and errors (#6323) + - bugfix: presets fix (#6325) + github-actions[bot]: + - server: Automatic NanoMap Update (#6317) +'2025-01-06': + Antoonij: + - add: Updated Devil gamemode (#5944) + Koko4yXa: + - tweak: Changed max light for borgs (#6314) + Valtor: + - add: grey rework (#6108) + littleboobs: + - qol: vampire mode translation (#6311) +'2025-01-08': + BeebBeebBoob: + - bugfix: Blind AI while carding regains sight back (#6333) + - bugfix: chameleon gen deactivates properly (#6335) + - tweak: Assigns jobs first, antags second (#6334) + - bugfix: buildmode properly finishes on quit(eg. area_edit fix) (#6336) + Koko4yXa: + - bugfix: fix borg light overlay (#6337) + Vitalya: + - imageadd: Christmas decoration Resprite (#6331) +'2025-01-10': + Andrew455h: + - bugfix: exosuit fabricator unpowered print (#6343) +'2025-01-11': + BeebBeebBoob: + - del: Assigns jobs first, antags second" (#6349) + Koko4yXa: + - bugfix: Standard guardian phrase length (#6338) + Sheya: + - add: GreyTide strip (#6296) + Vitalya: + - bugfix: Plasmamen Engineer uniform fix (#6348) + dageavtobusnick: + - bugfix: fix some bugs (blob, loadout and etc) (#6345) + - add: pulse gatling (#6330) + - refactor: replace some icon2base64 to DMicon (#6347) +'2025-01-12': + dageavtobusnick: + - qol: tgchat lag fix caused by chat spam. (#6351) +'2025-01-16': + BeebBeebBoob: + - refactor: is_hot get_heat refactor (#6332) + - bugfix: Now chasm kills mechas properly (#6354) + - bugfix: More negative atmos (#6362) + Dictor: + - add: Increase SMMI TС cost & Overdrive ability (#6346) + FlitchTime: + - bugfix: slow kits and operation desc fix (#6363) + PiroMage: + - add: Lasergun & Riotshotgun flashlights V2 (#6360) + TimChi: + - qol: TGUI input for paper (#6357) + Vesterlim13: + - admin: event map - coldcolony (#6356) + userbaza: + - tweak: additional disability job restrictions (#6359) +'2025-01-18': + Andrew455h: + - bugfix: syndie drone wrong path (#6377) + FlitchTime: + - bugfix: borg light damage fix (#6373) + Mahimka42: + - add: HUD optical visors for donators (#6355) + NuSanya: + - bugfix: customat deleting things from pipes (#6364) + PiroMage: + - tweak: Nova gas storage roof (#6375) + TimChi: + - bugfix: grab people with a sleeper from any distance (#6374) + Vesterlim13: + - bugfix: coldcolony map fix (#6376) + Vitalya: + - imageadd: Cosmic Carp Resprite (#6352) + dageavtobusnick: + - unknown: vv options rights fix (#6378) + - bugfix: blob overminds in nullspace (#6370) +'2025-01-19': + Antoonij: + - code_imp: Diona internals improve (#6383) + BeebBeebBoob: + - admin: Poll voting (#6361) + Mahimka42: + - imageadd: Inhand detective hats and detective hats fixes. (#6382) + NoName: + - balance: Rework DNA Increaserun (#6366) + PlayerUnknown14: + - qol: attack messages translation (#6327) + Ravgolin: + - tweak: Delta Northwest maintenance remap 3 + github-actions[bot]: + - server: Automatic NanoMap Update (#6384) +'2025-01-20': + Baldek0: + - tweak: New name for star system (#6386) + BeebBeebBoob: + - code_imp: Removes REF() in favor UID() (#6387) + - bugfix: Can't set direction at floor painter (#6389) + - bugfix: Unbuckling buckled guardians on recall (#6392) + - bugfix: cell charger dismantle & component upgrade (#6393) + - bugfix: cane sprites (#6394) + - bugfix: Return ability for wryn to pick hair color and underwear (#6396) + - bugfix: Runtiming no DB - random character load (#6395) + NuSanya: + - add: SCS-3 Cage, alert qol (#6350) + PlayerUnknown14: + - bugfix: attack message fix (#6391) +'2025-01-21': + Vesterlim13: + - admin: coldcolony update (#6397) + dageavtobusnick: + - admin: VV atoms transform editor (#6379) +'2025-01-22': + Antoonij: + - bugfix: correct prize in arcade & poll query (#6400) + Honker9999999: + - add: Durand can't be moved in Defence mode [Bounty] (#6367) + dageavtobusnick: + - admin: some admin buttons tweaks (#6398) + tsoivecen199015: + - server: Abotch remap (#5903) +'2025-01-23': + Antoonij: + - bugfix: static pref info to object (#6418) + BeebBeebBoob: + - bugfix: evidence bag works properly (& removed move_contents_to proc) (#6415) + - bugfix: chair into crate while buckled, makes crate teleporter (#6416) + - server: deploy fix (#6421) + - server: Deploy fix 2 + - server: Deploy fix 3 + FlitchTime: + - balance: guardian ignore stamina damage (#6417) + Honker9999999: + - add: ghostface equipment [bounty] (#6371) + - add: autodrobe pricing and quantity update (#6399) + - add: PlasmaMate vendor (#6406) + Koko4yXa: + - bugfix: cyborg heal amount (#6407) + PlayerUnknown14: + - tweak: vendor slogans fix (#6410) + - qol: examine messages translation (#6412) + - qol: some localization fixes (#6409) + dageavtobusnick: + - admin: Updated admin antag UI menu (#6329) + - admin: admin buttons sorting (#6408) + - bugfix: antag menu sorting fix (#6413) + - admin: new ingame chat for developers (#6402) + - admin: ERT manager panel update (#6385) + - admin: some admin tweaks part 2 (#6401) + - admin: ghostchat contol (#6405) + - admin: some admin tweaks part 3 (#6419) +'2025-01-24': + Andrew455h: + - bugfix: syndi lockermech unavailable (#6420) + Antoonij: + - code_imp: pref holder & improve pref viewer (#6422) + dageavtobusnick: + - bugfix: admin verbs bugfix (#6424) +'2025-01-25': + BeebBeebBoob: + - del: SSblackbox system Removal (#6388) + Vesterlim13: + - admin: coldcolony update2 (#6433) + dageavtobusnick: + - bugfix: admin communication console access fix (#6425) +'2025-01-26': + BeebBeebBoob: + - del: SSblackbox system Removal" (#6456) + Honker9999999: + - bugfix: ghostface and autodrobe (#6463) + PlayerUnknown14: + - spellcheck: item sizes (#6457) + TimChi: + - add: Ghosts can toggles their sight (#6426) + - bugfix: TGUI input for paper working incorrectly (#6437) + dageavtobusnick: + - admin: atom_say in vv (#6452) + - admin: no vv verb for moders (#6428) + - bugfix: Advanced ProcCall global procs fix (#6434) + - bugfix: fix text input extra encoding (#6436) +'2025-01-27': + BeebBeebBoob: + - admin: Player Panel & PP Panel TGUI (#6440) + - bugfix: PP для модеров, подправка окна и скрытие инфы (#6470) + - bugfix: подправление надочёта в панеле PP (#6471) + Honker9999999: + - bugfix: plasmamate kit (#6465) + PlayerUnknown14: + - bugfix: стало возможным мыть голову при выборе головы (#6466) + - qol: Перевод медицинского оборудования (#6172) + Sheya: + - add: Хамелеон шеи в хамелеон ките + dageavtobusnick: + - bugfix: anomalies bugfix (#6468) + - bugfix: Ящики в упаковке теперь правильно удаляются на карго шаттле (#6467) + - admin: подправление разделов, исправление недочётов + - qol: Шёпот теперь по умолчанию Shift+T + - admin: Админы теперь могут отменять события + - bugfix: Кнопки алёртов теперь вмещаются + - admin: Настройка форс событий + - admin: mass anime button fix (#6430) + - tweak: mob_suspension now affects mob spawners (#6429) + - bugfix: Потенциальное решение смертельности блоба (#6464) +'2025-01-28': + Antoonij: + - experiment: turf defines with block to 515 syntax (#6454) + - refactor: datumize bodyzones (#6469) + BeebBeebBoob: + - bugfix: Капсула генетиков теперь работает (#6472) + - admin: Обновление PP, время, фикс related by (#6473) + - add: Голомапы (#6476) + - del: datumize bodyzones" (#6480) + - bugfix: название у station map сдвигается в начале (#6482) + - bugfix: GeoIP работает в админ Options Panel (#6481) + - add: 'Добавление map: иконки в чейнджлог (#6484)' + Etrnlmelancholy: + - add: сатанинская одежда (#6474) + L343-CJ: + - add: Slimes can choose skin color (#6353) + Mahimka42: + - tweak: adjust instead of halt in security gas mask (#6446) + Navvok: + - bugfix: случайный взрыв руки от abandoned crate (#6477) + PiroMage: + - tweak: Nova Kitchen and Lavaland outpost zone (#6411) + PlayerUnknown14: + - qol: локализация интерфейса и ещё всякое (#6445) + Vesterlim13: + - admin: coldcolony fix (#6483) + dageavtobusnick: + - admin: admins now can spawn cargo crates (#6455) + - admin: sound emitters (#6451) + - admin: select equipment on ghosts (#6453) + - admin: Advanced Spawn button (#6438) + - admin: Оптимизация поиска и работы VV + несколько ВВ qol-ов (#6478) + - admin: Событие для тушения плазменых пожаров (#6475) +'2025-01-29': + PlayerUnknown14: + - qol: микроправки кода и локализации (#6488) +'2025-01-30': + Rafnik02: + - imageadd: органы, рюкзаки, папки в руки (#6490) + dageavtobusnick: + - bugfix: Категория у Advanced Spawn + возможность удаления излучателя звука (#6487) +'2025-01-31': + Antoonij: + - add: object posession component (#6461) + FlitchTime: + - bugfix: Задержка для дымогена и новый реагент взамен удалённого для ксеноборга + (#6495) + - unknown: Заменил название зоны внешнего коридора спутника на Дельтах (#6500) + dageavtobusnick: + - bugfix: player panel fixes (#6494) + - admin: Несколько PM qol-ов (#6497) + github-actions[bot]: + - server: Automatic NanoMap Update (#6486) + littleboobs: + - spellcheck: перевод датчиков костюма + фиксы локализации (#6485) diff --git a/html/create_object.html b/html/create_object.html index 11f8f71e93e1..b818d40c3cc8 100644 --- a/html/create_object.html +++ b/html/create_object.html @@ -1,51 +1,26 @@ - - - - Create Object - - - - -
    + - - Type
    - Offset: - - A - R
    - - Number: - Dir: - Name:
    - Where: - + Offset: + Absolute: + Relative: + Amount: + Dir: + Name: + Where: + + +


    - -
    - + +

    +
    + - - - diff --git a/html/dark_inputs.css b/html/dark_inputs.css new file mode 100644 index 000000000000..822f48d95fc6 --- /dev/null +++ b/html/dark_inputs.css @@ -0,0 +1,38 @@ +input, textarea, select { + background-color: #333; + color: #fff; + border: 1px solid #555; +} + +input:focus, textarea:focus, select:focus { + outline: none; + border-color: #888; + box-shadow: 0 0 5px rgba(255, 255, 255, 0.5); +} + +button, input[type="submit"] { + background-color: #444; + color: #fff; + border: none; + padding: 5px; + cursor: pointer; + border-radius: 4px; + transition: background-color 0.3s ease; + } + + + button:hover, input[type="submit"]:hover { + background-color: #555; + } + + + button:active, input[type="submit"]:active { + background-color: #666; + } + + + button:disabled, input[type="submit"]:disabled { + background-color: #333; + color: #777; + cursor: not-allowed; + } diff --git a/html/panels.css b/html/panels.css index ac44cf54877a..a469f5c40316 100644 --- a/html/panels.css +++ b/html/panels.css @@ -1,10 +1,7 @@ body {padding:0px;margin:0px;} -#top {position:fixed;top:5px;left:10%;width:80%;text-align:center;background-color:#fff;border:2px solid #ccc;} +#top {position:fixed;top:5px;left:10%;width:80%;text-align:center;border:2px solid #ccc;} #main {position:relative;top:50px;left:3%;width:96%;text-align:center;z-index:0;} -#searchable {table-layout:fixed;width:100%;text-align:center;"#f4f4f4";} -tr.norm {background-color:#f4f4f4;} -tr.title {background-color:#ccc;} -tr.alt {background-color:#e7e7e7;} +#searchable {table-layout:fixed;width:100%;text-align:center;} .small {font-size:80%;} a {text-decoration:none;color:#a0a;} a:hover {color:#d3d;} diff --git a/html/statbrowser.js b/html/statbrowser.js index a1b4b67edf93..74845906d317 100644 --- a/html/statbrowser.js +++ b/html/statbrowser.js @@ -997,7 +997,7 @@ Byond.subscribeTo('update_listedturf', function (TC) { Byond.subscribeTo('update_interviews', function (I) { interviewManager = I; if (current_tab == 'Tickets') { - draw_interviews(); + //draw_interviews(); //not exist } }); diff --git a/icons/_nanomaps/Celestation_nanomap_z2.png b/icons/_nanomaps/Celestation_nanomap_z2.png index 4c3d8033836f..a376a5e8638e 100644 Binary files a/icons/_nanomaps/Celestation_nanomap_z2.png and b/icons/_nanomaps/Celestation_nanomap_z2.png differ diff --git a/icons/_nanomaps/Celestation_nanomap_z3.png b/icons/_nanomaps/Celestation_nanomap_z3.png index d840d1680d41..fb18cec632c5 100644 Binary files a/icons/_nanomaps/Celestation_nanomap_z3.png and b/icons/_nanomaps/Celestation_nanomap_z3.png differ diff --git a/icons/_nanomaps/Cerestation_nanomap_z1.png b/icons/_nanomaps/Cerestation_nanomap_z1.png index b7292e29432c..ca5c89858595 100644 Binary files a/icons/_nanomaps/Cerestation_nanomap_z1.png and b/icons/_nanomaps/Cerestation_nanomap_z1.png differ diff --git a/icons/_nanomaps/Cyberiad_nanomap_z1.png b/icons/_nanomaps/Cyberiad_nanomap_z1.png index 2aade9d253a2..115b7768fd66 100644 Binary files a/icons/_nanomaps/Cyberiad_nanomap_z1.png and b/icons/_nanomaps/Cyberiad_nanomap_z1.png differ diff --git a/icons/_nanomaps/Delta_nanomap_z1.png b/icons/_nanomaps/Delta_nanomap_z1.png index 4fdb7243124e..9d81429a7090 100644 Binary files a/icons/_nanomaps/Delta_nanomap_z1.png and b/icons/_nanomaps/Delta_nanomap_z1.png differ diff --git a/icons/_nanomaps/Nova_nanomap_z1.png b/icons/_nanomaps/Nova_nanomap_z1.png index 6d23c7e41006..7f9331e3c649 100644 Binary files a/icons/_nanomaps/Nova_nanomap_z1.png and b/icons/_nanomaps/Nova_nanomap_z1.png differ diff --git a/icons/_nanomaps/Nova_nanomap_z2.png b/icons/_nanomaps/Nova_nanomap_z2.png index a6eaab95a5fb..19da0c871929 100644 Binary files a/icons/_nanomaps/Nova_nanomap_z2.png and b/icons/_nanomaps/Nova_nanomap_z2.png differ diff --git a/icons/blanks/32x32.dmi b/icons/blanks/32x32.dmi new file mode 100644 index 000000000000..6c4f2b33e0fe Binary files /dev/null and b/icons/blanks/32x32.dmi differ diff --git a/icons/blanks/96x96.dmi b/icons/blanks/96x96.dmi new file mode 100644 index 000000000000..d79e60c111ab Binary files /dev/null and b/icons/blanks/96x96.dmi differ diff --git a/icons/effects/ash_runes.dmi b/icons/effects/ash_runes.dmi new file mode 100644 index 000000000000..711db361d61b Binary files /dev/null and b/icons/effects/ash_runes.dmi differ diff --git a/icons/effects/ashwalker_rune.dmi b/icons/effects/ashwalker_rune.dmi new file mode 100644 index 000000000000..99c80693443f Binary files /dev/null and b/icons/effects/ashwalker_rune.dmi differ diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index e825e8555733..f622f6ddffe8 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/effects/light_overlays/light_480.dmi b/icons/effects/light_overlays/light_480.dmi new file mode 100644 index 000000000000..ee754dc3b4b0 Binary files /dev/null and b/icons/effects/light_overlays/light_480.dmi differ diff --git a/icons/effects/light_overlays/light_544.dmi b/icons/effects/light_overlays/light_544.dmi new file mode 100644 index 000000000000..c592d192536e Binary files /dev/null and b/icons/effects/light_overlays/light_544.dmi differ diff --git a/icons/effects/mouse_pointers/supplypod_down_target.dmi b/icons/effects/mouse_pointers/supplypod_down_target.dmi new file mode 100644 index 000000000000..53a3bee0a787 Binary files /dev/null and b/icons/effects/mouse_pointers/supplypod_down_target.dmi differ diff --git a/icons/effects/mouse_pointers/supplypod_pickturf.dmi b/icons/effects/mouse_pointers/supplypod_pickturf.dmi new file mode 100644 index 000000000000..3ca1131e1a85 Binary files /dev/null and b/icons/effects/mouse_pointers/supplypod_pickturf.dmi differ diff --git a/icons/effects/mouse_pointers/supplypod_pickturf_down.dmi b/icons/effects/mouse_pointers/supplypod_pickturf_down.dmi new file mode 100644 index 000000000000..113fe47540c3 Binary files /dev/null and b/icons/effects/mouse_pointers/supplypod_pickturf_down.dmi differ diff --git a/icons/effects/mouse_pointers/supplypod_target.dmi b/icons/effects/mouse_pointers/supplypod_target.dmi new file mode 100644 index 000000000000..94401d7a8ae9 Binary files /dev/null and b/icons/effects/mouse_pointers/supplypod_target.dmi differ diff --git a/icons/effects/particles/bonfire.dmi b/icons/effects/particles/bonfire.dmi new file mode 100644 index 000000000000..e8e2e36346da Binary files /dev/null and b/icons/effects/particles/bonfire.dmi differ diff --git a/icons/effects/particles/echo.dmi b/icons/effects/particles/echo.dmi new file mode 100644 index 000000000000..60a243a8a7be Binary files /dev/null and b/icons/effects/particles/echo.dmi differ diff --git a/icons/effects/particles/generic.dmi b/icons/effects/particles/generic.dmi new file mode 100644 index 000000000000..41776efdbfd5 Binary files /dev/null and b/icons/effects/particles/generic.dmi differ diff --git a/icons/effects/particles/goop.dmi b/icons/effects/particles/goop.dmi new file mode 100644 index 000000000000..673c1a7ad5b6 Binary files /dev/null and b/icons/effects/particles/goop.dmi differ diff --git a/icons/effects/particles/pollen.dmi b/icons/effects/particles/pollen.dmi new file mode 100644 index 000000000000..559c4d1846f6 Binary files /dev/null and b/icons/effects/particles/pollen.dmi differ diff --git a/icons/effects/particles/smoke.dmi b/icons/effects/particles/smoke.dmi new file mode 100644 index 000000000000..99123beeb59a Binary files /dev/null and b/icons/effects/particles/smoke.dmi differ diff --git a/icons/effects/particles/stink.dmi b/icons/effects/particles/stink.dmi new file mode 100644 index 000000000000..29b92acbe67c Binary files /dev/null and b/icons/effects/particles/stink.dmi differ diff --git a/icons/effects/particles/voidwalker.dmi b/icons/effects/particles/voidwalker.dmi new file mode 100644 index 000000000000..d7f94c987979 Binary files /dev/null and b/icons/effects/particles/voidwalker.dmi differ diff --git a/icons/effects/station_explosion.dmi b/icons/effects/station_explosion.dmi index d8ced1f544b4..109b17060e79 100644 Binary files a/icons/effects/station_explosion.dmi and b/icons/effects/station_explosion.dmi differ diff --git a/icons/effects/weather_effects.dmi b/icons/effects/weather_effects.dmi index 00083c464a24..bb5d3f69d866 100644 Binary files a/icons/effects/weather_effects.dmi and b/icons/effects/weather_effects.dmi differ diff --git a/icons/hud/blob.dmi b/icons/hud/blob.dmi new file mode 100644 index 000000000000..552f511004f4 Binary files /dev/null and b/icons/hud/blob.dmi differ diff --git a/icons/misc/480x480.dmi b/icons/misc/480x480.dmi index 9c974c1c242f..0883988331aa 100644 Binary files a/icons/misc/480x480.dmi and b/icons/misc/480x480.dmi differ diff --git a/icons/misc/64x64.dmi b/icons/misc/64x64.dmi new file mode 100644 index 000000000000..9d34be2fa51b Binary files /dev/null and b/icons/misc/64x64.dmi differ diff --git a/icons/misc/8x8.dmi b/icons/misc/8x8.dmi new file mode 100644 index 000000000000..8e98b1dbe56b Binary files /dev/null and b/icons/misc/8x8.dmi differ diff --git a/icons/misc/Testing/turf_analysis.dmi b/icons/misc/Testing/turf_analysis.dmi index d733d8a928ff..7fbfbe5dc2b5 100644 Binary files a/icons/misc/Testing/turf_analysis.dmi and b/icons/misc/Testing/turf_analysis.dmi differ diff --git a/icons/misc/buildmode.dmi b/icons/misc/buildmode.dmi index f0de428b6c55..cf62abf20aa7 100644 Binary files a/icons/misc/buildmode.dmi and b/icons/misc/buildmode.dmi differ diff --git a/icons/misc/supress_effect.dmi b/icons/misc/supress_effect.dmi new file mode 100644 index 000000000000..e86a1be90b82 Binary files /dev/null and b/icons/misc/supress_effect.dmi differ diff --git a/icons/misc/vampire_tgui.dmi b/icons/misc/vampire_tgui.dmi new file mode 100644 index 000000000000..0222b6d4cbe5 Binary files /dev/null and b/icons/misc/vampire_tgui.dmi differ diff --git a/icons/mob/actions/actions.dmi b/icons/mob/actions/actions.dmi index f2db17791306..0a77c58563a3 100644 Binary files a/icons/mob/actions/actions.dmi and b/icons/mob/actions/actions.dmi differ diff --git a/icons/mob/alienqueen.dmi b/icons/mob/alienqueen.dmi index b01af7e71b48..e108cdc0b909 100644 Binary files a/icons/mob/alienqueen.dmi and b/icons/mob/alienqueen.dmi differ diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index 5388d56410dc..14681fd4eb19 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ diff --git a/icons/mob/blob.dmi b/icons/mob/blob.dmi index 3a73ccf09943..6313a92db0fe 100644 Binary files a/icons/mob/blob.dmi and b/icons/mob/blob.dmi differ diff --git a/icons/mob/carp.dmi b/icons/mob/carp.dmi index cafb20614835..41423fc367f5 100644 Binary files a/icons/mob/carp.dmi and b/icons/mob/carp.dmi differ diff --git a/icons/mob/clothing/back.dmi b/icons/mob/clothing/back.dmi index 52db83d1d473..f74523349d0d 100644 Binary files a/icons/mob/clothing/back.dmi and b/icons/mob/clothing/back.dmi differ diff --git a/icons/mob/clothing/body_accessory.dmi b/icons/mob/clothing/body_accessory.dmi index e79c0a121431..fc3f57629efc 100644 Binary files a/icons/mob/clothing/body_accessory.dmi and b/icons/mob/clothing/body_accessory.dmi differ diff --git a/icons/mob/clothing/ears.dmi b/icons/mob/clothing/ears.dmi index 99c91c859578..9ca38ef1ffcb 100644 Binary files a/icons/mob/clothing/ears.dmi and b/icons/mob/clothing/ears.dmi differ diff --git a/icons/mob/clothing/eyes.dmi b/icons/mob/clothing/eyes.dmi index 5658362de98d..531338375c47 100644 Binary files a/icons/mob/clothing/eyes.dmi and b/icons/mob/clothing/eyes.dmi differ diff --git a/icons/mob/clothing/feet.dmi b/icons/mob/clothing/feet.dmi index 6ad38455ad3d..78809e8a74d9 100644 Binary files a/icons/mob/clothing/feet.dmi and b/icons/mob/clothing/feet.dmi differ diff --git a/icons/mob/clothing/hands.dmi b/icons/mob/clothing/hands.dmi index c0d5b532e50a..88e7c43ebbe3 100644 Binary files a/icons/mob/clothing/hands.dmi and b/icons/mob/clothing/hands.dmi differ diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index a4ce834cfae5..68262c37bb89 100644 Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ diff --git a/icons/mob/clothing/mask.dmi b/icons/mob/clothing/mask.dmi index 01610a5ad16c..ff2aa5c5e1ca 100644 Binary files a/icons/mob/clothing/mask.dmi and b/icons/mob/clothing/mask.dmi differ diff --git a/icons/mob/clothing/species/drask/eyes.dmi b/icons/mob/clothing/species/drask/eyes.dmi index 60a461bc9f1b..425f9fbd9f1f 100644 Binary files a/icons/mob/clothing/species/drask/eyes.dmi and b/icons/mob/clothing/species/drask/eyes.dmi differ diff --git a/icons/mob/clothing/species/drask/gloves.dmi b/icons/mob/clothing/species/drask/gloves.dmi index b8320dcc8b5b..e53ec1bb6062 100644 Binary files a/icons/mob/clothing/species/drask/gloves.dmi and b/icons/mob/clothing/species/drask/gloves.dmi differ diff --git a/icons/mob/clothing/species/drask/head.dmi b/icons/mob/clothing/species/drask/head.dmi index 03d83e3b9e9f..142ec609c1d0 100644 Binary files a/icons/mob/clothing/species/drask/head.dmi and b/icons/mob/clothing/species/drask/head.dmi differ diff --git a/icons/mob/clothing/species/drask/mask.dmi b/icons/mob/clothing/species/drask/mask.dmi index db26ee4b53f6..55c5c6dcae3a 100644 Binary files a/icons/mob/clothing/species/drask/mask.dmi and b/icons/mob/clothing/species/drask/mask.dmi differ diff --git a/icons/mob/clothing/species/drask/shoes.dmi b/icons/mob/clothing/species/drask/shoes.dmi index 287b8b3b9056..f64d63596927 100644 Binary files a/icons/mob/clothing/species/drask/shoes.dmi and b/icons/mob/clothing/species/drask/shoes.dmi differ diff --git a/icons/mob/clothing/species/drask/suit.dmi b/icons/mob/clothing/species/drask/suit.dmi index e66a70429da5..b6a59ae54a23 100644 Binary files a/icons/mob/clothing/species/drask/suit.dmi and b/icons/mob/clothing/species/drask/suit.dmi differ diff --git a/icons/mob/clothing/species/drask/uniform.dmi b/icons/mob/clothing/species/drask/uniform.dmi index 0587606747cd..f7c7592b0276 100644 Binary files a/icons/mob/clothing/species/drask/uniform.dmi and b/icons/mob/clothing/species/drask/uniform.dmi differ diff --git a/icons/mob/clothing/species/grey/back.dmi b/icons/mob/clothing/species/grey/back.dmi index 1ad5b9b9dcd0..d20e8ac2174a 100644 Binary files a/icons/mob/clothing/species/grey/back.dmi and b/icons/mob/clothing/species/grey/back.dmi differ diff --git a/icons/mob/clothing/species/grey/eyes.dmi b/icons/mob/clothing/species/grey/eyes.dmi index 06aff6f9fc6d..549317eba824 100644 Binary files a/icons/mob/clothing/species/grey/eyes.dmi and b/icons/mob/clothing/species/grey/eyes.dmi differ diff --git a/icons/mob/clothing/species/grey/head.dmi b/icons/mob/clothing/species/grey/head.dmi index affbc1fc99e8..ce0b04f4b56d 100644 Binary files a/icons/mob/clothing/species/grey/head.dmi and b/icons/mob/clothing/species/grey/head.dmi differ diff --git a/icons/mob/clothing/species/grey/mask.dmi b/icons/mob/clothing/species/grey/mask.dmi index 82c9d36ff3be..c936c102e456 100644 Binary files a/icons/mob/clothing/species/grey/mask.dmi and b/icons/mob/clothing/species/grey/mask.dmi differ diff --git a/icons/mob/clothing/species/grey/suit.dmi b/icons/mob/clothing/species/grey/suit.dmi index 2a8698e969eb..352961bddb4a 100644 Binary files a/icons/mob/clothing/species/grey/suit.dmi and b/icons/mob/clothing/species/grey/suit.dmi differ diff --git a/icons/mob/clothing/species/grey/uniform.dmi b/icons/mob/clothing/species/grey/uniform.dmi index 11d5f99cc0c0..82f1d4475793 100644 Binary files a/icons/mob/clothing/species/grey/uniform.dmi and b/icons/mob/clothing/species/grey/uniform.dmi differ diff --git a/icons/mob/clothing/species/kidan/head.dmi b/icons/mob/clothing/species/kidan/head.dmi index cef05fb25231..1fefa55cb520 100644 Binary files a/icons/mob/clothing/species/kidan/head.dmi and b/icons/mob/clothing/species/kidan/head.dmi differ diff --git a/icons/mob/clothing/species/kidan/mask.dmi b/icons/mob/clothing/species/kidan/mask.dmi index 84a667757388..7033701c2938 100644 Binary files a/icons/mob/clothing/species/kidan/mask.dmi and b/icons/mob/clothing/species/kidan/mask.dmi differ diff --git a/icons/mob/clothing/species/kidan/uniform.dmi b/icons/mob/clothing/species/kidan/uniform.dmi index 72b43ba157c6..097f2317a1f2 100644 Binary files a/icons/mob/clothing/species/kidan/uniform.dmi and b/icons/mob/clothing/species/kidan/uniform.dmi differ diff --git a/icons/mob/clothing/species/monkey/ears.dmi b/icons/mob/clothing/species/monkey/ears.dmi index e8e80063a39e..fe201b6c9782 100644 Binary files a/icons/mob/clothing/species/monkey/ears.dmi and b/icons/mob/clothing/species/monkey/ears.dmi differ diff --git a/icons/mob/clothing/species/monkey/eyes.dmi b/icons/mob/clothing/species/monkey/eyes.dmi index e93142f8d2d8..85995fc555a9 100644 Binary files a/icons/mob/clothing/species/monkey/eyes.dmi and b/icons/mob/clothing/species/monkey/eyes.dmi differ diff --git a/icons/mob/clothing/species/monkey/gloves.dmi b/icons/mob/clothing/species/monkey/gloves.dmi index 4d51121aed56..5b964fb7c423 100644 Binary files a/icons/mob/clothing/species/monkey/gloves.dmi and b/icons/mob/clothing/species/monkey/gloves.dmi differ diff --git a/icons/mob/clothing/species/monkey/head.dmi b/icons/mob/clothing/species/monkey/head.dmi index e8c793b66d4f..fd0522f10f1b 100644 Binary files a/icons/mob/clothing/species/monkey/head.dmi and b/icons/mob/clothing/species/monkey/head.dmi differ diff --git a/icons/mob/clothing/species/monkey/mask.dmi b/icons/mob/clothing/species/monkey/mask.dmi index c37c41b35a19..4714a8c902a0 100644 Binary files a/icons/mob/clothing/species/monkey/mask.dmi and b/icons/mob/clothing/species/monkey/mask.dmi differ diff --git a/icons/mob/clothing/species/monkey/shoes.dmi b/icons/mob/clothing/species/monkey/shoes.dmi index 5e9f38cfb99b..62117617f95a 100644 Binary files a/icons/mob/clothing/species/monkey/shoes.dmi and b/icons/mob/clothing/species/monkey/shoes.dmi differ diff --git a/icons/mob/clothing/species/monkey/suit.dmi b/icons/mob/clothing/species/monkey/suit.dmi index 5b2933235f8b..f09a68bc6771 100644 Binary files a/icons/mob/clothing/species/monkey/suit.dmi and b/icons/mob/clothing/species/monkey/suit.dmi differ diff --git a/icons/mob/clothing/species/monkey/uniform.dmi b/icons/mob/clothing/species/monkey/uniform.dmi index 8a5662bdb823..0fed6125d732 100644 Binary files a/icons/mob/clothing/species/monkey/uniform.dmi and b/icons/mob/clothing/species/monkey/uniform.dmi differ diff --git a/icons/mob/clothing/species/plasmaman/helmet.dmi b/icons/mob/clothing/species/plasmaman/helmet.dmi index fb1262d618e0..84c134a4867d 100644 Binary files a/icons/mob/clothing/species/plasmaman/helmet.dmi and b/icons/mob/clothing/species/plasmaman/helmet.dmi differ diff --git a/icons/mob/clothing/species/plasmaman/uniform.dmi b/icons/mob/clothing/species/plasmaman/uniform.dmi index 367238253c7a..68cde4d55411 100644 Binary files a/icons/mob/clothing/species/plasmaman/uniform.dmi and b/icons/mob/clothing/species/plasmaman/uniform.dmi differ diff --git a/icons/mob/clothing/species/tajaran/head.dmi b/icons/mob/clothing/species/tajaran/head.dmi index 66150cd620d3..bc04d83f6908 100644 Binary files a/icons/mob/clothing/species/tajaran/head.dmi and b/icons/mob/clothing/species/tajaran/head.dmi differ diff --git a/icons/mob/clothing/species/tajaran/mask.dmi b/icons/mob/clothing/species/tajaran/mask.dmi index 90b55d2fb793..f32d734bc8e7 100644 Binary files a/icons/mob/clothing/species/tajaran/mask.dmi and b/icons/mob/clothing/species/tajaran/mask.dmi differ diff --git a/icons/mob/clothing/species/unathi/head.dmi b/icons/mob/clothing/species/unathi/head.dmi index 7cf210a72c83..be1566bdeb0b 100644 Binary files a/icons/mob/clothing/species/unathi/head.dmi and b/icons/mob/clothing/species/unathi/head.dmi differ diff --git a/icons/mob/clothing/species/unathi/mask.dmi b/icons/mob/clothing/species/unathi/mask.dmi index 9802caa3ac15..6aaf08aef4b1 100644 Binary files a/icons/mob/clothing/species/unathi/mask.dmi and b/icons/mob/clothing/species/unathi/mask.dmi differ diff --git a/icons/mob/clothing/species/unathi/shoes.dmi b/icons/mob/clothing/species/unathi/shoes.dmi index a6fdd4c20f42..e9ee39ae6b5a 100644 Binary files a/icons/mob/clothing/species/unathi/shoes.dmi and b/icons/mob/clothing/species/unathi/shoes.dmi differ diff --git a/icons/mob/clothing/species/unathi/suit.dmi b/icons/mob/clothing/species/unathi/suit.dmi index 6b9efd400ed5..bd2e1b06f58a 100644 Binary files a/icons/mob/clothing/species/unathi/suit.dmi and b/icons/mob/clothing/species/unathi/suit.dmi differ diff --git a/icons/mob/clothing/species/unathi/uniform.dmi b/icons/mob/clothing/species/unathi/uniform.dmi index 517883bb7476..0c4a5c883bf3 100644 Binary files a/icons/mob/clothing/species/unathi/uniform.dmi and b/icons/mob/clothing/species/unathi/uniform.dmi differ diff --git a/icons/mob/clothing/species/vox/back.dmi b/icons/mob/clothing/species/vox/back.dmi index 8274c45cb9cb..8d1f48dd247d 100644 Binary files a/icons/mob/clothing/species/vox/back.dmi and b/icons/mob/clothing/species/vox/back.dmi differ diff --git a/icons/mob/clothing/species/vox/ears.dmi b/icons/mob/clothing/species/vox/ears.dmi index c09c4b33a2a8..b19672c81b23 100644 Binary files a/icons/mob/clothing/species/vox/ears.dmi and b/icons/mob/clothing/species/vox/ears.dmi differ diff --git a/icons/mob/clothing/species/vox/eyes.dmi b/icons/mob/clothing/species/vox/eyes.dmi index ef2956b1e80d..661833a3f643 100644 Binary files a/icons/mob/clothing/species/vox/eyes.dmi and b/icons/mob/clothing/species/vox/eyes.dmi differ diff --git a/icons/mob/clothing/species/vox/feet.dmi b/icons/mob/clothing/species/vox/feet.dmi index fcd0a1a30b9a..6cbf99da30e7 100644 Binary files a/icons/mob/clothing/species/vox/feet.dmi and b/icons/mob/clothing/species/vox/feet.dmi differ diff --git a/icons/mob/clothing/species/vox/gloves.dmi b/icons/mob/clothing/species/vox/gloves.dmi index 30f5c61de264..8d40a07b30dc 100644 Binary files a/icons/mob/clothing/species/vox/gloves.dmi and b/icons/mob/clothing/species/vox/gloves.dmi differ diff --git a/icons/mob/clothing/species/vox/head.dmi b/icons/mob/clothing/species/vox/head.dmi index 57bca9787f61..523e7e1bc7b6 100644 Binary files a/icons/mob/clothing/species/vox/head.dmi and b/icons/mob/clothing/species/vox/head.dmi differ diff --git a/icons/mob/clothing/species/vox/helmet.dmi b/icons/mob/clothing/species/vox/helmet.dmi index 566f35099e07..2fb432c44a97 100644 Binary files a/icons/mob/clothing/species/vox/helmet.dmi and b/icons/mob/clothing/species/vox/helmet.dmi differ diff --git a/icons/mob/clothing/species/vox/mask.dmi b/icons/mob/clothing/species/vox/mask.dmi index 173b80e41df1..121c73810b0d 100644 Binary files a/icons/mob/clothing/species/vox/mask.dmi and b/icons/mob/clothing/species/vox/mask.dmi differ diff --git a/icons/mob/clothing/species/vox/shoes.dmi b/icons/mob/clothing/species/vox/shoes.dmi index c5460f4b8f12..766d3a4c916d 100644 Binary files a/icons/mob/clothing/species/vox/shoes.dmi and b/icons/mob/clothing/species/vox/shoes.dmi differ diff --git a/icons/mob/clothing/species/vox/suit.dmi b/icons/mob/clothing/species/vox/suit.dmi index 262e3e48652d..fd66420f8538 100644 Binary files a/icons/mob/clothing/species/vox/suit.dmi and b/icons/mob/clothing/species/vox/suit.dmi differ diff --git a/icons/mob/clothing/species/vox/uniform.dmi b/icons/mob/clothing/species/vox/uniform.dmi index 80fa00c2d0b6..4061dd9ad4c8 100644 Binary files a/icons/mob/clothing/species/vox/uniform.dmi and b/icons/mob/clothing/species/vox/uniform.dmi differ diff --git a/icons/mob/clothing/species/vulpkanin/head.dmi b/icons/mob/clothing/species/vulpkanin/head.dmi index e8d8121cb244..335e93f9666e 100644 Binary files a/icons/mob/clothing/species/vulpkanin/head.dmi and b/icons/mob/clothing/species/vulpkanin/head.dmi differ diff --git a/icons/mob/clothing/species/vulpkanin/mask.dmi b/icons/mob/clothing/species/vulpkanin/mask.dmi index 802d3b337a58..f2fcc5fcd921 100644 Binary files a/icons/mob/clothing/species/vulpkanin/mask.dmi and b/icons/mob/clothing/species/vulpkanin/mask.dmi differ diff --git a/icons/mob/clothing/species/wryn/head.dmi b/icons/mob/clothing/species/wryn/head.dmi index 5e9f3ff68d74..1a11c86d12ff 100644 Binary files a/icons/mob/clothing/species/wryn/head.dmi and b/icons/mob/clothing/species/wryn/head.dmi differ diff --git a/icons/mob/clothing/species/wryn/mask.dmi b/icons/mob/clothing/species/wryn/mask.dmi index 5e72a8730da1..31537bfd118e 100644 Binary files a/icons/mob/clothing/species/wryn/mask.dmi and b/icons/mob/clothing/species/wryn/mask.dmi differ diff --git a/icons/mob/clothing/species/wryn/uniform.dmi b/icons/mob/clothing/species/wryn/uniform.dmi index f676a5dbee32..2434e25e4bae 100644 Binary files a/icons/mob/clothing/species/wryn/uniform.dmi and b/icons/mob/clothing/species/wryn/uniform.dmi differ diff --git a/icons/mob/clothing/suit.dmi b/icons/mob/clothing/suit.dmi index 0c68c5f5600e..c562667fb5e3 100644 Binary files a/icons/mob/clothing/suit.dmi and b/icons/mob/clothing/suit.dmi differ diff --git a/icons/mob/clothing/ties.dmi b/icons/mob/clothing/ties.dmi index 33b0175efdbf..9cd9e8f538aa 100644 Binary files a/icons/mob/clothing/ties.dmi and b/icons/mob/clothing/ties.dmi differ diff --git a/icons/mob/clothing/uniform.dmi b/icons/mob/clothing/uniform.dmi index 10209a3ca4f0..a678f35de644 100644 Binary files a/icons/mob/clothing/uniform.dmi and b/icons/mob/clothing/uniform.dmi differ diff --git a/icons/mob/critter.dmi b/icons/mob/critter.dmi index ddb2ebe58225..c7cb63c293a7 100644 Binary files a/icons/mob/critter.dmi and b/icons/mob/critter.dmi differ diff --git a/icons/mob/gondolas.dmi b/icons/mob/gondolas.dmi new file mode 100644 index 000000000000..c8540fbac0b4 Binary files /dev/null and b/icons/mob/gondolas.dmi differ diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index 876057298bf7..ba5464f9ddbe 100644 Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ diff --git a/icons/mob/human_races/r_nucleation.dmi b/icons/mob/human_races/r_nucleation.dmi index 8c38c42a20e5..97a09e1b8122 100644 Binary files a/icons/mob/human_races/r_nucleation.dmi and b/icons/mob/human_races/r_nucleation.dmi differ diff --git a/icons/mob/human_races/r_wryn.dmi b/icons/mob/human_races/r_wryn.dmi index 22cf29181083..7d1d4666f1d1 100644 Binary files a/icons/mob/human_races/r_wryn.dmi and b/icons/mob/human_races/r_wryn.dmi differ diff --git a/icons/mob/inhands/chaplain_lefthand.dmi b/icons/mob/inhands/chaplain_lefthand.dmi new file mode 100644 index 000000000000..448b4aac44b4 Binary files /dev/null and b/icons/mob/inhands/chaplain_lefthand.dmi differ diff --git a/icons/mob/inhands/chaplain_righthand.dmi b/icons/mob/inhands/chaplain_righthand.dmi new file mode 100644 index 000000000000..120ee0bdee8d Binary files /dev/null and b/icons/mob/inhands/chaplain_righthand.dmi differ diff --git a/icons/mob/inhands/clothing_lefthand.dmi b/icons/mob/inhands/clothing_lefthand.dmi index f9f9153edb01..943a9d0679e0 100644 Binary files a/icons/mob/inhands/clothing_lefthand.dmi and b/icons/mob/inhands/clothing_lefthand.dmi differ diff --git a/icons/mob/inhands/clothing_righthand.dmi b/icons/mob/inhands/clothing_righthand.dmi index 11b0fac7bfa8..057fb8ab22e2 100644 Binary files a/icons/mob/inhands/clothing_righthand.dmi and b/icons/mob/inhands/clothing_righthand.dmi differ diff --git a/icons/mob/inhands/fluff_lefthand.dmi b/icons/mob/inhands/fluff_lefthand.dmi index daed1b89256d..694c58776ce7 100644 Binary files a/icons/mob/inhands/fluff_lefthand.dmi and b/icons/mob/inhands/fluff_lefthand.dmi differ diff --git a/icons/mob/inhands/fluff_righthand.dmi b/icons/mob/inhands/fluff_righthand.dmi index 83666d38747e..2fdd42b04355 100644 Binary files a/icons/mob/inhands/fluff_righthand.dmi and b/icons/mob/inhands/fluff_righthand.dmi differ diff --git a/icons/mob/inhands/folder_lefthand.dmi b/icons/mob/inhands/folder_lefthand.dmi new file mode 100644 index 000000000000..39639d77a355 Binary files /dev/null and b/icons/mob/inhands/folder_lefthand.dmi differ diff --git a/icons/mob/inhands/folder_righthand.dmi b/icons/mob/inhands/folder_righthand.dmi new file mode 100644 index 000000000000..f8ee8f5756c7 Binary files /dev/null and b/icons/mob/inhands/folder_righthand.dmi differ diff --git a/icons/mob/inhands/foods_lefthand.dmi b/icons/mob/inhands/foods_lefthand.dmi index d5a0c01b1d1a..46107265e3d8 100644 Binary files a/icons/mob/inhands/foods_lefthand.dmi and b/icons/mob/inhands/foods_lefthand.dmi differ diff --git a/icons/mob/inhands/foods_righthand.dmi b/icons/mob/inhands/foods_righthand.dmi index fff5fbee21d5..e2a56894e564 100644 Binary files a/icons/mob/inhands/foods_righthand.dmi and b/icons/mob/inhands/foods_righthand.dmi differ diff --git a/icons/mob/inhands/guns_lefthand.dmi b/icons/mob/inhands/guns_lefthand.dmi index 47e1359325fc..a71c95accbb0 100644 Binary files a/icons/mob/inhands/guns_lefthand.dmi and b/icons/mob/inhands/guns_lefthand.dmi differ diff --git a/icons/mob/inhands/guns_righthand.dmi b/icons/mob/inhands/guns_righthand.dmi index 005f11926b38..2ed82f19daf8 100644 Binary files a/icons/mob/inhands/guns_righthand.dmi and b/icons/mob/inhands/guns_righthand.dmi differ diff --git a/icons/mob/inhands/id_lefthand.dmi b/icons/mob/inhands/id_lefthand.dmi new file mode 100644 index 000000000000..8d7f7871bd4a Binary files /dev/null and b/icons/mob/inhands/id_lefthand.dmi differ diff --git a/icons/mob/inhands/id_righthand.dmi b/icons/mob/inhands/id_righthand.dmi new file mode 100644 index 000000000000..9db0a696b494 Binary files /dev/null and b/icons/mob/inhands/id_righthand.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index 345df4689c3f..045e1f4648cf 100755 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index 5568c96a820f..6cddfdcfc2e0 100755 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/mob/inhands/lavaland/bait_lefthand.dmi b/icons/mob/inhands/lavaland/bait_lefthand.dmi new file mode 100644 index 000000000000..5bc04cab74fc Binary files /dev/null and b/icons/mob/inhands/lavaland/bait_lefthand.dmi differ diff --git a/icons/mob/inhands/lavaland/bait_righthand.dmi b/icons/mob/inhands/lavaland/bait_righthand.dmi new file mode 100644 index 000000000000..1d4c4034a66b Binary files /dev/null and b/icons/mob/inhands/lavaland/bait_righthand.dmi differ diff --git a/icons/mob/inhands/lavaland/fish_items_lefthand.dmi b/icons/mob/inhands/lavaland/fish_items_lefthand.dmi new file mode 100644 index 000000000000..8b97bc905338 Binary files /dev/null and b/icons/mob/inhands/lavaland/fish_items_lefthand.dmi differ diff --git a/icons/mob/inhands/lavaland/fish_items_righthand.dmi b/icons/mob/inhands/lavaland/fish_items_righthand.dmi new file mode 100644 index 000000000000..5f79f5dd1c4e Binary files /dev/null and b/icons/mob/inhands/lavaland/fish_items_righthand.dmi differ diff --git a/icons/mob/inhands/lavaland/fish_lefthand.dmi b/icons/mob/inhands/lavaland/fish_lefthand.dmi new file mode 100644 index 000000000000..8058db5f35dd Binary files /dev/null and b/icons/mob/inhands/lavaland/fish_lefthand.dmi differ diff --git a/icons/mob/inhands/lavaland/fish_righthand.dmi b/icons/mob/inhands/lavaland/fish_righthand.dmi new file mode 100644 index 000000000000..20af2a6e5f24 Binary files /dev/null and b/icons/mob/inhands/lavaland/fish_righthand.dmi differ diff --git a/icons/mob/inhands/lavaland/food_lefthand.dmi b/icons/mob/inhands/lavaland/food_lefthand.dmi new file mode 100644 index 000000000000..9c5cd046096e Binary files /dev/null and b/icons/mob/inhands/lavaland/food_lefthand.dmi differ diff --git a/icons/mob/inhands/lavaland/food_righthand.dmi b/icons/mob/inhands/lavaland/food_righthand.dmi new file mode 100644 index 000000000000..990cfd96014f Binary files /dev/null and b/icons/mob/inhands/lavaland/food_righthand.dmi differ diff --git a/icons/mob/inhands/lavaland/lava_items_lefthand.dmi b/icons/mob/inhands/lavaland/lava_items_lefthand.dmi new file mode 100644 index 000000000000..6f91d9545dc5 Binary files /dev/null and b/icons/mob/inhands/lavaland/lava_items_lefthand.dmi differ diff --git a/icons/mob/inhands/lavaland/lava_items_righthand.dmi b/icons/mob/inhands/lavaland/lava_items_righthand.dmi new file mode 100644 index 000000000000..ece866ecf521 Binary files /dev/null and b/icons/mob/inhands/lavaland/lava_items_righthand.dmi differ diff --git a/icons/mob/inhands/lavaland/misc_lefthand.dmi b/icons/mob/inhands/lavaland/misc_lefthand.dmi new file mode 100644 index 000000000000..7b168a69799d Binary files /dev/null and b/icons/mob/inhands/lavaland/misc_lefthand.dmi differ diff --git a/icons/mob/inhands/lavaland/misc_righthand.dmi b/icons/mob/inhands/lavaland/misc_righthand.dmi new file mode 100644 index 000000000000..2ecc7749d96e Binary files /dev/null and b/icons/mob/inhands/lavaland/misc_righthand.dmi differ diff --git a/icons/mob/inhands/melee_lefthand.dmi b/icons/mob/inhands/melee_lefthand.dmi new file mode 100644 index 000000000000..c74202072082 Binary files /dev/null and b/icons/mob/inhands/melee_lefthand.dmi differ diff --git a/icons/mob/inhands/melee_righthand.dmi b/icons/mob/inhands/melee_righthand.dmi new file mode 100644 index 000000000000..3ecf0a397bb1 Binary files /dev/null and b/icons/mob/inhands/melee_righthand.dmi differ diff --git a/icons/mob/inhands/mobs_lefthand.dmi b/icons/mob/inhands/mobs_lefthand.dmi index d3703b56297c..fccc39d233d7 100644 Binary files a/icons/mob/inhands/mobs_lefthand.dmi and b/icons/mob/inhands/mobs_lefthand.dmi differ diff --git a/icons/mob/inhands/mobs_righthand.dmi b/icons/mob/inhands/mobs_righthand.dmi index be4a567b689c..9020071edb16 100644 Binary files a/icons/mob/inhands/mobs_righthand.dmi and b/icons/mob/inhands/mobs_righthand.dmi differ diff --git a/icons/mob/inhands/organ_lefthand.dmi b/icons/mob/inhands/organ_lefthand.dmi new file mode 100644 index 000000000000..780df01f2278 Binary files /dev/null and b/icons/mob/inhands/organ_lefthand.dmi differ diff --git a/icons/mob/inhands/organ_righthand.dmi b/icons/mob/inhands/organ_righthand.dmi new file mode 100644 index 000000000000..86f43594d9bc Binary files /dev/null and b/icons/mob/inhands/organ_righthand.dmi differ diff --git a/icons/mob/inhands/pda_lefthand.dmi b/icons/mob/inhands/pda_lefthand.dmi new file mode 100644 index 000000000000..1ec26f224960 Binary files /dev/null and b/icons/mob/inhands/pda_lefthand.dmi differ diff --git a/icons/mob/inhands/pda_righthand.dmi b/icons/mob/inhands/pda_righthand.dmi new file mode 100644 index 000000000000..69f0a9ba2392 Binary files /dev/null and b/icons/mob/inhands/pda_righthand.dmi differ diff --git a/icons/mob/inhands/relics_production/inhandl.dmi b/icons/mob/inhands/relics_production/inhandl.dmi new file mode 100644 index 000000000000..9a95b0f2c2ed Binary files /dev/null and b/icons/mob/inhands/relics_production/inhandl.dmi differ diff --git a/icons/mob/inhands/relics_production/inhandr.dmi b/icons/mob/inhands/relics_production/inhandr.dmi new file mode 100644 index 000000000000..c50686fa2eef Binary files /dev/null and b/icons/mob/inhands/relics_production/inhandr.dmi differ diff --git a/icons/mob/inhands/sheet_lefthand.dmi b/icons/mob/inhands/sheet_lefthand.dmi new file mode 100644 index 000000000000..fb1e7df92c9c Binary files /dev/null and b/icons/mob/inhands/sheet_lefthand.dmi differ diff --git a/icons/mob/inhands/sheet_righthand.dmi b/icons/mob/inhands/sheet_righthand.dmi new file mode 100644 index 000000000000..16e01936de33 Binary files /dev/null and b/icons/mob/inhands/sheet_righthand.dmi differ diff --git a/icons/mob/inhands/staff_lefthand.dmi b/icons/mob/inhands/staff_lefthand.dmi new file mode 100644 index 000000000000..5f4cf88d0c31 Binary files /dev/null and b/icons/mob/inhands/staff_lefthand.dmi differ diff --git a/icons/mob/inhands/staff_righthand.dmi b/icons/mob/inhands/staff_righthand.dmi new file mode 100644 index 000000000000..378da59edad2 Binary files /dev/null and b/icons/mob/inhands/staff_righthand.dmi differ diff --git a/icons/mob/inhands/tools_lefthand.dmi b/icons/mob/inhands/tools_lefthand.dmi new file mode 100644 index 000000000000..d2c95848c266 Binary files /dev/null and b/icons/mob/inhands/tools_lefthand.dmi differ diff --git a/icons/mob/inhands/tools_righthand.dmi b/icons/mob/inhands/tools_righthand.dmi new file mode 100644 index 000000000000..011c9e94a9cf Binary files /dev/null and b/icons/mob/inhands/tools_righthand.dmi differ diff --git a/icons/mob/inhands/twohanded_lefthand.dmi b/icons/mob/inhands/twohanded_lefthand.dmi new file mode 100644 index 000000000000..4195ea022922 Binary files /dev/null and b/icons/mob/inhands/twohanded_lefthand.dmi differ diff --git a/icons/mob/inhands/twohanded_righthand.dmi b/icons/mob/inhands/twohanded_righthand.dmi new file mode 100644 index 000000000000..7a31dee8ffdd Binary files /dev/null and b/icons/mob/inhands/twohanded_righthand.dmi differ diff --git a/icons/mob/inhands/zippo_lefthand.dmi b/icons/mob/inhands/zippo_lefthand.dmi new file mode 100644 index 000000000000..15a3cb63d857 Binary files /dev/null and b/icons/mob/inhands/zippo_lefthand.dmi differ diff --git a/icons/mob/inhands/zippo_righthand.dmi b/icons/mob/inhands/zippo_righthand.dmi new file mode 100644 index 000000000000..8faea7d03eab Binary files /dev/null and b/icons/mob/inhands/zippo_righthand.dmi differ diff --git a/icons/mob/lavaland/lavaland_monsters.dmi b/icons/mob/lavaland/lavaland_monsters.dmi index 489e64b2242c..a2394b1f37be 100644 Binary files a/icons/mob/lavaland/lavaland_monsters.dmi and b/icons/mob/lavaland/lavaland_monsters.dmi differ diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi index ca91ed224ccd..182aa9d34105 100644 Binary files a/icons/mob/screen_alert.dmi and b/icons/mob/screen_alert.dmi differ diff --git a/icons/mob/sprite_accessories/human/human_hair.dmi b/icons/mob/sprite_accessories/human/human_hair.dmi index 176ea1ab05ed..682ec55eca83 100644 Binary files a/icons/mob/sprite_accessories/human/human_hair.dmi and b/icons/mob/sprite_accessories/human/human_hair.dmi differ diff --git a/icons/mob/sprite_accessories/nucleation/nucleation_face.dmi b/icons/mob/sprite_accessories/nucleation/nucleation_face.dmi index f2d9e01aecd8..62701db9ceab 100644 Binary files a/icons/mob/sprite_accessories/nucleation/nucleation_face.dmi and b/icons/mob/sprite_accessories/nucleation/nucleation_face.dmi differ diff --git a/icons/mob/sprite_accessories/unathi/unathi_body_markings.dmi b/icons/mob/sprite_accessories/unathi/unathi_body_markings.dmi index eaa51df36d18..1e39251e1a29 100644 Binary files a/icons/mob/sprite_accessories/unathi/unathi_body_markings.dmi and b/icons/mob/sprite_accessories/unathi/unathi_body_markings.dmi differ diff --git a/icons/mob/sprite_accessories/wryn/wryn_face.dmi b/icons/mob/sprite_accessories/wryn/wryn_face.dmi deleted file mode 100644 index f826b969c57d..000000000000 Binary files a/icons/mob/sprite_accessories/wryn/wryn_face.dmi and /dev/null differ diff --git a/icons/mob/sprite_accessories/wryn/wryn_facial_hair.dmi b/icons/mob/sprite_accessories/wryn/wryn_facial_hair.dmi new file mode 100644 index 000000000000..d1658362b7f6 Binary files /dev/null and b/icons/mob/sprite_accessories/wryn/wryn_facial_hair.dmi differ diff --git a/icons/mob/sprite_accessories/wryn/wryn_head_accessories.dmi b/icons/mob/sprite_accessories/wryn/wryn_head_accessories.dmi new file mode 100644 index 000000000000..b33cf2b4fec8 Binary files /dev/null and b/icons/mob/sprite_accessories/wryn/wryn_head_accessories.dmi differ diff --git a/icons/mob/talk.dmi b/icons/mob/talk.dmi index 35417b389d71..41e2553a558f 100644 Binary files a/icons/mob/talk.dmi and b/icons/mob/talk.dmi differ diff --git a/icons/obj/barsigns.dmi b/icons/obj/barsigns.dmi index 0d4803bb0a83..c9080f3e0601 100644 Binary files a/icons/obj/barsigns.dmi and b/icons/obj/barsigns.dmi differ diff --git a/icons/obj/chairs.dmi b/icons/obj/chairs.dmi index a5cabd6c54fc..2382791a9d9a 100644 Binary files a/icons/obj/chairs.dmi and b/icons/obj/chairs.dmi differ diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index ee7b3449452e..37faeb4a4368 100644 Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ diff --git a/icons/obj/closet.dmi b/icons/obj/closet.dmi index 36e765f371cf..dc362c14adca 100644 Binary files a/icons/obj/closet.dmi and b/icons/obj/closet.dmi differ diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi index 5bec06113139..888524205c06 100644 Binary files a/icons/obj/clothing/glasses.dmi and b/icons/obj/clothing/glasses.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index b2829a92ec04..cb087b7184a6 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 93a943f6ca5b..e006b43b5fd0 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi index c8c2e96f1084..40ca54a6759b 100644 Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index ea0c5eef85a2..0f91f5e41dd5 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/clothing/species/plasmaman/hats.dmi b/icons/obj/clothing/species/plasmaman/hats.dmi index daecb1d4de5c..ba0f84e2bb4a 100644 Binary files a/icons/obj/clothing/species/plasmaman/hats.dmi and b/icons/obj/clothing/species/plasmaman/hats.dmi differ diff --git a/icons/obj/clothing/species/plasmaman/uniform.dmi b/icons/obj/clothing/species/plasmaman/uniform.dmi index aa5e2230b06d..a855ad214b73 100644 Binary files a/icons/obj/clothing/species/plasmaman/uniform.dmi and b/icons/obj/clothing/species/plasmaman/uniform.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 79bf6231ceed..a2cbeb3933db 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/ties.dmi b/icons/obj/clothing/ties.dmi index 8e99eb9d4270..36108946fedd 100644 Binary files a/icons/obj/clothing/ties.dmi and b/icons/obj/clothing/ties.dmi differ diff --git a/icons/obj/clothing/ties_overlay.dmi b/icons/obj/clothing/ties_overlay.dmi index 914fdfff4d01..101285d6040e 100644 Binary files a/icons/obj/clothing/ties_overlay.dmi and b/icons/obj/clothing/ties_overlay.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index ba6ae22135e5..244d124977f2 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/crates.dmi b/icons/obj/crates.dmi index 20cffe4cca0b..1b0e2cab7d81 100644 Binary files a/icons/obj/crates.dmi and b/icons/obj/crates.dmi differ diff --git a/icons/obj/decals.dmi b/icons/obj/decals.dmi index a6072426b39d..bf00a4ec2a48 100644 Binary files a/icons/obj/decals.dmi and b/icons/obj/decals.dmi differ diff --git a/icons/obj/decorations.dmi b/icons/obj/decorations.dmi index 4a38c63a5fd4..aae1281dfbea 100644 Binary files a/icons/obj/decorations.dmi and b/icons/obj/decorations.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index de6221138cd5..651d293e912c 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/economy.dmi b/icons/obj/economy.dmi index ea1bab2622f1..34a9422cb68d 100644 Binary files a/icons/obj/economy.dmi and b/icons/obj/economy.dmi differ diff --git a/icons/obj/engines_and_power/power.dmi b/icons/obj/engines_and_power/power.dmi index 8e33d75fd7fc..195901db3fee 100644 Binary files a/icons/obj/engines_and_power/power.dmi and b/icons/obj/engines_and_power/power.dmi differ diff --git a/icons/obj/fish_items.dmi b/icons/obj/fish_items.dmi index 302e144ba24d..a6e366ccb1b2 100644 Binary files a/icons/obj/fish_items.dmi and b/icons/obj/fish_items.dmi differ diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index d78818bfa5fc..68813b20b64f 100644 Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ diff --git a/icons/obj/hydroponics/equipment.dmi b/icons/obj/hydroponics/equipment.dmi index 134e92be60c3..a69ff80dc10b 100644 Binary files a/icons/obj/hydroponics/equipment.dmi and b/icons/obj/hydroponics/equipment.dmi differ diff --git a/icons/obj/hydroponics/growing.dmi b/icons/obj/hydroponics/growing.dmi index bcaad08e1d71..d9a3c98d77cf 100644 Binary files a/icons/obj/hydroponics/growing.dmi and b/icons/obj/hydroponics/growing.dmi differ diff --git a/icons/obj/hydroponics/seeds.dmi b/icons/obj/hydroponics/seeds.dmi index 4265aa70d3d8..d857ca20d257 100644 Binary files a/icons/obj/hydroponics/seeds.dmi and b/icons/obj/hydroponics/seeds.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 886b6f3fd373..ddddddaa42cd 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/janitor.dmi b/icons/obj/janitor.dmi index f97f776b592d..b9cee7e6acfe 100644 Binary files a/icons/obj/janitor.dmi and b/icons/obj/janitor.dmi differ diff --git a/icons/obj/lavaland/Ashie_Food.dmi b/icons/obj/lavaland/Ashie_Food.dmi new file mode 100644 index 000000000000..02e4831c6a27 Binary files /dev/null and b/icons/obj/lavaland/Ashie_Food.dmi differ diff --git a/icons/obj/lavaland/artefacts.dmi b/icons/obj/lavaland/artefacts.dmi index 178610b7424d..4fc1f5cba29c 100644 Binary files a/icons/obj/lavaland/artefacts.dmi and b/icons/obj/lavaland/artefacts.dmi differ diff --git a/icons/obj/lavaland/ash_flora.dmi b/icons/obj/lavaland/ash_flora.dmi index 61c6155ca259..55f01878d2d0 100644 Binary files a/icons/obj/lavaland/ash_flora.dmi and b/icons/obj/lavaland/ash_flora.dmi differ diff --git a/icons/obj/lavaland/grace_of_lazis.dmi b/icons/obj/lavaland/grace_of_lazis.dmi new file mode 100644 index 000000000000..566d99e7c166 Binary files /dev/null and b/icons/obj/lavaland/grace_of_lazis.dmi differ diff --git a/icons/obj/lavaland/lava_fishing.dmi b/icons/obj/lavaland/lava_fishing.dmi new file mode 100644 index 000000000000..352985b10f64 Binary files /dev/null and b/icons/obj/lavaland/lava_fishing.dmi differ diff --git a/icons/obj/library.dmi b/icons/obj/library.dmi index 01c4208335e7..5c909189fc28 100644 Binary files a/icons/obj/library.dmi and b/icons/obj/library.dmi differ diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi index 8b853ba2bc83..41e976d901d7 100644 Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ diff --git a/icons/obj/machineprototype.dmi b/icons/obj/machineprototype.dmi index f5312bdba60f..22dd23fcf537 100644 Binary files a/icons/obj/machineprototype.dmi and b/icons/obj/machineprototype.dmi differ diff --git a/icons/obj/machines/sec_autolathe.dmi b/icons/obj/machines/sec_autolathe.dmi index 9f3b7cc85225..aafc234fbbe3 100644 Binary files a/icons/obj/machines/sec_autolathe.dmi and b/icons/obj/machines/sec_autolathe.dmi differ diff --git a/icons/obj/machines/vending.dmi b/icons/obj/machines/vending.dmi index cbbdc90bd91e..c18cf572ecee 100644 Binary files a/icons/obj/machines/vending.dmi and b/icons/obj/machines/vending.dmi differ diff --git a/icons/obj/mecha/lockermech.dmi b/icons/obj/mecha/lockermech.dmi index ea99827ee417..a2ad9c80a1b0 100644 Binary files a/icons/obj/mecha/lockermech.dmi and b/icons/obj/mecha/lockermech.dmi differ diff --git a/icons/obj/mecha/mecha.dmi b/icons/obj/mecha/mecha.dmi index 21e70a9373bb..d3315d18e7a0 100644 Binary files a/icons/obj/mecha/mecha.dmi and b/icons/obj/mecha/mecha.dmi differ diff --git a/icons/obj/mecha/mecha_cage.dmi b/icons/obj/mecha/mecha_cage.dmi new file mode 100644 index 000000000000..f121f03806a3 Binary files /dev/null and b/icons/obj/mecha/mecha_cage.dmi differ diff --git a/icons/obj/mecha/mecha_equipment.dmi b/icons/obj/mecha/mecha_equipment.dmi index d31ccb93fa13..bcb3365716bd 100644 Binary files a/icons/obj/mecha/mecha_equipment.dmi and b/icons/obj/mecha/mecha_equipment.dmi differ diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index af18ea9c48bf..ca84ace69df8 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ diff --git a/icons/obj/pda.dmi b/icons/obj/pda.dmi index 3d44421a2cd5..477e975459ff 100644 Binary files a/icons/obj/pda.dmi and b/icons/obj/pda.dmi differ diff --git a/icons/obj/species_organs/wryn.dmi b/icons/obj/species_organs/wryn.dmi new file mode 100644 index 000000000000..38d775ca2bdf Binary files /dev/null and b/icons/obj/species_organs/wryn.dmi differ diff --git a/icons/obj/stationmap.dmi b/icons/obj/stationmap.dmi new file mode 100644 index 000000000000..49a4c3b3c060 Binary files /dev/null and b/icons/obj/stationmap.dmi differ diff --git a/icons/obj/statue.dmi b/icons/obj/statue.dmi index c55db97561fd..d59456ef1877 100644 Binary files a/icons/obj/statue.dmi and b/icons/obj/statue.dmi differ diff --git a/icons/obj/statuelarge.dmi b/icons/obj/statuelarge.dmi index 413e44818aaa..afcc2afb5d2d 100644 Binary files a/icons/obj/statuelarge.dmi and b/icons/obj/statuelarge.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index 3d4dea6aac08..e5aad1a4367e 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/icons/obj/supplypods.dmi b/icons/obj/supplypods.dmi new file mode 100644 index 000000000000..156d3cea2454 Binary files /dev/null and b/icons/obj/supplypods.dmi differ diff --git a/icons/obj/supplypods_32x32.dmi b/icons/obj/supplypods_32x32.dmi new file mode 100644 index 000000000000..855132f6494d Binary files /dev/null and b/icons/obj/supplypods_32x32.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 91d3fe17d43f..40337084c29f 100644 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/icons/obj/telescience.dmi b/icons/obj/telescience.dmi index 81471202dc24..4f67f950fcd7 100644 Binary files a/icons/obj/telescience.dmi and b/icons/obj/telescience.dmi differ diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi index 8bccad265daf..d3006a97b861 100644 Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ diff --git a/icons/obj/vending_restock.dmi b/icons/obj/vending_restock.dmi index e38aab4b8cfa..b0aea5cd8164 100644 Binary files a/icons/obj/vending_restock.dmi and b/icons/obj/vending_restock.dmi differ diff --git a/icons/obj/voice_translator.dmi b/icons/obj/voice_translator.dmi new file mode 100644 index 000000000000..312563b8efa5 Binary files /dev/null and b/icons/obj/voice_translator.dmi differ diff --git a/icons/obj/weapons/ammo.dmi b/icons/obj/weapons/ammo.dmi index 0e5c1545a306..fd61497ff0f7 100644 Binary files a/icons/obj/weapons/ammo.dmi and b/icons/obj/weapons/ammo.dmi differ diff --git a/icons/obj/weapons/energy.dmi b/icons/obj/weapons/energy.dmi index 459a68a74cc0..75f28a27fb6b 100644 Binary files a/icons/obj/weapons/energy.dmi and b/icons/obj/weapons/energy.dmi differ diff --git a/icons/obj/weapons/projectile.dmi b/icons/obj/weapons/projectile.dmi index 7f8edadeafdb..94307d23bcdd 100644 Binary files a/icons/obj/weapons/projectile.dmi and b/icons/obj/weapons/projectile.dmi differ diff --git a/icons/obj/weapons/projectiles.dmi b/icons/obj/weapons/projectiles.dmi index f87070e2238d..52e2b8210a53 100644 Binary files a/icons/obj/weapons/projectiles.dmi and b/icons/obj/weapons/projectiles.dmi differ diff --git a/icons/obj/weapons/techrelic.dmi b/icons/obj/weapons/techrelic.dmi new file mode 100644 index 000000000000..06cf9fc1f3eb Binary files /dev/null and b/icons/obj/weapons/techrelic.dmi differ diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi index 1d56391f9d36..3bd88590db85 100755 Binary files a/icons/turf/areas.dmi and b/icons/turf/areas.dmi differ diff --git a/icons/turf/decals.dmi b/icons/turf/decals.dmi index 6b723d68cdf5..da959e6989ca 100644 Binary files a/icons/turf/decals.dmi and b/icons/turf/decals.dmi differ diff --git a/icons/turf/walls.dmi b/icons/turf/walls.dmi index 74e8409ad6a1..1bb738a8a087 100644 Binary files a/icons/turf/walls.dmi and b/icons/turf/walls.dmi differ diff --git a/icons/turf/walls/cult_wall.dmi b/icons/turf/walls/cult_wall.dmi index 5a6eb8618a4a..3022f7051532 100644 Binary files a/icons/turf/walls/cult_wall.dmi and b/icons/turf/walls/cult_wall.dmi differ diff --git a/icons/ui_icons/padlock.png b/icons/ui_icons/padlock.png new file mode 100644 index 000000000000..719a12e9c982 Binary files /dev/null and b/icons/ui_icons/padlock.png differ diff --git a/interface/interface.dm b/interface/interface.dm index 4a999253e589..3a3fbb5fb78f 100644 --- a/interface/interface.dm +++ b/interface/interface.dm @@ -1,76 +1,76 @@ //Please use mob or src (not usr) in these procs. This way they can be called in the same fashion as procs. /client/verb/wiki() set name = "wiki" - set desc = "Type what you want to know about. This will open the wiki in your web browser." + set desc = "Напишите, о чём вы хотите узнать. Это откроет соответствующую страницу Вики в вашем веб-браузере." set hidden = 1 if(CONFIG_GET(string/wikiurl)) - var/query = tgui_input_text(src, "Enter Search:", "Wiki Search", "Homepage") - if(query == "Homepage") + var/query = tgui_input_text(src, "Что вы хотите найти?", "Поиск на Вики", "Главная страница") + if(query == "Главная страница") src << link(CONFIG_GET(string/wikiurl)) else if(query) var/output = CONFIG_GET(string/wikiurl) + "/index.php?title=Special%3ASearch&profile=default&search=" + query src << link(output) else - to_chat(src, "The wiki URL is not set in the server configuration.") + to_chat(src, span_danger("В конфиге отсутствует URL-адрес Вики.")) return /client/verb/forum() set name = "forum" - set desc = "Visit the forum." + set desc = "Посетить форум." set hidden = 1 if(CONFIG_GET(string/forumurl)) - if(tgui_alert(src, "Open the forum in your browser?", "Forum", list("Yes", "No")) != "Yes") + if(tgui_alert(src, "Открыть форум в вашем веб-браузере?", "Форум", list("Да", "Нет")) != "Да") return if(CONFIG_GET(string/forum_link_url) && prefs && !prefs.fuid) link_forum_account() src << link(CONFIG_GET(string/forumurl)) else - to_chat(src, "The forum URL is not set in the server configuration.") + to_chat(src, span_danger("В конфиге отсутствует URL-адрес форума.")) /client/verb/rules() - set name = "Rules" - set desc = "View the server rules." + set name = "Правила" + set desc = "Посмотреть правила сервера." set hidden = 1 if(CONFIG_GET(string/rulesurl)) - if(tgui_alert(src, "This will open the rules in your browser. Are you sure?", "Rules", list("Yes", "No")) != "Yes") + if(tgui_alert(src, "В вашем веб-браузере откроется страница с правилами сервера. Продолжить?", "Правила", list("Да", "Нет")) != "Да") return src << link(CONFIG_GET(string/rulesurl)) else - to_chat(src, "The rules URL is not set in the server configuration.") + to_chat(src, span_danger("В конфиге отсутствует URL-адрес страницы с правилами.")) /client/verb/github() set name = "GitHub" - set desc = "Visit the GitHub page." + set desc = "Посмотреть GitHub репозиторий." set hidden = 1 if(CONFIG_GET(string/githuburl)) - if(tgui_alert(src, "This will open our GitHub repository in your browser. Are you sure?", "GitHub", list("Yes", "No")) != "Yes") + if(tgui_alert(src, "В вашем веб-браузере откроется GitHub репозиторий сервера. Продолжить?", "GitHub", list("Да", "Нет")) != "Да") return src << link(CONFIG_GET(string/githuburl)) else - to_chat(src, "The GitHub URL is not set in the server configuration.") + to_chat(src, span_danger("В конфиге отсутствует URL-адрес репозитория сервера.")) /client/verb/discord() set name = "Discord" - set desc = "Join our Discord server." + set desc = "Присоединиться к Discord-серверу проекта." set hidden = 1 var/durl = CONFIG_GET(string/discordurl) if(CONFIG_GET(string/forum_link_url) && prefs && prefs.fuid && CONFIG_GET(string/discordforumurl)) durl = CONFIG_GET(string/discordforumurl) if(!durl) - to_chat(src, "The Discord URL is not set in the server configuration.") + to_chat(src, span_danger("В конфиге отсутствует URL-адрес Discord-сервера проекта.")) return - if(tgui_alert(src, "This will invite you to our Discord server. Are you sure?", "Discord", list("Yes", "No")) != "Yes") + if(tgui_alert(src, "В вашем веб-браузере откроется страница с приглашением на Discord-сервер проекта. Продолжить?", "Discord", list("Да", "Нет")) != "Да") return src << link(durl) /client/verb/donate() - set name = "Donate" - set desc = "Donate to help with hosting costs." + set name = "Пожертвовать" + set desc = "Пожертвуйте нам, чтобы помочь нам с хостом сервера." set hidden = 1 if(CONFIG_GET(string/donationsurl)) - if(tgui_alert(src, "This will open the donation page in your browser. Are you sure?", "Donate", list("Yes", "No")) != "Yes") + if(tgui_alert(src, "В вашем веб-браузере откроется страница с пожертвованиями проекту. Продолжить?", "Пожертвование", list("Да", "Нет")) != "Да") return src << link(CONFIG_GET(string/donationsurl)) else - to_chat(src, "The rules URL is not set in the server configuration.") + to_chat(src, span_danger("В вашем веб-браузере откроется страница для пожертвований на хост сервера. Продолжить?")) diff --git a/interface/skin.dmf b/interface/skin.dmf index 7c6631bc3bf7..4b704d23be14 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -2,146 +2,146 @@ macro "default" menu "menu" elem - name = "&File" + name = "&Файл" elem - name = "&Quick screenshot" + name = "&Быстрый скриншот" command = ".screenshot auto" - category = "&File" + category = "&Файл" elem - name = "&Save screenshot as..." + name = "&Сохранить скриншот как..." command = ".screenshot" - category = "&File" + category = "&Файл" elem "reconnectbutton" - name = "&Reconnect" + name = "&Переподключиться" command = ".reconnect" - category = "&File" + category = "&Файл" elem "debugmcbutton" - name = "&MC Debug" + name = "&MC Отладка" command = "SS-Info-Breakdown" - category = "&File" + category = "&Файл" is-disabled = true elem - name = "&Quit" + name = "&Выйти" command = ".quit" - category = "&File" + category = "&Файл" elem - name = "&Icons" + name = "&Экран" elem - name = "&Size" - category = "&Icons" + name = "&Размер" + category = "&Экран" saved-params = "is-checked" elem "stretch" - name = "&Stretch to fit" + name = "&Авто-подбор размера" command = ".winset \"mapwindow.map.icon-size=0\"" - category = "&Size" + category = "&Размер" is-checked = true can-check = true - group = "size" + group = "размер" elem "icon128" name = "&128x128 (4x)" command = ".winset \"mapwindow.map.icon-size=128\"" - category = "&Size" + category = "&Размер" can-check = true - group = "size" + group = "размер" elem "icon112" name = "&112x112 (3.5x)" command = ".winset \"mapwindow.map.icon-size=112\"" - category = "&Size" + category = "&Размер" can-check = true - group = "size" + group = "размер" elem "icon96" name = "&96x96 (3x)" command = ".winset \"mapwindow.map.icon-size=96\"" - category = "&Size" + category = "&Размер" can-check = true - group = "size" + group = "размер" elem "icon80" name = "&80x80 (2.5x)" command = ".winset \"mapwindow.map.icon-size=80\"" - category = "&Size" + category = "&Размер" can-check = true - group = "size" + group = "размер" elem "icon64" name = "&64x64 (2x)" command = ".winset \"mapwindow.map.icon-size=64\"" - category = "&Size" + category = "&Размер" can-check = true - group = "size" + group = "размер" elem "icon48" name = "&48x48 (1.5x)" command = ".winset \"mapwindow.map.icon-size=48\"" - category = "&Size" + category = "&Размер" can-check = true - group = "size" + group = "размер" elem "icon32" name = "&32x32" command = ".winset \"mapwindow.map.icon-size=32\"" - category = "&Size" + category = "&Размер" can-check = true - group = "size" + group = "размер" elem - name = "&Scaling" - category = "&Icons" + name = "&Масштабирование" + category = "&Экран" saved-params = "is-checked;command" elem "NN" - name = "&Nearest Neighbor" + name = "&Метод ближайшего соседа" command = ".winset \"mapwindow.map.zoom-mode=distort\"" - category = "&Scaling" + category = "&Масштабирование" can-check = true is-checked = true - group = "scale" + group = "масштаб" elem "PS" - name = "&Point Sampling" + name = "&Поточечная выборка" command = ".winset \"mapwindow.map.zoom-mode=normal\"" - category = "&Scaling" + category = "&Масштабирование" can-check = true - group = "scale" + group = "масштаб" elem "BL" - name = "&Bilinear" + name = "&Билейная интерполяция" command = ".winset \"mapwindow.map.zoom-mode=blur\"" - category = "&Scaling" + category = "&Масштабирование" can-check = true - group = "scale" + group = "масштаб" elem "textmode" - name = "&Text" + name = "&Текст" command = ".winset \"menu.textmode.is-checked=true?mapwindow.map.text-mode=true:mapwindow.map.text-mode=false\"" - category = "&Icons" + category = "&Экран" can-check = true elem - name = "&Options" + name = "&Опции" elem - name = "&Open Volume Mixer" + name = "&Открыть микшер громкости" command = "Open-Volume-Mixer" - category = "&Options" + category = "&Опции" elem "statusbar" - name = "&Show status bar" - category = "&Options" + name = "&Показывать строку состояния" + category = "&Опции" can-check = true is-checked = true saved-params = "is-checked" command = ".winset \"menu.statusbar.is-checked=true?mapwindow.status_bar.is-visible=true:mapwindow.status_bar.is-visible=false\"" elem - name = "&Game Preferences" + name = "&Игровые предпочтения" command = "Game-Preferences" - category = "&Options" + category = "&Опции" elem - name = "&Help" + name = "&Помощь" elem - name = "&Admin help" + name = "&Помощь админа" command = "adminhelp" - category = "&Help" + category = "&Помощь" elem - name = "&Fit Viewport" + name = "&Подгонка области видимости" command = "Fit-Viewport" - category = "&Help" + category = "&Помощь" elem - name = "&Refresh TGUI" + name = "&Обновить TGUI" command = "Refresh-TGUI" - category = "&Help" + category = "&Помощь" elem - name = "&Fix Chat" + name = "&Починить чат" command = "Fix-Chat" - category = "&Help" + category = "&Помощь" window "mainwindow" @@ -219,7 +219,7 @@ window "mapwindow" window "outputwindow" elem "outputwindow" type = MAIN - pos = 281,0 + pos = 0,0 size = 640x480 anchor1 = -1,-1 anchor2 = -1,-1 @@ -238,7 +238,7 @@ window "outputwindow" elem "oocbutton" type = BUTTON pos = 599,460 - size = 40x20 + size = 50x20 anchor1 = 100,100 anchor2 = -1,-1 border = line @@ -249,37 +249,47 @@ window "outputwindow" button-type = pushbox elem "saybutton" type = BUTTON - pos = 519,460 - size = 40x20 + pos = 499,460 + size = 50x20 anchor1 = 100,100 anchor2 = -1,-1 border = line saved-params = "is-checked" - text = "Say" + text = "Сказать" command = ".winset \"saybutton.is-checked=true ? input.command=\"!say \\\"\" : input.command=\"\"saybutton.is-checked=true ? mebutton.is-checked=false\"\"saybutton.is-checked=true ? oocbutton.is-checked=false\"" is-flat = true button-type = pushbox elem "mebutton" type = BUTTON - pos = 559,460 - size = 40x20 + pos = 549,460 + size = 50x20 anchor1 = 100,100 anchor2 = -1,-1 border = line saved-params = "is-checked" - text = "Me" + text = "Эмоция" command = ".winset \"mebutton.is-checked=true ? input.command=\"!me \\\"\" : input.command=\"\"mebutton.is-checked=true ? saybutton.is-checked=false\"\"mebutton.is-checked=true ? oocbutton.is-checked=false\"" is-flat = true button-type = pushbox - elem "chat_panel" - type = BROWSER + elem "legacy_output_selector" + type = CHILD pos = 0,0 size = 640x456 anchor1 = 0,0 anchor2 = 100,100 - is-visible = false - is-disabled = true - saved-params = "" + saved-params = "splitter" + left = "output_legacy" + is-vert = false +window "output_legacy" + elem "output_legacy" + type = MAIN + pos = 0,0 + size = 640x456 + anchor1 = -1,-1 + anchor2 = -1,-1 + background-color = none + saved-params = "pos;size;is-minimized;is-maximized" + is-pane = true elem "output" type = OUTPUT pos = 0,0 @@ -287,6 +297,25 @@ window "outputwindow" anchor1 = 0,0 anchor2 = 100,100 is-default = true + saved-params = "max-lines" + +window "output_browser" + elem "output_browser" + type = MAIN + pos = 0,0 + size = 640x456 + anchor1 = -1,-1 + anchor2 = -1,-1 + background-color = none + saved-params = "pos;size;is-minimized;is-maximized" + is-pane = true + elem "chat_panel" + type = BROWSER + pos = 0,0 + size = 640x456 + anchor1 = 0,0 + anchor2 = 100,100 + background-color = none saved-params = "" @@ -309,66 +338,66 @@ window "rpane" is-vert = false elem "fullscreenb" type = BUTTON - pos = 3,7 - size = 65x16 - text = "Fullscreen" + pos = 0,7 + size = 79x16 + text = "Полный экран" command = "fullscreen" elem "textb" type = BUTTON - pos = 70,7 - size = 40x16 + pos = 85,7 + size = 34x16 saved-params = "is-checked" - text = "Text" + text = "Текст" command = ".winset \"rpanewindow.top=;\"" group = "rpanemode" button-type = pushbox elem "infob" type = BUTTON - pos = 111,7 - size = 40x16 + pos = 120,7 + size = 69x16 is-checked = true saved-params = "is-checked" - text = "Info" + text = "Информация" command = ".winset \"rpanewindow.top=infowindow\"" group = "rpanemode" button-type = pushbox elem "wikib" type = BUTTON - pos = 160,7 - size = 50x16 - text = "Wiki" + pos = 195,7 + size = 49x16 + text = "Вики" command = "wiki" elem "rulesb" type = BUTTON - pos = 211,7 - size = 50x16 - text = "Rules" + pos = 245,7 + size = 49x16 + text = "Правила" command = "rules" elem "githubb" type = BUTTON - pos = 262,7 - size = 50x16 + pos = 295,7 + size = 49x16 text = "GitHub" command = "github" elem "webmap" type = BUTTON - pos = 313,7 - size = 50x16 - text = "Map" + pos = 345,7 + size = 49x16 + text = "Карта" command = "webmap" elem "changelog" type = BUTTON - pos = 370,7 - size = 65x16 + pos = 400,7 + size = 119x16 font-style = "bold" text-color = #000000 background-color = #ffffff - text = "Changelog" + text = "Список изменений" command = "Changelog" elem "discordb" type = BUTTON - pos = 436,7 - size = 60x16 + pos = 520,7 + size = 49x16 font-style = "bold" text-color = #ffffff background-color = #7289da @@ -376,12 +405,12 @@ window "rpane" command = "discord" elem "donate" type = BUTTON - pos = 497,7 - size = 60x16 + pos = 570,7 + size = 90x16 font-style = "bold" text-color = #ffffff background-color = #008000 - text = "Donate" + text = "Пожертвовать" command = "Donate" diff --git a/paradise.dme b/paradise.dme index bd6f0a6c58b7..884a48466934 100644 --- a/paradise.dme +++ b/paradise.dme @@ -31,32 +31,36 @@ #include "code\__DEFINES\action.dm" #include "code\__DEFINES\actionspeed_modification.dm" #include "code\__DEFINES\admin.dm" +#include "code\__DEFINES\ai.dm" #include "code\__DEFINES\alerts.dm" #include "code\__DEFINES\antagonists.dm" #include "code\__DEFINES\asset_defines.dm" #include "code\__DEFINES\atmospherics.dm" +#include "code\__DEFINES\beam.dm" #include "code\__DEFINES\blend_modes.dm" #include "code\__DEFINES\blob.dm" #include "code\__DEFINES\borer.dm" #include "code\__DEFINES\bots.dm" #include "code\__DEFINES\byond_tracy.dm" #include "code\__DEFINES\callbacks.dm" +#include "code\__DEFINES\cargo.dm" #include "code\__DEFINES\cargo_quests.dm" #include "code\__DEFINES\chat.dm" #include "code\__DEFINES\chat_box_defines.dm" +#include "code\__DEFINES\click.dm" #include "code\__DEFINES\clockwork.dm" #include "code\__DEFINES\clothing.dm" #include "code\__DEFINES\colors.dm" #include "code\__DEFINES\combat.dm" #include "code\__DEFINES\configuration.dm" #include "code\__DEFINES\construction.dm" -#include "code\__DEFINES\spells.dm" #include "code\__DEFINES\contractors.dm" #include "code\__DEFINES\contracts.dm" #include "code\__DEFINES\cooldowns.dm" #include "code\__DEFINES\crafting.dm" #include "code\__DEFINES\criminal_status.dm" #include "code\__DEFINES\cult.dm" +#include "code\__DEFINES\devil.dm" #include "code\__DEFINES\directional.dm" #include "code\__DEFINES\diseases.dm" #include "code\__DEFINES\dmjit.dm" @@ -64,19 +68,23 @@ #include "code\__DEFINES\do_afters.dm" #include "code\__DEFINES\dye_keys.dm" #include "code\__DEFINES\emotes_defines.dm" +#include "code\__DEFINES\ert.dm" #include "code\__DEFINES\flags.dm" #include "code\__DEFINES\fonts.dm" #include "code\__DEFINES\footstep.dm" #include "code\__DEFINES\game.dm" #include "code\__DEFINES\gamemode.dm" +#include "code\__DEFINES\generators.dm" #include "code\__DEFINES\genetics.dm" #include "code\__DEFINES\gravity.dm" +#include "code\__DEFINES\holomaps.dm" #include "code\__DEFINES\hud.dm" #include "code\__DEFINES\hydroponics.dm" #include "code\__DEFINES\icon_smoothing.dm" #include "code\__DEFINES\implants_defines.dm" #include "code\__DEFINES\input.dm" #include "code\__DEFINES\instruments.dm" +#include "code\__DEFINES\insurance.dm" #include "code\__DEFINES\inventory.dm" #include "code\__DEFINES\is_helpers.dm" #include "code\__DEFINES\job.dm" @@ -95,18 +103,22 @@ #include "code\__DEFINES\medal.dm" #include "code\__DEFINES\misc.dm" #include "code\__DEFINES\mobs.dm" +#include "code\__DEFINES\monkeys.dm" #include "code\__DEFINES\move_force.dm" #include "code\__DEFINES\movement.dm" #include "code\__DEFINES\movespeed_modification.dm" #include "code\__DEFINES\multiz.dm" #include "code\__DEFINES\muzzle_flash.dm" +#include "code\__DEFINES\newcaster.dm" #include "code\__DEFINES\ninja.dm" #include "code\__DEFINES\obj_flags.dm" #include "code\__DEFINES\organ_defines.dm" #include "code\__DEFINES\overlays.dm" +#include "code\__DEFINES\particles.dm" #include "code\__DEFINES\path.dm" #include "code\__DEFINES\pda.dm" #include "code\__DEFINES\pipes.dm" +#include "code\__DEFINES\polls.dm" #include "code\__DEFINES\preferences.dm" #include "code\__DEFINES\procpath.dm" #include "code\__DEFINES\qdel.dm" @@ -114,13 +126,17 @@ #include "code\__DEFINES\RCD.dm" #include "code\__DEFINES\reagents.dm" #include "code\__DEFINES\request.dm" +#include "code\__DEFINES\request_consoles.dm" +#include "code\__DEFINES\rituals.dm" #include "code\__DEFINES\role_preferences.dm" #include "code\__DEFINES\rolebans.dm" +#include "code\__DEFINES\ru_lang_rules.dm" #include "code\__DEFINES\rust_g.dm" -#include "code\__DEFINES\secret_documents.dm" #include "code\__DEFINES\rust_g_overrides.dm" +#include "code\__DEFINES\secret_documents.dm" #include "code\__DEFINES\sensor_devices.dm" #include "code\__DEFINES\shuttle.dm" +#include "code\__DEFINES\shuttles.dm" #include "code\__DEFINES\sibyl.dm" #include "code\__DEFINES\sight.dm" #include "code\__DEFINES\sound.dm" @@ -128,6 +144,7 @@ #include "code\__DEFINES\span.dm" #include "code\__DEFINES\speech_channels.dm" #include "code\__DEFINES\speech_controller.dm" +#include "code\__DEFINES\spells.dm" #include "code\__DEFINES\stat.dm" #include "code\__DEFINES\stat_tracking.dm" #include "code\__DEFINES\station_goals.dm" @@ -135,6 +152,7 @@ #include "code\__DEFINES\strippable_defines.dm" #include "code\__DEFINES\subsystems.dm" #include "code\__DEFINES\surgery_defines.dm" +#include "code\__DEFINES\terror_spiders.dm" #include "code\__DEFINES\text.dm" #include "code\__DEFINES\tgs.dm" #include "code\__DEFINES\tgui_defines.dm" @@ -147,12 +165,17 @@ #include "code\__DEFINES\verb_manager.dm" #include "code\__DEFINES\vv.dm" #include "code\__DEFINES\wires.dm" +#include "code\__DEFINES\xenomorphs.dm" #include "code\__DEFINES\zlevel.dm" #include "code\__DEFINES\dcs\flags.dm" #include "code\__DEFINES\dcs\helpers.dm" #include "code\__DEFINES\dcs\mapping.dm" #include "code\__DEFINES\dcs\signals.dm" +#include "code\__DEFINES\dcs\signals_blob.dm" +#include "code\__DEFINES\dcs\signals_lazy_templates.dm" #include "code\__DEFINES\dcs\signals_object.dm" +#include "code\__DEFINES\dcs\signals_silicon.dm" +#include "code\__DEFINES\dcs\signals_turf.dm" #include "code\__DEFINES\traits\_traits.dm" #include "code\__DEFINES\traits\declarations.dm" #include "code\__DEFINES\traits\sources.dm" @@ -161,10 +184,13 @@ #include "code\__HELPERS\_planes.dm" #include "code\__HELPERS\_string_lists.dm" #include "code\__HELPERS\AnimationLibrary.dm" +#include "code\__HELPERS\antag_menu_helpers.dm" #include "code\__HELPERS\areas.dm" #include "code\__HELPERS\atmospherics.dm" #include "code\__HELPERS\atoms.dm" #include "code\__HELPERS\bitflag_lists.dm" +#include "code\__HELPERS\bitflags.dm" +#include "code\__HELPERS\chat.dm" #include "code\__HELPERS\cmp.dm" #include "code\__HELPERS\constants.dm" #include "code\__HELPERS\experimental.dm" @@ -175,7 +201,6 @@ #include "code\__HELPERS\heap.dm" #include "code\__HELPERS\icon_smoothing.dm" #include "code\__HELPERS\icons.dm" -#include "code\__HELPERS\level_check.dm" #include "code\__HELPERS\level_traits.dm" #include "code\__HELPERS\lighting_helpers.dm" #include "code\__HELPERS\maths.dm" @@ -196,12 +221,16 @@ #include "code\__HELPERS\time.dm" #include "code\__HELPERS\tool_helpers.dm" #include "code\__HELPERS\traits.dm" +#include "code\__HELPERS\turfs.dm" #include "code\__HELPERS\type2type.dm" #include "code\__HELPERS\typelists.dm" #include "code\__HELPERS\unique_ids.dm" #include "code\__HELPERS\unsorted.dm" #include "code\__HELPERS\verb_helpers.dm" +#include "code\__HELPERS\view.dm" #include "code\__HELPERS\visual_effects.dm" +#include "code\__HELPERS\data_struct\priority_queue.dm" +#include "code\__HELPERS\data_struct\queue.dm" #include "code\__HELPERS\paths\jps.dm" #include "code\__HELPERS\paths\path.dm" #include "code\__HELPERS\paths\sssp.dm" @@ -210,7 +239,6 @@ #include "code\__HELPERS\sorts\MergeSort.dm" #include "code\__HELPERS\sorts\TimSort.dm" #include "code\_globalvars\_regexes.dm" -#include "code\_globalvars\bitfields.dm" #include "code\_globalvars\configuration.dm" #include "code\_globalvars\game_modes.dm" #include "code\_globalvars\genetics.dm" @@ -219,8 +247,19 @@ #include "code\_globalvars\misc.dm" #include "code\_globalvars\sensitive.dm" #include "code\_globalvars\traits.dm" +#include "code\_globalvars\bitfields\admin.dm" +#include "code\_globalvars\bitfields\bitfields.dm" +#include "code\_globalvars\bitfields\declarations.dm" +#include "code\_globalvars\bitfields\food.dm" +#include "code\_globalvars\bitfields\icon_smoothing.dm" +#include "code\_globalvars\bitfields\jobs.dm" +#include "code\_globalvars\bitfields\mecha.dm" +#include "code\_globalvars\bitfields\mobs.dm" +#include "code\_globalvars\bitfields\objs.dm" +#include "code\_globalvars\bitfields\sight.dm" #include "code\_globalvars\lists\flavor_misc.dm" #include "code\_globalvars\lists\fortunes.dm" +#include "code\_globalvars\lists\holomaps.dm" #include "code\_globalvars\lists\keybindings.dm" #include "code\_globalvars\lists\misc.dm" #include "code\_globalvars\lists\mobs.dm" @@ -232,6 +271,7 @@ #include "code\_onclick\adjacent.dm" #include "code\_onclick\ai.dm" #include "code\_onclick\click.dm" +#include "code\_onclick\click_alt.dm" #include "code\_onclick\click_override.dm" #include "code\_onclick\cogscarab.dm" #include "code\_onclick\cyborg.dm" @@ -249,6 +289,7 @@ #include "code\_onclick\hud\alien.dm" #include "code\_onclick\hud\alien_larva.dm" #include "code\_onclick\hud\blob_overmind.dm" +#include "code\_onclick\hud\blobbernaut.dm" #include "code\_onclick\hud\bot.dm" #include "code\_onclick\hud\cogscarab.dm" #include "code\_onclick\hud\constructs.dm" @@ -292,7 +333,9 @@ #include "code\controllers\subsystem\afk.dm" #include "code\controllers\subsystem\air.dm" #include "code\controllers\subsystem\ambience.dm" +#include "code\controllers\subsystem\area_contents.dm" #include "code\controllers\subsystem\asset_loading.dm" +#include "code\controllers\subsystem\augury.dm" #include "code\controllers\subsystem\capitalism.dm" #include "code\controllers\subsystem\chat.dm" #include "code\controllers\subsystem\cleanup.dm" @@ -301,7 +344,9 @@ #include "code\controllers\subsystem\demo.dm" #include "code\controllers\subsystem\early_assets.dm" #include "code\controllers\subsystem\events.dm" +#include "code\controllers\subsystem\explosions.dm" #include "code\controllers\subsystem\fires.dm" +#include "code\controllers\subsystem\fluids.dm" #include "code\controllers\subsystem\game_events.dm" #include "code\controllers\subsystem\garbage.dm" #include "code\controllers\subsystem\ghost_spawns.dm" @@ -311,7 +356,9 @@ #include "code\controllers\subsystem\input.dm" #include "code\controllers\subsystem\jobs.dm" #include "code\controllers\subsystem\lighting.dm" +#include "code\controllers\subsystem\looting.dm" #include "code\controllers\subsystem\machinery.dm" +#include "code\controllers\subsystem\mapping.dm" #include "code\controllers\subsystem\mobs.dm" #include "code\controllers\subsystem\nightshift.dm" #include "code\controllers\subsystem\npcpool.dm" @@ -344,8 +391,8 @@ #include "code\controllers\subsystem\non-firing\cargo_quests.dm" #include "code\controllers\subsystem\non-firing\discord.dm" #include "code\controllers\subsystem\non-firing\holiday.dm" +#include "code\controllers\subsystem\non-firing\holomap.dm" #include "code\controllers\subsystem\non-firing\ipintel.dm" -#include "code\controllers\subsystem\non-firing\mapping.dm" #include "code\controllers\subsystem\non-firing\medals.dm" #include "code\controllers\subsystem\non-firing\overlays.dm" #include "code\controllers\subsystem\non-firing\persistent_data.dm" @@ -353,12 +400,12 @@ #include "code\controllers\subsystem\non-firing\radio.dm" #include "code\controllers\subsystem\non-firing\sounds.dm" #include "code\controllers\subsystem\non-firing\titlescreen.dm" +#include "code\controllers\subsystem\processing\ai_controllers.dm" #include "code\controllers\subsystem\processing\aura_healing.dm" #include "code\controllers\subsystem\processing\dcs.dm" #include "code\controllers\subsystem\processing\fastprocess.dm" #include "code\controllers\subsystem\processing\instruments.dm" #include "code\controllers\subsystem\processing\obj.dm" -#include "code\controllers\subsystem\processing\obj_tab_items.dm" #include "code\controllers\subsystem\processing\processing.dm" #include "code\controllers\subsystem\processing\projectiles.dm" #include "code\controllers\subsystem\processing\transittube.dm" @@ -396,11 +443,13 @@ #include "code\datums\mutable_appearance.dm" #include "code\datums\periodic_news.dm" #include "code\datums\pipe_datums.dm" +#include "code\datums\pod_style.dm" #include "code\datums\position_point_vector.dm" #include "code\datums\progressbar.dm" #include "code\datums\radio.dm" #include "code\datums\recipe.dm" #include "code\datums\revision.dm" +#include "code\datums\rituals.dm" #include "code\datums\ruins.dm" #include "code\datums\shuttles.dm" #include "code\datums\snake_fashion.dm" @@ -414,6 +463,11 @@ #include "code\datums\verb_callback.dm" #include "code\datums\vision_override.dm" #include "code\datums\weakrefs.dm" +#include "code\datums\ai\_ai_behaviour.dm" +#include "code\datums\ai\_ai_controller.dm" +#include "code\datums\ai\generic_actions.dm" +#include "code\datums\ai\monkey\monkey_behaviours.dm" +#include "code\datums\ai\monkey\monkey_controller.dm" #include "code\datums\cache\air_alarm.dm" #include "code\datums\cache\apc.dm" #include "code\datums\cache\cache.dm" @@ -421,24 +475,32 @@ #include "code\datums\cache\powermonitor.dm" #include "code\datums\changelog\changelog.dm" #include "code\datums\cinematics\cinematic_datum.dm" +#include "code\datums\cinematics\kharin_summon.dm" #include "code\datums\cinematics\malf_doomsday.dm" #include "code\datums\cinematics\narsie_summon.dm" #include "code\datums\cinematics\nuke_cinematics.dm" +#include "code\datums\cinematics\ratvar_summon.dm" +#include "code\datums\cinematics\reaper_summon.dm" #include "code\datums\components\_component.dm" #include "code\datums\components\after_attacks_hub.dm" -#include "code\datums\components\aura_healing.dm" #include "code\datums\components\animal_temperature.dm" +#include "code\datums\components\aura_healing.dm" +#include "code\datums\components\blob_minion.dm" +#include "code\datums\components\blob_turf_consuming.dm" #include "code\datums\components\boomerang.dm" #include "code\datums\components\boss_music.dm" #include "code\datums\components\caltrop.dm" #include "code\datums\components\chasm.dm" #include "code\datums\components\codeword_hearing.dm" #include "code\datums\components\combo_attacks.dm" +#include "code\datums\components\connect_containers.dm" #include "code\datums\components\connect_loc_behalf.dm" #include "code\datums\components\connect_mob_behalf.dm" #include "code\datums\components\contsruction_regenerate.dm" #include "code\datums\components\conveyor_movement.dm" #include "code\datums\components\cross_shock.dm" +#include "code\datums\components\deadchat_control.dm" +#include "code\datums\components\death_linked.dm" #include "code\datums\components\decal.dm" #include "code\datums\components\defibrillator.dm" #include "code\datums\components\drift.dm" @@ -448,21 +510,28 @@ #include "code\datums\components\examine_override.dm" #include "code\datums\components\force_move.dm" #include "code\datums\components\fullauto.dm" +#include "code\datums\components\ghost_direct_control.dm" #include "code\datums\components\hide_highest_offset.dm" +#include "code\datums\components\holderloving.dm" #include "code\datums\components\jackboots.dm" #include "code\datums\components\jetpack.dm" #include "code\datums\components\label.dm" #include "code\datums\components\material_container.dm" +#include "code\datums\components\object_possession.dm" #include "code\datums\components\overlay_lighting.dm" #include "code\datums\components\paintable.dm" +#include "code\datums\components\pellet_cloud.dm" #include "code\datums\components\persistent_overlay.dm" +#include "code\datums\components\pref_holder.dm" #include "code\datums\components\proximity_monitor.dm" #include "code\datums\components\radioactivity.dm" +#include "code\datums\components\ritual_object.dm" #include "code\datums\components\shielded.dm" #include "code\datums\components\slippery.dm" #include "code\datums\components\spawner.dm" #include "code\datums\components\spooky.dm" #include "code\datums\components\squeak.dm" +#include "code\datums\components\stationloving.dm" #include "code\datums\components\surgery_initiator.dm" #include "code\datums\components\swarming.dm" #include "code\datums\components\transforming.dm" @@ -476,10 +545,10 @@ #include "code\datums\diseases\appendicitis.dm" #include "code\datums\diseases\berserker.dm" #include "code\datums\diseases\critical.dm" +#include "code\datums\diseases\ectoplasmic.dm" #include "code\datums\diseases\food_poisoning.dm" #include "code\datums\diseases\kuru.dm" #include "code\datums\diseases\vampire.dm" -#include "code\datums\diseases\ectoplasmic.dm" #include "code\datums\diseases\viruses\_virus.dm" #include "code\datums\diseases\viruses\anxiety.dm" #include "code\datums\diseases\viruses\babylon_fever.dm" @@ -544,13 +613,20 @@ #include "code\datums\diseases\viruses\advance\symptoms\youth.dm" #include "code\datums\elements\_element.dm" #include "code\datums\elements\connect_loc.dm" +#include "code\datums\elements\devil_banishment.dm" +#include "code\datums\elements\devil_regen.dm" +#include "code\datums\elements\diona_internals.dm" #include "code\datums\elements\falling_hazard.dm" #include "code\datums\elements\footstep.dm" #include "code\datums\elements\give_turf_traits.dm" +#include "code\datums\elements\high_value_item.dm" #include "code\datums\elements\light_blocking.dm" #include "code\datums\elements\movetype_handler.dm" #include "code\datums\elements\openspace_item_click_handler.dm" +#include "code\datums\elements\pref_viewer.dm" +#include "code\datums\elements\reagent_attack.dm" #include "code\datums\elements\ridable.dm" +#include "code\datums\elements\ritual_dye_removal.dm" #include "code\datums\elements\simple_flying.dm" #include "code\datums\elements\squish.dm" #include "code\datums\elements\strippable.dm" @@ -589,6 +665,8 @@ #include "code\datums\mapgen\LavalandGenerator.dm" #include "code\datums\outfits\outfit.dm" #include "code\datums\outfits\outfit_admin.dm" +#include "code\datums\outfits\outfit_debug.dm" +#include "code\datums\outfits\outfit_prisoner.dm" #include "code\datums\outfits\outfit_security_clown.dm" #include "code\datums\outfits\plasmamen.dm" #include "code\datums\outfits\vv_outfit.dm" @@ -598,6 +676,7 @@ #include "code\datums\spell_cooldown\spell_charges.dm" #include "code\datums\spell_cooldown\spell_cooldown.dm" #include "code\datums\spell_handler\alien_spell_handler.dm" +#include "code\datums\spell_handler\devil_spell_handler.dm" #include "code\datums\spell_handler\morph_spell_handler.dm" #include "code\datums\spell_handler\spell_handler.dm" #include "code\datums\spell_handler\vampire_spell_handler.dm" @@ -660,7 +739,6 @@ #include "code\datums\spells\alien_spells\corrosive_acid_spit.dm" #include "code\datums\spells\alien_spells\evolve.dm" #include "code\datums\spells\alien_spells\impregnate.dm" -#include "code\datums\spells\alien_spells\larva_evolve.dm" #include "code\datums\spells\alien_spells\lay_alien_eggs.dm" #include "code\datums\spells\alien_spells\neurotoxin_spit.dm" #include "code\datums\spells\alien_spells\open_vent_alien.dm" @@ -677,8 +755,10 @@ #include "code\datums\status_effects\debuffs.dm" #include "code\datums\status_effects\gas.dm" #include "code\datums\status_effects\neutral.dm" +#include "code\datums\status_effects\screwy_hud.dm" #include "code\datums\status_effects\status_effect.dm" #include "code\datums\status_effects\status_effects_absorption.dm" +#include "code\datums\status_effects\wet_stacks.dm" #include "code\datums\weather\weather.dm" #include "code\datums\weather\weather_types\ash_storm.dm" #include "code\datums\weather\weather_types\blob_storm.dm" @@ -686,6 +766,8 @@ #include "code\datums\weather\weather_types\radiation_storm.dm" #include "code\datums\weather\weather_types\snow_storm.dm" #include "code\datums\weather\weather_types\solar_flare.dm" +#include "code\datums\weather\weather_types\web_storm.dm" +#include "code\datums\weather\weather_types\xeno_storm.dm" #include "code\datums\wires\airlock.dm" #include "code\datums\wires\alarm.dm" #include "code\datums\wires\apc.dm" @@ -737,6 +819,7 @@ #include "code\game\dna\genes\powers.dm" #include "code\game\dna\genes\vg_disabilities.dm" #include "code\game\dna\genes\vg_powers.dm" +#include "code\game\gamemodes\auto_decrare.dm" #include "code\game\gamemodes\emergency_shuttle_lockdown.dm" #include "code\game\gamemodes\game_mode.dm" #include "code\game\gamemodes\intercept_report.dm" @@ -749,17 +832,6 @@ #include "code\game\gamemodes\blob\blob.dm" #include "code\game\gamemodes\blob\blob_finish.dm" #include "code\game\gamemodes\blob\blob_report.dm" -#include "code\game\gamemodes\blob\overmind.dm" -#include "code\game\gamemodes\blob\powers.dm" -#include "code\game\gamemodes\blob\theblob.dm" -#include "code\game\gamemodes\blob\blobs\blob_mobs.dm" -#include "code\game\gamemodes\blob\blobs\captured_nuke.dm" -#include "code\game\gamemodes\blob\blobs\core.dm" -#include "code\game\gamemodes\blob\blobs\factory.dm" -#include "code\game\gamemodes\blob\blobs\node.dm" -#include "code\game\gamemodes\blob\blobs\resource.dm" -#include "code\game\gamemodes\blob\blobs\shield.dm" -#include "code\game\gamemodes\blob\blobs\storage.dm" #include "code\game\gamemodes\changeling\changeling.dm" #include "code\game\gamemodes\changeling\thief_chan.dm" #include "code\game\gamemodes\changeling\traitor_chan.dm" @@ -784,16 +856,8 @@ #include "code\game\gamemodes\cult\cult_structures.dm" #include "code\game\gamemodes\cult\ritual.dm" #include "code\game\gamemodes\cult\runes.dm" -#include "code\game\gamemodes\devil\devil.dm" -#include "code\game\gamemodes\devil\devil_game_mode.dm" -#include "code\game\gamemodes\devil\devilinfo.dm" #include "code\game\gamemodes\devil\game_mode.dm" #include "code\game\gamemodes\devil\objectives.dm" -#include "code\game\gamemodes\devil\contracts\friend.dm" -#include "code\game\gamemodes\devil\devil_agent\devil_agent.dm" -#include "code\game\gamemodes\devil\imp\imp.dm" -#include "code\game\gamemodes\devil\true_devil\_true_devil.dm" -#include "code\game\gamemodes\devil\true_devil\inventory.dm" #include "code\game\gamemodes\extended\extended.dm" #include "code\game\gamemodes\heist\heist.dm" #include "code\game\gamemodes\malfunction\Malf_Modules.dm" @@ -1076,6 +1140,7 @@ #include "code\game\objects\effects\mines.dm" #include "code\game\objects\effects\misc.dm" #include "code\game\objects\effects\overlays.dm" +#include "code\game\objects\effects\particle_holder.dm" #include "code\game\objects\effects\portals.dm" #include "code\game\objects\effects\snowcloud.dm" #include "code\game\objects\effects\spiders.dm" @@ -1099,13 +1164,14 @@ #include "code\game\objects\effects\decals\turfdecals\tilecoloring.dm" #include "code\game\objects\effects\decals\turfdecals\weather.dm" #include "code\game\objects\effects\effect_system\effect_system.dm" -#include "code\game\objects\effects\effect_system\effects_chem_smoke.dm" #include "code\game\objects\effects\effect_system\effects_explosion.dm" -#include "code\game\objects\effects\effect_system\effects_foam.dm" #include "code\game\objects\effects\effect_system\effects_other.dm" -#include "code\game\objects\effects\effect_system\effects_smoke.dm" #include "code\game\objects\effects\effect_system\effects_sparks.dm" #include "code\game\objects\effects\effect_system\effects_water.dm" +#include "code\game\objects\effects\effect_system\fluid_spread\_fluid_spread.dm" +#include "code\game\objects\effects\effect_system\fluid_spread\effects_foam.dm" +#include "code\game\objects\effects\effect_system\fluid_spread\effects_smoke.dm" +#include "code\game\objects\effects\particles\water.dm" #include "code\game\objects\effects\spawners\airlock_spawner.dm" #include "code\game\objects\effects\spawners\bombspawner.dm" #include "code\game\objects\effects\spawners\gibspawner.dm" @@ -1120,6 +1186,7 @@ #include "code\game\objects\effects\temporary_visuals\miscellaneous.dm" #include "code\game\objects\effects\temporary_visuals\muzzle_flashes.dm" #include "code\game\objects\effects\temporary_visuals\temporary_visual.dm" +#include "code\game\objects\items\anomaly_beacon.dm" #include "code\game\objects\items\ashtray.dm" #include "code\game\objects\items\blueprints.dm" #include "code\game\objects\items\bodybag.dm" @@ -1241,8 +1308,10 @@ #include "code\game\objects\items\weapons\dna_injector.dm" #include "code\game\objects\items\weapons\dna_upgrader.dm" #include "code\game\objects\items\weapons\dnascrambler.dm" +#include "code\game\objects\items\weapons\experimental_syringe_gun.dm" #include "code\game\objects\items\weapons\explosives.dm" #include "code\game\objects\items\weapons\extinguisher.dm" +#include "code\game\objects\items\weapons\fishing_rod.dm" #include "code\game\objects\items\weapons\flamethrower.dm" #include "code\game\objects\items\weapons\garrote.dm" #include "code\game\objects\items\weapons\gift_wrappaper.dm" @@ -1280,9 +1349,11 @@ #include "code\game\objects\items\weapons\syndie_RCD.dm" #include "code\game\objects\items\weapons\tape.dm" #include "code\game\objects\items\weapons\teleportation.dm" +#include "code\game\objects\items\weapons\tuned_anomalous_teleporter.dm" #include "code\game\objects\items\weapons\twohanded.dm" #include "code\game\objects\items\weapons\vending_items.dm" #include "code\game\objects\items\weapons\weaponry.dm" +#include "code\game\objects\items\weapons\welder_sword.dm" #include "code\game\objects\items\weapons\whetstone.dm" #include "code\game\objects\items\weapons\grenades\atmosgrenade.dm" #include "code\game\objects\items\weapons\grenades\bananade.dm" @@ -1292,6 +1363,7 @@ #include "code\game\objects\items\weapons\grenades\confetti.dm" #include "code\game\objects\items\weapons\grenades\custom_grenades.dm" #include "code\game\objects\items\weapons\grenades\emgrenade.dm" +#include "code\game\objects\items\weapons\grenades\fauna_bomb.dm" #include "code\game\objects\items\weapons\grenades\flashbang.dm" #include "code\game\objects\items\weapons\grenades\frag.dm" #include "code\game\objects\items\weapons\grenades\ghettobomb.dm" @@ -1342,6 +1414,7 @@ #include "code\game\objects\items\weapons\storage\garment_bag.dm" #include "code\game\objects\items\weapons\storage\internal.dm" #include "code\game\objects\items\weapons\storage\lockbox.dm" +#include "code\game\objects\items\weapons\storage\plasmamen_lockbox.dm" #include "code\game\objects\items\weapons\storage\secure.dm" #include "code\game\objects\items\weapons\storage\storage.dm" #include "code\game\objects\items\weapons\storage\toolbox.dm" @@ -1503,6 +1576,8 @@ #include "code\modules\admin\banappearance.dm" #include "code\modules\admin\banjob.dm" #include "code\modules\admin\centcom_ban_db.dm" +#include "code\modules\admin\check_antagonists.dm" +#include "code\modules\admin\create_cargo_crate.dm" #include "code\modules\admin\create_mob.dm" #include "code\modules\admin\create_object.dm" #include "code\modules\admin\create_turf.dm" @@ -1513,25 +1588,38 @@ #include "code\modules\admin\mute.dm" #include "code\modules\admin\NewBan.dm" #include "code\modules\admin\outfits.dm" -#include "code\modules\admin\player_panel.dm" +#include "code\modules\admin\player_options_panel.dm" +#include "code\modules\admin\player_panel_veth.dm" #include "code\modules\admin\secrets.dm" +#include "code\modules\admin\sound_emitter.dm" #include "code\modules\admin\sql_notes.dm" #include "code\modules\admin\stickyban.dm" #include "code\modules\admin\topic.dm" #include "code\modules\admin\watchlist.dm" #include "code\modules\admin\db_ban\functions.dm" #include "code\modules\admin\permissionverbs\permissionedit.dm" +#include "code\modules\admin\polls\player_poll.dm" +#include "code\modules\admin\polls\poll_db.dm" +#include "code\modules\admin\polls\poll_list_panel.dm" +#include "code\modules\admin\polls\poll_management_panel.dm" +#include "code\modules\admin\polls\poll_option.dm" +#include "code\modules\admin\polls\poll_option_panel.dm" +#include "code\modules\admin\polls\poll_question.dm" #include "code\modules\admin\tickets\adminticketsverbs.dm" #include "code\modules\admin\tickets\mentorticketsverbs.dm" +#include "code\modules\admin\verbs\_ui_module_admin.dm" #include "code\modules\admin\verbs\adminhelp.dm" #include "code\modules\admin\verbs\adminjump.dm" #include "code\modules\admin\verbs\adminpm.dm" #include "code\modules\admin\verbs\adminsay.dm" #include "code\modules\admin\verbs\antag-ooc.dm" +#include "code\modules\admin\verbs\antagonist_menu.dm" #include "code\modules\admin\verbs\asays.dm" #include "code\modules\admin\verbs\atmosdebug.dm" +#include "code\modules\admin\verbs\bluespacearty.dm" #include "code\modules\admin\verbs\borgpanel.dm" #include "code\modules\admin\verbs\BrokenInhands.dm" +#include "code\modules\admin\verbs\cantcomm_cargo.dm" #include "code\modules\admin\verbs\cinematic.dm" #include "code\modules\admin\verbs\custom_event.dm" #include "code\modules\admin\verbs\deadsay.dm" @@ -1552,10 +1640,12 @@ #include "code\modules\admin\verbs\one_click_antag.dm" #include "code\modules\admin\verbs\onlyone.dm" #include "code\modules\admin\verbs\onlyoneteam.dm" +#include "code\modules\admin\verbs\ping_all_admins.dm" #include "code\modules\admin\verbs\playsound.dm" #include "code\modules\admin\verbs\possess.dm" #include "code\modules\admin\verbs\pray.dm" #include "code\modules\admin\verbs\randomverbs.dm" +#include "code\modules\admin\verbs\reagents_editor.dm" #include "code\modules\admin\verbs\requests.dm" #include "code\modules\admin\verbs\serialization.dm" #include "code\modules\admin\verbs\space_transitions.dm" @@ -1563,6 +1653,7 @@ #include "code\modules\admin\verbs\striketeam_syndicate.dm" #include "code\modules\admin\verbs\ticklag.dm" #include "code\modules\admin\verbs\toggledebugverbs.dm" +#include "code\modules\admin\verbs\transform_matrix_editor.dm" #include "code\modules\admin\verbs\tripAI.dm" #include "code\modules\admin\verbs\vox_raiders.dm" #include "code\modules\admin\verbs\SDQL2\SDQL_2.dm" @@ -1575,7 +1666,51 @@ #include "code\modules\antagonists\_common\antag_team.dm" #include "code\modules\antagonists\blob\blob_actions.dm" #include "code\modules\antagonists\blob\blob_infected_datum.dm" +#include "code\modules\antagonists\blob\blob_minion.dm" #include "code\modules\antagonists\blob\blob_overmind_datum.dm" +#include "code\modules\antagonists\blob\blobs_attack.dm" +#include "code\modules\antagonists\blob\overmind.dm" +#include "code\modules\antagonists\blob\powers.dm" +#include "code\modules\antagonists\blob\powers_verbs.dm" +#include "code\modules\antagonists\blob\blob_minions\blob_mob.dm" +#include "code\modules\antagonists\blob\blob_minions\blob_spore.dm" +#include "code\modules\antagonists\blob\blob_minions\blob_zombie.dm" +#include "code\modules\antagonists\blob\blob_minions\blobbernaut.dm" +#include "code\modules\antagonists\blob\blobstrains\_blobstrain.dm" +#include "code\modules\antagonists\blob\blobstrains\_reagent.dm" +#include "code\modules\antagonists\blob\blobstrains\blazing_oil.dm" +#include "code\modules\antagonists\blob\blobstrains\blob_sorium.dm" +#include "code\modules\antagonists\blob\blobstrains\cryogenic_poison.dm" +#include "code\modules\antagonists\blob\blobstrains\debris_devourer.dm" +#include "code\modules\antagonists\blob\blobstrains\distributed_neurons.dm" +#include "code\modules\antagonists\blob\blobstrains\electromagnetic_web.dm" +#include "code\modules\antagonists\blob\blobstrains\energized_jelly.dm" +#include "code\modules\antagonists\blob\blobstrains\explosive_lattice.dm" +#include "code\modules\antagonists\blob\blobstrains\multiplex.dm" +#include "code\modules\antagonists\blob\blobstrains\networked_fibers.dm" +#include "code\modules\antagonists\blob\blobstrains\pressurized_slime.dm" +#include "code\modules\antagonists\blob\blobstrains\radioactive_gel.dm" +#include "code\modules\antagonists\blob\blobstrains\reactive_spines.dm" +#include "code\modules\antagonists\blob\blobstrains\regenerative_materia.dm" +#include "code\modules\antagonists\blob\blobstrains\replicating_foam.dm" +#include "code\modules\antagonists\blob\blobstrains\shifting_fragments.dm" +#include "code\modules\antagonists\blob\blobstrains\synchronous_mesh.dm" +#include "code\modules\antagonists\blob\structures\_blob.dm" +#include "code\modules\antagonists\blob\structures\captured_nuke.dm" +#include "code\modules\antagonists\blob\structures\core.dm" +#include "code\modules\antagonists\blob\structures\factory.dm" +#include "code\modules\antagonists\blob\structures\node.dm" +#include "code\modules\antagonists\blob\structures\normal.dm" +#include "code\modules\antagonists\blob\structures\resource.dm" +#include "code\modules\antagonists\blob\structures\shield.dm" +#include "code\modules\antagonists\blob\structures\special.dm" +#include "code\modules\antagonists\blob\structures\storage.dm" +#include "code\modules\antagonists\borer\borer_action.dm" +#include "code\modules\antagonists\borer\borer_datum.dm" +#include "code\modules\antagonists\borer\borer_focus.dm" +#include "code\modules\antagonists\borer\borer_rank.dm" +#include "code\modules\antagonists\borer\borer_reagent.dm" +#include "code\modules\antagonists\borer\borer_spell.dm" #include "code\modules\antagonists\changeling\changeling_datum.dm" #include "code\modules\antagonists\changeling\changeling_power.dm" #include "code\modules\antagonists\changeling\evolution_menu.dm" @@ -1602,12 +1737,21 @@ #include "code\modules\antagonists\changeling\powers\swap_form.dm" #include "code\modules\antagonists\changeling\powers\tiny_prick.dm" #include "code\modules\antagonists\changeling\powers\transform.dm" -#include "code\modules\antagonists\borer\borer_datum.dm" -#include "code\modules\antagonists\borer\borer_rank.dm" -#include "code\modules\antagonists\borer\borer_focus.dm" -#include "code\modules\antagonists\borer\borer_reagent.dm" -#include "code\modules\antagonists\borer\borer_action.dm" -#include "code\modules\antagonists\borer\borer_spell.dm" +#include "code\modules\antagonists\devil\devil.dm" +#include "code\modules\antagonists\devil\devil_ban.dm" +#include "code\modules\antagonists\devil\devil_bane.dm" +#include "code\modules\antagonists\devil\devil_banish.dm" +#include "code\modules\antagonists\devil\devil_info.dm" +#include "code\modules\antagonists\devil\devil_obligation.dm" +#include "code\modules\antagonists\devil\devil_outfit.dm" +#include "code\modules\antagonists\devil\devil_pawn.dm" +#include "code\modules\antagonists\devil\devil_rank.dm" +#include "code\modules\antagonists\devil\devil_ritual.dm" +#include "code\modules\antagonists\devil\helper_procs.dm" +#include "code\modules\antagonists\devil\sintouched.dm" +#include "code\modules\antagonists\devil\contracts\friend.dm" +#include "code\modules\antagonists\devil\imp\imp.dm" +#include "code\modules\antagonists\devil\true_devil\_true_devil.dm" #include "code\modules\antagonists\malf_ai\malf_ai_datum.dm" #include "code\modules\antagonists\space_dragon\action.dm" #include "code\modules\antagonists\space_dragon\carp.dm" @@ -1676,6 +1820,10 @@ #include "code\modules\antagonists\space_ninja\suit\ninja_equipment_actions\ninja_suit_initialisation.dm" #include "code\modules\antagonists\space_ninja\suit\ninja_equipment_actions\ninja_sword_recall.dm" #include "code\modules\antagonists\survivalist\survivalist.dm" +#include "code\modules\antagonists\terror_spiders\_terror_spider.dm" +#include "code\modules\antagonists\terror_spiders\spider_team.dm" +#include "code\modules\antagonists\terror_spiders\terror_spider_actions.dm" +#include "code\modules\antagonists\terror_spiders\terror_spider_objectives.dm" #include "code\modules\antagonists\thief\thief_datum.dm" #include "code\modules\antagonists\thief\thief_kit.dm" #include "code\modules\antagonists\traitor\datum_mindslave.dm" @@ -1715,6 +1863,10 @@ #include "code\modules\antagonists\vampire\vampire_powers\umbrae_powers.dm" #include "code\modules\antagonists\vampire\vampire_powers\vampire_powers.dm" #include "code\modules\antagonists\wishgranter\wishgranter.dm" +#include "code\modules\antagonists\xenomorth\xenomorph.dm" +#include "code\modules\antagonists\xenomorth\xenomorph_actions.dm" +#include "code\modules\antagonists\xenomorth\xenomorph_objectives.dm" +#include "code\modules\antagonists\xenomorth\xenomorph_team.dm" #include "code\modules\arcade\arcade_base.dm" #include "code\modules\arcade\arcade_prize.dm" #include "code\modules\arcade\claw_game.dm" @@ -1743,6 +1895,7 @@ #include "code\modules\asset_cache\assets\asset_cloning.dm" #include "code\modules\asset_cache\assets\asset_common.dm" #include "code\modules\asset_cache\assets\asset_emoji.dm" +#include "code\modules\asset_cache\assets\asset_icon_ref_map.dm" #include "code\modules\asset_cache\assets\asset_id_card.dm" #include "code\modules\asset_cache\assets\asset_jquery.dm" #include "code\modules\asset_cache\assets\asset_lobby.dm" @@ -1757,6 +1910,9 @@ #include "code\modules\asset_cache\assets\asset_seeds.dm" #include "code\modules\asset_cache\assets\asset_strip.dm" #include "code\modules\asset_cache\assets\asset_tgui.dm" +#include "code\modules\asset_cache\assets\common.dm" +#include "code\modules\asset_cache\assets\icon_ref_map.dm" +#include "code\modules\asset_cache\assets\supplypods.dm" #include "code\modules\asset_cache\transports\asset_transport.dm" #include "code\modules\asset_cache\transports\webroot_transport.dm" #include "code\modules\atmospherics\enviromental\LINDA_fire.dm" @@ -1806,6 +1962,7 @@ #include "code\modules\atmospherics\machinery\portable\portable_atmospherics.dm" #include "code\modules\atmospherics\machinery\portable\pump.dm" #include "code\modules\atmospherics\machinery\portable\scrubber.dm" +#include "code\modules\awaymissions\cordon.dm" #include "code\modules\awaymissions\corpse.dm" #include "code\modules\awaymissions\exile.dm" #include "code\modules\awaymissions\gateway.dm" @@ -1853,17 +2010,23 @@ #include "code\modules\buildmode\submodes\boom.dm" #include "code\modules\buildmode\submodes\copy.dm" #include "code\modules\buildmode\submodes\fill.dm" +#include "code\modules\buildmode\submodes\forcemove.dm" #include "code\modules\buildmode\submodes\link.dm" #include "code\modules\buildmode\submodes\mapgen.dm" +#include "code\modules\buildmode\submodes\offer.dm" #include "code\modules\buildmode\submodes\save.dm" +#include "code\modules\buildmode\submodes\say.dm" #include "code\modules\buildmode\submodes\throwing.dm" #include "code\modules\buildmode\submodes\variable_edit.dm" +#include "code\modules\cargo\centcom_podlauncher.dm" +#include "code\modules\cargo\supplypod.dm" #include "code\modules\client\client_defines.dm" #include "code\modules\client\client_procs.dm" #include "code\modules\client\geoip.dm" #include "code\modules\client\message.dm" #include "code\modules\client\ping.dm" #include "code\modules\client\view.dm" +#include "code\modules\client\preference\preference_info.dm" #include "code\modules\client\preference\preferences.dm" #include "code\modules\client\preference\preferences_mysql.dm" #include "code\modules\client\preference\preferences_spawnpoints.dm" @@ -1883,6 +2046,7 @@ #include "code\modules\client\preference\loadout\loadout_racial.dm" #include "code\modules\client\preference\loadout\loadout_shoes.dm" #include "code\modules\client\preference\loadout\loadout_suit.dm" +#include "code\modules\client\preference\loadout\loadout_tgui.dm" #include "code\modules\client\preference\loadout\loadout_uniform.dm" #include "code\modules\clothing\clothing.dm" #include "code\modules\clothing\chameleon\_chameleon_actions.dm" @@ -1985,6 +2149,7 @@ #include "code\modules\economy\Economy_Events_Mundane.dm" #include "code\modules\economy\Economy_TradeDestinations.dm" #include "code\modules\economy\EFTPOS.dm" +#include "code\modules\economy\insurance.dm" #include "code\modules\economy\Job_Departments.dm" #include "code\modules\economy\utils.dm" #include "code\modules\economy\quests\_base_quests.dm" @@ -2037,6 +2202,7 @@ #include "code\modules\events\money_lotto.dm" #include "code\modules\events\money_spam.dm" #include "code\modules\events\ninja.dm" +#include "code\modules\events\plasma_decon.dm" #include "code\modules\events\prison_break.dm" #include "code\modules\events\radiation_storm.dm" #include "code\modules\events\rogue_drones.dm" @@ -2081,6 +2247,7 @@ #include "code\modules\food_and_drinks\food\foods\ethnic.dm" #include "code\modules\food_and_drinks\food\foods\ingredients.dm" #include "code\modules\food_and_drinks\food\foods\junkfood.dm" +#include "code\modules\food_and_drinks\food\foods\lavaland_food.dm" #include "code\modules\food_and_drinks\food\foods\meat.dm" #include "code\modules\food_and_drinks\food\foods\misc.dm" #include "code\modules\food_and_drinks\food\foods\pasta.dm" @@ -2107,18 +2274,24 @@ #include "code\modules\food_and_drinks\kitchen_machinery\oven_new.dm" #include "code\modules\food_and_drinks\kitchen_machinery\processor.dm" #include "code\modules\food_and_drinks\kitchen_machinery\smartfridge.dm" +#include "code\modules\food_and_drinks\kitchen_machinery\tribal_oven.dm" #include "code\modules\food_and_drinks\recipes\recipes_candy.dm" #include "code\modules\food_and_drinks\recipes\recipes_grill.dm" #include "code\modules\food_and_drinks\recipes\recipes_microwave.dm" #include "code\modules\food_and_drinks\recipes\recipes_oven.dm" +#include "code\modules\food_and_drinks\recipes\recipes_tribal.dm" #include "code\modules\food_and_drinks\recipes\tablecraft\recipes_table.dm" #include "code\modules\games\52card.dm" #include "code\modules\games\cards.dm" #include "code\modules\games\tarot.dm" #include "code\modules\games\unum.dm" +#include "code\modules\hallucination\_hallucination.dm" #include "code\modules\holiday\christmas.dm" #include "code\modules\holiday\holiday.dm" #include "code\modules\holiday\new_year.dm" +#include "code\modules\holomaps\datum.dm" +#include "code\modules\holomaps\hud.dm" +#include "code\modules\holomaps\machinery.dm" #include "code\modules\hydroponics\biogenerator.dm" #include "code\modules\hydroponics\fermenting_barrel.dm" #include "code\modules\hydroponics\gene_modder.dm" @@ -2216,6 +2389,12 @@ #include "code\modules\lighting\lighting_setup.dm" #include "code\modules\lighting\lighting_source.dm" #include "code\modules\lighting\lighting_turf.dm" +#include "code\modules\lootpanel\_lootpanel.dm" +#include "code\modules\lootpanel\contents.dm" +#include "code\modules\lootpanel\handlers.dm" +#include "code\modules\lootpanel\misc.dm" +#include "code\modules\lootpanel\search_object.dm" +#include "code\modules\lootpanel\ui.dm" #include "code\modules\map_fluff\celestation.dm" #include "code\modules\map_fluff\cerestation.dm" #include "code\modules\map_fluff\cyberiad.dm" @@ -2289,6 +2468,12 @@ #include "code\modules\mining\ores_coins.dm" #include "code\modules\mining\satchel_ore_boxdm.dm" #include "code\modules\mining\shelters.dm" +#include "code\modules\mining\ash_walkers\ash_rune.dm" +#include "code\modules\mining\ash_walkers\bait.dm" +#include "code\modules\mining\ash_walkers\fish.dm" +#include "code\modules\mining\ash_walkers\lavaland_dye.dm" +#include "code\modules\mining\ash_walkers\misc.dm" +#include "code\modules\mining\ash_walkers\torch_holder.dm" #include "code\modules\mining\equipment\explorer_gear.dm" #include "code\modules\mining\equipment\hardmode_grenade.dm" #include "code\modules\mining\equipment\kinetic_crusher.dm" @@ -2328,6 +2513,7 @@ #include "code\modules\mob\mob_defines.dm" #include "code\modules\mob\mob_emote.dm" #include "code\modules\mob\mob_helpers.dm" +#include "code\modules\mob\mob_lists.dm" #include "code\modules\mob\mob_movement.dm" #include "code\modules\mob\mob_say.dm" #include "code\modules\mob\mob_transformation_simple.dm" @@ -2346,6 +2532,7 @@ #include "code\modules\mob\dead\observer\observer_say.dm" #include "code\modules\mob\dead\observer\orbit.dm" #include "code\modules\mob\dead\observer\spells.dm" +#include "code\modules\mob\living\alpha.dm" #include "code\modules\mob\living\autohiss.dm" #include "code\modules\mob\living\damage_procs.dm" #include "code\modules\mob\living\death.dm" @@ -2424,6 +2611,7 @@ #include "code\modules\mob\living\carbon\human\examine.dm" #include "code\modules\mob\living\carbon\human\human.dm" #include "code\modules\mob\living\carbon\human\human_damage.dm" +#include "code\modules\mob\living\carbon\human\human_deadchat_control.dm" #include "code\modules\mob\living\carbon\human\human_defense.dm" #include "code\modules\mob\living\carbon\human\human_defines.dm" #include "code\modules\mob\living\carbon\human\human_emote.dm" @@ -2582,6 +2770,8 @@ #include "code\modules\mob\living\simple_animal\friendly\snake.dm" #include "code\modules\mob\living\simple_animal\friendly\snake_stripping.dm" #include "code\modules\mob\living\simple_animal\friendly\spiderbot.dm" +#include "code\modules\mob\living\simple_animal\gondolas\gondola.dm" +#include "code\modules\mob\living\simple_animal\gondolas\gondolapod.dm" #include "code\modules\mob\living\simple_animal\hostile\alien.dm" #include "code\modules\mob\living\simple_animal\hostile\bat.dm" #include "code\modules\mob\living\simple_animal\hostile\bear.dm" @@ -2651,7 +2841,6 @@ #include "code\modules\mob\living\simple_animal\hostile\retaliate\pet.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\undead.dm" -#include "code\modules\mob\living\simple_animal\hostile\terror_spiders\__defines.dm" #include "code\modules\mob\living\simple_animal\hostile\terror_spiders\abillities.dm" #include "code\modules\mob\living\simple_animal\hostile\terror_spiders\actions.dm" #include "code\modules\mob\living\simple_animal\hostile\terror_spiders\builder.dm" @@ -2727,7 +2916,8 @@ #include "code\modules\mob\new_player\sprite_accessories\vulpkanin\vulpkanin_head_accessories.dm" #include "code\modules\mob\new_player\sprite_accessories\vulpkanin\vulpkanin_head_markings.dm" #include "code\modules\mob\new_player\sprite_accessories\vulpkanin\vulpkanin_tail_markings.dm" -#include "code\modules\mob\new_player\sprite_accessories\wryn\wryn_face.dm" +#include "code\modules\mob\new_player\sprite_accessories\wryn\wryn_facial_hair.dm" +#include "code\modules\mob\new_player\sprite_accessories\wryn\wryn_hair.dm" #include "code\modules\movespeed\_movespeed_modifier.dm" #include "code\modules\movespeed\modifiers\components.dm" #include "code\modules\movespeed\modifiers\innate.dm" @@ -2737,7 +2927,6 @@ #include "code\modules\movespeed\modifiers\reagent.dm" #include "code\modules\movespeed\modifiers\status_effects.dm" #include "code\modules\newscaster\datums.dm" -#include "code\modules\newscaster\defines.dm" #include "code\modules\newscaster\obj\newscaster.dm" #include "code\modules\newscaster\obj\newspaper.dm" #include "code\modules\paperwork\carbonpaper.dm" @@ -2757,10 +2946,14 @@ #include "code\modules\paperwork\papershredder.dm" #include "code\modules\paperwork\pen.dm" #include "code\modules\paperwork\photocopier.dm" -#include "code\modules\paperwork\photography.dm" -#include "code\modules\paperwork\silicon_photography.dm" #include "code\modules\paperwork\stamps.dm" #include "code\modules\paperwork\ticketmachine.dm" +#include "code\modules\paperwork\photography\camera.dm" +#include "code\modules\paperwork\photography\camera_image_capturing.dm" +#include "code\modules\paperwork\photography\other.dm" +#include "code\modules\paperwork\photography\photo.dm" +#include "code\modules\paperwork\photography\silicon_camera.dm" +#include "code\modules\paperwork\photography\video_camera.dm" #include "code\modules\pda\ai.dm" #include "code\modules\pda\app.dm" #include "code\modules\pda\cart.dm" @@ -2773,6 +2966,8 @@ #include "code\modules\pda\pda_tgui.dm" #include "code\modules\pda\pdas.dm" #include "code\modules\pda\radio.dm" +#include "code\modules\pda\request_consoles_app.dm" +#include "code\modules\pda\request_consoles_cart.dm" #include "code\modules\pda\utilities.dm" #include "code\modules\persistence\persistence.dm" #include "code\modules\point\point.dm" @@ -2820,6 +3015,7 @@ #include "code\modules\procedural_mapping\mapGeneratorModules\helpers.dm" #include "code\modules\procedural_mapping\mapGeneratorModules\nature.dm" #include "code\modules\procedural_mapping\mapGenerators\asteroid.dm" +#include "code\modules\procedural_mapping\mapGenerators\cult.dm" #include "code\modules\procedural_mapping\mapGenerators\nature.dm" #include "code\modules\procedural_mapping\mapGenerators\syndicate.dm" #include "code\modules\projectiles\ammunition.dm" @@ -2872,6 +3068,7 @@ #include "code\modules\projectiles\projectile\force.dm" #include "code\modules\projectiles\projectile\magic.dm" #include "code\modules\projectiles\projectile\reusable.dm" +#include "code\modules\projectiles\projectile\shrapnel.dm" #include "code\modules\projectiles\projectile\special.dm" #include "code\modules\projectiles\sibyl\sibyl_system_mod.dm" #include "code\modules\projectiles\sibyl\sibyl_weapons.dm" @@ -2890,7 +3087,6 @@ #include "code\modules\reagents\chemistry\machinery\reagentgrinder.dm" #include "code\modules\reagents\chemistry\reagents\admin.dm" #include "code\modules\reagents\chemistry\reagents\alcohol.dm" -#include "code\modules\reagents\chemistry\reagents\blob.dm" #include "code\modules\reagents\chemistry\reagents\disease.dm" #include "code\modules\reagents\chemistry\reagents\drink_base.dm" #include "code\modules\reagents\chemistry\reagents\drink_cold.dm" @@ -3007,6 +3203,7 @@ #include "code\modules\space_management\multiz_helper.dm" #include "code\modules\space_management\space_chunk.dm" #include "code\modules\space_management\space_level.dm" +#include "code\modules\space_management\space_reservation.dm" #include "code\modules\space_management\space_transition.dm" #include "code\modules\space_management\zlevel_manager.dm" #include "code\modules\spacepods\construction.dm" @@ -3076,6 +3273,7 @@ #include "code\modules\surgery\organs\robolimbs.dm" #include "code\modules\surgery\organs\skeleton.dm" #include "code\modules\surgery\organs\vocal_cords.dm" +#include "code\modules\surgery\organs\voice_translator.dm" #include "code\modules\surgery\organs\subtypes\abductor.dm" #include "code\modules\surgery\organs\subtypes\diona.dm" #include "code\modules\surgery\organs\subtypes\drask.dm" @@ -3128,6 +3326,7 @@ #include "code\modules\tgui\plugins\login.dm" #include "code\modules\tgui\plugins\modal.dm" #include "code\modules\tgui\states\admin.dm" +#include "code\modules\tgui\states\admin_mod.dm" #include "code\modules\tgui\states\always.dm" #include "code\modules\tgui\states\conscious.dm" #include "code\modules\tgui\states\contained.dm" @@ -3140,13 +3339,17 @@ #include "code\modules\tgui\states\notcontained.dm" #include "code\modules\tgui\states\observer.dm" #include "code\modules\tgui\states\physical.dm" +#include "code\modules\tgui\states\range.dm" #include "code\modules\tgui\states\self.dm" #include "code\modules\tgui\states\strippable_state.dm" #include "code\modules\tgui\states\zlevel.dm" #include "code\modules\tgui\tgui_input\alert_input.dm" +#include "code\modules\tgui\tgui_input\color_input.dm" +#include "code\modules\tgui\tgui_input\input_checkbox.dm" #include "code\modules\tgui\tgui_input\keycombo_input.dm" #include "code\modules\tgui\tgui_input\list_input.dm" #include "code\modules\tgui\tgui_input\number_input.dm" +#include "code\modules\tgui\tgui_input\ranked_list_input.dm" #include "code\modules\tgui\tgui_input\text_input.dm" #include "code\modules\tgui\tgui_panel\audio.dm" #include "code\modules\tgui\tgui_panel\telemetry.dm" diff --git a/sound/ambience/antag/bloodcult_eyes.ogg b/sound/ambience/antag/bloodcult_eyes.ogg new file mode 100644 index 000000000000..38c223b1ad85 Binary files /dev/null and b/sound/ambience/antag/bloodcult_eyes.ogg differ diff --git a/sound/ambience/antag/bloodcult_halos.ogg b/sound/ambience/antag/bloodcult_halos.ogg new file mode 100644 index 000000000000..bd22934fd301 Binary files /dev/null and b/sound/ambience/antag/bloodcult_halos.ogg differ diff --git a/sound/ambience/antag/bloodcult_scribe.ogg b/sound/ambience/antag/bloodcult_scribe.ogg new file mode 100644 index 000000000000..a01ef30a1d48 Binary files /dev/null and b/sound/ambience/antag/bloodcult_scribe.ogg differ diff --git a/sound/ambience/antag/revolutionary_tide.ogg b/sound/ambience/antag/revolutionary_tide.ogg new file mode 100644 index 000000000000..be8e4a749855 Binary files /dev/null and b/sound/ambience/antag/revolutionary_tide.ogg differ diff --git a/sound/effects/holomap_close.ogg b/sound/effects/holomap_close.ogg new file mode 100644 index 000000000000..0b28da960798 Binary files /dev/null and b/sound/effects/holomap_close.ogg differ diff --git a/sound/effects/holomap_open.ogg b/sound/effects/holomap_open.ogg new file mode 100644 index 000000000000..7b2e8f9a995d Binary files /dev/null and b/sound/effects/holomap_open.ogg differ diff --git a/sound/effects/podwoosh.ogg b/sound/effects/podwoosh.ogg new file mode 100644 index 000000000000..6edcba627378 Binary files /dev/null and b/sound/effects/podwoosh.ogg differ diff --git a/sound/effects/vending_hit.ogg b/sound/effects/vending_hit.ogg new file mode 100644 index 000000000000..a9438c26a7db Binary files /dev/null and b/sound/effects/vending_hit.ogg differ diff --git a/sound/items/GSBussy.ogg b/sound/items/GSBussy.ogg new file mode 100644 index 000000000000..374a027a2995 Binary files /dev/null and b/sound/items/GSBussy.ogg differ diff --git a/sound/machines/generator/generator_end.ogg b/sound/machines/generator/generator_end.ogg new file mode 100644 index 000000000000..2b2c97ee744a Binary files /dev/null and b/sound/machines/generator/generator_end.ogg differ diff --git a/sound/machines/generator/generator_mid1.ogg b/sound/machines/generator/generator_mid1.ogg new file mode 100644 index 000000000000..332b5af9a0ef Binary files /dev/null and b/sound/machines/generator/generator_mid1.ogg differ diff --git a/sound/machines/generator/generator_mid2.ogg b/sound/machines/generator/generator_mid2.ogg new file mode 100644 index 000000000000..d71c7b2ae0af Binary files /dev/null and b/sound/machines/generator/generator_mid2.ogg differ diff --git a/sound/machines/generator/generator_mid3.ogg b/sound/machines/generator/generator_mid3.ogg new file mode 100644 index 000000000000..7ee161824d02 Binary files /dev/null and b/sound/machines/generator/generator_mid3.ogg differ diff --git a/sound/machines/generator/generator_start.ogg b/sound/machines/generator/generator_start.ogg new file mode 100644 index 000000000000..a9087bd3a7a8 Binary files /dev/null and b/sound/machines/generator/generator_start.ogg differ diff --git a/sound/objects/fishing_rod_catch.ogg b/sound/objects/fishing_rod_catch.ogg new file mode 100644 index 000000000000..1da26e97a864 Binary files /dev/null and b/sound/objects/fishing_rod_catch.ogg differ diff --git a/sound/objects/fishing_rod_throw.ogg b/sound/objects/fishing_rod_throw.ogg new file mode 100644 index 000000000000..18ae0d954279 Binary files /dev/null and b/sound/objects/fishing_rod_throw.ogg differ diff --git a/sound/rituals/ritual_fail1.ogg b/sound/rituals/ritual_fail1.ogg new file mode 100644 index 000000000000..c59b38f02a1a Binary files /dev/null and b/sound/rituals/ritual_fail1.ogg differ diff --git a/sound/rituals/ritual_fail2.ogg b/sound/rituals/ritual_fail2.ogg new file mode 100644 index 000000000000..ebb7fcf8a421 Binary files /dev/null and b/sound/rituals/ritual_fail2.ogg differ diff --git a/sound/rituals/ritual_start1.ogg b/sound/rituals/ritual_start1.ogg new file mode 100644 index 000000000000..ec6a5eee356d Binary files /dev/null and b/sound/rituals/ritual_start1.ogg differ diff --git a/sound/rituals/ritual_start2.ogg b/sound/rituals/ritual_start2.ogg new file mode 100644 index 000000000000..fa2e1ba29523 Binary files /dev/null and b/sound/rituals/ritual_start2.ogg differ diff --git a/sound/rituals/ritual_start3.ogg b/sound/rituals/ritual_start3.ogg new file mode 100644 index 000000000000..d7d9b21f525e Binary files /dev/null and b/sound/rituals/ritual_start3.ogg differ diff --git a/sound/rituals/ritual_success1.ogg b/sound/rituals/ritual_success1.ogg new file mode 100644 index 000000000000..aa6e1386f275 Binary files /dev/null and b/sound/rituals/ritual_success1.ogg differ diff --git a/sound/rituals/ritual_success2.ogg b/sound/rituals/ritual_success2.ogg new file mode 100644 index 000000000000..e5428f68dfae Binary files /dev/null and b/sound/rituals/ritual_success2.ogg differ diff --git a/sound/weapons/bows/arrow_insert1.ogg b/sound/weapons/bows/arrow_insert1.ogg new file mode 100644 index 000000000000..1b6fa858e050 Binary files /dev/null and b/sound/weapons/bows/arrow_insert1.ogg differ diff --git a/sound/weapons/bows/arrow_insert2.ogg b/sound/weapons/bows/arrow_insert2.ogg new file mode 100644 index 000000000000..ab0c6cc39f7c Binary files /dev/null and b/sound/weapons/bows/arrow_insert2.ogg differ diff --git a/sound/weapons/bows/arrow_remove1.ogg b/sound/weapons/bows/arrow_remove1.ogg new file mode 100644 index 000000000000..b890ad4520c3 Binary files /dev/null and b/sound/weapons/bows/arrow_remove1.ogg differ diff --git a/sound/weapons/bows/arrow_remove2.ogg b/sound/weapons/bows/arrow_remove2.ogg new file mode 100644 index 000000000000..acb31e2bffa5 Binary files /dev/null and b/sound/weapons/bows/arrow_remove2.ogg differ diff --git a/sound/weapons/bows/bonebow_drop.ogg b/sound/weapons/bows/bonebow_drop.ogg new file mode 100644 index 000000000000..572834657262 Binary files /dev/null and b/sound/weapons/bows/bonebow_drop.ogg differ diff --git a/sound/weapons/bows/bonebow_fire.ogg b/sound/weapons/bows/bonebow_fire.ogg new file mode 100644 index 000000000000..27f062ecd8b2 Binary files /dev/null and b/sound/weapons/bows/bonebow_fire.ogg differ diff --git a/sound/weapons/bows/bonebow_pull.ogg b/sound/weapons/bows/bonebow_pull.ogg new file mode 100644 index 000000000000..a5c95f6ffd2a Binary files /dev/null and b/sound/weapons/bows/bonebow_pull.ogg differ diff --git a/sound/weapons/bows/bow_drop.ogg b/sound/weapons/bows/bow_drop.ogg new file mode 100644 index 000000000000..d5aa6f40d161 Binary files /dev/null and b/sound/weapons/bows/bow_drop.ogg differ diff --git a/sound/weapons/bows/bow_equip.ogg b/sound/weapons/bows/bow_equip.ogg new file mode 100644 index 000000000000..d60780b7acb3 Binary files /dev/null and b/sound/weapons/bows/bow_equip.ogg differ diff --git a/sound/weapons/bows/bow_fire.ogg b/sound/weapons/bows/bow_fire.ogg new file mode 100644 index 000000000000..c2ee947b6c7b Binary files /dev/null and b/sound/weapons/bows/bow_fire.ogg differ diff --git a/sound/weapons/bows/bow_pickup.ogg b/sound/weapons/bows/bow_pickup.ogg new file mode 100644 index 000000000000..aa957a0876f6 Binary files /dev/null and b/sound/weapons/bows/bow_pickup.ogg differ diff --git a/sound/weapons/bows/bow_pull.ogg b/sound/weapons/bows/bow_pull.ogg new file mode 100644 index 000000000000..c8f4fbba936c Binary files /dev/null and b/sound/weapons/bows/bow_pull.ogg differ diff --git a/sound/weapons/gunshots/lasergatling.ogg b/sound/weapons/gunshots/lasergatling.ogg new file mode 100644 index 000000000000..02504bf94eca Binary files /dev/null and b/sound/weapons/gunshots/lasergatling.ogg differ diff --git a/sound/weapons/kolotushka_smash.ogg b/sound/weapons/kolotushka_smash.ogg new file mode 100644 index 000000000000..43ba6e50b547 Binary files /dev/null and b/sound/weapons/kolotushka_smash.ogg differ diff --git a/sound/weapons/mortar_long_whistle.ogg b/sound/weapons/mortar_long_whistle.ogg new file mode 100644 index 000000000000..646d37d8ab62 Binary files /dev/null and b/sound/weapons/mortar_long_whistle.ogg differ diff --git a/sound/weapons/mortar_whistle.ogg b/sound/weapons/mortar_whistle.ogg new file mode 100644 index 000000000000..2d7e19d85da0 Binary files /dev/null and b/sound/weapons/mortar_whistle.ogg differ diff --git a/strings/ambition_objectives_command.json b/strings/ambition_objectives_command.json index 5e9d6afba2ad..c484cfd371a9 100644 --- a/strings/ambition_objectives_command.json +++ b/strings/ambition_objectives_command.json @@ -6,7 +6,7 @@ "На станции определенно не хватает клоунов.", "На станции определенно не хватает мимов.", "На станции определенно не хватает уборщиков.", - "Нужно с ЦК запросить еще одного священника на станцию. А то похоже первый не справляется.", + "Нужно с ЦК запросить ещё одного священника на станцию. А то похоже первый не справляется.", "Всё ли я делаю правильно? Я думаю нужно всегда с собой таскать НТРа и спрашивать его советов, да совещаться с ним. Даже если ему это не нравится. В конце концов, это его работа!", "Как же надоели эти мыши на мостике, в аплоаде и моем кабинете. Где эти мышеловки? Нужно побольше их заказать...", "Какой же не экологичный мостик. Ему не хватает цветов. Нужно запросить парочку у ботаников.", @@ -183,4 +183,4 @@ "Другие работники станции едва ли понимают, чем мы занимаемся - мне нужно провести экскурсию всем желающим по моему отделу.", "Кажется нужно найти себе помощника и сбагрить на него всю бумажную работу." ] -} +} \ No newline at end of file diff --git a/strings/ambition_objectives_engineering.json b/strings/ambition_objectives_engineering.json index 8bf1f2038ae2..6d9690a228cd 100644 --- a/strings/ambition_objectives_engineering.json +++ b/strings/ambition_objectives_engineering.json @@ -59,4 +59,4 @@ "Нужен стажер, которому я бы смог показать как всё работает.", "Мне нужен помощник, который будет делать для меня всё, а я стоять с важным видом." ] -} +} \ No newline at end of file diff --git a/strings/ambition_objectives_generic.json b/strings/ambition_objectives_generic.json index d7e3d45f3e4c..000c5bc7406f 100644 --- a/strings/ambition_objectives_generic.json +++ b/strings/ambition_objectives_generic.json @@ -119,7 +119,7 @@ "На мне мало шерсти.", "На мне мало волос.", "А ведь я мог стать космонавтом... Правильным космонавтом...", - "И почему я не стал пилотом? Хотел же бороздить просторы... Может еще не поздно?", + "И почему я не стал пилотом? Хотел же бороздить просторы... Может ещё не поздно?", "Пора покутить и завести интрижки!", "Надоело всё... Хочу кутить!", "А ведь сегодня [random_holiday]! Нужно отпраздновать его как следует!", @@ -132,7 +132,7 @@ "Наконец-то наступил [random_holiday]!", "Сегодня мой любимый [random_holiday], нужно отметить его как следует!", "Наконец-то наступил [random_holiday], нужно отметить его как следует!", - "Я чувствую себя еще тем интриганом. Может получится кого-то поссорить?", + "Я чувствую себя ещё тем интриганом. Может получится кого-то поссорить?", "Да я интриган сегодня. Пора устроить пару интрижек...", "Интриги - моё второе я!", "Сегодня я - интриган.", diff --git a/strings/ambition_objectives_supply.json b/strings/ambition_objectives_supply.json index 6627d5d8654a..d13122d330be 100644 --- a/strings/ambition_objectives_supply.json +++ b/strings/ambition_objectives_supply.json @@ -62,4 +62,4 @@ "Нужен стажер, которому я бы смог показать как всё работает.", "Мне нужен помощник, который будет делать для меня всё, а я стоять с важным видом." ] -} +} \ No newline at end of file diff --git a/strings/lobby_phrases.txt b/strings/lobby_phrases.txt index 4720fd3eaf90..78e45344a2db 100644 --- a/strings/lobby_phrases.txt +++ b/strings/lobby_phrases.txt @@ -1,8 +1,24 @@ -Да это прямо как в книге Д. Оруэлла! +Да это прямо как в книге Дж. Оруэлла! Добро пожаловать в день сурка! Смешная надпись. Также известно как SunSpace. -ХОНК. -Также попробуйте майнкрафт. -КМ никогда не будет главой! +ХОНК! +Также попробуйте Майнкрафт! +Также попробуйте Террарию! +КМ всегда был главой! Как менять руки? +2 + 2 = 5 +Барбера никогда не существовало. +Сколько я показываю пальцев? +ОНИ следят. Всегда. +Не будьте токсичными! +Удачи и постарайтесь не сдохнуть. +Выживает сильнейший. +Мы все пришли сюда веселиться! +Большой Брат следит за тобой. +Насилие - это не выход. +Выпрями спину! +Не забывайте пить много воды! +Проветривай комнату! +Гулять на свежем воздухе полезно! +Администратор - твой друг. diff --git a/strings/sillytips.txt b/strings/sillytips.txt index ed06ae29b521..978d5aba1645 100644 --- a/strings/sillytips.txt +++ b/strings/sillytips.txt @@ -2,7 +2,7 @@ Чтобы победить демона резни, стреляйте в него, пока он не умрет. Иногда вам не удастся избежать смерти, независимо от того, насколько хорошо вы владеете игрой. Постарайтесь не слишком сильно переживать по этому поводу. Когда раунд заканчивается, почти все, что в нем было, теряется навсегда, оставьте свою желчь вместе с ним. -Как и в реальной жизни, энтропия в игре может увеличиться со временем. Если вокруг вас всё еще не царит хаос, то просто подождите. +Как и в реальной жизни, энтропия в игре может увеличиться со временем. Если вокруг вас всё ещё не царит хаос, то просто подождите. Выполнение поставленных задач - это хорошая практика, но лучшие антагонисты будут стремиться сделать больше, чем минимум, чтобы произвести впечатление. Чем более непонятной и малоиспользуемой является игровая механика, тем меньше вероятность того, что ваши жертвы смогут с ней справиться. Космос холоден, и он быстро заморозит вас до смерти, если вы не защитите себя. На самом деле термодинамика так не работает, но просто согласитесь с этим. @@ -13,13 +13,13 @@ Cleanbot. Ваш спрайт представляет ваш хитбокс, так что афро делает вас более легким для убийства. На какие жертвы мы идем ради стиля. Иногда админы просто делают что-то. Смиритесь с этим. Ремейк никогда не выйдет. -Множество вещей, которые традиционно не считаются оружием, все еще могут быть использованы для медленной жестокой смерти, проявите изобретательность! +Множество вещей, которые традиционно не считаются оружием, все ещё могут быть использованы для медленной жестокой смерти, проявите изобретательность! СМЕРТЬ НЕМИНУЕМА! Эта игра старше, чем большинство людей, играющих в нее. Флешки могут ослабить тайлы Блоба, позволяя вам и экипажу легко уничтожить его. Некоторые люди не могут читать текст в игре, половина которой основана на тексте. Существует множество способов пройти через пластиковые заслонки. Сколько из них вы можете назвать? -Нанотрейзен всегда бдит. +НаноТрейзен всегда бдит. Большинство предметов имеют названия длиннее, чем 'мыло'. Проси и получишь. Будучи ученым, если напиться до беспамятства, это ускорит исследования. Skol! diff --git a/strings/tips.txt b/strings/tips.txt index f2ab4d128ab2..2a10a88ef97c 100644 --- a/strings/tips.txt +++ b/strings/tips.txt @@ -3,7 +3,7 @@ Чтобы взломать сейф в хранилище, используйте стетоскоп или термобур. Вы можете забраться на стол, перетащив себя на него. Это занимает некоторое время. Если щелкнуть по столу, на который забрался кто-то другой, то он упадет. Вы можете перетащить игрока на себя, чтобы открыть меню экипировки, позволяющее снять их снаряжение или заставить их надеть что-то. Обратите внимание, что экзокостюмы или шлемы будут блокировать доступ к одежде под ними, и что некоторые предметы снимаются или надеваются дольше, чем другие. -Если щелкнуть по стеклянной двери, а не 'натолкнуться' на нее, то она останется открытой. Вы можете щелкнуть по ней еще раз, чтобы закрыть ее. +Если щелкнуть по стеклянной двери, а не 'натолкнуться' на нее, то она останется открытой. Вы можете щелкнуть по ней ещё раз, чтобы закрыть ее. Вы можете распылять огнетушитель, бросать предметы или стрелять из пистолета, паря в пространстве, чтобы изменить направление движения. Просто стреляйте в направлении, противоположном тому, куда вы хотите попасть. Вы можете изменить схему управления, нажав клавишу Tab. В одном случае для передвижения используется WASD, а в другом - клавиши со стрелками. Имейте в виду, что горячие клавиши также изменяются при этом. Огнеупорные костюмы и зимние куртки обеспечивают легкую защиту от холода, позволяя вам проводить больше времени вблизи брешей и в космосе, чем если бы вы вообще ничего не носили. @@ -38,7 +38,7 @@ Будучи медиком, вы должны нацелиться на нужную конечность в 'Help' интенте (зелёный), когда пытаетесь сделать кому-то операцию. Будучи медиком, вы знаете, что трупы с описанием "...and their soul has departed" больше не имеют прикрепленного игрока и не могут быть оживлены или клонированы сейчас, но могут быть клонированы позже, если игрок вернется в тело. Будучи медиком, вы знаете, что лечение плазмаменов не является невозможным! Сальбутамол не дает им задохнуться, а душ не дает им сгореть заживо. Вы даже можете делать им операции, проводя процедуру на раскладываемой каталке под душем. -Будучи химиком, вы знаете, что существуют десятки химических веществ, которые могут исцелять, и еще больше тех, которые могут причинить вред. Экспериментируйте! +Будучи химиком, вы знаете, что существуют десятки химических веществ, которые могут исцелять, и ещё больше тех, которые могут причинить вред. Экспериментируйте! Будучи химиком, вы знаете, что некоторые химические вещества могут быть синтезированы только путем нагревания содержимого с помощью химического нагревателя или вручную с помощью зажигалок и подобных инструментов. Будучи химиком, вы должны будете снабжать экипаж определенными химикатами. Например, криоксадоном и маннитолом для крио, нестабильным мутагеном и селитрой для ботаники, медикаментами и пластырями для медиков. Будучи химиком, вы знаете, что вода и калий (потассиум), смешанные вместе, создают взрыв, мощность которого зависит от количества использованного вещества. Не делайте этого. @@ -99,7 +99,7 @@ Будучи главой персонала, вы являетесь такой же большой мишенью, как и капитан, из-за потенциальной власти, которую может раздать ваша ID карта и компьютер. Будучи мимом, вы знаете, что ваша сила невидимой стены блокирует как людей, так и снаряды. Вы можете использовать ее, чтобы задержать преследователя. Будучи мимом, вы знаете, что ваша клятва молчания - источник вашей силы. Нарушение клятвы лишает вас силы и чести. -Будучи клоуном, если вы потеряете банановую кожуру, вы все еще сможете поскользуть игрока на своем ПДА! Хонк! +Будучи клоуном, если вы потеряете банановую кожуру, вы все ещё сможете поскользуть игрока на своем ПДА! Хонк! Будучи клоуном, вы знаете, что ваш Грааль - минерал бананиум, который можно отдать Робототехнику, чтобы он построил вам веселый и прочный мех, любимый всеми. Будучи клоуном, вы можете использовать свою печать на листе картона в качестве первого шага к созданию хонкбота. Веселье для всего экипажа! Будучи клоуном, приправьте свои трюки! Никто не любит пони с одним фокусом. @@ -114,7 +114,7 @@ Будучи поваром, вы можете переименовывать свои блюда, сделанные на заказ, с помощью ручки. Будучи поваром, если у вас мало ингредиентов, подумайте о том, чтобы приготовить что-то на несколько порций, чтобы этого хватило надолго членам экипажа. Будучи барменом, вы можете использовать циркулярную пилу на свой дробовик, чтобы обрезать его и облегчить хранение. -Будучи уборщиком, если кто-то украдет вашу тележку, вы можете вместо нее использовать спейсклинер для очистки пространства, гранаты, распылитель воды, или заказать еще один в Карго. +Будучи уборщиком, если кто-то украдет вашу тележку, вы можете вместо нее использовать спейсклинер для очистки пространства, гранаты, распылитель воды, или заказать ещё один в Карго. Будучи уборщиком, вы можете использовать мышеловки для создания бомб или контейнеров-ловушек. Будучи библиотекарем, следите за тем, чтобы полки были заполнены, а библиотека была чистой. Будучи карго техником, вы можете взломать MULEbots, чтобы сделать их быстрее, дать возможность переезжать людей и даже позволить вам оседлать их! @@ -122,7 +122,7 @@ Будучи карго техником, вы можете заработать больше очков карго, отправляя ящики из технических помещений, листы плазмы, редкие семена из гидропоники, диски технологий из РнД и многое другое! Будучи шахтёром, вы знаете, что в северной части Лаваленда гораздо больше редких минералов, чем в южной, но она гораздо опаснее. Будучи шахтером, всегда имейте при себе GPS, чтобы товарищ шахтер или киборг мог прийти на помощь в случае вашей гибели. -Будучи предателем, вы знаете, что криптографический секвенсор (emag) может открывать не только двери, но и шкафчики, ящики, APC и многое другое. Он может взламывать киборгов и даже заставлять ботов сходить с ума. Используйте его на нужных машинах, и вы даже сможете заказать еще больше снаряжения предателей, или связаться с Синдикатом. Экспериментируйте! +Будучи предателем, вы знаете, что криптографический секвенсор (emag) может открывать не только двери, но и шкафчики, ящики, APC и многое другое. Он может взламывать киборгов и даже заставлять ботов сходить с ума. Используйте его на нужных машинах, и вы даже сможете заказать ещё больше снаряжения предателей, или связаться с Синдикатом. Экспериментируйте! Будучи предателем, подмяв под себя ИИ, вы можете сделать его чрезвычайно могущественным союзником. Однако будьте осторожны с формулировками законов, которые вы ему даете, так как он может использовать ваши плохо написанные законы против вас! Будучи предателем, вы знаете, что капитан и главой службы безопасности - две самые трудноубиваемые цели на станции. Если любой из них является вашей целью, тщательно планируйте. Будучи предателем, вы можете производить и перерабатывать револьверные пули на взломанном автолате, что делает револьвер чрезвычайно мощным инструментом. diff --git a/tgui/docs/component-reference.md b/tgui/docs/component-reference.md index af744b617937..c02ec546d688 100644 --- a/tgui/docs/component-reference.md +++ b/tgui/docs/component-reference.md @@ -31,6 +31,7 @@ Make sure to add new items to this list if you document new components. - [`Icon.Stack`](#iconstack) - [`ImageButton`](#imagebutton) - [`ImageButton.Item`](#imagebuttonitem) + - [`ImageButtonTS`](#imagebuttonts) - [`Input`](#input) - [`Knob`](#knob) - [`LabeledControls`](#labeledcontrols) @@ -70,16 +71,16 @@ Event handlers are callbacks that you can attack to various element to listen for browser events. Inferno supports camelcase (`onClick`) and lowercase (`onclick`) event names. -- Camel case names are what's called *synthetic* events, and are the -**preferred way** of handling events in React, for efficiency and -performance reasons. Please read -[Inferno Event Handling](https://infernojs.org/docs/guides/event-handling) -to understand what this is about. +- Camel case names are what's called _synthetic_ events, and are the + **preferred way** of handling events in React, for efficiency and + performance reasons. Please read + [Inferno Event Handling](https://infernojs.org/docs/guides/event-handling) + to understand what this is about. - Lower case names are native browser events and should be used sparingly, -for example when you need an explicit IE8 support. **DO NOT** use -lowercase event handlers unless you really know what you are doing. + for example when you need an explicit IE8 support. **DO NOT** use + lowercase event handlers unless you really know what you are doing. - [Button](#button) component does not support the lowercase `onclick` event. -Use the camel case `onClick` instead. + Use the camel case `onClick` instead. ## `tgui/components` @@ -91,13 +92,13 @@ This component provides animations for numeric values. - `value: number` - Value to animate. - `initial: number` - Initial value to use in animation when element -first appears. If you set initial to `0` for example, number will always -animate starting from `0`, and if omitted, it will not play an initial -animation. + first appears. If you set initial to `0` for example, number will always + animate starting from `0`, and if omitted, it will not play an initial + animation. - `format: value => value` - Output formatter. - Example: `value => Math.round(value)`. - `children: (formattedValue, rawValue) => any` - Pull the animated number to -animate more complex things deeper in the DOM tree. + animate more complex things deeper in the DOM tree. - Example: `(_, value) => ` ### `BlockQuote` @@ -133,9 +134,7 @@ To workaround this problem, the Box children accept a render props function. This way, `Button` can pull out the `className` generated by the `Box`. ```jsx - - {props => + ``` @@ -407,17 +402,17 @@ effectively places the last flex item to the very end of the flex container. - See inherited props: [Box](#box) - ~~`spacing: number`~~ - **Removed in tgui 4.3**, -use [Stack](#stack) instead. + use [Stack](#stack) instead. - `inline: boolean` - Makes flexbox container inline, with similar behavior -to an `inline` property on a `Box`. + to an `inline` property on a `Box`. - `direction: string` - This establishes the main-axis, thus defining the -direction flex items are placed in the flex container. + direction flex items are placed in the flex container. - `row` (default) - left to right. - `row-reverse` - right to left. - `column` - top to bottom. - `column-reverse` - bottom to top. - `wrap: string` - By default, flex items will all try to fit onto one line. -You can change that and allow the items to wrap as needed with this property. + You can change that and allow the items to wrap as needed with this property. - `nowrap` (default) - all flex items will be on one line - `wrap` - flex items will wrap onto multiple lines, from top to bottom. - `wrap-reverse` - flex items will wrap onto multiple lines from bottom to top. @@ -428,22 +423,22 @@ You can change that and allow the items to wrap as needed with this property. - `center` - items are centered on the cross axis. - `baseline` - items are aligned such as their baselines align. - `justify: string` - This defines the alignment along the main axis. -It helps distribute extra free space leftover when either all the flex -items on a line are inflexible, or are flexible but have reached their -maximum size. It also exerts some control over the alignment of items -when they overflow the line. + It helps distribute extra free space leftover when either all the flex + items on a line are inflexible, or are flexible but have reached their + maximum size. It also exerts some control over the alignment of items + when they overflow the line. - `flex-start` (default) - items are packed toward the start of the - flex-direction. + flex-direction. - `flex-end` - items are packed toward the end of the flex-direction. - `space-between` - items are evenly distributed in the line; first item is - on the start line, last item on the end line + on the start line, last item on the end line - `space-around` - items are evenly distributed in the line with equal space - around them. Note that visually the spaces aren't equal, since all the items - have equal space on both sides. The first item will have one unit of space - against the container edge, but two units of space between the next item - because that next item has its own spacing that applies. + around them. Note that visually the spaces aren't equal, since all the items + have equal space on both sides. The first item will have one unit of space + against the container edge, but two units of space between the next item + because that next item has its own spacing that applies. - `space-evenly` - items are distributed so that the spacing between any two - items (and the space to the edges) is equal. + items (and the space to the edges) is equal. - TBD (not all properties are supported in IE11). ### `Flex.Item` @@ -452,24 +447,24 @@ when they overflow the line. - See inherited props: [Box](#box) - `order: number` - By default, flex items are laid out in the source order. -However, the order property controls the order in which they appear in the -flex container. + However, the order property controls the order in which they appear in the + flex container. - `grow: number | boolean` - This defines the ability for a flex item to grow -if necessary. It accepts a unitless value that serves as a proportion. It -dictates what amount of the available space inside the flex container the -item should take up. This number is unit-less and is relative to other -siblings. + if necessary. It accepts a unitless value that serves as a proportion. It + dictates what amount of the available space inside the flex container the + item should take up. This number is unit-less and is relative to other + siblings. - `shrink: number | boolean` - This defines the ability for a flex item to -shrink if necessary. Inverse of `grow`. + shrink if necessary. Inverse of `grow`. - `basis: number | string` - This defines the default size of an element -before any flex-related calculations are done. Has to be a length -(e.g. `20%`, `5rem`), an `auto` or `content` keyword. + before any flex-related calculations are done. Has to be a length + (e.g. `20%`, `5rem`), an `auto` or `content` keyword. - **Important:** IE11 flex is buggy, and auto width/height calculations - can sometimes end up in a circular dependency. This usually happens, when - working with tables inside flex (they have wacky internal widths and such). - Setting basis to `0` breaks the loop and fixes all of the problems. + can sometimes end up in a circular dependency. This usually happens, when + working with tables inside flex (they have wacky internal widths and such). + Setting basis to `0` breaks the loop and fixes all of the problems. - `align: string` - This allows the default alignment (or the one specified by -align-items) to be overridden for individual flex items. See: [Flex](#flex). + align-items) to be overridden for individual flex items. See: [Flex](#flex). ### `Grid` @@ -485,14 +480,10 @@ Example: ```jsx -
    - Hello world! -
    +
    Hello world!
    -
    - Hello world! -
    +
    Hello world!
    ``` @@ -518,6 +509,7 @@ Renders one of the FontAwesome icons of your choice. To smoothen the transition from v4 to v5, we have added a v4 semantic to transform names with `-o` suffixes to FA Regular icons. For example: + - `square` will get transformed to `fas square` - `square-o` will get transformed to `far square` @@ -526,10 +518,10 @@ transform names with `-o` suffixes to FA Regular icons. For example: - See inherited props: [Box](#box) - `name: string` - Icon name. - `size: number` - Icon size. `1` is normal size, `2` is two times bigger. -Fractional numbers are supported. + Fractional numbers are supported. - `rotation: number` - Icon rotation, in degrees. - `spin: boolean` - Whether an icon should be spinning. Good for load -indicators. + indicators. ### `Icon.Stack` @@ -558,26 +550,26 @@ Has support for base64, spritesheets and URLs. - `asset: boolean` - Enables spritesheets support. - `vertical: boolean` - Makes the button a inlined vertical rectangle. - `color: string` - By default, the button is semi-transparent. You can change the overall colour, -all colours are available in KitchenSink in the corresponding section. + all colours are available in KitchenSink in the corresponding section. - `title: string` - The top text, it will always be bold, and also adds a divider between title and content. -Disabled if there is no content. + Disabled if there is no content. - `content: string|any` - All main content, usually text, but you can put in other components if you like. -Makes the vertical button square if empty. + Makes the vertical button square if empty. - `selected: boolean` - Makes button selected (green) if true. - `disabled: boolean` - Makes button disabled (red) if true. Also disables onClick. - `disabledContent: string` - If button disabled and disabledContent filled, it will be used instead content. - `image: string` - Base64 image, simple. Disabled if asset support enabled. - `imageUrl: string` - PNG image or other asset. Make sure you use existing simple asset! Example: imageUrl={'image.png'} - `imageAsset: string` - If you have enabled asset support, write here which spritesheet to use. -Example: imageAsset={'spritesheet_name64x64'} + Example: imageAsset={'spritesheet_name64x64'} - `imageSize: string` - Sets the size of the image and adjusts the size of the button itself accordingly. -Example: imageSize={'64px'} + Example: imageSize={'64px'} - `tooltip: string` - A fancy, boxy tooltip, which appears when hovering -over the button. + over the button. - `tooltipPosition: string` - Position of the tooltip. See [`Popper`](#Popper) for valid options. - `ellipsis: boolean` - If button width is constrained, button text will -be truncated with an ellipsis. Be careful however, because this prop breaks -the baseline alignment. + be truncated with an ellipsis. Be careful however, because this prop breaks + the baseline alignment. - `children: ImageButton.Item|any` - Items that are added to the right of the horizontal button. - `onClick: function` - Called when element is clicked. Also enables hover effects. @@ -589,25 +581,60 @@ Additional button/s for ImageButton. > Available only in horizontal mode, if you try add it to vertical, you're gonna be disappointed **Props:** + - See inherited props: [Box](#box) - `color: string` - By default, the button is semi-transparent. You can change the overall colour, -all colours are available in KitchenSink in the corresponding section. + all colours are available in KitchenSink in the corresponding section. - `content: string|any` - All main content, usually text, but you can put in other components if you like. -Try to not make it too long. + Try to not make it too long. - `selected: boolean` - Makes button selected (green) if true. - `disabled: boolean` - Makes button disabled (red) if true. Also disables onClick. - `disabledContent: string` - If button disabled and disabledContent filled, it will be used instead content. - `tooltip: string` - A fancy, boxy tooltip, which appears when hovering -over the button. + over the button. - `tooltipPosition: string` - Position of the tooltip. See [`Popper`](#Popper) for valid options. - `icon: string` - Adds an icon to the button. By default it will be under content. - `iconColor: string` - Paints icon if it used. - `iconPosition: string` - You can make an icon above the content. -Example: iconPosition={'top'} + Example: iconPosition={'top'} - `iconSize: number` - Adjusts the size of the icon. - `children: any` - Similar to content. - `onClick: function` - Called when element is clicked. +### `ImageButtonTS` + +A Robust button is specifically for sticking a picture in it. + +**Props:** + +- See inherited props: [Box](#box) +- `asset: string[]` - Asset cache. Example: `asset={`assetname32x32, ${thing.key}`}` +- `base64: string` - Classic way to put images. Example: `base64={thing.image}` +- `buttons: any` - Special section for any component, or, content. + Quite a small area at the bottom of the image in non-fluid mode. + Has a style overrides, best to use [Button](#button) inside. +- `buttonsAlt: boolean` - Enables alternative buttons layout. + With fluid, makes buttons like a humburger. + Without, moves it to top, and disables pointer-events. +- `children: any` - Content under image. +- `className: string` - Applies a CSS class to the element. +- `color: string` - Color of the button, but without `transparent`; see [Button](#button) +- `disabled: boolean` - Makes button disabled and dark red if true. + Also disables onClick & onRightClick. +- `selected: boolean` - Makes button selected and green if true. +- `dmFallback: any` - Optional. Adds a "stub" when loading DmIcon. +- `dmIcon: string` - Parameter `icon` of component `DmIcon`. +- `dmIconState: string` - Parameter `icon_state` of component `DmIcon`. + For proper work of `DmIcon` it is necessary that both parameters are filled in! +- `fluid: boolean` - Changes the layout of the button, making it fill the entire horizontally available space. + Allows the use of `title` +- `imageSize: number` - Parameter responsible for the size of the image, component and standard "stubs". + Measured in pixels. `imageSize={64}` = 64px. +- `imageSrc: string` - Prop `src` of . Example: `imageSrc={resolveAsset(thing.image)}` +- `onClick: (e) => void` - Called when button is clicked with LMB. +- `onRightClick: (e) => void` - Called when button is clicked with RMB. +- `title: string` - Requires `fluid` for work. Bold text with divider betwen content. + ### `Input` A basic text input, which allow users to enter text into a UI. @@ -620,12 +647,12 @@ A basic text input, which allow users to enter text into a UI. - See inherited props: [Box](#box) - `value: string` - Value of an input. - `placeholder: string` - Text placed into Input box when it's empty, -otherwise nothing. Clears automatically when focused. + otherwise nothing. Clears automatically when focused. - `fluid: boolean` - Fill all available horizontal space. - `selfClear: boolean` - Clear after hitting enter, as well as remain focused -when this happens. Useful for things like chat inputs. + when this happens. Useful for things like chat inputs. - `onChange: (e, value) => void` - An event, which fires when you commit -the text by either unfocusing the input box, or by pressing the Enter key. + the text by either unfocusing the input box, or by pressing the Enter key. - `onInput: (e, value) => void` - An event, which fires on every keypress. ### `Knob` @@ -641,30 +668,30 @@ Single click opens an input box to manually type in a number. - `animated: boolean` - Animates the value if it was changed externally. - `bipolar: boolean` - Knob can be bipolar or unipolar. - `size: number` - Relative size of the knob. `1` is normal size, `2` is two -times bigger. Fractional numbers are supported. + times bigger. Fractional numbers are supported. - `color: string` - Color of the outer ring around the knob. - `value: number` - Value itself, controls the position of the cursor. - `unit: string` - Unit to display to the right of value. - `minValue: number` - Lowest possible value. - `maxValue: number` - Highest possible value. - `fillValue: number` - If set, this value will be used to set the fill -percentage of the outer ring independently of the main value. + percentage of the outer ring independently of the main value. - `ranges: { color: [from, to] }` - Applies a `color` to the outer ring around -the knob based on whether the value lands in the range between `from` and `to`. -See an example of this prop in [ProgressBar](#progressbar). + the knob based on whether the value lands in the range between `from` and `to`. + See an example of this prop in [ProgressBar](#progressbar). - `step: number` (default: 1) - Adjust value by this amount when -dragging the input. + dragging the input. - `stepPixelSize: number` (default: 1) - Screen distance mouse needs -to travel to adjust value by one `step`. + to travel to adjust value by one `step`. - `format: value => value` - Format value using this function before -displaying it. + displaying it. - `suppressFlicker: number` - A number in milliseconds, for which the input -will hold off from updating while events propagate through the backend. -Default is about 250ms, increase it if you still see flickering. + will hold off from updating while events propagate through the backend. + Default is about 250ms, increase it if you still see flickering. - `onChange: (e, value) => void` - An event, which fires when you release -the input, or successfully enter a number. + the input, or successfully enter a number. - `onDrag: (e, value) => void` - An event, which fires about every 500ms -when you drag the input up and down, on release and on manual editing. + when you drag the input up and down, on release and on manual editing. ### `Popper` @@ -702,9 +729,7 @@ column is labels, and second column is content. ```jsx - - Content - + Content ``` @@ -713,13 +738,7 @@ to perform some sort of action), there is a way to do that: ```jsx - - Click me! - - )}> + Click me!}> Content @@ -746,9 +765,7 @@ Example: ```jsx - - Content - + Content ``` @@ -794,22 +811,22 @@ to fine tune the value, or single click it to manually type a number. - `minValue: number` - Lowest possible value. - `maxValue: number` - Highest possible value. - `step: number` (default: 1) - Adjust value by this amount when -dragging the input. + dragging the input. - `stepPixelSize: number` (default: 1) - Screen distance mouse needs -to travel to adjust value by one `step`. + to travel to adjust value by one `step`. - `width: string|number` - Width of the element, in `Box` units or pixels. - `height: string|numer` - Height of the element, in `Box` units or pixels. - `lineHeight: string|number` - lineHeight of the element, in `Box` units or pixels. - `fontSize: string|number` - fontSize of the element, in `Box` units or pixels. - `format: value => value` - Format value using this function before -displaying it. + displaying it. - `suppressFlicker: number` - A number in milliseconds, for which the input -will hold off from updating while events propagate through the backend. -Default is about 250ms, increase it if you still see flickering. + will hold off from updating while events propagate through the backend. + Default is about 250ms, increase it if you still see flickering. - `onChange: (e, value) => void` - An event, which fires when you release -the input, or successfully enter a number. + the input, or successfully enter a number. - `onDrag: (e, value) => void` - An event, which fires about every 500ms -when you drag the input up and down, on release and on manual editing. + when you drag the input up and down, on release and on manual editing. ### `ProgressBar` @@ -828,18 +845,19 @@ Usage of `ranges` prop: average: [0.25, 0.5], bad: [-Infinity, 0.25], }} - value={0.6} /> + value={0.6} +/> ``` **Props:** - `value: number` - Current progress as a floating point number between -`minValue` (default: 0) and `maxValue` (default: 1). Determines the -percentage and how filled the bar is. + `minValue` (default: 0) and `maxValue` (default: 1). Determines the + percentage and how filled the bar is. - `minValue: number` - Lowest possible value. - `maxValue: number` - Highest possible value. - `ranges: { color: [from, to] }` - Applies a `color` to the progress bar -based on whether the value lands in the range between `from` and `to`. + based on whether the value lands in the range between `from` and `to`. - `color: string` - Color of the progress bar. - `children: any` - Content to render inside the progress bar. @@ -853,13 +871,14 @@ The RoundGauge component provides a visual representation of a single metric, as value={tankPressure} minValue={0} maxValue={pressureLimit} - alertAfter={pressureLimit * 0.70} + alertAfter={pressureLimit * 0.7} ranges={{ - "good": [0, pressureLimit * 0.70], - "average": [pressureLimit * 0.70, pressureLimit * 0.85], - "bad": [pressureLimit * 0.85, pressureLimit], + 'good': [0, pressureLimit * 0.7], + 'average': [pressureLimit * 0.7, pressureLimit * 0.85], + 'bad': [pressureLimit * 0.85, pressureLimit], }} - format={formatPressure} /> + format={formatPressure} +/> ``` The alert on the gauge is optional, and will only be shown if the `alertAfter` prop is defined. When defined, the alert will begin to flash the respective color upon which the needle currently rests, as defined in the `ranges` prop. @@ -886,22 +905,14 @@ clearly indicates hierarchy. Section can also be titled to clearly define its purpose. ```jsx -
    - Here you can order supply crates. -
    +
    Here you can order supply crates.
    ``` If you want to have a button on the right side of an section title (for example, to perform some sort of action), there is a way to do that: ```jsx -
    - Send shuttle - - )}> +
    Send shuttle}> Here you can order supply crates.
    ``` @@ -909,7 +920,7 @@ If you want to have a button on the right side of an section title - See inherited props: [Box](#box) - `title: string` - Title of the section. - `level: number` - Section level in hierarchy. Default is 1, higher number -means deeper level of nesting. Must be an integer number. + means deeper level of nesting. Must be an integer number. - `buttons: any` - Buttons to render aside the section title. - `fill: boolean` - If true, fills all available vertical space. - `fitted: boolean` - If true, removes all section padding. @@ -933,23 +944,23 @@ Single click opens an input box to manually type in a number. - `minValue: number` - Lowest possible value. - `maxValue: number` - Highest possible value. - `fillValue: number` - If set, this value will be used to set the fill -percentage of the progress bar filler independently of the main value. + percentage of the progress bar filler independently of the main value. - `ranges: { color: [from, to] }` - Applies a `color` to the slider -based on whether the value lands in the range between `from` and `to`. -See an example of this prop in [ProgressBar](#progressbar). + based on whether the value lands in the range between `from` and `to`. + See an example of this prop in [ProgressBar](#progressbar). - `step: number` (default: 1) - Adjust value by this amount when -dragging the input. + dragging the input. - `stepPixelSize: number` (default: 1) - Screen distance mouse needs -to travel to adjust value by one `step`. + to travel to adjust value by one `step`. - `format: value => value` - Format value using this function before -displaying it. + displaying it. - `suppressFlicker: number` - A number in milliseconds, for which the input -will hold off from updating while events propagate through the backend. -Default is about 250ms, increase it if you still see flickering. + will hold off from updating while events propagate through the backend. + Default is about 250ms, increase it if you still see flickering. - `onChange: (e, value) => void` - An event, which fires when you release -the input, or successfully enter a number. + the input, or successfully enter a number. - `onDrag: (e, value) => void` - An event, which fires about every 500ms -when you drag the input up and down, on release and on manual editing. + when you drag the input up and down, on release and on manual editing. ### `Stack` @@ -965,13 +976,9 @@ Stacks can be vertical by adding a `vertical` property. ```jsx - - Button description - + Button description - + ``` @@ -986,9 +993,7 @@ Make sure to use the `fill` property. -
    - Sidebar -
    +
    Sidebar
    @@ -998,9 +1003,7 @@ Make sure to use the `fill` property.
    -
    - Bottom pane -
    +
    Bottom pane
    @@ -1032,9 +1035,7 @@ Example: ```jsx - - Hello world! - + Hello world! Label @@ -1063,7 +1064,7 @@ A straight forward mapping to `
    ` element. - See inherited props: [Box](#box) - `collapsing: boolean` - Collapses table cell to the smallest possible size, -and stops any text inside from wrapping. + and stops any text inside from wrapping. ### `Tabs` @@ -1099,9 +1100,7 @@ Tabs also support a vertical configuration. This is usually paired with a ```jsx - - ... - + ... Tab content. @@ -1113,7 +1112,7 @@ Tabs also support a vertical configuration. This is usually paired with a - See inherited props: [Box](#box) - `vertical: boolean` - Use a vertical configuration, where tabs will be -stacked vertically. + stacked vertically. - `children: Tab[]` - This component only accepts tabs as its children. ### `Tabs.Tab` @@ -1125,8 +1124,8 @@ a lot of `Button` props. - See inherited props: [Button](#button) - `altSelection` - Whether the tab buttons select via standard select (color -change) or by adding a white indicator to the selected tab. -Intended for usage on interfaces where tab color has relevance. + change) or by adding a white indicator to the selected tab. + Intended for usage on interfaces where tab color has relevance. - `icon: string` - Tab icon. - `children: any` - Tab text. - `onClick: function` - Called when element is clicked. @@ -1143,9 +1142,7 @@ Usage: ```jsx - - Sample text. - + Sample text. ``` @@ -1153,7 +1150,7 @@ Usage: - `position?: string` - Tooltip position. See [`Popper`](#Popper) for valid options. Defaults to "auto". - `content: string` - Content of the tooltip. Must be a plain string. -Fragments or other elements are **not** supported. + Fragments or other elements are **not** supported. ## `tgui/layouts` @@ -1167,9 +1164,7 @@ Example: ```jsx - - Hello, world! - + Hello, world! ``` @@ -1184,9 +1179,9 @@ Example: - `height: number` - Window height. - `noClose: boolean` - Controls the ability to close the window. - `children: any` - Child elements, which are rendered directly inside the -window. If you use a [Dimmer](#dimmer) or [Modal](#modal) in your UI, -they should be put as direct childs of a Window, otherwise you should be -putting your content into [Window.Content](#windowcontent). + window. If you use a [Dimmer](#dimmer) or [Modal](#modal) in your UI, + they should be put as direct childs of a Window, otherwise you should be + putting your content into [Window.Content](#windowcontent). ### `Window.Content` diff --git a/tgui/global.d.ts b/tgui/global.d.ts index b99d358cf486..225d1a9dd39c 100644 --- a/tgui/global.d.ts +++ b/tgui/global.d.ts @@ -143,6 +143,11 @@ type ByondType = { */ parseJson(text: string): any; + /** + * Downloads a blob, platform-agnostic + */ + saveBlob(blob: Blob, filename: string, ext: string): void; + /** * Sends a message to `/datum/tgui_window` which hosts this window instance. */ @@ -169,6 +174,11 @@ type ByondType = { * Loads a script into the document. */ loadJs(url: string): void; + + /** + * Maps icons to their ref + */ + iconRefMap: Record; }; /** diff --git a/tgui/packages/common/color.js b/tgui/packages/common/color.js deleted file mode 100644 index 913f50747afb..000000000000 --- a/tgui/packages/common/color.js +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @file - * @copyright 2020 Aleksej Komarov - * @license MIT - */ - -const EPSILON = 0.0001; - -export class Color { - constructor(r = 0, g = 0, b = 0, a = 1) { - this.r = r; - this.g = g; - this.b = b; - this.a = a; - } - - toString() { - return `rgba(${this.r | 0}, ${this.g | 0}, ${this.b | 0}, ${this.a | 0})`; - } -} - -/** - * Creates a color from the CSS hex color notation. - */ -Color.fromHex = (hex) => - new Color( - parseInt(hex.substr(1, 2), 16), - parseInt(hex.substr(3, 2), 16), - parseInt(hex.substr(5, 2), 16) - ); - -/** - * Linear interpolation of two colors. - */ -Color.lerp = (c1, c2, n) => - new Color( - (c2.r - c1.r) * n + c1.r, - (c2.g - c1.g) * n + c1.g, - (c2.b - c1.b) * n + c1.b, - (c2.a - c1.a) * n + c1.a - ); - -/** - * Loops up the color in the provided list of colors - * with linear interpolation. - */ -Color.lookup = (value, colors = []) => { - const len = colors.length; - if (len < 2) { - throw new Error('Needs at least two colors!'); - } - const scaled = value * (len - 1); - if (value < EPSILON) { - return colors[0]; - } - if (value >= 1 - EPSILON) { - return colors[len - 1]; - } - const ratio = scaled % 1; - const index = scaled | 0; - return Color.lerp(colors[index], colors[index + 1], ratio); -}; diff --git a/tgui/packages/common/color.ts b/tgui/packages/common/color.ts new file mode 100644 index 000000000000..9022cccfdc2a --- /dev/null +++ b/tgui/packages/common/color.ts @@ -0,0 +1,359 @@ +/** + * @file + * @copyright 2020 Aleksej Komarov + * @license MIT + */ + +const EPSILON = 0.0001; + +export class Color { + r: number; + g: number; + b: number; + a: number; + + constructor(r = 0, g = 0, b = 0, a = 1) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + } + + toString() { + return `rgba(${this.r | 0}, ${this.g | 0}, ${this.b | 0}, ${this.a | 0})`; + } + + /** + * Creates a color from the CSS hex color notation. + */ + static fromHex(hex: string): Color { + return new Color( + parseInt(hex.substr(1, 2), 16), + parseInt(hex.substr(3, 2), 16), + parseInt(hex.substr(5, 2), 16) + ); + } + + /** + * Linear interpolation of two colors. + */ + static lerp(c1: Color, c2: Color, n: number): Color { + return new Color( + (c2.r - c1.r) * n + c1.r, + (c2.g - c1.g) * n + c1.g, + (c2.b - c1.b) * n + c1.b, + (c2.a - c1.a) * n + c1.a + ); + } + + /** + * Loops up the color in the provided list of colors + * with linear interpolation. + */ + static lookup(value: number, colors: Color[] = []): Color { + const len = colors.length; + if (len < 2) { + throw new Error('Needs at least two colors!'); + } + const scaled = value * (len - 1); + if (value < EPSILON) { + return colors[0]; + } + if (value >= 1 - EPSILON) { + return colors[len - 1]; + } + const ratio = scaled % 1; + const index = scaled | 0; + return Color.lerp(colors[index], colors[index + 1], ratio); + } +} + +/* + * MIT License + * https://github.com/omgovich/react-colorful/ + * + * Copyright (c) 2020 Vlad Shilov + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +const round = ( + number: number, + digits = 0, + base = Math.pow(10, digits) +): number => { + return Math.round(base * number) / base; +}; + +export interface RgbColor { + r: number; + g: number; + b: number; +} + +export interface RgbaColor extends RgbColor { + a: number; +} + +export interface HslColor { + h: number; + s: number; + l: number; +} + +export interface HslaColor extends HslColor { + a: number; +} + +export interface HsvColor { + h: number; + s: number; + v: number; +} + +export interface HsvaColor extends HsvColor { + a: number; +} + +export type ObjectColor = + | RgbColor + | HslColor + | HsvColor + | RgbaColor + | HslaColor + | HsvaColor; + +export type AnyColor = string | ObjectColor; + +/** + * Valid CSS units. + * https://developer.mozilla.org/en-US/docs/Web/CSS/angle + */ +const angleUnits: Record = { + grad: 360 / 400, + turn: 360, + rad: 360 / (Math.PI * 2), +}; + +export const hexToHsva = (hex: string): HsvaColor => rgbaToHsva(hexToRgba(hex)); + +export const hexToRgba = (hex: string): RgbaColor => { + if (hex[0] === '#') hex = hex.substring(1); + + if (hex.length < 6) { + return { + r: parseInt(hex[0] + hex[0], 16), + g: parseInt(hex[1] + hex[1], 16), + b: parseInt(hex[2] + hex[2], 16), + a: hex.length === 4 ? round(parseInt(hex[3] + hex[3], 16) / 255, 2) : 1, + }; + } + + return { + r: parseInt(hex.substring(0, 2), 16), + g: parseInt(hex.substring(2, 4), 16), + b: parseInt(hex.substring(4, 6), 16), + a: hex.length === 8 ? round(parseInt(hex.substring(6, 8), 16) / 255, 2) : 1, + }; +}; + +export const parseHue = (value: string, unit = 'deg'): number => { + return Number(value) * (angleUnits[unit] || 1); +}; + +export const hslaStringToHsva = (hslString: string): HsvaColor => { + const matcher = + /hsla?\(?\s*(-?\d*\.?\d+)(deg|rad|grad|turn)?[,\s]+(-?\d*\.?\d+)%?[,\s]+(-?\d*\.?\d+)%?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i; + const match = matcher.exec(hslString); + + if (!match) return { h: 0, s: 0, v: 0, a: 1 }; + + return hslaToHsva({ + h: parseHue(match[1], match[2]), + s: Number(match[3]), + l: Number(match[4]), + a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1), + }); +}; + +export const hslStringToHsva = hslaStringToHsva; + +export const hslaToHsva = ({ h, s, l, a }: HslaColor): HsvaColor => { + s *= (l < 50 ? l : 100 - l) / 100; + + return { + h: h, + s: s > 0 ? ((2 * s) / (l + s)) * 100 : 0, + v: l + s, + a, + }; +}; + +export const hsvaToHex = (hsva: HsvaColor): string => + rgbaToHex(hsvaToRgba(hsva)); + +export const hsvaToHsla = ({ h, s, v, a }: HsvaColor): HslaColor => { + const hh = ((200 - s) * v) / 100; + + return { + h: round(h), + s: round( + hh > 0 && hh < 200 + ? ((s * v) / 100 / (hh <= 100 ? hh : 200 - hh)) * 100 + : 0 + ), + l: round(hh / 2), + a: round(a, 2), + }; +}; + +export const hsvaToHslString = (hsva: HsvaColor): string => { + const { h, s, l } = hsvaToHsla(hsva); + return `hsl(${h}, ${s}%, ${l}%)`; +}; + +export const hsvaToHsvString = (hsva: HsvaColor): string => { + const { h, s, v } = roundHsva(hsva); + return `hsv(${h}, ${s}%, ${v}%)`; +}; + +export const hsvaToHsvaString = (hsva: HsvaColor): string => { + const { h, s, v, a } = roundHsva(hsva); + return `hsva(${h}, ${s}%, ${v}%, ${a})`; +}; + +export const hsvaToHslaString = (hsva: HsvaColor): string => { + const { h, s, l, a } = hsvaToHsla(hsva); + return `hsla(${h}, ${s}%, ${l}%, ${a})`; +}; + +export const hsvaToRgba = ({ h, s, v, a }: HsvaColor): RgbaColor => { + h = (h / 360) * 6; + s = s / 100; + v = v / 100; + + const hh = Math.floor(h), + b = v * (1 - s), + c = v * (1 - (h - hh) * s), + d = v * (1 - (1 - h + hh) * s), + module = hh % 6; + + return { + r: [v, c, b, b, d, v][module] * 255, + g: [d, v, v, c, b, b][module] * 255, + b: [b, b, d, v, v, c][module] * 255, + a: round(a, 2), + }; +}; + +export const hsvaToRgbString = (hsva: HsvaColor): string => { + const { r, g, b } = hsvaToRgba(hsva); + return `rgb(${round(r)}, ${round(g)}, ${round(b)})`; +}; + +export const hsvaToRgbaString = (hsva: HsvaColor): string => { + const { r, g, b, a } = hsvaToRgba(hsva); + return `rgba(${round(r)}, ${round(g)}, ${round(b)}, ${round(a, 2)})`; +}; + +export const hsvaStringToHsva = (hsvString: string): HsvaColor => { + const matcher = + /hsva?\(?\s*(-?\d*\.?\d+)(deg|rad|grad|turn)?[,\s]+(-?\d*\.?\d+)%?[,\s]+(-?\d*\.?\d+)%?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i; + const match = matcher.exec(hsvString); + + if (!match) return { h: 0, s: 0, v: 0, a: 1 }; + + return roundHsva({ + h: parseHue(match[1], match[2]), + s: Number(match[3]), + v: Number(match[4]), + a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1), + }); +}; + +export const hsvStringToHsva = hsvaStringToHsva; + +export const rgbaStringToHsva = (rgbaString: string): HsvaColor => { + const matcher = + /rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i; + const match = matcher.exec(rgbaString); + + if (!match) return { h: 0, s: 0, v: 0, a: 1 }; + + return rgbaToHsva({ + r: Number(match[1]) / (match[2] ? 100 / 255 : 1), + g: Number(match[3]) / (match[4] ? 100 / 255 : 1), + b: Number(match[5]) / (match[6] ? 100 / 255 : 1), + a: match[7] === undefined ? 1 : Number(match[7]) / (match[8] ? 100 : 1), + }); +}; + +export const rgbStringToHsva = rgbaStringToHsva; + +const format = (number: number) => { + const hex = number.toString(16); + return hex.length < 2 ? '0' + hex : hex; +}; + +export const rgbaToHex = ({ r, g, b, a }: RgbaColor): string => { + const alphaHex = a < 1 ? format(round(a * 255)) : ''; + return ( + '#' + format(round(r)) + format(round(g)) + format(round(b)) + alphaHex + ); +}; + +export const rgbaToHsva = ({ r, g, b, a }: RgbaColor): HsvaColor => { + const max = Math.max(r, g, b); + const delta = max - Math.min(r, g, b); + + // prettier-ignore + const hh = delta + ? max === r + ? (g - b) / delta + : max === g + ? 2 + (b - r) / delta + : 4 + (r - g) / delta + : 0; + + return { + h: 60 * (hh < 0 ? hh + 6 : hh), + s: max ? (delta / max) * 100 : 0, + v: (max / 255) * 100, + a, + }; +}; + +export const roundHsva = (hsva: HsvaColor): HsvaColor => ({ + h: round(hsva.h), + s: round(hsva.s), + v: round(hsva.v), + a: round(hsva.a, 2), +}); + +export const rgbaToRgb = ({ r, g, b }: RgbaColor): RgbColor => ({ r, g, b }); + +export const hslaToHsl = ({ h, s, l }: HslaColor): HslColor => ({ h, s, l }); + +export const hsvaToHsv = (hsva: HsvaColor): HsvColor => { + const { h, s, v } = roundHsva(hsva); + return { h, s, v }; +}; + +const hexMatcher = /^#?([0-9A-F]{3,8})$/i; + +export const validHex = (value: string, alpha?: boolean): boolean => { + const match = hexMatcher.exec(value); + const length = match ? match[1].length : 0; + + return ( + length === 3 || // '#rgb' format + length === 6 || // '#rrggbb' format + (!!alpha && length === 4) || // '#rgba' format + (!!alpha && length === 8) // '#rrggbbaa' format + ); +}; diff --git a/tgui/packages/tgui-panel/chat/constants.js b/tgui/packages/tgui-panel/chat/constants.js index 56c587279207..e4d6d999ff21 100644 --- a/tgui/packages/tgui-panel/chat/constants.js +++ b/tgui/packages/tgui-panel/chat/constants.js @@ -33,6 +33,7 @@ export const MESSAGE_TYPE_MENTORPM = 'mentorpm'; export const MESSAGE_TYPE_COMBAT = 'combat'; export const MESSAGE_TYPE_ADMINCHAT = 'adminchat'; export const MESSAGE_TYPE_MENTORCHAT = 'mentorchat'; +export const MESSAGE_TYPE_DEVCHAT = 'devchat'; export const MESSAGE_TYPE_EVENTCHAT = 'eventchat'; export const MESSAGE_TYPE_ADMINLOG = 'adminlog'; export const MESSAGE_TYPE_ATTACKLOG = 'attacklog'; @@ -125,6 +126,13 @@ export const MESSAGE_TYPES = [ selector: '.mentor_channel', admin: true, }, + { + type: MESSAGE_TYPE_DEVCHAT, + name: 'Developer Chat', + description: 'DEVSAY messages', + selector: '.dev_channel', + admin: true, + }, { type: MESSAGE_TYPE_ADMINLOG, name: 'Admin Log', diff --git a/tgui/packages/tgui-panel/chat/renderer.js b/tgui/packages/tgui-panel/chat/renderer.js index f3d1a43b4969..ab08c757c9d8 100644 --- a/tgui/packages/tgui-panel/chat/renderer.js +++ b/tgui/packages/tgui-panel/chat/renderer.js @@ -65,19 +65,24 @@ const createReconnectedNode = () => { }; const handleImageError = (e) => { - setTimeout(() => { - /** @type {HTMLImageElement} */ - const node = e.target; + /** @type {HTMLImageElement} */ + const node = e.target; + + const reloadImage = () => { const attempts = parseInt(node.getAttribute('data-reload-n'), 10) || 0; + if (attempts >= IMAGE_RETRY_LIMIT) { - logger.error(`failed to load an image after ${attempts} attempts`); + logger.error(`Failed to load an image after ${attempts} attempts`); return; } + const src = node.src; - node.src = null; + node.src = ''; node.src = src + '#' + attempts; node.setAttribute('data-reload-n', attempts + 1); - }, IMAGE_RETRY_DELAY); + }; + + requestAnimationFrame(reloadImage); }; /** @@ -92,10 +97,8 @@ const updateMessageBadge = (message) => { const foundBadge = node.querySelector('.Chat__badge'); const badge = foundBadge || document.createElement('div'); badge.textContent = times; - badge.className = classes(['Chat__badge', 'Chat__badge--animate']); - requestAnimationFrame(() => { - badge.className = 'Chat__badge'; - }); + badge.className = 'Chat__badge'; + if (!foundBadge) { node.appendChild(badge); } @@ -110,6 +113,7 @@ class ChatRenderer { this.queue = []; this.messages = []; this.visibleMessages = []; + this.regexCache = new Map(); this.page = null; this.events = new EventEmitter(); // Scroll handler @@ -153,7 +157,7 @@ class ChatRenderer { // Find scrollable parent this.scrollNode = findNearestScrollableParent(this.rootNode); this.scrollNode.addEventListener('scroll', this.handleScroll); - setTimeout(() => { + requestAnimationFrame(() => { this.scrollToBottom(); }); // Flush the queue @@ -180,19 +184,25 @@ class ChatRenderer { setHighlight(highlightSettings, highlightSettingById) { this.highlightParsers = null; + if (!highlightSettings) { return; } + highlightSettings.map((id) => { const setting = highlightSettingById[id]; - const text = setting.highlightText; - const highlightColor = setting.highlightColor; - const highlightWholeMessage = setting.highlightWholeMessage; - const matchWord = setting.matchWord; - const matchCase = setting.matchCase; + const { + highlightText, + highlightColor, + highlightWholeMessage, + matchWord, + matchCase, + } = setting; + const allowedRegex = /^[a-zа-яё0-9_\-$/^[\s\]\\]+$/gi; const regexEscapeCharacters = /[!#$%^&*)(+=.<>{}[\]:;'"|~`_\-\\/]/g; - const lines = String(text) + + const lines = String(highlightText) .split(/[,|]/) .map((str) => str.trim()) .filter( @@ -205,12 +215,13 @@ class ChatRenderer { // Reset lastIndex so it does not mess up the next word ((allowedRegex.lastIndex = 0) || true) ); - let highlightWords; - let highlightRegex; + // Nothing to match, reset highlighting if (lines.length === 0) { return; } + + let highlightWords = []; let regexExpressions = []; // Organize each highlight entry into regex expressions and words for (let line of lines) { @@ -218,43 +229,49 @@ class ChatRenderer { if (line.charAt(0) === '/' && line.charAt(line.length - 1) === '/') { const expr = line.substring(1, line.length - 1); // Check if this is more than one character - if (/^(\[.*\]|\\.|.)$/.test(expr)) { - continue; - } + if (/^(\[.*\]|\\.|.)$/.test(expr)) continue; regexExpressions.push(expr); } else { - // Lazy init - if (!highlightWords) { - highlightWords = []; - } // We're not going to let regex characters fuck up our RegEx operation. line = line.replace(regexEscapeCharacters, '\\$&'); - highlightWords.push(line); } } + const regexStr = regexExpressions.join('|'); const flags = 'g' + (matchCase ? '' : 'i'); + + let highlightRegex; + // We wrap this in a try-catch to ensure that broken regex doesn't break // the entire chat. try { // setting regex overrides matchword if (regexStr) { - highlightRegex = new RegExp('(' + regexStr + ')', flags); + if (!this.regexCache.has(regexStr)) { + this.regexCache.set( + regexStr, + new RegExp('(' + regexStr + ')', flags) + ); + } + highlightRegex = this.regexCache.get(regexStr); } else { - const pattern = `${matchWord ? '\\b' : ''}(${highlightWords.join( - '|' - )})${matchWord ? '\\b' : ''}`; - highlightRegex = new RegExp(pattern, flags); + const pattern = `${matchWord ? '\\b' : ''}(${highlightWords.join('|')})${matchWord ? '\\b' : ''}`; + if (!this.regexCache.has(pattern)) { + this.regexCache.set(pattern, new RegExp(pattern, flags)); + } + highlightRegex = this.regexCache.get(pattern); } } catch { // We just reset it if it's invalid. highlightRegex = null; } + // Lazy init if (!this.highlightParsers) { this.highlightParsers = []; } + this.highlightParsers.push({ highlightWords, highlightRegex, @@ -296,23 +313,17 @@ class ChatRenderer { } } - getCombinableMessage(predicate) { - const now = Date.now(); - const len = this.visibleMessages.length; - const from = len - 1; - const to = Math.max(0, len - COMBINE_MAX_MESSAGES); + getCombinableMessage(predicate, now, from, to) { for (let i = from; i >= to; i--) { const message = this.visibleMessages[i]; - // prettier-ignore - const matches = ( + if ( // Is not an internal message - !message.type.startsWith(MESSAGE_TYPE_INTERNAL) + !message.type.startsWith(MESSAGE_TYPE_INTERNAL) && // Text payload must fully match - && isSameMessage(message, predicate) + isSameMessage(message, predicate) && // Must land within the specified time window - && now < message.createdAt + COMBINE_MAX_TIME_WINDOW - ); - if (matches) { + now < message.createdAt + COMBINE_MAX_TIME_WINDOW + ) { return message; } } @@ -335,10 +346,15 @@ class ChatRenderer { const fragment = document.createDocumentFragment(); const countByType = {}; let node; + + const len = this.visibleMessages.length; + const from = len - 1; + const to = Math.max(0, len - COMBINE_MAX_MESSAGES); + for (let payload of batch) { const message = createMessage(payload); // Combine messages - const combinable = this.getCombinableMessage(message); + const combinable = this.getCombinableMessage(message, now, from, to); if (combinable) { combinable.times = (combinable.times || 1) + 1; updateMessageBadge(combinable); @@ -416,14 +432,14 @@ class ChatRenderer { } } if (node) { - const firstChild = this.rootNode.childNodes[0]; + const firstChild = this.rootNode.firstChild; if (prepend && firstChild) { this.rootNode.insertBefore(fragment, firstChild); } else { this.rootNode.appendChild(fragment); } if (this.scrollTracking) { - setTimeout(() => this.scrollToBottom()); + requestAnimationFrame(() => this.scrollToBottom()); } } // Notify listeners that we have processed the batch @@ -555,13 +571,13 @@ class ChatRenderer { + '\n' + '\n'; // Create and send a nice blob - const blob = new Blob([pageHtml]); + const blob = new Blob([pageHtml], { type: 'text/plain' }); const timestamp = new Date() .toISOString() .substring(0, 19) .replace(/[-:]/g, '') .replace('T', '-'); - window.navigator.msSaveBlob(blob, `ss13-chatlog-${timestamp}.html`); + Byond.saveBlob(blob, `ss13-paradise-chatlog-${timestamp}.html`, '.html'); } } diff --git a/tgui/packages/tgui-panel/index.js b/tgui/packages/tgui-panel/index.js index 0cb89a160f06..51932a3f3eb8 100644 --- a/tgui/packages/tgui-panel/index.js +++ b/tgui/packages/tgui-panel/index.js @@ -77,18 +77,9 @@ const setupApp = () => { // Dispatch incoming messages as store actions Byond.subscribe((type, payload) => store.dispatch({ type, payload })); - // Hide output - Byond.winset('output', { - 'is-visible': false, - 'is-disabled': true, - }); - // Unhide the panel - Byond.winset('chat_panel', { - 'is-visible': true, - 'is-disabled': false, - 'pos': '0x0', - 'size': '0x0', + Byond.winset('legacy_output_selector', { + left: 'output_browser', }); // Resize the panel to match the non-browser output diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss index 820b57fb2128..8e32202ed151 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss @@ -410,6 +410,16 @@ em { font-weight: bold; } +.dev_channel { + color: #2ecc71; + font-weight: bold; +} + +.dev_channel_admin { + color: #228b4e; + font-weight: bold; +} + .djradio { color: #996600; } diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss index d18f8c94b3f1..f16a3d5fb790 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss @@ -419,6 +419,16 @@ em { font-weight: bold; } +.dev_channel { + color: #2ecc71; + font-weight: bold; +} + +.dev_channel_admin { + color: #228b4e; + font-weight: bold; +} + .djradio { color: #663300; } diff --git a/tgui/packages/tgui-say/ChannelIterator.ts b/tgui/packages/tgui-say/ChannelIterator.ts index 088949ca3a17..e5e1f0d1c7d8 100644 --- a/tgui/packages/tgui-say/ChannelIterator.ts +++ b/tgui/packages/tgui-say/ChannelIterator.ts @@ -7,7 +7,8 @@ export type Channel = | 'LOOC' | 'Mentor' | 'Admin' - | 'Dsay'; + | 'Dsay' + | 'Dev'; /** * ### ChannelIterator @@ -27,14 +28,16 @@ export class ChannelIterator { 'Mentor', 'Admin', 'Dsay', + 'Dev', ]; - private readonly blacklist: Channel[] = ['Mentor', 'Admin', 'Dsay']; + private readonly blacklist: Channel[] = ['Mentor', 'Admin', 'Dsay', 'Dev']; private readonly quiet: Channel[] = [ 'OOC', 'LOOC', 'Mentor', 'Admin', 'Dsay', + 'Dev', ]; public next(): Channel { diff --git a/tgui/packages/tgui-say/styles/colors.scss b/tgui/packages/tgui-say/styles/colors.scss index 24fc239c361d..7caa236f36a3 100644 --- a/tgui/packages/tgui-say/styles/colors.scss +++ b/tgui/packages/tgui-say/styles/colors.scss @@ -22,6 +22,7 @@ $_channel_map: ( 'Me': #5975da, 'Med': #57b8f0, 'Mentor': #d6c208, + 'Dev': #61b413, 'OOC': #cca300, 'Proc': #b84f92, 'R-Ear': #a4bad6, diff --git a/tgui/packages/tgui/components/Button.js b/tgui/packages/tgui/components/Button.js index e95d149c0e87..6aad1809cf82 100644 --- a/tgui/packages/tgui/components/Button.js +++ b/tgui/packages/tgui/components/Button.js @@ -169,7 +169,7 @@ export class ButtonConfirm extends Component { render() { const { - confirmContent = 'Confirm?', + confirmContent = 'Подтвердить?', confirmColor = 'bad', confirmIcon, icon, diff --git a/tgui/packages/tgui/components/ByondUi.js b/tgui/packages/tgui/components/ByondUi.js index ca974f69910c..5e39410743a1 100644 --- a/tgui/packages/tgui/components/ByondUi.js +++ b/tgui/packages/tgui/components/ByondUi.js @@ -25,6 +25,16 @@ const createByondUiElement = (elementId) => { // Return a control structure return { render: (params) => { + /** + * Note: We unmount and render because there is currently unfixable bug with + * how cameras are rendered on first occurence. That came with TGUI 4 and + * I have no idea how to fix this correctly. + */ + logger.log(`unmounting '${id}'`); + byondUiStack[index] = null; + Byond.winset(id, { + parent: '', + }); logger.log(`rendering '${id}'`); byondUiStack[index] = id; Byond.winset(id, params); @@ -54,13 +64,17 @@ window.addEventListener('beforeunload', () => { }); /** - * Get the bounding box of the DOM element. + * Get the bounding box of the DOM element in display-pixels. */ const getBoundingBox = (element) => { + const pixelRatio = window.devicePixelRatio ?? 1; const rect = element.getBoundingClientRect(); return { - pos: [rect.left, rect.top], - size: [rect.right - rect.left, rect.bottom - rect.top], + pos: [rect.left * pixelRatio, rect.top * pixelRatio], + size: [ + (rect.right - rect.left) * pixelRatio, + (rect.bottom - rect.top) * pixelRatio, + ], }; }; diff --git a/tgui/packages/tgui/components/DmIcon.tsx b/tgui/packages/tgui/components/DmIcon.tsx new file mode 100644 index 000000000000..c77dc8a8ff99 --- /dev/null +++ b/tgui/packages/tgui/components/DmIcon.tsx @@ -0,0 +1,92 @@ +import { Component, InfernoNode } from 'inferno'; +import { resolveAsset } from '../assets'; +import { fetchRetry } from '../http'; +import { BoxProps } from './Box'; +import { Image } from './Image'; + +enum Direction { + NORTH = 1, + SOUTH = 2, + EAST = 4, + WEST = 8, + NORTHEAST = NORTH | EAST, + NORTHWEST = NORTH | WEST, + SOUTHEAST = SOUTH | EAST, + SOUTHWEST = SOUTH | WEST, +} + +type Props = { + /** Required: The path of the icon */ + icon: string; + /** Required: The state of the icon */ + icon_state: string; +} & Partial<{ + /** Facing direction. See direction enum. Default is South */ + direction: Direction; + /** Fallback icon. */ + fallback: InfernoNode; + /** Frame number. Default is 1 */ + frame: number; + /** Movement state. Default is false */ + movement: any; +}> & + BoxProps; + +let refMap: Record | undefined; + +export class DmIcon extends Component { + constructor(props: Props) { + super(props); + this.state = { + iconRef: '', + }; + } + + async fetchRefMap() { + try { + const response = await fetchRetry(resolveAsset('icon_ref_map.json')); + const data = await response.json(); + refMap = data; + this.setState({ iconRef: data[this.props.icon] || '' }); + } catch (err) { + return; + } + } + + componentDidMount() { + if (!refMap) { + this.fetchRefMap(); + } else { + this.setState({ iconRef: refMap[this.props.icon] }); + } + } + + componentDidUpdate(prevProps: Props) { + if (prevProps.icon !== this.props.icon) { + if (refMap) { + this.setState({ iconRef: refMap[this.props.icon] }); + } else { + this.fetchRefMap(); + } + } + } + + render() { + const { + className, + direction = Direction.SOUTH, + fallback, + frame = 1, + icon_state, + movement = false, + ...rest + } = this.props; + const { iconRef } = this.state; + + const query = `${iconRef}?state=${icon_state}&dir=${direction}&movement=${!!movement}&frame=${frame}`; + + if (!iconRef) return fallback || null; + + return ; + } +} diff --git a/tgui/packages/tgui/components/Image.tsx b/tgui/packages/tgui/components/Image.tsx new file mode 100644 index 000000000000..40730da594d8 --- /dev/null +++ b/tgui/packages/tgui/components/Image.tsx @@ -0,0 +1,70 @@ +import { Component } from 'inferno'; +import { BoxProps, computeBoxProps } from './Box'; + +type Props = Partial<{ + /** True is default, this fixes an ie thing */ + fixBlur: boolean; + /** False by default. Good if you're fetching images on UIs that do not auto update. This will attempt to fix the 'x' icon 5 times. */ + fixErrors: boolean; + /** Fill is default. */ + objectFit: 'contain' | 'cover'; +}> & + IconUnion & + BoxProps; + +// at least one of these is required +type IconUnion = + | { + className?: string; + src: string; + } + | { + className: string; + src?: string; + }; + +const maxAttempts = 5; + +/** Image component. Use this instead of Box as="img". */ +export class Image extends Component { + attempts: number = 0; + + handleError = (event) => { + const { fixErrors, src } = this.props; + if (fixErrors && this.attempts < maxAttempts) { + const imgElement = event.currentTarget; + + setTimeout(() => { + imgElement.src = `${src}?attempt=${this.attempts}`; + this.attempts++; + }, 1000); + } + }; + + render() { + const { + fixBlur = true, + fixErrors = false, + objectFit = 'fill', + src, + ...rest + } = this.props; + + /* Remove -ms-interpolation-mode with Byond 516. -webkit-optimize-contrast is better than pixelated */ + const computedProps = computeBoxProps({ + style: { + '-ms-interpolation-mode': `${fixBlur ? 'nearest-neighbor' : 'auto'}`, + 'image-rendering': `${fixBlur ? 'pixelated' : 'auto'}`, + 'object-fit': `${objectFit}`, + }, + ...rest, + }); + + /* Use div instead img if used asset, cause img with class leaves white border on 516 */ + if (computedProps.className) { + return
    ; + } + + return ; + } +} diff --git a/tgui/packages/tgui/components/ImageButtonTS.tsx b/tgui/packages/tgui/components/ImageButtonTS.tsx new file mode 100644 index 000000000000..565f31a2d581 --- /dev/null +++ b/tgui/packages/tgui/components/ImageButtonTS.tsx @@ -0,0 +1,243 @@ +/** + * @file + * @copyright 2024 Aylong (https://github.com/AyIong) + * @license MIT + */ + +import { Placement } from '@popperjs/core'; + +import { InfernoNode } from 'inferno'; +import { BooleanLike, classes } from 'common/react'; +import { BoxProps, computeBoxProps } from './Box'; +import { Icon } from './Icon'; +import { Image } from './Image'; +import { DmIcon } from './DmIcon'; +import { Stack } from './Stack'; +import { Tooltip } from './Tooltip'; + +type Props = Partial<{ + /** Asset cache. Example: `asset={`assetname32x32, ${thing.key}`}` */ + asset: string[]; + /** Classic way to put images. Example: `base64={thing.image}` */ + base64: string; + /** + * Special container for buttons. + * You can put any other component here. + * Has some special stylings! + * Example: `buttons={}` + */ + buttons: InfernoNode; + /** + * Same as buttons, but. Have disabled pointer-events on content inside if non-fluid. + * Fluid version have humburger layout. + */ + buttonsAlt: InfernoNode; + /** Content under image. Or on the right if fluid. */ + children: InfernoNode; + /** Applies a CSS class to the element. */ + className: string; + /** Color of the button. See [Button](#button) but without `transparent`. */ + color: string; + /** Makes button disabled and dark red if true. Also disables onClick. */ + disabled: BooleanLike; + /** Optional. Adds a "stub" when loading DmIcon. */ + dmFallback: InfernoNode; + /** Parameter `icon` of component `DmIcon`. */ + dmIcon: string | null; + /** Parameter `icon_state` of component `DmIcon`. */ + dmIconState: string | null; + /** Parameter `direction` of component `DmIcon`. */ + dmDirection: number | null; + /** + * Changes the layout of the button, making it fill the entire horizontally available space. + * Allows the use of `title` + */ + fluid: boolean; + /** Parameter responsible for the size of the image, component and standard "stubs". */ + imageSize: number; + /** Prop `src` of . Example: `imageSrc={resolveAsset(thing.image}` */ + imageSrc: string; + /** Called when button is clicked with LMB. */ + onClick: (e: any) => void; + /** Called when button is clicked with RMB. */ + onRightClick: (e: any) => void; + /** Makes button selected and green if true. */ + selected: BooleanLike; + /** Requires `fluid` for work. Bold text with divider betwen content. */ + title: string; + /** A fancy, boxy tooltip, which appears when hovering over the button */ + tooltip: InfernoNode; + /** Position of the tooltip. See [`Popper`](#Popper) for valid options. */ + tooltipPosition: Placement; +}> & + BoxProps; + +export const ImageButtonTS = (props: Props) => { + const { + asset, + base64, + buttons, + buttonsAlt, + children, + className, + color, + disabled, + dmFallback, + dmDirection, + dmIcon, + dmIconState, + fluid, + imageSize = 64, + imageSrc, + onClick, + onRightClick, + selected, + title, + tooltip, + tooltipPosition, + ...rest + } = props; + + const getFallback = (iconName: string, iconSpin: boolean) => { + return ( + + + + + + ); + }; + + let buttonContent = ( +
    { + if (!disabled && onClick) { + onClick(event); + } + }} + onContextMenu={(event) => { + event.preventDefault(); + if (!disabled && onRightClick) { + onRightClick(event); + } + }} + style={{ width: !fluid ? `calc(${imageSize}px + 0.5em + 2px)` : 'auto' }} + > +
    + {base64 || asset || imageSrc ? ( + + ) : dmIcon && dmIconState ? ( + + ) : ( + getFallback('question', false) + )} +
    + {fluid ? ( +
    + {title && ( + + {title} + + )} + {children && ( + {children} + )} +
    + ) : ( + children && ( + + {children} + + ) + )} +
    + ); + + if (tooltip) { + buttonContent = ( + + {buttonContent} + + ); + } + + return ( +
    + {buttonContent} + {buttons && ( +
    + {buttons} +
    + )} + {buttonsAlt && ( +
    + {buttonsAlt} +
    + )} +
    + ); +}; diff --git a/tgui/packages/tgui/components/Input.js b/tgui/packages/tgui/components/Input.js index e7355907a4fa..a7b29c2418df 100644 --- a/tgui/packages/tgui/components/Input.js +++ b/tgui/packages/tgui/components/Input.js @@ -142,6 +142,7 @@ export class Input extends Component {
    .
    {multiline ? (